{"version":3,"sources":["../node_modules/codemirror/mode lazy /^/.//.*/.js$/ groupOptions: {} namespace object","frameworkStyle.jsx","theme.jsx","components/Appsearch.jsx","components/PaperComponent.jsx","components/Dropzone.jsx","views/Apps.jsx","components/ConfigureWorkflow.jsx","components/Oauth2Auth.jsx","components/AuthenticationNormal.jsx","components/AppsearchPopout.jsx","components/UsecaseSearch.jsx","components/SuggestedWorkflows.jsx","components/LandingpageUsecases.jsx","components/AppFramework.jsx","components/EditWorkflow.jsx","views/Workflows.jsx","views/GettingStarted.jsx","assets/img/webhook.png","defaultCytoscapeStyle.jsx","components/ShuffleCodeEditor.jsx","components/ParsedAction.jsx","views/AngularWorkflow.jsx","components/ExtraApps.jsx","components/Searchfield.jsx","components/Header.jsx","theme.js","views/AppCreator.jsx","components/Workflowsearch.jsx","components/WorkflowPaper.jsx","components/WelcomeForm2.jsx","views/Welcome.jsx","views/Dashboard.jsx","views/DashboardViews.jsx","views/AdminSetup.jsx","components/CacheView.jsx","views/HandlePaymentNew.jsx","components/OrgHeader.jsx","components/OrgHeaderexpanded.jsx","components/Billing.jsx","components/Branding.jsx","components/Files.jsx","views/Admin.jsx","views/Docs.jsx","views/Introduction.jsx","views/SetAuthentication.jsx","views/SetAuthenticationSSO.jsx","components/AppGrid.jsx","components/WorkflowPaperNew.jsx","components/WorkflowGrid.jsx","components/CreatorGrid.jsx","components/DocsGrid.jsx","views/Search.jsx","views/RunWorkflow.jsx","views/LandingpageNew.jsx","views/LoginPage.jsx","views/SettingsPage.jsx","views/KeepAlive.jsx","assets/img/mobile.svg","assets/img/bag.svg","assets/img/book.svg","views/FrameworkWrapper.jsx","components/ScrollToTop.jsx","components/AlertTemplate.js","views/TempDashboard.jsx","App.jsx","serviceWorker.js","index.js"],"names":["map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","Error","code","ids","id","all","slice","t","keys","Object","module","exports","data","selector","css","style","theme","createMuiTheme","palette","primary","main","contrastText","secondary","text","type","surfaceColor","inputColor","platformColor","backgroundColor","borderRadius","defaultBorder","jsonTheme","reactJsonStyle","border","padding","textFieldStyle","innerTextfieldStyle","color","minHeight","marginLeft","maxWidth","fontSize","tooltip","boxShadow","defaultImage","typography","fontFamily","useNextVariants","h1","h4","fontWeight","h6","body1","overrides","MuiMenu","list","MuiCssBaseline","searchClient","algoliasearch","Appsearch","props","maxRows","globalUrl","showName","showSuggestion","isMobile","parsedXs","newSelectedApp","setNewSelectedApp","defaultSearch","ConfiguredHits","showSearch","userdata","isCreatorPage","cy","actionImageList","setActionImageList","isCloud","window","location","host","alert","useAlert","rowHandler","undefined","xs","useTheme","_React$useState","React","useState","_React$useState2","_slicedToArray","_React$useState3","_React$useState4","_React$useState5","_React$useState6","_React$useState7","_React$useState8","title","InputHits","_ref2","hits","_useState","_useState2","mouseHoverIndex","setMouseHoverIndex","counted","_jsx","Grid","container","spacing","maxHeight","overflowY","overflowX","children","index","paperStyle","objectID","textAlign","cursor","position","overflow","width","parsedname","name","valueOf","charAt","toUpperCase","substring","replaceAll","Paper","elevation","onMouseOver","onMouseOut","onClick","console","log","user","appData","toString","finalData","concat","fetch","method","headers","Accept","body","JSON","stringify","credentials","response","status","success","json","responseJson","reason","error","catch","setUserSpecialzedApp","ReactGA","event","category","action","label","aa","appId","apiKey","transporter","timestamp","Date","getTime","eventType","eventName","objectIDs","queryID","userToken","_jsxs","display","alt","src","image_url","minWidth","Typography","variant","marginTop","CustomSearchBox","connectSearchBox","_ref","currentRefinement","refine","isSearchStalled","useEffect","noValidate","role","TextField","fullWidth","InputProps","height","startAdornment","InputAdornment","SearchIcon","autoComplete","defaultValue","placeholder","onChange","currentTarget","value","limit","CustomHits","connectHits","InstantSearch","indexName","margin","hitsPerPage","PaperComponent","Draggable","handle","cancel","_objectSpread","dragOverStyle","zIndex","alignItems","justifyContent","Dropzone","onDrop","dropzoneRef","useRef","dragging","setDragging","dragCounter","handleDragOver","preventDefault","stopPropagation","handleDragEnter","dataTransfer","items","length","handleDragLeave","handleDrop","files","clearData","current","addEventListener","removeEventListener","ref","BackupIcon","chipStyle","_chipStyle","marginRight","paddingLeft","paddingRight","_defineProperty","FindJsonPath","path","inputdata","keysplit","split","startsWith","includes","prototype","call","join","_i","_Object$entries","entries","_Object$entries$_i","key","newkey","toLowerCase","GetParsedPaths","basekey","splitkey","parsedValues","_i2","_Object$entries2","_Object$entries2$_i","extra","basekeyname","isNaN","push","autocomplete","returnValues","subkey","Array","isArray","Apps","isLoggedIn","isLoaded","navigate","useNavigate","selectedApp","setSelectedApp","firstrequest","setFirstrequest","apps","setApps","filteredApps","setFilteredApps","_React$useState9","_React$useState10","validation","setValidation","_React$useState11","_React$useState12","isLoading","setIsLoading","_React$useState13","_React$useState14","appSearchLoading","_React$useState15","_React$useState16","selectedAction","setSelectedAction","_React$useState17","_React$useState18","_React$useState19","_React$useState20","searchableApps","_React$useState21","_React$useState22","openApi","setOpenApi","_React$useState23","_React$useState24","openApiData","setOpenApiData","_React$useState25","_React$useState26","appValidation","setAppValidation","_React$useState27","_React$useState28","loadAppsModalOpen","setLoadAppsModalOpen","_React$useState29","_React$useState30","deleteModalOpen","setDeleteModalOpen","_React$useState31","_React$useState32","openApiModal","setOpenApiModal","_React$useState33","_React$useState34","_React$useState35","_React$useState36","openApiError","setOpenApiError","_React$useState37","_React$useState38","field1","setField1","_React$useState39","_React$useState40","field2","setField2","_React$useState41","_React$useState42","cursearch","setCursearch","_React$useState43","_React$useState44","sharingConfiguration","setSharingConfiguration","_React$useState45","_React$useState46","downloadBranch","setDownloadBranch","_React$useState47","_React$useState48","isDropzone","setIsDropzone","upload","_React$useState49","_React$useState50","firstLoad","viewWidth","_useInterval","useInterval","duration","startImmediate","callback","getApps","start","stop","document","paperAppStyle","marginBottom","privateapps","valid","invalid","app","is_valid","activated","generated","private_id","apply","actions","downloadApp","info","pathname","basedata","atob","openapi","parse","newpaths","forEach","paths","replace","editing","YAML","blob","Blob","url","URL","createObjectURL","link","createElement","setAttribute","createEvent","initMouseEvent","dispatchEvent","AppPaper","boxWidth","boxColor","imageline","large_image","onLoad","newAppname","sharing","description","app_version","square","flex","ButtonBase","flexDirection","item","tags","tag","Chip","handleSearchChange","searchfield","getElementById","Tooltip","CloudDownloadIcon","dividerColor","uploadViewPaperStyle","UploadView","_ref3","editUrl","activateUrl","downloadButton","Button","component","editButton","Link","to","textDecoration","EditIcon","editNewButton","owner","ForkRightIcon","activateButton","DeleteIcon","deleteButton","downloaded","GetAppExample","returns","showResult","example","jsonvalid","tmp","String","MenuItem","userRoles","canEditApp","admin","active_org","reference_org","baseInfo","versions","Select","target","newversion","find","tmpApp","version","getApp","top","right","SelectDisplayProps","rel","href","IconButton","OpenInNewIcon","float","updateAppField","privateId","Divider","paddingTop","paddingBottom","newActionname","parameters","_ref4","itemColor","required","configuration","placement","LockOpenIcon","PublishIcon","search","newapps","filter","tmpapps","_toConsumableArray","uploadFile","reader","FileReader","content","result","readAsText","validateOpenApi","redirectOpenApi","appDelay","leftBarSize","_ref5","appsearchValue","onBlur","CustomAppHits","_ref6","_ref7","_React$useState51","_React$useState52","positionInfo","activeElement","getBoundingClientRect","baseImage","LibraryBooksIcon","List","ListItem","borderBottom","ListItemAvatar","Avatar","FolderIcon","ListItemText","hit","innerlistitemStyle","filename","secondaryText","avatar","categories","__queryID","appid","refresh","appView","Breadcrumbs","separator","AppsIcon","disabled","hotloadApps","CircularProgress","size","CachedIcon","Zoom","in","transitionDelay","Index","mode","setApp","loop_versions","app_id","fieldname","fieldvalue","openApidata","newApidata","apidata","parsed","escapeApiData","handleGithubValidation","forceUpdate","parsedData","branch","getSpecificApps","deleteModal","Dialog","open","onClose","PaperProps","DialogTitle","DialogContent","setTimeout","circularLoader","appsModalLoad","DialogActions","errorText","modalView","FormControl","endAdornment","helperText","hidden","accept","multiple","click","ConfigureWorkflow","workflow","appAuthentication","setAuthenticationModalOpen","setConfigureWorkflowModalOpen","saveWorkflow","newWebhook","submitSchedule","referenceUrl","setAuthenticationType","showTriggers","workflowExecutions","getWorkflowExecution","requiredActions","setRequiredActions","requiredVariables","setRequiredVariables","requiredTriggers","setRequiredTriggers","previousAuth","setPreviousAuth","itemChanged","setItemChanged","setFirstLoad","showFinalizeAnimation","setShowFinalizeAnimation","checkStarted","setCheckStarted","paramkey","newactions","_loop","newaction","app_name","activation_done","must_activate","must_authenticate","auth_done","action_ids","update_version","steps","show_steps","subapp","authentication_id","authentication","_ref15","filled","_ref14","errors","_ref18","authenticationOptions","_ref17","auth","active","authenticationId","tmpaction","workflow_variables","variable","triggers","_loop2","_ref8","_ref9","trigger","trigger_type","app_association","findapp","foundindex","findIndex","tmpsteps","_ref12","_ref11","_ref21","_ref20","actionkey","_ref24","_ref23","TriggerSection","VariableSection","FavoriteBorderIcon","AppSection","textTransform","redirect_uri","token_uri","scope","_ref27","_ref26","activateApp","BoxHighlight","appname","appinfo","activeStep","setActiveStep","finished","hovered","setHovered","_useState3","_useState4","isOpen","setIsOpen","_useState5","_useState6","webhook","param","borderTop","CheckCircleRoundedIcon","ErrorIcon","copyText","navigator","clipboard","writeText","select","setSelectionRange","execCommand","AppWrapper","_useState7","parentindex","_useState8","clicked","_useState9","_useState10","_useState11","_useState12","_useState13","_useState14","firstRun","setFirstRun","_useState15","_useState16","finishCount","setFinishCount","step","exec","execution_argument","execution_source","background","ButtonGroup","reload","MenuProps","ITEM_HEIGHT","scrollX","getContentAnchorEl","registeredApps","AuthenticationOauth2","_jsx2","_jsx3","authenticationType","getAppAuthentication","setNewAppAuth","autoAuth","authButtonOnly","client_id","client_secret","defaultConfigSet","clientId","setClientId","clientSecret","setClientSecret","oauthUrl","setOauthUrl","buttonClicked","setButtonClicked","offlineAccess","setOfflineAccess","allscopes","selectedScopes","setSelectedScopes","manuallyConfigure","setManuallyConfigure","fields","usage","workflow_id","uuidv4","authenticationOption","startOauth2Request","admin_consent","handleOauth2Request","oauth_url","scopes","prompt","trim","resources","authentication_url","redirectUri","protocol","workflowId","state","refresh_uri","defaultPrompt","newwin","timer","setInterval","closed","clearInterval","autoAuthButton","origin","SupervisorAccountIcon","schema","handleScopeChange","input","Input","renderValue","selected","Checkbox","checked","indexOf","AuthenticationData","setAuthenticationOptions","handleSubmitCheck","selectedAuthentication","appAuthData","newAuthOption","newFields","disableScrollLock","AppSearchPopout","paperTitle","setPaperTitle","selectionOpen","setSelectionOpen","discoveryData","setDiscoveryData","setDefaultSearch","left","elements","unselect","CloseIcon","AppSearch","usecaseTypes","triggerlist","midflows","subflows","UsecaseSearch","appFramework","showTitle","canExpand","setFoundWorkflowId","getFramework","usecaseSearch","setUsecaseSearch","autotry","setCloseWindow","sourceapp","destinationapp","allusecases","setAllUsecases","searchType","setSearchType","usecaseIndex","setUsecaseIndex","setUpdate","isUploading","setIsUploading","configureWorkflowModalOpen","setConfigureWorkflowAuth","setWorkflow","setAppAuthentication","authenticationModalOpen","firstRequest","setFirstRequest","foundusecase","selectedusecase","foundSubcase","usecase","newitem","itemname","source","midflow","middle","subflow","destination","Math","random","rerunWorkflowCheck","usecases","imagestyle","getType","inputtype","updateAction","authenticationModal","hideBackdrop","disableEnforceFocus","disableBackdropClick","pointerEvents","reference_info","github_url","AuthenticationNormal","borderLeft","documentation","setNewWorkflow","defaultReturnValue","editingWorkflow","redirect","currentUsecases","inputblogpost","inputstatus","extraData","workflowdata","new_url","mergeWorkflowUsecases","usecasedata","crossDomain","withCredentials","changed","added_auth","auth_required","default_return_value","first_save","previously_saved","image","srctype","dsttype","srcinfo","destinfo","midcase","midtype","midinfo","configureWorkflowModal","createWorkflowFromTemplate","middleItem","ShowBox","miditem","subindex","expanded","setexpanded","setFrameworkItem","discoveredtype","submitValue","changeAppType","looplist","hasError","borderColor","startText","AppsearchPopout","DescriptionIcon","ExpandLessIcon","ExpandMoreIcon","subdata","curindex","innerdata","innerindex","AddCircleOutlineIcon","SuggestedWorkflows","usecaseSuggestions","frameworkData","setUsecaseSuggestions","inputSearch","usecaseSearchType","setUsecaseSearchType","finishedUsecases","setFinishedUsecases","previousUsecase","setPreviousUsecase","closeWindow","foundZindex","IndividualUsecase","hovering","setHovering","usecasename","bordercolor","srcimage","dstimage","selectedIcon","DoneIcon","AutoFixHighIcon","securityFramework","d","cytoscape","edgehandles","svgSize","parsedDatatypeImages","_parsedDatatypeImages","encodeURI","AppFramework","showOptions","selectedOption","rolling","setFrameworkData","inputUsecase","discoveryWrapper","setDiscoveryWrapper","inputUsecases","setInputUsecases","setCy","edgesStarted","setEdgesStarted","graphDone","setGraphDone","cyDone","setCyDone","frameworkSuggestions","setFrameworkSuggestions","animationStarted","setAnimationStarted","changedApp","setChangedApp","usecaseType","selectedUsecase","setSelectedUsecase","injectedApps","setInjectedApps","scale","handleLoadNextSuggestion","suggestions","category_count","suggestion_cnt","showRecommendations","alternativeChanged","showusecases","potential","matches","itemtype","apptype","app_type","usecase_references","foundUsecase","usecaseKey","usecaseCategory","subUsecaseKey","loopUsecase","nodes","jsons","node","newSearchName","tmpnode","foundelement","parsedFrameworkData","cases","Cases","siem","SIEM","assets","Assets","intel","Intel","communication","Comms","network","Network","iam","IAM","edr","changeUsecase","handleNodes","el","isNode","preview","toggleOffOnLeave","loopAllowed","edges","allEdges","newedge","remove","parsedType","newedges","parseInt","add","group","animationDuration","fit","on","onEdgeSelect","onNodeSelect","animate","onNodeUnselect","cytoscapeElement","onNodeHover","onNodeHoverOut","shiftradius","baselocationX","baselocationY","shiftmodifier","foundMiddleImage","defaultSize","iconSize","textMarginDefault","textMarginImage","boxwidth","boxheight","font_size","isValid","text_margin_y","margin_x","margin_y","renderedPosition","x","y","middle_node","invisible","lock","process","bgColor","appindex","categoryTop","categoryLeft","appIndex","nodename","getNodeName","_i3","_Object$entries3","_Object$entries3$_i","getOwnPropertyNames","CytoscapeComponent","minZoom","maxZoom","stylesheet","frameworkStyle","boxSelectionEnabled","panningEnabled","userPanningEnabled","showGrid","incy","bottom","parsedUsecase","edge","setUsecaseItem","EditWorkflow","modalOpen","setModalOpen","showUpload","isEditing","submitLoading","showMoreClicked","setShowMoreClicked","innerWorkflow","setInnerWorkflow","newWorkflowTags","setNewWorkflowTags","usecase_ids","selectedUsecases","setSelectedUsecases","foundWorkflowId","setName","setDescription","_readOnlyError","blogpost","branches","comments","execution_variables","newWorkflow","total_count","autoFocus","multiline","ChipInput","onAdd","chip","onDelete","splice","InputLabel","htmlFor","ListSubheader","subcase","itemIndex","FormLabel","RadioGroup","row","workflow_type","FormControlLabel","control","Radio","rows","video","useStyles","makeStyles","datagrid","borderRight","GetIconInfo","iconList","values","selectedKey","actionname","found","defaultColor","selectedItem","cache_add","icon","iconColor","iconBackgroundColor","originalIcon","fillGradient","cache_get","repeat","AddIcon","edit","merge","compare","CompareIcon","extract","MaximizeIcon","inflate","MinimizeIcon","TocIcon","execute","PlayArrowIcon","delete","close","send","SendIcon","download","GetAppIcon","iconBackground","svg_pin","viewBox","xmlns","fill","validateJson","newstr","inside_result","newres","subvalue","Workflows","classes","workflows","setWorkflows","filteredWorkflows","setFilteredWorkflows","selectedWorkflow","setSelectedWorkflow","workflowDone","setWorkflowDone","selectedWorkflowId","setSelectedWorkflowId","downloadUrl","setDownloadUrl","loadWorkflowsModalOpen","setLoadWorkflowsModalOpen","exportModalOpen","setExportModalOpen","exportData","setExportData","setIsEditing","newWorkflowName","setNewWorkflowName","newWorkflowDescription","setNewWorkflowDescription","setDefaultReturnValue","setBlogpost","setStatus","publishModalOpen","setPublishModalOpen","setEditingWorkflow","_React$useState53","_React$useState54","view","setView","_React$useState55","_React$useState56","filters","setFilters","_React$useState57","_React$useState58","setSubmitLoading","_React$useState59","_React$useState60","_React$useState61","_React$useState62","_React$useState63","_React$useState64","_React$useState65","_React$useState66","setUsecases","_React$useState67","_React$useState68","allUsecases","_React$useState69","_React$useState70","setAppFramework","_React$useState71","_React$useState72","drawerOpen","setDrawerOpen","_React$useState73","_React$useState74","videoViewOpen","setVideoViewOpen","_React$useState75","_React$useState76","gettingStartedItems","setGettingStartedItems","drawerWidth","sidebarKey","tutorials","activeFiltered","newfiltered","done","sidebar","localStorage","getItem","setItem","findWorkflow","handleKeysetting","newWorkflows","curWorkflow","workflowKey","every","v","newfilter","org_id","addFilter","removeFilter","newfilters","exportVerifyModal","exportWorkflow","publishModal","publishWorkflow","deleteWorkflow","getAvailableWorkflows","newarray","wf","public","setProdFilter","actionnamelist","parsedactionlist","fetchUsecases","categorydata","newcategories","subcategorykey","subcategory","workflowkey","usecasekey","tmpView","viewStyle","paperAppContainer","flexWrap","alignContent","boxSizing","gridContainer","workflowActionStyle","deduplicateIds","skip_sanitize","newId","branchkey","source_id","destination_id","environment","sanitizeWorkflow","sanitize","exportFileDefaultName","dataStr","dataUri","encodeURIComponent","linkElement","handleChipClick","innerHTML","NewWorkflowPaper","_React$useState77","_React$useState78","hover","setHover","innerColor","setupPaperStyle","AddCircleIcon","getWorkflowAppgroup","appsFound","parsedAction","WorkflowPaper","_React$useState79","_React$useState80","setOpen","_React$useState81","_React$useState82","anchorEl","setAnchorEl","parsedName","appGroup","_getWorkflowMeta","getWorkflowMeta","_getWorkflowMeta2","workflowMenuButtons","Menu","keepMounted","ReactDOM","unstable_batchedUpdates","CloudUploadIcon","copyWorkflow","FileCopyIcon","newSubflows","parsedworkflows","foundWorkflow","orgName","orgId","orgs","foundOrg","org","imageStyle","creator_org","selectedCategory","oldcolor","styl","arrow","minHeigth","AvatarGroup","max","BubbleChartIcon","RestoreIcon","_loop3","MoreVertIcon","WorkflowListView","workflowData","columns","field","headerName","sortable","renderCell","params","record","imagesize","disableClickEventBubbling","_getWorkflowMeta3","_getWorkflowMeta4","_loop5","DataGrid","className","pageSize","checkboxSelection","autoHeight","density","components","Toolbar","GridToolbar","viewSize","workflowViewStyle","workflowButtons","GridOnIcon","ListIcon","_loop4","file","allWorkflows","i","exportAllWorkflows","WorkflowView","workflowDelay","_","percentDone","backgroundImage","returnData","Badge","badgeContent","imgSize","priorities","field_3","importWorkflowsFromUrl","workflowDownloadModalOpen","GettingStartedItem","_React$useState83","_React$useState84","setClicked","doneIcon","CheckCircleIcon","RadioButtonUncheckedIcon","gettingStartedDrawer","Drawer","anchor","resize","ArrowRightIcon","LinearProgress","videoView","frameborder","allow","allowfullscreen","loadedCheck","innerWidth","ArrowLeftIcon","GettingStarted","importLoading","setImportLoading","textType","html","tutorial","ele","focus","borderWidth","tutorialFound","foundTutorial","tmpworkflow","published_id","username","CheckIcon","shape","liquidFilters","mathFilters","pythonFilters","CodeEditor","fieldCount","actionlist","setFieldCount","changeActionParameterCodeMirror","expansionModalOpen","setExpansionModalOpen","codedata","setcodedata","isFileEditor","runUpdateText","toolsAppId","parameterName","getParents","localcodedata","setlocalcodedata","expOutput","setExpOutput","linewrap","codeTheme","setEditorPopupOpen","setCurrentCharacter","setCurrentLine","setCurrentLocation","setCurrentVariable","anchorEl2","setAnchorEl2","anchorEl3","setAnchorEl3","setMainVariables","availableVariables","setAvailableVariables","menuPosition","setMenuPosition","setShowAutocomplete","isAiLoading","setIsAiLoading","executionResult","setExecutionResult","executing","setExecuting","liquidOpen","Boolean","mathOpen","pythonOpen","allVariables","tmpVariables","parsedPaths","fullpath","aiSubmit","inputAction","AppContext","parents","exampledata","results","foundResult","itemlabelComplete","actionvalue","action_name","responseFix","SetJsonDotnotation","validated","conversationData","output_format","_step","_iterator","_createForOfIteratorHelper","s","n","respParam","err","f","fixVariable","inputvariable","itemsplit","removedIndexes","tmpitem","handleItemClick","toComplete","endsWith","handleClick","ExtensionIcon","tmpAction","tmpParams","aiMsg","autoFormat","MenuListProps","pageY","pageX","anchorReference","anchorPosition","ScheduleIcon","handleExecArgumentHover","inside","exec_text_field","coverColor","menuPosition1","NestedMenuItem","parentMenuOpen","pathdata","FormatListNumberedIcon","CircleIcon","indentation_count","match","namesplit","newname","SquareFootIcon","marginleft","CodeMirror","wordBreak","onCursorActivity","getCursor","ch","line","loc","code_line","dollar_occurences","dollar_occurences_len","variable_ranges","popup","variable_occurences","occ","temp_arr","occ_len","occ1","Infinity","code_lines","current_code_line","variable_occurence","new_occurences","dollar_occurence","dollar_occurence_len","fixedVariable","markText","highlight_variables","getValue","valuefound","j","shouldbreak","k","new_input","tmpValidation","expectedOutput","prevInput","extensions","indentWithTab","options","styleSelectedText","keyMap","lineWrapping","actiondata","newResult","executeSingleAction","ReactJson","minheight","collapsed","enableClipboard","copy","displayDataTypes","onSelect","whiteSpace","notchedOutline","root","inputRoot","openApiFieldDesc","ParsedAction","_ref55","setAction","appActionArguments","setSelectedResult","setSelectedTrigger","setSelectedEdge","setCurrentView","setCodeModalOpen","setVariablesModalOpen","selectedNameChange","rightsidebarStyle","showEnvironment","selectedActionEnvironment","environments","setNewSelectedAction","appApiViewStyle","setSelectedActionEnvironment","requiresAuthentication","hideExtraTypes","scrollConfig","setScrollConfig","actionDelayChange","setLastSaved","lastSaved","setShowVideo","hideBody","setHideBody","activateHidingBodyButton","setActivateHidingBodyButton","hiddenDescription","setHiddenDescription","paramcheck","AppActionArguments","selectedActionParameters","setSelectedActionParameters","selectedVariableParameter","setSelectedVariableParameter","setActionlist","jsonList","setJsonList","showDropdown","setShowDropdown","showDropdownNumber","setShowDropdownNumber","showAutocomplete","highlight","calculateHelpertext","input_data","looperText","foundSlice","changeActionParameter","count","viewForceUpdate","toReplace","subparamindex","curstring","actionItem","autocompleted","parsedvalue","splitparsed","returnHelperText","authWritten","template","matching_actions","Autocomplete","autoHighlight","ListboxProps","getOptionLabel","option","newValue","renderOption","useIcon","renderInput","inputProps","prefixes","_ref30","_ref29","auth_not_required","fileFound","openApiHelperText","hideBodyButton","hideBodyButtonValue","tabIndex","currentItem","field_active","specKey","skip","innerkey","action_field","skip_multicheck","clickedFieldId","shufflecode","ShuffleCodeEditor","baseHelperText","datafield","orientation","AspectRatioIcon","tmpheaders","splitdata","foundnewline","allValues","_ref33","_ref32","splitvalue","splitKeys","findHeaders","oldkey","oldval","tmpsplit","valsplit","add_empty","_ref36","_ref35","newarr","_ref39","_ref38","newval","_ref42","_ref41","_ref45","_ref44","namespaces","parsedoptions","split_data","viewed_data","ActionlistWrapper","_ref48","_ref47","_ref51","_ref50","addClass","removeClass","handleActionHover","actionId","baseIndent","tooltipDescription","buttonTitle","hasAutocomplete","labelId","iconStyle","VpnKeyIcon","baselabel","_ref54","_ref53","oldstartnode","foundname","HelpOutlineIcon","parsedapp","foundAction","foundParam","parsedBaseLabel","_ref58","_ref57","conditions","_ref61","_ref60","condition","sourceparam","destinationparam","cnt","previous","extralength","_ref64","_ref63","_ref67","_ref66","execution_delay","_ref70","_ref69","Name","env","a","archived","execution_variable","groupBy","category_label","renderGroup","sortByKey","filterOptions","_ref71","lowercaseValue","inputValue","newActiondescription","extraDescription","extraUrl","descSplit","_ref74","_ref73","long_description","array","sort","b","reverse","jsonInput","inputKey","hasOwnProperty","undoRedo","cxtmenu","green","yellow","removeParam","sourceURL","rtn","params_arr","queryString","splitter","AngularWorkflow","defaultprops","_jsxs2","data_id","useParams","to_be_copied","cytoscapestyle","cystyle","toolsApp","setToolsApp","currentView","triggerAuthentication","setTriggerAuthentication","triggerFolders","setTriggerFolders","parentWorkflows","setParentWorkflows","setShowEnvironment","editWorkflowDetails","setEditWorkflowDetails","setUserSettings","subworkflow","setSubworkflow","subworkflowStartnode","setSubworkflowStartnode","leftViewOpen","setLeftViewOpen","setLeftBarSize","creatorProfile","setCreatorProfile","setFiles","setAppGroup","triggerGroup","setTriggerGroup","executionText","setExecutionText","executionRequestStarted","setExecutionRequestStarted","history","setHistory","historyIndex","setHistoryIndex","variableInfo","setVariableInfo","variablesModalOpen","executionVariablesModalOpen","setExecutionVariablesModalOpen","conditionsModalOpen","setConditionsModalOpen","localFirstrequest","setLocalFirstrequest","setRequiresAuthentication","rightSideBarOpen","setRightSideBarOpen","showSkippedActions","setShowSkippedActions","lastExecution","setLastExecution","curpath","savingState","setSavingState","selectedResult","_React$useState85","_React$useState86","codeModalOpen","_React$useState87","_React$useState88","variableAnchorEl","setVariableAnchorEl","_React$useState89","_React$useState90","sourceValue","setSourceValue","_React$useState91","_React$useState92","destinationValue","setDestinationValue","_React$useState93","_React$useState94","conditionValue","setConditionValue","_React$useState95","_React$useState96","_React$useState97","_React$useState98","_React$useState99","_React$useState100","selectedComment","setSelectedComment","_React$useState101","_React$useState102","selectedTrigger","_React$useState103","_React$useState104","selectedTriggerIndex","setSelectedTriggerIndex","_React$useState105","_React$useState106","selectedEdge","_React$useState107","_React$useState108","selectedEdgeIndex","setSelectedEdgeIndex","_React$useState109","_React$useState110","visited","setVisited","_React$useState111","_React$useState112","_React$useState113","_React$useState114","_React$useState115","_React$useState116","prioritizedApps","setPrioritizedApps","_React$useState117","_React$useState118","setEnvironments","_React$useState119","_React$useState120","established","setEstablished","_React$useState121","_React$useState122","setupSent","setSetupSent","_React$useState123","_React$useState124","graphSetup","setGraphSetup","_React$useState125","_React$useState126","_React$useState127","_React$useState128","_React$useState129","_React$useState130","_React$useState131","_React$useState132","executionRequest","setExecutionRequest","_React$useState133","_React$useState134","executionRunning","setExecutionRunning","_React$useState135","_React$useState136","executionModalOpen","setExecutionModalOpen","_React$useState137","_React$useState138","executionModalView","setExecutionModalView","_React$useState139","_React$useState140","executionData","setExecutionData","_React$useState141","_React$useState142","appsLoaded","setAppsLoaded","_React$useState143","_React$useState144","showVideo","_React$useState145","_React$useState146","editWorkflowModalOpen","setEditWorkflowModalOpen","_React$useState147","_React$useState148","userediting","setUserediting","_React$useState149","_React$useState150","_React$useState151","_React$useState152","_React$useState153","_React$useState154","setWorkflowExecutions","_React$useState155","_React$useState156","defaultEnvironmentIndex","setDefaultEnvironmentIndex","_React$useState157","_React$useState158","setWorkflowRecommendations","_React$useState159","_React$useState160","_React$useState161","_React$useState162","suggestionBox","setSuggestionBox","cloud_sync","appBarSize","triggerEnvironments","_useWindowSize","setSize","useLayoutEffect","updateSize","innerHeight","useWindowSize","_useWindowSize2","bodyWidth","bodyHeight","cytoscapeWidth","setElements","fetchUpdates","trigger_index","baseSubflow","paramIndex","sub","parentworkflows","parent_ids","innerworkflow","triggerkey","getSettings","apikey","execution_id","newkeys","URLSearchParams","get","execution","authorization","cur_execution","handleUpdateResults","abortExecution","handleColoring","currentnode","outgoingEdges","outgoers","incomingEdges","incomers","targetnode","actionKey","resultKey","curelements","sendStreamRequest","curworkflow","executionArgument","startNode","useworkflow","cyelements","newActions","newTriggers","newBranches","newVBranches","newComments","cyelementsKey","parsedElement","decorator","cyelement","elementid","parametersKey","curworkflowAction","newparams","thisitem","curworkflowTrigger","canConnect","curworkflowComment","parsedHeight","parsedWidth","user_editing","visual_branches","cyImageData","png","output","new_id","executeWorkflow","hasSaved","firstnode","isStartNode","monitorUpdates","internalIds","reset","closeMenu","shouldClose","newauth","authkey","defined","removeListener","appUpdates","tmpAuth","latest","newfields","filterkey","edited","pretend_apps","foundTools","tmpFiltered","getFiles","getWorkflow","sourcenode","fetchRecommendations","rerun","getEnvironments","nodefound","target_id","_id","source_workflow","insertedNodes","hasErrors","has_errors","onNodeAdded","onEdgeAdded","destinationId","curaction","styledElements","originalLocation","onNodeDragStop","nodedata","connected","connectedEdges","connectkey","destinationnode","edgeCurve","calculateEdgeCurve","currentedge","distance","weight","curElement","original_border","paramname","idnumber","idsplit","GetExampleResult","foundresult","GetParamMatch","allNodes","nodekey","currentNode","attachedTo","isDescriptor","matchingExecutions","decoratorNode","locked","isTrigger","imageColor","hasExecutions","iconInfo","svgpin_Url","offset","unselectify","onNodeDrag","buttonType","parentNode","onMouseUpdate","elementMouseIsOver","elementFromPoint","newBorder","styledElementsKey","useBeforeunload","handleKeyDown","handlePaste","newAppAuth","isButton","offsetLeft","offsetTop","screenPosition","newbox","node_position","removeNode","newNodeData","sourcebranches","foundbranch","destinationbranches","sourceBranchesKey","newbranch","destinationBranchesKey","curapp","newAppskey","actionsSubkey","requiresAuth","findAuthId","curappName","tmpAuthKey","fieldkey","curActionParamKey","tmpapp","envs","execkey","selectedsynonyms","email","toreturn","_i4","selectedkey","subitem","RunAutocompleter","dstdata","parentlabel","dstdataParamKey","parentkey","readded","alledges","targetedge","eventTarget","newEdgeUuid","edgeToBeAdded","newsource","newdst","id_","fillstyle","newparameters","newparam","keyCode","ctrlKey","shiftKey","localName","cydata","$","originalEvent","clipboardData","getData","parsedjson","jsonkey","Type","showEnvCnt","default","buttonColor","buttonBackgroundColor","addCopyButton","px","py","circleId","newNodeId","_key","isSuggestion","addDeleteButton","addStartnodeButton","addSuggestionButtons","parsedStyle","typeIds","idkey","sourcenodePosition","destinationnodePosition","xParsed","yParsed","costheta","sqrt","alpha","controlPointDistance","controlPointWeight","nodeId","selectedNode","triggerindex","stopSchedule","deleteWebhook","stopMailSub","inputWorkflow","parsedWorkflow","decoratorNodes","foundtriggers","comment","visualedges","edgeKey","sourcecheck","destcheck","setupGraph","gridGuide","gridSpacing","guidelinesStyle","strokeStyle","geometricGuidelineRange","range","minDistRange","distGuidelineOffset","horizontalDistColor","verticalDistColor","initPosAlignmentColor","lineDash","horizontalDistLine","verticalDistLine","initPosAlignmentLine","onUnselect","allNodesKey","onNodeRemoved","curnode","newdata","onEdgeRemoved","onEdgeHover","removeStyle","onEdgeHoverOut","valu","animation","zoom","center","eles","play","promise","onCtxTap","mappedStartnode","edgekey","frequency","appViewStyle","paperVariableStyle","VariableItem","_React$useState163","_React$useState164","_React$useState165","_React$useState166","variableIndex","vars","deleteVariable","VariablesView","variableScrollStyle","varindex","varindex2","handleSetTab","HandleLeftView","thisview","AppView","allApps","extraApps","TriggersView","tabStyle","Tabs","indicatorColor","Tab","direction","appScrollStyle","onDrag","handleTriggerDrag","onStop","handleDragStop","parsedApp","cycontainer","offsetWidth","offsetHeight","triggerLabel","getNextActionName","newposition","nodeToBeAdded","_id_","newAppData","_React$useState167","innerapp","_React$useState168","visibleApps","setVisibleApps","ParsedAppPaper","_React$useState169","_React$useState170","newAppStyle","pixelSize","_newAppData","actionLabel","parsedEnvironments","run_magic_output","handleAppDrag","userDrag","userSelect","_ref10","onKeyPress","blur","newApps","searchvalue","runSearch","extraMessage","appName","highest","allitems","itemkey","number","parsedNumber","selectedTriggerChange","allkeys","handled","iterations","setTriggerCronWrapper","setTriggerOptionsWrapper","splitItems","AppConditionHandler","tmpdata","setMultiline","_React$useState171","_React$useState172","_React$useState173","_React$useState174","varkey","destAction","changeActionVariable","menuItemStyle","conditionsModal","setData","curedgeindex","EdgeSidebar","ConditionHandler","_React$useState175","_React$useState176","_React$useState177","_React$useState178","conditionIndex","newEdge","newUuid","duplicateCondition","injectedData","conditionId","EmailSidebar","setGmailFolders","displayName","setOutlookFolders","gmailButton","startnode","outlookButton","triggerInfo","sx","native","l","fixedValue","setTriggerFolderWrapperMulti","folder","folderItem","childFolderCount","argumentView","drift","api","startInteraction","interactionId","startMailSub","handleWorkflowSelectionUpdate","isUserinput","_unused","SubflowSidebar","_React$useState179","_React$useState180","_React$useState181","_React$useState182","_loop6","newvalue","freeSolo","getOptionSelected","parsedinput","branchId","foundIndex","currentEdge","cybranch","_unused2","handleSubflowStartnodeSelection","isParent","parent","CommentSidebar","backgroundcolor","backgroundimage","WebhookSidebar","newUrl","trigger_header_auth","_ref16","tmpvalue","newurl","urlpath","ContentCopyIcon","FormGroup","requesttype","folders","splitItem","_loop7","curfolder","_ret5","hookname","await_resp","customRespParam","custom_response","version_timeout","UserinputSidebar","ScheduleSidebar","cytoscapeViewWidths","bottomBarStyle","topBarStyle","TopCytoscapeBar","PolymerIcon","_jsx4","WorkflowMenu","_React$useState183","_React$useState184","newAnchor","_React$useState185","_React$useState186","showShuffleMenu","setShowShuffleMenu","Switch","skip_notifications","exit_on_error","start_from_top","BottomCytoscapeBar","boxSize","executionButton","PauseIcon","searchParams","SaveIcon","currentitem","handleHistoryUndo","UndoIcon","DirectionsRunIcon","addCommentNode","AddCommentIcon","RightSideBar","defaultReturn","_jsx5","iOS","test","userAgent","SwipeableDrawer","disableBackdropTransition","disableDiscovery","disableSwipeToOpen","ModalProps","Fade","leftView","github_avatar","github_username","frameBorder","webkitallowfullscreen","mozallowFullscreen","allowFullScreen","public_username","KeyboardArrowRightIcon","executionPaperStyle","getExecutionSourceImage","execution_parent","handleReactJsonClipboard","elementName","namespace","stringified","HandleJsonCopy","base","base_node_name","copykey","nonskippedResults","newSkipped","executionDelay","executionModal","BackdropProps","statusColor","resultsLength","started_at","toLocaleString","calculatedResult","resultkey","actionitem","ArrowBackIcon","completed_at","validate","parsedExecutionArgument","imgsize","imgSrc","actionimg","parsedImage","imgStyle","similarActionsView","similar_actions","matching_executions","_ref19","similarity","parsed_url","PreviewIcon","sub_action","AppResultVariable","_React$useState195","_React$useState196","showVariable","codePopoutModal","executionIndex","VisibilityIcon","newView","timeout","wheelSensitivity","autounselectify","ac","oldaction","newSelectedAction","fileid_found","newParamIndex","paramdata","foundnode","foundActionIndex","editWorkflowModal","ExecutionVariableModal","_React$useState197","_React$useState198","newVariableName","setNewVariableName","_React$useState199","_React$useState200","_React$useState201","_React$useState202","newVariableValue","setNewVariableValue","VariablesModal","_React$useState203","_React$useState204","_React$useState205","_React$useState206","newVariableDescription","setNewVariableDescription","_React$useState207","_React$useState208","_React$useState209","_React$useState210","ReactMarkdown","escapeHtml","renderers","heading","element","level","setResponseMsg","setSuggestionLoading","_loop8","query","actionParam","SuggestionBoxUi","_useState17","_useState18","suggestionValue","setSuggestionValue","_useState19","_useState20","suggestionLoading","_useState21","_useState22","responseMsg","onSubmit","rightSideActionView","selectedField","scrollTop","tmpExec","SearchField","serverside","searchOpen","setSearchOpen","oldPath","setOldPath","_style","disableUnderline","Card","parsedUrl","queryParameters","positions","__position","CustomWorkflowHits","action_references","itemAlign","CustomDocHits","extraHash","url_hash","Configure","clickAnalytics","hoverColor","hoverOutColor","Header","setNotifications","notifications","removeCookie","homePage","HomeHoverColor","setHomeHoverColor","SoarHoverColor","setSoarHoverColor","LoginHoverColor","setLoginHoverColor","DocsHoverColor","setDocsHoverColor","HelpHoverColor","setHelpHoverColor","anchorElAvatar","setAnchorElAvatar","handleClose","hrefStyle","handleClickLogout","handleHomeHover","handleSoarHover","handleSoarHoverOut","handleHomeHoverOut","NotificationItem","reference_url","read","alert_id","newNotifications","notificationMenu","NotificationsIcon","parsedAvatar","avatarMenu","BusinessIcon","LightbulbIcon","EmojiObjectsIcon","SettingsIcon","MeetingRoomIcon","listItemStyle","loginTextBrowser","flexDirect","region_url","handleClickChangeOrg","skipOrg","child_orgs","parsedTitle","regiontag","regionsplit","app_execution_limit","app_execution_usage","toFixed","flextextAlign","loginTextMobile","HomeIcon","BrowserView","MobileView","bodyDivStyle","actionListStyle","boxStyle","dividerStyle","appIconStyle","appCategories","getJsonObject","properties","jsonObject","property","enum","maximum","minimum","AppCreator","actionNonBodyRequest","actionBodyRequest","apikeySelection","contact","setContact","setFile","fileBase64","setFileBase64","isAppLoaded","setIsAppLoaded","baseUrl","setBaseUrl","setAuthenticationRequired","setAuthenticationOption","newWorkflowCategories","setNewWorkflowCategories","setParameterName","_useState23","_useState24","parameterLocation","setParameterLocation","_useState25","_useState26","refreshUrl","setRefreshUrl","_useState27","_useState28","oauth2Scopes","setOauth2Scopes","_useState29","_useState30","projectCategories","setProjectCategories","_useState31","_useState32","setSelectedCategory","_useState33","_useState34","_useState35","setBasedata","_useState37","_useState38","setActions","_useState39","_useState40","filteredActions","setFilteredActions","_useState41","_useState42","errorCode","setErrorCode","_useState43","_useState44","appBuilding","setAppBuilding","_useState45","_useState46","fileDownloadEnabled","_useState47","_useState48","actionAmount","setActionAmount","defaultAuth","_useState49","_useState50","extraAuth","setExtraAuth","_useState51","_useState52","_useState53","_useState54","_useState55","_useState56","_useState57","_useState58","handleEditApp","checkQuery","parseIncomingOpenapiData","urlParams","has","handleGetRef","parameter","paramsplit","tmpparam","str","parsedDecoded","decodeURIComponent","c","charCodeAt","newtags","tagkey","securitySchemes","securityDefinitions","allowedfunctions","wordlist","all_categories","parentUrl","pathvalue","methodvalue","tmpname","summary","operationId","file_field","queries","example_response","action_label","required_bodyfields","RegExp","pathsplit","$ref","tmpobject","prop","retRef","propkey","newbody","parsedkey","_Object$entries4","_Object$entries4$_i","schemas","_i5","_Object$entries5","_Object$entries5$_i","responses","selectedReturn","selectedExample","selectedComponent","_i6","_Object$entries6","_Object$entries6$_i","newpath","newpathsplit","pathitem","urlsplit","urlkey","curname","subpath","searchactions","servers","firstUrl","variables","foundkey","foundVar","optionset","_i7","_Object$entries7","_Object$entries7$_i","scheme","flowkey","flow","authorizationCode","authorizationUrl","tokenUrl","newscopes","_i8","_Object$entries8","_Object$entries8$_i","scopekey","prefixCheck","newActions2","actionKey2","action2","increaseAmount","firstActions","secondActions","bearerAuth","textDecoriation","basicAuth","extraKeys","RemoveIcon","jwtAuth","oauth2Auth","tmpstring","newtmp","getCurrentPaths","urlPath","tmpWord","foundCategory","actionLabels","action_labels","ActionPaper","_useState59","_useState60","updater","setUpdater","_useState61","_useState62","actionsModalOpen","setActionsModalOpen","_useState63","_useState64","setUrlPath","_useState65","_useState66","fileUploadEnabled","setFileUploadEnabled","_useState67","_useState68","currentActionMethod","setCurrentActionMethod","_useState69","_useState70","extraBodyFields","setExtraBodyFields","_useState71","_useState72","urlPathQueries","setUrlPathQueries","_useState73","_useState74","currentAction","setCurrentAction","findBodyParams","UrlPathParameters","setActionField","tmpQueries","tmpquery","HandleIndividualChip","chipData","_useState75","_useState76","chipRequired","setChipRequired","parsedChip","loopQueries","queryIndex","requiredColor","flipRequired","tmpqueries","deletePathQuery","SetExtraBodyField","bodyInfo","minRows","exampleResponse","newActionModal","parsedurl","request","args","reduce","rewrite","words","out","header","arg","isURL","parseField","btoa","parseCurl","Method","_i9","_Object$entries9","_Object$entries9$_i","decodeURI","parsedurlsplit","datasplit","actualkey","foundPath","errormessage","check","getActionErrors","actionIndex","addActionToView","ErrorOutlineIcon","hasFile","AttachFileIcon","labelindex","newAction","duplicateAction","deleteAction","LoopActions","tagView","actionView","foundActions","editHeaderImage","actualFile","fileObject","img","canvas","ctx","getContext","onload","drawImage","canvasUrl","toDataURL","editor","_useState87","_useState88","imageUploadError","setImageUploadError","_useState89","_useState90","openImageModal","setOpenImageModal","_useState91","_useState92","setScale","_useState93","_useState94","rotate","setRotatation","_useState95","_useState96","disableImageUpload","setDisableImageUpload","imageData","croppedData","imageInfo","crossOrigin","objectFit","alternateImg","AddPhotoAlternateIcon","onCancelSaveAppIcon","imageUploadModalView","AvatarEditor","imgEditor","onImageChange","onLoadSuccess","AddAPhotoOutlinedIcon","ZoomInOutlinedIcon","ZoomOutOutlinedIcon","LoopIcon","getImageScaledToCanvas","onSaveAppIcon","landingpageDataBrowser","splitBase","schemes","basePath","handledPaths","pathjoin","requestBody","format","assign","querynames","querykey","queryitem","methodname","bodykey","headersSplit","headerkey","headersplit","newparamName","bearerFormat","curauth","submitApp","creator_info","creator","creatorname","responsive","WelcomeForm","skipped","setSkipped","handleSetSearch","usecaseButtons","usecaseItems","setUsecaseItems","setOrgName","setRole","orgType","setOrgType","finishedApps","setFinishedApps","thumbIndex","setThumbIndex","thumbAnimation","clickdiff","setclickdiff","urlSearchParams","fromEntries","foundTab","foundTemplate","srcapp","dstapp","act","handleNext","orgname","company_type","priority","sendOrgUpdate","userId","sendUserUpdate","Set","prevActiveStep","handleBack","sizing","buttonStyle","formattedCarousel","usecase_search","extraHeight","startIcon","NewReleasesIcon","EmailIcon","ArrowBackIosNewIcon","AliceCarousel","activeIndex","infiniteLoop","mouseTracking","controlsStrategy","autoPlay","infinite","animationType","disableButtonsControls","ArrowForwardIosIcon","getStepContent","Welcome","newColor","mini","showWelcome","setShowWelcome","orgupdate","paperObject","actionObject","experienced_image","Stepper","stepProps","completed","Step","StepLabel","WelcomeForm2","CardActionArea","bordeRadius","UsecaseListComponent","expandedIndex","setExpandedIndex","expandedItem","setExpandedItem","setInputUsecase","setEditing","setVideo","workflowOutline","setWorkflowOutline","selectedWorkflows","setSelectedWorkflows","mitreTags","setMitreTags","extra_buttons","workflow_outline","itemBorder","fixedName","escape","scrollTo","behavior","getUsecase","mitre","filtered","CheckBoxOutlineBlankIcon","checkedIcon","CheckBoxIcon","baseTypeInfo","lineHeight","DoneAllIcon","TreeChart","TreeMap","margins","series","TreeMapSeries","colorScheme","TreeMapLabel","wrap","rect","TreeMapRect","animated","RadialChart","RadialAreaChart","axis","RadialAxis","RadialAreaSeries","interpolation","colorInput","RadialLine","TooltipArea","isRadial","onValueEnter","ChartTooltip","followCursor","modifiers","Dashboard","dayAmount","stats","setStats","_useState36","setChangeme","statsRan","setStatsRan","setKeys","treeKeys","setTreeKeys","selectedUsecaseCategory","setSelectedUsecaseCategory","foundQuery","foundQuery2","queryName","foundItem","checkSelectedParams","allCategories","treeCategories","fetchdata","stats_id","runUpdate","newDayGraphLabels","newDayGraphData","enddate","setDate","setHours","startdate","endtime","starttime","autoUpdate","total","LineChartWrapper","marginBotton","AreaChart","AreaSeries","symbols","PointSeries","show","metadata","widgetData","setWidgetData","getWidget","dashboard","widget","foundWidget","AdminAccount","setUsername","password","setPassword","loginLoading","setLoginLoading","loginInfo","setLoginInfo","CacheView","listCache","setListCache","setAddCache","setKey","setValue","cacheInput","setCacheInput","setCacheCursor","listOrgCache","cache","addOrgCache","toISOString","deleteCache","typecost_single","OrgHeader","selectedOrganization","setSelectedOrganization","handleEditOrg","adminTab","orgDescription","setOrgDescription","orgSaveButton","textalign","OrgHeaderexpanded","defaultBranch","defaults","app_download_repo","appDownloadUrl","setAppDownloadUrl","app_download_branch","appDownloadBranch","setAppDownloadBranch","workflow_download_repo","workflowDownloadUrl","setWorkflowDownloadUrl","workflow_download_branch","workflowDownloadBranch","setWorkflowDownloadBranch","sso_config","sso_entrypoint","ssoEntrypoint","setSsoEntrypoint","sso_certificate","ssoCertificate","setSsoCertificate","notification_workflow","notificationWorkflow","setNotificationWorkflow","documentation_reference","documentationReference","setDocumentationReference","openidClientId","setOpenidClientId","openidClientSecret","setOpenidClientSecret","openid_authorization","openidAuthorization","setOpenidAuthorization","openid_token","openidToken","setOpenidToken","manager_orgs","Billing","billingInfo","stripeKey","handleGetOrg","stripe","Stripe","subscription","SubscriptionObject","top_text","currency_text","price","interval","recurrence","features","feature","subscriptions","Branding","publishingInfo","Files","selectedNamespace","setSelectedNamespace","openFileId","setOpenFileId","fileNamespaces","setFileNamespaces","fileContent","setFileContent","openEditor","setOpenEditor","renderTextBox","setRenderTextBox","allowedFileTypes","handleCreateFile","handleFileUpload","file_id","uploadFiles","filedata","FormData","append","ClearIcon","filenamesplit","iseditable","filesize","updated_at","md5_sum","respdata","responseData","readFileData","downloadFile","deleteFile","Admin","checkLogin","orgRequest","setOrgRequest","modalUser","setModalUser","cloudSyncModalOpen","setCloudSyncModalOpen","cloudSyncApikey","setCloudSyncApikey","loading","setLoading","setOrganizationFeatures","curTab","setCurTab","users","setUsers","orgSyncResponse","setOrgSyncResponse","userSettings","matchingOrganizations","setMatchingOrganizations","setAuthentication","schedules","setSchedules","selectedUser","setSelectedUser","newUsername","setNewUsername","newPassword","setNewPassword","selectedUserModalOpen","setSelectedUserModalOpen","setSelectedAuthentication","selectedAuthenticationModalOpen","setSelectedAuthenticationModalOpen","authenticationFields","setAuthenticationFields","showArchived","setShowArchived","image2FA","setImage2FA","value2FA","setValue2FA","secret2FA","setSecret2FA","show2faSetup","setShow2faSetup","setAdminTab","showApiKey","setShowApiKey","selectedStatus","setSelectedStatus","enableCloudSync","organization","disableSync","disable","getOrgs","lead_info","foundorgid","sync_features","leads","customer","demo_done","pov","lead","student","sync","inactive","getSchedules","getUsers","views","admin_views","setConfig","changeModalData","setUser","user_id","editAuthenticationModal","textfield","saveAuthentication","userOrgEdit","m","OutlinedInput","editUserModal","newpassword","onPasswordChange","deleteUser","generateApikey","run2FASetup","mfa_info","maxLength","handleVerify2FA","GridItem","setExpanded","primaryIcon","secondaryIcon","syncList","cloudSyncModal","organizationView","support","textColor","cloud_sync_active","sync_config","VisibilityOffIcon","griditem","data_collection","Username","inviteUser","Password","submitUser","currentOrgId","createSubOrg","submitEnvironment","usersView","login_type","subfound","filesView","schedulesView","schedule","seconds","argument","deleteSchedule","appCategoryView","authenticationView","workflow_count","created","updateAppAuthentication","editAuthenticationConfig","SelectAllIcon","deleteAuthentication","environmentView","showCPUAlert","prio","running_ip","commandData","newEnv","setDefaultEnvironment","deleteEnvironment","rerunCloudWorkflows","abortEnvironmentWorkflows","recommendation","changeRecommendation","organizationsTab","isSelected","hybridTab","cacheOrgView","scrollButtons","AccessibilityNewIcon","LockIcon","StorageIcon","EcoIcon","Body","hrefStyle2","innerHrefStyle","Docs","_markdownStyle","selectedDoc","serverMobile","mobile","setMobile","setList","setListLoaded","read_time","selectedMeta","setSelectedMeta","tocLines","setTocLines","SidebarPaperStyle","fetchDocs","docId","meta","innerTocLines","parsedline","hash","getElementsByTagName","lenth","scrollIntoView","parseElementScroll","markdownStyle","OuterLink","Img","CodeHandler","Heading","extraInfo","vAlign","contributors","CustomButton","headerStyle","mainpageInfo","postDataBrowser","listStyle","itemMatching","postDataMobile","_paperStyle","curView","setCurView","selectedItems","setSelectedItems","viewdata1","subitems","subtitle","viewitem","cardContentStyle","view1","setSelected","baseStyle","CardContent","HandleSelection","view2","baseView","SetAuthentication","setFinished","setResponse","failed","setFailed","session_state","externalData","handleExternal","foundScope","reference_workflow","errorDesc","maringTop","AppGrid","formMail","setFormMail","message","setMessage","formMessage","setFormMessage","insights","character","appUrl","CloudQueueIcon","CodeIcon","errorMessage","submitContact","itemSize","alternativeView","WorkflowPaperNew","CreatorGrid","creatorUrl","verified","VerifiedUserIcon","specialized_apps","DocsGrid","Search","hidemargins","extraQ","WorkflowGrid","RunWorkflow","setIsLoggedIn","setCookie","register","setExecutionArgument","executionLoading","setExecutionLoading","workflowQuestion","setWorkflowQuestion","defaultTitle","tmpMessage","executionInfo","setExecutionInfo","ShowExecutionResults","primaryColor","answer","fetchBody","getorg","innerRequest","disabledButtons","buttonid","foundButton","multiLine","alignItem","LandingPage","GridLayout","listitems","Web","AccountTree","secondaryColor","secondaryItemList","primaryText","setImage","backgroundSize","backgroundRepeat","InfoIcon","CreateIcon","ArrowForwardIcon","CardMedia","landingpageDataMobile","landingSite","LoginDialog","loginViewLoading","setLoginViewLoading","ssoUrl","setSSOUrl","MFAField","setMFAField","MFAValue","setMFAValue","checkAdmin","sso_url","formtitle","baseurl","ssoBtn","Settings","setUserData","firstname","setFirstname","lastname","setLastname","currentPassword","setCurrentPassword","newPassword2","setNewPassword2","loadedValidationWorkflows","selfOwnedWorkflows","passwordFormMessage","setPasswordFormMessage","checkOwner","currentOwner","address","eth_info","account","top_ownerships","ParsedWorkflowView","innerPaperStyle","collection","runFlex","parsed_balance","landingpageData","currentpassword","newpassword2","handleGithubConnection","KeepAlive","onChunkedResponseComplete","onChunkedResponseError","processChunkedResponse","_asyncToGenerator","_regeneratorRuntime","mark","_callee","decoder","appendChunks","readChunk","_context","prev","next","getReader","TextDecoder","chunk","decode","Uint8Array","stream","abrupt","_x","arguments","getWorkflowStream","_callee2","_context2","Framework","frameworkLoaded","setFrameworkLoaded","ScrollToTop","getUserNotifications","setCurpath","useLocation","scroll","alertStyle","AlertTemplate","useStyles1","formControl","selectEmpty","table","bullet","transform","pos","createData","calories","fat","carbs","protein","DashboardPage","classes1","setAge","Container","xl","gutterBottom","md","BarChart","LineChart","GridStripe","LineSeries","TableContainer","Table","TableHead","TableRow","TableCell","align","TableBody","port","App","_objectSpread2","_objectSpread3","_objectSpread4","_useCookies","useCookies","_useCookies2","cookies","dataset","setDataset","setIsLoaded","cors","userInfo","BOTTOM_LEFT","includedData","Routes","Route","exact","render","LandingPageNew","chat_disabled","Drift","attributes","eventHandlers","function","LoginPage","SettingsPage","AdminSetup","FrameworkWrapper","Introduction","SetAuthenticationSSO","DashboardView","MuiThemeProvider","CookiesProvider","BrowserRouter","Provider","hostname","serviceWorker","ready","registration","unregister"],"mappings":";+GAAA,IAAIA,EAAM,CACT,eAAgB,CACf,IACA,IAED,6BAA8B,CAC7B,IACA,IAED,mBAAoB,CACnB,IACA,IAED,yBAA0B,CACzB,IACA,IAED,2BAA4B,CAC3B,IACA,IAED,mBAAoB,CACnB,IACA,GAED,uBAAwB,CACvB,IACA,IAED,mBAAoB,CACnB,IACA,IAED,mBAAoB,CACnB,IACA,IAED,iCAAkC,CACjC,IACA,IAED,6BAA8B,CAC7B,IACA,IAED,uBAAwB,CACvB,IACA,IAED,eAAgB,CACf,IACA,GAED,qBAAsB,CACrB,IACA,IAED,WAAY,CACX,IACA,IAED,iBAAkB,CACjB,IACA,EACA,IAED,iBAAkB,CACjB,IACA,IAED,qBAAsB,CACrB,IACA,EACA,EACA,IAED,6BAA8B,CAC7B,IACA,IAED,eAAgB,CACf,IACA,IAED,mBAAoB,CACnB,IACA,IAED,iBAAkB,CACjB,IACA,IAED,eAAgB,CACf,IACA,IAED,qBAAsB,CACrB,IACA,IAED,eAAgB,CACf,IACA,IAED,qBAAsB,CACrB,IACA,IAED,qBAAsB,CACrB,IACA,IAED,eAAgB,CACf,IACA,IAED,mBAAoB,CACnB,IACA,IAED,uBAAwB,CACvB,IACA,IAED,eAAgB,CACf,IACA,IAED,eAAgB,CACf,IACA,EACA,IAED,uBAAwB,CACvB,IACA,IAED,aAAc,CACb,IACA,IAED,qBAAsB,CACrB,IACA,IAED,iBAAkB,CACjB,IACA,EACA,EACA,IAED,6BAA8B,CAC7B,IACA,IAED,yCAA0C,CACzC,IACA,IAED,uBAAwB,CACvB,IACA,IAED,iBAAkB,CACjB,IACA,IAED,iCAAkC,CACjC,IACA,EACA,EACA,IAED,2BAA4B,CAC3B,IACA,EACA,EACA,IAED,iBAAkB,CACjB,IACA,IAED,eAAgB,CACf,IACA,IAED,6BAA8B,CAC7B,IACA,GAED,qBAAsB,CACrB,IACA,IAED,eAAgB,CACf,IACA,EACA,IAED,mBAAoB,CACnB,IACA,IAED,6BAA8B,CAC7B,IACA,IAED,eAAgB,CACf,IACA,IAED,yBAA0B,CACzB,IACA,GAED,+BAAgC,CAC/B,IACA,IAED,iBAAkB,CACjB,IACA,IAED,YAAa,CACZ,KAED,iBAAkB,CACjB,IACA,IAED,qBAAsB,CACrB,IACA,IAED,yBAA0B,CACzB,IACA,IAED,qBAAsB,CACrB,IACA,IAED,mBAAoB,CACnB,IACA,IAED,mBAAoB,CACnB,IACA,IAED,iBAAkB,CACjB,IACA,IAED,yBAA0B,CACzB,IACA,IAED,qBAAsB,CACrB,IACA,IAED,aAAc,CACb,IACA,IAED,qBAAsB,CACrB,IACA,IAED,mBAAoB,CACnB,IACA,EACA,IAED,iBAAkB,CACjB,IACA,IAED,eAAgB,CACf,IACA,EACA,EACA,EACA,IAED,eAAgB,CACf,IACA,IAED,6BAA8B,CAC7B,IACA,IAED,6BAA8B,CAC7B,IACA,IAED,yBAA0B,CACzB,IACA,IAED,eAAgB,CACf,IACA,EACA,EACA,GAED,qBAAsB,CACrB,IACA,IAED,qBAAsB,CACrB,IACA,IAED,WAAY,CACX,IACA,IAED,WAAY,CACX,IACA,IAED,eAAgB,CACf,IACA,IAED,eAAgB,CACf,IACA,IAED,iBAAkB,CACjB,IACA,IAED,iBAAkB,CACjB,IACA,IAED,eAAgB,CACf,IACA,IAED,iBAAkB,CACjB,IACA,EACA,IAED,qBAAsB,CACrB,IACA,IAED,mBAAoB,CACnB,IACA,IAED,mBAAoB,CACnB,IACA,IAED,iBAAkB,CACjB,IACA,EACA,EACA,IAED,2BAA4B,CAC3B,IACA,IAED,qBAAsB,CACrB,IACA,IAED,iBAAkB,CACjB,IACA,IAED,eAAgB,CACf,IACA,EACA,EACA,IAED,qBAAsB,CACrB,IACA,IAED,+BAAgC,CAC/B,IACA,KAED,eAAgB,CACf,IACA,KAED,iBAAkB,CACjB,IACA,KAED,qBAAsB,CACrB,IACA,GAED,mBAAoB,CACnB,IACA,KAED,eAAgB,CACf,IACA,KAED,uBAAwB,CACvB,IACA,KAED,6BAA8B,CAC7B,IACA,KAED,iBAAkB,CACjB,IACA,KAED,iBAAkB,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","file":"static/js/main.3a284d84.chunk.js","sourcesContent":["var map = {\n\t\"./apl/apl.js\": [\n\t\t855,\n\t\t30\n\t],\n\t\"./asciiarmor/asciiarmor.js\": [\n\t\t856,\n\t\t31\n\t],\n\t\"./asn.1/asn.1.js\": [\n\t\t857,\n\t\t32\n\t],\n\t\"./asterisk/asterisk.js\": [\n\t\t858,\n\t\t33\n\t],\n\t\"./brainfuck/brainfuck.js\": [\n\t\t859,\n\t\t34\n\t],\n\t\"./clike/clike.js\": [\n\t\t844,\n\t\t2\n\t],\n\t\"./clojure/clojure.js\": [\n\t\t860,\n\t\t35\n\t],\n\t\"./cmake/cmake.js\": [\n\t\t861,\n\t\t36\n\t],\n\t\"./cobol/cobol.js\": [\n\t\t862,\n\t\t37\n\t],\n\t\"./coffeescript/coffeescript.js\": [\n\t\t845,\n\t\t38\n\t],\n\t\"./commonlisp/commonlisp.js\": [\n\t\t863,\n\t\t39\n\t],\n\t\"./crystal/crystal.js\": [\n\t\t864,\n\t\t40\n\t],\n\t\"./css/css.js\": [\n\t\t841,\n\t\t1\n\t],\n\t\"./cypher/cypher.js\": [\n\t\t865,\n\t\t41\n\t],\n\t\"./d/d.js\": [\n\t\t866,\n\t\t42\n\t],\n\t\"./dart/dart.js\": [\n\t\t867,\n\t\t2,\n\t\t43\n\t],\n\t\"./diff/diff.js\": [\n\t\t868,\n\t\t44\n\t],\n\t\"./django/django.js\": [\n\t\t869,\n\t\t0,\n\t\t1,\n\t\t11\n\t],\n\t\"./dockerfile/dockerfile.js\": [\n\t\t870,\n\t\t21\n\t],\n\t\"./dtd/dtd.js\": [\n\t\t871,\n\t\t45\n\t],\n\t\"./dylan/dylan.js\": [\n\t\t872,\n\t\t46\n\t],\n\t\"./ebnf/ebnf.js\": [\n\t\t873,\n\t\t47\n\t],\n\t\"./ecl/ecl.js\": [\n\t\t874,\n\t\t48\n\t],\n\t\"./eiffel/eiffel.js\": [\n\t\t875,\n\t\t49\n\t],\n\t\"./elm/elm.js\": [\n\t\t876,\n\t\t50\n\t],\n\t\"./erlang/erlang.js\": [\n\t\t877,\n\t\t51\n\t],\n\t\"./factor/factor.js\": [\n\t\t878,\n\t\t22\n\t],\n\t\"./fcl/fcl.js\": [\n\t\t879,\n\t\t52\n\t],\n\t\"./forth/forth.js\": [\n\t\t880,\n\t\t53\n\t],\n\t\"./fortran/fortran.js\": [\n\t\t881,\n\t\t54\n\t],\n\t\"./gas/gas.js\": [\n\t\t882,\n\t\t55\n\t],\n\t\"./gfm/gfm.js\": [\n\t\t883,\n\t\t4,\n\t\t20\n\t],\n\t\"./gherkin/gherkin.js\": [\n\t\t884,\n\t\t56\n\t],\n\t\"./go/go.js\": [\n\t\t885,\n\t\t57\n\t],\n\t\"./groovy/groovy.js\": [\n\t\t886,\n\t\t58\n\t],\n\t\"./haml/haml.js\": [\n\t\t887,\n\t\t0,\n\t\t1,\n\t\t14\n\t],\n\t\"./handlebars/handlebars.js\": [\n\t\t846,\n\t\t16\n\t],\n\t\"./haskell-literate/haskell-literate.js\": [\n\t\t888,\n\t\t26\n\t],\n\t\"./haskell/haskell.js\": [\n\t\t847,\n\t\t59\n\t],\n\t\"./haxe/haxe.js\": [\n\t\t889,\n\t\t60\n\t],\n\t\"./htmlembedded/htmlembedded.js\": [\n\t\t890,\n\t\t0,\n\t\t1,\n\t\t10\n\t],\n\t\"./htmlmixed/htmlmixed.js\": [\n\t\t840,\n\t\t0,\n\t\t1,\n\t\t27\n\t],\n\t\"./http/http.js\": [\n\t\t891,\n\t\t61\n\t],\n\t\"./idl/idl.js\": [\n\t\t892,\n\t\t62\n\t],\n\t\"./javascript/javascript.js\": [\n\t\t842,\n\t\t0\n\t],\n\t\"./jinja2/jinja2.js\": [\n\t\t893,\n\t\t63\n\t],\n\t\"./jsx/jsx.js\": [\n\t\t894,\n\t\t0,\n\t\t28\n\t],\n\t\"./julia/julia.js\": [\n\t\t895,\n\t\t64\n\t],\n\t\"./livescript/livescript.js\": [\n\t\t896,\n\t\t65\n\t],\n\t\"./lua/lua.js\": [\n\t\t897,\n\t\t66\n\t],\n\t\"./markdown/markdown.js\": [\n\t\t852,\n\t\t4\n\t],\n\t\"./mathematica/mathematica.js\": [\n\t\t898,\n\t\t67\n\t],\n\t\"./mbox/mbox.js\": [\n\t\t899,\n\t\t68\n\t],\n\t\"./meta.js\": [\n\t\t365\n\t],\n\t\"./mirc/mirc.js\": [\n\t\t900,\n\t\t69\n\t],\n\t\"./mllike/mllike.js\": [\n\t\t901,\n\t\t70\n\t],\n\t\"./modelica/modelica.js\": [\n\t\t902,\n\t\t71\n\t],\n\t\"./mscgen/mscgen.js\": [\n\t\t903,\n\t\t72\n\t],\n\t\"./mumps/mumps.js\": [\n\t\t904,\n\t\t73\n\t],\n\t\"./nginx/nginx.js\": [\n\t\t905,\n\t\t74\n\t],\n\t\"./nsis/nsis.js\": [\n\t\t906,\n\t\t23\n\t],\n\t\"./ntriples/ntriples.js\": [\n\t\t907,\n\t\t75\n\t],\n\t\"./octave/octave.js\": [\n\t\t908,\n\t\t76\n\t],\n\t\"./oz/oz.js\": [\n\t\t909,\n\t\t77\n\t],\n\t\"./pascal/pascal.js\": [\n\t\t910,\n\t\t78\n\t],\n\t\"./pegjs/pegjs.js\": [\n\t\t911,\n\t\t0,\n\t\t79\n\t],\n\t\"./perl/perl.js\": [\n\t\t912,\n\t\t80\n\t],\n\t\"./php/php.js\": [\n\t\t913,\n\t\t0,\n\t\t1,\n\t\t2,\n\t\t17\n\t],\n\t\"./pig/pig.js\": [\n\t\t914,\n\t\t81\n\t],\n\t\"./powershell/powershell.js\": [\n\t\t915,\n\t\t82\n\t],\n\t\"./properties/properties.js\": [\n\t\t916,\n\t\t83\n\t],\n\t\"./protobuf/protobuf.js\": [\n\t\t917,\n\t\t84\n\t],\n\t\"./pug/pug.js\": [\n\t\t853,\n\t\t0,\n\t\t1,\n\t\t3\n\t],\n\t\"./puppet/puppet.js\": [\n\t\t918,\n\t\t85\n\t],\n\t\"./python/python.js\": [\n\t\t848,\n\t\t86\n\t],\n\t\"./q/q.js\": [\n\t\t919,\n\t\t87\n\t],\n\t\"./r/r.js\": [\n\t\t920,\n\t\t88\n\t],\n\t\"./rpm/rpm.js\": [\n\t\t921,\n\t\t89\n\t],\n\t\"./rst/rst.js\": [\n\t\t922,\n\t\t13\n\t],\n\t\"./ruby/ruby.js\": [\n\t\t843,\n\t\t90\n\t],\n\t\"./rust/rust.js\": [\n\t\t923,\n\t\t24\n\t],\n\t\"./sas/sas.js\": [\n\t\t924,\n\t\t91\n\t],\n\t\"./sass/sass.js\": [\n\t\t850,\n\t\t1,\n\t\t92\n\t],\n\t\"./scheme/scheme.js\": [\n\t\t925,\n\t\t93\n\t],\n\t\"./shell/shell.js\": [\n\t\t926,\n\t\t94\n\t],\n\t\"./sieve/sieve.js\": [\n\t\t927,\n\t\t95\n\t],\n\t\"./slim/slim.js\": [\n\t\t928,\n\t\t0,\n\t\t1,\n\t\t15\n\t],\n\t\"./smalltalk/smalltalk.js\": [\n\t\t929,\n\t\t96\n\t],\n\t\"./smarty/smarty.js\": [\n\t\t930,\n\t\t97\n\t],\n\t\"./solr/solr.js\": [\n\t\t931,\n\t\t98\n\t],\n\t\"./soy/soy.js\": [\n\t\t932,\n\t\t0,\n\t\t1,\n\t\t18\n\t],\n\t\"./sparql/sparql.js\": [\n\t\t933,\n\t\t99\n\t],\n\t\"./spreadsheet/spreadsheet.js\": [\n\t\t934,\n\t\t100\n\t],\n\t\"./sql/sql.js\": [\n\t\t935,\n\t\t101\n\t],\n\t\"./stex/stex.js\": [\n\t\t849,\n\t\t102\n\t],\n\t\"./stylus/stylus.js\": [\n\t\t854,\n\t\t5\n\t],\n\t\"./swift/swift.js\": [\n\t\t936,\n\t\t103\n\t],\n\t\"./tcl/tcl.js\": [\n\t\t937,\n\t\t104\n\t],\n\t\"./textile/textile.js\": [\n\t\t938,\n\t\t105\n\t],\n\t\"./tiddlywiki/tiddlywiki.js\": [\n\t\t939,\n\t\t106\n\t],\n\t\"./tiki/tiki.js\": [\n\t\t940,\n\t\t107\n\t],\n\t\"./toml/toml.js\": [\n\t\t941,\n\t\t108\n\t],\n\t\"./tornado/tornado.js\": [\n\t\t942,\n\t\t0,\n\t\t1,\n\t\t12\n\t],\n\t\"./troff/troff.js\": [\n\t\t943,\n\t\t109\n\t],\n\t\"./ttcn-cfg/ttcn-cfg.js\": [\n\t\t945,\n\t\t110\n\t],\n\t\"./ttcn/ttcn.js\": [\n\t\t944,\n\t\t111\n\t],\n\t\"./turtle/turtle.js\": [\n\t\t946,\n\t\t112\n\t],\n\t\"./twig/twig.js\": [\n\t\t947,\n\t\t19\n\t],\n\t\"./vb/vb.js\": [\n\t\t948,\n\t\t113\n\t],\n\t\"./vbscript/vbscript.js\": [\n\t\t949,\n\t\t114\n\t],\n\t\"./velocity/velocity.js\": [\n\t\t950,\n\t\t115\n\t],\n\t\"./verilog/verilog.js\": [\n\t\t951,\n\t\t116\n\t],\n\t\"./vhdl/vhdl.js\": [\n\t\t952,\n\t\t117\n\t],\n\t\"./vue/vue.js\": [\n\t\t953,\n\t\t0,\n\t\t1,\n\t\t5,\n\t\t3,\n\t\t9\n\t],\n\t\"./wast/wast.js\": [\n\t\t954,\n\t\t25\n\t],\n\t\"./webidl/webidl.js\": [\n\t\t955,\n\t\t118\n\t],\n\t\"./xml/xml.js\": [\n\t\t839,\n\t\t119\n\t],\n\t\"./xquery/xquery.js\": [\n\t\t956,\n\t\t120\n\t],\n\t\"./yacas/yacas.js\": [\n\t\t957,\n\t\t121\n\t],\n\t\"./yaml-frontmatter/yaml-frontmatter.js\": [\n\t\t958,\n\t\t29\n\t],\n\t\"./yaml/yaml.js\": [\n\t\t851,\n\t\t122\n\t],\n\t\"./z80/z80.js\": [\n\t\t959,\n\t\t123\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__.t(id, 7);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 729;\nmodule.exports = webpackAsyncContext;","const data = [{\n\t\t\tselector: 'node',\n\t\t\tcss: {\n\t\t\t\t'label': 'data(label)',\n\t\t\t\t'text-valign': 'center',\n\t\t\t\t'font-family': 'Segoe UI, Tahoma, Geneva, Verdana, sans-serif, sans-serif',\n\t\t\t\t'font-weight': 'lighter',\n\t\t\t\t'font-size': 'data(font_size)',\n\t\t\t\t'text-algin': 'center',\n\t\t\t\t'border-width': '3px',\n\t\t\t\t'border-color': '#8a8a8a',\n\t\t\t\t'color': '#f85a3e',\n\t\t\t\t'text-margin-x': '0px',\n\t\t\t\t'text-margin-y': 'data(text_margin_y)',\n\t\t\t\t'background-color': '#27292d',\n\t\t\t\t'background-image': 'data(large_image)',\n\t\t\t\t'background-position-x': 'data(margin_x)',\n\t\t\t\t'background-position-y': 'data(margin_y)',\n\t\t\t\t'background-clip': \"node\",\n\t\t\t\t'background-width': 'data(width)',\n\t\t\t\t'background-height': 'data(width)',\n\t\t\t\t'width': 'data(boxwidth)',\n\t\t\t\t'height': 'data(boxheight)',\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tselector: 'edge',\n\t\t\tcss: {\n\t\t\t\t'target-arrow-shape': 'triangle',\n\t\t\t\t'target-arrow-color': '#8a8a8a',\n\t\t\t\t'curve-style': 'bezier',\n\t\t\t\t'label': 'data(label)',\n\t\t\t\t'text-wrap': 'wrap',\n\t\t\t\t'text-max-width': '120px',\n\t\t\t\t\"color\": \"rgba(255,255,255,0.7)\",\n\t\t\t\t'line-style': 'dashed',\n\t\t\t\t\"line-fill\": \"linear-gradient\",\n\t\t\t\t\"line-gradient-stop-positions\": [\"0.0\", \"100\"],\n\t\t\t\t\"line-gradient-stop-colors\": [\"#8a8a8a\", \"#8a8a8a\"],\n\t\t\t\t'width': '1px',\n\t\t\t\t'z-compound-depth': 'top',\n\t\t\t\t'font-size': '13px',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tselector: `node[!is_valid]`,\n\t\t\tcss: {\n\t\t\t\t'height': '20px',\n\t\t\t\t'width': '20px',\n\t\t\t\t'background-color': '#6d9eeb',\n\t\t\t\t'border-color': '#4c6ea4',\n\t\t\t\t'border-width': '1px',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tselector: `edge[?human]`,\n\t\t\tcss: {\n\t\t\t\t'target-arrow-color': '#6d9eeb',\n\t\t\t\t'line-style': 'solid',\n\t\t\t\t\"line-gradient-stop-positions\": [\"0.0\", \"100\"],\n\t\t\t\t\"line-gradient-stop-colors\": [\"#6d9eeb\", \"#6d9eeb\"],\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tselector: `node[?middle_node]`,\n\t\t\tcss: {\n\t\t\t\t'background-image': 'data(large_image)',\n\t\t\t\t'height': 'data(width)',\n\t\t\t\t'width': 'data(height)',\n\t\t\t\t'background-width': 'data(width)',\n\t\t\t\t'background-height': 'data(height)',\n\t\t\t\t'background-position-x': '0px',\n\t\t\t\t'background-position-y': '0px',\n\t\t\t\t'border-width': '2px',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tselector: `node[?invisible]`,\n\t\t\tcss: {\n\t\t\t\t'height': '10x',\n\t\t\t\t'width': '10px',\n\t\t\t\t'background-position-x': '0px',\n\t\t\t\t'background-position-y': '0px',\n\t\t\t\t'border-width': '0px',\n\t\t\t\t'font-size': '0px',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tselector: `node[?font_size]`,\n\t\t\tcss: {\n\t\t\t\t'font-size': 'data(font_size)',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tselector: \".eh-preview, .eh-ghost-edge\",\n\t\t\tstyle: {\n\t\t\t\t\"background-color\": \"#337ab7\",\n\t\t\t\t\"line-color\": \"#337ab7\",\n\t\t\t\t\"target-arrow-color\": \"#337ab7\",\n\t\t\t\t\"source-arrow-color\": \"#337ab7\",\n\t\t\t},\n\t\t},\n \t{\n\t\t\tselector: \"node:selected\",\n\t\t\tcss: {\n\t\t\t\t\"border-color\": \"#f86a3e\",\n\t\t\t\t\"border-width\": \"3px\",\n\t\t\t},\n\t\t},\n\t]\n\nexport default data \n","import React from \"react\";\nimport { createMuiTheme } from \"@material-ui/core/styles\";\n\nconst theme = createMuiTheme({\n palette: {\n primary: {\n main: \"#F86743\",\n\t\t\tcontrastText: \"#ffffff\",\n },\n secondary: {\n main: \"#e8eaf6\",\n },\n text: {\n secondary: \"rgba(255,255,255,0.7)\",\n },\n type: \"dark\",\n surfaceColor: \"#27292d\",\n inputColor: \"#383B40\",\n platformColor: \"#1c1c1d\",\n backgroundColor: \"#1a1a1a\",\n borderRadius: 5,\n defaultBorder: \"1px solid rgba(255,255,255,0.3)\",\n\t\tjsonTheme: \"brewer\",\n\t\treactJsonStyle: {\n\t\t\tborderRadius: 5,\n\t\t\tborder: \"1px solid rgba(255,255,255,0.7)\",\n\t\t\tpadding: 5, \n\t\t},\n textFieldStyle: {\n backgroundColor: \"#383B40\",\n borderRadius: 5,\n },\n innerTextfieldStyle: {\n color: \"white\",\n minHeight: 50,\n marginLeft: \"5px\",\n maxWidth: \"95%\",\n fontSize: \"1em\",\n borderRadius: 5,\n },\n tooltip: {\n backgroundColor: \"white\",\n color: \"rgba(0, 0, 0, 0.87)\",\n boxShadow: 1,\n fontSize: 11,\n },\n defaultImage:\n \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAK4AAACuCAYAAACvDDbuAAAgAElEQVR4Xu19e9CvV1Xe3r/vnJOcBEhBSgMEBaoUK9POCOVmAuP0HwcUCNYZSUsh9xv3hGl1qNippQRE20IFEhQoBJiaKVpEgQRnhD+0QHSmRkAsxE4doBZQTs71u/zezruv6/Ksvffvkn/qd8bBfN/3XvZe+1nPevbaa+/XuxX/Tbe6C/ece8qOd5dNk3um9+7Jk/OPds49zE3uyPy4ST5zCr/y4f+sfxO4j16vHsqfmV7gpgm8Yzm/lP9+km1B9+W2zn/zzk2sDeR55ffy3enn1Lf5J/1e3bb42kX43/Do1nt9fUdpLrSbbFt8vvls+idlm/qsaJPWuNK/TfvOLU44577pnPuSc9PvT95/9szu3p9c/IH/c2oVKDbeyB8z/Yz7noNd9zzn3U+5hX+6m9wjnXM7GqXCHpbR0+PnjudGxEtBkzRo02vFtRB83rkAXPqPGD4MnmWGGa3CDqp9+pp4Bwd2dCwPzIXur6D1xaGRXaQz8nf4Kfix1/3joDXtDm0jHVbYspirbZdkj4Npcv/XO/8F59xdfv/o7zz0A1/9yxEAd4E7/by74OCke5Fb+Bvd5J7unDvGHmyCKiMzX40ByW+XQCxvyoSafgGMBT0fgTayXmA/kykr8PI1kS0JIOMPRiSJ7ctOWfuI+mcw4Uj7lO25Y0TQoyHGbKsjJbqXR5HoKijK6nuz3bPhokEX+f4956Z7nXP/8cz+w//bxR/4H00GbgJ3ep170sHC/WxgWecvUJ5AemrLA4NF2cCAa4BDSCbjYVR2RYN2ZXlAOgxZqcXUDLh9toyvSkybopAJ+KBbOpHADOEjoO1EkVYU6LB0HbPUDtaN8N7TzrmPOnfwry9631/8mcW+JnD3Xu+eu3DubZNzT1Xhu8eyxaXw47lWBIzcAW2fGSpoM1WPgzYNWqSRwqjsnSYokgMyvW5JnzWZNrQpC9tC+ZVZW1Ek9GbBQK8ZuS99mrrW1sPh7XXsTeDmqHrvYvKve+j77/8MAi9E1v6t7vnOu7c7555gaM4SuiHGOsajcV8xmeEUMSDFf4yJQLiUmpYNTg906iVCl7b6ltu4gi5lTMs6Z4RpwLQsVMP+IZaNTtYngRoNI1uOzwdYhJxtEhqKAFsdvoI0XHy/m3ZeedH7v/ZxCV7Vir1b3HP8wr3PBC1HDsog5IkJxSdDHAyBlRqBgyHwAANuI3sg3j4G+shSHASQaRlbZtDW8AmiT7b3TLJD8qACrWrwkclYg2l70qACWow5IZvQ9lHQUmeZ7p+8v/Lh7/3z36NDw6w7a9rljvvw5NwPWykOOuEono5YT8IvXQNBK5yhGnwFVoCgZYPYZgvSBtnGMMkJnR2ZrIh3Fga3mGoR9YgpL2xAjbGlBC2YTEGWJu01J3mkrwYGuFP25EF1XMFj9y6Wiyse9p+/9hXl2il78G7n3T9radomMVphpMdGUG9wAJRLYJ4Wz2CZ73QmUpkxa9jlA2fmKvNz0414Fm+Abw6b+U8D4Km+xfsb0l5E99Z+S4mApIHhaEz2bCAPSmMkaNMzW4Av94ac3vtPHdu96TG3f32evFXhuH+ru8J5f4dzrmYPVGiKN7Bfsx/syVj+C07AA3WQmlYBa4TR+bpWnhYCgjyLtN+OBrbezPdAwNcQCjq4EAsaCEAS8BF4PNIZoBKhWdo9PMO0DX5vbmGTRMi41SgyxrQlTcmsVQB+2jt/3UXv/9qdxVLTre5RBwv/m25yz+Qspe2NQWt5ZEQ5x79kMgzaoTC4DM9SuoqDvcEWSqKsNlnJHYvvQ5oWvRutiInrijdwALGBLZ003sEcMl7DSEdHoGTHyoQ4eqTxaqymzdmYuq40wrS1D5A80i+985/1u0de/LAPf+Vb4Y7917uXO+dud84fRcClIOKdVwPGQZRuNBuj6DujMHakCUCgadUsubeMS1A/vhRLBxZEgR6g8juLbUzAE1tWe8wslv9hh9HyQPknZNpEAsUQaJWPDgpttyCjsDxuTMQMwAOiUoTknNv1frrmovfd/wE/1x4cTP4jbuF+3AItwFe81ACGXm0SAC/5UTYGoSBAdwCwmZE9GAqhInmvBr8JPMmAo0zLB7G5YmdMALkTy/fOz5+NonO0VaJl0Bmyh3jDakzL2xL6JnLF8dGjk8xKDBWPtc3euY+dWT7kJX73VveMhfe/4Zy7ONOcgDpnP+a+iC1WLpZJ7RPhArLCPD7snZSVpnmGkgMZTdIrA5BIwOoHBkDLHWs1eRBMZ/Wr2FWGTcFmGQSMZYhjAInAB1C2WQIlrBGUi1JtUaJ8DHrtVIJtwyjZ6bxKjA3Q1n590y8Wl/uDW9wt08LfFgpmCCgx81FroU40KqhUvNLPYu+0NBSYiBUckjDHxtX0eCJJeqBN7cfh2WazKa/FK4MK+wGmHV/t40wbmyoBj8erYDQ5VGYC1VzFmBZpjUzEjGIjhREO5NS2A+f9v/T7t7q7nPc/qZPbYuhZeJdGL6lIMgFQ12gsJUBxwObLxP1KHujO+8nQZT15ANiOsrRcooZVXjDEyyovAzypbDKNQRifdSZiFXTI9m2JQCNBZcAcv+x7w9iF/zEACwlLZEd6ZZiFmWI7vJvu8gevd/dNk/+hPFDa02rwtXOZdZij8axlUoldwnilAYaRDKa1c5ixizxMVqfAEcUIo122RW2OCwv8/aPSotolLn5Y+nBkRWxk4aQuqGu7GOMxE5nPtQcN0DLggvGGYySjRR3L1L77/P6t/tvOuUc0gdvSZb0qL+hxtbSw/tkGma49SB3J2sl4R0SOBqNm+AYbFW9Hz0KgqIPIgWsCgHhzvaZ9rwYsjgKyzZiJMVmNVoiNsi3oWxi3BlkUwshMW7JO35mBu+dc3LmgwNvUfZVNasfH5AHVX/kOvHNBDzbXfX3jZkxnThliwSwtSswcLQDng7haFVUEWb99umAm6+5iyzA0yDbcntDmhQSwo2U5EvPzI3pWOzzDC/OaLtMm0Pm9GbhVpkD0hheX9hZwpxdWPYQ6iiqMweCgUMizB7nBYtXOeKeo0optXC1Mg8WFagMzAtV62mpKwCiC4miBdcCNSRg2aOnQNSu4Amn5MAi2LGyzoF2aaDtLflfCS2kDtBPRtBVf+cr4Dr+XgMs7Tn9CA86uNkDBr4k/AY0jQ0XRsoIdUqV9NXjLUXrywAJ8Yj2LBYrXovsrqMwI1Mhlhn6xUWq/I9tzTKsT1hNO15dNkqV5VFHAE7bTzpGep/6Afi8jXXWMBnBB2CeGXVUeaNAaYV5kD3IYLP5mFpTwlFSkx9VraWv1m+UYNqB46AL2Q6yf2lgr0HRoDX1PBTk1EliEgkO8dPhcLs+Ba9ybTRsuXmVFLI6Cwgoihh7gBcFx4JohKoli8nAJqGhczbIZQIWsynXCSA2mHQ6Don0YuHYY5HvEWsArMKs6by2Wthml9pkzeWwVilwI8KQPrdJEU/rI+xtsa/SfQwKQ1RRlKL1OLwpph6rAtUEbH5z+Xkm3LyFoOMtXwwkLBO1g8XgeSADa7COlzWqASHhKS0RU0rAwqJwyLrOGCUrD4XFKrtqusDRMefEVsfyaVR0ya17AK7GLrWXmsoxGioOKYXB4p0SjCA7ZyqpFNh3KTRG4LbZIf4vMKXa66hYKyh2ZJfNl3Poe6hhW9iCxDGkjBF6nAJwHi5EQT1hwrrBYYatOjkDM5I3FCxrJxmt9OaDs2oP2ZCqMd2jo6osL7SiJbcww1okCfu+WzNK5mXUjXjZafmAc4Lb2ZSzF1IOlafnzqIcaOw9qc0jnKhD6LMByu8Tbx3KhYiAt0ALDZ9uRqUJiAhm9UPagioTS15ZDkrqIEu0U0WBNW5+fbwDABflXjhMiXSxihDZK76x/I4+t7U3ARR1AtbRCR5mxR4TC1myarYhx7RaWcNkoU8t3KrXsMGOsqInoEJqCnA2F7x5Lz88m9m9FOMpu5LqxsksepfBuaquuAsiXYG5QT6vG3SCf1nVCMpSgGTqKHYqN/t4tCxN+sAjcvjopDvnSRiJcLOOW9fkm6LAnjw0sdryxe9Hyqnhetmyr5hSDNqGarLqxsxWkYxhEkydtyX6mz7P2aaerTVwNtENRT/Rfw6mzcJJu8BC4Bf55JEjnGsDV9bRGI1TdQZUgVVdZUUCyeSsKGJ7bOvfALD6viwsVEONOysOvBTxZTxtTekWDC5aSsixcR5weArcxEVt1qw1lxnVAW/ycSRhgU3Xhwmng1haE7BCuV2XSO/0AKn4QyMWKWKQaOYlrhArmVEL3mQOrwR0v7YX4PBlNxwT1nm+ExiwS2gfEVdCOti0afgTYluyR0my9ZVwbtNl17D1szPk6EsSF1FmYg00KuP0TCTVo1SY3GOo7RyL1QFFop2afMmzDrTgEF6eqbGSE93CBdphcT8tlUx/wehuR9V5UBL7i3rfEtPhQPQu08ffBqQoZrFZ7wHGWbGKNAxnfdeUB1dsMuCZoFTC0hGiHQnz4XGaMuN1jLOVVo8YIeMigRT/lk6Tig3bZIHcKW3pwdxZyxnTK0doDBHoJFM6erD1W9kFJwnFNC8HHcMLbB6NIa9LO5EP+obavAheE4HIvCvkpTKk/WUaqupY4ee6cAkSKrqjzOuzTkIkA1HRIw3iFaUHRi9K4lkRoRhEN2jjuKzpkM7cenpWVChnOFKuK1h/L08J0ngU+I11GMWUeu8pAi5eY/d7rYlahT/scEklbsf1JJNSmx3lv1dLyk1usMBqZsFpesEoFhhqcov1aEgJKmrktqQi8KT9Im0UYDMAeBC1tuLFVR/SNs/mcMsQBsV/WCEoTK2GAvvdDPHI6MfGuIVMcR4XvtRY/AHDJAyDTijBYrCZZU8oDYGATOCTE03BOHawJjDpoOERZuUyUORgJ0/Wa0qyGU2ikVU1rH/ckB9bapmT1TUeq8Xpa0L9evW/zFHZDcil5YGtuv5sYV64mSX6tPyPWMxqS5AFlzAIkU37USZJkWsYsEBi54ECwUiy1EA2XbRY7F0zH6NScNlkayYPVJ2J27QGaIOWRk7JrTB5Qs9UdvzpLwPCSbIBroBtEwAa4OVGc/O7rdjiENKAKfnRDRhcXJNs2JmJQG5FoaTKZZFlgIBOMaHFhtYlYn2lTaWIa4dijUdDSvnhwdBMBJyCEUqheAIWWcG25xh85tkAQMSijd4dpw4uMsknO8EPAZTWVZWJiMd78brAiVjyydboMaZxmaTLi1pLgWgcqI00LDGy2O4GvKV309nG9WGNXaWVp0ZY9DeCx72yMgraSTZ2M2hKOTpJUerSXPSi2a0QBIeQr47ZCt4yy/cxBsnUFQJywII/LwxK3k0BJkn8PU2ZEFrTAAx2NL7HGd1ttxEzDmRbd3znzoHS4x2RygYeYKnh5I3wXpkWM1ulXfk2LqBioQI2xAJ2yMwRudhfcvgHgjoR5fGJiZs32ipHWZYpZWvKAGAUyknnvINOG53Mwjy24EJAQh1w53RWEZXw/Zz7iJIp0eIiOfwY5WgbK/AOYRCvGtLT06KZSKSEa7TP6FoELdVE1TDUYQH/v8LkVWXAcfJxpYxtRiDdYkBJWKWiR90MtHs6ibUsmDdqsaRX5dEoTY8pq6Ms2iSdQBDJAKyJclWc0PYpAZrM0cy7xvQoWTcPybe78yMJHHcfQzt3XsslZ+F02Mg+DABQDp4CbeUbx0T71ThF+CM7Sfw5MxkxtJSdj4xOxvjQIoC0YaO5h6xS4w2382C4MtDzSjTOt5i+bWa0l9vAMk6ykEwwtMUOHlMCtoMjvR40IBwNyeTAM9hz00nOLkUswTE1oMnWs07WPn7dzmSx3GZkWnOaNBmx04+Wgpm2A1pJWbZbX8sDnhRTm9YwtCyj4OCAZojUnjY7ZYtGksI65MmwZ2xHg4igqgIvSMyDU9j4SEhpmTsRYgTaUBsVrbSas7IA6hu5DedoRphWar+VQWUsSpxypQNM7MizbNRiQrO02t9soWl1B0zJNrO8L6b1YeCIC5IimTZgR8oU+iLI5AS7RRqWBRgPsExPjBKKlbZTIG89lhtCpPl7XCk3cGNUmwtM7oa1ffGQ7yur3jjK7ZjU88dMTn0wWsdWD28eFBFD4r2RFkCvsYjJt2yELHEmUSsAFxmqlnhrbbTqnqLCiCNvQmAnVqYlHLnDuyBG1LV6xeJMlyeF0s4XgZNPKsZKBN5gsGt1c0RMn8zSS7wk4/DWAWFQ7ePRjNRTLAzftnSWk1l8RG4+QCLQj0kBEa8HA+ccM3OAl5Rqkv4ayBw15AItBUOcMlk+TuYrBhTvyYz/jdn7wR51bHojQxH+EYyl1n4oEzUcO/tGwR79BHEyDb5NBWr+mtsf7hdv/8/vcubtuc9PuWTsPLB6igTtQzBNsO764kAu45nSK5Sj+3GuP6P2IaM/U2l+24WyFG2ItAWttVO73O+7Yle91O0990eCwHl4mLbD/p59zp3/5ajedPSl0KdKk4XeC4AQ7lhdIQhqti0DRATu/333tkbkxMWuzxopYjHV9pi29hsciGZMkaml5EsshcDf2xP0vf86d/vfjwGXkC8d9BXkAIxxzmFD2iIOTd4Fxqw6TtkgPEpqWd6ABWlF7AAGuDCAmibV1fIHhELgPAnAx02YJUse9tzwdyAx8/jU1OeQy29utcEqQSJ1zryHAlbqPAHZM2+QHoMUBJLo7TNsqmjkE7vaAe+ZU4hQJ3Phzn2nR2M6/G1uxY4G1FATJd/PMg4/ANSZEDLhi2bFRLRU6S9JW0bmwUbT1a9ledUpw72LWuL92qHE3gG+QCkHjEuDW2S+oBBiYiJX74TIumT8C0jKPstLj78+95iiXERGsheYz0+Zbw8+t0kSRPVCgLS6MnUWfvmIAfmbcqw6BuwFuHQcuZzRddjk+gR5jWj03wsVE5b0J9LGdArh6GZezcaMAPDNqcgOmh1i8seVBdAoiN+SoUIc5BO4mmA33RuBeo7IKxt438T40EWvIA2Ns65gT/crkCcUc07iUcSVwx8O7jiujx4RWT1dgz6ZCM9igcX/N7TztMB22LoI1cKuuZHMn40gpLoDXWFxIDcd12gmwoSGa7Py51xyb9NfHI413GTCSdnw9ERyR0/un05Ql3LywRJ9XRkM/P152JAH3heuO29/4+2bgnvrla5wLeVxRy5HHQuWjENOOTMK0NIi4MWp4W9F3GaQCB67MHsQKLBTes7vUBunMQ3vHadMxSg4GvXsRvhcbGfcQuOt6YAZumJyhCfpaoMVkFtuoQM9rm+E19Z7cnPk3ALiV4eCsnjKh6NhK1f1EBkDAmx6fvPsQuOvitdxXgBvSYRJUePLMJeGaK2I5IjP8kMhagAdIa5mW78696li5fZWUVepA4MVVmTZLi+pBoxVi5NyDxSHjborcANxfmidnBLhoPqGZMr0abbw0AE8Ij0fa/AcqCfkzGL5TzYzPwB2bSeIwMF7lxfXqaoCvVVxx08cipMOOHEqFtfEbgXttzCpkxh2aiM2vHNluwyf3OLKiOYwBXHLSZwKuqMlU2obYhnQMZgGgxybAs9NNbLHOR0IXgIduJeAeaty1cev2v/x5zrhxQPPsgmjStD8s/H297IG9YVYCV8uDQoxkQcyffdV5BKbjB3WsxpYo84Bmp8ZELK3E1SGa17oX7ryrfnWzydlcDjmBU6bXx8L6d9KZB30KgVGB1chbWD4L3LCz4/a/+N/dqf9wQ5QKa+9a6JwHkV4NU16S3Y0a8GAaMUwVuCZT8swAZNnsp3lCxewUwdj8hhjeo8THqbw4gTsw7q9uJBX2P/NBt//Hdzvnd8TIGlkUGG2MyJGf2FhlzMerBozBKDeWzSmvYvATs3H5fL9w04nvuP2v/qFzB7KemYd4u2BmbAkYnoBEGw1wU5JK8NO4ziXgdlbESKfXYloCbLyF3GbajF713i0A99ydP+v2Pv0O5xdHe6dVJjvSyJEmisBJNTMm52WHKKM+06S7dggyixaF3yR8s6+kCPBmgBR2nyOXdNogB8TGxpWLwIk9ObbY5lRAlgWwgWXtiZ4/+6rz4bkKVe3wF+vMA2ScWtKWjISFuRVmyHYaybQZKNsA7kfe4Pbv+RXnFkcLVzFi6hQSxUhisaI16UhDM3Y2rdKbdGDtzxw0xqwbCSTbjh7ZBByts/0+NgVMxKztU+Raf/aV5xtTMdn5uBrGVEFrIrYFeWB++G5+71wddtV7NpIK5wJw35mAK8v3DEZMA58nG2nRT1yMQBsHqSCxOPTIZKfBnErLcuCpw5hDA0bqaRv73xRiBPhauGD3oolYm2kLb2Hgoh2kwjtaTKM+Kd+fiMUBHWDa7DlzrcLVmwN3LwGXj//IwBrn05rhr2r9qi7QbmM0mPF3+S8l6iEQgN/1o4hk2SAXmAhCS/v2xgC52qo0s3g2IQ2oaTURAMaNg1ZDEjr+xy5xK/dZIR7+nuhF677S1awDF9sB7t3vdG5nlgrFl9WuYXnuQf5ZhypsF8p69SMo48Dg77EkSA4F8f9nabaSQ5Ybx9tGEbhZygsxLRkTFuoXTgBXG0WHGkvTJb3aK5hRo03ytOYZXgBUs8a9es4qvEB57+gvzn3oDW7v0xS4IzWnKGwnPrRCaJa1pX8UGIjtKr9C0LJBRPcLSYePouJba8qLRqSLiL6pPbimRWIK4Ccv46LzglURV2wfAS7WtKU/JhOSgbS+hlhoWDaa7Etqnm0LALU14L7LuZ35bAbLIanhJSAIyw0fgTrCZhq4kTmlHTDo9WmSqG9Ivo20zXiWkofSmQ09mw/0s3aRM8+tkTkBV4NWV/J0BrZ4HfZGrYdEOqkl2hGo5rLGq+/YjHE/8ga3d/e7yuRMM7UuYuZ6UYQy9gCuac1zvBh7WkzbYPSq6dipjkUi9E6DDG1GB093okjxWS/OcEPhHWMny5m0uFDmrVpPE8Dmpb2zrzwe7s8J8OLZTLwAMOa/q3pK5Mn8d7HB/GuN8L2g1rd0KkzONgRukAoIuDKKWBMxzD5kBFJN81geFIXakvJCMgR8kagMSwyoA3o9AVd5bT/Er6tpS1daEzHm0DJn7mepcLzkcfGBxRZoeceK90jW0TMY8DmmTigjMqX+544776o73JF/tInG/VdR44Y8bp6Pyn41Io2haQNwm3laBCokQyR4CJuRd8txi5UFDVnB0D1amogJSZlgRtN8fHD4Q4NpG4sLBULhGXihpwAXAg/qWq6rasPHmTY0rCUNwt+VHha3bB243NDJ8NDvOkxWl2/HQaHfg0Ar5Yd1mLU8twAAiICCk+34Mm6RI+UBtM0GaAcWFyo+xLluJAL7s69IUmHVCvho6UQufdCqrSGmR9qGK4M7/8diS8Cd87ghHYZDIyO2sp9JOxVTVi1Q2E6biRpuhwK7B4ydKWPAG8vTctaMmjL+DoIWEh1dc7E+jRvsGRWWsJ0ixvQLf+YVxye9ImaHbl4sI/aWQaaMQ1oOVG4yrWaZ2Bu5fy3uOTvv6tu3IBVmjXuEgSWHXrL4l3CJQZG7FM0vWUKEdzXiI0X0KMqNkIUI18X266W8eqfLNORBdMrBxQW9/y05CsGOP/OKC+qP2GPqoKHywrU0LdI/NijCWEvA+53tAPeeOR12lEoXcEJ5Z+8ca9s4KKJTgu8tIOcmYwPly0j2YF15kDSz/owtGUcdQUsE8Uke6HYjohqzHwCuwbbprYoBqb6BFpWrYsZkpxo+BwMSP9LginMVtsG4u/e8y/mdo8kxrLZhRwunby9RPW/HCQsJH6nzGHXSjwQFYe4MdvV+zszxMrmZjLRt/tMcbZpRsO7EXUEe1JVXrmmzr4L5hJ6ItTIqFbjaY9TDY/+6wCtQDl8gJ4CPf2D3hzkorBBS+5zEe7fCuD/ndu95p/M7x0S9MAkjFpNNS7d4zJPdzt9/bu3T7KOwLh2Twf6f/r47+F/3haL4pKdY/MrprCpFqGSa3M6jv98decpzNDbRGJEFgtAav3DLb3/d7f3R7zq3v8+iKm3EWPUb719AZ1oNaxaoZ2UbXggmYooI63v8mZtnqWCAkcyelUhuMi0qlgGgbzgLazNcgNiGVJiB++6kcQVmgvUbNRkH++7YpVe48696q3MLq5JKPFP8eOZDv+B2P/HuWiuBpJp1ntbBgTv67Be7C69/i3M7qKa2/e75r/tf+oI7+bYbnIM7IKwNBCgSVPwwnGgnVuWusZVGbXMjEvgzN18IAjzXHqsxLZcG+Ulzco+ZEoKWh7bmh/22xrgWcO0JaiCKg3139NIr3PFNgHvnL7jdT94RMiT1H9J98XcsVG8FuJ93J992o3Nye3oam6YmDY0BTDs3NLCttB+aTFbQVvLV/VdFTnOMJsCt+kM1qK17uW8v2qtweQigHqahEL0zh9RlYMnzrn73hlkFi3E7Kbm57csDd/TSl2wZuEqjJq0IjrNaLt2xZ7/YXXD9bRsw7ufdyV+8MTJu2eWbVYsBPBQVEgCqRGg7fdXUekVMbEXRGj3PgCDjqu81IG+RjYvyIDhiU+y3S//aEwWiBefNktfM6bCf6MdE44qzd/6c25ulwlxkk/91qvZL17YOXA3aktaksixT0/JgY+Dufenz7tTMuEQqzJo2t4RzC2VCDcxqlzHQsu/NjdieXBNwVoFbG1YAaIh8rImTrl0RtPFd8pwyoIdpYXM6V+H8DYF77s7EuAW4/bLG8g2xgz139LJZKrxlfY175791u5+4vTqOsJ0KStSpZscJGndzxp13+YZV2qGUGp4PBWnQ+E6IzbJ56UFKBPAeUhdTgFuS7ubhutb+MKJTVi1NHP4ehJvcNH/KkhLjwm0HuDNwZo3ZTmGpAvCDvenopVf441dvCbggBFcCSY5MkbwVxv2CO/WLN6ZjRkcKgYxJPNS0gnxK20HBzFSSOlrrV/FbF9YK47ZOzGvSONq5gNhyYP9aaKBhGPSpoa1JhdtxVoHurxNGDyYJk2tz7OsAAB/vSURBVLOXuO0CN/afARZOYn18/49sxrh7X4rAnaXCqlvIWfYgTci4IpMMamQOGDABdkQFXH6vP3PTQ8J/K+8ugM3/oTUte6dmjPhIAMbxw/FQnWjacBiAO0/ONtW4beDmEKc02ZaAe+4TdzifsgqqOi9EgTpnrsCYgXvgjv7I5RtJhQxcfSCI1NvAoUJjVpMHHKMD2YPUYVjuGYBL8ixjZ4jFnQsFq+ZMEzeueE1TWiQJIq4pTfWzVNgUuG+Mk7NQq1AdlEwyZ7fzcCKxJeDufuIONy129A5qsxY5te5BAy4GLZNpiWFZDUkGsrqwSJDQ8Dj2CBeSbWuUVlp/ttbpxLhwwhXuIIdDhJeinQtISAPaR3uKoDzQK0nqPIfFgwFcvn08GszQfvPkbAtSYWZc7jjJbnq0+KpjAO4sFd68QTrsCyEdNp09neBmT5BUc3A9bVwJJUTIC2YGACtIkL+3gjkBdyTdRQYxOT37Liz1tMZEJ1xmMnRhWRIfa5gqr5j/ujXgzlIhTc5KDUB+U6PgYzlr3J/eWOMOAldvbJyzChsCN0iFtybgijwuIrIwbO0KrwhbMidQErTnkOnvWjZxh/ZnbnooOLbK8gyZ8mrk7EgDV9K0XAixmWSEU92efv6179pQ477R7d1N0lEJryXlxZxRhLitAfc9fOVMTcZQfncG0NIdffbl7sIb1mfcCNybuufjlqE0vufMCEVEqQqD7jaihHFAVEBe+NM3PZT7AAvd6XjJ1Jj2woIV4kAtLayN0BOx5jljs8bdMnCzCIOaVkaRWeNeNmcVbtsgj/smFxk3Lfm2zqbN6IjyLWUVtgxc5TTVc+OhlpKokFPpjY2McMojUZSv72CA52QWoo8ALvKKGi5tabBd0DIBb0mLLQF3lzJuBgViWhHi5lqFY5sC94MUuEb0YrGWSJeQDtsicK1PmI7kaMsYEaxIgDL7YdByojIiTWLfClzzXIFYexAKpUyPLNICa9NWo8XWaAXaYhTR2ZBVeKc78vQXGDWxCn3qF2c/9PNu9573kHQU0LQgdIdfHextEbg0q5GbifOgpRNbA+7N9HxcMn5pKmIc86kKX6BE6KS8yNhq6du+NwIXApJQPllNYxNGqjkJLAZPdIT7+bEexmFq5wee5fwjH08OZ7bCTz2SiKJ3ef8fuYNvfCWFwLHK+zxgoTrs2T/ljr/830SpACcdDedZLNzZD93mzt39PlEdJvpqRYEHB7iswaY8KExGL+8WzOBa7snn3WDkYf19c/70jQ9TJs8aL8CgtQQsdJ+tS1AY5Cmv6Opy/1WjdmC+YVq6sAuBnQkb+m9W/nPy3zHOh0XSR0wapsktHn6xWzz2B5PBUR/xlp/c14Nv/E+3/NZfiAHtMG0miwLcf7d2OmyenJ18682yHjcCqdQd0H4hYjDkgULViDwgTtuM0s5h4M5LrIVarQHBQr28r/wHuF+xSAVFeS0I0ZwOeEhlK4MwgtR2FNk4pUNJupqW31suD1tn5AilvliGp3aZdz6UMuU2KGoT03VbAu6pt97sptOnnMulIDMXhNEfmYjNrZJVgQZexNYkKAnNRRcWzmOqmDJu2GqjcpmlIVX/GFVEbKwa8kOsL/OcdQvwbEeGNlBse1sbccdCwG3v5I0mJO+WABU/g3DWnp3nMYISgbRtTseFydlmjHvqLTe7aS4kX+Ro58O2myI/ZX/LH7g0iBaZK8wkCyBbrfE1SYZLAdyyKmbStAWKKHrCbU3gSS1Iwm+hQQEMaDgRtoutbNCGx4+cLsNHrOSRi0Pn9nQZNQ0kG8d+2aSbyEGA9F5JBFsE7vLM6Tj0wymvyLQQ3K0QX8IikITMYREG+OnvgXEZ05bWIMq3j/WpTGaFCg7arPO4g7ZFeQQfB20FFAItZkedp+2UNBZ/bLN5LcgxnE+xEWpfo7yQ3r8/55G3wbivcMszJ/mh2tLZGEJr7UHdrNifTEWUA8IJg9o/LkrWCvvTN/4tHuFb+tDwJh5+EXA7tQeQxfSg4vNX03UtUORPcaDySKPgw1xybEUVYTtuWIMIGNMMgnYOyftzHvlFG0uFk295RZQKQ5qWfCTRlGW5Q9LJUZTsEEF6lC5wD1IhAreGUmDgTUsTxWDzAe3sps0mhTXDuWf2RGLdc7zyE2Nbx5jW3Gbf1X2tXcIGAAJwZ8Z902ZZhRWBq+RBq28getfLB2RTmtNoTkrAfXBWxDTLRpiBjX9wCZgP2Nhp19rbY6cNYMBdqsbEwRogoemVUw4yGYvO5YeGNJuBe+nl7sIbtw1c5KTcfpHpLEnIJ2M4cqH79fNaW4n8qRuyVLBZi0646MCYX8UJHQOdRYPY1X0MSPnqmK5p3FvCCARu47yEpr4jjhFFespzG4PYqz0IjRxZrROyaX7trHEvvdw9ZKvARRmAdfO087hlIxGjhgpndu4UlinWCefpUf7UDQ8Hw6+32kTT1Y41WZrkgWvTpcbphIrQcMurka6Vnj7OtDGixfvbkz09sLgQSAMtRxvtbBS4Y5ovtHcrwL3XBY0753HpsRcFEegAv4GJWJJ1Cp+43JWhOyaR+1EPALc/O69s1piIJX1DNWLpCA4zbLUrhwndeStMcaeK9wk2E5OnAiZJAErTin6mgWX61wzvQr4U3bfaEnO5LdZGuWl/PtfhhZsx7hcTcOmBIAC0tfed3djFLiPRmzt3G1MKk9MgcEd1aUp5FbShIzQbbFRGx2LbwRAPswdtXcXDToNVBPhVuGrJAwIKrWn7bJuLnIJ5Z+BetiFwv3SvO3kbyirIxQUEWDGOsW98S1fTmTm4cQTHhBHezKTCUPZglGUB5ff27TfrIpA8qMbralriFONMa7ElYfciLwZmySZwkbYUAyvD7IMGXJny6kc4Kn/gbmHm3Qg/0XZas9p2qcCNoCJ6A7GsxZYogzBSMENYJtCI8ZGQrD5Vz7g8MPeHgfsMI8X+lz9iTZt/S+ZncpZtHB00lt1QOVWk97cB3CIV8p4zuRo2NvunCwt1REc20/Lns3qTKteSmTngE3DlZAwclQ71YZoACRT0vU47gK1pG2F7marDMjHmdhjfHGPNbNQf11qKaCwO0NGJF2CWhsbO1VjxXZbEEoXkz7ncPeTmDbbuBOC+Mi1AiOyBOd5AvxLD1v8cm8TJoaPRsHUclz91wyPA19NX1LTp7XqyMhY+zexB03gLt/P3nuUWj3qiqsfVbNrKO1K1icJY7yw0cr/Z3ngNGlTK3mzQtAhOD8mctnRHvv8fuvN+9PK1tw7tAeAW3+8dElO8mcum0uyhVOBIsQ0niowxf+r6R5Bxrg9KGx7SL+SA6lpauL0dpz/YKALQVrliHqocP15y/rXvcEef8eMEuNZo///6+zknip1tpMczcB8gjFvm1D3QBS9EgEUTTD4PiVegKjIRyTAJhM8czM8gwK1hkdODMRlT4UHOAC2D5t9bjcfF19Qxwgx0seOOX/ef3NGnP39kjA6vARYowD09H3qX9G1vAl1ChwRuf4IZNVej9LExh4mvjRGcABeB1gKenIiN3is7ZkzEWjpwbnzu3CFwN3bGCtwzjT2FGJDG5Nb8nkQsfB2v16WdK6qEOJU/df338DlL+cmQB0ysjeZpqdbtZg6KzMqarzY8d2feObBwx69/xyHjbgDfCNxX15WzFuMJQuGXdspRy8fJwcQut589kF+HahYKcMt9kPHQ/rCkVZjhOnvEkr7hE5X0gEaICsAtuZKUZzwE7gaQjbcG4N726phVYJkYnBExT3TshPiYo1XPjCnDwkpC45beYUkZgNsG7fyEWgSeZ3XQak1RbyWZBzRtQTrZanMI3O0CNwIrwUjOVxBJjeZ4O9+DMCN8axK3cP5klgoDTFsEsjRZR5fm7e9aFyUvszw2r6aEIxNFwcchcB8M4Or9dDwnzjdSDkymmh/1E7KTqoaQ4VBEWHPN/uR1WeOi8BAuzJE6PXcke0BmnKnaB8sDOzyE64s2AitOM3Cvm9Nhh1mFdRFcpEKpDuMTsUi/YvKd5V5Dk4ZLzOq+fvbBXowqkX/yJ697JCBClKcFIOukTnKJGvWkYuSBe+MbQWndfO9iBu7bD4G7Lmqpxj192ihr7JcX2vn7+cSLxlctgSwpMlQhkhBX+hsGLqmuMjVtL9/XqqfV0qJoK5pBiAlxWZqYPPYQuBtANt4aGfc1sB63eeAgmTixRoTBG015oWiL7tWgDXdqxm1sIS/UiXK86+ZpReojhRnItLRO9hC4WwDuH8asQpYKhFBUuktpPYyBsXMVNGj1uXQzYOf98hK48b0EuPZO3Mh86V+Lac2Om/fy4vFinIHdrmFydigVNkHv3hclcOVqGAFYayKW/ja+L1Bo6QCwsXWD3F8O3NIAROP9ukxW6Kws2ikCL4YZAG1oXlqAeMbzNhm7v9H3BuC+ec7jzmWNqxe8yPmKwnY4WD/pXJH2yj+GSrgBTcuW/CvjysM6UFmjLQ/Ce9MXCWHKC6bLonOklEVKIIxuZ5lv3UmMewjcdb1vBu6JN7/aOQjcNN4dps27eHNMZYeENOTFKhMxtO3fn7z2UbF2wUpvNEBX1IN5jb24QCdh8TnDoI2zVb9wFwSpcAjczYD7mnIgSJWE/ZRVwGRvi7qBKRu0AgcN6RmBW3K1eMWEG0auIxuyIkposB+j5gXjQf3W2bJop3ES5uHR3h37x1e6nSc9DZyYWFsMI4BigtbQo0hDrjdf0LlPvLI4cvl9inrm81GbV3inX7j9//1Vd/Y33++m3V3yMMS0+rm5UgtiwyLBzGOQ6FT2IJlE6u48OYvAxVvBe3WZ4ECN0JEeS5cjkcaZFgt/ckynFdIMbVXb2dDUJaQYgOjaZ5UyPvAOfUhfncwa381lDjCSsmShdhC0LaYtDcA2w6fao5SX4SxpTBLjVhasHlQYLzelLAdGXYruyUrHSJUkULMshZWnVYRinPAnAbv2hk8UbdBhHbbWz85Qm8RCrmIQpd0YGOV7UPQiX0EKl4/pUnMi1tKzaexKmGfjI9+7yvjb8oAHRm5L/8C1fycMNWvzgKfKWR4AvIBeAnprGRcydWlw9JcsQWqvOCAAw/L+dfZClft72Q3ECLmKDYCuGYmSqXofCmGDJPaIhed3nCq2obC2crBGiI9OKckKOTtxIIIALC2a516QI/bpe1IxeQFuk+IZ2o3UyUCVVxMU7WqjYSMn8Ofrc8ubmqwYuKG3ufuDY4NybYX8poE2ugwmwfTLRjpKvXtkN25+S2FDnTPXJJADcRFJNfUzuoVcO23SoqLbTdCGHsOT0ZPzBMYtT+zWD4A0Wbm5X0wcL0XhV3upmcxuhbOWntUTxTqQPZbtMVFiI9W0DIyATJzHLhFEaVZiE/Jg9n0OOjfp2qUCipFATx6UXSfCASm0KQYEPNdg2kju1KnyL4gNI3DbIZoc1oAFdy97UHWIBC3SZMjAeBCZRiRM25cGIJxB8LbbV8ZuKC3Ebcfw0vrMKGHbsQOpcd/GisDB+LZ2+7YcepoZE+3kbDOtiqyl/7xt/oFrMuMaHpVutLeQG3oujWr3fFrGJo0Dz1i4lNKlhkXNeiOatqdnRdilrNLdxo21cHhEAqxyNPb8GqWKmjOjnLBLKnipcon0A4YHfn/zIG1jPMpjIRl25YFm2hTNBJE7/8A1F4Mu0A5IQU4eMTMNt3rNPLCnji4uoHc1WI9IgzHACjYKN422TTNZ6/zWGu/sKBW/I0b/YYek8qACo00YuHjfdnjZEnQKOLtGyLISfQygWcUy7D50OqchXwFwA0OFlTyac1Ne29XDuUkjmtZyDgO0gnrW0sPBwAi0CaCNMBj+1DrzoTJibmlRS6FH6SMh0NnYSNZJWOWHAflCSkohm7dCvLkiJhwFMKpdq4JLE3larvv8aMv0XgFcoi9N3TaWdomdGGWzkYJlwnjJ8Guddg21rGA9hShp1JEMALGlpDOlaS0mlCmvEdnTOenSiJDFX/KsnaVIUfvqPsfqazjXrKKKkIfx7zrKS7MFvihZBSoVClgNBoThgQ9q1rRmPa0AhQYf8jwNWjOP3FvNCr1HTsWYLDElCPOwQF4OrL4vPBDmaVV/p/q1PLptCjGtHPD4s8nkHabNk2x+f5vh87W4ymtuSv7yH0+X1qBpSB4gYPOhiPMd/oFrHl0vWW3XQnKI2jH+Lsq2yhNDu8eq7PHgFPzVsGzWRZRLWlGAi63ctxrq6945khi326bat+I3xCog4oJBs0CbpKwUoYKQrrfbrH0kUsEAbx+ahAlbpTsZBqwon3CZ+8aBS8IvoujxlNlIyqt2ooLdCpc6TGvQosUP9LyR7MEoy7ZBy9o4mO6i0qrYBQJvhGkHGDqFaO0U6Pn8d7V9KLdv1x4Qh4yRv6TMjHrt1H9JwJVxm2wLBpPuww/3rjbRWSmcEYkC70NhhWkmJA2yyxuhqjCCpemlfBGSKXs/BG26l7e7hFXmzEN9Q9KuHeJrFBqRFlj64AnqGhOxVo2FOPC5sO4sFXDFTnsJN8X69P8MYIwUvMBGE6OX2DdUZKO1aRl4EAkUKAD4WqG2OlSRFJxpUXi0IovczTwAPMFG8Q5iJ9Y/g3zUSeDyvei+egAdj84StMiZAVEwsZoB0d506R+4+jHhNjWGAyFqlcWF+I5sWrAOTVi1yM1STs9BW7A8NBFbLRLQd0cYGA5TjKYHJ7bPp7QXHdoUDpkQBSmv3kocfzfW3C2nJJqRj33oS0yGln/1PzNLmSWmtKsEP9mrY5OovaztXDHKtaJrAO5KoE0fr4olZauBYizMa4/nHYdhVqRTwjX6OPtsuB7T9pwWOFkBfH6HtbgA5AH/1YA2Je/v34s0ewMUzKnKvRGz4X87KS9hG9i+YizM5vYnFeq7/YnEuIzyjeR69bh89Xi9KvQ6jWRwYLAd4hArVO2G5Mto+G2cd9UDbSt7oPoL5AGyidLrnAVjnwf6BhcXkHTRNsfFMgAHUB6OMm0FZjUDllYAuI0kN9NDI9mD+NLciLi1jRReIBC0PHY4hIa2ZV+p+B5e7QM6jMVUNLC19oCRgAJd/Kt50Am7WbeD6gI1uAz0oI2t/rfunQtmwuG2vGetZVyTafPOX4O02gxdHaACN4dHFiq0J8cHj6SV8ApOWEk2NFQ1DDvSPw50oy6Cecfgd3vRztFWlRt/B2A8xbTZkJIJQS2tKrkUoAPSpUaw/kdCYqTkJMJY2nDKONaWdLFTXuxxQ5q2UevLQnW1iwYu8vgm06bOKQ8ywhnybK4j9P63XmV/eaZRFyFOHIyjIcGxWlqIRBE3rZCnpWGgAKNhu+gwDWnAUaIK3MOjW5NYk2mj45knJrIP9RrSQmLJkEH1cEN6Q9t5/YmrHwu+uiPYsgkMrEEboSK1jmuXOKDohHNDwCsmGK+LoObJA6sCjXo+b0cBbm8ZV9iO2iW+UzKm1nTr1tKaac6OHi5jAYGW7Fz+xp2q2pHay1pcWD0K5LEDwK0PC40wQWtV9MuVFOQ5PARV+wCQ9lJe4eYx6aJZdmQSRtpKhXMALP+bFX5nPZt7phzaYrz0ewpaBQqTLfO4rTYWNYokDLDnr1lLC48oWC+K0MDsT1z1WOFXtdHRUKOgiIPIoz7SR5hRIOP1QmgIg6PtE4zZ+kq3ofmyt+McrdCDpEMZuNU2I1VeiI0szTkie9S9Kl1YzK1OJWqDlvWLhbNGtBRjq0jAZPT4TAHcCrT6XCN7QAaXhnkOQAlcBdry0eJ8XzwkZORbEtlCxooYawgIZ0O6DxveXFxQepO3DYfudkQaZOiMnWiU1m7cFkuPTMSgZpbRBxEWQfSwZscROHQ2Mi6XB/E06YZm7IGicYJNNGxRKoMrdmhw12daXR2FmMwA7cBELKJI1tKO1THTnQv9KKSjSO5bm0C0/MEZlb48yPKI+cNgLTeTiL3oKivEMnDDfeXMA6QbLS8aKQLnTJvDAjVu/O9+agfX0iaF0tPDvS8agvBU5QHcQp6YTh4XhTTtWN9wcXznKKs0dmZtc4NlC49AsJGJWBgg4SiWxlcgrHUvhpSs8tp4pjzbzp+46pKI2fIyYxm3AQoVzpBGJBetVYeL9SwEDpqE5ZOyNYvJAeHRh8qg/KHoGvSkM4O6gzwQLUZpRCBcoM2lT8jHkE+PMyZDY8FqU8K9ot5hlGll9snQtC1p0LBLQbOqW/BBKuy5yR+J/VsNtNqx2qmdzLRUv+dQAyoqRE7SOqwjhb2WdjM/oEKBZ0mDOWkhC2aUVmeZjbYu5WE6a1JoS0r3xWjCscKNqO2N+UUB7np1B2U+wirR1gCt6p98hlkhtu9PXPW4b7tpekRT0zKkNcIF8h7GtMjIIzNsJF0QYPXzYzgxjFqkifH3/pFIOfIV4Cq2Y4wn2iekCTNfb3m6PHcctKSxkSda8kA8H0bVAjwLtLy/MdLSVrD5jviDPMaUveM7/q+vvOSPvVs8BbKgYXTaibJo0GC8ONlDE6yG0Zk3GsU8LO6DZ/U+WWSyVXw5XhEjg0HkFQcFmg+g/sdnKUD1loDTuJgLEx0mGzpdxgSu7EefaSuMUKQyMJBsC4nATX/iT1x5ya9PbvFPOHA1C+Iw3xggAWRFxpss4w5M4rqrRg0mDm1dhuR9Z39ZjAR9aQAijZglF/t3J5irTGKN6KgGo69p4fg39ojRgvaIJp8OLGQCGy9RJ80OAR/Gxt3lT1z5fbdObnqzc24nGs8GYx98yKMQ23aYdorZ3FW2tzOSaR7rn9+NBrWeeaAjEGZaFZTW3tHRtn3tHxofdG/pXyX0FGH4OKI8eLxFRgK2JG9Fq1aUUwDSUWggihwsJ/cv/Hdf/vhnOr/8qHPu4hgf5ek0cjWsYaTc01KUk79LSJiLe2m6gwLeAm1nwNLIdpmWHLNJwVls2tuNG2yEKrySXTqSiebM6/uxw4PsCGcuTjRCI0rHRPZr11PX4VxNHkA93LJLrv6DbMGwMV/5zQO38yL/zZf+gwuPH/nrDzvnf0Ks1zIaV1oDNYTpkrZ2yTgrnzRkz1uvYGbsXIDarvzKIJUhYC0WHFlcwJqe+DYZprYmDu3s1SIb1VosxFsSofzekBalpfZWm6ipetucgGRKztfbfl9OsHHut/z+4qdDS7/78u99qXP+Pc65Yxz0sSNDoE254AACMRELv1tb044zLawuY6Gbgza2Nf8z9ogpLSCWcY1CccaWBBiQjdQ7BIBSWM6/tccDkYVle1lPq+/lZx5YoENLzOJawzGi5VEtLopA4Xf7y+Xy2ks+8bvvCz+duO5Jj5x2z/5X5/xl5WEEwbbXElAVFEiwDyx1lo6tybRVV/FwaUx0FPHMxhs6gC5OxBjghx3SIAEGWgC8BFrYZnBvNUBiP4tljfcqp8g4MBh/nJCAY8C5iARt/dk7/wd+37/w4k996i/Lb7/7su/7p5N3t3vnLmBbnLmO0uHNMF69cN08rel1LCjEMArYoLPSZ8sDFOLn5wNduwJo+8BDfYjRqzoKsom+rxBNC7Qj42bZlkYpJg9J9Oo45CDgaQXb6YMDd+3jPnnPh1iPv37dYy64cPfYrzjnXtY3MtZk6r6B1I5Re4DBSIuByASQIVmFbhQCE2u2CmaE5t460ypjaYdpzrAb4Xc8T8ulU462SkJpQJQQr1ROpwA/v6OpaUHfls5/cLFz/vWP+djH5s9gcjF64p8/8UnLxXJG9FOZZGANbzMhCzWtwWnJgx6TldoKCUo7zJSIlw6fy8u4ZmgMI1KlQR2gxrI29SCyvq4Y07Jnjm6TONpARj0hy1jfeCERkU60YCZlqFuTqdBhrJlRJVlvgSk0hETGYXKMfb/3YOFe8rjfuvvPBKdXi//VlY9/rp+m9zq3eEL4bRO03GOLPQeAZzItrgnlH97oz7Dh+n3oymD2II64XFxQg5mAgR1GsfTAwgkFhXKqBuCH5IHB0uVe5gHtmmgOPBSBgYQhwBVREnhqtqn/2r7zV37vb3/qM/Qe6FLffdkTnz/56e1uchG81OMZmEX6I4xU6TDxdjmwjVpaajz53sJIwp8kI4msBgPQQD1tbAKo9OpJnzSaYwdN48kKH1Bh+x7wFI3JzIEGUxxO2pb26TJqeMzic/7MzLgQ8AJT5B33T37nlZd8/JMfl3axYoH7q5c94TneTb/knH8qWk0bK020JhNrFIH3wowxqNUIMXOg9JsaCSYPkr2xpmfGFO9XA9Rhy1iW2JM+OQbWsynCYyGTCdACeaGYlhCDciBgf72ShhyDE5mKIsz+DOz3Huy4Wx73sbt/DzmzCdz54u++/Ik/sJzcG72bLnfOX0B2Log1/E7Kiw1ae7WmNrKChXYWAg+AgodplO4iRi73V2nQ1qVigIDTMFA0QFsYT7Fley5RSQp981fWHuhJWPwNjZhGuE+AVc0bmoQlO1kH62HQnnaT//WlX77pkt/+9FdwBMKFnOzasLK2OPmCaXKvnpz/Ye/cUcbspm6JhRWZIzbZiavDGQqhIPTmy1bMHnBjDUzGoESAQNDnma37OabmMmmZiCX/1cDlQ29p1M7ignbIzBfRhKqQSIwRd/hdN/nPueX0Tnfs+G/k7MHawM03PvDSv/uofeee57z/Se+mp03O/W3n/E63AJywmQIE8wAGxmKAsXwfN0h5ZW8ixt4PFhd65YUEsCoSaIrSS+jDs3YOvPCuXi0t6xvhD1R0bk2m4a6KyqIqOrIBbh8TmoB94Jz/lp/856Zp+V+Wx93vXPLRT3/bAiv9fVMqoAcEBvYP/NByWlzm3OJZzk1Pds5f7Nx0kXPuCF7qNHbiio6q9yWDKr0IBkXei2sPLI9HW25GmXbFLfmFiRIALBsA+VG6rYEGvrWAn6/8ySxNRCwtnmmtpqVFk8i4lZC8c3uTcw+45fQN5xdfnvzyD5bTkc8e3Xf3XfypT50aAWy+5v8BUrIHNHvQF7oAAAAASUVORK5CYII=\",\n },\n typography: {\n fontFamily: `\"Roboto\", \"Helvetica\", \"Arial\", sans-serif`,\n useNextVariants: true,\n h1: {\n fontSize: 40,\n },\n h4: {\n fontSize: 30,\n fontWeight: 500,\n },\n h6: {\n fontSize: 22,\n },\n body1: {\n fontSize: 18,\n },\n },\n overrides: {\n MuiMenu: {\n list: {\n backgroundColor: \"#27292d\",\n },\n },\n MuiCssBaseline: {\n '@global': {\n\t\t\t\t/*\n scrollbarColor: \"#6b6b6b #2b2b2b\",\n \"&::-webkit-scrollbar, & *::-webkit-scrollbar\": {\n backgroundColor: \"#2b2b2b\",\n },\n \"&::-webkit-scrollbar-thumb, & *::-webkit-scrollbar-thumb\": {\n borderRadius: 8,\n backgroundColor: \"#6b6b6b\",\n minHeight: 24,\n border: \"3px solid #2b2b2b\",\n },\n \"&::-webkit-scrollbar-thumb:focus, & *::-webkit-scrollbar-thumb:focus\": {\n backgroundColor: \"#959595\",\n },\n \"&::-webkit-scrollbar-thumb:active, & *::-webkit-scrollbar-thumb:active\": {\n backgroundColor: \"#959595\",\n },\n \"&::-webkit-scrollbar-thumb:hover, & *::-webkit-scrollbar-thumb:hover\": {\n backgroundColor: \"#959595\",\n },\n \"&::-webkit-scrollbar-corner, & *::-webkit-scrollbar-corner\": {\n backgroundColor: \"#2b2b2b\",\n },\n\t\t\t\t*/\t\n }\n\t\t},\n },\n});\n\nexport default theme;\n","import React, { useState, useEffect } from 'react';\nimport ReactGA from 'react-ga4';\nimport { useTheme } from '@material-ui/core/styles';\nimport {Link} from 'react-router-dom';\nimport { useAlert } from \"react-alert\";\nimport { Search as SearchIcon, CloudQueue as CloudQueueIcon, Code as CodeIcon } from '@material-ui/icons';\n\n//import algoliasearch from 'algoliasearch/lite';\nimport algoliasearch from 'algoliasearch';\nimport { InstantSearch, connectSearchBox, connectHits } from 'react-instantsearch-dom';\nimport { Grid, Paper, TextField, ButtonBase, InputAdornment, Typography, Button, Tooltip} from '@material-ui/core';\nimport aa from 'search-insights'\nconst searchClient = algoliasearch(\"JNSS5CFDZZ\", \"db08e40265e2941b9a7d8f644b6e5240\")\nconst Appsearch = props => {\n\tconst { maxRows, showName, showSuggestion, isMobile, globalUrl, parsedXs, newSelectedApp, setNewSelectedApp, defaultSearch, showSearch, ConfiguredHits, userdata, cy, isCreatorPage, actionImageList, setActionImageList} = props\n\n const isCloud = window.location.host === \"localhost:3002\" || window.location.host === \"shuffler.io\";\n const alert = useAlert();\n\tconst rowHandler = maxRows === undefined || maxRows === null ? 50 : maxRows\n\tconst xs = parsedXs === undefined || parsedXs === null ? 12 : parsedXs\n\tconst theme = useTheme();\n\t//const [apps, setApps] = React.useState([]);\n\t//const [filteredApps, setFilteredApps] = React.useState([]);\n\tconst [formMail, setFormMail] = React.useState(\"\");\n\tconst [message, setMessage] = React.useState(\"\");\n\tconst [formMessage, setFormMessage] = React.useState(\"\");\n\tconst [selectedApp, setSelectedApp] = React.useState({});\n\tconst buttonStyle = {borderRadius: 30, height: 50, width: 220, margin: isMobile ? \"15px auto 15px auto\" : 20, fontSize: 18,}\n\n\tconst innerColor = \"rgba(255,255,255,0.65)\"\n\tconst borderRadius = 3\n\twindow.title = \"Shuffle | Apps | Find and integration any app\"\n\n\tconst setUserSpecialzedApp = (user, data) => {\n\t\t// var data = newfields]\n\t\tconsole.log(\"data value\", data)\n\t\tconst appData = {\"user_id\":user,\"specialized_apps\":[{}]}\n\t\tconsole.log(\"User Check for appdata:\", user)\n\t\tappData[\"specialized_apps\"][0][\"name\"] = data[\"name\"]\n\t\tappData[\"specialized_apps\"][0][\"image\"] = data[\"image_url\"]\n\t\tappData[\"specialized_apps\"][0][\"category\"] = data[\"categories\"].toString()\n\t\tconsole.log(\"AppData:\",appData)\n\t\tconsole.log(\"setActionImageList\",setActionImageList)\n\t\tconsole.log(\"actionImageList\",actionImageList)\n\n\t\tconst finalData = actionImageList.concat(appData[\"specialized_apps\"])\n\t\tappData[\"specialized_apps\"]=finalData\n\t\tfetch(globalUrl + \"/api/v1/users/updateuser\", {\n\t\t method: \"PUT\",\n\t\t headers: {\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\tAccept: \"application/json\",\n\t\t },\n\t\t body: JSON.stringify(appData),\n\t\t credentials: \"include\",\n\t\t})\n\t\t .then((response) => {\n\t\t\tif (response.status !== 200) {\n\t\t\t console.log(\"Status not 200 for set creator :O!\");\n\t\t\t}\n\t\t\talert.success(\"Sucessfully updated specialzed app.\")\n\t\t\treturn response.json();\n\t\t })\n\t\t .then((responseJson) => {\n\t\t\tif (!responseJson.success && responseJson.reason !== undefined) {\n\t\t\t alert.error(\"Failed updating user: \" + responseJson.reason);\n\t\t\t}\n\t\t })\n\t\t .catch((error) => {\n\t\t\tconsole.log(error);\n\t\t });\n\t };\n\tconst submitContact = (email, message) => {\n\t\tconst data = {\n\t\t\t\"firstname\": \"\",\n\t\t\t\"lastname\": \"\",\n\t\t\t\"title\": \"\",\n\t\t\t\"companyname\": \"\",\n\t\t\t\"email\": email,\n\t\t\t\"phone\": \"\",\n\t\t\t\"message\": message,\n\t\t}\n\t\n\t\tconst errorMessage = \"Something went wrong. Please contact frikky@shuffler.io directly.\"\n\n\t\tfetch(globalUrl+\"/api/v1/contact\", {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t},\n\t\t\tbody: JSON.stringify(data),\n\t\t})\n\t\t.then(response => response.json())\n\t\t.then(response => {\n\t\t\tif (response.success === true) {\n\t\t\t\tsetFormMessage(response.reason)\n\t\t\t\t//alert.info(\"Thanks for submitting!\")\n\t\t\t} else {\n\t\t\t\tsetFormMessage(errorMessage)\n\t\t\t}\n\n\t\t\tsetFormMail(\"\")\n\t\t\tsetMessage(\"\")\n })\n\t\t.catch(error => {\n\t\t\tsetFormMessage(errorMessage)\n \tconsole.log(error)\n\t\t});\n\t}\n\n\t// value={currentRefinement}\n\tconst SearchBox = ({currentRefinement, refine, isSearchStalled} ) => {\n\t\tuseEffect(() => {\n\t\t\t//console.log(\"FIRST LOAD ONLY? RUN REFINEMENT: !\", currentRefinement)\n\t\t\tif (defaultSearch !== undefined && defaultSearch !== null) {\n\t\t\t\trefine(defaultSearch)\n\t\t\t}\n\t\t}, [])\n\n\t\treturn (\n\t\t
\n\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t),\n\t\t\t\t\t}}\n\t\t\t\t\tautoComplete='on'\n\t\t\t\t\ttype=\"search\"\n\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\tdefaultValue={defaultSearch}\n\t\t\t\t\tplaceholder={`Find ${defaultSearch} Apps...`}\n\t\t\t\t\tid=\"shuffle_workflow_search_field\"\n\t\t\t\t\tonChange={(event) => {\n\t\t\t\t\t\trefine(event.currentTarget.value)\n\t\t\t\t\t}}\n\t\t\t\t\tlimit={5}\n\t\t\t\t/>\n\t\t\t\t{/*isSearchStalled ? 'My search is stalled' : ''*/}\n\t\t\t\n\t\t)\n\t\t//value={currentRefinement}\n\t}\n\n\tconst Hits = ({ hits }) => {\n\t\tconst [mouseHoverIndex, setMouseHoverIndex] = useState(-1) \n\t\tvar counted = 0\n\n\t\treturn (\n\t\t\t\n\t\t\t\t{hits.map((data, index) => {\n\t\t\t\t\tconst paperStyle = {\n\t\t\t\t\t\tbackgroundColor: index === mouseHoverIndex ? \"rgba(255,255,255,0.8)\" : theme.palette.inputColor,\n\t\t\t\t\t\tcolor: index === mouseHoverIndex ? theme.palette.inputColor : \"rgba(255,255,255,0.8)\", \n\t\t\t\t\t\tborder: newSelectedApp.objectID !== data.objectID ? `1px solid rgba(255,255,255,0.2)` : \"2px solid #f86a3e\", \n\t\t\t\t\t\ttextAlign: \"left\",\n\t\t\t\t\t\tpadding: 10,\n\t\t\t\t\t\tcursor: \"pointer\",\n\t\t\t\t\t\tposition: \"relative\",\n\t\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t\t\twidth: \"100%\", \n\t\t\t\t\t\tminHeight: 37, \n\t\t\t\t\t\tmaxHeight: 52, \n\t\t\t\t\t}\n\t\n\t\t\t\t\tif (counted === 12/xs*rowHandler) {\n\t\t\t\t\t\treturn null\n\t\t\t\t\t}\n\n\t\t\t\t\tcounted += 1\n\t\t\t\t\tvar parsedname = data.name.valueOf()\n\t\t\t\t\t//for (var key = 0; key < data.name.length; key++) {\n\t\t\t\t\t//\tvar character = data.name.charAt(key)\n\t\t\t\t\t//\tif (character === character.toUpperCase()) {\n\t\t\t\t\t//\t\t//console.log(data.name[key], data.name[key+1])\n\t\t\t\t\t//\t\tif (data.name.charAt(key+1) !== undefined && data.name.charAt(key+1) === data.name.charAt(key+1).toUpperCase()) {\n\t\t\t\t\t//\t\t} else {\n\t\t\t\t\t//\t\t\tparsedname += \" \"\n\t\t\t\t\t//\t\t}\n\t\t\t\t\t//\t}\n\n\t\t\t\t\t//\tparsedname += character\n\t\t\t\t\t//}\n\t\t\t\t\t\n\t\t\t\t\tparsedname = (parsedname.charAt(0).toUpperCase()+parsedname.substring(1)).replaceAll(\"_\", \" \")\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\tsetMouseHoverIndex(index)\n\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\tReactGA.event({\n\t\t\t\t\t\t\t\tcategory: \"app_grid_view\",\n\t\t\t\t\t\t\t\taction: `search_bar_click`,\n\t\t\t\t\t\t\t\tlabel: \"\",\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t*/\n\t\t\t\t\t\t}} onMouseOut={() => {\n\t\t\t\t\t\t\tsetMouseHoverIndex(-1)\n\t\t\t\t\t\t}} onClick={() => {\n\t\t\t\t\t\t\tif(isCreatorPage === true){\n\t\t\t\t\t\t\t\tconsole.log(\"data:\",data)\n\t\t\t\t\t\t\t\tconsole.log(\"userdata.id\",userdata.id)\n\t\t\t\t\t\t\t\tconsole.log(\"is creator\", isCreatorPage)\n\t\t\t\t\t\t\t\tif (setNewSelectedApp !== undefined) {\n\t\t\t\t\t\t\t\t\t// setUserSpecialzedApp = data\n\t\t\t\t\t\t\t\t\tsetUserSpecialzedApp(userdata.id, data)\n\t\t\t\t\t\t\t\t\t//setActionImageList(userdata.id, data)\n\t\t\t\t\t\t\t\t}\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (setNewSelectedApp !== undefined) {\n\t\t\t\t\t\t\t\tsetNewSelectedApp(data)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (isCloud) {\n\t\t\t\t\t\t\t\tReactGA.event({\n\t\t\t\t\t\t\t\t\tcategory: \"app_search\",\n\t\t\t\t\t\t\t\t\taction: `app_${parsedname}_${data.id}_personalize_click`,\n\t\t\t\t\t\t\t\t\tlabel: \"\",\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst queryID = \"\"\n\n\t\t\t\t\t\t\tif (queryID !== undefined && queryID !== null) {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\taa('init', {\n\t\t\t\t\t\t\t\t\t\tappId: searchClient.appId,\n\t\t\t\t\t\t\t\t\t\tapiKey: searchClient.transporter.headers[\"x-algolia-api-key\"]\n\t\t\t\t\t\t\t\t\t})\n\n\t\t\t\t\t\t\t\t\tconst timestamp = new Date().getTime()\n\t\t\t\t\t\t\t\t\taa('sendEvents', [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\teventType: 'conversion',\n\t\t\t\t\t\t\t\t\t\t\teventName: 'App Framework Activation',\n\t\t\t\t\t\t\t\t\t\t\tindex: 'appsearch',\n\t\t\t\t\t\t\t\t\t\t\tobjectIDs: [data.objectID],\n\t\t\t\t\t\t\t\t\t\t\ttimestamp: timestamp,\n\t\t\t\t\t\t\t\t\t\t\tqueryID: queryID,\n\t\t\t\t\t\t\t\t\t\t\tuserToken: userdata === undefined || userdata === null || userdata.id === undefined ? \"unauthenticated\" : userdata.id,\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\tconsole.log(\"Failed algolia search update: \", e)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{data.name}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{parsedname}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t)\n\t\t\t\t})}\n\t\t\t
\n\t\t)\n\t}\n\n\tconst InputHits = ConfiguredHits === undefined ? Hits : ConfiguredHits\n\tconst CustomSearchBox = connectSearchBox(SearchBox)\n\tconst CustomHits = connectHits(InputHits)\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\t{/* showSearch === false ? null : \n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t*/}\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t)\n}\n\nexport default Appsearch;\n","import React, {useState, useEffect, useLayoutEffect} from 'react';\n\nimport Draggable from \"react-draggable\";\nimport {\n\t\tPaper\n} from \"@material-ui/core\";\n\nconst PaperComponent = (props) => {\n return (\n \n \n \n )\n}\n\nexport default PaperComponent;\n","import React, { useRef, useState } from \"react\";\nimport { useEffect } from \"react\";\nimport BackupIcon from \"@material-ui/icons/Backup\";\n\nconst dragOverStyle = {\n backgroundColor: \"rgba(0,0,0,0.8)\",\n border: \"5px dashed white\",\n borderRadius: \"8px\",\n width: \"100%\",\n height: \"100%\",\n position: \"absolute\",\n overflow: \"hidden\",\n zIndex: 100,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n};\n\nconst Dropzone = ({ children, style, onDrop }) => {\n const dropzoneRef = useRef(null);\n const [dragging, setDragging] = useState(false);\n\n let dragCounter = 0;\n\n const handleDragOver = (e) => {\n e.preventDefault();\n e.stopPropagation();\n };\n\n const handleDragEnter = (e) => {\n e.preventDefault();\n e.stopPropagation();\n dragCounter++;\n if (e.dataTransfer.items && e.dataTransfer.items.length > 0)\n setDragging(true);\n };\n\n const handleDragLeave = (e) => {\n e.preventDefault();\n e.stopPropagation();\n dragCounter--;\n if (dragCounter === 0) setDragging(false);\n };\n\n const handleDrop = (e) => {\n e.preventDefault();\n e.stopPropagation();\n setDragging(false);\n if (e.dataTransfer.files && e.dataTransfer.files.length > 0) {\n onDrop(e);\n e.dataTransfer.clearData();\n dragCounter = 0;\n }\n };\n\n useEffect(() => {\n if (!dropzoneRef.current) return;\n\n dropzoneRef.current.addEventListener(\"dragover\", handleDragOver);\n dropzoneRef.current.addEventListener(\"dragenter\", handleDragEnter);\n dropzoneRef.current.addEventListener(\"dragleave\", handleDragLeave);\n dropzoneRef.current.addEventListener(\"drop\", handleDrop);\n\n return () => {\n dropzoneRef.current.removeEventListener(\"dragover\", handleDragOver);\n dropzoneRef.current.removeEventListener(\"dragenter\", handleDragEnter);\n dropzoneRef.current.removeEventListener(\"dragleave\", handleDragLeave);\n dropzoneRef.current.removeEventListener(\"drop\", handleDrop);\n };\n }, [dropzoneRef]);\n\n return (\n
\n {dragging && (\n
\n \n
\n )}\n {children}\n
\n );\n};\n\nexport default Dropzone;\n","import React, { useEffect } from \"react\";\n\nimport { useInterval } from \"react-powerhooks\";\n\nimport {\n IconButton,\n Typography,\n Grid,\n Select,\n Paper,\n Divider,\n ButtonBase,\n Button,\n TextField,\n FormControl,\n MenuItem,\n Tooltip,\n FormControlLabel,\n Switch,\n Input,\n Breadcrumbs,\n Chip,\n Dialog,\n DialogTitle,\n DialogActions,\n DialogContent,\n CircularProgress,\n Zoom,\n InputAdornment,\n\tList,\n\tListItem,\n\tListItemAvatar,\n\tListItemText,\n\tAvatar,\n} from \"@material-ui/core\";\n\nimport {\n LockOpen as LockOpenIcon,\n OpenInNew as OpenInNewIcon,\n Apps as AppsIcon,\n Cached as CachedIcon,\n Publish as PublishIcon,\n CloudDownload as CloudDownloadIcon,\n Edit as EditIcon,\n Delete as DeleteIcon,\n\tSearch as SearchIcon,\n\tFolder as FolderIcon,\n\tLibraryBooks as LibraryBooksIcon,\n} from \"@material-ui/icons\";\n\nimport {\n\tForkRight as ForkRightIcon,\n} from '@mui/icons-material';\n\nimport aa from 'search-insights'\nimport { useTheme } from \"@material-ui/core/styles\";\nimport { InstantSearch, Configure, connectSearchBox, connectHits, Index } from 'react-instantsearch-dom';\nimport algoliasearch from 'algoliasearch/lite';\n\nimport YAML from \"yaml\";\nimport { useNavigate, Link, useParams } from \"react-router-dom\";\nimport { useAlert } from \"react-alert\";\nimport Dropzone from \"../components/Dropzone.jsx\";\n\nconst surfaceColor = \"#27292D\";\nconst inputColor = \"#383B40\";\n\nconst chipStyle = {\n backgroundColor: \"#3d3f43\",\n height: 30,\n marginRight: 5,\n paddingLeft: 5,\n paddingRight: 5,\n height: 28,\n cursor: \"pointer\",\n borderColor: \"#3d3f43\",\n color: \"white\",\n};\n\n// Fixes names by making them uppercase and such\n// Used for labels. A lot of places don't use this yet\nexport const FixName = (name) => {\n const newAppname = (\n name.charAt(0).toUpperCase() + name.substring(1)\n ).replaceAll(\"_\", \" \");\n return newAppname;\n};\n\n// Takes input of e.g. $node.data.#.asd and a matching value from a json blob\n// Returns \nexport const FindJsonPath = (path, inputdata) => {\n\tconst splitkey = \".\";\n\tvar parsedValues = [];\n\n\tif (inputdata === undefined || inputdata === null) {\n\t\tconsole.log(\"Input is \", inputdata, \". Returning.\")\n\t\treturn inputdata\n\t}\n\n\tif (typeof inputdata !== \"object\") {\n\t\tconsole.log(\"Input is NOT an object. Returning.\")\n\t\treturn inputdata\n\t}\n\n\tvar keysplit = path.split(splitkey)\n\tif (path.startsWith(\"$\") && keysplit.length > 1) {\n\t\tkeysplit = keysplit.slice(1,)\n\t}\n\n\tif (keysplit.length === 0) {\n\t\tconsole.log(\"Couldn't find key: length is 0 for keysplit.\")\n\t\treturn inputdata\n\t}\n\n\t// FIXME: Check list - always getting FIRST item, not digging too deep.\n\t// If object, send further\n\tif (keysplit[0].includes(\"#\")) {\n\t\tif (Object.prototype.toString.call(inputdata) === '[object Array]') {\n\t\t\tif (inputdata.length === 0) {\n\t\t\t\treturn \"\"\n\t\t\t} else {\n\n\t\t\t\t// Fix the list\n\t\t\t\tif (keysplit.length === 1) {\n\t\t\t\t\treturn inputdata[0] \n\t\t\t\t} else {\n\t\t\t\t\tconst joinedsplit = keysplit.slice(1,).join(\".\")\n\t\t\t\t\treturn FindJsonPath(joinedsplit, inputdata[0]) \n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\treturn \"\" \n\t\t}\n\t}\n\n\tvar found = false\n\tfor (const [key, value] of Object.entries(inputdata)) {\n\t\tconst newkey = key.valueOf().toLowerCase().replaceAll(\" \", \"_\")\n\t\tif (key === keysplit[0] || newkey === keysplit[0]) {\n\t\t\tfound = true \n\n\t\t\t// Return if no more keys\n\t\t\t// Else, dig deeper\n\t\t\tif (keysplit.length === 1) {\n\t\t\t\treturn value\n\t\t\t} else {\n\t\t\t\tconst joinedsplit = keysplit.slice(1,).join(\".\")\n\t\t\t\treturn FindJsonPath(joinedsplit, value) \n\t\t\t}\n\t\t} else {\n\t\t\t//console.log(\"N: \", key)\n\t\t}\n\t}\n\n\treturn inputdata \n}\n\n// Parses JSON data into keys that can be used everywhere :)\n// Reverse of this is FindJsonPath \nexport const GetParsedPaths = (inputdata, basekey) => {\n const splitkey = \".\";\n var parsedValues = [];\n if (inputdata === undefined || inputdata === null) {\n return parsedValues;\n }\n\n if (typeof inputdata !== \"object\") {\n return parsedValues;\n }\n\n for (const [key, value] of Object.entries(inputdata)) {\n // Check if loop or JSON\n const extra = basekey.length > 0 ? splitkey : \"\";\n const basekeyname = `${basekey\n .slice(1, basekey.length)\n .split(\".\")\n .join(splitkey)}${extra}${key}`;\n\n // Handle direct loop!\n if (!isNaN(key) && basekey === \"\") {\n parsedValues.push({\n type: \"object\",\n name: \"Node\",\n autocomplete: `${basekey.replaceAll(\" \", \"_\")}`,\n });\n\n //parsedValues.push({\n // type: \"value\",\n // name: `${basekey} length`,\n // autocomplete: `{{ ${basekey.replaceAll(\" \", \"_\")} | size }}`,\n //});\n\n parsedValues.push({\n type: \"list\",\n name: `${splitkey}list`,\n autocomplete: `${basekey.replaceAll(\" \", \"_\")}.#`,\n });\n const returnValues = GetParsedPaths(value, `${basekey}.#`);\n for (var subkey in returnValues) {\n parsedValues.push(returnValues[subkey]);\n }\n\n return parsedValues;\n }\n\n //console.log(\"KEY: \", key, \"VALUE: \", value, \"BASEKEY: \", basekeyname)\n if (typeof value === \"object\") {\n if (Array.isArray(value)) {\n // Check if each item is object\n parsedValues.push({\n type: \"object\",\n name: basekeyname,\n autocomplete: `${basekey}.${key.replaceAll(\" \", \"_\")}`,\n });\n\n //parsedValues.push({\n // type: \"value\",\n // name: `${basekeyname} length`,\n // autocomplete: \"{{ \"+`${basekey}.${key.replaceAll(\" \", \"_\")} | size }}`,\n //});\n\n parsedValues.push({\n type: \"list\",\n name: `${basekeyname}${splitkey}list`,\n autocomplete: `${basekey}.${key.replaceAll(\" \", \"_\")}.#`,\n });\n\n // Only check the first. This would be probably be dumb otherwise.\n for (var subkey in value) {\n if (typeof value === \"object\") {\n const returnValues = GetParsedPaths(\n value[subkey],\n `${basekey}.${key}.#`\n );\n for (var subkey in returnValues) {\n parsedValues.push(returnValues[subkey]);\n }\n }\n\n // Don't need else as # (all items) is already defined before the loop\n\n break;\n }\n //console.log(key+\" is array\")\n } else {\n parsedValues.push({\n type: \"object\",\n name: basekeyname,\n autocomplete: `${basekey}.${key.replaceAll(\" \", \"_\")}`,\n });\n const returnValues = GetParsedPaths(value, `${basekey}.${key}`);\n for (var subkey in returnValues) {\n parsedValues.push(returnValues[subkey]);\n }\n }\n } else {\n parsedValues.push({\n type: \"value\",\n name: basekeyname,\n autocomplete: `${basekey}.${key.replaceAll(\" \", \"_\")}`,\n value: value,\n });\n }\n }\n\n return parsedValues;\n};\n\nconst searchClient = algoliasearch(\"JNSS5CFDZZ\", \"db08e40265e2941b9a7d8f644b6e5240\")\nconst Apps = (props) => {\n const { globalUrl, isLoggedIn, isLoaded, userdata } = props;\n\n //const [workflows, setWorkflows] = React.useState([]);\n const theme = useTheme();\n const baseRepository = \"https://github.com/frikky/shuffle-apps\";\n const alert = useAlert();\n\tlet navigate = useNavigate();\n\n const [selectedApp, setSelectedApp] = React.useState({});\n const [firstrequest, setFirstrequest] = React.useState(true);\n const [apps, setApps] = React.useState([]);\n const [filteredApps, setFilteredApps] = React.useState([]);\n const [validation, setValidation] = React.useState(false);\n const [isLoading, setIsLoading] = React.useState(true);\n const [appSearchLoading, setAppSearchLoading] = React.useState(false);\n const [selectedAction, setSelectedAction] = React.useState({});\n const [searchBackend, setSearchBackend] = React.useState(false);\n const [searchableApps, setSearchableApps] = React.useState([]);\n\n const [openApi, setOpenApi] = React.useState(\"\");\n const [openApiData, setOpenApiData] = React.useState(\"\");\n const [appValidation, setAppValidation] = React.useState(\"\");\n const [loadAppsModalOpen, setLoadAppsModalOpen] = React.useState(false);\n const [deleteModalOpen, setDeleteModalOpen] = React.useState(false);\n const [openApiModal, setOpenApiModal] = React.useState(false);\n const [openApiModalType, setOpenApiModalType] = React.useState(\"\");\n const [openApiError, setOpenApiError] = React.useState(\"\");\n const [field1, setField1] = React.useState(\"\");\n const [field2, setField2] = React.useState(\"\");\n const [cursearch, setCursearch] = React.useState(\"\");\n const [sharingConfiguration, setSharingConfiguration] = React.useState(\"you\");\n const [downloadBranch, setDownloadBranch] = React.useState(\"master\");\n\n const [isDropzone, setIsDropzone] = React.useState(false);\n const upload = React.useRef(null);\n const [firstLoad, setFirstLoad] = React.useState(true);\n const isCloud =\n window.location.host === \"localhost:3002\" ||\n window.location.host === \"shuffler.io\"\n ? true\n : false;\n const borderRadius = 3;\n const viewWidth = 590;\n\n const { start, stop } = useInterval({\n duration: 5000,\n startImmediate: false,\n callback: () => {\n getApps();\n },\n });\n\n useEffect(() => {\n if (apps.length <= 0 && firstrequest) {\n document.title = \"Shuffle - Apps\";\n\n if (!isLoggedIn && isLoaded) {\n\t\t\t\tif (isCloud) {\n \tnavigate(\"/search?tab=apps\")\n } else {\n \tnavigate(\"/login\")\n\t\t\t\t}\n }\n\n setFirstrequest(false);\n getApps();\n }\n });\n\n function sortByKey(array, key) {\n if (array === undefined || array === null) {\n return array;\n }\n\n return array.sort(function (a, b) {\n var x = a[key];\n var y = b[key];\n\n if (typeof x == \"string\") {\n x = (\"\" + x).toLowerCase();\n }\n if (typeof y == \"string\") {\n y = (\"\" + y).toLowerCase();\n }\n\n return x < y ? 1 : x > y ? -1 : 0;\n });\n }\n\n const appViewStyle = {\n color: \"#ffffff\",\n width: \"100%\",\n display: \"flex\",\n margin: \"auto\",\n };\n\n const paperAppStyle = {\n minHeight: 130,\n maxHeight: 130,\n minWidth: \"100%\",\n maxWidth: 612.5,\n marginBottom: 5,\n borderRadius: 5,\n color: \"white\",\n backgroundColor: surfaceColor,\n cursor: \"pointer\",\n display: \"flex\",\n };\n\n const getApps = () => {\n fetch(globalUrl + \"/api/v1/apps\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n setIsLoading(false);\n if (response.status !== 200) {\n console.log(\"Status not 200 for apps :O!\");\n\n //if (isCloud) {\n // window.location.pathname = \"/search\";\n //}\n }\n\n return response.json();\n })\n .then((responseJson) => {\n //console.log(\"Apps: \", responseJson)\n //responseJson = sortByKey(responseJson, \"large_image\")\n //responseJson = sortByKey(responseJson, \"is_valid\")\n //setFilteredApps(responseJson.filter(app => !internalIds.includes(app.name) && !(!app.activated && app.generated)))\n\n var privateapps = [];\n var valid = [];\n var invalid = [];\n for (var key in responseJson) {\n const app = responseJson[key];\n if (app.is_valid && !(!app.activated && app.generated)) {\n privateapps.push(app);\n } else if (\n app.private_id !== undefined &&\n app.private_id.length > 0\n ) {\n valid.push(app);\n } else {\n invalid.push(app);\n }\n }\n\n //console.log(privateapps)\n //console.log(valid)\n //console.log(invalid)\n //console.log(privateapps)\n //privateapps.reverse()\n privateapps.push(...valid);\n privateapps.push(...invalid);\n\n setApps(privateapps);\n setCursearch(\"\");\n\n //handleSearchChange(event.target.value)\n //setCursearch(event.target.value)\n setFilteredApps(privateapps);\n if (privateapps.length > 0) {\n if (selectedApp.id === undefined || selectedApp.id === null) {\n setSelectedApp(privateapps[0]);\n }\n\n if (\n privateapps[0].actions !== null &&\n privateapps[0].actions.length > 0\n ) {\n setSelectedAction(privateapps[0].actions[0]);\n } else {\n setSelectedAction({});\n }\n }\n\n\t\t\t\t//setTimeout(() => {\n\t\t\t\t//\tsetFirstLoad(false)\n\t\t\t\t//}, 5000)\n })\n .catch((error) => {\n alert.error(error.toString());\n setIsLoading(false);\n });\n };\n\n const downloadApp = (inputdata) => {\n const id = inputdata.id;\n\n alert.info(\"Downloading..\");\n fetch(globalUrl + \"/api/v1/apps/\" + id + \"/config\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n window.location.pathname = \"/apps\";\n }\n\n return response.json();\n })\n .then((responseJson) => {\n if (!responseJson.success) {\n alert.error(\"Failed to download file\");\n } else {\n console.log(responseJson);\n const basedata = atob(responseJson.openapi);\n console.log(\"BASE: \", basedata);\n var inputdata = JSON.parse(basedata);\n console.log(\"POST INPUT: \", inputdata);\n inputdata = JSON.parse(inputdata.body);\n\n const newpaths = {};\n if (inputdata[\"paths\"] !== undefined) {\n Object.keys(inputdata[\"paths\"]).forEach(function (key) {\n newpaths[key.split(\"?\")[0]] = inputdata.paths[key];\n });\n }\n\n inputdata.paths = newpaths;\n console.log(\"INPUT: \", inputdata);\n var name = inputdata.info.title;\n name = name.replace(/ /g, \"_\", -1);\n name = name.toLowerCase();\n\n delete inputdata.id;\n delete inputdata.editing;\n\n const data = YAML.stringify(inputdata);\n var blob = new Blob([data], {\n type: \"application/octet-stream\",\n });\n\n var url = URL.createObjectURL(blob);\n var link = document.createElement(\"a\");\n link.setAttribute(\"href\", url);\n link.setAttribute(\"download\", `${name}.yaml`);\n var event = document.createEvent(\"MouseEvents\");\n event.initMouseEvent(\n \"click\",\n true,\n true,\n window,\n 1,\n 0,\n 0,\n 0,\n 0,\n false,\n false,\n false,\n false,\n 0,\n null\n );\n link.dispatchEvent(event);\n //link.parentNode.removeChild(link)\n }\n })\n .catch((error) => {\n console.log(error);\n alert.error(error.toString());\n });\n };\n\n // dropdown with copy etc I guess\n const AppPaper = (props) => {\n\t\tconst { app } = props\n\t\tconst data = app\n\n if (data.name === \"\" && data.id === \"\") {\n return null;\n }\n\n var boxWidth = \"2px\";\n if (selectedApp.id === data.id) {\n boxWidth = \"4px\";\n }\n\n var boxColor = \"orange\";\n if (data.is_valid) {\n boxColor = \"green\";\n }\n\n if (!data.activated && data.generated) {\n boxColor = \"orange\";\n }\n\n if (data.invalid) {\n boxColor = \"red\";\n }\n\n //
\n //
\n var imageline =\n data.large_image === undefined || data.large_image.length === 0 ? (\n \n ) : (\n {\n //console.log(\"IMG LOADED!: \", event.target)\n }}\n />\n );\n\n var newAppname = data.name;\n if (newAppname === undefined) {\n newAppname = \"Undefined\";\n } else {\n newAppname = newAppname.charAt(0).toUpperCase() + newAppname.substring(1);\n newAppname = newAppname.replaceAll(\"_\", \" \");\n }\n\n var sharing = \"public\";\n if (!data.sharing) {\n sharing = \"private\";\n }\n\n var valid = \"true\";\n if (!data.valid) {\n valid = \"false\";\n }\n\n\t\tif (data.actions === undefined || data.actions === null) {\n\t\t\tdata.actions = []\n\t\t}\n\n if (data === undefined || data.actions === undefined || data.actions === null || data.actions.length === 0) {\n valid = \"false\";\n }\n\n var description = data.description;\n const maxDescLen = 60;\n if (description.length > maxDescLen) {\n description = data.description.slice(0, maxDescLen) + \"...\";\n }\n\n const version = data.app_version;\n return (\n {\n if (selectedApp.id !== data.id) {\n data.name = newAppname;\n setSelectedApp(data);\n\n if (\n data.actions !== undefined &&\n data.actions !== null &&\n data.actions.length > 0\n ) {\n setSelectedAction(data.actions[0]);\n } else {\n setSelectedAction({});\n }\n\n if (data.sharing) {\n setSharingConfiguration(isCloud ? \"public\" : \"everyone\");\n }\n }\n }}\n >\n \n \n {imageline}\n \n \n \n \n \n \n {newAppname}\n \n \n
\n \n \n {description}\n \n \n
\n \n {data.tags === null || data.tags === undefined\n ? null\n : data.tags.map((tag, index) => {\n if (index >= 3) {\n return null;\n }\n\n return (\n {\n //console.log(\"SEARCH: \", event.target.value)\n handleSearchChange(tag);\n setCursearch(tag);\n //id=\"app_search_field\"\n const searchfield =\n document.getElementById(\"app_search_field\");\n if (\n searchfield !== null &&\n searchfield !== undefined\n ) {\n console.log(\"SEARCHFIELD: \", searchfield);\n searchfield.value = tag;\n }\n }}\n />\n );\n })}\n
\n
\n \n \n\n {data.activated &&\n data.private_id !== undefined &&\n data.private_id.length > 0 &&\n data.generated ? (\n {\n downloadApp(data);\n }}\n >\n \n \n \n \n ) : null}\n \n );\n };\n\n const dividerColor = \"rgb(225, 228, 232)\";\n const uploadViewPaperStyle = {\n minWidth: viewWidth,\n maxWidth: viewWidth,\n color: \"white\",\n borderRadius: 5,\n backgroundColor: surfaceColor,\n //display: \"flex\",\n marginBottom: 10,\n overflow: \"hidden\",\n };\n\n const UploadView = () => {\n //var imageline = selectedApp.large_image === undefined || selectedApp.large_image.length === 0 ?\n //\t\"\"\n //\t:\n //\t\"PICTURE\"\n // FIXME - add label to apps, as this might be slow with A LOT of apps\n var newAppname = selectedApp.name;\n if (newAppname !== undefined && newAppname.length > 0) {\n newAppname = newAppname.replaceAll(\"_\", \" \");\n newAppname = newAppname.charAt(0).toUpperCase() + newAppname.substring(1);\n } else {\n newAppname = \"\";\n }\n\n var description = selectedApp.description;\n\n const editUrl = \"/apps/edit/\" + selectedApp.id;\n const activateUrl = \"/apps/new?id=\" + selectedApp.id;\n\n var downloadButton =\n selectedApp.activated &&\n selectedApp.private_id !== undefined &&\n selectedApp.private_id.length > 0 &&\n selectedApp.generated ? (\n \n {\n downloadApp(selectedApp);\n }}\n variant=\"outlined\"\n component=\"label\"\n color=\"primary\"\n style={{ marginTop: 10, marginRight: 8 }}\n >\n \n \n \n ) : null;\n\n\t\t// Should always reference the original ID.\n\t\t//if (selectedApp.name !== undefined && selectedApp.name !== null && selectedApp.name.includes(\"New\")) {\n\t\t//}\n \n\t\tvar editButton =\n selectedApp.activated &&\n selectedApp.private_id !== undefined &&\n selectedApp.private_id.length > 0 &&\n selectedApp.generated ? (\n \n \n \n \n \n \n \n ) : null;\n\n //var editNewButton = editButton === null ?\n var editNewButton = selectedApp.generated && selectedApp.activated && props.userdata.id !== selectedApp.owner && isCloud ? \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t: null\n\n const activateButton = \n selectedApp.generated && !selectedApp.activated ? (\n
\n \n \n Activate App\n \n \n \n {\n setDeleteModalOpen(true);\n }}\n >\n \n \n \n
\n ) : null;\n\n const deleteButton =\n ((selectedApp.private_id !== undefined &&\n selectedApp.private_id.length > 0 &&\n selectedApp.generated) ||\n (selectedApp.downloaded !== undefined && selectedApp.downloaded == true) ||\n !selectedApp.generated) &&\n activateButton === null ? (\n \n {\n setDeleteModalOpen(true);\n }}\n >\n \n \n \n ) : null;\n\n var imageline =\n selectedApp.large_image === undefined ||\n selectedApp.large_image.length === 0 ? (\n \n ) : (\n \n );\n\n const GetAppExample = () => {\n if (selectedAction.returns === undefined) {\n return null;\n }\n\n var showResult = selectedAction.returns.example;\n if (\n showResult === undefined ||\n showResult === null ||\n showResult.length === 0\n ) {\n return null;\n }\n\n var jsonvalid = true;\n try {\n const tmp = String(JSON.parse(showResult));\n if (!tmp.includes(\"{\") && !tmp.includes(\"[\")) {\n jsonvalid = false;\n }\n } catch (e) {\n jsonvalid = false;\n }\n\n // FIXME: In here -> parse the values into a list or something\n if (jsonvalid) {\n const paths = GetParsedPaths(JSON.parse(showResult), \"\");\n console.log(\"PATHS: \", paths);\n\n return (\n
\n {paths.map((data, index) => {\n const circleSize = 10;\n return (\n console.log(data.autocomplete)}\n >\n {data.name}\n \n );\n })}\n
\n );\n }\n\n return (\n
\n Example return\n
\n {selectedAction.returns.example}\n
\n );\n };\n\n const userRoles = [\"you\", isCloud ? \"public\" : \"everyone\"];\n\n\t\t// Admin in org or creator of app\n\t\t// FIXME: Missing check for if same creator account\n\t\tconst canEditApp = userdata !== undefined && (userdata.admin === \"true\" || userdata.id === selectedApp.owner || selectedApp.owner === \"\" || (userdata.admin === \"true\" && userdata.active_org.id === selectedApp.reference_org)) || !selectedApp.generated \n\n //fetch(globalUrl+\"/api/v1/get_openapi/\"+urlParams.get(\"id\"),\n var baseInfo =\n newAppname.length > 0 ? (\n
\n
\n \n {imageline}\n
\n
\n \n {newAppname}\n \n \n Version {selectedApp.app_version}\n \n \n {description}\n \n
\n
\n {selectedApp.versions !== null &&\n selectedApp.versions !== undefined &&\n selectedApp.versions.length > 1 ? (\n {\n console.log(\"Changing version to index \" + event.target.value);\n const newversion = selectedApp.versions.find(\n (tmpApp) => tmpApp.version == event.target.value\n );\n console.log(\"New version: \", newversion);\n selectedApp.app_version = selectedApp.app_version;\n setSelectedApp(selectedApp);\n\n if (newversion !== undefined && newversion !== null) {\n getApp(newversion.id, true);\n }\n }}\n style={{\n position: \"absolute\",\n top: -10,\n right: isCloud ? 50 : 0,\n backgroundColor: theme.palette.surfaceColor,\n backgroundColor: inputColor,\n color: \"white\",\n height: 35,\n marginleft: 10,\n }}\n SelectDisplayProps={{\n style: {\n marginLeft: 10,\n },\n }}\n >\n {selectedApp.versions.map((data, index) => {\n return (\n \n {data.version}\n \n );\n })}\n \n ) : null}\n {isCloud ? (\n \n \n \n \n \n ) : null}\n\n {activateButton}\n\n\t\t\t\t\t{ /* editNewButton === null && */ }\n\n {canEditApp ? (\n
\n {editButton}\n {downloadButton}\n {deleteButton}\n
\n ) : \n\t\t\t\t\t\t
\n \t\t\t{editNewButton}\n\t\t\t\t\t\t
\n\t\t\t\t\t}\n {selectedApp.tags !== undefined && selectedApp.tags !== null ? (\n \n {selectedApp.tags.map((tag, index) => {\n if (index >= 3) {\n return null;\n }\n\n return (\n \n );\n })}\n
\n ) : null}\n\t\t\t\t\t{canEditApp \n\t\t\t\t\t\t? (\n
\n {/*

ID: {selectedApp.id}

*/}\n Sharing \n {\n alert.info(\"Changing sharing to \" + event.target.value);\n\n setSharingConfiguration(event.target.value);\n\n if (event.target.value === \"you\") {\n updateAppField(selectedApp.id, \"sharing\", false);\n } else if (\n event.target.value === \"everyone\" ||\n event.target.value === \"public\"\n ) {\n updateAppField(selectedApp.id, \"sharing\", true);\n } else {\n console.log(\n \"Can't handle value for sharing: \",\n event.target.value\n );\n }\n }}\n style={{\n width: 150,\n backgroundColor: theme.palette.surfaceColor,\n backgroundColor: inputColor,\n color: \"white\",\n height: 35,\n marginleft: 10,\n }}\n SelectDisplayProps={{\n style: {\n marginLeft: 10,\n },\n }}\n >\n {userRoles.map((data) => {\n return (\n \n {data}\n \n );\n })}\n \n
\n ) : null}\n {/*

Owner: {selectedApp.owner}

*/}\n {selectedApp.privateId !== undefined &&\n selectedApp.privateId.length > 0 ? (\n

\n PrivateID: {selectedApp.privateId}\n

\n ) : null}\n \n
\n {selectedApp.link.length > 0 ? (\n

\n URL: {selectedApp.link}\n

\n ) : null}\n
\n Actions\n {selectedApp.actions !== null &&\n selectedApp.actions.length > 0 ? (\n {\n setSelectedAction(event.target.value);\n }}\n style={{\n backgroundColor: inputColor,\n color: \"white\",\n height: \"50px\",\n }}\n SelectDisplayProps={{\n style: {\n marginLeft: 10,\n },\n }}\n >\n {selectedApp.actions.map((data) => {\n var newActionname =\n data.label !== undefined && data.label.length > 0\n ? data.label\n : data.name;\n newActionname = newActionname.replaceAll(\"_\", \" \");\n newActionname =\n newActionname.charAt(0).toUpperCase() +\n newActionname.substring(1);\n return (\n \n {newActionname}\n \n );\n })}\n \n ) : (\n
\n There are no actions defined for this app.\n
\n )}\n
\n\n {selectedAction.parameters !== undefined &&\n selectedAction.parameters !== null ? (\n
\n Parameters\n {selectedAction.parameters.map((data) => {\n var itemColor = \"#f85a3e\";\n if (!data.required) {\n itemColor = \"#ffeb3b\";\n }\n\n const circleSize = 10;\n return (\n \n {data.configuration === true ? (\n \n \n \n ) : (\n \n )}\n {data.name}\n \n );\n })}\n
\n ) : null}\n {selectedAction.description !== undefined &&\n selectedAction.description !== null &&\n selectedAction.description.length > 0 ? (\n
\n Action Description\n
\n {selectedAction.description}\n
\n ) : null}\n \n
\n
\n ) : null;\n\n return (\n
\n \n
\n

App Creator

\n \n How it works\n \n  -{\" \"}\n \n Security API's\n \n  -{\" \"}\n \n OpenAPI directory\n \n  -{\" \"}\n \n OpenAPI Validator\n \n
\n \n Apps interact with eachother in workflows. They are created with\n the app creator, using OpenAPI specification or manually in\n python. The links above are references to OpenAPI tools and other\n app repositories. There's thousands of them.\n \n
\n \n
\n {\n setOpenApiModal(true);\n }}\n >\n Create from OpenAPI\n \n  OR \n \n \n Create from scratch\n \n \n
\n
\n \n \n
{baseInfo}
\n
\n
\n );\n };\n\n const handleSearchChange = (search) => {\n if (apps === undefined || apps === null || apps.length === 0) {\n return;\n }\n\n const searchfield = search.toLowerCase();\n var newapps = apps.filter(\n (data) =>\n data.name.toLowerCase().includes(searchfield) ||\n data.description.toLowerCase().includes(searchfield) ||\n (data.tags !== null && data.tags.includes(search))\n );\n var tmpapps = searchableApps.filter(\n (data) =>\n data.name.toLowerCase().includes(searchfield) ||\n data.description.toLowerCase().includes(searchfield) ||\n (data.tags !== null && data.tags.includes(search))\n );\n newapps.push(...tmpapps);\n\n //console.log(newapps)\n setFilteredApps(newapps);\n //if ((newapps.length === 0 || searchBackend) && !appSearchLoading) {\n\n //\t//setAppSearchLoading(true)\n //\t//runAppSearch(searchfield)\n //} else {\n //}\n };\n\n const uploadFile = (e) => {\n const isDropzone =\n e.dataTransfer === undefined ? false : e.dataTransfer.files.length > 0;\n const files = isDropzone ? e.dataTransfer.files : e.target.files;\n\n const reader = new FileReader();\n\n try {\n reader.addEventListener(\"load\", (e) => {\n const content = e.target.result;\n setOpenApiData(content);\n setIsDropzone(isDropzone);\n setOpenApiModal(true);\n });\n } catch (e) {\n console.log(\"Error in dropzone: \", e);\n }\n\n try {\n reader.readAsText(files[0]);\n } catch (error) {\n alert.error(\"Failed to read file\");\n }\n };\n\n useEffect(() => {\n if (openApiData.length > 0) {\n setOpenApiError(\"\");\n validateOpenApi(openApiData);\n }\n }, [openApiData]);\n\n useEffect(() => {\n if (appValidation && isDropzone) {\n redirectOpenApi();\n setIsDropzone(false);\n }\n }, [appValidation, isDropzone]);\n\n\tvar appDelay = -75 \n\n\tconst leftBarSize = viewWidth \n\tconst SearchBox = ({ currentRefinement, refine, isSearchStalled, }) => {\n\n useEffect(() => {\n if (document !== undefined) {\n const appsearchValue = document.getElementById(\"app_search_field\")\n if (appsearchValue !== undefined && appsearchValue !== null) {\n console.log(\"Value2: \", appsearchValue.value)\n if (appsearchValue.value !== undefined && appsearchValue.value !== null && appsearchValue.value.length > 0) {\n refine(appsearchValue.value)\n }\n }\n //}\n }\n }, [])\n\n return (\n
{\n }}>\n \n \n \n ),\n }}\n autoComplete='off'\n type=\"search\"\n color=\"primary\"\n placeholder=\"Find Public Apps, Workflows, Documentation and more\"\n value={currentRefinement}\n id=\"shuffle_search_field\"\n onClick={(event) => {\n console.log(\"Click!\")\n }}\n onBlur={(event) => {\n //setSearchOpen(false)\n }}\n onChange={(event) => {\n //if (event.currentTarget.value.length > 0 && !searchOpen) {\n //\tsetSearchOpen(true)\n //}\n\n refine(event.currentTarget.value)\n }}\n limit={5}\n />\n {/*isSearchStalled ? 'My search is stalled' : ''*/}\n \n )\n }\n\n\t\tconst activateApp = (appid, refresh) => {\n\t\t\tfetch(globalUrl + \"/api/v1/apps/\" + appid + \"/activate\", {\n\t\t\t\tmethod: 'GET',\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t'Accept': 'application/json',\n\t\t\t\t},\n\t\t\t\tcredentials: \"include\",\n\t\t\t})\n\t\t\t\t.then((response) => {\n\t\t\t\t\tif (response.status !== 200) {\n\t\t\t\t\t\tconsole.log(\"Failed to activate\")\n\t\t\t\t\t}\n\n\t\t\t\t\treturn response.json()\n\t\t\t\t})\n\t\t\t\t.then((responseJson) => {\n\t\t\t\t\tif (responseJson.success === false) {\n\t\t\t\t\t\talert.error(\"Failed to activate the app\")\n\t\t\t\t\t} else {\n\t\t\t\t\t\talert.success(\"App activated for your organization! Refresh the page to use the app.\")\n\n\t\t\t\t\t\tif (refresh === true) {\n\t\t\t\t\t\t\tgetApps()\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\t//alert.error(error.toString())\n\t\t\t\t\tconsole.log(\"Activate app error: \", error.toString())\n\t\t\t\t});\n\t\t}\n\n\n\t\tconst AppHits = ({ hits }) => {\n const [mouseHoverIndex, setMouseHoverIndex] = React.useState(0)\n\n //var tmp = searchOpen\n //if (!searchOpen) {\n //\treturn null\n //}\n\n const positionInfo = document.activeElement.getBoundingClientRect()\n const outerlistitemStyle = {\n width: \"100%\",\n overflowX: \"hidden\",\n overflowY: \"hidden\",\n borderBottom: \"1px solid rgba(255,255,255,0.4)\",\n }\n\n if (hits.length > 4) {\n hits = hits.slice(0, 4)\n }\n\n var type = \"app\"\n const baseImage = \n\n return (\n
\n \n {hits.length === 0 ?\n \n console.log(hits)}>\n \n \n \n \n \n \n :\n hits.map((hit, index) => {\n const innerlistitemStyle = {\n width: positionInfo.width + 35,\n overflowX: \"hidden\",\n overflowY: \"hidden\",\n borderBottom: \"1px solid rgba(255,255,255,0.4)\",\n backgroundColor: mouseHoverIndex === index ? \"#1f2023\" : \"inherit\",\n cursor: \"pointer\",\n marginLeft: 0,\n marginRight: 0,\n maxHeight: 75,\n minHeight: 75,\n maxWidth: 420,\n minWidth: \"100%\",\n }\n\n const name = hit.name === undefined ?\n hit.filename.charAt(0).toUpperCase() + hit.filename.slice(1).replaceAll(\"_\", \" \") + \" - \" + hit.title :\n (hit.name.charAt(0).toUpperCase() + hit.name.slice(1)).replaceAll(\"_\", \" \")\n\n var secondaryText = hit.data !== undefined ? hit.data.slice(0, 40) + \"...\" : \"\"\n const avatar = hit.image_url === undefined ?\n baseImage\n :\n \n\n //console.log(hit)\n if (hit.categories !== undefined && hit.categories !== null && hit.categories.length > 0) {\n secondaryText = hit.categories.slice(0, 3).map((data, index) => {\n if (index === 0) {\n return data\n }\n\n return \", \" + data\n\n /*\n {\n //handleChipClick\n }}\n variant=\"outlined\"\n color=\"primary\"\n />\n */\n })\n }\n\n var parsedUrl = isCloud ? `/apps/${hit.objectID}` : `https://shuffler.io/apps/${hit.objectID}`\n parsedUrl += `?queryID=${hit.__queryID}`\n\n return (\n
{\n //if (!isCloud) {\n //\talert.info(\"Since this is an on-prem instance. You will need to activate the app yourself. Opening link to download it in a new window.\")\n //\tsetTimeout(() => {\n //\t\tevent.preventDefault()\n //\t\twindow.open(parsedUrl, '_blank')\n //\t}, 2000)\n //} else {\n alert.info(`Activating ${name}`)\n //}\n\n console.log(\"CLICK: \", hit)\n\n const queryID = hit.__queryID\n console.log(\"QUERY: \", queryID)\n\n if (queryID !== undefined && queryID !== null) {\n aa('init', {\n appId: \"JNSS5CFDZZ\",\n apiKey: \"db08e40265e2941b9a7d8f644b6e5240\",\n })\n\n const timestamp = new Date().getTime()\n aa('sendEvents', [\n {\n eventType: 'conversion',\n eventName: 'Public App Activated',\n index: 'appsearch',\n objectIDs: [hit.objectID],\n timestamp: timestamp,\n queryID: queryID,\n userToken: userdata === undefined || userdata === null || userdata.id === undefined ? \"unauthenticated\" : userdata.id,\n }\n ])\n } else {\n console.log(\"No query to handle when activating\")\n }\n\n activateApp(hit.objectID, true)\n }}>\n {\n setMouseHoverIndex(index)\n }}>\n \n {avatar}\n \n \n {/*\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t*/}\n \n
\n )\n })\n }\n
\n
\n )\n }\n\n\n\tconst CustomSearchBox = connectSearchBox(SearchBox)\n\tconst CustomAppHits = connectHits(AppHits)\n \n const appView = isLoggedIn ? (\n \n
\n
\n \n \n \n \n App upload\n \n \n {selectedApp.activated &&\n selectedApp.private_id !== undefined &&\n selectedApp.private_id.length > 0 &&\n selectedApp.generated ? (\n \n {selectedApp.name}\n \n ) : null}\n \n
\n \n
\n
\n
\n
\n \n Activated apps ({apps.length + searchableApps.length})\n \n
\n {isCloud ? null : (\n \n {userdata === undefined || userdata === null || isLoading ? null : (\n \n {\n hotloadApps();\n }}\n >\n {isLoading ? (\n \n ) : (\n \n )}\n \n \n )}\n\n {userdata === undefined || userdata === null || userdata.admin === \"false\" ? null : \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\tsetOpenApi(baseRepository);\n\t\t\t\t\t\t\t\t\t\t\t\tsetLoadAppsModalOpen(true);\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{isLoading ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t}\n \n )}\n
\n
\n {\n handleSearchChange(event.target.value);\n setCursearch(event.target.value);\n }}\n />\n
\n
\n {apps.length > 0 ? (\n filteredApps.length > 0 ? (\n
\n {filteredApps.map((app, index) => {\n\t\t\t\t\t\t\t\t\t\tif (firstLoad) {\n\t\t\t\t\t\t\t\t\t\t\tappDelay += 75\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t//return returnData \n \treturn \n\t\t\t\t\t\t\t\t\t\t}\n\n return (\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t)\n })}\n {cursearch.length > 0\n ? null\n : searchableApps.map((app, index) => {\n return (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t)\n })}\n
\n ) : (\n \n {appSearchLoading ? (\n \n ) : null}\n\n \t\t\t {\n \t\t\t console.log(\"Should load in extra apps?\")\n \t\t\t }}\n \t\t\t>\n \t\t\t \n \t\t\t Couldn't find the app you're looking for? Searching unactivated apps. Click one of the below apps to Activate it for your organization.\n \t\t\t \n \t\t\t {\n \t\t\t console.log(\"CLICKED\")\n \t\t\t }}>\n \t\t\t \n \t\t\t \n \t\t\t \n \t\t\t \n \t\t\t \n \t\t\t
\n \n )\n ) : isLoading ? (\n \n ) : (\n \n \n No apps have been created, uploaded or downloaded yet. Click\n \"Load existing apps\" above to get the baseline. This may take\n a while as its building docker images.\n \n \n If you're still not able to see any apps, please follow our{\" \"}\n \n troubleshooting guide for loading apps!\n \n \n \n )}\n
\n
\n
\n \n ) : null;\n\n // Load data e.g. from github\n const getSpecificApps = (url, forceUpdate) => {\n setValidation(true);\n\n setIsLoading(true);\n //start()\n\n const parsedData = {\n url: url,\n branch: downloadBranch || \"master\",\n };\n\n if (field1.length > 0) {\n parsedData[\"field_1\"] = field1;\n }\n\n if (field2.length > 0) {\n parsedData[\"field_2\"] = field2;\n }\n\n parsedData[\"force_update\"] = forceUpdate;\n\n alert.success(\"Getting specific apps from your URL.\");\n var cors = \"cors\";\n fetch(globalUrl + \"/api/v1/apps/get_existing\", {\n method: \"POST\",\n mode: \"cors\",\n headers: {\n Accept: \"application/json\",\n },\n body: JSON.stringify(parsedData),\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status === 200) {\n alert.success(\"Loaded existing apps!\");\n }\n\n //stop()\n setIsLoading(false);\n setValidation(false);\n return response.json();\n })\n .then((responseJson) => {\n console.log(\"DATA: \", responseJson);\n if (responseJson.reason !== undefined) {\n alert.error(\"Failed loading: \" + responseJson.reason);\n }\n })\n .catch((error) => {\n console.log(\"ERROR: \", error.toString());\n //alert.error(error.toString());\n //stop()\n \n\t\t\t\tsetIsLoading(false);\n setValidation(false);\n });\n };\n\n // Locally hotloads app from folder\n const hotloadApps = () => {\n alert.info(\"Hotloading apps from location in .env\");\n setIsLoading(true);\n fetch(globalUrl + \"/api/v1/apps/run_hotload\", {\n mode: \"cors\",\n headers: {\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n setIsLoading(false);\n if (response.status === 200) {\n //alert.success(\"Hotloaded apps!\")\n getApps();\n }\n\n return response.json();\n })\n .then((responseJson) => {\n if (responseJson.success === true) {\n alert.info(\"Successfully finished hotload\");\n } else {\n alert.error(\"Failed hotload: \", responseJson.reason);\n //(responseJson.reason !== undefined && responseJson.reason.length > 0) {\n }\n })\n .catch((error) => {\n alert.error(error.toString());\n });\n };\n\n // Gets the URL itself (hopefully this works in most cases?\n // Will then forward the data to an internal endpoint to validate the api\n const validateUrl = () => {\n setValidation(true);\n\n var cors = \"cors\";\n if (openApi.includes(\"= localhost\")) {\n cors = \"no-cors\";\n }\n\n fetch(openApi, {\n method: \"GET\",\n mode: \"cors\",\n })\n .then((response) => {\n response.text().then(function (text) {\n validateOpenApi(text);\n });\n })\n .catch((error) => {\n alert.error(error.toString());\n });\n };\n\n const getApp = (appId, setApp) => {\n fetch(globalUrl + \"/api/v1/apps/\" + appId + \"/config?openapi=false\", {\n headers: {\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status === 200) {\n //alert.success(\"Successfully GOT app \"+appId)\n } else {\n alert.error(\"Failed getting app\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n console.log(responseJson);\n\n if (setApp) {\n if (\n selectedApp.versions !== undefined &&\n selectedApp.versions !== null\n ) {\n responseJson.versions = selectedApp.versions;\n }\n\n if (\n selectedApp.loop_versions !== undefined &&\n selectedApp.loop_versions !== null\n ) {\n responseJson.loop_versions = selectedApp.loop_versions;\n }\n\n //alert.info(\"Should set app to selected\")\n if (\n responseJson.actions !== undefined &&\n responseJson.actions !== null &&\n responseJson.actions.length > 0\n ) {\n setSelectedAction(responseJson.actions[0]);\n } else {\n setSelectedAction({});\n }\n setSelectedApp(responseJson);\n }\n })\n .catch((error) => {\n alert.error(error.toString());\n });\n };\n\n const deleteApp = (appId) => {\n alert.info(\"Attempting to delete app\");\n fetch(globalUrl + \"/api/v1/apps/\" + appId, {\n method: \"DELETE\",\n headers: {\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status === 200) {\n alert.success(\"Successfully deleted app\");\n setTimeout(() => {\n getApps();\n }, 1000);\n } else {\n alert.error(\"Failed deleting app. Does it still exist?\");\n }\n })\n .catch((error) => {\n alert.error(error.toString());\n });\n };\n\n const updateAppField = (app_id, fieldname, fieldvalue) => {\n const data = {};\n data[fieldname] = fieldvalue;\n\n console.log(\"DATA: \", data);\n\n fetch(globalUrl + \"/api/v1/apps/\" + app_id, {\n method: \"PATCH\",\n headers: {\n Accept: \"application/json\",\n },\n body: JSON.stringify(data),\n credentials: \"include\",\n })\n .then((response) => {\n //setAppSearchLoading(false)\n return response.json();\n })\n .then((responseJson) => {\n //console.log(responseJson)\n //alert.info(responseJson)\n if (responseJson.success) {\n alert.success(\"Successfully updated app configuration\");\n } else {\n\t\t\t\t\tif (responseJson.reason !== undefined && responseJson.reason !== null) {\n \talert.error(\"Error: \"+responseJson.reason);\n\t\t\t\t\t} else {\n \talert.error(\"Error updating app configuration\");\n\t\t\t\t\t}\n }\n })\n .catch((error) => {\n alert.error(error.toString());\n });\n };\n\n const runAppSearch = (searchterm) => {\n const data = { search: searchterm };\n\n fetch(globalUrl + \"/api/v1/apps/search\", {\n method: \"POST\",\n headers: {\n Accept: \"application/json\",\n },\n body: JSON.stringify(data),\n credentials: \"include\",\n })\n .then((response) => {\n setAppSearchLoading(false);\n return response.json();\n })\n .then((responseJson) => {\n if (responseJson.success) {\n if (\n responseJson.reason !== undefined &&\n responseJson.reason.length > 0\n ) {\n setSearchableApps(responseJson.reason);\n //setFilteredApps(responseJson.reason)\n }\n }\n })\n .catch((error) => {\n alert.error(error.toString());\n });\n };\n\n const validateRemote = () => {\n setValidation(true);\n\n fetch(globalUrl + \"/api/v1/get_openapi_uri\", {\n method: \"POST\",\n headers: {\n Accept: \"application/json\",\n },\n body: JSON.stringify(openApi),\n credentials: \"include\",\n })\n .then((response) => {\n setValidation(false);\n if (response.status !== 200) {\n return response.json();\n }\n\n return response.text();\n })\n .then((responseJson) => {\n if (typeof responseJson !== \"string\" && !responseJson.success) {\n console.log(responseJson.reason);\n if (responseJson.reason !== undefined) {\n setOpenApiError(responseJson.reason);\n } else {\n setOpenApiError(\"Undefined issue with OpenAPI validation\");\n }\n return;\n }\n\n console.log(\"Validating response!\");\n validateOpenApi(responseJson);\n })\n .catch((error) => {\n alert.error(error.toString());\n setOpenApiError(error.toString());\n });\n };\n\n const escapeApiData = (apidata) => {\n //console.log(apidata)\n try {\n return JSON.stringify(JSON.parse(apidata));\n } catch (error) {\n console.log(\"JSON DECODE ERROR - TRY YAML\");\n }\n\n try {\n const parsed = YAML.parse(YAML.stringify(apidata));\n //const parsed = YAML.parse(apidata))\n return YAML.stringify(parsed);\n } catch (error) {\n console.log(\"YAML DECODE ERROR - TRY SOMETHING ELSE?: \" + error);\n setOpenApiError(\"Local error: \" + error.toString());\n }\n\n return \"\";\n };\n\n // Sends the data to backend, which should return a version 3 of the same API\n // If 200 - continue, otherwise, there's some issue somewhere\n const validateOpenApi = (openApidata) => {\n var newApidata = escapeApiData(openApidata);\n if (newApidata === \"\") {\n // Used to return here\n newApidata = openApidata;\n return;\n }\n\n //console.log(newApidata)\n\n setValidation(true);\n fetch(globalUrl + \"/api/v1/validate_openapi\", {\n method: \"POST\",\n headers: {\n Accept: \"application/json\",\n },\n body: openApidata,\n credentials: \"include\",\n })\n .then((response) => {\n setValidation(false);\n return response.json();\n })\n .then((responseJson) => {\n if (responseJson.success) {\n setAppValidation(responseJson.id);\n } else {\n if (responseJson.reason !== undefined) {\n setOpenApiError(responseJson.reason);\n }\n alert.error(\"An error occurred in the response\");\n }\n })\n .catch((error) => {\n setValidation(false);\n alert.error(error.toString());\n setOpenApiError(error.toString());\n });\n };\n\n const redirectOpenApi = () => {\n navigate(`/apps/new?id=${appValidation}`)\n };\n\n const handleGithubValidation = (forceUpdate) => {\n getSpecificApps(openApi, forceUpdate);\n setLoadAppsModalOpen(false);\n };\n\n const deleteModal = deleteModalOpen ? (\n {\n setDeleteModalOpen(false);\n }}\n PaperProps={{\n style: {\n backgroundColor: surfaceColor,\n color: \"white\",\n minWidth: 500,\n },\n }}\n >\n \n
\n Are you sure?
\n Some workflows may stop working.\n
\n \n \n {\n deleteApp(selectedApp.id);\n setDeleteModalOpen(false);\n }}\n color=\"primary\"\n >\n Yes\n \n {\n setDeleteModalOpen(false);\n }}\n color=\"primary\"\n >\n No\n \n \n \n ) : null;\n\n const circularLoader = validation ? (\n \n ) : null;\n const appsModalLoad = loadAppsModalOpen ? (\n {\n setOpenApi(\"\");\n setLoadAppsModalOpen(false);\n setField1(\"\");\n setField2(\"\");\n }}\n PaperProps={{\n style: {\n backgroundColor: surfaceColor,\n color: \"white\",\n minWidth: \"800px\",\n minHeight: \"320px\",\n },\n }}\n >\n \n
\n Load from github repo\n
\n
\n \n Repository (supported: github, gitlab, bitbucket)\n setOpenApi(e.target.value)}\n placeholder=\"https://github.com/frikky/shuffle-apps\"\n fullWidth\n />\n \n Branch (default value is \"master\"):\n \n
\n setDownloadBranch(e.target.value)}\n placeholder=\"master\"\n fullWidth\n />\n
\n \n Authentication (optional - private repos etc):\n \n
\n setField1(e.target.value)}\n type=\"username\"\n placeholder=\"Username / APIkey (optional)\"\n fullWidth\n />\n setField2(e.target.value)}\n type=\"password\"\n placeholder=\"Password (optional)\"\n fullWidth\n />\n
\n
\n \n {circularLoader}\n setLoadAppsModalOpen(false)}\n color=\"primary\"\n >\n Cancel\n \n {isCloud ? null : (\n {\n handleGithubValidation(true);\n }}\n color=\"primary\"\n >\n Force update\n \n )}\n {\n handleGithubValidation(false);\n }}\n color=\"primary\"\n >\n Submit\n \n \n \n ) : null;\n\n const errorText =\n openApiError.length > 0 ? (\n
Error: {openApiError}
\n ) : null;\n const modalView = openApiModal ? (\n {\n setOpenApiModal(false);\n }}\n PaperProps={{\n style: {\n backgroundColor: surfaceColor,\n color: \"white\",\n minWidth: \"800px\",\n minHeight: \"320px\",\n },\n }}\n >\n \n \n
\n Create a new app \n
\n
\n \n Paste in the URI for the OpenAPI\n 0}\n color=\"primary\"\n onClick={() => {\n setOpenApiError(\"\");\n validateRemote();\n }}\n >\n Validate\n \n ),\n }}\n onChange={(e) => {\n setOpenApi(e.target.value);\n }}\n helperText={\n \n Must point to a version 2 or 3 OpenAPI specification.\n \n }\n placeholder=\"OpenAPI URI\"\n fullWidth\n />\n {/*\n\t\t\t\t\t
\n\t\t\t\t\t Example: \n\t\t\t\t\t
\n\t\t\t\t\t https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/examples/v2.0/json/uber.json\n\t\t\t\t\t\t*/}\n

Or upload a YAML or JSON specification

\n \n upload.current.click()}\n >\n Upload\n \n {errorText}\n \n \n {circularLoader}\n {\n setOpenApiModal(false);\n setAppValidation(\"\");\n setOpenApiError(\"\");\n setOpenApi(\"\");\n setOpenApiData(\"\");\n }}\n color=\"primary\"\n >\n Cancel\n \n {\n redirectOpenApi();\n }}\n color=\"primary\"\n >\n Continue\n \n \n \n \n ) : null;\n\n const loadedCheck =\n isLoaded && !firstrequest ? (\n
\n {appView}\n {modalView}\n {appsModalLoad}\n {deleteModal}\n
\n ) : (\n
\n );\n\n // Maybe use gridview or something, idk\n return loadedCheck;\n};\n\nexport default Apps;\n","import React, { useState, useEffect } from \"react\";\nimport { useInterval } from \"react-powerhooks\";\n\nimport {\n InputAdornment,\n Tooltip,\n TextField,\n CircularProgress,\n ButtonGroup,\n Button,\n Avatar,\n ListItemAvatar,\n Typography,\n List,\n ListItem,\n ListItemText,\n Fade,\n} from \"@material-ui/core\";\nimport { \n\tFavoriteBorder as FavoriteBorderIcon,\n\tError as ErrorIcon,\n\tCheckCircleRounded as CheckCircleRoundedIcon,\n} from \"@mui/icons-material\";\nimport { FixName } from \"../views/Apps.jsx\";\nimport aa from 'search-insights'\n\n// Handles workflow updates on first open to highlight the issues of the workflow\n// Variables\n// Action (exists, missing fields)\n// Action auth\n// Triggers\n//\n// Specifically used for UNSAVED workflows only?\nconst ConfigureWorkflow = (props) => {\n const {\n\t\tuserdata,\n globalUrl,\n theme,\n workflow,\n appAuthentication,\n setSelectedAction,\n setAuthenticationModalOpen,\n setSelectedApp,\n apps,\n selectedAction,\n setConfigureWorkflowModalOpen,\n saveWorkflow,\n newWebhook,\n submitSchedule,\n referenceUrl,\n isCloud,\n setAuthenticationType,\n alert,\n\t\tshowTriggers,\n\t\tworkflowExecutions,\n\t\tgetWorkflowExecution,\n } = props;\n\n const [requiredActions, setRequiredActions] = React.useState([]);\n const [requiredVariables, setRequiredVariables] = React.useState([]);\n const [requiredTriggers, setRequiredTriggers] = React.useState([]);\n const [previousAuth, setPreviousAuth] = React.useState(appAuthentication);\n const [itemChanged, setItemChanged] = React.useState(false);\n const [firstLoad, setFirstLoad] = React.useState(\"\");\n const [showFinalizeAnimation, setShowFinalizeAnimation] = React.useState(false);\n\n\tconst [checkStarted, setCheckStarted] = React.useState(false);\n\n\tconst { start, stop } = useInterval({\n\t\tduration: 3000,\n\t\tstartImmediate: false,\n\t\tcallback: () => {\n\t\t\tif (getWorkflowExecution !== undefined && workflowExecutions !== undefined) {\n\t\t\t\tconst paramkey = workflow.id\n\t\t\t\tgetWorkflowExecution(paramkey)\n\t\t\t} else {\n\t\t\t\tconsole.log(\"Executions or getWorkflowExecutions not defined\")\n\t\t\t}\n\t\t},\n\t});\n\n\t// Where is this from?\n if (workflow === undefined || workflow === null) {\n return null;\n }\n\n if (apps === undefined || apps === null) {\n return null;\n }\n\n if (appAuthentication === undefined || appAuthentication === null) {\n return null;\n }\n\n const getApp = (actionId, appId) => {\n fetch(globalUrl + \"/api/v1/apps/\" + appId + \"/config?openapi=false\", {\n headers: {\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status === 200) {\n //alert.success(\"Successfully GOT app \"+appId)\n } else {\n alert.error(\"Failed getting app\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n console.log(\"ACTION: \", responseJson);\n if (\n responseJson.actions !== undefined &&\n responseJson.actions !== null\n ) {\n }\n })\n .catch((error) => {\n alert.error(error.toString());\n });\n };\n\n if (firstLoad.length === 0 || firstLoad !== workflow.id) {\n if (apps === undefined || apps === null || apps.length === 0) {\n console.log(\"No apps loaded: \", apps);\n setConfigureWorkflowModalOpen(false);\n return null;\n }\n\n setFirstLoad(workflow.id)\n const newactions = [];\n for (let [key, keyval] in Object.entries(workflow.actions)) {\n const action = workflow.actions[key];\n var newaction = {\n large_image: action.large_image,\n app_name: action.app_name,\n app_version: action.app_version,\n activation_done: false,\n must_activate: false,\n must_authenticate: false,\n auth_done: false,\n action_ids: [],\n action: action,\n\t\t\t\tupdate_version: action.app_version,\n app: {},\n\t\t\t\tsteps: [],\n\t\t\t\tshow_steps: false,\n }\n\n\t\t\t//console.log(\"Action: \", key, keyval)\n\n const app = apps.find((app) =>\n\t\t\t\tapp.id === action.app_id || \n\t\t\t\t(app.name === action.app_name &&\n\t\t\t\t(app.app_version === action.app_version || (app.loop_versions !== null && app.loop_versions.includes(action.app_version))))\n )\n\n\t\t\t//console.log(\"FOUND APP: \", app)\n\n if (app === undefined || app === null) {\n \tconst subapp = apps.find(app => app.name === action.app_name)\n\t\t\t\tif (subapp !== undefined && subapp !== null) {\n\t\t\t\t\tnewaction.update_version = \"1.1.0\"\n\t\t\t\t}\n\n newaction.must_activate = true;\n\t\t\t\tnewaction.steps.push({\n\t\t\t\t\t\"title\": \"Activate app\",\n\t\t\t\t\t\"type\": \"activate\",\n\t\t\t\t\t\"required\": true,\n\t\t\t\t})\n } else {\n if (action.authentication_id === \"\" && app.authentication.required === true && action.parameters !== undefined && action.parameters !== null) {\n // Check if configuration is filled or not\n var filled = true;\n for (let [key,keyval] in Object.entries(action.parameters)) {\n if (action.parameters[key].configuration) {\n //console.log(\"Found config: \", action.parameters[key])\n if (\n action.parameters[key].value === null ||\n action.parameters[key].value.length === 0\n ) {\n filled = false;\n break;\n }\n }\n }\n\n\t\t\t\t\tnewaction.steps.push({\n\t\t\t\t\t\t\"title\": \"Authenticate app\",\n\t\t\t\t\t\t\"type\": \"authenticate\",\n\t\t\t\t\t\t\"required\": true,\n\t\t\t\t\t})\n\n if (!filled) {\n newaction.must_authenticate = true;\n newaction.action_ids.push(action.id);\n }\n } else if (action.authentication_id !== \"\" && app.authentication.required === true) {\n\t\t\t\t\tconsole.log(\"Should verify authentication ID \", action.authentication_id)\n\n\t\t\t\t}\n\n newaction.app = app;\n }\n\n if (\n action.errors !== undefined &&\n action.errors !== null &&\n action.errors.length > 0\n ) {\n //console.log(\"Node has errors!: \", action.errors)\n }\n\n if (newaction.must_authenticate) {\n var authenticationOptions = [];\n for (let [key,keyval] in Object.entries(appAuthentication)) {\n const auth = appAuthentication[key];\n if (auth.app.name === app.name && auth.active) {\n //console.log(\"Found auth: \", auth)\n authenticationOptions.push(auth);\n newaction.authenticationId = auth.id;\n break;\n }\n }\n\n if (\n newaction.authenticationId === null ||\n newaction.authenticationId === undefined ||\n newaction.authenticationId.length === \"\"\n ) {\n //console.log(\"FAILED to authenticate node!\")\n\n if (\n newactions.find(\n (tmpaction) =>\n tmpaction.app_id === newaction.app_id &&\n tmpaction.app_name === newaction.app_name\n ) !== undefined\n ) {\n //console.log(\"Action already found.\");\n } else {\n newactions.push(newaction);\n }\n } else {\n //console.log(\"Skipping node as it's already authenticated.\")\n newaction.authentication = authenticationOptions;\n workflow.actions[key] = newaction;\n }\n } else if (newaction.must_activate) {\n if (\n newactions.find(\n (tmpaction) =>\n tmpaction.app_id === newaction.app_id &&\n tmpaction.app_name === newaction.app_name\n ) !== undefined\n ) {\n console.log(\"Action already found.\");\n } else {\n newactions.push(newaction);\n }\n }\n }\n\n\tif (workflow.workflow_variables !== undefined && workflow.workflow_variables !== null && workflow.workflow_variables.length !== 0) {\n for (let [key,keyval] in Object.entries(workflow.workflow_variables)) {\n const variable = workflow.workflow_variables[key];\n if (variable.value === undefined || variable.value === undefined || variable.value.length === 0) {\n variable.value = \"\";\n requiredVariables.push(variable);\n }\n\n\t\t\tvariable.index = key;\n }\n\t}\n\n\tif (workflow.triggers !== undefined && workflow.triggers !== null && workflow.triggers.length !== 0) {\n for (let [key,keyval] in Object.entries(workflow.triggers)) {\n var trigger = workflow.triggers[key];\n trigger.index = key;\n\n\t\t\tif (trigger.trigger_type === \"WEBHOOK\") {\n\t\t\t\tconsole.log(\"Found webhook: \", trigger)\n\t\t\t\tif (trigger.app_association !== undefined && trigger.app_association.name !== null && trigger.app_association.name !== \"\") {\n\t\t\t\t\tconsole.log(\"Actions: \", newactions)\n\t\t\t\t\tconst findapp = trigger.app_association.name.toLowerCase()\n\t\t\t\t\tconst foundindex = newactions.findIndex(action => action.app_name.toLowerCase() === findapp)\n\n\t\t\t\t\t// Adding webhook to start of it\n\t\t\t\t\tif (foundindex >= 0) {\n\t\t\t\t\t\tconst tmpsteps = newactions[foundindex].steps\n\t\t\t\t\t\tnewactions[foundindex].steps = [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"title\": \"Configure Webhook\",\n\t\t\t\t\t\t\t\t\"type\": \"webhook\",\n\t\t\t\t\t\t\t\t\"required\": true,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\n\t\t\t\t\t\tfor (let [subkey,subkeyval] in Object.entries(tmpsteps)) {\n\t\t\t\t\t\t\tnewactions[foundindex].steps.push(tmpsteps[subkey])\n\t\t\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\t\tnewactions[foundindex].show_steps = true\n\n\t\t\t\t\t\tconsole.log(\"CHANGED ACTION: \", newactions[foundindex])\n\t\t\t\t\t\t//console.log(\"Index: \", newactions[foundindex])\n\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n if (trigger.status === \"running\") {\n continue;\n }\n\n if (\n trigger.trigger_type === \"SUBFLOW\" ||\n trigger.trigger_type === \"USERINPUT\"\n ) {\n continue;\n }\n\n requiredTriggers.push(trigger);\n }\n}\n\n if (\n requiredTriggers.length === 0 &&\n requiredVariables.length === 0 &&\n newactions.length === 0\n ) {\n setConfigureWorkflowModalOpen(false);\n }\n\n setRequiredTriggers(requiredTriggers);\n setRequiredVariables(requiredVariables);\n setRequiredActions(newactions);\n\t}\n\n if (appAuthentication !== undefined && previousAuth !== undefined && appAuthentication.length !== previousAuth.length) {\n var newactions = []\n for (let [actionkey, actionkeyval] in Object.entries(requiredActions)) {\n var newaction = requiredActions[actionkey];\n const app = newaction.app;\n\n for (let [key,keyval] in Object.entries(appAuthentication)) {\n const auth = appAuthentication[key];\n\n\t\t\t\t// Does this account for all the different ones of the same? \n if (auth.app.name === app.name && auth.active === true) {\n newaction.auth_done = true;\n break;\n }\n }\n\n newactions.push(newaction);\n }\n\n setRequiredActions(newactions);\n setPreviousAuth(appAuthentication);\n // Set auth done to true\n //\"auth_done\": false\n }\n\n const TriggerSection = (props) => {\n const { trigger } = props\n\n return (\n \n \n \n \n \n \n \n {trigger.trigger_type === \"WEBHOOK\" && trigger.status !== \"running\" ? (\n {\n workflow.triggers[trigger.index].status = \"running\";\n if (workflow.triggers[trigger.index].parameters === null) {\n workflow.triggers[trigger.index].parameters = [\n {\n name: \"url\",\n value: referenceUrl + \"webhook_\" + trigger.id,\n },\n { name: \"tmp\", value: \"webhook_\" + trigger.id },\n ];\n }\n\n newWebhook(workflow.triggers[trigger.index]);\n saveWorkflow(workflow);\n setItemChanged(true);\n }}\n >\n {trigger.status !== \"running\" ? \"Start\" : \"Running\"}\n \n ) : trigger.trigger_type === \"SCHEDULE\" &&\n trigger.status !== \"running\" ? (\n {\n workflow.triggers[trigger.index].status = \"running\";\n if (workflow.triggers[trigger.index].parameters === null) {\n workflow.triggers[trigger.index].parameters = [\n { name: \"cron\", value: isCloud ? \"*/15 * * * *\" : \"120\" },\n {\n name: \"execution_argument\",\n value: '{\"example\": {\"json\": \"is cool\"}}',\n },\n ];\n }\n\n submitSchedule(workflow.triggers[trigger.index], trigger.index);\n saveWorkflow(workflow);\n setItemChanged(true);\n }}\n >\n {trigger.status !== \"running\" ? \"Start\" : \"Running\"}\n \n ) : null}\n {/*\n\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\t\t\ttype={\"text\"}\n\t\t\t\t\t\t\t\tplaceholder={`New value for ${trigger.name}`}\n\t\t\t\t\t\t\t\tonChange={(event) => {\n\t\t\t\t\t\t\t\t\tconsole.log(\"NEW VALUE ON INDEX\", trigger.value)\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tonBlur={(event) => {\n\t\t\t\t\t\t\t\t\t//workflow.variables[variable.index] = event.target.value\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tstyle={{}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t*/}\n \n );\n };\n\n const VariableSection = (props) => {\n const { variable } = props;\n\n //Name: {variable.name} - {variable.value}. \n return (\n \n \n \n \n \n \n \n ,\n }}\n fullWidth\n color=\"primary\"\n type={\"text\"}\n placeholder={`New value for ${variable.name}`}\n onChange={(event) => {\n console.log(\n \"NEW VALUE ON INDEX\",\n variable.index,\n variable.value\n );\n }}\n onBlur={(event) => {\n workflow.workflow_variables[variable.index].value =\n event.target.value;\n }}\n />\n }\n style={{}}\n />\n \n );\n };\n\n const activateApp = (app_id, app_name, app_version) => {\n\n\t\tif (aa !== undefined) {\n\t\t\taa('init', {\n\t\t\t\t\tappId: \"JNSS5CFDZZ\",\n\t\t\t\t\tapiKey: \"db08e40265e2941b9a7d8f644b6e5240\",\n\t\t\t})\n\n\t\t\tconst timestamp = new Date().getTime()\n\t\t\taa('sendEvents', [\n\t\t\t\t{\n\t\t\t\t\teventType: 'conversion',\n\t\t\t\t\teventName: 'Public App Activated',\n\t\t\t\t\tindex: 'appsearch',\n\t\t\t\t\tobjectIDs: [app_id],\n\t\t\t\t\ttimestamp: timestamp,\n\t\t\t\t\tuserToken: userdata === undefined || userdata === null || userdata.id === undefined ? \"unauthenticated\" : userdata.id,\n\t\t\t\t}\n\t\t\t])\n\t\t}\n\n fetch(\n `${globalUrl}/api/v1/apps/${app_id}/activate?app_name=${app_name}&app_version=${app_version}`,\n {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n }\n )\n .then((response) => {\n if (response.status !== 200) {\n //window.location.pathname = \"/search\"\n //alert.error(\"Failed to find this app. Is it public?\")\n }\n\n return response.json();\n })\n .then((responseJson) => {\n if (responseJson.success === false) {\n \tif (responseJson.reason !== undefined) {\n \talert.error(\"Failed to activate the app: \"+responseJson.reason);\n\t\t\t\t\t} else {\n \talert.error(\"Failed to activate the app\");\n\t\t\t\t\t}\n } else {\n alert.success(\"App activated for your organization!\");\n }\n })\n .catch((error) => {\n alert.error(error.toString());\n });\n };\n\n\n\n const AppSection = (props) => {\n const { action } = props;\n\n return (\n \n\t\t\t\t{/*\n \n \n \n \n \n \n\t\t\t\t*/}\n {action.must_authenticate ? \n\t\t\t\t\t\t {\n \t\t setAuthenticationType(\n action.app.authentication.type === \"oauth2\" &&\n action.app.authentication.redirect_uri !== undefined &&\n action.app.authentication.redirect_uri !== null\n ? {\n type: \"oauth2\",\n redirect_uri: action.app.authentication.redirect_uri,\n token_uri: action.app.authentication.token_uri,\n scope: action.app.authentication.scope,\n }\n : {\n type: \"\",\n }\n )\n\n setItemChanged(true);\n\n\t\t\t\t\t\t\t\tif (setSelectedAction !== undefined) {\n \tsetSelectedAction(action.action);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (setSelectedApp !== undefined) {\n \tsetSelectedApp(action.app);\n\t\t\t\t\t\t\t\t}\n\n setAuthenticationModalOpen(true);\n \t\t }}\n >\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{action.auth_done ? \"Authenticated\" : `Authenticate ${action.app_name.replaceAll(\"_\", \" \")}`}\n\t\t\t\t\t\t\n \t\n : null}\n\t\t\t\t{action.update_version !== action.app_version ? \n {\n\t\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t\t\tconsole.log(\"Set version to: \", action.update_version)\n\n\t\t\t\t\t\t\tif (workflow.actions !== null) {\n\t\t\t\t\t\t\t\t//console.log(workflow.actions)\n\t\t\t\t\t\t\t\talert.info(\"Setting action to version \"+action.update_version)\n\t\t\t\t\t\t\t\tfor (let [key,keyval] in Object.entries(workflow.actions)) {\n\t\t\t\t\t\t\t\t\tif (workflow.actions[key].app_name === action.app_name && workflow.actions[key].app_version === action.app_version) {\n\t\t\t\t\t\t\t\t\t\tworkflow.actions[key].app_version = action.update_version\n\n\t\t\t\t\t\t\t\t\t\tif (!itemChanged) {\n\t\t\t\t\t\t\t\t\t\t\tsetItemChanged(true)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\taction.must_activate = false\n\t\t\t\t\t\t\t\taction.update_version = action.app_version\n\t\t\t\t\t\t\t}\n }}\n >\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tUpdate to version {action.update_version}\n\t\t\t\t\t\t\n \n\t\t\t\t\t: \n\t\t\t\t\taction.must_activate ? \n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tconsole.log(\"ACTION: \", action)\n\t\t\t\t\t\t\t\t\tactivateApp(action.action.app_id, action.app_name, action.app_version);\n\t\t\t\t\t\t\t\t\tsetItemChanged(true);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tActivate\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t: \n\t\t\t\tnull\n }\n \n );\n }\n\t\t\t\t\t\t\t\t\t\n\t// Based on the color here. Default: #f86a3e\n\t//backgroundColor: selectedUsecaseCategory === usecase.name ? usecase.color : theme.palette.surfaceColor,\n\n\tconst BoxHighlight = (props) => {\n\t\tconst {data, appname, appinfo, index, activeStep, setActiveStep, finished, } = props\n\n\t\tconst [hovered, setHovered] = useState(false)\n\t\tconst [isOpen, setIsOpen] = useState(false)\n\t\tconst [isLoading, setIsLoading] = useState(false)\n\n\t\t// This kind of just works for new workflows..\n\t\t// What if we try many times?\t\n\n\t\tvar webhook = {\n\t\t\t\"name\": \"Testhook\",\n\t\t\t\"description\": `A Webhook Trigger has been started and is ready to receive events from ${appname}. Click to copy the URL to send events to.`,\n\t\t\t\"url\": \"\",\n\t\t}\n\n\t\tuseEffect(() => {\n\t\t\tif (data.type === \"webhook\" && !finished) {\n\t\t\t\tif (!checkStarted) {\n\t\t\t\t\tsetCheckStarted(true)\n \t\t\t\tstart()\n\t\t\t\t}\n\t\t\t}\n\t\t}, [])\n\n\t\t// Load webhook docs from the app itself (Wazuh)\n\t\t// Add a \"sample\" for what the event is supposed to look like\n\t\t// Have a listener for when ACTUALLY is received \n\t\t// INJECT the URL into the documentation when loading it in\n\t\t// How can we load it in? Should we just use the app name & get docs -> parse?\n\t\tif (data.type === \"webhook\" && workflow.triggers !== undefined && workflow.triggers !== null) {\n\t\t\t//console.log(\"Find webhook in the workflow!\")\n\t\t\tfor (var key in workflow.triggers) {\n\t\t\t\tif (workflow.triggers[key].trigger_type !== \"WEBHOOK\") {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tfor (var subkey in workflow.triggers[key].parameters) {\n\t\t\t\t\tconst param = workflow.triggers[key].parameters[subkey]\n\t\t\t\t\tif (param.name === \"url\") {\n\t\t\t\t\t\twebhook.url = param.value\n\n\t\t\t\t\t\tif (isLoading === false) {\n\t\t\t\t\t\t\tsetIsLoading(true)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (data.type == \"authenticate\") {\n\t\t\t//console.log(\"Handle app authentication in the workflow!\")\n\t\t}\n\t\n\t\treturn (\n\t\t\t
{\n\t\t\t\t\tsetIsOpen(!isOpen)\n\t\t\t\t\tsetActiveStep(index)\n\t\t\t\t}}\n\t\t\t\tonMouseOver={() => {\n\t\t\t\t\tsetHovered(true);\n\t\t\t\t}}\n\t\t\t\tonMouseOut={() => {\n\t\t\t\t\tsetHovered(false);\n\t\t\t\t}}\n\t\t\t>\n\n\t\t\t\t
\n \t\t{data.title}\n\t\t\t\t\t{finished ?\n\t\t\t\t\t\t\n\t\t\t\t\t\t:\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t
\n\n\t\t\t\t{activeStep === index ? \n\t\t\t\t\t
\n\t\t\t\t\t\t{data.type === \"webhook\" ?\n\t\t\t\t\t\t\t
{\n\t\t\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t\t\t\tconsole.log(\"Clicked Webhook\")\n\n\t\t\t\t\t\t\t\tvar copyText = document.getElementById(\"copy_element_shuffle\")\n\t\t\t\t\t\t\t\tif (copyText !== undefined && copyText !== null) {\n\t\t\t\t\t\t\t\t\tconsole.log(\"NAVIGATOR: \", navigator);\n\t\t\t\t\t\t\t\t\tconst clipboard = navigator.clipboard;\n\t\t\t\t\t\t\t\t\tif (clipboard === undefined) {\n\t\t\t\t\t\t\t\t\t\talert.error(\"Can only copy over HTTPS (port 3443)\");\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tnavigator.clipboard.writeText(webhook.url);\n\t\t\t\t\t\t\t\t\tcopyText.select();\n\t\t\t\t\t\t\t\t\tcopyText.setSelectionRange(\n\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t99999\n\t\t\t\t\t\t\t\t\t); /* For mobile devices */\n\n\t\t\t\t\t\t\t\t\t/* Copy the text inside the text field */\n\t\t\t\t\t\t\t\t\tdocument.execCommand(\"copy\");\n\t\t\t\t\t\t\t\t\talert.success(\"Copied Webhook URL\");\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t{webhook.description}\n\t\t\t\t\t\t\t\t{/*{webhook.url}*/}\n\t\t\t\t\t\t\t\t{isLoading && finished === false ? \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t: \n\t\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t: \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t
\n\t\t\t\t: null}\n\n\t\t\t
\n\t\t)\n\t}\n\n\tconst AppWrapper = (props) => {\n\t\tconst {data, parentindex} = props\n\t\tconst [clicked, setClicked] = useState(true)\n\t\tconst [hovered, setHovered] = useState(false)\n\t\tconst [activeStep, setActiveStep] = useState(0)\n\t\tconst [firstRun, setFirstRun] = useState(true)\n\t\tconst [finishCount, setFinishCount] = useState(0)\n\n\t\treturn (\n\t\t\t
\n\t\t\t\t
{\n\t\t\t\t\t\t//setClicked(!clicked)\n\t\t\t\t\t}}\n\t\t\t\t\tonMouseOver={() => {\n\t\t\t\t\t\tsetHovered(true);\n\t\t\t\t\t}}\n\t\t\t\t\tonMouseOut={() => {\n\t\t\t\t\t\tsetHovered(false);\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tConfigure {data.app_name.replaceAll(\"_\", \" \")}\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t{clicked === true ? \n\t\t\t\t\tdata.steps.map((step, index) => {\n\t\t\t\t\t\tvar finished = false\n\t\t\t\t\t\tif (step.type === \"activate\") {\n\t\t\t\t\t\t\tif (data.activation_done === true) {\n\t\t\t\t\t\t\t\tfinished = true\n\n\t\t\t\t\t\t\t\tif (index === activeStep && firstRun === true) {\n\t\t\t\t\t\t\t\t\tsetActiveStep(activeStep+1)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif (firstRun) {\n\t\t\t\t\t\t\t\t\tsetFinishCount(finishCount+1)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (step.type === \"authenticate\") {\n\t\t\t\t\t\t\tconsole.log(\"AUTH STEP: \", step)\n\t\t\t\t\t\t\tif (data.must_authenticate === true ) {\n\t\t\t\t\t\t\t\tfinished = false\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (data.activation_done === true && data.auth_done === true) {\n\t\t\t\t\t\t\t\t\tfinished = true \n\n\t\t\t\t\t\t\t\t\tif (firstRun) {\n\t\t\t\t\t\t\t\t\t\tsetFinishCount(finishCount+1)\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (index === activeStep && firstRun === true) {\n\t\t\t\t\t\t\t\t\t\tsetActiveStep(activeStep+1)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (step.type === \"webhook\") {\n\t\t\t\t\t\t\tfor (var key in workflowExecutions) {\n\t\t\t\t\t\t\t\tconst exec = workflowExecutions[key]\n\t\t\t\t\t\t\t\tif (exec.execution_argument !== undefined && exec.execution_argument !== null && exec.execution_argument.length > 0 && exec.execution_source === \"webhook\") {\n\t\t\t\t\t\t\t\t\t//console.log(\"Done: \", exec)\n\n\t\t\t\t\t\t\t\t\tfinished = true\n\t\t\t\t\t\t\t\t\tif (index === activeStep && firstRun === true) {\n\t\t\t\t\t\t\t\t\t\tsetActiveStep(activeStep+1)\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (firstRun) {\n\t\t\t\t\t\t\t\t\t\tsetFinishCount(finishCount+1)\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Finished + source = webhook\n\n\t\t\t\t\t\t\t\t\tstop()\n\t\t\t\t\t\t\t\t\t//if (isLoading === true) {\n\t\t\t\t\t\t\t\t\t//\tsetIsLoading(false)\n\t\t\t\t\t\t\t\t\t//}\n\t\t\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (firstRun === true && index === data.steps.length-1) {\n\t\t\t\t\t\t\tsetFirstRun(false)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)\n\t\t\t\t\t})\n\t\t\t\t: null}\n\t\t\t
\n\t\t)\n\t}\n\n\tconst topColor = \"#f86a3e, #fc3922\"\n return (\n
\n\t\t\t
\n\t\t\t
\n\t\t\t
\n \t{workflow.name}\n \t\n \t The following configuration makes the workflow ready immediately.\n \t\n \t{requiredActions.length > 0 ? (\n \t \n \t \n \t Required Actions\n \t \n\n \t \n \t {requiredActions.map((data, index) => {\n \t return (\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t{data.steps !== undefined && data.steps !== null && data.show_steps === true ?\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t: \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t)\n \t })}\n \t
\n \t
\n \t) : null}\n\n \t{requiredVariables.length > 0 ? (\n \t \n \t \n \t Variables\n \t \n \t \n \t {requiredVariables.map((data, index) => {\n \t return ;\n \t })}\n \t \n \t \n \t) : null}\n\n \t{requiredTriggers.length > 0 && showTriggers !== false ? (\n \t \n \t \n \t Triggers\n \t \n \t \n \t {requiredTriggers.map((data, index) => {\n \t return ;\n \t })}\n \t \n \t \n \t) : null}\n\n\t\t\t\t
\n\t\t\t\t\t{showFinalizeAnimation ? \n\t\t\t\t\t\t\"finalize {\n\t\t\t\t\t\t\tconsole.log(\"Img loaded.\")\n\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\tconsole.log(\"Img closing.\")\n\t\t\t\t\t\t\t\tsetConfigureWorkflowModalOpen(false);\n\t\t\t\t\t\t\t}, 1250)\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t}}/>\n\t\t\t\t\t\t:\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{/*\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t*/}\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tstop()\n\t\t\t\t\t\t\t\t\tsetShowFinalizeAnimation(true)\n\t\t\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\t\t\tif (itemChanged) {\n\t\t\t\t\t\t\t\t\t\t\tif (saveWorkflow !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\t\tsaveWorkflow(workflow);\n\t\t\t\t\t\t\t\t\t\t\t\twindow.location.reload();\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}, 1000)\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tFinalize\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t
\n\t\t\t
\n
\n );\n};\n\nexport default ConfigureWorkflow;\n","import React, { useRef, useState, useEffect, useLayoutEffect } from \"react\";\nimport { useParams, useNavigate, Link } from \"react-router-dom\";\nimport { useTheme } from \"@material-ui/core/styles\";\nimport theme from '../theme.jsx';\n\nimport { v4 as uuidv4 } from \"uuid\";\nimport {\n ListItemText,\n TextField,\n Drawer,\n Button,\n Paper,\n Grid,\n Tabs,\n InputAdornment,\n Tab,\n ButtonBase,\n Tooltip,\n Select,\n MenuItem,\n Divider,\n Dialog,\n Modal,\n DialogActions,\n DialogTitle,\n InputLabel,\n DialogContent,\n FormControl,\n IconButton,\n Menu,\n Input,\n FormGroup,\n FormControlLabel,\n Typography,\n Checkbox,\n Breadcrumbs,\n CircularProgress,\n Switch,\n Fade,\n} from \"@material-ui/core\";\nimport { \n\tLockOpen as LockOpenIcon,\n\tSupervisorAccount as SupervisorAccountIcon,\n} from \"@mui/icons-material\";\n\nconst ITEM_HEIGHT = 55;\nconst ITEM_PADDING_TOP = 8;\nconst MenuProps = {\n PaperProps: {\n style: {\n maxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP,\n minWidth: 500,\n maxWidth: 500,\n scrollX: \"auto\",\n },\n },\n variant: \"menu\",\n getContentAnchorEl: null,\n};\n\nconst registeredApps = [\n\t\"gmail\",\n\t\"slack\",\n\t\"webex\",\n\t\"zoho_desk\",\n\t\"outlook_graph\",\n\t\"outlook_office365\",\n\t\"microsoft_teams\",\n\t\"microsoft_teams_user_access\",\n\t\"todoist\",\n\t\"microsoft_sentinel\",\n\t\"microsoft_365_defender\",\n\t\"google_sheets\",\n\t\"google_drive\",\n\t\"google_disk\",\n\t\"jira\",\n\t\"jira_service_desk\",\n\t\"jira_service_management\",\n\t\"github\",\n]\n\nconst AuthenticationOauth2 = (props) => {\n const {\n saveWorkflow,\n selectedApp,\n workflow,\n selectedAction,\n authenticationType,\n getAppAuthentication,\n appAuthentication,\n setSelectedAction,\n setNewAppAuth,\n\t\tisCloud,\n\t\tautoAuth, \n\t\tauthButtonOnly, \n\t\tisLoggedIn,\n } = props;\n\n let navigate = useNavigate();\n\n //const [update, setUpdate] = React.useState(\"|\")\n const [defaultConfigSet, setDefaultConfigSet] = React.useState(\n authenticationType.client_id !== undefined &&\n authenticationType.client_id !== null &&\n authenticationType.client_id.length > 0 &&\n authenticationType.client_secret !== undefined &&\n authenticationType.client_secret !== null &&\n authenticationType.client_secret.length > 0\n );\t\n\n const [clientId, setClientId] = React.useState(\n defaultConfigSet ? authenticationType.client_id : \"\"\n );\n const [clientSecret, setClientSecret] = React.useState(\n defaultConfigSet ? authenticationType.client_secret : \"\"\n );\n const [oauthUrl, setOauthUrl] = React.useState(\"\");\n const [buttonClicked, setButtonClicked] = React.useState(false);\n\n const [offlineAccess, setOfflineAccess] = React.useState(true);\n const allscopes = authenticationType.scope !== undefined ? authenticationType.scope : [];\n \n\n const [selectedScopes, setSelectedScopes] = React.useState(allscopes.length === 1 ? [allscopes[0]] : [])\n const [manuallyConfigure, setManuallyConfigure] = React.useState(\n defaultConfigSet ? false : true\n );\n const [authenticationOption, setAuthenticationOptions] = React.useState({\n app: JSON.parse(JSON.stringify(selectedApp)),\n fields: {},\n label: \"\",\n usage: [\n {\n workflow_id: workflow !== undefined ? workflow.id : \"\",\n },\n ],\n id: uuidv4(),\n active: true,\n });\n\n\n\tuseEffect(() => {\n\t\tif (isLoggedIn === false) {\n\t\t\tnavigate(`/login?view=${window.location.pathname}&message=Log in to authenticate this app`)\n\t\t}\n\n\t\tconsole.log(\"Should automatically click the auto-auth button?: \", autoAuth)\n\t\tif (autoAuth === true && selectedApp !== undefined) {\n\t\t\tstartOauth2Request() \n\t\t}\n\t}, [])\n\n if (selectedApp.authentication === undefined) {\n return null;\n }\n\n\tconst startOauth2Request = (admin_consent) => {\n\t\t// Admin consent also means to add refresh tokens\n\t\tconsole.log(\"Inside oauth2 request for app: \", selectedApp.name)\n\t\tselectedApp.name = selectedApp.name.replace(\" \", \"_\").toLowerCase()\n\n\t\t//console.log(\"APP: \", selectedApp)\n\t\tif (selectedApp.name.toLowerCase() == \"outlook_graph\" || selectedApp.name.toLowerCase() == \"outlook_office365\") {\n\t\t\thandleOauth2Request(\n\t\t\t\t\"efe4c3fe-84a1-4821-a84f-23a6cfe8e72d\",\n\t\t\t\t\"\",\n\t\t\t\t\"https://graph.microsoft.com\",\n\t\t\t\t[\"Mail.ReadWrite\", \"Mail.Send\", \"offline_access\"],\n\t\t\t\tadmin_consent,\n\t\t\t);\n\t\t} else if (selectedApp.name.toLowerCase() == \"gmail\") {\n\t\t\thandleOauth2Request(\n\t\t\t\t\"253565968129-6ke8086pkp0at16m8t95rdcsas69ngt1.apps.googleusercontent.com\",\n\t\t\t\t\"\",\n\t\t\t\t\"https://gmail.googleapis.com\",\n\t\t\t\t[\"https://www.googleapis.com/auth/gmail.modify\",\n\t\t\t\t\t\"https://www.googleapis.com/auth/gmail.send\",\n\t\t\t\t\t\"https://www.googleapis.com/auth/gmail.insert\",\n\t\t\t\t\t\"https://www.googleapis.com/auth/gmail.compose\",\n\t\t\t\t\t],\n\t\t\t\tadmin_consent,\n\t\t\t\t\"select_account%20consent\", \n\t\t\t)\n\t\t} else if (selectedApp.name.toLowerCase() == \"zoho_desk\") {\n\t\t\thandleOauth2Request(\n\t\t\t\t\"1000.ZR5MHUW6B0L6W1VUENFGIATFS0TOJT\",\n\t\t\t\t\"\",\n\t\t\t\t\"https://desk.zoho.com\",\n\t\t\t\t[\"Desk.tickets.READ\",\n\t\t\t\t\"Desk.tickets.UPDATE\",\n\t\t\t\t\"Desk.tickets.DELETE\",\n\t\t\t\t\"Desk.tickets.CREATE\",\n\t\t\t\t\"offline_access\"],\n\t\t\t\tadmin_consent,\n\t\t\t)\n\t\t} else if (selectedApp.name.toLowerCase() == \"slack\") {\n\t\t\thandleOauth2Request(\n\t\t\t\t\"5155508477298.5168162485601\",\n\t\t\t\t\"\",\n\t\t\t\t\"https://slack.com\",\n\t\t\t\t[\"chat:write:user\", \"im:read\", \"im:write\", \"search:read\", \"usergroups:read\", \"usergroups:write\",],\n\t\t\t\tadmin_consent,\n\t\t\t)\n\t\t} else if (selectedApp.name.toLowerCase() == \"webex\") {\n\t\t\thandleOauth2Request(\n\t\t\t\t\"Cab184f3d7271f540443c79b5b79845e3387abbbdb3db4233a87ea3a5432fb3d5\",\n\t\t\t\t\"\",\n\t\t\t\t\"https://webexapis.com\",\n\t\t\t\t[\"spark:all\"],\n\t\t\t\tadmin_consent,\n\t\t\t)\n\t\t} else if (selectedApp.name.toLowerCase().includes(\"microsoft_teams\")) {\n\t\t\thandleOauth2Request(\n\t\t\t\t\"31cb4c84-658e-43d5-ae84-22c9142e967a\",\n\t\t\t\t\"\",\n\t\t\t\t\"https://graph.microsoft.com\",\n\t\t\t\t[\"ChannelMessage.Edit\", \"ChannelMessage.Read.All\", \"ChannelMessage.Send\", \"Chat.Create\", \"Chat.ReadWrite\", \"Chat.Read\", \"offline_access\"],\n\t\t\t\tadmin_consent,\n\t\t\t)\n\t\t} else if (selectedApp.name.toLowerCase().includes(\"todoist\")) {\n\t\t\thandleOauth2Request(\n\t\t\t\t\"35fa3a384040470db0c8527e90a3c2eb\",\n\t\t\t\t\"\",\n\t\t\t\t\"https://api.todoist.com\",\n\t\t\t\t[\"task:add\",],\n\t\t\t\tadmin_consent,\n\t\t\t)\n\t\t} else if (selectedApp.name.toLowerCase().includes(\"microsoft_sentinel\")) {\n\t\t\thandleOauth2Request(\n\t\t\t\t\"4c16e8c4-3d34-4aa1-ac94-262ea170b7f7\",\n\t\t\t\t\"\",\n\t\t\t\t\"https://management.azure.com\",\n\t\t\t\t[\"https://management.azure.com/user_impersonation\",],\n\t\t\t\tadmin_consent,\n\t\t\t)\n\t\t} else if (selectedApp.name.toLowerCase().includes(\"microsoft_365_defender\")) {\n\t\t\thandleOauth2Request(\n\t\t\t\t\"4c16e8c4-3d34-4aa1-ac94-262ea170b7f7\",\n\t\t\t\t\"\",\n\t\t\t\t\"https://graph.microsoft.com\",\n\t\t\t\t[\"SecurityEvents.ReadWrite.All\",],\n\t\t\t\tadmin_consent,\n\t\t\t)\n\t\t} else if (selectedApp.name.toLowerCase().includes(\"google_sheets\")) {\n\t\t\thandleOauth2Request(\n\t\t\t\t\"253565968129-mppu17aciek8slr3kpgnb37hp86dmvmb.apps.googleusercontent.com\",\n\t\t\t\t\"\",\n\t\t\t\t\"https://sheets.googleapis.com\",\n\t\t\t\t[\"https://www.googleapis.com/auth/spreadsheets\"],\n\t\t\t\tadmin_consent,\n\t\t\t\t\"consent\",\n\t\t\t)\n\t\t} else if (selectedApp.name.toLowerCase().includes(\"google_drive\") || selectedApp.name.toLowerCase().includes(\"google_disk\")) {\n\t\t\thandleOauth2Request(\n\t\t\t\t\"253565968129-6pij4g6ojim4gpum0h9m9u3bc357qsq7.apps.googleusercontent.com\",\n\t\t\t\t\"\",\n\t\t\t\t\"https://www.googleapis.com\",\n\t\t\t\t[\"https://www.googleapis.com/auth/drive\",],\n\t\t\t\tadmin_consent,\n\t\t\t\t\"consent\",\n\t\t\t)\n\t\t} else if (selectedApp.name.toLowerCase().includes(\"jira_service_desk\") || selectedApp.name.toLowerCase().includes(\"jira\") || selectedApp.name.toLowerCase().includes(\"jira_service_management\")) {\n\t\t\thandleOauth2Request(\n\t\t\t\t\"AI02egeCQh1Zskm1QAJaaR6dzjR97V2F\",\n\t\t\t\t\"\",\n\t\t\t\t\"https://api.atlassian.com\",\n\t\t\t\t[\"read:jira-work\", \"write:jira-work\", \"read:servicedesk:jira-service-management\", \"write:servicedesk:jira-service-management\", \"read:request:jira-service-management\", \"write:request:jira-service-management\",],\n\t\t\t\tadmin_consent,\n\t\t\t)\n\t\t} else if (selectedApp.name.toLowerCase().includes(\"github\")) {\n\t\t\thandleOauth2Request(\n\t\t\t\t\"3d272b1b782b100b1e61\",\n\t\t\t\t\"\",\n\t\t\t\t\"https://api.github.com\",\n\t\t\t\t[\"repo\",\"user\",\"project\",\"notifications\",],\n\t\t\t\tadmin_consent,\n\t\t\t)\n\t\t} else {\n\t\t\tconsole.log(\"No match found for: \", selectedApp.name)\n\t\t}\n\t\t// write:request:jira-service-management\n\t}\n\n\n const handleOauth2Request = (client_id, client_secret, oauth_url, scopes, admin_consent, prompt) => {\n setButtonClicked(true);\n //console.log(\"SCOPES: \", scopes);\n\n\t\tclient_id = client_id.trim()\n\t\tclient_secret = client_secret.trim()\n\t\toauth_url = oauth_url.trim()\n\n var resources = \"\";\n if (scopes !== undefined && (scopes !== null) & (scopes.length > 0)) {\n\t\t\tconsole.log(\"IN scope 1\")\n\t\t\tif (offlineAccess === true && !scopes.includes(\"offline_access\")) {\n\n\t\t\t\tconsole.log(\"IN scope 2\")\n\t\t\t\tif (!authenticationType.redirect_uri.includes(\"google\")) {\n\t\t\t\t\tconsole.log(\"Appending offline access\")\n\t\t\t\t\tscopes.push(\"offline_access\")\n\t\t\t\t}\n\t\t\t}\n\n resources = scopes.join(\" \");\n //resources = scopes.join(\",\");\n }\n\n const authentication_url = authenticationType.token_uri;\n //console.log(\"AUTH: \", authenticationType)\n //console.log(\"SCOPES2: \", resources)\n const redirectUri = `${window.location.protocol}//${window.location.host}/set_authentication`;\n\t\tconst workflowId = workflow !== undefined ? workflow.id : \"\";\n var state = `workflow_id%3D${workflowId}%26reference_action_id%3d${selectedAction.app_id}%26app_name%3d${selectedAction.app_name}%26app_id%3d${selectedAction.app_id}%26app_version%3d${selectedAction.app_version}%26authentication_url%3d${authentication_url}%26scope%3d${resources}%26client_id%3d${client_id}%26client_secret%3d${client_secret}`;\n if (oauth_url !== undefined && oauth_url !== null && oauth_url.length > 0) {\n state += `%26oauth_url%3d${oauth_url}`;\n console.log(\"ADDING OAUTH2 URL: \", state);\n }\n\n if (\n authenticationType.refresh_uri !== undefined &&\n authenticationType.refresh_uri !== null &&\n authenticationType.refresh_uri.length > 0\n ) {\n state += `%26refresh_uri%3d${authenticationType.refresh_uri}`;\n } else {\n state += `%26refresh_uri%3d${authentication_url}`;\n }\n\n\t\t// No prompt forcing\n //var url = `${authenticationType.redirect_uri}?client_id=${client_id}&redirect_uri=${redirectUri}&response_type=code&prompt=login&scope=${resources}&state=${state}&access_type=offline`;\n\t\tvar defaultPrompt = \"login\"\n \tif (prompt !== undefined && prompt !== null && prompt.length > 0) {\n\t\t\tdefaultPrompt = prompt\n\t\t}\n\t\t\n\t\tvar url = `${authenticationType.redirect_uri}?client_id=${client_id}&redirect_uri=${redirectUri}&response_type=code&prompt=${defaultPrompt}&scope=${resources}&state=${state}&access_type=offline`;\n\n\t\tif (admin_consent === true) {\n\t\t\tconsole.log(\"Running Oauth2 WITH admin consent\")\n \t//url = `${authenticationType.redirect_uri}?client_id=${client_id}&redirect_uri=${redirectUri}&response_type=code&prompt=consent&scope=${resources}&state=${state}&access_type=offline`;\n \turl = `${authenticationType.redirect_uri}?client_id=${client_id}&redirect_uri=${redirectUri}&response_type=code&prompt=admin_consent&scope=${resources}&state=${state}&access_type=offline`;\n\t\t}\n\n\t\tconsole.log(\"URL: \", url)\n\n\t\t// Force new consent\n //const url = `${authenticationType.redirect_uri}?client_id=${client_id}&redirect_uri=${redirectUri}&response_type=code&scope=${resources}&prompt=consent&state=${state}&access_type=offline`;\n\n\t\t// Admin consent\n //const url = `https://accounts.zoho.com/oauth/v2/auth?response_type=code&client_id=${client_id}&scope=AaaServer.profile.Read&redirect_uri=${redirectUri}&prompt=consent`\n \n\t\t// &resource=https%3A%2F%2Fgraph.microsoft.com&\n\n // FIXME: Awful, but works for prototyping\n // How can we get a callback properly realtime?\n // How can we properly try-catch without breaks on error?\n try {\n var newwin = window.open(url, \"\", \"width=800,height=600\");\n //console.log(newwin)\n\n var open = true;\n const timer = setInterval(() => {\n if (newwin.closed) {\n\t\t\t\t\tconsole.log(\"Closing?\")\n\n\n setButtonClicked(false);\n clearInterval(timer);\n //alert('\"Secure Payment\" window closed!');\n\t\t\t\t\t//\n\n\t\t\t\t\tif (getAppAuthentication !== undefined) {\n \tgetAppAuthentication(true, true, true);\n\t\t\t\t\t}\n } else {\n\t\t\t\t\tconsole.log(\"Not closed\")\n\t\t\t\t}\n }, 1000);\n //do {\n //\tsetTimeout(() => {\n //\t\tconsole.log(newwin)\n //\t\tconsole.log(\"CLOSED\", newwin.closed)\n //\t\tif (newwin.closed) {\n\n //\t\t\topen = false\n //\t\t}\n //\t}, 1000)\n //}\n //while(open === true)\n } catch (e) {\n alert.error(\n \"Failed authentication - probably bad credentials. Try again\"\n );\n setButtonClicked(false);\n }\n\n return;\n //do {\n //} while (\n };\n\n authenticationOption.app.actions = [];\n\n for (var key in selectedApp.authentication.parameters) {\n if (\n authenticationOption.fields[\n selectedApp.authentication.parameters[key].name\n ] === undefined\n ) {\n authenticationOption.fields[\n selectedApp.authentication.parameters[key].name\n ] = \"\";\n }\n }\n\n const handleSubmitCheck = () => {\n console.log(\"NEW AUTH: \", authenticationOption);\n if (authenticationOption.label.length === 0) {\n authenticationOption.label = `Auth for ${selectedApp.name}`;\n //alert.info(\"Label can't be empty\")\n //return\n }\n\n // Automatically mapping fields that already exist (predefined).\n // Warning if fields are NOT filled\n for (var key in selectedApp.authentication.parameters) {\n if (\n authenticationOption.fields[\n selectedApp.authentication.parameters[key].name\n ].length === 0\n ) {\n if (\n selectedApp.authentication.parameters[key].value !== undefined &&\n selectedApp.authentication.parameters[key].value !== null &&\n selectedApp.authentication.parameters[key].value.length > 0\n ) {\n authenticationOption.fields[\n selectedApp.authentication.parameters[key].name\n ] = selectedApp.authentication.parameters[key].value;\n } else {\n if (\n selectedApp.authentication.parameters[key].schema.type === \"bool\"\n ) {\n authenticationOption.fields[\n selectedApp.authentication.parameters[key].name\n ] = \"false\";\n } else {\n alert.info(\n \"Field \" +\n selectedApp.authentication.parameters[key].name +\n \" can't be empty\"\n );\n return;\n }\n }\n }\n }\n\n console.log(\"Action: \", selectedAction);\n selectedAction.authentication_id = authenticationOption.id;\n selectedAction.selectedAuthentication = authenticationOption;\n if (\n selectedAction.authentication === undefined ||\n selectedAction.authentication === null\n ) {\n selectedAction.authentication = [authenticationOption];\n } else {\n selectedAction.authentication.push(authenticationOption);\n }\n\n setSelectedAction(selectedAction);\n\n var newAuthOption = JSON.parse(JSON.stringify(authenticationOption));\n var newFields = [];\n for (const key in newAuthOption.fields) {\n const value = newAuthOption.fields[key];\n newFields.push({\n key: key,\n value: value,\n });\n }\n\n console.log(\"FIELDS: \", newFields);\n newAuthOption.fields = newFields;\n setNewAppAuth(newAuthOption);\n //appAuthentication.push(newAuthOption)\n //setAppAuthentication(appAuthentication)\n //\n\n //if (configureWorkflowModalOpen) {\n //\tsetSelectedAction({})\n //}\n //setUpdate(authenticationOption.id)\n\n /*\n\t\t\t{selectedAction.authentication.map(data => (\n\t\t\t\n\t\t*/\n };\n\n const handleScopeChange = (event) => {\n const {\n target: { value },\n } = event;\n\n console.log(\"VALUE: \", value);\n\n // On autofill we get a the stringified value.\n setSelectedScopes(typeof value === \"string\" ? value.split(\",\") : value);\n };\n\n if (\n authenticationOption.label === null ||\n authenticationOption.label === undefined\n ) {\n authenticationOption.label = selectedApp.name + \" authentication\";\n }\n\n\n\tconst autoAuthButton = \n\t\t 0 || clientId.length > 0\n\t\t\t\t}\n\t\t\t\tfullWidth\n\t\t\t\tonClick={() => {\n\t\t\t\t\t// Hardcode some stuff?\n\t\t\t\t\t// This could prolly be added to the app itself with a \"default\" client ID \n\t\t\t\t\tstartOauth2Request()\n\t\t\t\t}}\n\t\t\t\tcolor=\"primary\"\n\t\t\t>\n\t\t\t\t{buttonClicked ? (\n\t\t\t\t\t\n\t\t\t\t) : (\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tOne-click Login\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\n\n\tif (authButtonOnly === true) {\n\t\treturn autoAuthButton\n\t}\n\n return (\n
\n \n
\n Authentication for {selectedApp.name}\n
\n
\n \n \n Oauth2 requires a client ID and secret to authenticate, defined in the remote system. Your redirect URL is {window.location.origin}/set_authentication - \n \n {\" \"}\n Learn more about Oauth2 with Shuffle\n \n
\n \n\n\t\t\t\t{isCloud && registeredApps.includes(selectedApp.name.toLowerCase()) ? \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{autoAuthButton}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t{buttonClicked ? \n\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t:\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t 0 || clientId.length > 0\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\t\t// Hardcode some stuff?\n\t\t\t\t\t\t\t\t\t\t\t// This could prolly be added to the app itself with a \"default\" client ID \n\t\t\t\t\t\t\t\t\t\t\t//startOauth2Request(true)\n\t\t\t\t\t\t\t\t\t\t\tstartOauth2Request()\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tOR\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t: null}\n {/* {\n\t\t\t\t\t\t\tauthenticationOption.label = event.target.value\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\n\t\t\t\t*/}\n\n {!manuallyConfigure ? null : (\n \n {selectedApp.authentication.parameters.map((data, index) => {\n //console.log(data, index)\n if (data.name === \"client_id\" || data.name === \"client_secret\") {\n return null;\n }\n\n if (data.name !== \"url\") {\n return null;\n }\n\n if (oauthUrl.length === 0) {\n setOauthUrl(data.value);\n }\n\n return (\n
\n \n {data.name}\n\n {data.schema !== undefined &&\n data.schema !== null &&\n data.schema.type === \"bool\" ? (\n {\n console.log(\"Value: \", e.target.value);\n authenticationOption.fields[data.name] = e.target.value;\n }}\n style={{\n backgroundColor: theme.palette.surfaceColor,\n color: \"white\",\n height: 50,\n }}\n >\n \n false\n \n \n true\n \n \n ) : (\n {\n authenticationOption.fields[data.name] =\n event.target.value;\n console.log(\"Setting oauth url\");\n setOauthUrl(event.target.value);\n //const [oauthUrl, setOauthUrl] = React.useState(\"\")\n }}\n />\n )}\n
\n );\n })}\n {\n setClientId(event.target.value);\n //authenticationOption.label = event.target.value\n }}\n />\n {\n setClientSecret(event.target.value);\n //authenticationOption.label = event.target.value\n }}\n />\n {allscopes.length === 0 ? null : (\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tScopes\n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\thandleScopeChange(e)\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\t\t\t\tinput={}\n\t\t\t\t\t\t\t\t\t\trenderValue={(selected) => selected.join(\", \")}\n\t\t\t\t\t\t\t\t\t\tMenuProps={MenuProps}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{allscopes.map((data, index) => {\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t -1} />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\tsetOfflineAccess(!offlineAccess)\n\t\t\t\t\t\t\t\t\t\t}}/>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n )}\n
\n )}\n {\n handleOauth2Request(\n clientId,\n clientSecret,\n oauthUrl,\n selectedScopes\n );\n }}\n color=\"primary\"\n >\n {buttonClicked ? (\n \n ) : (\n \"Manually Authenticate\"\n )}\n \n\n\n\n {defaultConfigSet ? (\n \n ... or\n {\n setManuallyConfigure(!manuallyConfigure);\n\n if (manuallyConfigure) {\n setClientId(authenticationType.client_id);\n setClientSecret(authenticationType.client_secret);\n } else {\n setClientId(\"\");\n setClientSecret(\"\");\n }\n }}\n color=\"primary\"\n >\n {manuallyConfigure\n ? \"Use auto-config\"\n : \"Manually configure Oauth2\"}\n \n \n ) : null}\n \n
\n );\n};\n\nexport default AuthenticationOauth2;\n","import React, { useState, useEffect } from \"react\";\nimport theme from '../theme.jsx';\nimport { v4 as uuidv4 } from \"uuid\";\n\n\nimport {\n Button,\n\tDivider,\n\tSelect,\n\tMenuItem,\n\tTextField,\n\tDialogActions,\n\tDialogTitle,\n\tDialogContent,\n\tTypography,\n} from \"@material-ui/core\";\n\nimport {\n LockOpen as LockOpenIcon,\n} from \"@material-ui/icons\";\n\nconst AuthenticationData = (props) => {\n const {\n\t\tglobalUrl,\n saveWorkflow,\n selectedApp,\n workflow,\n selectedAction,\n authenticationType,\n getAppAuthentication,\n appAuthentication,\n setSelectedAction,\n setAuthenticationModalOpen,\n\t\tisCloud,\n } = props;\n\n\tconst setNewAppAuth = (appAuthData) => {\n console.log(\"DAta: \", appAuthData);\n fetch(globalUrl + \"/api/v1/apps/authentication\", {\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify(appAuthData),\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for setting app auth :O!\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n if (!responseJson.success) {\n alert.error(\"Failed to set app auth: \" + responseJson.reason);\n } else {\n\t\t\t\t\tif (getAppAuthentication !== undefined) {\n \tgetAppAuthentication()\n\t\t\t\t\t}\n\n\t\t\t\t\tif (setAuthenticationModalOpen !== undefined) {\n\t\t\t\t\t\tsetAuthenticationModalOpen(false)\n\t\t\t\t\t}\n\n // Needs a refresh with the new authentication..\n //alert.success(\"Successfully saved new app auth\")\n }\n })\n .catch((error) => {\n //alert.error(error.toString());\n console.log(\"New auth error: \", error.toString());\n });\n }\n\n\tconst [authenticationOption, setAuthenticationOptions] = React.useState({\n\t\tapp: JSON.parse(JSON.stringify(selectedApp)),\n\t\tfields: {},\n\t\tlabel: \"\",\n\t\tusage: [\n\t\t\t{\n\t\t\t\tworkflow_id: workflow.id,\n\t\t\t},\n\t\t],\n\t\tid: uuidv4(),\n\t\tactive: true,\n\t});\n\n\tif (\n\t\tselectedApp.authentication === undefined ||\n\t\tselectedApp.authentication.parameters === null ||\n\t\tselectedApp.authentication.parameters === undefined ||\n\t\tselectedApp.authentication.parameters.length === 0\n\t) {\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{selectedApp.name} does not require authentication\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n\n\tauthenticationOption.app.actions = [];\n\n\tfor (var key in selectedApp.authentication.parameters) {\n\t\tif (\n\t\t\tauthenticationOption.fields[\n\t\t\t\tselectedApp.authentication.parameters[key].name\n\t\t\t] === undefined\n\t\t) {\n\t\t\tauthenticationOption.fields[\n\t\t\t\tselectedApp.authentication.parameters[key].name\n\t\t\t] = \"\";\n\t\t}\n\t}\n\n\tconst handleSubmitCheck = () => {\n\t\tconsole.log(\"NEW AUTH: \", authenticationOption);\n\t\tif (authenticationOption.label.length === 0) {\n\t\t\tauthenticationOption.label = `Auth for ${selectedApp.name}`;\n\t\t}\n\n\t\t// Automatically mapping fields that already exist (predefined).\n\t\t// Warning if fields are NOT filled\n\t\tfor (var key in selectedApp.authentication.parameters) {\n\t\t\tif (\n\t\t\t\tauthenticationOption.fields[\n\t\t\t\t\tselectedApp.authentication.parameters[key].name\n\t\t\t\t].length === 0\n\t\t\t) {\n\t\t\t\tif (\n\t\t\t\t\tselectedApp.authentication.parameters[key].value !== undefined &&\n\t\t\t\t\tselectedApp.authentication.parameters[key].value !== null &&\n\t\t\t\t\tselectedApp.authentication.parameters[key].value.length > 0\n\t\t\t\t) {\n\t\t\t\t\tauthenticationOption.fields[\n\t\t\t\t\t\tselectedApp.authentication.parameters[key].name\n\t\t\t\t\t] = selectedApp.authentication.parameters[key].value;\n\t\t\t\t} else {\n\t\t\t\t\tif (\n\t\t\t\t\t\tselectedApp.authentication.parameters[key].schema.type === \"bool\"\n\t\t\t\t\t) {\n\t\t\t\t\t\tauthenticationOption.fields[\n\t\t\t\t\t\t\tselectedApp.authentication.parameters[key].name\n\t\t\t\t\t\t] = \"false\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\talert.info(\n\t\t\t\t\t\t\t\"Field \" +\n\t\t\t\t\t\t\t\tselectedApp.authentication.parameters[key].name +\n\t\t\t\t\t\t\t\t\" can't be empty\"\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconsole.log(\"Action: \", selectedAction);\n\t\tselectedAction.authentication_id = authenticationOption.id;\n\t\tselectedAction.selectedAuthentication = authenticationOption;\n\t\tif (\n\t\t\tselectedAction.authentication === undefined ||\n\t\t\tselectedAction.authentication === null\n\t\t) {\n\t\t\tselectedAction.authentication = [authenticationOption];\n\t\t} else {\n\t\t\tselectedAction.authentication.push(authenticationOption);\n\t\t}\n\n\t\tsetSelectedAction(selectedAction);\n\n\t\tvar newAuthOption = JSON.parse(JSON.stringify(authenticationOption));\n\t\tvar newFields = [];\n\t\tfor (const key in newAuthOption.fields) {\n\t\t\tconst value = newAuthOption.fields[key];\n\t\t\tnewFields.push({\n\t\t\t\tkey: key,\n\t\t\t\tvalue: value,\n\t\t\t});\n\t\t}\n\n\t\tconsole.log(\"FIELDS: \", newFields);\n\t\tnewAuthOption.fields = newFields;\n\t\tsetNewAppAuth(newAuthOption);\n\n\t\t//if (configureWorkflowModalOpen) {\n\t\t//\tsetSelectedAction({});\n\t\t//}\n\n\t\t//setUpdate(authenticationOption.id);\n\t};\n\n\tif (\n\t\tauthenticationOption.label === null ||\n\t\tauthenticationOption.label === undefined\n\t) {\n\t\tauthenticationOption.label = selectedApp.name + \" authentication\";\n\t}\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\tAuthentication for {selectedApp.name}\n\t\t\t\t
\n\t\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tWhat is app authentication?\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\tThese are required fields for authenticating with {selectedApp.name}\n\t\t\t\t
\n\t\t\t\tName - what is this used for?\n\t\t\t\t {\n\t\t\t\t\t\tauthenticationOption.label = event.target.value;\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t{selectedApp.authentication.parameters.map((data, index) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t{data.name}\n\n\t\t\t\t\t\t\t{data.schema !== undefined &&\n\t\t\t\t\t\t\tdata.schema !== null &&\n\t\t\t\t\t\t\tdata.schema.type === \"bool\" ? (\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\tconsole.log(\"Value: \", e.target.value);\n\t\t\t\t\t\t\t\t\t\tauthenticationOption.fields[data.name] = e.target.value;\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\tbackgroundColor: theme.palette.surfaceColor,\n\t\t\t\t\t\t\t\t\t\tcolor: \"white\",\n\t\t\t\t\t\t\t\t\t\theight: 50,\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tfalse\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\tauthenticationOption.fields[data.name] =\n\t\t\t\t\t\t\t\t\t\t\tevent.target.value;\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t
\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t\n\t\t\t\n\t\t\t\t {\n\t\t\t\t\t\tsetAuthenticationModalOpen(false);\n\t\t\t\t\t}}\n\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t>\n\t\t\t\t\tCancel\n\t\t\t\t\n\t\t\t\t {\n\t\t\t\t\t\tsetAuthenticationOptions(authenticationOption);\n\t\t\t\t\t\thandleSubmitCheck();\n\t\t\t\t\t}}\n\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t>\n\t\t\t\t\tSubmit\n\t\t\t\t\n\t\t\t\n\t\t
\n\t);\n};\n\nexport default AuthenticationData \n","import React, { useState, useEffect } from 'react';\n\nimport theme from '../theme.jsx';\nimport AppSearch from './Appsearch.jsx';\n\nimport {\n Paper,\n\tTypography,\n\tDivider,\n\tIconButton, \n\tBadge,\n CircularProgress,\n\tTooltip,\n\tButton,\n} from \"@material-ui/core\";\n\nimport {\n\tClose as CloseIcon,\n Delete as DeleteIcon,\n} from \"@material-ui/icons\";\n\nconst AppSearchPopout = (props) => {\n const { \n\t\tcy,\n\t\tpaperTitle,\n\t\tsetPaperTitle,\n\t\tnewSelectedApp,\n\t\tsetNewSelectedApp,\n\t\tselectionOpen,\n\t\tsetSelectionOpen,\n\t\tdiscoveryData,\n\t\tsetDiscoveryData,\n\t\tuserdata,\n\t} = props;\n\n\tconst [defaultSearch, setDefaultSearch] = React.useState(paperTitle !== undefined ? paperTitle : \"\")\n\n\tif (selectionOpen !== true) {\n\t\treturn null\n\t}\n\t\n\treturn (\n\t\t\n\t\t\t\t{paperTitle !== undefined && paperTitle.length > 0 ? \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{paperTitle}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t: null}\n\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\t//cy.elements().unselectify();\n\t\t\t\t\t\t\tif (cy !== undefined) {\n\t\t\t\t\t\t\t\tcy.elements().unselect()\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\tsetSelectionOpen(false)\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{/* {/*Causes errors in Cytoscape. Removing for now.}\n\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\tsetDiscoveryData({\n\t\t\t\t\t\t\t\t\"id\": discoveryData.id,\n\t\t\t\t\t\t\t\t\"label\": discoveryData.label,\n\t\t\t\t\t\t\t\t\"name\": \"\"\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\tsetNewSelectedApp({\n\t\t\t\t\t\t\t\t\"image_url\": \"\",\n\t\t\t\t\t\t\t\t\"name\": \"\",\n\t\t\t\t\t\t\t\t\"id\": \"\",\n\t\t\t\t\t\t\t\t\"objectID\": \"remove\",\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\tsetSelectionOpen(true)\n\t\t\t\t\t\t\tsetDefaultSearch(\"\")\n\n\t\t\t\t\t\t\tconst foundelement = cy.getElementById(discoveryData.id)\n\t\t\t\t\t\t\tif (foundelement !== undefined && foundelement !== null) {\n\t\t\t\t\t\t\t\tconsole.log(\"element: \", foundelement)\n\t\t\t\t\t\t\t\tfoundelement.data(\"large_image\", discoveryData.large_image)\n\t\t\t\t\t\t\t\tfoundelement.data(\"text_margin_y\", \"14px\")\n\t\t\t\t\t\t\t\tfoundelement.data(\"margin_x\", \"32px\")\n\t\t\t\t\t\t\t\tfoundelement.data(\"margin_y\", \"19x\")\n\t\t\t\t\t\t\t\tfoundelement.data(\"width\", \"45px\")\n\t\t\t\t\t\t\t\tfoundelement.data(\"height\", \"45px\")\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\tsetDiscoveryData({})\n\t\t\t\t\t\t\t\tsetNewSelectedApp({})\n\t\t\t\t\t\t\t}, 1000)\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t*/}\n\t\t\t\t
\n\t\t\t\t\t{discoveryData.name !== undefined && discoveryData.name !== null && discoveryData.name.length > 0 ? \n\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t{discoveryData.id} 0 ? newSelectedApp.image_url : discoveryData.large_image} style={{height: 40, width: 40, margin: \"auto\",}}/>\n\t\t\t\t\t\t
\n\t\t\t\t\t: \n\t\t\t\t\t\t{discoveryData.id}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t\t{discoveryData.name !== undefined && discoveryData.name !== null && discoveryData.name.length > 0 ? \n\t\t\t\t\t\t\tdiscoveryData.name\n\t\t\t\t\t\t\t: \n\t\t\t\t\t\t\tnewSelectedApp.name !== undefined && newSelectedApp.name !== null && newSelectedApp.name.length > 0 ?\n\t\t\t\t\t\t\t\tnewSelectedApp.name\n\t\t\t\t\t\t\t\t: \n\t\t\t\t\t\t\t\t`No ${discoveryData.label} app chosen`\n\t\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t{discoveryData !== undefined && discoveryData.name !== undefined && discoveryData.name !== null && discoveryData.name.length > 0 ? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{discoveryData.description}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t{/*isCloud && defaultSearch !== undefined && defaultSearch.length > 0 ? \n\t\t\t\t\t\t\t\t{<\n\t\t\t\t\t\t\t\t\tnewSelectedApp={newSelectedApp}\n\t\t\t\t\t\t\t\t\tsetNewSelectedApp={setNewSelectedApp}\n\t\t\t\t\t\t\t\t\tdefaultSearch={defaultSearch}\n\t\t\t\t\t\t\t\t/>}\n\t\t\t\t\t\t\t\t: \n\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t*/}\n\t\t\t\t\t\t\n\t\t\t\t\t: \n\t\t\t\t\t\tselectionOpen \n\t\t\t\t\t\t\t? \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tClick an app below to select it\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t:\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tsetSelectionOpen(true)\n\t\t\t\t\t\t\t\t\tsetDefaultSearch(discoveryData.label)\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tChoose {discoveryData.label} app\n\t\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t{selectionOpen ? \n\t\t\t\t\t\t\n\t\t\t\t\t: null}\n\t\t\t\t
\n\t\t\t
\n\t\t)\n}\n\nexport default AppSearchPopout;\n","import React, { useState, useEffect } from \"react\";\nimport theme from '../theme.jsx';\nimport { useNavigate, Link } from \"react-router-dom\";\nimport { useAlert } from \"react-alert\";\nimport ConfigureWorkflow from \"../components/ConfigureWorkflow.jsx\";\nimport PaperComponent from \"../components/PaperComponent.jsx\"\nimport AuthenticationOauth2 from \"../components/Oauth2Auth.jsx\";\nimport AuthenticationNormal from \"../components/AuthenticationNormal.jsx\";\nimport AppsearchPopout from \"../components/AppsearchPopout.jsx\";\n\nimport {\n\tExpandLess as ExpandLessIcon,\n\tExpandMore as ExpandMoreIcon,\n\tAddCircleOutline as AddCircleOutlineIcon,\n Delete as DeleteIcon,\n Description as DescriptionIcon,\n\tClose as CloseIcon,\n} from '@mui/icons-material';\n\nimport {\n\t\tDialog,\n\t\tIconButton,\n\t\tTypography, \n\t\tButton,\n\t\tCircularProgress, \n\t\tTooltip,\n\t\tDivider,\n} from \"@material-ui/core\";\n\nconst defaultValue = {\"id\": \"\", \"name\": \"Build your own\", \n\t\t\"source\": {\"text\": \"No trigger selected\", \"error\": \"\"}, \n\t\t\"destination\": {\"text\": \"No subflow selected\", \"error\": \"\"}, \n\t\t\"middle\": []\n}\n\nexport const usecaseTypes = [{\n\t\"name\": \"enrichment\",\n\t\"aliases\": [\"enrichment\", \"enrich\"],\n\t\"value\": [{\n\t\t\"name\": \"EDR Ticket Enrichment\",\n\t\t\"usecase_references\": [\"EDR to ticket\"],\n\t\t\"active\": true,\n\t\t\"items\": [{\n\t\t\t\"name\": \"When an EDR alert is found\",\n\t\t\t\"app_type\": \"edr\",\n\t\t\t\"type\": \"trigger\",\n\t\t}, {\t\n\t\t\t\"name\": \"Create a ticket\",\n\t\t\t\"app_type\": \"cases\",\n\t\t\t\"type\": \"subflow\",\n\t\t}],\n\t},\n\t{\n\t\t\"name\": \"SIEM alert Enrichment\",\n\t\t\"aliases\": [\"siem alert enrichment\", \"siem alert enrich\"],\n\t\t\"usecase_references\": [\"SIEM to ticket\"],\n\t\t\"active\": true,\n\t\t\"items\": [{\n\t\t\t\"name\": \"When a SIEM alert is found\",\n\t\t\t\"app_type\": \"siem\",\n\t\t\t\"type\": \"trigger\",\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Create a ticket\",\n\t\t\t\"app_type\": \"cases\",\n\t\t\t\"type\": \"subflow\",\n\t\t}],\n\t},\n\t{\n\t\t\"name\": \"Email Enrichment\",\n\t\t\"aliases\": [\"email enrichment\", \"email enrich\"],\n\t\t\"usecase_references\": [\"Email management\"],\n\t\t\"active\": true,\n\t\t\"items\": [{\n\t\t\t\"name\": \"When I get an email\",\n\t\t\t\"app_type\": \"email\",\n\t\t\t\"type\": \"trigger\",\n\t\t},\n\t\t{\n\t\t\t\"name\": \"Create a ticket\",\n\t\t\t\"app_type\": \"cases\",\n\t\t\t\"type\": \"subflow\",\n\t\t}],\n\t}]\n},\n{\n\t\"name\": \"phishing\",\n\t\"aliases\": [\"ransomware\", \"ransomware handling\"],\n\t\"value\": [\n\t\t{\n\t\t\t\"name\": \"Email analysis\",\n\t\t\t\"usecase_references\": [\"Email management\"],\n\t\t\t\"active\": true,\n\t\t\t\"items\": [{\n\t\t\t\t\"name\": \"When I get an email\",\n\t\t\t\t\"app_type\": \"email\",\n\t\t\t\t\"type\": \"trigger\",\n\t\t\t},{\n\t\t\t\t\"name\": \"Create a ticket\",\n\t\t\t\t\"app_type\": \"cases\",\n\t\t\t\t\"type\": \"subflow\",\n\t\t\t}],\n\t\t}]\n\t},\n\t{\n\t\"name\": \"detection\",\n\t\"aliases\": [\"detection\", \"detect\", \"siem alerts\", \"new detections\",],\n\t\"value\": [\n\t\t{\n\t\t\t\"name\": \"Sigma rule detection\",\n\t\t\t\"active\": false,\n\t\t\t\"items\": [{\n\t\t\t\t\"name\": \"When a sigma rule triggers\",\n\t\t\t\t\"app_type\": \"siem\",\n\t\t\t\t\"type\": \"trigger\",\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Create a ticket\",\n\t\t\t\t\"app_type\": \"cases\",\n\t\t\t\t\"type\": \"subflow\",\n\t\t\t}],\n\t\t}]\n\t},\n\t{\n\t\"name\": \"response\",\n\t\"aliases\": [\"response\", \"respond\", \"exploits\", \"eradication\",],\n\t\"value\": [\n\t\t{\n\t\t\t\"name\": \"EDR host isolation\",\n\t\t\t\"active\": false,\n\t\t\t\"items\": [{\n\t\t\t\t\"name\": \"When exploits are detected\",\n\t\t\t\t\"app_type\": \"edr\",\n\t\t\t\t\"type\": \"trigger\",\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Isolate the host\",\n\t\t\t\t\"app_type\": \"edr\",\n\t\t\t\t\"type\": \"subflow\",\n\t\t\t}],\n\t\t}]\n\t},\n\t{\n\t\"name\": \"vulnerabilities\",\n\t\"aliases\": [],\n\t\"value\": [\n\t\t{\n\t\t\t\"name\": \"Vulnerability is found\",\n\t\t\t\"active\": false,\n\t\t\t\"items\": [{\n\t\t\t\t\"name\": \"When a vulnerability is found\",\n\t\t\t\t\"app_type\": \"assets\",\n\t\t\t\t\"type\": \"trigger\",\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Patch the vulnerability\",\n\t\t\t\t\"app_type\": \"edr\",\n\t\t\t\t\"type\": \"subflow\",\n\t\t\t}],\n\t\t}]\n\t},\n\t{\n\t\"name\": \"approvals\",\n\t\"aliases\": [\"approval\"],\n\t\"value\": [\n\t\t{\n\t\t\t\"name\": \"Approval is needed\",\n\t\t\t\"active\": false,\n\t\t\t\"items\": [{\n\t\t\t\t\"name\": \"When approval is needed\",\n\t\t\t\t\"app_type\": \"iam\",\n\t\t\t\t\"type\": \"trigger\",\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"name\": \"Notify the user\",\n\t\t\t\t\"app_type\": \"communication\",\n\t\t\t\t\"type\": \"subflow\",\n\t\t\t}],\n\t\t}]\n\t},\n]\n\nexport const triggerlist = [\n\t{\n\t\t\"app_id\": \"\",\n\t\t\"app_name\": \"\",\n\t\t\"app_version\": \"\",\n\t\t\"text\": \"No trigger selected\",\n\t\t\"image\": \"\",\n\t\t\"type\": \"\",\n\t\t\"action_type\": \"\",\n\t\t\"error\": \"\",\n\t},\n\t{\n\t\t\"app_id\": \"\",\n\t\t\"app_name\": \"\",\n\t\t\"app_version\": \"\",\n\t\t\"text\": \"When I get an email\",\n\t\t\"image\": \"\",\n\t\t\"type\": \"email\",\n\t\t\"action_type\": \"receive\",\n\t},\n\t{\n\t\t\"app_id\": \"\",\n\t\t\"app_name\": \"\",\n\t\t\"app_version\": \"\",\n\t\t\"text\": \"When a ticket is created\",\n\t\t\"image\": \"\",\n\t\t\"type\": \"cases\",\n\t\t\"action_type\": \"case_opened\",\n\t},\n\t{\n\t\t\"app_id\": \"\",\n\t\t\"app_name\": \"\",\n\t\t\"app_version\": \"\",\n\t\t\"text\": \"When an EDR alert is found\",\n\t\t\"image\": \"\",\n\t\t\"type\": \"edr\",\n\t\t\"action_type\": \"case_opened\",\n\t},\n\t{\n\t\t\"app_id\": \"\",\n\t\t\"app_name\": \"\",\n\t\t\"app_version\": \"\",\n\t\t\"text\": \"When a SIEM alert is found\",\n\t\t\"image\": \"\",\n\t\t\"type\": \"siem\",\n\t\t\"action_type\": \"case_opened\",\n\t},\n\t{\n\t\t\"app_id\": \"\",\n\t\t\"app_name\": \"\",\n\t\t\"app_version\": \"\",\n\t\t\"text\": \"When a sigma rule triggers\",\n\t\t\"image\": \"\",\n\t\t\"type\": \"siem\",\n\t\t\"action_type\": \"case_opened\",\n\t\t\"disabled\": true,\n\t},\n\t{\n\t\t\"app_id\": \"\",\n\t\t\"app_name\": \"\",\n\t\t\"app_version\": \"\",\n\t\t\"text\": \"When malicious endpoint activity is detected\",\n\t\t\"image\": \"\",\n\t\t\"type\": \"edr\",\n\t\t\"action_type\": \"case_opened\",\n\t\t\"disabled\": true,\n\t}\n]\n\nexport const midflows = [\n\t{\n\t\t\"app_id\": \"\",\n\t\t\"app_name\": \"\",\n\t\t\"app_version\": \"\",\n\t\t\"text\": \"Enrich\",\n\t\t\"image\": \"\",\n\t\t\"type\": \"intel\",\n\t\t\"action_type\": \"enrich\",\n\t},\n\t{\n\n\t\t\"app_id\": \"\",\n\t\t\"app_name\": \"\",\n\t\t\"app_version\": \"\",\n\t\t\"text\": \"Analyze\",\n\t\t\"image\": \"\",\n\t\t\"type\": \"intel\",\n\t\t\"action_type\": \"analyze\",\n\t\t\"disabled\": true,\n\t}\n]\n\nexport const subflows = [\n\t{\n\t\t\"app_id\": \"\",\n\t\t\"app_name\": \"\",\n\t\t\"app_version\": \"\",\n\t\t\"text\": \"No subflow selected\",\n\t\t\"image\": \"\",\n\t\t\"type\": \"\",\n\t\t\"action_type\": \"\",\n\t\t\"error\": \"\",\n\t},\n\t{\n\t\t\"app_id\": \"\",\n\t\t\"app_name\": \"\",\n\t\t\"app_version\": \"\",\n\t\t\"text\": \"Create a ticket\",\n\t\t\"image\": \"\",\n\t\t\"type\": \"cases\",\n\t\t\"action_type\": \"case_create\",\n\t},\n\t{\n\t\t\"app_id\": \"\",\n\t\t\"app_name\": \"\",\n\t\t\"app_version\": \"\",\n\t\t\"text\": \"Update a ticket\",\n\t\t\"image\": \"\",\n\t\t\"type\": \"cases\",\n\t\t\"action_type\": \"case_update\",\n\t\t\"disabled\": true,\n\t\t//\"source_type\": \"case_opened\",\n\t},\n\t{\n\t\t\"app_id\": \"\",\n\t\t\"app_name\": \"\",\n\t\t\"app_version\": \"\",\n\t\t\"text\": \"Answer the sender\",\n\t\t\"image\": \"\",\n\t\t\"type\": \"email\",\n\t\t\"action_type\": \"send\",\n\t\t\"disabled\": true,\n\t\t//\"source_type\": \"case_opened\",\n\t},\n\t{\n\t\t\"app_id\": \"\",\n\t\t\"app_name\": \"\",\n\t\t\"app_version\": \"\",\n\t\t\"text\": \"Isolate the host\",\n\t\t\"image\": \"\",\n\t\t\"type\": \"edr\",\n\t\t\"action_type\": \"respond\",\n\t\t\"disabled\": true,\n\t\t//\"source_type\": \"case_opened\",\n\t},\n]\n\nconst UsecaseSearch = (props) => {\n\tconst { defaultSearch, appFramework, globalUrl, showTitle, canExpand, apps, setFoundWorkflowId, getFramework, userdata, usecaseSearch, setUsecaseSearch, autotry, setCloseWindow, sourceapp, destinationapp} = props\n\n\t\t\n const [allusecases, setAllUsecases] = React.useState([\n\t\tJSON.parse(JSON.stringify(defaultValue))\n\t])\n\tconst [searchType, setSearchType] = React.useState(\"\")\n\tconst [usecaseIndex, setUsecaseIndex] = React.useState(0)\n const [_, setUpdate] = useState(\"\"); // Used for rendring, don't remove\n\tconst [isUploading, setIsUploading] = React.useState(false)\n\tconst [configureWorkflowModalOpen, setConfigureWorkflowModalOpen] = React.useState(false);\n\tconst [configureWorkflowAuth, setConfigureWorkflowAuth] = React.useState([]);\n const [workflow, setWorkflow] = React.useState({});\n const [appAuthentication, setAppAuthentication] = React.useState([]);\n const [authenticationType, setAuthenticationType] = React.useState(\"\");\n const [authenticationModalOpen, setAuthenticationModalOpen] = React.useState(false);\n const [selectedApp, setSelectedApp] = React.useState({});\n const [selectedAction, setSelectedAction] = React.useState({});\n const [firstRequest, setFirstRequest] = React.useState(true);\n\n const isCloud = window.location.host === \"localhost:3002\" || window.location.host === \"shuffler.io\";\n const alert = useAlert()\n\n\tuseEffect(() => {\n\t\t// if (firstRequest !== true && workflow.id !== undefined && autotry === true && setUsecaseSearch !== undefined && authenticationModalOpen === false && configureWorkflowModalOpen === false) {\n\t\t//\n\t\tif (autotry === true && configureWorkflowModalOpen === false && workflow.id !== undefined && setUsecaseSearch !== undefined) {\n\t\t\tconsole.log(\"Close it?\")\n\t\t\talert.info(\"Workflow successfully added! Add more apps, and we will suggest more workflows\")\n\n\t\t\tif (setCloseWindow !== undefined) {\n\t\t\t\tsetCloseWindow(true)\n\t\t\t}\n\t\t\tsetUsecaseSearch(\"\")\n\t\t}\n\t}, [configureWorkflowModalOpen])\n\n\tconst rerunWorkflowCheck = (defaultSearch, usecaseSearch) => {\n\t\tconst foundusecase = usecaseTypes.find(data => data.name.toLowerCase() === defaultSearch.toLowerCase())\n\n\t\t//console.log(\"FOUND: \", usecaseTypes, defaultSearch.toLowerCase(), foundusecase)\n\t\n\t\tif (foundusecase !== undefined && foundusecase !== null) {\n\t\t\t// Just choose the first one.\n\t\t\tif (foundusecase.value !== undefined && foundusecase.value !== null && foundusecase.value.length > 0) {\n\t\t\t\tvar selectedusecase = foundusecase.value[0]\n\t\t\t\tif (usecaseSearch !== undefined && usecaseSearch !== null) {\n\t\t\t\t\tconst foundSubcase = foundusecase.value.find(usecase => usecase.name.toLowerCase() === usecaseSearch.toLowerCase())\n\t\t\t\t\tif (foundSubcase !== undefined && foundSubcase !== null) {\n\t\t\t\t\t\tselectedusecase = foundSubcase\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar newitem = JSON.parse(JSON.stringify(defaultValue))\n\n\t\t\t\tfor (var key in selectedusecase.items) {\n\t\t\t\t\t// Check in different types\n\t\t\t\t\tconst itemname = selectedusecase.items[key].name.toLowerCase()\n\t\t\t\t\tconst trigger = triggerlist.find(data => data.text.toLowerCase() === itemname)\n\t\t\t\t\tif (trigger !== undefined && trigger !== null) {\n\t\t\t\t\t\tnewitem.name = selectedusecase.name\n\t\t\t\t\t\tnewitem.source = trigger\n\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\n\t\t\t\t\tconst midflow = midflows.find(data => data.text.toLowerCase() === itemname)\n\t\t\t\t\tif (midflow !== undefined && midflow !== null) {\n\t\t\t\t\t\tnewitem.name = selectedusecase.name\n\t\t\t\t\t\tnewitem.middle.push(midflow)\n\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\n\t\t\t\t\tconst subflow = subflows.find(data => data.text.toLowerCase() === itemname)\n\t\t\t\t\tif (subflow !== undefined && subflow !== null) {\n\t\t\t\t\t\tnewitem.name = selectedusecase.name \n\t\t\t\t\t\tnewitem.destination = subflow \n\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tsetAllUsecases([newitem])\n\t\t\t\tsetUpdate(Math.random())\n\t\t\t}\n\t\t} else {\n\t\t\tsetAllUsecases([JSON.parse(JSON.stringify(defaultValue))])\n\t\t\tsetUpdate(Math.random())\n\t\t}\n\t}\n\n \tif (defaultSearch !== undefined && defaultSearch !== null && defaultSearch !== searchType) {\n\t\tsetSearchType(defaultSearch)\n\t\tsetUsecaseIndex(0)\n\t\trerunWorkflowCheck(defaultSearch, usecaseSearch)\n\t} \n\n\n\t//if (defaultSearch !== undefined && defaultSearch.length > 0 && allusecases[usecaseIndex].name === \"\") {\n\t//\trerunWorkflowCheck()\n\t//}\n\n\t/*\n\t\tdefaultSearch === \"Enrichment\" ?\n\t\t\t[{\n\t\t\t\t\"id\": \"\",\n\t\t\t\t\"source\": {\n\t\t\t\t\t\"app_id\": \"\",\n\t\t\t\t\t\"app_name\": \"\",\n\t\t\t\t\t\"app_version\": \"\",\n\t\t\t\t\t\"text\": \"When I get an email\",\n\t\t\t\t\t\"image\": \"\",\n\t\t\t\t\t\"type\": \"email\",\n\t\t\t\t\t\"action_type\": \"receive\",\n\t\t\t\t},\n\t\t\t\t\"middle\": [{\n\t\t\t\t\t\"app_id\": \"\",\n\t\t\t\t\t\"app_name\": \"\",\n\t\t\t\t\t\"app_version\": \"\",\n\t\t\t\t\t\"text\": \"Enrich the data\",\n\t\t\t\t\t\"image\": \"\",\n\t\t\t\t\t\"type\": \"intel\",\n\t\t\t\t\t\"action_type\": \"case_create\",\n\t\t\t\t}],\n\t\t\t\t\"destination\": {\n\t\t\t\t\t\"app_id\": \"\",\n\t\t\t\t\t\"app_name\": \"\",\n\t\t\t\t\t\"app_version\": \"\",\n\t\t\t\t\t\"text\": \"Create a ticket\",\n\t\t\t\t\t\"image\": \"\",\n\t\t\t\t\t\"type\": \"cases\",\n\t\t\t\t\t\"action_type\": \"case_create\",\n\t\t\t\t},\n\t\t\t}]\n\t\t: []\n\t)\n\t*/\n\n\t/*\n\tif (defaultSearch === undefined || defaultSearch === null || defaultSearch.length === 0) {\n\t\treturn (\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\tChoose a Usecase \n\t\t\t\t\n\t\t\t
\n\t\t)\n\t}\n\t*/\n\n\t// Image = the source EMAIL system used\n\tvar usecases = JSON.parse(JSON.stringify(allusecases))\n\n\tconst imagestyle = {\n\t\theight: 40,\n\t\twidth: 40,\n\t\tborderRadius: 25, \n\t\tborder: \"1px solid rgba(255,255,255,0.7)\",\n\t\tcursor: \"pointer\",\n\t}\n\n\tconst getType = (inputtype) => {\n\t\tif (inputtype === undefined) {\n\t\t\treturn inputtype\n\n\t\t}\n\n\t\tif (inputtype.toLowerCase() === \"email\" || inputtype.toLowerCase() === \"comms\") {\n\t\t\tinputtype = \"communication\"\n\t\t}\n\n\t\treturn inputtype\n\t}\n\n\t// FIXME: Add a way for it to automatically discover\n\t// relevant workflows from the app at this point\n\t// or maybe it should be added directly to the app frameworks'\n\t// data\n\n const getAppAuthentication = (updateAction) => {\n fetch(globalUrl + \"/api/v1/apps/authentication\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n\t\t.then((response) => {\n\t\t\tif (response.status !== 200) {\n\t\t\t\tconsole.log(\"Status not 200 for app auth :O!\");\n\t\t\t}\n\n\t\t\treturn response.json();\n\t\t})\n\t\t.then((responseJson) => {\n\t\t\tif (responseJson.success) {\n\t\t\t\tsetAppAuthentication(responseJson.data);\n\t\t\t}\n\t\t})\n\t\t.catch((error) => {\n\t\t\tconsole.log(\"App auth loading error: \"+error.toString());\n\t\t})\n\t}\n\n //saveWorkflow={undefined} {/*saveWorkflow*/}\n //setNewAppAuth={undefined} {/*setNewAppAuth*/}\n\tconst authenticationModal = authenticationModalOpen ? (\n {\n //if (configureWorkflowModalOpen) {\n // setSelectedAction({});\n //}\n }}\n PaperProps={{\n style: {\n\t\t\t\t\tpointerEvents: \"auto\",\n backgroundColor: theme.palette.surfaceColor,\n color: \"white\",\n minWidth: 1100,\n minHeight: 700,\n maxHeight: 700,\n padding: 15,\n overflow: \"hidden\",\n zIndex: 10012,\n\t\t\t\t\tborder: theme.palette.defaultBorder,\n },\n }}\n >\n \n {selectedApp.reference_info === undefined ||\n selectedApp.reference_info === null ||\n selectedApp.reference_info.github_url === undefined ||\n selectedApp.reference_info.github_url === null ||\n selectedApp.reference_info.github_url.length === 0 ? (\n \n \n \n ) : (\n \n \n \n )}\n
\n {\n setAuthenticationModalOpen(false);\n if (configureWorkflowModalOpen) {\n setSelectedAction({});\n }\n }}\n >\n \n \n
\n \n {authenticationType.type === \"oauth2\" ? (\n \n ) : (\n \n )}\n
\n \n {selectedApp.documentation === undefined ||\n selectedApp.documentation === null ||\n selectedApp.documentation.length === 0 ? (\n \n \n {selectedApp.description}\n \n \n \n There is currently no extended documentation available for this\n app.\n \n \n Want help help making or using this app?{\" \"}\n \n Join the community on Discord!\n \n \n\n \n Want to help change this app directly?\n \n {selectedApp.reference_info === undefined ||\n selectedApp.reference_info === null ||\n selectedApp.reference_info.github_url === undefined ||\n selectedApp.reference_info.github_url === null ||\n selectedApp.reference_info.github_url.length === 0 ? (\n \n \n \n Check it out on Github!\n \n \n \n ) : (\n \n \n \n Check it out on Github!\n \n \n \n )}\n \n ) : \n\t\t\t\t\t\tnull\n }\n
\n
\n \n ) : null\n\n\tconst deleteWorkflow = (workflow_id) => {\n fetch(globalUrl + \"/api/v1/workflows/\" + workflow_id, {\n method: \"DELETE\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n\t\t.then((response) => {\n\t\t\tif (response.status !== 200) {\n\t\t\t\tconsole.log(\"Status not 200 for workflows :O!\");\n\t\t\t}\n\n\t\t\treturn response.json();\n\t\t})\n\t\t.then((responseJson) => {\n\t\t\tconsole.log(\"Deleted workflow\")\n\t\t})\n\t\t.catch((error) => {\n\t\t\t//alert.error(error.toString());\n\t\t\tconsole.log(\"Delete workflow error: \", error.toString());\n\t\t})\n\t}\n\n\tconst getWorkflow = (workflow_id) => {\n fetch(globalUrl + \"/api/v1/workflows/\" + workflow_id, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n\t\t.then((response) => {\n\t\t\tif (response.status !== 200) {\n\t\t\t\tconsole.log(\"Status not 200 for workflows :O!\");\n\t\t\t}\n\n\t\t\treturn response.json();\n\t\t})\n\t\t.then((responseJson) => {\n\t\t\tsetWorkflow(responseJson)\n\n\t\t\tif (window !== undefined && !window.location.href.includes(\"/workflows\")) {\n\t\t\t\tsetConfigureWorkflowModalOpen(true)\n\t\t\t}\n\t\t})\n\t\t.catch((error) => {\n\t\t\t//alert.error(error.toString());\n\t\t\tconsole.log(\"Get workflows error: \", error.toString());\n\t\t})\n\t}\n\n\t// Stolen from /views/Workflows\n\t// Due to states, not easy to just import as component~\n\tconst setNewWorkflow = (\n name,\n description,\n tags,\n defaultReturnValue,\n editingWorkflow,\n redirect,\n\t\tcurrentUsecases,\n\t\tinputblogpost,\n\t\tinputstatus,\n ) => {\n var method = \"POST\";\n var extraData = \"\";\n var workflowdata = {};\n\n if (editingWorkflow.id !== undefined) {\n console.log(\"Building original workflow\");\n method = \"PUT\";\n extraData = \"/\" + editingWorkflow.id + \"?skip_save=true\";\n workflowdata = editingWorkflow;\n\n console.log(\"REMOVING OWNER\");\n workflowdata[\"owner\"] = \"\";\n // FIXME: Loop triggers and turn them off?\n }\n\n workflowdata[\"name\"] = name;\n workflowdata[\"description\"] = description;\n if (tags !== undefined) {\n workflowdata[\"tags\"] = tags;\n }\n\t\tworkflowdata[\"blogpost\"] = inputblogpost \n\t\tworkflowdata[\"status\"] = inputstatus \n\n if (defaultReturnValue !== undefined) {\n workflowdata[\"default_return_value\"] = defaultReturnValue;\n }\n\n\t\tif (currentUsecases !== undefined && currentUsecases !== null) {\n\t\t\tworkflowdata[\"usecase_ids\"] = currentUsecases \n\t\t\t//workflows[0].category = [\"detect\"]\n\t\t\t//workflows[0].usecase_ids = [\"Correlate tickets\"]\n\t\t}\n\n\t\tconst new_url = `${globalUrl}/api/v1/workflows${extraData}`\n return fetch(new_url, {\n method: method,\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify(workflowdata),\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for workflows :O!\");\n return;\n }\n\n return response.json();\n })\n .then((responseJson) => {\n\t\t\t\tif (responseJson.success === false) {\n\t\t\t\t\tif (responseJson.reason !== undefined) {\n\t\t\t\t\t\talert.error(\"Error setting workflow: \", responseJson.reason)\n\t\t\t\t\t} else {\n\t\t\t\t\t\talert.error(\"Error setting workflow.\")\n\t\t\t\t\t}\n\n\t\t\t\t\treturn\n\t\t\t\t}\n\n return responseJson;\n })\n .catch((error) => {\n alert.error(error.toString());\n });\n }\n\n\tconst mergeWorkflowUsecases = (usecasedata) => {\n\t\t// To properly handle multiple-locations \n\t\tconst url = isCloud ? `${globalUrl}/api/v1/workflows/merge` : `https://shuffler.io/api/v1/workflows/merge`;\n\t\tfetch(url, {\n\t\t\tmode: \"cors\",\n\t\t\tmethod: \"POST\",\n\t\t\tbody: JSON.stringify(usecasedata),\n\t\t\tcredentials: \"include\",\n\t\t\tcrossDomain: true,\n\t\t\twithCredentials: true,\n\t\t\theaders: {\n\t\t\t\t\"Content-Type\": \"application/json; charset=utf-8\",\n\t\t\t},\n\t\t})\n\t\t.then((response) =>\n\t\t\tresponse.json().then((responseJson) => {\n\t\t\t\tsetIsUploading(false)\n\t\t\t\tvar changed = false\n\n\t\t\t\t\tif (responseJson.success === false) {\n\t\t\t\t\t\tif (responseJson.reason !== null && responseJson.reason !== undefined) {\n\t\t\t\t\t\t\t//alert.error(responseJson.reason)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (responseJson.source === \"\") {\n\t\t\t\t\t\t\tconst appname = \n\t\t\t\t\t\t\tusecasedata.source.error = usecasedata.source.app_name === undefined ? \"Select a Trigger workflow first\" : `${usecasedata.source.app_name} has no public trigger workflow yet. Click this to try another app`\n\t\t\t\t\t\t\tchanged = true \n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tusecasedata.source.error = \"\"\n\t\t\t\t\t\t\t\tchanged = true \n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (responseJson.destination === \"\") {\n\t\t\t\t\t\t\tusecasedata.destination.error = usecasedata.destination.app_name === undefined ? \"Select a Subflow first\" : `${usecasedata.destination.app_name} has no public subflow yet. Click this to try another app`\n\t\t\t\t\t\t\tchanged = true \n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tusecasedata.destination.error = \"\"\n\t\t\t\t\t\t\tchanged = true \n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (responseJson.middle !== undefined) {\n\t\t\t\t\t\t\tfor (var key in responseJson.middle) {\n\t\t\t\t\t\t\t\tfor (var subkey in usecasedata.middle) {\n\t\t\t\t\t\t\t\t\tif (responseJson.middle[key] === usecasedata.middle[key].text) {\n\t\t\t\t\t\t\t\t\t\tconsole.log(\"Found: \")\n\t\t\t\t\t\t\t\t\t\tif (usecasedata.middle[subkey].app_name === undefined || usecasedata.middle[subkey].app_name === \"\") {\n\t\t\t\t\t\t\t\t\t\t\tusecasedata.middle[subkey].error = `${usecasedata.middle[subkey].type} app must be selected first. Click this to change`\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tusecasedata.middle[subkey].error = `${usecasedata.middle[subkey].app_name} has no public subflow yet. Click this to change`\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tchanged = true\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Gets a full workflow that has to be handled from cloud directly\n\t\t\t\t\t\t//\n\t\t\t\t\t\tif (!isCloud) {\n\t\t\t\t\t\t\tconsole.log(\"Not cloud!\")\n\t\t\t\t\t\t\tif (setFoundWorkflowId !== undefined) {\n\t\t\t\t\t\t\t\tsetFoundWorkflowId(responseJson.id)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsetWorkflow(responseJson)\n\n \t\tsetNewWorkflow(\n \t\t responseJson.name,\n \t\t responseJson.description,\n \t\t responseJson.tags,\n \t\t responseJson.default_return_value,\n \t\t {},\n \t\t false,\n\t\t\t\t\t\t\t\t[],\n\t\t\t\t\t\t\t\t\"\",\n\t\t\t\t\t\t\t\tresponseJson.status,\n \t\t)\n\t\t\t\t\t\t\t.then((response) => {\n\t\t\t\t\t\t\t\tif (response !== undefined) {\n\t\t\t\t\t\t\t\t\t// SET THE FULL THING\n\t\t\t\t\t\t\t\t\tresponseJson.id = response.id;\n\t\t\t\t\t\t\t\t\tresponseJson.first_save = false;\n\t\t\t\t\t\t\t\t\tresponseJson.previously_saved = false;\n\t\t\t\t\t\t\t\t\tresponseJson.is_valid = false;\n\n\t\t\t\t\t\t\t\t\t// Actually create it\n\t\t\t\t\t\t\t\t\tsetNewWorkflow(\n\t\t\t\t\t\t\t\t\t\tresponseJson.name,\n\t\t\t\t\t\t\t\t\t\tresponseJson.description,\n\t\t\t\t\t\t\t\t\t\tresponseJson.tags,\n\t\t\t\t\t\t\t\t\t\tresponseJson.default_return_value,\n\t\t\t\t\t\t\t\t\t\tresponseJson,\n\t\t\t\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\t\t\t\t[],\n\t\t\t\t\t\t\t\t\t\t\"\",\n\t\t\t\t\t\t\t\t\t\tresponseJson.status,\n\t\t\t\t\t\t\t\t\t).then((response) => {\n\t\t\t\t\t\t\t\t\t\tif (response !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\talert.success(\"Successfully generated \" + responseJson.name);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.catch((error) => {\n\t\t\t\t\t\t\t\talert.error(\"Generate error: \" + error.toString());\n\t\t\t\t\t\t\t})\n\n\n\t\t\t\t\t\t} else if (isCloud) {\n\t\t\t\t\t\t\tif (responseJson.workflow_id !== null && responseJson.workflow_id !== undefined) {\n\t\t\t\t\t\t\t\tif (responseJson.added_auth !== undefined && responseJson.added_auth !== null && responseJson.added_auth.length > 0) {\n\t\t\t\t\t\t\t\t\tsetConfigureWorkflowAuth(responseJson.added_auth)\n\t\t\t\t\n\t\t\t\t\t\t\t\t\tif (setFoundWorkflowId !== undefined) {\n\t\t\t\t\t\t\t\t\t\tconsole.log(\"Set found workflow id: \", responseJson.workflow_id)\n\t\t\t\t\t\t\t\t\t\tsetFoundWorkflowId(responseJson.workflow_id)\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tgetWorkflow(responseJson.workflow_id) \n\t\t\t\t\t\t\t\t\tgetAppAuthentication()\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (setFoundWorkflowId !== undefined) {\n\t\t\t\t\t\t\t\t\t\tconsole.log(\"Set found workflow id: \", responseJson.workflow_id)\n\t\t\t\t\t\t\t\t\t\tsetFoundWorkflowId(responseJson.workflow_id)\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tsetWorkflow({\"id\": responseJson.workflow_id})\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (responseJson.auth_required === true) {\n\t\t\t\t\t\t\t\tconsole.log(\"SET AUTH AS NEXT STEP!\")\n\t\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (changed === true) {\n\t\t\t\t\t\tsetAllUsecases([usecasedata])\n\t\t\t\t\t}\n\t\t\t})\n\t\t)\n\t\t.catch((error) => {\n\t\t\tsetIsUploading(false)\n\t\t\tconsole.log(\"Merge err: \", error.toString())\n\t\t\t//alert.error(\"Err: \" + error.toString());\n\t\t});\n\t}\n\n\t// Autosearch in framework & set it?\n\tif (sourceapp !== undefined && destinationapp !== undefined) {\n\t\tconsole.log(\"FIND APPS\", sourceapp, destinationapp)\n\t}\n\t\t\n\tif (appFramework !== undefined && usecases !== undefined) {\n\n\t\tfor (var key in usecases) {\n\t\t\t// source\n\t\t\tconst usecase = usecases[key]\n\t\t\tif (usecase.source.type === undefined || usecase.source.image === \"\" || usecase.source.image === undefined) {\n\t\t\t\tusecases[key].source.image = theme.palette.defaultImage\n\t\t\t} \n\n\t\t\tif (usecase.destination.type === undefined || usecase.destination.image === \"\" || usecase.destination.image === undefined) {\n\t\t\t\tusecases[key].destination.image = theme.palette.defaultImage\n\t\t\t}\n\n\t\t\tconst srctype = getType(usecase.source.type)\n\t\t\tconst dsttype = getType(usecase.destination.type)\n\n\t\t\tconst srcinfo = appFramework[srctype]\n\t\t\tif (srcinfo !== undefined && srcinfo.large_image !== undefined && srcinfo.large_image !== \"\" && (usecases[key].source.app_name === undefined || usecases[key].source.app_name === \"\")) {\n\t\t\t\tusecases[key].source.image = srcinfo.large_image\n\t\t\t\tusecases[key].source.app_id = srcinfo.id\n\t\t\t\tusecases[key].source.app_name = srcinfo.name\n\t\t\t}\n\n\t\t\tconst destinfo = appFramework[dsttype]\n\t\t\tif (destinfo !== undefined && destinfo.large_image !== undefined && destinfo.large_image !== \"\" && (usecases[key].destination.app_name === undefined || usecases[key].destination.app_name === \"\")) {\n\t\t\t\tusecases[key].destination.image = destinfo.large_image\n\t\t\t\tusecases[key].destination.app_id = destinfo.id\n\t\t\t\tusecases[key].destination.app_name = destinfo.name\n\t\t\t}\n\n\t\t\tif (usecase.middle !== undefined && usecase.middle !== null && usecase.middle.length > 0) {\n\t\t\t\tfor (var subkey in usecase.middle) {\n\t\t\t\t\tconst midcase = usecase.middle[subkey]\n\n\t\t\t\t\tconst midtype = getType(midcase.type)\n\t\t\t\t\tconst midinfo = appFramework[midtype]\n\t\t\t\t\tif (midinfo !== undefined && midinfo.large_image !== undefined && midinfo.large_image !== \"\" && (usecases[key].middle[subkey].app_name === undefined || usecases[key].middle[subkey].app_name === \"\")) {\n\t\t\t\t\t\tusecases[key].middle[subkey].image = \t\tmidinfo.large_image\n\t\t\t\t\t\tusecases[key].middle[subkey].app_id = \tmidinfo.id\n\t\t\t\t\t\tusecases[key].middle[subkey].app_name = midinfo.name\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (usecases[key].middle[subkey].image === undefined || usecases[key].middle[subkey].image === \"\") {\n\t\t\t\t\t\t\tusecases[key].middle[subkey].image = \t\ttheme.palette.defaultImage\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t//if (firstRequest) {\n\t\t//\tsetAllUsecases(usecases)\n\t\t//\tsetFirstRequest(false)\n\t\t//}\n\t}\n\n const configureWorkflowModal =\n configureWorkflowModalOpen ? (\n \n {\n setConfigureWorkflowModalOpen(false);\n }}\n >\n \n \n \n\t\t\t\t{/*\n referenceUrl={referenceUrl}\n submitSchedule={submitSchedule}\n appAuthentication={appAuthentication}\n selectedAction={selectedAction}\n saveWorkflow={saveWorkflow}\n newWebhook={newWebhook}\n\t\t\t\t*/}\n \n ) : null\n\n\n\t\tconst createWorkflowFromTemplate = (data) => {\n\t\t\tif (workflow.id !== undefined && workflow.id !== null && workflow.id.length !== 0) {\n\t\t\t\tconsole.log(\"Should delete old one: \", workflow.id)\n\t\t\t\tdeleteWorkflow(workflow.id) \n\t\t\t}\n\n\t\t\t// Should be searched?\n\t\t\tsetIsUploading(true)\n\n\t\t\tvar changed = false\n\t\t\tif (data.source.app_name === \"\") {\n\t\t\t\tdata.source.error = `'${data.source.type}' app must be selected first`\n\t\t\t\tchanged = true \n\t\t\t}\n\n\t\t\tif (data.destination.app_name === \"\") {\n\t\t\t\tdata.destination.error = `'${data.destination.type}' app must be selected first`\n\t\t\t\tchanged = true \n\t\t\t}\n\n\t\t\tif (data.middle !== undefined && data.middle !== null && data.middle.length > 0) {\n\t\t\t\tfor (var key in data.middle) {\n\t\t\t\t\tconst middleItem = data.middle[key]\n\t\t\t\t\tif (middleItem.app_name === \"\") {\n\t\t\t\t\t\tdata.middle[key].error = `'${middleItem.type}' app must be selected first`\n\t\t\t\t\t\t//changed = true \n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (changed) {\n\t\t\t\t//alert.error(\"Errors were found. Click them to sort sort them out or go to the next usecase.\")\n\n\t\t\t\t//setUpdate(Math.random())\n\t\t\t\t//setIsUploading(false)\n\t\t\t\t//return\n\t\t\t}\n\n\t\t\t// Auto finding these during deploy\n\t\t\t//data.source.workflow_id = \"e506060f-0c58-4f95-a0b8-f671103d78e5\"\n\t\t\t//data.destination.workflow_id = \"ffe8122d-0787-425a-aa20-c2587ee75a83\"\n\t\t\t//if (data.middle !== undefined && data.middle !== null && data.middle.length > 0) {\n\t\t\t//\tdata.middle[0].workflow_id = \"1077d9ee-b571-4410-a7e6-261f32f346c5\"\n\t\t\t//}\n\n\t\t\tmergeWorkflowUsecases(data) \n\t\t}\n\n\tif (autotry === true && firstRequest === true && appFramework !== undefined && usecases !== undefined && isUploading === false) {\n\t\tconsole.log(\"Should autotry the usecase! Make sure data is in order first. Usecase: \", usecases)\n\n\t\tif (usecases !== undefined && usecases !== null && usecases.length > 0 && usecases[0].name !== \"Build your own\" && usecases[0].name !== \"\") {\n \t\tsetFirstRequest(false)\n\t\t\tcreateWorkflowFromTemplate(usecases[0]) \n\t\t}\n\t\t//{usecases.map((data, index) => {\n\t}\n\n\n\tconst ShowBox = (props) => {\n\t\tconst { data, type, index, miditem, subindex } = props\n\n\t\tconst [expanded, setexpanded] = React.useState(false)\n\t\tconst [newSelectedApp, setNewSelectedApp] = React.useState({})\n\t\tconst [paperTitle, setPaperTitle] = React.useState(data.type)\n\t\tconst [selectionOpen, setSelectionOpen] = React.useState(false)\n\t\tconst [discoveryData, setDiscoveryData] = React.useState({\n\t\t\t\"id\": \"\",\n\t\t\t\"label\": \"\",\n\t\t\t\"name\": \"\",\n\t\t\t\"large_image\": \"\",\n\t\t})\n\n\t\t//console.log(\"Data: \", data)\n\t\tconst activateApp = (appid) => {\n\t\t\tfetch(globalUrl+\"/api/v1/apps/\"+appid+\"/activate\", {\n\t\t\t\t\tmethod: 'GET',\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t\t'Accept': 'application/json',\n\t\t\t\t\t},\n\t\t\t\t\tcredentials: \"include\",\n\t\t\t})\n\t\t\t.then((response) => {\n\t\t\t\tif (response.status !== 200) {\n\t\t\t\t\tconsole.log(\"Failed to activate\")\n\t\t\t\t}\n\n\t\t\t\treturn response.json()\n\t\t\t})\n\t\t\t.then((responseJson) => {\n\t\t\t\tif (responseJson.success === false) {\n\t\t\t\t\talert.error(\"Failed to activate the app\")\n\t\t\t\t} else {\n\t\t\t\t\t//alert.success(\"App activated for your organization! Refresh the page to use the app.\")\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(error => {\n\t\t\t\t//alert.error(error.toString())\n\t\t\t\tconsole.log(\"Activate app error: \", error.toString())\n\t\t\t});\n\t\t}\n\n\t\tconst setFrameworkItem = (data) => {\n\t\t\t// Making sure the app is being auto-built and added\n\t\t\tif (!isCloud) {\n\t\t\t\tactivateApp(data.id)\n\t\t\t}\n\n\t\t\tfetch(globalUrl + \"/api/v1/apps/frameworkConfiguration\", {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\theaders: {\n\t\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t\tAccept: \"application/json\",\n\t\t\t\t},\n\t\t\t\tbody: JSON.stringify(data),\n\t\t\t\tcredentials: \"include\",\n\t\t\t})\n\t\t\t\t.then((response) => {\n\t\t\t\t\tif (response.status !== 200) {\n\t\t\t\t\t\tconsole.log(\"Status not 200 for framework!\");\n\t\t\t\t\t}\n\n\t\t\t\t\treturn response.json();\n\t\t\t\t})\n\t\t\t\t.then((responseJson) => {\n\t\t\t\t\tif (responseJson.success === false) {\n\t\t\t\t\t\tif (responseJson.reason !== undefined) {\n\t\t\t\t\t\t\talert.error(\"Failed updating default app: \" + responseJson.reason)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\talert.error(\"Failed to update framework for your org.\")\n\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (getFramework !== undefined) {\n\t\t\t\t\t\t\tgetFramework()\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t//setFrameworkLoaded(true)\n\t\t\t\t\t//setFrameworkData(responseJson)\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\talert.error(error.toString());\n\t\t\t\t\t//setFrameworkLoaded(true)\n\t\t\t\t})\n\t\t}\n\n\t\tuseEffect(() => {\n\t\t\tif (newSelectedApp.objectID === undefined) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tvar discoveredtype = \"\"\n\t\t\tif (type === \"middle\") {\n\t\t\t\tconsole.log(\"Updating middle index\", subindex)\n\n\t\t\t\tallusecases[index][type][subindex][\"app_id\"] = newSelectedApp.objectID\n\t\t\t\tallusecases[index][type][subindex][\"app_name\"] = newSelectedApp.name\n\t\t\t\tallusecases[index][type][subindex][\"app_version\"] = newSelectedApp.app_version\n\t\t\t\tallusecases[index][type][subindex][\"image\"] = newSelectedApp.image_url\n\t\t\t\tallusecases[index][type][subindex][\"error\"] = \"\"\n\n\t\t\t\tdiscoveredtype = allusecases[index][type][subindex][\"type\"]\n\t\t\t} else {\n\t\t\t\tallusecases[index][type][\"app_id\"] = newSelectedApp.objectID\n\t\t\t\tallusecases[index][type][\"app_name\"] = newSelectedApp.name\n\t\t\t\tallusecases[index][type][\"app_version\"] = newSelectedApp.app_version\n\t\t\t\tallusecases[index][type][\"image\"] = newSelectedApp.image_url\n\t\t\t\tallusecases[index][type][\"error\"] = \"\"\n\n\t\t\t\tdiscoveredtype = allusecases[index][type][\"type\"]\n\t\t\t}\n\t\t\t\t\t\n\t\t\tsetSelectionOpen(false)\n\t\t\tsetUpdate(Math.random())\n\t\t\tsetAllUsecases(allusecases)\n\n\t\t\tconst submitValue = {\n\t\t\t\t\"type\": discoveredtype,\n\t\t\t\t\"name\": newSelectedApp.name,\n\t\t\t\t\"id\": newSelectedApp.objectID,\n\t\t\t\t\"large_image\": newSelectedApp.image_url,\n\t\t\t\t\"description\": newSelectedApp.description,\n\t\t\t}\n\n\t\t\tsetFrameworkItem(submitValue) \n\t\t}, [newSelectedApp])\n\n\t\tif (data.text === undefined || data.text === null || data.text.length === 0) {\n\t\t\treturn null\n\t\t}\n\n\t\tconst changeAppType = () => {\n\t\t\tsetSelectionOpen(true)\n\t\t}\n\n\t\tconst looplist = type === \"source\" ? triggerlist : type === \"destination\" ? subflows : midflows\n\t\tconst hasError = data.error !== undefined && data.error !== null && data.error.length > 0\n\t\tconst borderColor = hasError ? theme.palette.primary.main : \"rgba(255,255,255,0.3)\"\n\t\tconst startText = miditem ? \"\" : type === \"source\" ? \"When\" : \"Then\"\n\n\t\tif (data.text.includes(startText)) {\n\t\t\tdata.text = data.text.replace(startText, \"\")\t\n\t\t}\n\n\t\treturn (\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t{startText}\n\t\t\t\t\n\t\t\t\t
\n\n\t\t\t\t\t{selectionOpen === true ?\n\t\t\t\t\t\t\n\t\t\t\t\t: null}\n\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{data.app_name} {\n\n\t\t\t\t\t\t\t\t\tif (data.type === undefined || data.type === null || data.type === \"\") {\n\t\t\t\t\t\t\t\t\t\tsetexpanded(true)\n\t\t\t\t\t\t\t\t\t\tconsole.log(\"No type. Skipping window open.\")\n\t\t\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t\t\t} \n\n\t\t\t\t\t\t\t\t\tchangeAppType()\n\t\t\t\t\t\t\t\t}}/>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{data.text}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{hasError ?\n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\tif (data.type === undefined || data.type === null || data.type === \"\") {\n\t\t\t\t\t\t\t\t\t\t\tsetexpanded(true)\n\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"No type. Skipping window open.\")\n\t\t\t\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t\t\t\t} \n\n\t\t\t\t\t\t\t\t\t\tchangeAppType()\n\t\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t\t\t{data.error}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t: \n\t\t\t\t\t\t\t\tnull}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t{type === \"middle\" ? \n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\tallusecases[index][type] = []\n\n\t\t\t\t\t\t\t\t\t\tsetAllUsecases(allusecases)\n\t\t\t\t\t\t\t\t\t\tsetUpdate(Math.random())\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tstyle={{marginTop: 0, paddingTop: 8,}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t: null}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\tsetexpanded(!expanded)\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{expanded ? : }\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\n\t\t\t\t\t{expanded ? \n\t\t\t\t\t\tlooplist.map((subdata, curindex) => {\n\t\t\t\t\t\t\tif (appFramework === undefined) {\n\t\t\t\t\t\t\t\tsubdata.image = theme.palette.defaultImage\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst srctype = getType(subdata.type)\n\t\t\t\t\t\t\t\tconst srcinfo = appFramework[srctype]\n\n\t\t\t\t\t\t\t\tif (srcinfo !== undefined && srcinfo.large_image !== undefined && srcinfo.large_image !== \"\" && (subdata.app_name === undefined || subdata.app_name === \"\")) {\n\t\t\t\t\t\t\t\t\tsubdata.image = srcinfo.large_image\n\t\t\t\t\t\t\t\t\tsubdata.app_id = srcinfo.id\n\t\t\t\t\t\t\t\t\tsubdata.app_name = srcinfo.name\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tsubdata.image = theme.palette.defaultImage\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t
{\n\t\t\t\t\t\t\t\t\tif (subdata.disabled === true) {\n\t\t\t\t\t\t\t\t\t\t//alert.info(\"Usecase not available yet.\")\n\t\t\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (type === \"middle\") {\n\t\t\t\t\t\t\t\t\t\tallusecases[index][type][subindex] = subdata\n\t\t\t\t\t\t\t\t\t} else { \n\t\t\t\t\t\t\t\t\t\tallusecases[index][type] = subdata\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tsetAllUsecases(allusecases)\n\t\t\t\t\t\t\t\t\tsetUpdate(Math.random())\n\t\t\t\t\t\t\t\t\tsetexpanded(false)\n\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t\t{subdata.app_name} {\n\t\t\t\t\t\t\t\t\t}}/>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{subdata.text}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t})\n\t\t\t\t\t\t:\n\t\t\t\t\t null\n\t\t\t\t\t}\n\t\t\t\t
\n\t\t\t
\n\t\t)\n\t}\n\n\t//console.log(\"ALLUSECASES: \", allusecases)\n\n\t// {defaultSearch}: {allusecases[usecaseIndex].name}\n\t//console.log(\"UseCase: \", usecases)\n\treturn (\n\t\t
\n {configureWorkflowModal}\n\t\t\t{authenticationModal}\n\t\t\t{showTitle !== false && defaultSearch !== undefined ?\n\t\t\t\t\n\t\t\t\t\t{allusecases[usecaseIndex].name}\n\t\t\t\t\n\t\t\t: null}\n\t\t\t{usecases.map((data, index) => {\n\t\t\t\treturn (\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t{data.middle !== undefined && data.middle !== null && data.middle.length > 0 ?\n\t\t\t\t\t\t\tdata.middle.map((innerdata, innerindex) => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t: null}\n\n\t\t\t\t\t\t
\n\t\t\t\t\t\t{defaultSearch !== undefined && data.middle.length === 0 ? \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\tconsole.log(\"Click add middle!\")\n\n\t\t\t\t\t\t\t\t\t\tallusecases[index].middle.push(midflows[0])\n\t\t\t\t\t\t\t\t\t\tsetAllUsecases(allusecases)\n\t\t\t\t\t\t\t\t\t\tsetUpdate(Math.random())\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t: null}\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t{showTitle !== false && workflow.id === undefined ?\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t: null}\n\t\t\t\t\t\t{workflow.id === undefined || defaultSearch === undefined ? \n\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t:\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t
\n\t\t\t\t)\n\t\t\t})}\n\t\t
\n\t)\n}\n\nexport default UsecaseSearch \n","import React, { useState, useEffect } from 'react';\nimport ReactGA from 'react-ga4';\nimport theme from '../theme.jsx';\nimport PaperComponent from \"../components/PaperComponent.jsx\"\nimport UsecaseSearch, { usecaseTypes } from \"../components/UsecaseSearch.jsx\"\n\nimport {\n Paper,\n\tTypography,\n\tDivider,\n\tIconButton, \n\tBadge,\n CircularProgress,\n\tTooltip,\n\tDialog,\n} from \"@material-ui/core\";\n\nimport {\n\tClose as CloseIcon,\n Delete as DeleteIcon,\n\tAutoFixHigh as AutoFixHighIcon,\n\tDone as DoneIcon,\n} from \"@mui/icons-material\";\n\nconst SuggestedWorkflows = (props) => {\n const { globalUrl, userdata, usecaseSuggestions, frameworkData, setUsecaseSuggestions, inputSearch, apps, } = props\n\n\tconst [usecaseSearch, setUsecaseSearch] = React.useState(\"\")\n\tconst [usecaseSearchType, setUsecaseSearchType] = React.useState(\"\")\n\tconst [finishedUsecases, setFinishedUsecases] = React.useState([])\n\tconst [previousUsecase, setPreviousUsecase] = React.useState(\"\")\n\tconst [closeWindow, setCloseWindow] = React.useState(false)\n\n const isCloud =\n window.location.host === \"localhost:3002\" ||\n window.location.host === \"shuffler.io\";\n\n\n\tuseEffect(() => {\n\t\tif (closeWindow === true) {\n\t\t\tconsole.log(\"WINDOW CLOSED\")\n\t\t\tfinishedUsecases.push(usecaseSearch)\n\t\t\tsetFinishedUsecases(finishedUsecases)\n\n\t\t\tsetCloseWindow(false)\n\t\t}\n\t}, [closeWindow])\n\n\tif (usecaseSuggestions === undefined || usecaseSuggestions.length === 0) {\n\t\treturn null\n\t}\n\n\tif (inputSearch !== previousUsecase) {\n\t\tsetPreviousUsecase(inputSearch)\n\t\tsetFinishedUsecases([])\n\t}\n\n\tif (finishedUsecases.length === usecaseSuggestions.length) {\n\t\tconsole.log(\"Closing finished usecases 2\")\n\t\treturn null\n\t}\n\n\n\t//useEffect(() => {\n\t//\t//if (defaultSearch === \n\t//\t//setFinishedUsecases(finishedUsecases)\n\t//\tconsole.log(\"Finished default usecase?\", usecaseSearch)\n\t//}, [usecaseSearch])\n\n\tconst foundZindex = usecaseSearch.length > 0 && usecaseSearchType.length > 0 ? -1 : 12500\n\n\tconst IndividualUsecase = (props) => {\n\t\tconst { usecase, index } = props\n\t\tconst [hovering, setHovering] = React.useState(false)\n\n\t\tconst usecasename = usecase.name\n\t\tconst bordercolor = usecase.color !== undefined ? usecase.color : \"rgba(255,255,255,0.3)\"\n\n\n\t\tconst srcimage = usecase.items[0].app\n\t\tvar dstimage = usecase.items[1].app\n\t\tif (usecase.items.length > 2) {\n\t\t\tdstimage = usecase.items[2].app\n\t\t}\n\n\t\tif (srcimage === undefined || dstimage === undefined) {\n\t\t\tconsole.log(\"Error in src or dst: returning!\")\n\t\t\treturn null\n\t\t}\n\n\t\tconst finished = finishedUsecases.includes(usecasename)\n\t\tconst selectedIcon = finished ? : \n\n\t\tif (finished) {\n\t\t\treturn null\n\t\t}\n\n\t\t// Simple visual of the usecase\n\t\treturn (\n\t\t\t\n\t\t\t\t
{\n\t\t\t\t\tsetHovering(true)\n\t\t\t\t}} onMouseOut={() => {\n\t\t\t\t\tsetHovering(false)\n\t\t\t\t}} onClick={() => {\n\t\t\t\t\tif (isCloud) {\n\t\t\t\t\t\t\tReactGA.event({\n\t\t\t\t\t\t\t\tcategory: \"welcome\",\n\t\t\t\t\t\t\t\taction: \"click_suggested_workflow\",\n\t\t\t\t\t\t\t\tlabel: usecasename,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t}\n\n\t\t\t\t\tconsole.log(\"Try usecase \", usecasename)\n\t\t\t\t\tsetUsecaseSearchType(usecase.type)\n\t\t\t\t\tsetUsecaseSearch(usecasename)\n\n\t\t\t\t}}>\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{usecasename}\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{srcimage.large_image}\n\t\t\t\t\t\t\t{dstimage.large_image}\n\t\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t{selectedIcon}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\n\t\t)\n\t}\n\n\t//\n\treturn (\n\t\t\n\t\t\t 0 && usecaseSearchType.length > 0}\n\t\t\t\t\tonClose={() => {\n\t\t\t\t\t\tfinishedUsecases.push(usecaseSearch)\n\t\t\t\t\t\tsetFinishedUsecases(finishedUsecases)\n\n\t\t\t\t\t\tsetUsecaseSearch(\"\")\n\t\t\t\t\t\tsetUsecaseSearchType(\"\")\n\t\t\t\t\t}}\n\t\t\t\t\tPaperProps={{\n\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\tpointerEvents: \"auto\",\n\t\t\t\t\t\t\tbackgroundColor: theme.palette.surfaceColor,\n\t\t\t\t\t\t\tcolor: \"white\",\n\t\t\t\t\t\t\tminWidth: 450,\n\t\t\t\t\t\t\tpadding: 50,\n\t\t\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t\t\t\tzIndex: 10050,\n\t\t\t\t\t\t\tborder: theme.palette.defaultBorder,\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t>\n \t {\n\t\t\t\t\t\tfinishedUsecases.push(usecaseSearch)\n\t\t\t\t\t\tsetFinishedUsecases(finishedUsecases)\n\n\t\t\t\t\t\tsetUsecaseSearch(\"\")\n\t\t\t\t\t\tsetUsecaseSearchType(\"\")\n \t }}\n \t >\n \t \n \t \n\t\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\tSuggested Workflows ({finishedUsecases.length}/{usecaseSuggestions.length})\n\t\t\t\t\n\t\t\t\t {\n\t\t\t\t\t\tif (setUsecaseSuggestions !== undefined) {\n\t\t\t\t\t\t\tsetUsecaseSuggestions([])\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{usecaseSuggestions.map((usecase, index) => {\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t\n\t\t\t\t\t)\n\t\t\t\t\t\n\t\t\t\t})}\n\t\t\t
\n\t\t
\n\t)\n}\n\nexport default SuggestedWorkflows;\n","import React, { useState, useEffect } from 'react';\nimport {isMobile} from \"react-device-detect\";\nimport AppFramework, { usecases } from \"../components/AppFramework.jsx\";\nimport {Link} from 'react-router-dom';\nimport ReactGA from 'react-ga4';\n\nimport { Button, LinearProgress, Typography } from '@material-ui/core';\n\nexport const securityFramework = [\n\t\t{\n\t\t\timage: ,\n\t\t\ttext: \"Cases\",\n\t\t\tdescription: \"Case management\"\n\t\t}, \n\t\t{\n\t\t\timage: \n\t\t\t,\n\t\t\ttext: \"SIEM\",\n\t\t\tdescription: \"Case management\"\n\t\t}, \n\t\t{\n\t\t\timage: \n\t\t\t,\n\t\t\ttext: \"Assets\",\n\t\t\tdescription: \"Case management\"\n\t\t}, \n\t\t{\n\t\t\timage: \n\t\t\t,\n\t\t\ttext: \"IAM\",\n\t\t\tdescription: \"Case management\"\n\t\t}, \n\t\t{\n\t\t\timage: ,\n\t\t\ttext: \"Intel\",\n\t\t\tdescription: \"Case management\"\n\t\t}, \n\t\t{\n\t\t\timage: \n\t\t\t,\n\t\t\ttext: \"Comms\",\n\t\t\tdescription: \"Case management\"\n\t\t}, \n\t\t{\n\t\t\timage: \n\t\t\t,\n\t\t\ttext: \"Network\",\n\t\t\tdescription: \"Case management\"\n\t\t}, \n\t\t{\n\t\t\timage:\n\t\t\t,\n\t\t\ttext: \"EDR & AV\",\n\t\t\tdescription: \"Case management\"\n\t\t}, \n]\n\nconst LandingpageUsecases = (props) => {\n\tconst [selectedUsecase, setSelectedUsecase] = useState(\"Phishing\")\n\tconst usecasekeys = usecases === undefined || usecases === null ? [] : Object.keys(usecases)\n\tconst buttonBackground = \"linear-gradient(to right, #f86a3e, #f34079)\"\n\tconst buttonStyle = {borderRadius: 25, height: 50, width: 260, margin: isMobile ? \"15px auto 15px auto\" : 20, fontSize: 18, backgroundImage: buttonBackground}\n\n\tconst HandleTitle = (props) => {\n\t\tconst { usecases, selectedUsecase, setSelecedUsecase } = props\n\t\tconst [progress, setProgress] = useState(0)\n\n \tuseEffect(() => {\n\t\t\tconst timer = setInterval(() => {\n\t\t\t\tsetProgress((oldProgress) => {\n\t\t\t\t\tif (oldProgress >= 105) {\n\t\t\t\t\t\tconst foundIndex = usecasekeys.findIndex(key => key === selectedUsecase)\n\t\t\t\t\t\tvar newitem = usecasekeys[foundIndex+1]\n\t\t\t\t\t\tif (newitem === undefined || newitem === 0) {\n\t\t\t\t\t\t\tnewitem = usecasekeys[1]\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tsetSelectedUsecase(newitem)\n\t\t\t\t\t\treturn -18\n\t\t\t\t\t}\n\n\t\t\t\t\tif (oldProgress >= 65) {\n\t\t\t\t\t\treturn oldProgress + 3\n\t\t\t\t\t}\n\n\t\t\t\t\tif (oldProgress >= 80) {\n\t\t\t\t\t\treturn oldProgress + 1\n\t\t\t\t\t}\n\n\t\t\t\t\treturn oldProgress + 6\n\t\t\t\t})\n\t\t\t}, 165)\n\n\t\t\treturn () => {\n\t\t\t\tclearInterval(timer)\n\t\t\t}\n\t\t}, [])\n\n\t\tif (usecases === null || usecases === undefined || usecases.length === 0) {\n\t\t\treturn null\n\t\t}\n\n\t\tconst modifier = isMobile ? 17 : 22\n\t\treturn (\n\t\t\t\n\t\t\t\tHandle
\n\t\t\t\t\n\t\t\t\t\t{selectedUsecase}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\twith confidence
\n\t\t\t
\n\t\t)\n\t}\n\n\tconst parsedWidth = isMobile ? \"100%\" : 1100 \n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t
\n\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t{/*Security Automation is Hard*/}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tConnecting your everchanging environment is hard. We get it! That's why we built Shuffle, where you can use and share your security workflows to everyones benefit.\n\t\t\t\t\t\t{/*Shuffle is an automation platform where you don't need to be an expert to automate. Get access to our large pool of security playbooks, apps and people.*/}\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t{isMobile ? null :\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\tReactGA.event({\n\t\t\t\t\t\t\t\t\t\t\tcategory: \"landingpage\",\n\t\t\t\t\t\t\t\t\t\t\taction: \"click_main_pricing\",\n\t\t\t\t\t\t\t\t\t\t\tlabel: \"\",\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\tborderRadius: 25, height: 40, width: 175, margin: \"15px 0px 15px 0px\", fontSize: 14, color: \"white\", backgroundImage: buttonBackground, marginRight: 10, \n\t\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t\tSee Pricing\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t\t{isMobile ? null :\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\tReactGA.event({\n\t\t\t\t\t\t\t\t\t\t\tcategory: \"landingpage\",\n\t\t\t\t\t\t\t\t\t\t\taction: \"click_main_try_it_out\",\n\t\t\t\t\t\t\t\t\t\t\tlabel: \"\",\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\tborderRadius: 25, height: 40, width: 175, margin: \"15px 0px 15px 0px\", fontSize: 14, color: \"white\", backgroundImage: buttonBackground,\n\t\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t\tStart for free\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t{isMobile ? null : \n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t\t{isMobile ? null : \n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t}\n\t\t\t
\n\t\t\t
\n\t\t\t\t{isMobile ?\n\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tReactGA.event({\n\t\t\t\t\t\t\t\tcategory: \"landingpage\",\n\t\t\t\t\t\t\t\taction: \"click_main_pricing\",\n\t\t\t\t\t\t\t\tlabel: \"\",\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\tSee pricing \n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t: null\n\t\t\t\t}\n\t\t\t\t{/*isMobile ? \n\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tReactGA.event({\n\t\t\t\t\t\t\t\tcategory: \"landingpage\",\n\t\t\t\t\t\t\t\taction: \"click_main_features\",\n\t\t\t\t\t\t\t\tlabel: \"\",\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\t\tstyle={buttonStyle}>\n\t\t\t\t\t\tFeatures \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t: null*/}\n\t\t\t\t\t
\n\t\t\t{isMobile ? null : \n\t\t\t\t
\n\t\t\t\t\t{securityFramework.map((data, index) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{data.image}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{data.text}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t)\n\t\t\t\t\t})}\n\t\t\t\t
\n\t\t\t}\n\t\t\t
\n\t\t)\n}\n\nexport default LandingpageUsecases;\n","import React, { useState, useEffect } from 'react';\n\nimport CytoscapeComponent from 'react-cytoscapejs';\nimport frameworkStyle from '../frameworkStyle.jsx';\nimport { v4 as uuidv4 } from \"uuid\";\nimport theme from '../theme.jsx';\nimport { useAlert } from \"react-alert\";\n\nimport AppSearch from '../components/Appsearch.jsx';\nimport PaperComponent from \"../components/PaperComponent.jsx\"\nimport { usecaseTypes } from \"../components/UsecaseSearch.jsx\"\nimport SuggestedWorkflows from \"../components/SuggestedWorkflows.jsx\"\nimport { securityFramework} from \"../components/LandingpageUsecases.jsx\";\n\nimport {\n Paper,\n\tTypography,\n\tDivider,\n\tIconButton, \n\tBadge,\n CircularProgress,\n\tTooltip,\n\tDialog,\n\tChip,\n\tAvatar,\n} from \"@material-ui/core\";\n\nimport { \n\tButton \n} from '@material-ui/core';\n\nimport {\n\tClose as CloseIcon,\n Delete as DeleteIcon,\n} from \"@material-ui/icons\";\n\nimport * as edgehandles from \"cytoscape-edgehandles\";\nimport * as cytoscape from \"cytoscape\";\n\ncytoscape.use(edgehandles);\n\n\nconst svgSize = \"40px\" \nconst parsedDatatypeImages = {\n\t\"SIEM\": encodeURI(`data:image/svg+xml;utf-8,`), \n\n\t\"CASES\": encodeURI(`data:image/svg+xml;utf-8,`),\n\n\t\"EDR & AV\": encodeURI(`data:image/svg+xml;utf-8,`),\n\n\t\"INTEL\": encodeURI(`data:image/svg+xml;utf-8,`),\n\n\t\"COMMS\": encodeURI(`data:image/svg+xml;utf-8,`), \n\n\t\"NETWORK\": encodeURI(`data:image/svg+xml;utf-8,`), \n\t\t\t\t\t\t\n\t\"INTEL\": encodeURI(`data:image/svg+xml;utf-8,`),\n\n\t\"ASSETS\": encodeURI(`data:image/svg+xml;utf-8,`), \n\n\t\"IAM\": encodeURI(`data:image/svg+xml;utf-8,`),\n}\n\nexport const usecases = {\n\t\"None\": {\n\t\t\"manual\": [],\n\t\t\"automated\": [],\n\t},\n\t\"Phishing\": {\n\t\t\"manual\": [],\n\t\t\"automated\": [\n\t\t\t{\n\t\t\t\t\"source\":\t\"BOTTOM_LEFT\",\n\t\t\t\t\"target\":\t\"COMMS\",\n\t\t\t\t\"description\": \"Email received\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"COMMS\",\n\t\t\t\t\"target\":\t\"SHUFFLE\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"SHUFFLE\",\n\t\t\t\t\"target\":\t\"CASES\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"INTEL\",\n\t\t\t\t\"target\":\t\"SHUFFLE\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"ASSETS\",\n\t\t\t\t\"target\":\t\"SHUFFLE\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"SIEM\",\n\t\t\t\t\"target\":\t\"SHUFFLE\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"SHUFFLE\",\n\t\t\t\t\"target\":\t\"INTEL\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"SHUFFLE\",\n\t\t\t\t\"target\":\t\"COMMS\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"CASES\",\n\t\t\t\t\"target\":\t\"EDR & AV\",\n\t\t\t\t\"human\": true,\n\t\t\t},\n\t]},\n\t\n\t\"Exploits\": {\n\t\t\"manual\": [],\n\t\t\"automated\": [\n\t\t\t{\n\t\t\t\t\"source\":\t\"TOP_LEFT\",\n\t\t\t\t\"target\":\t\"NETWORK\",\n\t\t\t\t\"description\": \"Exploit\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"NETWORK\",\n\t\t\t\t\"target\":\t\"SIEM\",\n\t\t\t\t\"description\": \"WAF alert\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"SIEM\",\n\t\t\t\t\"target\":\t\"SHUFFLE\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"SHUFFLE\",\n\t\t\t\t\"target\":\t\"CASES\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"SHUFFLE\",\n\t\t\t\t\"target\":\t\"COMMS\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"INTEL\",\n\t\t\t\t\"target\":\t\"SHUFFLE\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"ASSETS\",\n\t\t\t\t\"target\":\t\"SHUFFLE\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"IAM\",\n\t\t\t\t\"target\":\t\"SHUFFLE\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"CASES\",\n\t\t\t\t\"target\":\t\"EDR & AV\",\n\t\t\t\t\"human\": true,\n\t\t\t},\n\t\t]\n\t},\t\n\t\"SIEM alerts\": {\n\t\t\"manual\": [],\n\t\t\"automated\": [\n\t\t\t{\n\t\t\t\t\"source\":\t\"TOP_LEFT\",\n\t\t\t\t\"target\":\t\"SIEM\",\n\t\t\t\t\"description\": \"Syslog\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"SIEM\",\n\t\t\t\t\"target\":\t\"SHUFFLE\",\n\t\t\t\t\"description\": \"Alerts\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"SHUFFLE\",\n\t\t\t\t\"target\":\t\"INTEL\",\n\t\t\t\t\"description\": \"Enrich\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"INTEL\",\n\t\t\t\t\"target\":\t\"SHUFFLE\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"IAM\",\n\t\t\t\t\"target\":\t\"SHUFFLE\",\n\t\t\t\t\"human\": false,\n\t\t\t\t\"description\": \"enrich\",\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"SHUFFLE\",\n\t\t\t\t\"target\":\t\"IAM\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"SHUFFLE\",\n\t\t\t\t\"target\":\t\"CASES\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"SHUFFLE\",\n\t\t\t\t\"target\":\t\"COMMS\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"SHUFFLE\",\n\t\t\t\t\"target\":\t\"EDR & AV\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"SHUFFLE\",\n\t\t\t\t\"target\":\t\"EDR & AV\",\n\t\t\t\t\"human\": true,\n\t\t\t},\n\t\t]\n\t},\n\t\"New Detections\": {\n\t\t\"manual\": [],\n\t\t\"automated\": [\n\t\t\t{\n\t\t\t\t\"source\":\t\"TOP_LEFT\",\n\t\t\t\t\"target\":\t\"SIEM\",\n\t\t\t\t\"description\": \"Hypothesis\",\n\t\t\t\t\"human\": true,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"SIEM\",\n\t\t\t\t\"target\":\t\"SIEM\",\n\t\t\t\t\"description\": \"Create rule\",\n\t\t\t\t\"human\": true,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"SIEM\",\n\t\t\t\t\"target\":\t\"NETWORK\",\n\t\t\t\t\"description\": \"Create rule\",\n\t\t\t\t\"human\": true,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"NETWORK\",\n\t\t\t\t\"target\":\t\"EDR & AV\",\n\t\t\t\t\"description\": \"Create rule\",\n\t\t\t\t\"human\": true,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"SIEM\",\n\t\t\t\t\"target\":\t\"SHUFFLE\",\n\t\t\t\t\"description\": \"Send alert\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"NETWORK\",\n\t\t\t\t\"target\":\t\"SHUFFLE\",\n\t\t\t\t\"description\": \"Send alert\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"EDR & AV\",\n\t\t\t\t\"target\":\t\"SHUFFLE\",\n\t\t\t\t\"description\": \"Send alert\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"INTEL\",\n\t\t\t\t\"target\":\t\"SHUFFLE\",\n\t\t\t\t\"description\": \"Enrich IOCs\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"ASSETS\",\n\t\t\t\t\"target\":\t\"SHUFFLE\",\n\t\t\t\t\"description\": \"Enrich hostnames etc.\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"SHUFFLE\",\n\t\t\t\t\"target\":\t\"CASES\",\n\t\t\t\t\"description\": \"Create enriched alert\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t]\n\t},\n\t\"Vulnerabilities\": {\n\t\t\"manual\": [],\n\t\t\"automated\": [\n\t\t\t{\n\t\t\t\t\"source\":\t\"TOP_RIGHT\",\n\t\t\t\t\"target\":\t\"ASSETS\",\n\t\t\t\t\"description\": \"New vuln\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"ASSETS\",\n\t\t\t\t\"target\":\t\"SHUFFLE\",\n\t\t\t\t\"description\": \"Get vuln\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"SHUFFLE\",\n\t\t\t\t\"target\":\t\"CASES\",\n\t\t\t\t\"description\": \"Raise ticket\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"SHUFFLE\",\n\t\t\t\t\"target\":\t\"COMMS\",\n\t\t\t\t\"description\": \"Notify owner\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"COMMS\",\n\t\t\t\t\"target\":\t\"SHUFFLE\",\n\t\t\t\t\"description\": \"\",\n\t\t\t\t\"human\": true,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"SHUFFLE\",\n\t\t\t\t\"target\":\t\"ASSETS\",\n\t\t\t\t\"description\": \"Auto-patch\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t]\n\t},\n\t\"Approvals\": {\n\t\t\"manual\": [],\n\t\t\"automated\": [\n\t\t\t{\n\t\t\t\t\"source\":\t\"TOP_LEFT\",\n\t\t\t\t\"target\":\t\"CASES\",\n\t\t\t\t\"description\": \"New inquiry\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"CASES\",\n\t\t\t\t\"target\":\t\"SHUFFLE\",\n\t\t\t\t\"description\": \"Get tickets\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"SHUFFLE\",\n\t\t\t\t\"target\":\t\"COMMS\",\n\t\t\t\t\"description\": \"Ask for approval\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"COMMS\",\n\t\t\t\t\"target\":\t\"SHUFFLE\",\n\t\t\t\t\"human\": true,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"SHUFFLE\",\n\t\t\t\t\"target\":\t\"ASSETS\",\n\t\t\t\t\"description\": \"Add to user\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"SHUFFLE\",\n\t\t\t\t\"target\":\t\"IAM\",\n\t\t\t\t\"description\": \"Approve access\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"SHUFFLE\",\n\t\t\t\t\"target\":\t\"CASES\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t]\n\t},\n\t\"Enrichment\": {\n\t\t\"manual\": [],\n\t\t\"automated\": [\n\t\t\t{\n\t\t\t\t\"source\":\t\"TOP_LEFT\",\n\t\t\t\t\"target\":\t\"CASES\",\n\t\t\t\t\"description\": \"Case updated\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"SHUFFLE\",\n\t\t\t\t\"target\":\t\"CASES\",\n\t\t\t\t\"description\": \"Get and enrich ticket\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"IAM\",\n\t\t\t\t\"target\":\t\"SHUFFLE\",\n\t\t\t\t\"description\": \"Get access rights\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"ASSETS\",\n\t\t\t\t\"target\":\t\"SHUFFLE\",\n\t\t\t\t\"description\": \"Get relevant assets\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"INTEL\",\n\t\t\t\t\"target\":\t\"SHUFFLE\",\n\t\t\t\t\"description\": \"Get relevant IPs\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"COMMS\",\n\t\t\t\t\"target\":\t\"SHUFFLE\",\n\t\t\t\t\"description\": \"Find relevant mails & chats\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"EDR & AV\",\n\t\t\t\t\"target\":\t\"SHUFFLE\",\n\t\t\t\t\"description\": \"Find incidents for host\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"SIEM\",\n\t\t\t\t\"target\":\t\"SHUFFLE\",\n\t\t\t\t\"description\": \"Find info about hostname and user\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"SHUFFLE\",\n\t\t\t\t\"target\":\t\"SHUFFLE\",\n\t\t\t\t\"description\": \"Format info\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"SHUFFLE\",\n\t\t\t\t\"target\":\t\"CASES\",\n\t\t\t\t\"description\": \"\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t]\n\t},\n\t\"Ransomware\": {\n\t\t\"manual\": [],\n\t\t\"automated\": [\n\t\t\t{\n\t\t\t\t\"source\":\t\"BOTTOM_LEFT\",\n\t\t\t\t\"target\":\t\"EDR & AV\",\n\t\t\t\t\"description\": \"EDR & AV alert\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"EDR & AV\",\n\t\t\t\t\"target\":\t\"SHUFFLE\",\n\t\t\t\t\"description\": \"\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"SHUFFLE\",\n\t\t\t\t\"target\":\t\"EDR & AV\",\n\t\t\t\t\"human\": false,\n\t\t\t\t\"description\": \"isolate\",\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"SHUFFLE\",\n\t\t\t\t\"target\":\t\"IAM\",\n\t\t\t\t\"human\": false,\n\t\t\t\t\"description\": \"Block access\",\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"SHUFFLE\",\n\t\t\t\t\"target\":\t\"COMMS\",\n\t\t\t\t\"description\": \"Notify oncall and affected user\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"SHUFFLE\",\n\t\t\t\t\"target\":\t\"CASES\",\n\t\t\t\t\"description\": \"Create enriched alert\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"SHUFFLE\",\n\t\t\t\t\"target\":\t\"CASES\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"CASES\",\n\t\t\t\t\"target\":\t\"EDR & AV\",\n\t\t\t\t\"description\": \"Validate alert\",\n\t\t\t\t\"human\": true,\n\t\t\t},\n\t\t]\n\t},\n\t\"Draw\": {\n\t}\n}\n\nconst AppFramework = (props) => {\n const { globalUrl, isLoaded, showOptions, selectedOption, rolling, frameworkData, setFrameworkData, size, inputUsecase, isLoggedIn, color, discoveryWrapper, setDiscoveryWrapper, userdata, apps, inputUsecases, setInputUsecases } = props;\n\tconst [cy, setCy] = React.useState()\n\tconst [edgesStarted, setEdgesStarted] = React.useState(false)\n\tconst [graphDone, setGraphDone] = React.useState(false)\n\tconst [cyDone, setCyDone] = React.useState(false)\n\tconst [discoveryData, setDiscoveryData] = React.useState({})\n\tconst [selectionOpen, setSelectionOpen] = React.useState(true)\n\tconst [frameworkSuggestions, setFrameworkSuggestions] = React.useState([])\n\tconst [newSelectedApp, setNewSelectedApp] = React.useState({})\n\tconst [defaultSearch, setDefaultSearch] = React.useState(\"\")\n\tconst [animationStarted, setAnimationStarted] = React.useState(false)\n\tconst [paperTitle, setPaperTitle] = React.useState(\"\")\n\tconst [changedApp, setChangedApp] = React.useState(\"\")\n\n\n\tconst [usecaseType, setUsecaseType] = React.useState(0)\n\tconst [selectedUsecase, setSelectedUsecase] = React.useState(selectedOption !== undefined ? selectedOption : \"Phishing\")\n\n\tconst [injectedApps, setInjectedApps] = React.useState([])\n\n\tconst scale = size === undefined ? 1 : size > 5 ? 3 : size\n\n const alert = useAlert()\n\n\n\tconst handleLoadNextSuggestion = (frameworkData) => {\n\t\tconsole.log(\"Should check for next apps to load from App suggestion model\")\n\t\t//fetch(globalUrl + \"/api/v1/workflows/usecases\", {\n //credentials: \"include\",\n\t\t\t//cors: \"no-cors\",\n\t\t\n\t\tconst max_suggestions = 5\n\t\tconst max_per_category = 2\n\t\tconst priorities = {\n\t\t\t\"edr\": 1,\n\t\t\t\"siem\": 2,\n\t\t\t\"cases\": 3,\n\t\t\t\"intel\": 4,\n\t\t\t\"comms\": 5, \n\t\t}\n\t\t\n\t\t// Based on apps recommended from repo https://github.com/Shuffle/app-recommender\n\t\t//fetch(\"http://localhost:8080/app_recommendations\", {\n\t\tfetch(\"https://europe-west2-shuffler.cloudfunctions.net/app_recommendations\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify(frameworkData),\n })\n\t\t.then((response) => {\n\t\t\t//if (response.status !== 200) {\n\t\t\t//\tconsole.log(\"Status not 200 for framework!\");\n\t\t\t//}\n\n\t\t\treturn response.json();\n\t\t})\n\t\t.then((responseJson) => {\n\t\t\t// Loop the response dict\n\t\t\tvar suggestions = []\n\t\t\tvar suggestion_cnt = 0\n\t\t\tvar category_count = {}\n\t\t\tfor (const [key, value] of Object.entries(responseJson)) {\n\t\t\t\tif (suggestion_cnt >= max_suggestions) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\tif (category_count[key] === undefined) {\n\t\t\t\t\tcategory_count[key] = 1\n\t\t\t\t} else {\n\t\t\t\t\tcategory_count[key] += 1\n\t\t\t\t}\n\n\t\t\t\tif (category_count[key] > max_per_category) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\t//console.log(\"Found: \" + key + \" with value of len: \" + value.length)\n\n\t\t\t\t//suggestion_cnt += value.slice(0,1).length\n\t\t\t\tsuggestions.push(value.slice(0,1))\n\t\t\t}\n\n\t\t\tsetInjectedApps(suggestions)\n\t\t})\n\t\t.catch((error) => {\n\t\t\tconsole.log(\"Recommendation error: \", error);\n\t\t})\n\t}\n\n\tconst showRecommendations = (changed, frameworkData) => {\n\t\tconsole.log(\"Inside recommendation loader\")\n\t\tsetChangedApp(changed)\n\t\thandleLoadNextSuggestion(frameworkData)\n\n\t\t// Alternative changed\n\t\t// This is for secondary values like email = comms\n\t\tvar alternativeChanged = changed\n\t\tif (changed == \"COMMS\") {\n\t\t\talternativeChanged = \"email\"\n\t\t}\n\t\t\n\t\t// FIX: \n\t\t// 0. Get workflows loaded in from usecasesearch\n\t\t// 1. Search through workflow templates for matching app types\n\t\t// 2. Validate if template is already in use~ (workflows with same tools)\n\t\t// 3. Generate the workflow(s) - PS: Fix new workflow templates\n\t\t// 4. Moving on!\n\t\n\t\t// How can we load templates? UsecaseSearch?\n\t\tvar showusecases = []\n\t\t//const foundusecase = usecaseTypes.find(data => data.name.toLowerCase() === defaultSearch.toLowerCase())\n\t\tfor (var key in usecaseTypes) {\n\t\t\tfor (var subkey in usecaseTypes[key].value) {\n\t\t\t\tconst usecase = usecaseTypes[key].value[subkey]\n\n\t\t\t\tif (usecase.active === false) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tvar potential = false\n\t\t\t\tvar matches = []\n\t\t\t\tfor (var itemtype in usecase.items) {\n\t\t\t\t\tvar apptype = usecase.items[itemtype].app_type.toLowerCase()\n\t\t\t\t\tif (apptype.toLowerCase() === \"email\" || apptype.toLowerCase() === \"comms\" || apptype === \"communication\") {\n\t\t\t\t\t\tapptype = \"Comms\"\n\t\t\t\t\t}\n\t\t\t\t\t//console.log(\"OLD: \", changed, \"USECASE: \", apptype)\n\n\t\t\t\t\t//console.log(\"APptype, changed, framework: \", apptype.toLowerCase(), alternativeChanged.toLowerCase(), changed.toLowerCase(), frameworkData)\n\t\t\t\t\tif (changed.toLowerCase() === apptype.toLowerCase() || changed.toLowerCase().includes(apptype.toLowerCase()) || alternativeChanged.toLowerCase() === apptype.toLowerCase() || alternativeChanged.toLowerCase().includes(apptype.toLowerCase())) {\n\t\t\t\t\t\tpotential = true \n\t\t\t\t\t\tconsole.log(\"Potential: !\", apptype)\n\n\t\t\t\t\t\tif (frameworkData[apptype] !== undefined && frameworkData[apptype].name !== undefined && frameworkData[apptype].name !== null && frameworkData[apptype].name.length > 0) {\n\t\t\t\t\t\t\tusecase.items[itemtype].app = frameworkData[apptype]\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmatches.push(usecase.items[itemtype])\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Check if the type is done in frameworkData\n\t\t\t\t\t\tif (frameworkData[apptype] !== undefined) {\n\t\t\t\t\t\t\t//console.log(\"NOT UNDEFINED: \", frameworkData[apptype])\n\t\t\t\t\t\t\tif (frameworkData[apptype].name !== undefined && frameworkData[apptype].name !== null && frameworkData[apptype].name.length > 0) {\n\t\t\t\t\t\t\t\t//console.log(\"FOUND: \", frameworkData[apptype])\n\t\t\t\t\t\t\t\tusecase.items[itemtype].app = frameworkData[apptype]\n\n\t\t\t\t\t\t\t\t//console.log(\"Real app!\")\n\t\t\t\t\t\t\t\tmatches.push(usecase.items[itemtype])\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t//if (frameworkData[apptype] !== undefined) {\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log(\"UNDEFINED APP (bad name?): \", apptype)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Adds to list if it's all matching and unhandled\n\t\t\t\tif (potential) {\n\t\t\t\t\t// Check finished usecases.\n\t\t\t\t\tif (inputUsecases !== undefined && setInputUsecases !== undefined && usecase.usecase_references !== undefined && usecase.usecase_references.length > 0) {\n\t\t\t\t\t\tvar foundUsecase = false\n\t\t\t\t\t\tfor (var usecaseKey in inputUsecases) {\n\t\t\t\t\t\t\tconst usecaseCategory = inputUsecases[usecaseKey]\n\t\t\t\t\t\t\tfor (var subUsecaseKey in usecaseCategory.list) {\n\t\t\t\t\t\t\t\tconst loopUsecase = usecaseCategory.list[subUsecaseKey]\n\t\t\t\t\t\t\t\tif (loopUsecase.matches === undefined || loopUsecase.matches === null || loopUsecase.matches.length === 0) {\n\t\t\t\t\t\t\t\t\t//console.log(\"No matches - continuing\")\n\t\t\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (usecase.usecase_references.includes(loopUsecase.name)) {\n\t\t\t\t\t\t\t\t\tfoundUsecase = true\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (foundUsecase) {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!foundUsecase) {\n\t\t\t\t\t\t\tconsole.log(\"Usecase NOT found!\")\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log(\"FOUND usecase existing in \", usecase.usecase_references)\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.log(\"No usecase to try to match it to (usecase.usecase_references in UsecaseSearch)\")\n\t\t\t\t\t}\n\n\t\t\t\t\tconsole.log(\"Usecase: \", usecase)\n\t\t\t\t\tif (matches.length === usecase.items.length) {\n\t\t\t\t\t\tusecase.color = \"#c51152\"\n\t\t\t\t\t\tusecase.type = usecaseTypes[key].name\n\t\t\t\t\t\tshowusecases.push(usecase)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// FIXME: Check if a usecase has already been handled\n\t\tconsole.log(\"\")\n\t\tconsole.log(\"GOT USECASES: \", showusecases)\n\n\t\t// FIXME: Just showing one usecase at a time for now\n\t\tif (showusecases.length > 0) {\n\t\t\tsetFrameworkSuggestions(showusecases.slice(0,1))\n\t\t}\n\t}\n\n\tuseEffect(() => {\n\t\tconsole.log(\"DISCWRAP CHANG: \", discoveryWrapper)\n\t\tif (discoveryWrapper === undefined || discoveryWrapper.id === \"SHUFFLE\" || discoveryWrapper.id === undefined || cy === undefined) {\n\t\t\tsetDiscoveryData({})\n\n\t\t\tif (cy !== undefined) {\n\t\t\t\tcy.nodes().unselect()\n\t\t\t}\n\n\t\t\treturn\n\t\t}\n\t\t\t\n\n\t\t// Find the node and click it?\n\t\t//setTimeout(() => {\n\t\tconst nodes = cy.nodes().jsons()\n\t\tfor (var key in nodes) {\n\t\t\tconst node = nodes[key]\n\t\t\tvar newSearchName = discoveryWrapper.id.valueOf()\n\t\t\tif (newSearchName === \"EMAIL\") {\n\t\t\t\tnewSearchName = \"COMMS\"\n\t\t\t}\n\n\t\t\tif (newSearchName === \"ERADICATION\" || newSearchName === \"ENDPOINT\") {\n\t\t\t\tnewSearchName = \"EDR & AV\"\n\t\t\t}\n\n\t\t\tif (node.data.id === newSearchName) {\n\t\t\t\tconst tmpnode = cy.getElementById(node.data.id)\n\t\t\t\tif (tmpnode !== undefined) {\n\t\t\t\t\ttmpnode.select()\n\t\t\t\t}\n\n\t\t\t\tsetDefaultSearch(discoveryWrapper.id)\n\t\t\t\tsetPaperTitle(discoveryWrapper.id)\n\t\t\t}\n\t\t}\n\t\t//}, 50,)\n\t\t//setDiscoveryData(discoveryWrapper)\n\t}, [discoveryWrapper])\n\n\tconst setUsecaseItem = (inputUsecase) => {\n\t\tvar parsedUsecase = inputUsecase\n\t\tconst edges = cy.edges().jsons()\n\n\t\tparsedUsecase.process = []\n\t\tfor (var key in edges) {\n\t\t\tconst edge = edges[key]\n\t\t\tconsole.log(\"Edge: \", edge)\n\t\t\tparsedUsecase.process.push(edge.data)\n\t\t}\n\n fetch(globalUrl + \"/api/v1/workflows/usecases\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify(parsedUsecase),\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for framework!\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n\t\t\t\tif (responseJson.success === false) {\n\t\t\t\t\tif (responseJson.reason !== undefined) {\n\t\t\t\t\t\talert.error(\"Failed updating: \" + responseJson.reason)\n\t\t\t\t\t} else {\n\t\t\t\t\t\talert.error(\"Failed to update framework for your org.\")\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\talert.info(\"Updated usecase.\")\n\t\t\t\t}\n\t\t\t})\n .catch((error) => {\n alert.error(error.toString());\n\t\t\t\t//setFrameworkLoaded(true)\n })\n\t\t}\n\n\t\tconst activateApp = (appid) => {\n\t\t\tfetch(globalUrl+\"/api/v1/apps/\"+appid+\"/activate\", {\n\t\t\t\t\tmethod: 'GET',\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t\t'Accept': 'application/json',\n\t\t\t\t\t},\n\t\t\t\t\tcredentials: \"include\",\n\t\t\t})\n\t\t\t.then((response) => {\n\t\t\t\tif (response.status !== 200) {\n\t\t\t\t\tconsole.log(\"Failed to activate\")\n\t\t\t\t}\n\n\t\t\t\treturn response.json()\n\t\t\t})\n\t\t\t.then((responseJson) => {\n\t\t\t\tif (responseJson.success === false) {\n\t\t\t\t\talert.error(\"Failed to activate the app\")\n\t\t\t\t} else {\n\t\t\t\t\t//alert.success(\"App activated for your organization! Refresh the page to use the app.\")\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(error => {\n\t\t\t\t//alert.error(error.toString())\n\t\t\t\tconsole.log(\"Activate app error: \", error.toString())\n\t\t\t});\n\t\t}\n\n\tconst setFrameworkItem = (data) => {\n\t\tconsole.log(\"Setting framework item: \", data, isCloud)\n\t\tif (!isCloud) {\n\t\t\tactivateApp(data.id)\n\t\t}\n\n fetch(globalUrl + \"/api/v1/apps/frameworkConfiguration\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify(data),\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for framework!\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n\t\t\t\tif (responseJson.success === false) {\n\t\t\t\t\tif (responseJson.reason !== undefined) {\n\t\t\t\t\t\talert.error(\"Failed updating: \" + responseJson.reason)\n\t\t\t\t\t} else {\n\t\t\t\t\t\talert.error(\"Failed to update framework for your org.\")\n\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t//setFrameworkLoaded(true)\n\t\t\t\t//setFrameworkData(responseJson)\n\t\t\t})\n .catch((error) => {\n alert.error(error.toString());\n\t\t\t\t//setFrameworkLoaded(true)\n })\n\t\t}\n\n\tuseEffect(() => {\n\t\tif (!window.location.pathname.includes(\"usecases\")) {\n\t\t\thandleLoadNextSuggestion(frameworkData) \n\t\t}\n\t}, [])\n\n\tuseEffect(() => {\n\t\tconsole.log(\"New selected app: \", newSelectedApp, discoveryData)\n\t\tif (newSelectedApp.objectID === undefined || newSelectedApp.objectID === undefined || newSelectedApp.objectID.length === 0) {\n\t\t\treturn\n\t\t}\n\n\t\t//if (paperTitle.length > 0) {\n\t\t//\tconsole.log(\"No papertitle (parent button)\")\n\n\t\t//\tcy.elements().unselect()\n\t\t//\treturn\n\t\t//}\n\n\t\tif (discoveryData.id === undefined) {\n\t\t\tconsole.log(\"No discoverydata (parent button)\")\n\n\t\t\tcy.elements().unselect()\n\t\t\treturn\n\t\t}\n\n\t\tconst submitValue = {\n\t\t\t\"type\": discoveryData.id,\n\t\t\t\"name\": newSelectedApp.name,\n\t\t\t\"id\": newSelectedApp.objectID,\n\t\t\t\"large_image\": newSelectedApp.image_url,\n\t\t\t\"description\": newSelectedApp.description === undefined ? \"\" : newSelectedApp.description,\n\t\t}\n\n\n\t\tconst foundelement = cy.getElementById(discoveryData.id)\n\t\tif (foundelement !== undefined && foundelement !== null) {\n\t\t\tfoundelement.data(\"large_image\", newSelectedApp.image_url)\n\t\t\tfoundelement.data(\"margin_x\", \"0px\")\n\t\t\tfoundelement.data(\"margin_y\", \"0px\")\n\t\t\tfoundelement.data(\"text_margin_y\", `${60*scale}px`)\n\t\t\tfoundelement.data(\"width\", `${85*scale}px`)\n\t\t\tfoundelement.data(\"height\", `${85*scale}px`)\n\t\t}\n\n\t\tif (setFrameworkData !== undefined) {\n\t\t\t// Find discoveryData.id\n\t\t\tvar keys = []\n\t\t\tfor (const [key, value] of Object.entries(frameworkData)) {\n\t\t\t\tif (key.toLowerCase() === discoveryData.id.toLowerCase()) {\n\t\t\t\t\tkeys.push(key)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (keys.length === 0) {\n\t\t\t\tconsole.log(\"Failed to find: \", discoveryData.id, \" IN \", frameworkData)\n\t\t\t} else {\n\t\t\t\tfor (var key in keys) {\n\t\t\t\t\tframeworkData[keys[key]] = submitValue\n\t\t\t\t}\n\n\t\t\t\tconsole.log(\"Frameworkdata: \", frameworkData)\n\t\t\t\tsetFrameworkData(frameworkData)\n\n\t\t\t\tif (discoveryData.large_image !== undefined && discoveryData.large_image !== null && discoveryData.large_image.includes(\"storage.googleapis.com\")) {\n\t\t\t\t\tshowRecommendations(discoveryData.id, frameworkData)\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log(\"Skipping recommendations during unselect\")\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsetFrameworkItem(submitValue) \n\t\tcy.elements().unselect()\n\n\t}, [newSelectedApp])\n\n\n const isCloud = window.location.host === \"localhost:3002\" || window.location.host === \"shuffler.io\";\n \n\n const imgSize = 50;\n\tvar parsedFrameworkData = frameworkData === undefined ? {} : frameworkData \n\n\t// Awful mapping to make sure all access is always there\n\tif (frameworkData !== undefined) {\n\t\tif (frameworkData.cases !== undefined) {\n\t\t\tif (frameworkData.cases.large_image === undefined && frameworkData.cases.large_image === null || frameworkData.cases.large_image === \"\") {\n\t\t\t\tframeworkData.cases = {}\n\t\t\t}\n\n\t\t\tparsedFrameworkData.Cases = frameworkData.cases\n\t\t} else {\n\t\t\tparsedFrameworkData.Cases = {}\n\t\t}\n\n\t\tif (frameworkData.siem !== undefined) {\n\t\t\tif (frameworkData.siem.large_image === undefined && frameworkData.siem.large_image === null || frameworkData.siem.large_image === \"\") {\n\t\t\t\tframeworkData.siem = {}\n\t\t\t}\n\n\t\t\tparsedFrameworkData.SIEM = frameworkData.siem\n\t\t} else {\n\t\t\tparsedFrameworkData.SIEM = {}\n\t\t}\n\n\t\tif (frameworkData.assets !== undefined) {\n\t\t\tif (frameworkData.assets.large_image === undefined && frameworkData.assets.large_image === null || frameworkData.assets.large_image === \"\") {\n\t\t\t\tframeworkData.assets = {}\n\t\t\t}\n\n\t\t\tparsedFrameworkData.Assets = frameworkData.assets\n\t\t} else {\n\t\t\tparsedFrameworkData.Assets = {}\n\t\t}\n\n\t\tif (frameworkData.intel !== undefined) {\n\t\t\tif (frameworkData.intel.large_image === undefined && frameworkData.intel.large_image === null || frameworkData.intel.large_image === \"\") {\n\t\t\t\tframeworkData.intel = {}\n\t\t\t}\n\n\t\t\tparsedFrameworkData.Intel = frameworkData.intel\n\t\t} else {\n\t\t\tparsedFrameworkData.Intel= {}\n\t\t}\n\n\t\tif (frameworkData.communication !== undefined) {\n\t\t\tif (frameworkData.communication.large_image === undefined && frameworkData.communication.large_image === null || frameworkData.communication.large_image === \"\") {\n\t\t\t\tframeworkData.communication = {}\n\t\t\t}\n\n\t\t\tparsedFrameworkData.Comms = frameworkData.communication\n\t\t} else {\n\t\t\tparsedFrameworkData.Comms = {}\n\t\t}\n\n\t\tif (frameworkData.network !== undefined) {\n\t\t\tif (frameworkData.network.large_image === undefined && frameworkData.network.large_image === null || frameworkData.network.large_image === \"\") {\n\t\t\t\tframeworkData.network = {}\n\t\t\t}\n\n\t\t\tparsedFrameworkData.Network = frameworkData.network\n\t\t} else {\n\t\t\tparsedFrameworkData.Network = {}\n\t\t}\n\n\t\tif (frameworkData.iam !== undefined) {\n\t\t\tif (frameworkData.iam.large_image === undefined && frameworkData.iam.large_image === null || frameworkData.iam.large_image === \"\") {\n\t\t\t\tframeworkData.iam = {}\n\t\t\t}\n\n\t\t\tparsedFrameworkData.IAM = frameworkData.iam\n\t\t} else {\n\t\t\tparsedFrameworkData.IAM = {}\n\t\t}\n\n\t\tif (frameworkData.edr !== undefined) {\n\t\t\tif (frameworkData.edr.large_image === undefined && frameworkData.edr.large_image === null || frameworkData.edr.large_image === \"\") {\n\t\t\t\tframeworkData.edr = {}\n\t\t\t}\n\n\t\t\tparsedFrameworkData[\"EDR & AV\"] = frameworkData.edr\n\t\t} else {\n\t\t\tparsedFrameworkData[\"EDR & AV\"] = {}\n\t\t}\n\n\t} else { \n\t\t//console.log(\"No frameworkdata for org! Setting default\")\n\t\tparsedFrameworkData[\"Cases\"] = {}\n\t\tparsedFrameworkData[\"SIEM\"] = {}\n\t\tparsedFrameworkData[\"Assets\"] = {}\n\t\tparsedFrameworkData[\"IAM\"] = {}\n\t\tparsedFrameworkData[\"Intel\"] = {}\n\t\tparsedFrameworkData[\"Comms\"] = {}\n\t\tparsedFrameworkData[\"Network\"] = {}\n\t\tparsedFrameworkData[\"EDR & AV\"] = {}\n\t}\n\n\t//console.log(\"Framework - update? \", parsedFrameworkData)\n\n\t// 0 = automated, 1 = manual\n\n\tconst elements = []\n\tconst surfaceColor = \"#27292D\"\n\n\n\tconst changeUsecase = (value, type) => {\n\t\t//console.log(\"Value: \", value)\t\n\t\tif (value === \"Draw\" && !edgesStarted) {\n\t\t\tsetEdgesStarted(true)\n\t\t\tcy.edgehandles({\n\t\t\t\thandleNodes: (el) => {\n\t\t\t\t\tif (el.isNode() &&\n\t\t\t\t\t!el.data(\"isButton\") &&\n\t\t\t\t\t!el.data(\"isDescriptor\") &&\n\t\t\t\t\tel.data(\"type\") !== \"COMMENT\") {\n\t\t\t\t\t\t\treturn true \n\t\t\t\t\t}\n\n\t\t\t\t\treturn false\n\t\t\t\t},\n\t\t\t\tpreview: true,\n\t\t\t\ttoggleOffOnLeave: true,\n\t\t\t\tloopAllowed: function (node) {\n\t\t\t\t\treturn false;\n\t\t\t\t},\n\t\t\t})\n\n\t\t}\n\n\t\tsetSelectedUsecase(value)\n\n\t\tconst edges = cy.edges()\n\t\tif (edges !== undefined) {\n\t\t\tconst allEdges = edges.jsons()\n\t\t\tfor (var key in allEdges) {\n\t\t\t\tconst newedge = allEdges[key]\n\t\t\t\tconst foundelement = cy.getElementById(newedge.data.id)\n\t\t\t\tif (foundelement !== undefined && foundelement !== null) {\n\t\t\t\t\tfoundelement.remove()\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar found = false\n\n\t\tvar parsedType = type === 1 ? \"manual\" : \"automated\"\n\t\tif (usecases === undefined || usecases === null) {\n\t\t\treturn\n\t\t}\n\n\t\tconst newedges = usecases[value][parsedType]\n\t\tfor (var key in newedges) {\n\t\t\tnewedges[key].label = parseInt(key)+1\n\n\t\t\tif (newedges[key].description !== undefined && newedges[key].description !== null && newedges[key].description.length > 0) {\n\t\t\t\tnewedges[key].label = (parseInt(key)+1)+\" \"+newedges[key].description\n\t\t\t}\n\n\t\t\tcy.add({\n\t\t\t\tgroup: \"edges\", \n\t\t\t\tdata: newedges[key],\n\t\t\t})\n\t\t}\n\n\t\tsetGraphDone(true)\n\t}\n\n\tconst animationDuration = 150;\n\tconst nodeAddDuration = 2500;\n\n\tif (cy !== undefined && cyDone && !animationStarted) {\n\t\tconst foundelement = cy.getElementById(\"CASES\")\n\n\t\tif (foundelement !== undefined && foundelement !== null) {\n\t\t\tsetAnimationStarted(true)\n\n\t\t\tvar parsedStyle = {\n\t\t\t\t\"ghost\": \"yes\",\n\t\t\t\t\"border-color\": \"#f86a3e\",\n\t\t\t\t\"border-width\": \"10px\",\n\t\t\t\t\"border-opacity\": \".7\",\n\t\t\t}\n\n\t\t\tvar parsedStyle2 = {\n\t\t\t\t\"ghost\": \"yes\",\n \t\"border-width\": \"7px\",\n\t\t\t}\n\n\t\t\t/*\n\t\t\t// Animation\n\t\t\tfor (var i = 0; i < 10; i++) {\n\t\t\t\tfoundelement.animate(\n\t\t\t\t\t{\n\t\t\t\t\t\tstyle: parsedStyle,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tduration: nodeAddDuration,\n\t\t\t\t\t}\n\t\t\t\t).delay(1000)\n\n\t\t\t\tfoundelement.animate(\n\t\t\t\t\t{\n\t\t\t\t\t\tstyle: parsedStyle2,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tduration: nodeAddDuration,\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}\n\t\t\t*/\n\t\t}\n\t}\n\n\tconst onNodeAdded = (event) => {\n\t\t//if (event.target.data(\"animate\") === true) {\n\t\t//}\n\t}\n\n\tconst onNodeHover = (event) => {\n const nodedata = event.target.data();\n \t\n\n\t\tconst cytoscapeElement = document.getElementById(\"cytoscape_view\")\n\t\tif (cytoscapeElement !== undefined && cytoscapeElement !== null) {\n\t\t\tcytoscapeElement.style.cursor = \"pointer\"\n\t\t}\n\n\t\tvar parsedStyle = {\n \"border-width\": \"7px\",\n \"border-opacity\": \".7\",\n }\n\n //if (nodedata.type !== \"COMMENT\") {\n // parsedStyle.color = \"white\";\n //}\n\n\t\tif (event.target !== undefined && event.target !== null) {\n\t\t\tevent.target.animate(\n\t\t\t\t{\n\t\t\t\t\tstyle: parsedStyle,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tduration: animationDuration,\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t}\n\n\tconst onNodeHoverOut = (event) => {\n const nodedata = event.target.data();\n\t\t//console.log(\"Node OUT: \", nodedata)\n\t\t\n\t\tconst cytoscapeElement = document.getElementById(\"cytoscape_view\")\n\t\tif (cytoscapeElement !== undefined && cytoscapeElement !== null) {\n\t\t\tcytoscapeElement.style.cursor = \"default\"\n\t\t}\n\n\t\tvar parsedStyle = {\n \"border-width\": \"3px\",\n\t\t\t//\"cursor\": \"default\",\n }\n\n event.target.animate(\n {\n style: parsedStyle,\n },\n {\n duration: animationDuration,\n }\n )\n\t}\n\n\tconst onNodeUnselect = (event) => {\n var data = event.target.data();\n\t\tconsole.log(\"UNSELECT: \", data)\n\t\t\t\n\t\tvar parsedStyle = {\n \"border-width\": \"10px\",\n \"border-opacity\": \".7\",\n\t\t\t\"border-color\": \"#7fe57f\",\n }\n\n\t\t// Some error here?\n\t\tif (event.target !== undefined && event.target !== null) {\n\t\t\tevent.target.animate(\n\t\t\t\t{\n\t\t\t\t\tstyle: parsedStyle,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tduration: animationDuration,\n\t\t\t\t}\n\t\t\t)\n\n\t\t\tsetTimeout(() => {\n\t\t\t\tevent.target.animate(\n\t\t\t\t\t{\n\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\"border-width\": \"3px\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tduration: animationDuration,\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}, 2500)\n\t\t}\n\n\t\t//setDiscoveryData({})\n\t\tif (setDiscoveryWrapper !== undefined) { \n\t\t\tsetDiscoveryWrapper({})\n\t\t}\n\n\t\tsetSelectionOpen(false)\n\t\tsetDefaultSearch(\"\")\n\t\tsetPaperTitle(\"\")\n\n\t\t//setDiscoveryData({})\n\t}\n\n\tconst onNodeSelect = (event) => {\n var data = event.target.data();\n\t\tconsole.log(\"Node: \", data)\n\t\tif (data.id === \"SHUFFLE\") {\n\t\t\tevent.target.unselect()\n\t\t\treturn\n\t\t}\n\n\t\tif (data.label === \"EDR & AV\") {\n\t\t\tdata.label = \"ERADICATION\"\n\t\t}\n\t\n\t\tsetDiscoveryData(data)\n\t\tsetSelectionOpen(true)\n\t\tsetNewSelectedApp({})\n\n\t\tsetDefaultSearch(data.label.charAt(0).toUpperCase()+(data.label.substring(1)).toLowerCase())\n\t}\n\n const onEdgeAdded = (event) => {\n\t\t//event.target.data(\"human\", false)\n\t}\n\n const onEdgeSelect = (event) => {\n\t\tconsole.log(event)\n\n\t\tif (event.target.data(\"human\") === undefined || event.target.data(\"human\") === false) {\n\t\t\tevent.target.data(\"human\", true)\n\t\t} else if (event.target.data(\"human\") === true) {\n event.target.remove()\n\t\t\treturn\n\t\t\t//event.target.data(\"human\", false)\n\t\t}\n\n\t\tconsole.log(\"Edge selected!\", event.target.data())\n\t\tevent.target.unselect()\n\t}\n\n\tif (graphDone && cyDone === false) {\n cy.fit(null, 200);\n cy.on(\"select\", \"edge\", (e) => onEdgeSelect(e));\n cy.on(\"add\", \"edge\", (e) => onEdgeAdded(e));\n\n\t\tcy.on(\"select\", \"node\", (e) => {\n\t\t\tonNodeSelect(e)\n\t\t})\n cy.on(\"unselect\", \"node\", (e) => {\n\t\t\tonNodeUnselect(e)\n\t\t})\n\n\t\tcy.on(\"mouseover\", \"node\", (e) => {onNodeHover(e)})\n cy.on(\"mouseout\", \"node\", (e) => onNodeHoverOut(e));\n cy.on(\"add\", \"node\", (e) => onNodeAdded(e));\n\n\t\tsetCyDone(true)\n\t}\n\n\tif (cy !== undefined && cy.elements().length === 0 && parsedFrameworkData !== undefined) {\n\t\t//'background-image': 'data(small_image)',\n\t\tconst shiftradius = 115*scale\n\t\tconst baselocationX = 285*scale\n\t\tconst baselocationY = 50*scale\n\t\tconst shiftmodifier = 3*scale\n\t\t//const svgSize = `${40*scale}px`\n\t\t//const svgSize = `${40}px`\n\t\n\t\tconst foundMiddleImage = userdata !== undefined && userdata !== null && userdata.active_org !== undefined && userdata.active_org.image !== undefined && userdata.active_org.image !== null && userdata.active_org.image !== \"\" ? userdata.active_org.image : '/images/Shuffle_logo.png'\n\t\t\n\n\t\tconst fontSize = `${12*scale}px`\n\t\tconst defaultSize = `${85*scale}px`\n\t\tconst iconSize = `${45*scale}px`\n\t\tconst textMarginDefault = `${14*scale}px`\n\t\tconst textMarginImage = `${60*scale}px`\n\t\tconst nodes = [\n\t\t\t{\n\t\t\t\t\tgroup: \"nodes\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tboxwidth: defaultSize,\n\t\t\t\t\t\tboxheight: defaultSize,\n\t\t\t\t\t\tfont_size: fontSize,\n\t\t\t\t\t\tis_valid: true,\n\t\t\t\t\t\tisValid: true,\n\t\t\t\t\t\terrors: [],\n\t\t\t\t\t\tname: parsedFrameworkData.Cases.name === undefined ? \"\" : parsedFrameworkData.Cases.name,\n\t\t\t\t\t\tdescription: parsedFrameworkData.Cases.description === undefined ? \"\" : parsedFrameworkData.Cases.description,\n\t\t\t\t\t\tapp_id: parsedFrameworkData.Cases.id === undefined ? \"\" : parsedFrameworkData.Cases.id,\n\t\t\t\t\t\ttext_margin_y: parsedFrameworkData.Cases.large_image === undefined ? textMarginDefault : textMarginImage,\n\t\t\t\t\t\tmargin_x: parsedFrameworkData.Cases.large_image === undefined ? `${32*scale}px` : \"0px\",\n\t\t\t\t\t\tmargin_y: parsedFrameworkData.Cases.large_image === undefined ? `${19*scale}px` : `0px`,\n\t\t\t\t\t\twidth: parsedFrameworkData.Cases.large_image === undefined ? iconSize : defaultSize,\n\t\t\t\t\t\theight: parsedFrameworkData.Cases.large_image === undefined ? iconSize : defaultSize,\n\t\t\t\t\t\tlarge_image: parsedFrameworkData.Cases.large_image === undefined ? parsedDatatypeImages[\"CASES\"] : parsedFrameworkData.Cases.large_image,\n\t\t\t\t\t\t\t\n\t\t\t\t\t\tlabel: securityFramework[0].text.toUpperCase(),\n\t\t\t\t\t\tid: securityFramework[0].text.toUpperCase(),\n\t\t\t\t\t\tanimate: true,\n\t\t\t\t\t},\n\t\t\t\t\trenderedPosition: {\n\t\t\t\t\t\tx: baselocationX,\n\t\t\t\t\t\ty: baselocationY,\n\t\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\tgroup: \"nodes\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tfont_size: fontSize,\n\t\t\t\t\t\tboxwidth: defaultSize,\n\t\t\t\t\t\tboxheight: defaultSize,\n\t\t\t\t\t\tis_valid: true,\n\t\t\t\t\t\tisValid: true,\n\t\t\t\t\t\terrors: [],\n\t\t\t\t\t\tname: parsedFrameworkData.IAM.name === undefined ? \"\" : parsedFrameworkData.IAM.name,\n\t\t\t\t\t\tdescription: parsedFrameworkData.IAM.description === undefined ? \"\" : parsedFrameworkData.IAM.description,\n\t\t\t\t\t\tapp_id: parsedFrameworkData.IAM.id === undefined ? \"\" : parsedFrameworkData.IAM.id,\n\t\t\t\t\t\ttext_margin_y: parsedFrameworkData.IAM.large_image === undefined ? textMarginDefault : textMarginImage,\n\t\t\t\t\t\tmargin_x: parsedFrameworkData.IAM.large_image === undefined ? `${32*scale}px` : \"0px\",\n\t\t\t\t\t\tmargin_y: parsedFrameworkData.IAM.large_image === undefined ? `${19*scale}px` : `0px`,\n\t\t\t\t\t\twidth: parsedFrameworkData.IAM.large_image === undefined ? iconSize : defaultSize,\n\t\t\t\t\t\theight: parsedFrameworkData.IAM.large_image === undefined ? iconSize : defaultSize,\n\t\t\t\t\t\tlarge_image: parsedFrameworkData.IAM.large_image === undefined ? parsedDatatypeImages[\"IAM\"] : parsedFrameworkData.IAM.large_image,\n\t\t\t\t\t\t\t\n\t\t\t\t\t\tlabel: securityFramework[3].text.toUpperCase(),\n\t\t\t\t\t\tid: securityFramework[3].text.toUpperCase(),\n\t\t\t\t\t\tanimate: false,\n\t\t\t\t\t},\n\t\t\t\t\trenderedPosition: {\n\t\t\t\t\t\tx: baselocationX+shiftradius+(shiftradius/shiftmodifier),\n\t\t\t\t\t\ty: baselocationY+shiftradius-(shiftradius/shiftmodifier),\n\t\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\tgroup: \"nodes\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tfont_size: fontSize,\n\t\t\t\t\t\tboxwidth: defaultSize,\n\t\t\t\t\t\tboxheight: defaultSize,\n\t\t\t\t\t\tis_valid: true,\n\t\t\t\t\t\tisValid: true,\n\t\t\t\t\t\terrors: [],\n\t\t\t\t\t\tname: parsedFrameworkData.Assets.name === undefined ? \"\" : parsedFrameworkData.Assets.name,\n\t\t\t\t\t\tdescription: parsedFrameworkData.Assets.description === undefined ? \"\" : parsedFrameworkData.Assets.description,\n\t\t\t\t\t\tapp_id: parsedFrameworkData.Assets.id === undefined ? \"\" : parsedFrameworkData.Assets.id,\n\t\t\t\t\t\ttext_margin_y: parsedFrameworkData.Assets.large_image === undefined ? textMarginDefault : textMarginImage,\n\t\t\t\t\t\tmargin_x: parsedFrameworkData.Assets.large_image === undefined ? `${32*scale}px` : \"0px\",\n\t\t\t\t\t\tmargin_y: parsedFrameworkData.Assets.large_image === undefined ? `${19*scale}px` : `0px`,\n\t\t\t\t\t\twidth: parsedFrameworkData.Assets.large_image === undefined ? iconSize : defaultSize,\n\t\t\t\t\t\theight: parsedFrameworkData.Assets.large_image === undefined ? iconSize : defaultSize,\n\t\t\t\t\t\tlarge_image: parsedFrameworkData.Assets.large_image === undefined ? parsedDatatypeImages[\"ASSETS\"] : parsedFrameworkData.Assets.large_image,\n\t\t\t\t\t\t\t\n\t\t\t\t\t\tlabel: securityFramework[2].text.toUpperCase(), \n\t\t\t\t\t\tid: securityFramework[2].text.toUpperCase(),\n\t\t\t\t\t\tanimate: false,\n\t\t\t\t\t},\n\t\t\t\t\trenderedPosition: {\n\t\t\t\t\t\tx: baselocationX+shiftradius*2,\n\t\t\t\t\t\ty: baselocationY+shiftradius*2,\n\t\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\tgroup: \"nodes\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tfont_size: fontSize,\n\t\t\t\t\t\tboxwidth: defaultSize,\n\t\t\t\t\t\tboxheight: defaultSize,\n\t\t\t\t\t\tis_valid: true,\n\t\t\t\t\t\tisValid: true,\n\t\t\t\t\t\terrors: [],\n\t\t\t\t\t\tname: parsedFrameworkData.Intel.name === undefined ? \"\" : parsedFrameworkData.Intel.name,\n\t\t\t\t\t\tdescription: parsedFrameworkData.Intel.description === undefined ? \"\" : parsedFrameworkData.Intel.description,\n\t\t\t\t\t\tapp_id: parsedFrameworkData.Intel.id === undefined ? \"\" : parsedFrameworkData.Intel.id,\n\t\t\t\t\t\ttext_margin_y: parsedFrameworkData.Intel.large_image === undefined ? textMarginDefault : textMarginImage,\n\t\t\t\t\t\tmargin_x: parsedFrameworkData.Intel.large_image === undefined ? `${32*scale}px` : \"0px\",\n\t\t\t\t\t\tmargin_y: parsedFrameworkData.Intel.large_image === undefined ? `${19*scale}px` : `0px`,\n\t\t\t\t\t\twidth: parsedFrameworkData.Intel.large_image === undefined ? iconSize : defaultSize,\n\t\t\t\t\t\theight: parsedFrameworkData.Intel.large_image === undefined ? iconSize : defaultSize,\n\t\t\t\t\t\tlarge_image: parsedFrameworkData.Intel.large_image === undefined ? parsedDatatypeImages[\"INTEL\"] : parsedFrameworkData.Intel.large_image,\n\t\t\t\t\t\t\t\n\t\t\t\t\t\tlabel: securityFramework[4].text.toUpperCase(),\n\t\t\t\t\t\tid: securityFramework[4].text.toUpperCase(),\n\t\t\t\t\t\tanimate: false,\n\t\t\t\t\t},\n\t\t\t\t\trenderedPosition: {\n\t\t\t\t\t\tx: baselocationX+shiftradius+(shiftradius/shiftmodifier),\n\t\t\t\t\t\ty: baselocationY+shiftradius*3+(shiftradius/shiftmodifier),\n\t\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\tgroup: \"nodes\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tfont_size: fontSize,\n\t\t\t\t\t\tboxwidth: defaultSize,\n\t\t\t\t\t\tboxheight: defaultSize,\n\t\t\t\t\t\tis_valid: true,\n\t\t\t\t\t\tisValid: true,\n\t\t\t\t\t\terrors: [],\n\t\t\t\t\t\tname: parsedFrameworkData.Comms.name === undefined ? \"\" : parsedFrameworkData.Comms.name,\n\t\t\t\t\t\tdescription: parsedFrameworkData.Comms.description === undefined ? \"\" : parsedFrameworkData.Comms.description,\n\t\t\t\t\t\tapp_id: parsedFrameworkData.Comms.id === undefined ? \"\" : parsedFrameworkData.Comms.id,\n\t\t\t\t\t\ttext_margin_y: parsedFrameworkData.Comms.large_image === undefined ? textMarginDefault : textMarginImage,\n\t\t\t\t\t\tmargin_x: parsedFrameworkData.Comms.large_image === undefined ? `${32*scale}px` : \"0px\",\n\t\t\t\t\t\tmargin_y: parsedFrameworkData.Comms.large_image === undefined ? `${19*scale}px` : `0px`,\n\t\t\t\t\t\twidth: parsedFrameworkData.Comms.large_image === undefined ? iconSize : defaultSize,\n\t\t\t\t\t\theight: parsedFrameworkData.Comms.large_image === undefined ? iconSize : defaultSize,\n\t\t\t\t\t\tlarge_image: parsedFrameworkData.Comms.large_image === undefined ? parsedDatatypeImages[\"COMMS\"] : parsedFrameworkData.Comms.large_image,\n\t\t\t\t\t\t\t\n\t\t\t\t\t\tlabel: securityFramework[5].text.toUpperCase(), \n\t\t\t\t\t\tid: securityFramework[5].text.toUpperCase(),\n\t\t\t\t\t\tanimate: false,\n\t\t\t\t\t},\n\t\t\t\t\trenderedPosition: {\n\t\t\t\t\t\tx: baselocationX,\n\t\t\t\t\t\ty: baselocationY+shiftradius*4,\n\t\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\tgroup: \"nodes\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tfont_size: fontSize,\n\t\t\t\t\t\tboxwidth: defaultSize,\n\t\t\t\t\t\tboxheight: defaultSize,\n\t\t\t\t\t\tis_valid: true,\n\t\t\t\t\t\tisValid: true,\n\t\t\t\t\t\terrors: [],\n\t\t\t\t\t\tname: parsedFrameworkData[\"EDR & AV\"].name === undefined ? \"\" : parsedFrameworkData[\"EDR & AV\"].name,\n\t\t\t\t\t\tdescription: parsedFrameworkData[\"EDR & AV\"].description === undefined ? \"\" : parsedFrameworkData[\"EDR & AV\"].description,\n\t\t\t\t\t\tapp_id: parsedFrameworkData[\"EDR & AV\"].id === undefined ? \"\" : parsedFrameworkData[\"EDR & AV\"].id,\n\t\t\t\t\t\ttext_margin_y: parsedFrameworkData[\"EDR & AV\"].large_image === undefined ? textMarginDefault : textMarginImage,\n\t\t\t\t\t\tmargin_x: parsedFrameworkData[\"EDR & AV\"].large_image === undefined ? `${32*scale}px` : \"0px\",\n\t\t\t\t\t\tmargin_y: parsedFrameworkData[\"EDR & AV\"].large_image === undefined ? `${19*scale}px` : `0px`,\n\t\t\t\t\t\twidth: parsedFrameworkData[\"EDR & AV\"].large_image === undefined ? iconSize : defaultSize,\n\t\t\t\t\t\theight: parsedFrameworkData[\"EDR & AV\"].large_image === undefined ? iconSize : defaultSize,\n\t\t\t\t\t\tlarge_image: parsedFrameworkData[\"EDR & AV\"].large_image === undefined ? parsedDatatypeImages[\"EDR & AV\"] : parsedFrameworkData[\"EDR & AV\"].large_image,\n\t\t\t\t\t\t\t\n\t\t\t\t\t\tlabel: securityFramework[7].text.toUpperCase(), \n\t\t\t\t\t\tid: securityFramework[7].text.toUpperCase(),\n\t\t\t\t\t\tanimate: false,\n\t\t\t\t\t},\n\t\t\t\t\trenderedPosition: {\n\t\t\t\t\t\tx: baselocationX-shiftradius-(shiftradius/shiftmodifier),\n\t\t\t\t\t\ty: baselocationY+shiftradius*3+(shiftradius/shiftmodifier),\n\t\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\tgroup: \"nodes\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tfont_size: fontSize,\n\t\t\t\t\t\tboxwidth: defaultSize,\n\t\t\t\t\t\tboxheight: defaultSize,\n\t\t\t\t\t\tis_valid: true,\n\t\t\t\t\t\tisValid: true,\n\t\t\t\t\t\terrors: [],\n\t\t\t\t\t\tname: parsedFrameworkData.Network.name === undefined ? \"\" : parsedFrameworkData.Network.name,\n\t\t\t\t\t\tdescription: parsedFrameworkData.Network.description === undefined ? \"\" : parsedFrameworkData.Network.description,\n\t\t\t\t\t\tapp_id: parsedFrameworkData.Network.id === undefined ? \"\" : parsedFrameworkData.Network.id,\n\t\t\t\t\t\ttext_margin_y: parsedFrameworkData.Network.large_image === undefined ? textMarginDefault : textMarginImage,\n\t\t\t\t\t\tmargin_x: \t\tparsedFrameworkData.Network.large_image === undefined ? `${32*scale}px` : \"0px\",\n\t\t\t\t\t\tmargin_y: \t\tparsedFrameworkData.Network.large_image === undefined ? `${19*scale}px` : `0px`,\n\t\t\t\t\t\twidth: \t\t\t\tparsedFrameworkData.Network.large_image === undefined ? iconSize : defaultSize,\n\t\t\t\t\t\theight: \t\t\tparsedFrameworkData.Network.large_image === undefined ? iconSize : defaultSize,\n\t\t\t\t\t\tlarge_image: parsedFrameworkData.Network.large_image === undefined ? parsedDatatypeImages[\"NETWORK\"] : parsedFrameworkData.Network.large_image,\n\t\t\t\t\t\tlabel: securityFramework[6].text.toUpperCase(),\n\t\t\t\t\t\tid: securityFramework[6].text.toUpperCase(),\n\t\t\t\t\t\tanimate: false,\n\t\t\t\t\t},\n\t\t\t\t\trenderedPosition: {\n\t\t\t\t\t\tx: baselocationX-shiftradius*2,\n\t\t\t\t\t\ty: baselocationY+shiftradius*2,\n\t\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t\tgroup: \"nodes\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tfont_size: fontSize,\n\t\t\t\t\t\tboxwidth: defaultSize,\n\t\t\t\t\t\tboxheight: defaultSize,\n\t\t\t\t\t\tis_valid: true,\n\t\t\t\t\t\tisValid: true,\n\t\t\t\t\t\terrors: [],\n\t\t\t\t\t\tname: parsedFrameworkData.SIEM.name === undefined ? \"\" : parsedFrameworkData.SIEM.name,\n\t\t\t\t\t\tdescription: parsedFrameworkData.SIEM.description === undefined ? \"\" : parsedFrameworkData.SIEM.description,\n\t\t\t\t\t\tapp_id: parsedFrameworkData.SIEM.id === undefined ? \"\" : parsedFrameworkData.SIEM.id,\n\t\t\t\t\t\ttext_margin_y: parsedFrameworkData.SIEM.large_image === undefined ? textMarginDefault : textMarginImage,\n\t\t\t\t\t\tmargin_x: parsedFrameworkData.SIEM.large_image === undefined ? `${32*scale}px` : \"0px\",\n\t\t\t\t\t\tmargin_y: parsedFrameworkData.SIEM.large_image === undefined ? `${19*scale}px` : `0px`,\n\t\t\t\t\t\twidth: parsedFrameworkData.SIEM.large_image === undefined ? iconSize : defaultSize,\n\t\t\t\t\t\theight: parsedFrameworkData.SIEM.large_image === undefined ? iconSize : defaultSize,\n\t\t\t\t\t\tlarge_image: parsedFrameworkData.SIEM.large_image === undefined ? parsedDatatypeImages[\"SIEM\"] : parsedFrameworkData.SIEM.large_image,\n\t\t\t\t\t\tlabel: securityFramework[1].text.toUpperCase(),\n\t\t\t\t\t\tid: securityFramework[1].text.toUpperCase(),\n\t\t\t\t\t\tanimate: false,\n\t\t\t\t\t},\n\t\t\t\t\trenderedPosition: {\n\t\t\t\t\t\tx: baselocationX-shiftradius-(shiftradius/shiftmodifier),\n\t\t\t\t\t\ty: baselocationY+shiftradius-(shiftradius/shiftmodifier),\n\t\t\t\t\t}\n\t\t\t},\n\t\t]\n\n\t\t// Middlenode\n\t\tnodes.push({\n\t\t\t\tgroup: \"nodes\",\n\t\t\t\tdata: {\n\t\t\t\t\tfont_size: fontSize,\n\t\t\t\t\twidth: defaultSize,\n\t\t\t\t\theight: defaultSize,\n\t\t\t\t\tid: \"SHUFFLE\",\n\t\t\t\t\tis_valid: true,\n\t\t\t\t\tisValid: true,\n\t\t\t\t\terrors: [],\n\t\t\t\t\tmiddle_node: true,\n\t\t\t\t\tlarge_image: foundMiddleImage,\n\t\t\t\t},\n\t\t\t\trenderedPosition: {\n\t\t\t\t\tx: baselocationX,\n\t\t\t\t\ty: baselocationY+shiftradius*2,\n\t\t\t\t}\n\t\t})\n\n\t\t// Extra nodes\n\t\tnodes.push({\n\t\t\t\tgroup: \"nodes\",\n\t\t\t\tdata: {\n\t\t\t\t\tis_valid: true,\n\t\t\t\t\tisValid: true,\n\t\t\t\t\terrors: [],\n\t\t\t\t\tlarge_image: encodeURI(`data:image/svg+xml;utf-8,\n\t\t\t\t\t\t,\n\t\t\t\t\t`),\n\t\t\t\t\tid: \"TOP_LEFT\",\n\t\t\t\t\tinvisible: true,\n\t\t\t\t},\n\t\t\t\trenderedPosition: {\n\t\t\t\t\tx: baselocationX-shiftradius*2.5,\n\t\t\t\t\ty: baselocationY-50,\n\t\t\t\t}\n\t\t})\n\t\tnodes.push({\n\t\t\t\tgroup: \"nodes\",\n\t\t\t\tdata: {\n\t\t\t\t\tis_valid: true,\n\t\t\t\t\tisValid: true,\n\t\t\t\t\terrors: [],\n\t\t\t\t\tlarge_image: encodeURI(`data:image/svg+xml;utf-8,\n\t\t\t\t\t\t,\n\t\t\t\t\t`),\n\t\t\t\t\tid: \"BOTTOM_LEFT\",\n\t\t\t\t\tinvisible: true,\n\t\t\t\t},\n\t\t\t\trenderedPosition: {\n\t\t\t\t\tx: baselocationX-shiftradius*2.5-10,\n\t\t\t\t\ty: baselocationY+shiftradius*4-10,\n\t\t\t\t}\n\t\t})\n\t\tnodes.push({\n\t\t\t\tgroup: \"nodes\",\n\t\t\t\tdata: {\n\t\t\t\t\tis_valid: true,\n\t\t\t\t\tisValid: true,\n\t\t\t\t\terrors: [],\n\t\t\t\t\tlarge_image: encodeURI(`data:image/svg+xml;utf-8,\n\t\t\t\t\t\t,\n\t\t\t\t\t`),\n\t\t\t\t\tid: \"BOTTOM_RIGHT\",\n\t\t\t\t\tinvisible: true,\n\t\t\t\t},\n\t\t\t\trenderedPosition: {\n\t\t\t\t\tx: baselocationX+shiftradius*2+50,\n\t\t\t\t\ty: baselocationY+shiftradius*4+50,\n\t\t\t\t}\n\t\t})\n\t\tnodes.push({\n\t\t\t\tgroup: \"nodes\",\n\t\t\t\tdata: {\n\t\t\t\t\tis_valid: true,\n\t\t\t\t\tisValid: true,\n\t\t\t\t\terrors: [],\n\t\t\t\t\tlarge_image: encodeURI(`data:image/svg+xml;utf-8,\n\t\t\t\t\t\t,\n\t\t\t\t\t`),\n\t\t\t\t\tid: \"TOP_RIGHT\",\n\t\t\t\t\tinvisible: true,\n\t\t\t\t},\n\t\t\t\trenderedPosition: {\n\t\t\t\t\tx: baselocationX+shiftradius*2,\n\t\t\t\t\ty: baselocationY-150,\n\t\t\t\t}\n\t\t})\n\n\t\t//console.log(\"NODES: \" , nodes)\n\t\tfor (var key in nodes) {\n\t\t\tcy.add(nodes[key]).lock()\n\t\t}\n\n\t\tchangeUsecase(selectedUsecase, usecaseType)\n\n\t\tif (inputUsecase !== undefined && inputUsecase !== null) {\n\t\t\tfor (var key in inputUsecase.process) {\n\t\t\t\tif (inputUsecase.process[key].source === \"\" || inputUsecase.process[key].target === \"\") {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tinputUsecase.process[key].label = parseInt(key)+1\n\t\t\t\tinputUsecase.process[key].id = uuidv4();\n\n\t\t\t\tcy.add({\n\t\t\t\t\tgroup: \"edges\", \n\t\t\t\t\tdata: inputUsecase.process[key],\n\t\t\t\t})\n\t\t\t}\n\t\t\t//changeUsecase(inputUsecase, 0)\n\t\t\t//setSelectedUsecase(value)\n\t\t}\n\t}\n\n\tif (selectedOption !== undefined && selectedUsecase !== selectedOption) {\n\t\tsetSelectedUsecase(selectedOption)\n\t\tchangeUsecase(selectedOption, usecaseType) \n\t}\n\n\tconst UsecaseHandler = (props) => {\n\t\tconst { data, index, diff } = props\n\n\t\tconst leftImage = data.left_image !== undefined ? parsedDatatypeImages[data.left_image.toUpperCase()] : undefined\n\t\tconst rightImage = data.right_image !== undefined ? parsedDatatypeImages[data.right_image.toUpperCase()] : undefined\n\n\t\tif (leftImage === undefined) {\n\t\t\tconsole.log(\"LEFT MISSING: \", leftImage)\n\t\t}\n\n\t\tif (rightImage === undefined) {\n\t\t\tconsole.log(\"Right MISSING: \", rightImage)\n\t\t}\n\n\t\tconst parsedRightImage = \"\"\n\t\tconst parsedRightText =
{data.right_text}
\n\n\t\tconst parsedLeftImage = \"\"\n\t\tconst parsedLeftText =
{data.left_text}
\n\n\t\tvar svgIcon = \n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\n\t\tif (data.direction === \"right\") {\n\t\t\tsvgIcon = \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t} else if (data.direction === \"left\") {\n\t\t\tsvgIcon = \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t}\n\n\t\t//{\"usecase_directional_arrow_\"+index}\n\t\t//\n\t\tconst handleHover = () => {\n\t\t\t//console.log(\"Hover IN: \", data.automated)\n\n\t\t\tconst allEdges = cy.edges().jsons()\n\t\t\tfor (var key in allEdges) {\n\t\t\t\tconst newedge = allEdges[key]\n\t\t\t\tconst foundelement = cy.getElementById(newedge.data.id)\n\t\t\t\tif (foundelement !== undefined && foundelement !== null) {\n\t\t\t\t\tfoundelement.remove()\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//const newedges = usecases[value][parsedType]\n\t\t\tfor (var key in data.automated) {\n\t\t\t\tdata.automated[key].label = parseInt(key)+1\n\n\t\t\t\tif (data.automated[key].description !== undefined && data.automated[key].description !== null && data.automated[key].description.length > 0) {\n\t\t\t\t\tdata.automated[key].label = (parseInt(key)+1)+\" \"+data.automated[key].description\n\t\t\t\t}\n\n\t\t\t\tcy.add({\n\t\t\t\t\tgroup: \"edges\", \n\t\t\t\t\tdata: data.automated[key],\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\tconst handleHoverOut = () => {\n\t\t\t//console.log(\"Hover out: \", data.automated)\n\t\t\t//const allEdges = cy.edges().jsons()\n\t\t\t//for (var key in allEdges) {\n\t\t\t//\tconst newedge = allEdges[key]\n\t\t\t//\tconst foundelement = cy.getElementById(newedge.data.id)\n\t\t\t//\tif (foundelement !== undefined && foundelement !== null) {\n\t\t\t//\t\tfoundelement.remove()\n\t\t\t//\t}\n\t\t\t//}\n\t\t}\n\n\t\tconst bgColor = color === undefined || color === null || color.length === 0 ? theme.palette.surfaceColor : color\n\t\tconsole.log(\"BGCOLOR: \", bgColor)\n\n\t\treturn (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{data.name}\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{parsedLeftImage}\n\t\t\t\t\t\t\t{parsedLeftText}\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{svgIcon}\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{parsedRightImage}\n\t\t\t\t\t\t\t{parsedRightText}\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t)\n\t}\n\n\tconst selectedUsecases = [\n\t{\n\t\t\"name\": \"Sync tickets\",\n\t\t\"description\": \"Do cool shit weeeee - this just ensure they are syncing\",\n\t\t\"left_text\": \"Cases\",\n\t\t\"right_text\": \"Cases\",\n\t\t\"left_image\": \"Cases\",\n\t\t\"right_image\": \"Cases\",\n\t\t\"direction\": \"both\",\n\t\t\"manual\": [],\n\t\t\"automated\": [\n\t\t\t{\n\t\t\t\t\"source\":\t\"CASES\",\n\t\t\t\t\"target\":\t\"SHUFFLE\",\n\t\t\t\t\"description\": \"Get cases\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"source\":\t\"SHUFFLE\",\n\t\t\t\t\"target\":\t\"CASES\",\n\t\t\t\t\"description\": \"Update cases\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t]\n\t},\n\t{\n\t\t\"name\": \"Forward alerts with enrichment\",\n\t\t\"description\": \"Do cool shit weeeee - this just ensure they are syncing\",\n\t\t\"left_text\": \"EDR & AV\",\n\t\t\"right_text\": \"Cases\",\n\t\t\"left_image\": \"EDR & AV\",\n\t\t\"right_image\": \"Cases\",\n\t\t\"direction\": \"right\",\n\t\t\"manual\": [],\n\t\t\"automated\": [\n\t\t\t{\n\t\t\t\t\"source\":\t\"BOTTOM_LEFT\",\n\t\t\t\t\"target\":\t\"COMMS\",\n\t\t\t\t\"description\": \"Email received\",\n\t\t\t\t\"human\": false,\n\t\t\t},\n\t\t]\n\t}\n\t]\n\n\tconst getNodeName = (category) => {\n\t\tif (category === \"email\") {\n\t\t\tcategory = \"COMMS\"\n\t\t} else if (category === \"edr\") {\n\t\t\tcategory = \"EDR & AV\"\n\t\t} \n\n\t\treturn category.toUpperCase() \n\t}\n\n\t//autounselectify={true}\n\tvar usecasediff = -100\n\tconst bgColor = color === undefined || color === null || color.length === 0 ? theme.palette.surfaceColor : color\n\n\treturn (\t\n\t\t
\n\t\t\t
\n\n\t\t\t\t\n\t\t\t
\n\n\t\t\t{injectedApps.map((apps, appindex) => {\n\t\t\t\tvar categoryTop = 100\n\t\t\t\tvar categoryLeft = 100\n\n\t\t\t\tconst category = apps[0].category\n\t\t\t\tif (category === \"edr\") {\n\t\t\t\t\tcategoryTop = 355 \n\t\t\t\t\tcategoryLeft = 50 \n\t\t\t\t} else if (category === \"siem\") {\n\t\t\t\t\tcategoryTop = 95\n\t\t\t\t\tcategoryLeft = 50 \n\t\t\t\t} else if (category === \"cases\") {\n\t\t\t\t\tcategoryTop = 65 \n\t\t\t\t\tcategoryLeft = 175 \n\t\t\t\t} else if (category === \"intel\") {\n\t\t\t\t\tcategoryTop = 355\n\t\t\t\t\tcategoryLeft = 315\n\t\t\t\t} else if (category === \"comms\") {\n\t\t\t\t\tcategoryTop = 415 \n\t\t\t\t\tcategoryLeft = 175 \n\t\t\t\t} else if (category === \"iam\") {\n\t\t\t\t\tcategoryTop = 95\n\t\t\t\t\tcategoryLeft = 315\n\t\t\t\t} else {\n\t\t\t\t\treturn null\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\t
\n\t\t\t\t\t\t{apps.map((app, appIndex) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tkey={app.id}\n\t\t\t\t\t\t\t\t\tlabel={\"\"}\n\t\t\t\t\t\t\t\t\tvariant=\"contained\"\n\t\t\t\t\t\t\t\t\tstyle={{}}\n\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\tconsole.log(\"Add app to framework and remove category: \", app)\n\t\t\t\t\t\t\t\t\t\tapp.objectID = app.id\n\t\t\t\t\t\t\t\t\t\tapp.type = app.category\n\t\t\t\t\t\t\t\t\t\tapp.large_image = app.image_url\n\n\t\t\t\t\t\t\t\t\t\tconst nodename = getNodeName(app.category)\n\n\n\t\t\t\t\t\t\t\t\t\tconst foundelement = cy.getElementById(nodename)\n\t\t\t\t\t\t\t\t\t\tconsole.log(\"FOUND: \", foundelement)\n\t\t\t\t\t\t\t\t\t\tif (foundelement !== undefined && foundelement !== null) {\n\t\t\t\t\t\t\t\t\t\t\tfoundelement.data(\"large_image\", app.image_url)\n\t\t\t\t\t\t\t\t\t\t\tfoundelement.data(\"margin_x\", \"0px\")\n\t\t\t\t\t\t\t\t\t\t\tfoundelement.data(\"margin_y\", \"0px\")\n\t\t\t\t\t\t\t\t\t\t\tfoundelement.data(\"text_margin_y\", `${60*scale}px`)\n\t\t\t\t\t\t\t\t\t\t\tfoundelement.data(\"width\", `${85*scale}px`)\n\t\t\t\t\t\t\t\t\t\t\tfoundelement.data(\"height\", `${85*scale}px`)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tif (setFrameworkData !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"Setting frameworkdata\")\n\t\t\t\t\t\t\t\t\t\t\t// Find discoveryData.id\n\t\t\t\t\t\t\t\t\t\t\tvar keys = []\n\t\t\t\t\t\t\t\t\t\t\tfor (const [key, value] of Object.entries(frameworkData)) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (key.toLowerCase() === app.category.toLowerCase()) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tkeys.push(key)\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\tif (keys.length === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"Failed to find: \", app.category, \" IN \", frameworkData)\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"In else for keys: \", frameworkData, keys)\n\t\t\t\t\t\t\t\t\t\t\t\tfor (var key in keys) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tframeworkData[keys[key]] = app \n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tsetFrameworkData(frameworkData)\n\t\t\t\t\t\t\t\t\t\t\t\tshowRecommendations(app.category, frameworkData)\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tsetFrameworkItem(app) \n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t})}\n\t\t\t\t\t
\n\t\t\t\t)\n\t\t\t})}\n\n\t\t\t{showOptions === false ? null : \n\t\t\t\t
\n\t\t\t\t\t{Object.keys(usecases).map((data, index) => {\n\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)\n\t\t\t\t\t})}\n\t\t\t\t
\n\t\t\t}\n \t\t{/*\n\t\t\t\tObject.getOwnPropertyNames(discoveryData).length > 0 ? \n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tUse-cases\n\t\t\t\t\t\t\n\t\t\t\t\t\t{selectedUsecases.map((data, index) => {\n\t\t\t\t\t\t\tusecasediff += 175\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t})}\n\t\t\t\t\t
\n\t\t\t\t: null*/}\n\n \t\t{\n\t\t\t\tObject.getOwnPropertyNames(discoveryData).length > 0 ? \n\t\t\t\t\t\n\t\t\t\t\t\t{paperTitle.length > 0 ? \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{paperTitle}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t: null}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t//cy.elements().unselectify();\n\t\t\t\t\t\t\t\t\tcy.elements().unselect()\n\n\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\tsetDiscoveryData({})\n\t\t\t\t\t\t\t\t\tsetDefaultSearch(\"\")\n\t\t\t\t\t\t\t\t\tsetPaperTitle(\"\")\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\tsetDiscoveryData({\n\t\t\t\t\t\t\t\t\t\t\"id\": discoveryData.id,\n\t\t\t\t\t\t\t\t\t\t\"label\": discoveryData.label,\n\t\t\t\t\t\t\t\t\t\t\"name\": \"\"\n\t\t\t\t\t\t\t\t\t})\n\n\t\t\t\t\t\t\t\t\tsetNewSelectedApp({\n\t\t\t\t\t\t\t\t\t\t\"animate\": false,\n\t\t\t\t\t\t\t\t\t\t\"app_id\": \"\",\n\t\t\t\t\t\t\t\t\t\t\"boxheight\": \"66.3px\",\n\t\t\t\t\t\t\t\t\t\t\"boxwidth\": \"66.3px\",\n\t\t\t\t\t\t\t\t\t\t\"description\": \"\",\n\t\t\t\t\t\t\t\t\t\t\"errors\": [],\n\t\t\t\t\t\t\t\t\t\t\"font_size\": \"9.36px\",\n\t\t\t\t\t\t\t\t\t\t\"height\": \"66.3px\",\n\t\t\t\t\t\t\t\t\t\t\"id\": \"\",\n\t\t\t\t\t\t\t\t\t\t\"isValid\": true,\n\t\t\t\t\t\t\t\t\t\t\"is_valid\": true,\n\t\t\t\t\t\t\t\t\t\t\"label\": \"SIEM\",\n\t\t\t\t\t\t\t\t\t\t\"large_image\": \"asd\",\n\t\t\t\t\t\t\t\t\t\t\"margin_x\": \"0px\",\n\t\t\t\t\t\t\t\t\t\t\"margin_y\": \"0px\",\n\t\t\t\t\t\t\t\t\t\t\"name\": \"\",\n\t\t\t\t\t\t\t\t\t\t\"text_margin_y\": \"46.800000000000004px\",\n\t\t\t\t\t\t\t\t\t\t\"width\": \"66.3px\",\n\t\t\t\t\t\t\t\t\t\t\"objectID\": \"remove\",\n\t\t\t\t\t\t\t\t\t})\n\n\t\t\t\t\t\t\t\t\tsetSelectionOpen(true)\n\t\t\t\t\t\t\t\t\tsetDefaultSearch(\"\")\n\t\t\n\t\t\t\t\t\t\t\t\t//handleLoadNextSuggestion(frameworkData) \n\t\t\t\t\t\t\t\t\tsetInjectedApps([])\n\n\t\t\t\t\t\t\t\t\tconst foundelement = cy.getElementById(discoveryData.id)\n\t\t\t\t\t\t\t\t\tif (foundelement !== undefined && foundelement !== null) {\n\t\t\t\t\t\t\t\t\t\tconsole.log(\"element: \", foundelement)\n\t\t\t\t\t\t\t\t\t\tconsole.log(\"DISC: \", discoveryData)\n\t\t\t\t\t\t\t\t\t\tfoundelement.data(\"large_image\", parsedDatatypeImages[discoveryData.id.toUpperCase()])\n\t\t\t\t\t\t\t\t\t\tfoundelement.data(\"text_margin_y\", \"14px\")\n\t\t\t\t\t\t\t\t\t\tfoundelement.data(\"margin_x\", \"32px\")\n\t\t\t\t\t\t\t\t\t\tfoundelement.data(\"margin_y\", \"19x\")\n\t\t\t\t\t\t\t\t\t\tfoundelement.data(\"width\", \"45px\")\n\t\t\t\t\t\t\t\t\t\tfoundelement.data(\"height\", \"45px\")\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\t\t\tsetDiscoveryData({})\n\t\t\t\t\t\t\t\t\t\tsetNewSelectedApp({})\n\t\t\t\t\t\t\t\t\t}, 1000)\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{discoveryData.name !== undefined && discoveryData.name !== null && discoveryData.name.length > 0 ? \n\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t\t{discoveryData.id} 0 ? newSelectedApp.image_url : discoveryData.large_image} style={{height: 40, width: 40, margin: \"auto\",}}/>\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t: \n\t\t\t\t\t\t\t\t{discoveryData.id}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{discoveryData.name !== undefined && discoveryData.name !== null && discoveryData.name.length > 0 ? \n\t\t\t\t\t\t\t\t\tdiscoveryData.name\n\t\t\t\t\t\t\t\t\t: \n\t\t\t\t\t\t\t\t\tnewSelectedApp.name !== undefined && newSelectedApp.name !== null && newSelectedApp.name.length > 0 ?\n\t\t\t\t\t\t\t\t\t\tnewSelectedApp.name\n\t\t\t\t\t\t\t\t\t\t: \n\t\t\t\t\t\t\t\t\t\t`Find your ${discoveryData.label} app!`\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{discoveryData !== undefined && discoveryData.name !== undefined && discoveryData.name !== null && discoveryData.name.length > 0 ? \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{discoveryData.description}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{/*isCloud && defaultSearch !== undefined && defaultSearch.length > 0 ? \n\t\t\t\t\t\t\t\t\t\t{<\n\t\t\t\t\t\t\t\t\t\t\tnewSelectedApp={newSelectedApp}\n\t\t\t\t\t\t\t\t\t\t\tsetNewSelectedApp={setNewSelectedApp}\n\t\t\t\t\t\t\t\t\t\t\tdefaultSearch={defaultSearch}\n\t\t\t\t\t\t\t\t\t\t/>}\n\t\t\t\t\t\t\t\t\t\t: \n\t\t\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t\t\t*/}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t: \n\t\t\t\t\t\t\t\tselectionOpen \n\t\t\t\t\t\t\t\t\t? \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\tClick an app below to select it\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t:\n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\tsetSelectionOpen(true)\n\t\t\t\t\t\t\t\t\t\t\tsetDefaultSearch(discoveryData.label)\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\tChoose {discoveryData.label} app\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{selectionOpen ? \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t: null}\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t: null\n\t\t\t}\n\t\t\t {\n\t\t\t\t\t// FIXME: There's something specific loading when\n\t\t\t\t\t// you do the first hover of a node. Why is this different?\n\t\t\t\t\t//console.log(\"CY: \", incy)\n\t\t\t\t\tsetCy(incy)\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t{isCloud && inputUsecase !== undefined && inputUsecase !== null && isLoggedIn === true && Object.keys(inputUsecase).length > 0 ? \n\t\t\t\t\n\t\t\t: null}\n\t\t
\n\t)\n}\n\nexport default AppFramework;\n","import React, { useEffect, useContext } from \"react\";\nimport theme from '../theme.jsx';\nimport { isMobile } from \"react-device-detect\" \nimport ChipInput from \"material-ui-chip-input\";\nimport UsecaseSearch from \"../components/UsecaseSearch.jsx\"\n\nimport {\n Badge,\n Avatar,\n Grid,\n\tInputLabel,\n\tSelect,\n\tListSubheader,\n Paper,\n Tooltip,\n Divider,\n Button,\n TextField,\n IconButton,\n Menu,\n MenuItem,\n FormControlLabel,\n Chip,\n Switch,\n Typography,\n Zoom,\n CircularProgress,\n Dialog,\n DialogTitle,\n DialogActions,\n DialogContent,\n\tOutlinedInput,\n\tCheckbox,\n\tListItemText,\n\tRadio,\n\tRadioGroup,\n\tFormControl,\n\tFormLabel,\n\n} from \"@material-ui/core\";\n\nimport {\n ExpandLess as ExpandLessIcon,\n ExpandMore as ExpandMoreIcon,\n Publish as PublishIcon,\n OpenInNew as OpenInNewIcon,\n} from \"@material-ui/icons\";\n\nconst EditWorkflow = (props) => {\n\tconst { globalUrl, workflow, setWorkflow, modalOpen, setModalOpen, showUpload, usecases, setNewWorkflow, appFramework, isEditing, userdata, } = props\n\n const [submitLoading, setSubmitLoading] = React.useState(false);\n const [showMoreClicked, setShowMoreClicked] = React.useState(false);\n\tconst [innerWorkflow, setInnerWorkflow] = React.useState(workflow)\n const [_, setUpdate] = React.useState(\"\"); // Used for rendering, don't remove\n const [newWorkflowTags, setNewWorkflowTags] = React.useState(workflow.tags !== undefined && workflow.tags !== null ? JSON.parse(JSON.stringify(workflow.tags)) : [])\n const [selectedUsecases, setSelectedUsecases] = React.useState(workflow.usecase_ids !== undefined && workflow.usecase_ids !== null ? JSON.parse(JSON.stringify(workflow.usecase_ids)) : []);\n\tconst [foundWorkflowId, setFoundWorkflowId] = React.useState(\"\")\n\tconst [name, setName] = React.useState(workflow.name !== undefined ? workflow.name : \"\")\n\tconst [description, setDescription] = React.useState(workflow.description !== undefined ? workflow.description : \"\")\n\n\n\t// Gets the generated workflow \n\tconst getGeneratedWorkflow = (workflow_id) => {\n fetch(globalUrl + \"/api/v1/workflows/\" + workflow_id, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n\t\t.then((response) => {\n\t\t\tif (response.status !== 200) {\n\t\t\t\tconsole.log(\"Status not 200 when getting workflow\");\n\t\t\t}\n\n\t\t\treturn response.json();\n\t\t})\n\t\t.then((responseJson) => {\n\t\t\tif (responseJson.id === workflow_id) {\n\t\t\t\tconsole.log(\"GOT WORKFLOW: \", responseJson)\n\t\t\t\tif (name === \"\") {\n\t\t\t\t\tinnerWorkflow.name = responseJson.name\n\t\t\t\t\tsetName(responseJson.name)\n\t\t\t\t}\n\n\t\t\t\tif (description === \"\") {\n\t\t\t\t\tinnerWorkflow.description = responseJson.description\n\t\t\t\t\tsetDescription(description)\n\t\t\t\t}\n\n\t\t\t\tif (newWorkflowTags === []) {\n\t\t\t\t\tinnerWorkflow.tags = responseJson.tags\n\t\t\t\t\tsetNewWorkflowTags(responseJson.tags)\n\t\t\t\t}\n\n\t\t\t\tif (selectedUsecases === []) {\n\t\t\t\t\tselectedUsecases = responseJson.usecase_ids\n\t\t\t\t}\n\n\t\t\t\tinnerWorkflow.id = responseJson.id\n\t\t\t\tinnerWorkflow.blogpost = responseJson.blogpost\n\t\t\t\tinnerWorkflow.actions = responseJson.actions\n\t\t\t\tinnerWorkflow.triggers = responseJson.triggers\n\t\t\t\tinnerWorkflow.branches = responseJson.branches\n\t\t\t\tinnerWorkflow.comments = responseJson.comments\n\t\t\t\tinnerWorkflow.workflow_variables = responseJson.workflow_variables\n\t\t\t\tinnerWorkflow.execution_variables = responseJson.execution_variables\n\n\n\t\t\t\tsetInnerWorkflow(innerWorkflow)\n \t setUpdate(Math.random())\n\t\t\t}\n\t\t})\n\t\t.catch((error) => {\n\t\t\t//alert.error(error.toString());\n\t\t\tconsole.log(\"Get workflow error: \", error.toString());\n\t\t})\n\t}\n\n\tif (foundWorkflowId.length > 0) {\n\t\tgetGeneratedWorkflow(foundWorkflowId)\n\n\t\tsetFoundWorkflowId(\"\")\n\t} else {\n\t}\n\n\tif (modalOpen !== true) {\n\t\treturn null\n\t}\n\n\tconst newWorkflow = isEditing === true ? false : true\n\n var upload = \"\";\n\tvar total_count = 0\n\n\treturn (\n {\n setModalOpen(false);\n }}\n PaperProps={{\n style: {\n backgroundColor: theme.palette.surfaceColor,\n color: \"white\",\n minWidth: isMobile ? \"90%\" : 550,\n maxWidth: isMobile ? \"90%\" : 550,\n\t\t\t\t\tminHeight: 400,\n //minWidth: isMobile ? \"90%\" : newWorkflow === true ? 1000 : 550,\n //maxWidth: isMobile ? \"90%\" : newWorkflow === true ? 1000 : 550,\n },\n }}\n >\n \n\t\t\t\t
\n \t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{newWorkflow ? \"New\" : \"Editing\"} workflow\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t{newWorkflow === true ? null :\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tWorkflows can be built from scratch, or from templates. Usecases can help you discover next steps, and you can search for them directly. Learn more\n\t\t\t\t\t\t\n\t\t\t\t\t\t{showUpload === true ? \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t upload.click()}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n \t \t
\n\t\t\t\t\t\t: null}\n \t
\n\t\t\t\t\t{/*newWorkflow === true ? \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tUse a Template\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tStart your workflow from our templating system. This uses publied workflows from our Creators to generate full Usecases or parts of your Workflow.\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t: null*/}\n\t\t\t\t
\n
\n \n \n\t\t\t\t\t
\n \t {\n\t\t\t\t\t\t\t\tsetName(event.target.value)\n\t\t\t\t\t\t\t}}\n \t InputProps={{\n \t style: {\n \t color: \"white\",\n \t },\n \t }}\n \t color=\"primary\"\n \t placeholder=\"Name\"\n\t\t\t\t\t\t\trequired\n \t margin=\"dense\"\n \t defaultValue={innerWorkflow.name}\n\t\t\t\t\t\t\tlabel=\"Name\"\n \t autoFocus\n \t fullWidth\n \t/>\n \t {\n\t\t\t\t\t\t\t\tsetDescription(event.target.value)\n\t\t\t\t\t\t\t}}\n \t InputProps={{\n \t style: {\n \t color: \"white\",\n \t },\n \t }}\n\t\t\t\t\t\t\tmaxRows={4}\n \t color=\"primary\"\n \t defaultValue={innerWorkflow.description}\n \t placeholder=\"Description\"\n \t multiline\n\t\t\t\t\t\t\tlabel=\"Description\"\n \t margin=\"dense\"\n \t fullWidth\n \t/>\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tnewWorkflowTags.push(chip);\n\t\t\t\t\t\t\t\t\tsetNewWorkflowTags(newWorkflowTags);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tonDelete={(chip, index) => {\n\t\t\t\t\t\t\t\t\tnewWorkflowTags.splice(index, 1);\n\t\t\t\t\t\t\t\t\tsetNewWorkflowTags(newWorkflowTags);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{usecases !== null && usecases !== undefined && usecases.length > 0 ? \n \t\t\t\t\t\n \t\t\t\t\t Usecases\n \t\t\t\t\t \n \t\t\t\t\t\n\t\t\t\t\t\t\t: null}\n\t\t\t\t\t\t
\n\n \t\t\t\t\t{showMoreClicked === true ? \n\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tStatus\n\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"Data: \", e.target.value)\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tinnerWorkflow.workflow_type = e.target.value\n\t\t\t\t\t\t\t\t\t\t\t\tsetInnerWorkflow(innerWorkflow)\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t} label=\"Test\" />\n\t\t\t\t\t\t\t\t\t\t\t} label=\"Production\" />\n\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tType\n\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"Data: \", e.target.value)\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tinnerWorkflow.workflow_type = e.target.value\n\t\t\t\t\t\t\t\t\t\t\t\tsetInnerWorkflow(innerWorkflow)\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t} label=\"Trigger\" />\n\t\t\t\t\t\t\t\t\t\t\t} label=\"Subflow\" />\n\t\t\t\t\t\t\t\t\t\t\t} label=\"Standalone\" />\n\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\n\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\tinnerWorkflow.blogpost = event.target.value\n\t\t\t\t\t\t\t\t\t\tsetInnerWorkflow(innerWorkflow)\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tInputProps={{\n\t\t\t\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\t\t\t\tcolor: \"white\",\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\t\t\t\tdefaultValue={innerWorkflow.blogpost}\n\t\t\t\t\t\t\t\t\tplaceholder=\"A blogpost or other reference for how this work workflow was built, and what it's for.\"\n\t\t\t\t\t\t\t\t\trows=\"1\"\n\t\t\t\t\t\t\t\t\tlabel=\"blogpost\"\n\t\t\t\t\t\t\t\t\tmargin=\"dense\"\n\t\t\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\tinnerWorkflow.video = event.target.value\n\t\t\t\t\t\t\t\t\t\tsetInnerWorkflow(innerWorkflow)\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tInputProps={{\n\t\t\t\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\t\t\t\tcolor: \"white\",\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\t\t\t\tdefaultValue={innerWorkflow.video}\n\t\t\t\t\t\t\t\t\tplaceholder=\"A youtube or loom link to the video\"\n\t\t\t\t\t\t\t\t\trows=\"1\"\n\t\t\t\t\t\t\t\t\tlabel=\"Video\"\n\t\t\t\t\t\t\t\t\tmargin=\"dense\"\n\t\t\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\tinnerWorkflow.default_return_value = event.target.value\n\t\t\t\t\t\t\t\t\t\tsetInnerWorkflow(innerWorkflow)\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tInputProps={{\n\t\t\t\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\t\t\t\tcolor: \"white\",\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\t\t\t\tdefaultValue={innerWorkflow.default_return_value}\n\t\t\t\t\t\t\t\t\tplaceholder=\"Default return value (used for Subflows if the subflow fails)\"\n\t\t\t\t\t\t\t\t\trows=\"3\"\n\t\t\t\t\t\t\t\t\tmultiline\n\t\t\t\t\t\t\t\t\tlabel=\"Default return value\"\n\t\t\t\t\t\t\t\t\tmargin=\"dense\"\n\t\t\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t: null}\n \t\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tsetShowMoreClicked(!showMoreClicked);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{showMoreClicked ? : }\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t{/*newWorkflow === true ? \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t: null*/}\n \n \n {\n\t\t\t\t\t\t\tif (setNewWorkflow !== undefined) {\n\t\t\t\t\t\t\t\tsetWorkflow({})\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tsetModalOpen(false)\n }}\n color=\"primary\"\n >\n Cancel\n \n {\n\t\t\t\t\t\t\tinnerWorkflow.name = name \n\t\t\t\t\t\t\tinnerWorkflow.description = description \n\t\t\t\t\t\t\tif (newWorkflowTags.length > 0) {\n\t\t\t\t\t\t\t\tinnerWorkflow.tags = newWorkflowTags\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (selectedUsecases.length > 0) {\n\t\t\t\t\t\t\t\tinnerWorkflow.usecase_ids = selectedUsecases\n\t\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\t\tif (setNewWorkflow !== undefined) {\n\t\t\t\t\t\t\t\tsetNewWorkflow(\n\t\t\t\t\t\t\t\t\tinnerWorkflow.name,\n\t\t\t\t\t\t\t\t\tinnerWorkflow.description,\n\t\t\t\t\t\t\t\t\tinnerWorkflow.tags,\n\t\t\t\t\t\t\t\t\tinnerWorkflow.default_return_value,\n\t\t\t\t\t\t\t\t\tinnerWorkflow,\n\t\t\t\t\t\t\t\t\tnewWorkflow,\n\t\t\t\t\t\t\t\t\tinnerWorkflow.usecase_ids,\n\t\t\t\t\t\t\t\t\tinnerWorkflow.blogpost,\n\t\t\t\t\t\t\t\t\tinnerWorkflow.status,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tsetWorkflow({})\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tsetWorkflow(innerWorkflow)\n\t\t\t\t\t\t\t\tconsole.log(\"editing workflow: \", innerWorkflow)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tsetModalOpen(false)\n }}\n color=\"primary\"\n >\n {submitLoading ? : \"Submit\"}\n \n \n \n \n\t)\n}\n\nexport default EditWorkflow;\n","import React, { useEffect, useContext } from \"react\";\nimport ReactDOM from \"react-dom\"\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { Navigate } from \"react-router-dom\";\n//import { Redirect } from \"react-router-dom\";\n\n\nimport SecurityFramework from '../components/SecurityFramework.jsx';\nimport EditWorkflow from \"../components/EditWorkflow.jsx\" \nimport { ShepherdTour, ShepherdTourContext } from 'react-shepherd'\n\nimport { isMobile } from \"react-device-detect\" \n\nimport {\n Badge,\n\tDivider,\n Avatar,\n Drawer,\n Grid,\n\tInputLabel,\n\tSelect,\n\tListSubheader,\n Paper,\n Tooltip,\n Button,\n TextField,\n FormControl,\n IconButton,\n Menu,\n MenuItem,\n Chip,\n Typography,\n Zoom,\n CircularProgress,\n Dialog,\n DialogTitle,\n DialogActions,\n DialogContent,\n\tCheckbox,\n\tLinearProgress,\n\tListItemText,\n} from \"@material-ui/core\";\n\nimport {\n AvatarGroup,\n} from \"@mui/material\"\n\nimport {\n GridOn as GridOnIcon,\n List as ListIcon,\n Close as CloseIcon,\n Compare as CompareIcon,\n Maximize as MaximizeIcon,\n Minimize as MinimizeIcon,\n AddCircle as AddCircleIcon,\n Toc as TocIcon,\n Send as SendIcon,\n Search as SearchIcon,\n FileCopy as FileCopyIcon,\n Delete as DeleteIcon,\n BubbleChart as BubbleChartIcon,\n Restore as RestoreIcon,\n Cached as CachedIcon,\n GetApp as GetAppIcon,\n Apps as AppsIcon,\n Edit as EditIcon,\n MoreVert as MoreVertIcon,\n PlayArrow as PlayArrowIcon,\n Add as AddIcon,\n Publish as PublishIcon,\n CloudUpload as CloudUploadIcon,\n CloudDownload as CloudDownloadIcon,\n ExpandLess as ExpandLessIcon,\n ExpandMore as ExpandMoreIcon,\n\tDone as DoneIcon,\n\tCheckCircle as CheckCircleIcon, \n\tRadioButtonUnchecked as RadioButtonUncheckedIcon,\n ArrowLeft as ArrowLeftIcon,\n ArrowRight as ArrowRightIcon,\n} from \"@material-ui/icons\";\n\n//import NestedMenuItem from \"material-ui-nested-menu-item\";\n//import {Search as SearchIcon, ArrowUpward as ArrowUpwardIcon, Visibility as VisibilityIcon, Close as CloseIcon, Error as ErrorIcon, FindReplace as FindreplaceIcon, ArrowLeft as ArrowLeftIcon, Cached as CachedIcon, DirectionsRun as DirectionsRunIcon, Add as AddIcon, Polymer as PolymerIcon, FormatListNumbered as FormatListNumberedIcon, Create as CreateIcon, PlayArrow as PlayArrowIcon, AspectRatio as AspectRatioIcon, MoreVert as MoreVertIcon, Apps as AppsIcon, Schedule as ScheduleIcon, FavoriteBorder as FavoriteBorderIcon, Pause as PauseIcon, Delete as DeleteIcon, AddCircleOutline as AddCircleOutlineIcon, Save as SaveIcon, KeyboardArrowLeft as KeyboardArrowLeftIcon, KeyboardArrowRight as KeyboardArrowRightIcon, ArrowBack as ArrowBackIcon, Settings as SettingsIcon, LockOpen as LockOpenIcon, ExpandMore as ExpandMoreIcon, VpnKey as VpnKeyIcon} from '@material-ui/icons';\n\n//https://next.material-ui.com/components/material-icons/\nimport { DataGrid, GridToolbar } from \"@mui/x-data-grid\";\n\n//import JSONPretty from 'react-json-pretty';\n//import JSONPrettyMon from 'react-json-pretty/dist/monikai'\nimport Dropzone from \"../components/Dropzone.jsx\";\n\nimport { useNavigate, Link } from \"react-router-dom\";\nimport { useAlert } from \"react-alert\";\nimport ChipInput from \"material-ui-chip-input\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport theme from \"../theme.jsx\";\n\nconst inputColor = \"#383B40\";\nconst surfaceColor = \"#27292D\";\nconst svgSize = 24;\nconst imagesize = 22;\n\nconst useStyles = makeStyles((theme) => ({\n datagrid: {\n border: 0,\n \"& .MuiDataGrid-columnsContainer\": {\n backgroundColor:\n theme.palette.type === \"light\" ? \"#fafafa\" : theme.palette.inputColor,\n },\n \"& .MuiDataGrid-iconSeparator\": {\n display: \"none\",\n },\n \"& .MuiDataGrid-colCell, .MuiDataGrid-cell\": {\n borderRight: `1px solid ${\n theme.palette.type === \"light\" ? \"white\" : \"#303030\"\n }`,\n },\n \"& .MuiDataGrid-columnsContainer, .MuiDataGrid-cell\": {\n borderBottom: `1px solid ${\n theme.palette.type === \"light\" ? \"#f0f0f0\" : \"#303030\"\n }`,\n },\n \"& .MuiDataGrid-cell\": {\n color:\n theme.palette.type === \"light\" ? \"white\" : \"rgba(255,255,255,0.65)\",\n },\n \"& .MuiPaginationItem-root, .MuiTablePagination-actions, .MuiTablePagination-caption\":\n {\n borderRadius: 0,\n color: \"white\",\n },\n },\n}));\n\n// Takes an action in Shuffle and\n// Returns information about the icon, the color etc to be used\n// This can be used for actions of all types\nexport const GetIconInfo = (action) => {\n // Finds the icon based on the action. Should be verbs.\n const iconList = [\n { key: \"cache_add\", values: [\"set_cache\"] },\n { key: \"cache_get\", values: [\"get_cache\"] },\n { key: \"filter\", values: [\"filter\"] },\n { key: \"merge\", values: [\"join\", \"merge\", \"route\", \"router\"] },\n {\n key: \"search\",\n values: [\"search\", \"find\", \"locate\", \"index\", \"analyze\", \"anal\", \"match\", \"check cache\", \"check\", \"verify\", \"validate\"],\n },\n { key: \"list\", values: [\"list\", \"head\", \"options\"] },\n {\n key: \"download\",\n values: [\n \"capture\",\n \"get\",\n \"download\",\n \"return\",\n \"hello_world\",\n \"curl\",\n \"request\",\n \"export\",\n \"preview\",\n ],\n },\n { key: \"add\", values: [\"add\", \"accept\", ] },\n { key: \"delete\", values: [\"delete\", \"remove\", \"clear\", \"clean\", \"dismiss\",] },\n {\n key: \"send\",\n values: [\n \"send\",\n \"dispatch\",\n \"mail\",\n \"forward\",\n \"post\",\n \"submit\",\n \"mark\",\n \"set\",\n \"release\",\n ],\n },\n {\n key: \"repeat\",\n values: [\"repeat\", \"retry\", \"pause\", \"skip\", \"copy\", \"replicat\", \"demo\", ],\n },\n { key: \"execute\", values: [\"execute\", \"run\", \"play\", \"raise\"] },\n { key: \"extract\", values: [\"extract\", \"unpack\", \"decompress\", \"open\"] },\n { key: \"inflate\", values: [\"inflate\", \"pack\", \"compress\"] },\n {\n key: \"edit\",\n values: [\n \"modify\",\n \"update\",\n \"create\",\n \"edit\",\n \"put\",\n \"patch\",\n \"change\",\n \"replace\",\n \"conver\",\n \"map\",\n \"format\",\n \"escape\",\n \"describe\",\n ],\n },\n {\n key: \"compare\",\n values: [\"compare\", \"convert\", \"to\", \"filter\", \"translate\", \"parse\"],\n },\n { key: \"close\", values: [\"close\", \"stop\", \"cancel\", \"block\"] },\n ];\n\n var selectedKey = \"\";\n if (action.name === undefined || action.name === null) {\n } else {\n const actionname = action.name.toLowerCase();\n for (var key in iconList) {\n //console.log(iconList[key], actionname)\n const found = iconList[key].values.find((value) =>\n actionname.includes(value)\n );\n if (found !== null && found !== undefined) {\n selectedKey = iconList[key].key;\n break;\n }\n }\n }\n\n // Some of these are manually parsed or created instead of material ui\n //M8 0C3.58 0 0 1.79 0 4C0 6.21 3.58 8 8 8C12.42 8 16 6.21 16 4C16 1.79 12.42 0 8 0ZM0 6V9C0 11.21 3.58 13 8 13C12.42 13 16 11.21 16 9V6C16 8.21 12.42 10 8 10C3.58 10 0 8.21 0 6ZM0 11V14C0 16.21 3.58 18 8 18C9.41 18 10.79 17.81 12 17.46V14.46C10.79 14.81 9.41 15 8 15C3.58 15 0 13.21 0 11ZM17 11V14H14V16H17V19H19V16H22V14H19V11\n //https://www.figma.com/file/uCfnMs5w6wnLx6ehPHEV74/Figma-Material-Design-System-v3_0?node-id=834%3A21\n //COLORS: https://www.pinterest.co.uk/pin/326299935499972946/\n const defaultColor = \"#f76b1c\";\n const defaultGradient = [\"#fad961\", \"#f76b1c\"];\n const parsedIcons = {\n cache_add: {\n icon: \"M11 3C6.58 3 3 4.79 3 7C3 9.21 6.58 11 11 11C15.42 11 19 9.21 19 7C19 4.79 15.42 3 11 3ZM3 9V12C3 14.21 6.58 16 11 16C15.42 16 19 14.21 19 12V9C19 11.21 15.42 13 11 13C6.58 13 3 11.21 3 9ZM3 14V17C3 19.21 6.58 21 11 21C12.41 21 13.79 20.81 15 20.46V17.46C13.79 17.81 12.41 18 11 18C6.58 18 3 16.21 3 14ZM20 14V17H17V19H20V22H22V19H25V17H22V14\",\n iconColor: \"white\",\n iconBackgroundColor: \"#8acc3f\",\n originalIcon: \"\",\n fillGradient: [\"#8acc3f\", \"#459622\"],\n },\n cache_get: {\n icon: \"M12 2C7.58 2 4 3.79 4 6C4 8.06 7.13 9.74 11.15 9.96C12.45 8.7 14.19 8 16 8C16.8 8 17.59 8.14 18.34 8.41C19.37 7.74 20 6.91 20 6C20 3.79 16.42 2 12 2ZM4 8V11C4 12.68 6.08 14.11 9 14.71C9.06 13.7 9.32 12.72 9.77 11.82C6.44 11.34 4 9.82 4 8ZM15.93 9.94C14.75 9.95 13.53 10.4 12.46 11.46C8.21 15.71 13.71 22.5 18.75 19.17L23.29 23.71L24.71 22.29L20.17 17.75C22.66 13.97 19.47 9.93 15.93 9.94ZM15.9 12C17.47 11.95 19 13.16 19 15C19 15.7956 18.6839 16.5587 18.1213 17.1213C17.5587 17.6839 16.7956 18 16 18C13.33 18 12 14.77 13.88 12.88C14.47 12.29 15.19 12 15.9 12ZM4 13V16C4 18.05 7.09 19.72 11.06 19.95C10.17 19.07 9.54 17.95 9.22 16.74C6.18 16.17 4 14.72 4 13Z\",\n iconColor: \"white\",\n iconBackgroundColor: \"#8acc3f\",\n originalIcon: \"\",\n fillGradient: [\"#8acc3f\", \"#459622\"],\n },\n repeat: {\n icon: \"M19 8l-4 4h3c0 3.31-2.69 6-6 6-1.01 0-1.97-.25-2.8-.7l-1.46 1.46C8.97 19.54 10.43 20 12 20c4.42 0 8-3.58 8-8h3l-4-4zM6 12c0-3.31 2.69-6 6-6 1.01 0 1.97.25 2.8.7l1.46-1.46C15.03 4.46 13.57 4 12 4c-4.42 0-8 3.58-8 8H1l4 4 4-4H6z\",\n iconColor: \"white\",\n iconBackgroundColor: defaultColor,\n originalIcon: ,\n },\n add: {\n icon: \"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\",\n iconColor: \"white\",\n iconBackgroundColor: defaultColor,\n originalIcon: ,\n },\n edit: {\n icon: \"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.9959.9959 0 00-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z\",\n iconColor: \"white\",\n iconBackgroundColor: defaultColor,\n originalIcon: ,\n },\n filter: {\n icon: \"M4.25 5.61C6.27 8.2 10 13 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-6s3.72-4.8 5.74-7.39c.51-.66.04-1.61-.79-1.61H5.04c-.83 0-1.3.95-.79 1.61z\",\n iconColor: \"white\",\n iconBackgroundColor: \"#f5515f\",\n originalIcon: \"\",\n fillGradient: [\"#f5515f\", \"#a1051d\"],\n },\n merge: {\n icon: \"M17 20.41 18.41 19 15 15.59 13.59 17 17 20.41zM7.5 8H11v5.59L5.59 19 7 20.41l6-6V8h3.5L12 3.5 7.5 8z\",\n iconColor: \"white\",\n iconBackgroundColor: \"#f5515f\",\n originalIcon: \"\",\n fillGradient: [\"#f5515f\", \"#a1051d\"],\n },\n compare: {\n icon: \"M10 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h5v2h2V1h-2v2zm0 15H5l5-6v6zm9-15h-5v2h5v13l-5-6v9h5c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z\",\n iconColor: \"white\",\n iconBackgroundColor: defaultColor,\n originalIcon: ,\n },\n extract: {\n icon: \"M3 3h18v2H3z\",\n iconColor: \"white\",\n iconBackgroundColor: defaultColor,\n originalIcon: ,\n },\n inflate: {\n icon: \"M6 19h12v2H6z\",\n iconColor: \"white\",\n iconBackgroundColor: defaultColor,\n originalIcon: ,\n },\n list: {\n icon: \"M3 9h14V7H3v2zm0 4h14v-2H3v2zm0 4h14v-2H3v2zm16 0h2v-2h-2v2zm0-10v2h2V7h-2zm0 6h2v-2h-2v2z\",\n iconColor: \"white\",\n iconBackgroundColor: defaultColor,\n originalIcon: ,\n },\n execute: {\n icon: \"M8 5v14l11-7z\",\n iconColor: \"white\",\n iconBackgroundColor: defaultColor,\n originalIcon: ,\n },\n delete: {\n icon: \"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z\",\n iconColor: \"white\",\n iconBackgroundColor: \"#03030e\",\n originalIcon: ,\n fillGradient: [\"#03030e\", \"#205d66\"],\n },\n close: {\n icon: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\",\n iconColor: \"white\",\n iconBackgroundColor: \"#03030e\",\n originalIcon: ,\n fillGradient: [\"#03030e\", \"#205d66\"],\n },\n send: {\n icon: \"M2.01 21L23 12 2.01 3 2 10l15 2-15 2z\",\n iconColor: \"white\",\n iconBackgroundColor: \"#0373da\",\n originalIcon: ,\n fillGradient: [\"#0bc8bf\", \"#0373da\"],\n },\n download: {\n icon: \"M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z\",\n iconColor: \"white\",\n iconBackgroundColor: \"#0373da\",\n originalIcon: ,\n fillGradient: [\"#0bc8bf\", \"#0373da\"],\n },\n search: {\n icon: \"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\",\n iconColor: \"white\",\n iconBackgroundColor: \"green\",\n originalIcon: ,\n },\n };\n\n var selectedItem = parsedIcons[selectedKey];\n if (selectedItem === undefined || selectedItem === null) {\n return {\n icon: \"\",\n iconColor: \"\",\n iconBackground: \"black\",\n originalIcon: \"\",\n };\n }\n\n if (selectedItem.fillGradient === undefined) {\n selectedItem.fillGradient = defaultGradient;\n selectedItem.iconBackgroundColor = defaultColor;\n }\n\n if (selectedItem.icon === \"\" || selectedItem.icon === undefined) {\n console.log(\n `MISSING PATH FOR ${selectedKey} (find in scope): `,\n selectedItem.originalIcon.type.type\n );\n }\n\n if (\n (selectedItem.originalIcon === undefined ||\n selectedItem.originalIcon === \"\") &&\n selectedItem.icon !== \"\" &&\n selectedItem.icon !== undefined\n ) {\n const svg_pin = (\n \n \n \n );\n selectedItem.originalIcon = svg_pin;\n }\n\n return selectedItem;\n};\n\nconst chipStyle = {\n backgroundColor: \"#3d3f43\",\n marginRight: 5,\n paddingLeft: 5,\n paddingRight: 5,\n height: 28,\n cursor: \"pointer\",\n borderColor: \"#3d3f43\",\n color: \"white\",\n};\n\nexport const validateJson = (showResult) => {\n\tif (typeof showResult === 'string') {\n\t\tshowResult = showResult.split(\" False\").join(\" false\")\n\t\tshowResult = showResult.split(\" True\").join(\" true\")\n\t}\n\n\tif (typeof showResult === \"object\" || typeof showResult === \"array\") {\n \treturn {\n \t valid: true,\n \t result: showResult,\n \t}\n\t}\n\n\tif (showResult[0] === \"\\\"\") {\n \treturn {\n \t valid: false,\n \t result: showResult,\n\t\t}\n\t}\n\n var jsonvalid = true\n try {\n if (!showResult.includes(\"{\") && !showResult.includes(\"[\")) {\n jsonvalid = false\n\n\t\t\treturn {\n\t\t\t\tvalid: jsonvalid,\n\t\t\t\tresult: showResult,\n\t\t\t};\n }\n } catch (e) {\n showResult = showResult.split(\"'\").join('\"');\n\n try {\n if (!showResult.includes(\"{\") && !showResult.includes(\"[\")) {\n jsonvalid = false;\n }\n } catch (e) {\n\n jsonvalid = false;\n }\n }\n\n var result = showResult;\n try {\n result = jsonvalid ? JSON.parse(showResult, {\"storeAsString\": true}) : showResult;\n } catch (e) {\n ////console.log(\"Failed parsing JSON even though its valid: \", e)\n jsonvalid = false;\n }\n\n\tif (jsonvalid === false) {\n\n\t\tif (typeof showResult === 'string') {\n\t\t\tshowResult = showResult.trim()\n\t\t}\n\n\t\ttry {\n\t\t\tvar newstr = showResult.replaceAll(\"'\", '\"')\n\n\t\t\t//console.log(\"Try replacements and trimming with new value: \", newstr)\n\t\t\tresult = JSON.parse(newstr)\n\t\t\tjsonvalid = true\n\t\t} catch (e) {\n\n\t\t\t//console.log(\"Failed parsing JSON even though its valid (2): \", e)\n\t\t\tjsonvalid = false\n\t\t}\n\t}\n\n\tif (jsonvalid && typeof result === \"number\") {\n\t\tjsonvalid = false\n\t}\n\n\t// This is where we start recursing\n\tif (jsonvalid) {\n\t\t// Check fields if they can be parsed too \n \t//console.log(\"In this window for the data. Should look for list in result! Does recursion.\") \n\t\ttry {\n\t\t\tfor (const [key, value] of Object.entries(result)) {\n\t\t\t\tif (typeof value === \"string\" && (value.startsWith(\"{\") || value.startsWith(\"[\"))) {\n\t\t\t\t\tconst inside_result = validateJson(value)\n\t\t\t\t\tif (inside_result.valid) {\n\t\t\t\t\t\tif (typeof inside_result.result === \"string\") {\n \t\tconst newres = JSON.parse(inside_result.result)\n\t\t\t\t\t\t\tresult[key] = newres \n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresult[key] = inside_result.result\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\t// Usually only reaches here if raw array > dict > value\n\t\t\t\t\tif (typeof showResult !== \"array\") {\n\t\t\t\t\t\tfor (const [subkey, subvalue] of Object.entries(value)) {\n\t\t\t\t\t\t\tif (typeof subvalue === \"string\" && (subvalue.startsWith(\"{\") || subvalue.startsWith(\"[\"))) {\n\t\t\t\t\t\t\t\tconst inside_result = validateJson(subvalue)\n\t\t\t\t\t\t\t\tif (inside_result.valid) {\n\t\t\t\t\t\t\t\t\tif (typeof inside_result.result === \"string\") {\n\t\t\t\t\t\t\t\t\t\tconst newres = JSON.parse(inside_result.result)\n\t\t\t\t\t\t\t\t\t\tresult[key][subkey] = newres \n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tresult[key][subkey] = inside_result.result\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.log(\"Failed parsing inside json subvalues: \", e)\n\t\t}\n\t}\n\n return {\n valid: jsonvalid,\n result: result,\n };\n};\n\nconst Workflows = (props) => {\n const { globalUrl, isLoggedIn, isLoaded, userdata } = props;\n document.title = \"Shuffle - Workflows\";\n\tlet navigate = useNavigate();\n\n const alert = useAlert();\n const classes = useStyles(theme);\n const imgSize = 60;\n\n const referenceUrl = globalUrl + \"/api/v1/hooks/\";\n\n var upload = \"\";\n\n const [workflows, setWorkflows] = React.useState([]);\n const [_, setUpdate] = React.useState(\"\"); // Used for rendering, don't remove\n const [selectedUsecases, setSelectedUsecases] = React.useState([]);\n const [filteredWorkflows, setFilteredWorkflows] = React.useState([]);\n const [selectedWorkflow, setSelectedWorkflow] = React.useState({});\n const [workflowDone, setWorkflowDone] = React.useState(false);\n const [selectedWorkflowId, setSelectedWorkflowId] = React.useState(\"\");\n\n const [field1, setField1] = React.useState(\"\");\n const [field2, setField2] = React.useState(\"\");\n const [downloadUrl, setDownloadUrl] = React.useState(\n \"https://github.com/frikky/shuffle-workflows\"\n );\n const [downloadBranch, setDownloadBranch] = React.useState(\"master\");\n const [loadWorkflowsModalOpen, setLoadWorkflowsModalOpen] =\n React.useState(false);\n const [exportModalOpen, setExportModalOpen] = React.useState(false);\n const [exportData, setExportData] = React.useState(\"\");\n\n const [modalOpen, setModalOpen] = React.useState(false);\n const [isEditing, setIsEditing] = React.useState(true);\n const [newWorkflowName, setNewWorkflowName] = React.useState(\"\");\n const [newWorkflowDescription, setNewWorkflowDescription] =\n React.useState(\"\");\n const [newWorkflowTags, setNewWorkflowTags] = React.useState([]);\n\n const [defaultReturnValue, setDefaultReturnValue] = React.useState(\"\");\n const [blogpost, setBlogpost] = React.useState(\"\");\n const [status, setStatus] = React.useState(\"test\");\n\n const [deleteModalOpen, setDeleteModalOpen] = React.useState(false);\n const [publishModalOpen, setPublishModalOpen] = React.useState(false);\n const [editingWorkflow, setEditingWorkflow] = React.useState({});\n const [isDropzone, setIsDropzone] = React.useState(false);\n const [view, setView] = React.useState(\"grid\");\n const [filters, setFilters] = React.useState([]);\n const [submitLoading, setSubmitLoading] = React.useState(false);\n const [actionImageList, setActionImageList] = React.useState([]);\n\n const [firstLoad, setFirstLoad] = React.useState(true);\n const [showMoreClicked, setShowMoreClicked] = React.useState(false);\n const [usecases, setUsecases] = React.useState([]);\n const [allUsecases, setAllUsecases] = React.useState({\n\t\t\"success\": false,\n\t});\n const [appFramework, setAppFramework] = React.useState({});\n const [drawerOpen, setDrawerOpen] = React.useState(false)\n const [videoViewOpen, setVideoViewOpen] = React.useState(false)\n const [gettingStartedItems, setGettingStartedItems] = React.useState([])\n\tconst drawerWidth = drawerOpen ? 325 : 0\n\n\tconst sidebarKey = \"getting_started_sidebar\"\n\tif (isLoggedIn === true && gettingStartedItems.length === 0 && (userdata.tutorials !== undefined && userdata.tutorials !== null && userdata.tutorials.length > 0) && workflowDone === true) {\n\n\t\tconst activeFiltered = userdata.tutorials.filter((item) => item.active === true)\n\t\tif (activeFiltered.length > 0) {\n\t\t\tvar newfiltered = []\n\t\t\tfor (var key in activeFiltered) {\n\t\t\t\tif (activeFiltered[key].name === \"Discover Usecases\") {\n\t\t\t\t\tif (workflows.length > 1) { \n\t\t\t\t\t\tactiveFiltered[key].done = true\n\t\t\t\t\t\tactiveFiltered[key].description = `${workflows.length} workflows created`\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tnewfiltered.push(activeFiltered[key])\n\t\t\t}\n\t\t\tsetGettingStartedItems(activeFiltered)\n\n\t\t\t//const doneFiltered = activeFiltered.filter((item) => item.done === true)\n\t\t\t//if (doneFiltered.length > 0) { \n\t\t\t//\tconsole.log(\"DONE: \", doneFiltered)\n\t\t\t//}\n\n const sidebar = localStorage.getItem(sidebarKey);\n\t\t\tif (sidebar === null || sidebar === undefined) {\n\t\t\t\tconsole.log(\"No sidebar defined\")\n \n\t\t\t\tlocalStorage.setItem(sidebarKey, \"open\");\n \t\t\tsetDrawerOpen(true)\n } else {\n\t\t\t\tif (sidebar === \"open\") {\n\t\t\t\t\tconsole.log(\"OPEN the thingy!\")\n \t\t\t\tsetDrawerOpen(true)\n\t\t\t\t} else {\n \t\t\t\tsetDrawerOpen(false)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n const isCloud =\n window.location.host === \"localhost:3002\" ||\n window.location.host === \"shuffler.io\";\n\n const findWorkflow = (filters) => {\n\t\tconsole.log(\"Using filters: \", filters)\n if (filters.length === 0) {\n setFilteredWorkflows(workflows);\n\t\t\thandleKeysetting(allUsecases, workflows)\n return;\n }\n\n var newWorkflows = [];\n for (var workflowKey in workflows) {\n const curWorkflow = workflows[workflowKey];\n\n var found = [false];\n if (curWorkflow.tags === undefined || curWorkflow.tags === null) {\n found = filters.map((filter) =>\n curWorkflow.name.toLowerCase().includes(filter)\n );\n }\n\n if (found.every((v) => v !== true)) {\n found = filters.map((filter) => {\n if (filter === undefined || filter === null) {\n return false;\n }\n\n const newfilter = filter.toLowerCase();\n\n if (curWorkflow.name.toLowerCase().includes(filter.toLowerCase())) {\n return true;\n } else if (curWorkflow.tags !== undefined && curWorkflow.tags !== null && curWorkflow.tags.includes(filter)) {\n return true;\n } else if (curWorkflow.owner === filter) {\n return true;\n } else if (curWorkflow.org_id === filter) {\n return true;\n } else if (curWorkflow.usecase_ids !== undefined && curWorkflow.usecase_ids !== null && curWorkflow.usecase_ids.length > 0) {\n\t\t\t\t\t\t// Check if the usecase is the right category\n\t\t\t\t\t\tfor (var key in usecases) {\n\t\t\t\t\t\t\tif (usecases[key].name.toLowerCase() !== newfilter) {\n\t\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tfor (var subkey in usecases[key].list) {\n\t\t\t\t\t\t\t\tif (curWorkflow.usecase_ids.includes(usecases[key].list[subkey].name)) {\n\t\t\t\t\t\t\t\t\treturn true\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n } else if (\n curWorkflow.actions !== null &&\n curWorkflow.actions !== undefined\n ) {\n for (var key in curWorkflow.actions) {\n const action = curWorkflow.actions[key];\n\n if (\n action.app_name.toLowerCase() === newfilter ||\n action.app_name.toLowerCase().includes(newfilter)\n ) {\n return true;\n }\n }\n\t\t\t\t\t}\n\n return false;\n });\n }\n\n if (found.every((v) => v === true)) {\n newWorkflows.push(curWorkflow);\n continue;\n }\n }\n\n\t\tconsole.log(\"Changing workflow filter, and finding new usecase mappings!\")\n if (newWorkflows.length !== workflows.length) {\n\t\t\thandleKeysetting(allUsecases, newWorkflows)\n\n setFilteredWorkflows(newWorkflows);\n }\n };\n\n const addFilter = (data) => {\n if (data === null || data === undefined) {\n\t\t\tconsole.log(\"No filter data\")\n return;\n }\n\n if (data.includes(\"<\") && data.includes(\">\")) {\n\t\t\tconsole.log(\"Filter includes < or >\")\n return;\n }\n\n if (filters.includes(data) || filters.includes(data.toLowerCase())) {\n\t\t\tconsole.log(\"Filter already has the data\")\n return;\n }\n\n filters.push(data.toLowerCase());\n setFilters(filters);\n\n findWorkflow(filters);\n };\n\n const removeFilter = (index) => {\n var newfilters = filters;\n\n if (index < 0) {\n console.log(\"Can't handle index (remove): \", index);\n return;\n }\n\n newfilters.splice(index, 1);\n\n if (newfilters.length === 0) {\n newfilters = [];\n setFilters(newfilters);\n } else {\n setFilters(newfilters);\n }\n\n findWorkflow(newfilters);\n };\n\n const exportVerifyModal = exportModalOpen ? (\n {\n setExportModalOpen(false);\n setSelectedWorkflow({});\n }}\n PaperProps={{\n style: {\n backgroundColor: surfaceColor,\n color: \"white\",\n minWidth: 500,\n padding: 30,\n },\n }}\n >\n \n
\n Want to auto-sanitize this workflow before exporting?\n
\n
\n \n \n This will make potentially sensitive fields such as username,\n password, url etc. empty\n \n {\n setExportModalOpen(false);\n exportWorkflow(exportData, true);\n setExportData(\"\");\n }}\n color=\"primary\"\n >\n Yes\n \n {\n setExportModalOpen(false);\n exportWorkflow(exportData, false);\n setExportData(\"\");\n }}\n color=\"primary\"\n >\n No\n \n \n \n ) : null;\n\n const publishModal = publishModalOpen ? (\n {\n setPublishModalOpen(false);\n setSelectedWorkflow({});\n }}\n PaperProps={{\n style: {\n backgroundColor: surfaceColor,\n color: \"white\",\n minWidth: 500,\n padding: 50,\n },\n }}\n >\n \n
\n Are you sure you want to PUBLISH this workflow?\n
\n
\n \n
\n \n Before publishing, we will sanitize all inputs, remove references to\n you, randomize ID's and remove your authentication.\n \n \n\t\t\t\t\t\tThe published workflow is yours, and you can always change your public workflows after they are released.\n \n
\n {\n publishWorkflow(selectedWorkflow);\n setPublishModalOpen(false);\n }}\n color=\"primary\"\n >\n Yes\n \n {\n setPublishModalOpen(false);\n }}\n color=\"primary\"\n >\n No\n \n \n \n ) : null;\n\n const deleteModal = deleteModalOpen ? (\n {\n setDeleteModalOpen(false);\n setSelectedWorkflowId(\"\");\n }}\n PaperProps={{\n style: {\n backgroundColor: surfaceColor,\n color: \"white\",\n minWidth: 500,\n },\n }}\n >\n \n
\n Are you sure you want to delete this workflow?
\n Other workflows relying on this one may stop working\n
\n \n \n {\n console.log(\"Editing: \", editingWorkflow);\n if (selectedWorkflowId) {\n deleteWorkflow(selectedWorkflowId);\n setTimeout(() => {\n getAvailableWorkflows();\n }, 1000);\n }\n setDeleteModalOpen(false);\n }}\n color=\"primary\"\n >\n Yes\n \n {\n setDeleteModalOpen(false);\n }}\n color=\"primary\"\n >\n No\n \n \n \n ) : null;\n\n const uploadFile = (e) => {\n const isDropzone =\n e.dataTransfer === undefined ? false : e.dataTransfer.files.length > 0;\n const files = isDropzone ? e.dataTransfer.files : e.target.files;\n\n const reader = new FileReader();\n alert.info(\"Starting upload. Please wait while we validate the workflows\");\n\n try {\n reader.addEventListener(\"load\", (e) => {\n var data = e.target.result;\n setIsDropzone(false);\n try {\n data = JSON.parse(reader.result);\n } catch (e) {\n alert.error(\"Invalid JSON: \" + e);\n return;\n }\n\n // Initialize the workflow itself\n setNewWorkflow(\n data.name,\n data.description,\n data.tags,\n data.default_return_value,\n {},\n false,\n\t\t\t\t\t[],\n\t\t\t\t\t\"\",\n\t\t\t\t\tdata.status,\n )\n .then((response) => {\n if (response !== undefined) {\n // SET THE FULL THING\n data.id = response.id;\n\n // Actually create it\n setNewWorkflow(\n data.name,\n data.description,\n data.tags,\n data.default_return_value,\n data,\n false,\n\t\t\t\t\t\t\t\t[],\n\t\t\t\t\t\t\t\t\"\",\n\t\t\t\t\t\t\t\tdata.status\n ).then((response) => {\n if (response !== undefined) {\n alert.success(`Successfully imported ${data.name}`);\n }\n });\n }\n })\n .catch((error) => {\n alert.error(\"Import error: \" + error.toString());\n });\n });\n } catch (e) {\n console.log(\"Error in dropzone: \", e);\n }\n\n reader.readAsText(files[0]);\n };\n\n useEffect(() => {\n if (isDropzone) {\n setIsDropzone(false);\n }\n\n }, [isDropzone]);\n\n\n\tconst getFramework = () => {\n\t\tfetch(globalUrl + \"/api/v1/apps/frameworkConfiguration\", {\n\t\t\tmethod: \"GET\",\n\t\t\theaders: {\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\tAccept: \"application/json\",\n\t\t\t},\n\t\t\tcredentials: \"include\",\n\t\t})\n\t\t.then((response) => {\n\t\t\tif (response.status !== 200) {\n\t\t\t\tconsole.log(\"Status not 200 for framework!\");\n\t\t\t}\n\n\t\t\treturn response.json();\n\t\t})\n\t\t.then((responseJson) => {\n\t\t\tif (responseJson.success === false) {\n\t\t\t\tsetAppFramework({})\n\t\t\t\tif (responseJson.reason !== undefined) {\n\t\t\t\t\t//alert.error(\"Failed loading: \" + responseJson.reason)\n\t\t\t\t} else {\n\t\t\t\t\t//alert.error(\"Failed to load framework for your org.\")\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tsetAppFramework(responseJson)\n\t\t\t}\n\t\t})\n\t\t.catch((error) => {\n\t\t\tconsole.log(\"err in framework: \", error.toString());\n\t\t})\n\t}\n\n const getAvailableWorkflows = () => {\n fetch(globalUrl + \"/api/v1/workflows\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for workflows :O!: \", response.status);\n\n //if (isCloud) {\n // navigate(\"/search?tab=workflows\")\n //}\n\n alert.info(\"Failed getting workflows. Are you logged in?\");\n\n return;\n }\n return response.json();\n })\n .then((responseJson) => {\n if (responseJson !== undefined) {\n\t\t\t\t\tvar newarray = []\n\t\t\t\t\tfor (var key in responseJson) {\n\t\t\t\t\t\tconst wf = responseJson[key]\n\t\t\t\t\t\tif (wf.public === true) {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tnewarray.push(wf)\n\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\tvar setProdFilter = false \n\n\t\t\t\t\tvar actionnamelist = [];\n\t\t\t\t\tvar parsedactionlist = [];\n\t\t\t\t\tfor (var key in newarray) {\n\t\t\t\t\t\tconst workflow = newarray[key]\n\t\t\t\t\t\tif (workflow.status === \"production\") {\n\t\t\t\t\t\t\tsetProdFilter = true \n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor (var actionkey in newarray[key].actions) {\n\t\t\t\t\t\t\tconst action = newarray[key].actions[actionkey];\n\t\t\t\t\t\t\t//console.log(\"Action: \", action)\n\t\t\t\t\t\t\tif (actionnamelist.includes(action.app_name)) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tactionnamelist.push(action.app_name);\n\t\t\t\t\t\t\tparsedactionlist.push(action);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t//console.log(parsedactionlist)\n\t\t\t\t\tsetActionImageList(parsedactionlist);\n\n\t\t\t\t\t\t\t\t\n\t\t\t\t\tif (setProdFilter === true) {\n\t\t\t\t\t\tconst newWorkflows = newarray.filter(workflow => workflow.status === \"production\")\n\t\t\t\t\t\tif (newWorkflows !== undefined && newWorkflows !== null) {\n \t\tsetFilteredWorkflows(newWorkflows);\n\t\t\t\t\t\t} else {\n \t\tsetFilteredWorkflows(newarray);\n\t\t\t\t\t\t}\n setFilters([\"status:production\"]);\n\t\t\t\t\t} else { \n \tsetFilteredWorkflows(newarray);\n\t\t\t\t\t}\n\n\n\t\t\t\t\t// Ensures the zooming happens only once per load\n \tsetTimeout(() => {\n\t\t\t\t\t\tfetchUsecases(newarray)\n\t\t\t\t\t\tsetFirstLoad(false)\n\t\t\t\t\t}, 100)\n\n } else {\n if (isLoggedIn) {\n alert.error(\"An error occurred while loading workflows\");\n }\n\n return;\n }\n })\n .catch((error) => {\n alert.error(error.toString());\n });\n };\n\n\tconst handleKeysetting = (categorydata, workflows) => {\n\t\tif (workflows !== undefined && workflows !== null) {\n\t\t\tvar newcategories = []\n\t\t\tfor (var key in categorydata) {\n\t\t\t\tvar category = categorydata[key]\n\t\t\t\tcategory.matches = []\n\n\t\t\t\tfor (var subcategorykey in category.list) {\n\t\t\t\t\tvar subcategory = category.list[subcategorykey]\n\t\t\t\t\tsubcategory.matches = []\n\n\t\t\t\t\tfor (var workflowkey in workflows) {\n\t\t\t\t\t\tconst workflow = workflows[workflowkey]\n\n\t\t\t\t\t\tif (workflow.usecase_ids !== undefined && workflow.usecase_ids !== null) {\n\t\t\t\t\t\t\tfor (var usecasekey in workflow.usecase_ids) {\n\n\t\t\t\t\t\t\t\tif (workflow.usecase_ids[usecasekey].toLowerCase() === subcategory.name.toLowerCase()) {\n\t\t\t\t\t\t\t\t\t//console.log(\"Got match: \", workflow.usecase_ids[usecasekey])\n\n\t\t\t\t\t\t\t\t\tcategory.matches.push({\n\t\t\t\t\t\t\t\t\t\t\"workflow\": workflow.id,\n\t\t\t\t\t\t\t\t\t\t\"category\": subcategory.name,\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\tsubcategory.matches.push(workflow.id)\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (subcategory.matches.length > 0) {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tnewcategories.push(category)\n\t\t\t} \n\n\t\t\tsetUsecases(newcategories)\n\t\t} else {\n \t\tsetUsecases(categorydata)\n\t\t}\n\t}\n\n const fetchUsecases = (workflows) => {\n fetch(globalUrl + \"/api/v1/workflows/usecases\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for usecases\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n\t\t\t\tsetWorkflows(workflows);\n\t\t\t\tsetWorkflowDone(true);\n\n\t\t\t\tif (responseJson.success !== false) {\n\t\t\t\t\tsetAllUsecases(responseJson);\n\t\t\t\t\thandleKeysetting(responseJson, workflows)\n\t\t\t\t} \n })\n .catch((error) => {\n //alert.error(\"ERROR: \" + error.toString());\n console.log(\"ERROR: \" + error.toString());\n setWorkflows(workflows);\n \tsetWorkflowDone(true);\n });\n };\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => {\n if (workflows.length <= 0) {\n const tmpView = localStorage.getItem(\"view\");\n if (tmpView !== undefined && tmpView !== null) {\n setView(tmpView);\n }\n\n getAvailableWorkflows();\n\t\t\tgetFramework()\n }\n }, [])\n\n const viewStyle = {\n color: \"#ffffff\",\n width: \"100%\",\n display: \"flex\",\n minWidth: isMobile ? \"100%\" : drawerWidth > 0 ? 824 : 1024,\n maxWidth: isMobile ? \"100%\" : drawerWidth > 0 ? 824 : 1024,\n margin: drawerWidth === 0 ? \"auto\" : `auto ${drawerWidth+100} auto auto`,\n\t\tpaddingBottom: 200,\n };\n\n const emptyWorkflowStyle = {\n paddingTop: \"200px\",\n width: 1024,\n margin: \"auto\",\n };\n\n const boxStyle = {\n padding: \"20px 20px 20px 20px\",\n width: \"100%\",\n height: \"250px\",\n color: \"white\",\n backgroundColor: surfaceColor,\n display: \"flex\",\n flexDirection: \"column\",\n };\n\n\t//flexDirection: !isMobile ? \"column\" : \"row\",\n const paperAppContainer = {\n display: \"flex\",\n flexWrap: \"wrap\",\n alignContent: \"space-between\",\n };\n\n const paperAppStyle = {\n minHeight: 130,\n maxHeight: 130,\n overflow: \"hidden\",\n width: \"100%\",\n color: \"white\",\n backgroundColor: surfaceColor,\n padding: \"12px 12px 0px 15px\",\n borderRadius: 5,\n display: \"flex\",\n boxSizing: \"border-box\",\n position: \"relative\",\n };\n\n const gridContainer = {\n height: \"auto\",\n color: \"white\",\n margin: \"10px\",\n backgroundColor: surfaceColor,\n };\n\n const workflowActionStyle = {\n display: \"flex\",\n width: 160,\n height: 44,\n justifyContent: \"space-between\",\n };\n\n const exportAllWorkflows = (allWorkflows) => {\n\t\tfor (var i = 0; i < allWorkflows.length; i++) {\n\t\t\tconsole.log(allWorkflows[i])\n\t\t\tsetTimeout(() => {\n\t\t\t\tconsole.log(allWorkflows[i])\n \texportWorkflow(allWorkflows[i], false)\n\t\t\t}, i * 200);\n }\n\n alert.info(`exporting and keeping original for all ${allWorkflows.length} workflows`);\n };\n\n const deduplicateIds = (data, skip_sanitize) => {\n if (data.triggers !== null && data.triggers !== undefined) {\n for (var key in data.triggers) {\n const trigger = data.triggers[key];\n\t\t\t\tif (skip_sanitize !== true) {\n\t\t\t\t\tif (trigger.app_name === \"Shuffle Workflow\") {\n\t\t\t\t\t\tif (trigger.parameters !== null && trigger.parameters !== undefined) {\n\t\t\t\t\t\t\tif (trigger.parameters.length > 2) {\n\t\t\t\t\t\t\t\ttrigger.parameters[2].value = \"\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n if (trigger.status === \"running\") {\n trigger.status = \"stopped\";\n }\n\n const newId = uuidv4();\n if (trigger.trigger_type === \"WEBHOOK\") {\n if (\n trigger.parameters !== undefined &&\n trigger.parameters !== null &&\n trigger.parameters.length === 2\n ) {\n trigger.parameters[0].value =\n referenceUrl + \"webhook_\" + trigger.id;\n trigger.parameters[1].value = \"webhook_\" + trigger.id;\n } else if (\n trigger.parameters !== undefined &&\n trigger.parameters !== null &&\n trigger.parameters.length === 3\n ) {\n trigger.parameters[0].value =\n referenceUrl + \"webhook_\" + trigger.id;\n trigger.parameters[1].value = \"webhook_\" + trigger.id;\n // FIXME: Add auth here?\n } else {\n alert.info(\"Something is wrong with the webhook in the copy\");\n }\n }\n\n for (var branchkey in data.branches) {\n const branch = data.branches[branchkey];\n if (branch.source_id === trigger.id) {\n branch.source_id = newId;\n }\n\n if (branch.destination_id === trigger.id) {\n branch.destination_id = newId;\n }\n }\n\n trigger.environment = isCloud ? \"cloud\" : \"Shuffle\";\n trigger.id = newId;\n }\n }\n\n if (data.actions !== null && data.actions !== undefined && skip_sanitize !== true) {\n for (key in data.actions) {\n data.actions[key].authentication_id = \"\";\n\n for (var subkey in data.actions[key].parameters) {\n const param = data.actions[key].parameters[subkey];\n\n\t\t\t\t\t// Removed October 10th, 2022 as key usually isn't \n\t\t\t\t\t// containing anything secret, but rather necessary configurations.\n // param.name.includes(\"key\") ||\n\t\t\t\t\t//\n if (\n param.name.includes(\"user\") ||\n param.name.includes(\"pass\") ||\n param.name.includes(\"api\") ||\n param.name.includes(\"auth\") ||\n param.name.includes(\"secret\") ||\n param.name.includes(\"domain\") ||\n param.name.includes(\"url\") ||\n param.name.includes(\"mail\")\n ) {\n // FIXME: This may be a vuln if api-keys are generated that start with $\n if (param.value.startsWith(\"$\")) {\n console.log(\"Skipping field, as it's referencing a variable\");\n } else {\n param.value = \"\";\n param.is_valid = false;\n }\n }\n }\n\n const newId = uuidv4();\n for (branchkey in data.branches) {\n const branch = data.branches[branchkey];\n if (branch.source_id === data.actions[key].id) {\n branch.source_id = newId;\n }\n\n if (branch.destination_id === data.actions[key].id) {\n branch.destination_id = newId;\n }\n }\n\n if (data.actions[key].id === data.start) {\n data.start = newId;\n }\n\n data.actions[key].environment = \"\";\n data.actions[key].id = newId;\n }\n }\n\n if (data.workflow_variables !== null && data.workflow_variables !== undefined && skip_sanitize !== true) {\n for (key in data.workflow_variables) {\n const param = data.workflow_variables[key];\n //param.name.includes(\"key\") ||\n\n if (\n param.name.includes(\"user\") ||\n param.name.includes(\"pass\") ||\n param.name.includes(\"api\") ||\n param.name.includes(\"auth\") ||\n param.name.includes(\"secret\") ||\n param.name.includes(\"email\")\n ) {\n param.value = \"\";\n param.is_valid = false;\n }\n }\n }\n\n return data;\n };\n\n const sanitizeWorkflow = (data) => {\n data = JSON.parse(JSON.stringify(data));\n data[\"owner\"] = \"\";\n console.log(\"Sanitize start: \", data);\n data = deduplicateIds(data);\n\n data[\"org\"] = [];\n data[\"org_id\"] = \"\";\n data[\"execution_org\"] = {};\n\n // These are backwards.. True = saved before. Very confuse.\n data[\"previously_saved\"] = false;\n data[\"first_save\"] = false;\n console.log(\"Sanitize end: \", data);\n\n return data;\n };\n\n const exportWorkflow = (data, sanitize) => {\n data = JSON.parse(JSON.stringify(data));\n let exportFileDefaultName = data.name + \".json\";\n\n if (sanitize === true) {\n data = sanitizeWorkflow(data);\n\n if (data.subflows !== null && data.subflows !== undefined) {\n alert.info(\n \"Not exporting with subflows when sanitizing. Please manually export them.\"\n );\n data.subflows = [];\n }\n\n //\tfor (var key in data.subflows) {\n //\t\tif (data.sublof\n //\t}\n //}\n }\n\n // Add correct ID's for triggers\n // Add mag\n\t\t\n\t\tdata.status = \"test\"\n let dataStr = JSON.stringify(data);\n let dataUri =\n \"data:application/json;charset=utf-8,\" + encodeURIComponent(dataStr);\n let linkElement = document.createElement(\"a\");\n linkElement.setAttribute(\"href\", dataUri);\n linkElement.setAttribute(\"download\", exportFileDefaultName);\n linkElement.click();\n };\n\n const publishWorkflow = (data) => {\n data = JSON.parse(JSON.stringify(data));\n data = sanitizeWorkflow(data);\n alert.info(\"Sanitizing and publishing \" + data.name);\n\n // This ALWAYS talks to Shuffle cloud\n fetch(globalUrl + \"/api/v1/workflows/\" + data.id + \"/publish\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify(data),\n credentials: \"include\",\n })\n\t\t.then((response) => {\n\t\t\tif (response.status !== 200) {\n\t\t\t\tconsole.log(\"Status not 200 for workflow publish :O!\");\n\t\t\t} else {\n\t\t\t\tif (isCloud) {\n\t\t\t\t\talert.success(\"Successfully published workflow\");\n\t\t\t\t} else {\n\t\t\t\t\talert.success(\n\t\t\t\t\t\t\"Successfully published workflow to https://shuffler.io\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn response.json();\n\t\t})\n\t\t.then((responseJson) => {\n\t\t\tif (responseJson.reason !== undefined) {\n\t\t\t\talert.error(\"Failed publishing: \", responseJson.reason);\n\t\t\t}\n\n\t\t\tgetAvailableWorkflows();\n\t\t})\n\t\t.catch((error) => {\n\t\t\talert.error(\"Failed publishing: is the workflow valid? Remember to save the workflow first.\")\n\t\t\tconsole.log(error.toString());\n\t\t});\n };\n\n const copyWorkflow = (data) => {\n data = JSON.parse(JSON.stringify(data));\n alert.success(\"Copying workflow \" + data.name);\n data.id = \"\";\n data.name = data.name + \"_copy\";\n data = deduplicateIds(data, true);\n\n fetch(globalUrl + \"/api/v1/workflows\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify(data),\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for workflows :O!\");\n return;\n }\n return response.json();\n })\n .then(() => {\n setTimeout(() => {\n getAvailableWorkflows();\n }, 1000);\n })\n .catch((error) => {\n alert.error(error.toString());\n });\n };\n\n const deleteWorkflow = (id) => {\n fetch(globalUrl + \"/api/v1/workflows/\" + id, {\n method: \"DELETE\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for setting workflows :O!\");\n alert.error(\"Failed deleting workflow. Do you have access?\");\n } else {\n alert.success(\"Deleted workflow \" + id);\n }\n\n return response.json();\n })\n .then(() => {\n setTimeout(() => {\n getAvailableWorkflows();\n }, 1000);\n })\n .catch((error) => {\n alert.error(error.toString());\n });\n };\n\n const handleChipClick = (e) => {\n addFilter(e.target.innerHTML);\n };\n\n const NewWorkflowPaper = () => {\n const [hover, setHover] = React.useState(false);\n\n const innerColor = \"rgba(255,255,255,0.3)\";\n const setupPaperStyle = {\n minHeight: paperAppStyle.minHeight,\n width: paperAppStyle.width,\n color: innerColor,\n padding: paperAppStyle.padding,\n borderRadius: paperAppStyle.borderRadius,\n display: \"flex\",\n boxSizing: \"border-box\",\n position: \"relative\",\n border: `2px solid ${innerColor}`,\n cursor: \"pointer\",\n backgroundColor: hover ? \"rgba(39,41,45,0.5)\" : \"rgba(39,41,45,1)\",\n };\n\n return (\n \n {\n\t\t\t\t\t\tsetModalOpen(true)\n \t\t\t\t\tsetIsEditing(false)\n\t\t\t\t\t}}\n onMouseOver={() => {\n setHover(true);\n }}\n onMouseOut={() => {\n setHover(false);\n }}\n >\n \n \n \n \n \n \n \n );\n };\n\n\tconst getWorkflowAppgroup = (data) => {\n\t\tif (data.actions === undefined || data.actions === null) {\n\t\t\treturn [] \n\t\t}\n\n\t\tvar appsFound = []\n\t\tfor (var key in data.actions) {\n\t\t\tconst parsedAction = data.actions[key]\n\t\t\tif (parsedAction.large_image === undefined || parsedAction.large_image === null || parsedAction.large_image === \"\") {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif (parsedAction.app_name === \"Shuffle Tools\" || parsedAction.app_id === \"bc78f35c6c6351b07a09b7aed5d29652\") {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif (appsFound.findIndex(data => data.app_name === parsedAction.app_name) < 0){\n\t\t\t\tappsFound.push(parsedAction)\n\t\t\t}\n\t\t}\n\n\t\treturn appsFound\n\t}\n\n const WorkflowPaper = (props) => {\n const { data } = props;\n const [open, setOpen] = React.useState(false);\n const [anchorEl, setAnchorEl] = React.useState(null);\n\n var boxColor = \"#FECC00\";\n if (data.is_valid) {\n boxColor = \"#86c142\";\n }\n\n if (!data.previously_saved) {\n boxColor = \"#f86a3e\";\n }\n\n const menuClick = (event) => {\n setOpen(!open);\n setAnchorEl(event.currentTarget);\n };\n\n var parsedName = data.name;\n if (\n parsedName !== undefined &&\n parsedName !== null &&\n parsedName.length > 20\n ) {\n parsedName = parsedName.slice(0, 21) + \"..\";\n }\n\n const actions = data.actions !== null ? data.actions.length : 0;\n\t\tconst appGroup = getWorkflowAppgroup(data)\n const [triggers, subflows] = getWorkflowMeta(data);\n\n const workflowMenuButtons = (\n {\n setOpen(false);\n setAnchorEl(null);\n }}\n >\n {\n\t\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t\t\tReactDOM.unstable_batchedUpdates(() => {\n \tsetModalOpen(true);\n \tsetEditingWorkflow(JSON.parse(JSON.stringify(data)));\n \tsetNewWorkflowName(data.name);\n \tsetNewWorkflowDescription(data.description);\n \tsetDefaultReturnValue(data.default_return_value);\n \tif (data.tags !== undefined && data.tags !== null) {\n \t setNewWorkflowTags(JSON.parse(JSON.stringify(data.tags)));\n \t}\n\n\t\t\t\t\t\t\tif (data.usecase_ids !== undefined && data.usecase_ids !== null && data.usecase_ids.length > 0) {\n\t\t\t\t\t\t\t\tsetSelectedUsecases(data.usecase_ids)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n }}\n key={\"change\"}\n >\n \n {\"Edit details\"}\n \n {\n setSelectedWorkflow(data);\n setPublishModalOpen(true);\n }}\n key={\"publish\"}\n >\n \n {\"Publish Workflow\"}\n \n {\n copyWorkflow(data);\n setOpen(false);\n }}\n key={\"duplicate\"}\n >\n \n {\"Duplicate Workflow\"}\n \n {/*= 0} style={{backgroundColor: inputColor, color: \"white\"}} onClick={() => {\n\t\t\t\t\t//copyWorkflow(data)\t\t\n\t\t\t\t\t//setOpen(false)\n\t\t\t\t}} key={\"duplicate\"}>\n\t\t\t\t\t\n\t\t\t\t\t{\"Copy to Child Org\"}\n\t\t\t\t*/}\n {\n setExportModalOpen(true);\n\n if (data.triggers !== null && data.triggers !== undefined) {\n var newSubflows = [];\n for (var key in data.triggers) {\n const trigger = data.triggers[key];\n\n if (\n trigger.parameters !== null &&\n trigger.parameters !== undefined\n ) {\n for (var subkey in trigger.parameters) {\n const param = trigger.parameters[subkey];\n if (\n param.name === \"workflow\" &&\n param.value !== data.id &&\n !newSubflows.includes(param.value)\n ) {\n newSubflows.push(param.value);\n }\n }\n }\n }\n\n var parsedworkflows = [];\n for (var key in newSubflows) {\n const foundWorkflow = workflows.find(\n (workflow) => workflow.id === newSubflows[key]\n );\n if (foundWorkflow !== undefined && foundWorkflow !== null) {\n parsedworkflows.push(foundWorkflow);\n }\n }\n\n if (parsedworkflows.length > 0) {\n console.log(\n \"Appending subflows during export: \",\n parsedworkflows.length\n );\n data.subflows = parsedworkflows;\n }\n }\n\n setExportData(data);\n setOpen(false);\n }}\n key={\"export\"}\n >\n \n {\"Export Workflow\"}\n \n {\n setDeleteModalOpen(true);\n setSelectedWorkflowId(data.id);\n setOpen(false);\n }}\n key={\"delete\"}\n >\n \n {\"Delete Workflow\"}\n \n \n );\n\n var image = \"\";\n var orgName = \"\";\n var orgId = \"\";\n if (userdata.orgs !== undefined) {\n const foundOrg = userdata.orgs.find((org) => org.id === data[\"org_id\"]);\n if (foundOrg !== undefined && foundOrg !== null) {\n //position: \"absolute\", bottom: 5, right: -5,\n const imageStyle = {\n width: imagesize,\n height: imagesize,\n pointerEvents: \"none\",\n marginLeft:\n data.creator_org !== undefined && data.creator_org.length > 0\n ? 20\n : 0,\n borderRadius: 10,\n border:\n foundOrg.id === userdata.active_org.id\n ? `3px solid ${boxColor}`\n : null,\n cursor: \"pointer\",\n marginRight: 10,\n };\n\n image =\n foundOrg.image === \"\" ? (\n \n ) : (\n {}}\n />\n );\n\n orgName = foundOrg.name;\n orgId = foundOrg.id;\n }\n }\n\n\t\tvar selectedCategory = \"\"\n\t\tif (data.usecase_ids !== undefined && data.usecase_ids !== null && data.usecase_ids.length > 0 && usecases !== null && usecases !== undefined && usecases.length > 0) {\n\t\t\tconst oldcolor = boxColor.valueOf()\n\n\t\t\t// Find the first usecase and use that ones' ID\n\t\t\tfor (var key in usecases) {\n\t\t\t\tvar category = usecases[key]\n\t\t\t\tcategory.matches = []\n\n\t\t\t\tfor (var subcategorykey in category.list) {\n\t\t\t\t\tvar subcategory = category.list[subcategorykey]\n\t\t\t\t\tsubcategory.matches = []\n\n\t\t\t\t\tfor (var usecasekey in data.usecase_ids) {\n\t\t\t\t\t\tif (data.usecase_ids[usecasekey].toLowerCase() === subcategory.name.toLowerCase()) {\n\t\t\t\t\t\t\tboxColor = category.color\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (boxColor !== oldcolor) {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (boxColor !== oldcolor) {\n\t\t\t\t\tselectedCategory = category.name\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n return (\n\t\t\t
\n \n\t\t\t\t\t{selectedCategory !== \"\" ?\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t {\n addFilter(selectedCategory)\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\n\t\t\t\t\t: null}\n \n \n \n {\n addFilter(orgId);\n }}\n >\n {image}\n
\n \n \n\t\t\t\t\t\t\t\t\t{data.image !== undefined && data.image !== null && data.image.length > 0 ? \n\t\t\t\t\t\t\t\t\t\t{data.name}\n\t\t\t\t\t\t\t\t\t: null}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tEdit {data.name}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t} placement=\"bottom\">\n \n \n {parsedName}\n \n \n \n \n \n\t\t\t\t\t\t\t{appGroup.length > 0 ? \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{appGroup.map((data, index) => {\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t {\n \t\t\t\t\taddFilter(data.app_name);\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t: \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{actions}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t}\n \n \n \n \n {triggers}\n \n
\n \n \n {\n if (subflows === 0) {\n alert.info(\"No subflows for \" + data.name);\n return;\n }\n\n var newWorkflows = [data];\n for (var key in data.triggers) {\n const trigger = data.triggers[key];\n if (trigger.app_name !== \"Shuffle Workflow\") {\n continue;\n }\n\n if (\n trigger.parameters !== undefined &&\n trigger.parameters !== null &&\n trigger.parameters.length > 0 &&\n trigger.parameters[0].name === \"workflow\"\n ) {\n const newWorkflow = workflows.find(\n (item) => item.id === trigger.parameters[0].value\n );\n if (newWorkflow !== null && newWorkflow !== undefined) {\n newWorkflows.push(newWorkflow);\n continue;\n }\n }\n }\n\n setFilters([\"Subflows of \" + data.name]);\n setFilteredWorkflows(newWorkflows);\n }}\n >\n \n \n \n \n {subflows}\n \n \n \n \n \n {data.tags !== undefined && data.tags !== null\n ? data.tags.map((tag, index) => {\n if (index >= 3) {\n return null;\n }\n\n return (\n \n );\n })\n : null}\n \n {data.actions !== undefined && data.actions !== null ? (\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t{workflowMenuButtons}\n\t\t\t\t\t\t
\n ) : null}\n\t\t\t\t\n\t\t\t\n\t\t
\n )\n }\n\n // Can create and set workflows\n const setNewWorkflow = (\n name,\n description,\n tags,\n defaultReturnValue,\n editingWorkflow,\n redirect,\n\t\tcurrentUsecases,\n\t\tinputblogpost,\n\t\tinputstatus,\n ) => {\n var method = \"POST\";\n var extraData = \"\";\n var workflowdata = {};\n\n if (editingWorkflow.id !== undefined) {\n console.log(\"Building original workflow\");\n method = \"PUT\";\n extraData = \"/\" + editingWorkflow.id + \"?skip_save=true\";\n workflowdata = editingWorkflow;\n\n console.log(\"REMOVING OWNER\");\n workflowdata[\"owner\"] = \"\";\n // FIXME: Loop triggers and turn them off?\n }\n\n workflowdata[\"name\"] = name;\n workflowdata[\"description\"] = description;\n if (tags !== undefined) {\n workflowdata[\"tags\"] = tags;\n }\n\t\tworkflowdata[\"blogpost\"] = inputblogpost \n\t\tworkflowdata[\"status\"] = inputstatus \n\n if (defaultReturnValue !== undefined) {\n workflowdata[\"default_return_value\"] = defaultReturnValue;\n }\n\n\t\tif (currentUsecases !== undefined && currentUsecases !== null) {\n\t\t\tworkflowdata[\"usecase_ids\"] = currentUsecases \n\t\t\t//workflows[0].category = [\"detect\"]\n\t\t\t//workflows[0].usecase_ids = [\"Correlate tickets\"]\n\t\t}\n\n\t\tconst new_url = `${globalUrl}/api/v1/workflows${extraData}`\n return fetch(new_url, {\n method: method,\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify(workflowdata),\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for workflows :O!\");\n return;\n }\n setSubmitLoading(false);\n\n return response.json();\n })\n .then((responseJson) => {\n\t\t\t\tif (responseJson.success === false) {\n\t\t\t\t\tif (responseJson.reason !== undefined) {\n\t\t\t\t\t\talert.error(\"Error setting workflow: \", responseJson.reason)\n\t\t\t\t\t} else {\n\t\t\t\t\t\talert.error(\"Error setting workflow.\")\n\t\t\t\t\t}\n\n\t\t\t\t\treturn\n\t\t\t\t}\n\n if (redirect) {\n //window.location.pathname = \"/workflows/\" + responseJson[\"id\"];\n\t\t\t\t\tnavigate(\"/workflows/\" + responseJson[\"id\"])\n //setModalOpen(false);\n } else if (!redirect) {\n // Update :)\n setTimeout(() => {\n getAvailableWorkflows();\n }, 2500);\n\t\t\t\t\tsetSubmitLoading(false)\n setModalOpen(false);\n } else {\n //alert.info(\"Successfully changed basic info for workflow\");\n setModalOpen(false);\n }\n\n return responseJson;\n })\n .catch((error) => {\n alert.error(error.toString());\n\t\t\t\tsetSubmitLoading(false)\n setModalOpen(false);\n setSubmitLoading(false);\n });\n };\n\n const importFiles = (event) => {\n console.log(\"Importing!\");\n\t\tsetSubmitLoading(true)\n\n if (event.target.files.length > 0) {\n \tconsole.log(\"Files: !\", event.target.files.length);\n for (var key in event.target.files) {\n const file = event.target.files[key];\n if (file.type !== \"application/json\") {\n if (file.type !== undefined) {\n alert.error(\"File has to contain valid json\");\n\t\t\t\t\t\tsetSubmitLoading(false)\n }\n\n continue;\n }\n\n const reader = new FileReader();\n // Waits for the read\n reader.addEventListener(\"load\", (event) => {\n var data = reader.result;\n try {\n data = JSON.parse(reader.result);\n } catch (e) {\n alert.error(\"Invalid JSON: \" + e);\n\t\t\t\t\t\tsetSubmitLoading(false)\n return;\n }\n \n\t\t\t\t\tconsole.log(\"File being loaded: \", data.name);\n\n // Initialize the workflow itself\n setNewWorkflow(\n data.name,\n data.description,\n data.tags,\n data.default_return_value,\n {},\n false,\n\t\t\t\t\t\t[],\n\t\t\t\t\t\t\"\",\n\t\t\t\t\t\tdata.status,\n )\n .then((response) => {\n if (response !== undefined) {\n // SET THE FULL THING\n data.id = response.id;\n data.first_save = false;\n data.previously_saved = false;\n data.is_valid = false;\n\n // Actually create it\n setNewWorkflow(\n data.name,\n data.description,\n data.tags,\n data.default_return_value,\n data,\n false,\n\t\t\t\t\t\t\t\t\t[],\n\t\t\t\t\t\t\t\t\t\"\",\n\t\t\t\t\t\t\t\t\tdata.status,\n ).then((response) => {\n if (response !== undefined) {\n alert.success(\"Successfully imported \" + data.name);\n }\n });\n }\n })\n .catch((error) => {\n alert.error(\"Import error: \" + error.toString());\n });\n });\n\n // Actually reads\n reader.readAsText(file);\n }\n }\n\n setLoadWorkflowsModalOpen(false);\n };\n\n const getWorkflowMeta = (data) => {\n let triggers = 0;\n let subflows = 0;\n if (\n data.triggers !== undefined &&\n data.triggers !== null &&\n data.triggers.length > 0\n ) {\n triggers = data.triggers.length;\n for (let key in data.triggers) {\n if (data.triggers[key].app_name === \"Shuffle Workflow\") {\n subflows += 1;\n }\n }\n }\n\n return [triggers, subflows];\n };\n\n const WorkflowListView = () => {\n let workflowData = \"\";\n if (workflows.length > 0) {\n const columns = [\n {\n field: \"image\",\n headerName: \"Logo\",\n width: 50,\n sortable: false,\n renderCell: (params) => {\n const data = params.row.record;\n\n var boxColor = \"#FECC00\";\n if (data.is_valid) {\n boxColor = \"#86c142\";\n }\n\n if (!data.previously_saved) {\n boxColor = \"#f85a3e\";\n }\n\n var image = \"\";\n if (userdata.orgs !== undefined) {\n const foundOrg = userdata.orgs.find(\n (org) => org.id === data[\"org_id\"]\n );\n if (foundOrg !== undefined && foundOrg !== null) {\n //position: \"absolute\", bottom: 5, right: -5,\n const imageStyle = {\n width: imagesize + 7,\n height: imagesize + 7,\n pointerEvents: \"none\",\n marginLeft:\n data.creator_org !== undefined &&\n data.creator_org.length > 0\n ? 20\n : 0,\n borderRadius: 10,\n border:\n foundOrg.id === userdata.active_org.id\n ? `3px solid ${boxColor}`\n : null,\n cursor: \"pointer\",\n marginTop: 5,\n };\n\n //\n image =\n foundOrg.image === \"\" ? (\n \n ) : (\n {\n //setFilteredWorkflows(newWorkflows)\n }}\n />\n );\n }\n }\n\n return
{image}
;\n },\n },\n {\n field: \"title\",\n headerName: \"Title\",\n width: 330,\n renderCell: (params) => {\n const data = params.row.record;\n\t\t\t\t\t\n\n return (\n \n \n {data.name}\n \n \n );\n },\n },\n\n {\n field: \"options\",\n headerName: \"Options\",\n width: 200,\n sortable: false,\n disableClickEventBubbling: true,\n renderCell: (params) => {\n const data = params.row.record;\n const actions = data.actions !== null ? data.actions.length : 0;\n let [triggers, subflows] = getWorkflowMeta(data);\n\t\t\t\t\t\tconst appGroup = getWorkflowAppgroup(data)\n\n return (\n \n
\n\t\t\t\t\t\t\t\t\t{appGroup.length > 0 ? \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{appGroup.map((data, index) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\n \t\t \t\t\t\t\taddFilter(data.app_name);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t: \n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{actions}\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t}\n \n \n \n \n {triggers}\n \n \n
\n \n {\n if (subflows === 0) {\n alert.info(\"No subflows for \" + data.name);\n return;\n }\n\n var newWorkflows = [data];\n for (var key in data.triggers) {\n const trigger = data.triggers[key];\n if (trigger.app_name !== \"Shuffle Workflow\") {\n continue;\n }\n\n if (\n trigger.parameters !== undefined &&\n trigger.parameters !== null &&\n trigger.parameters.length > 0 &&\n trigger.parameters[0].name === \"workflow\"\n ) {\n const newWorkflow = workflows.find(\n (item) => item.id === trigger.parameters[0].value\n );\n if (\n newWorkflow !== null &&\n newWorkflow !== undefined\n ) {\n newWorkflows.push(newWorkflow);\n continue;\n }\n }\n }\n\n setFilters([\"Subflows of \" + data.name]);\n setFilteredWorkflows(newWorkflows);\n }}\n >\n \n \n \n \n {subflows}\n \n \n \n
\n \n );\n },\n },\n {\n field: \"tags\",\n headerName: \"Tags\",\n maxHeight: 15,\n width: 300,\n sortable: false,\n disableClickEventBubbling: true,\n renderCell: (params) => {\n const data = params.row.record;\n return (\n \n {data.tags !== undefined\n ? data.tags.map((tag, index) => {\n if (index >= 3) {\n return null;\n }\n\n return (\n \n );\n })\n : null}\n \n );\n },\n },\n {\n field: \"\",\n headerName: \"\",\n maxHeight: 15,\n width: 100,\n sortable: false,\n disableClickEventBubbling: true,\n renderCell: (params) => {},\n },\n ];\n let rows = [];\n rows = filteredWorkflows.map((data, index) => {\n let obj = {\n id: index + 1,\n title: data.name,\n record: data,\n };\n\n return obj;\n })\n\n workflowData = (\n \n );\n }\n return
{workflowData}
;\n };\n\n\tvar total_count = 0\n const modalView = modalOpen ? (\n {\n setModalOpen(false);\n }}\n PaperProps={{\n style: {\n backgroundColor: surfaceColor,\n color: \"white\",\n minWidth: isMobile ? \"90%\" : \"800px\",\n maxWidth: isMobile ? \"90%\" : \"800px\",\n },\n }}\n >\n \n
\n {editingWorkflow.id !== undefined ? \"Editing\" : \"New\"} workflow\n
\n \n upload.click()}\n >\n \n \n \n
\n
\n
\n \n \n setNewWorkflowName(event.target.value)}\n InputProps={{\n style: {\n color: \"white\",\n },\n }}\n color=\"primary\"\n placeholder=\"Name\"\n\t\t\t\t\t\trequired\n margin=\"dense\"\n defaultValue={newWorkflowName}\n autoFocus\n fullWidth\n />\n setNewWorkflowDescription(event.target.value)}\n InputProps={{\n style: {\n color: \"white\",\n },\n }}\n color=\"primary\"\n defaultValue={newWorkflowDescription}\n placeholder=\"Description\"\n multiline\n margin=\"dense\"\n fullWidth\n />\n\t\t\t\t\t
\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tnewWorkflowTags.push(chip);\n\t\t\t\t\t\t\t\tsetNewWorkflowTags(newWorkflowTags);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonDelete={(chip, index) => {\n\t\t\t\t\t\t\t\tnewWorkflowTags.splice(index, 1);\n\t\t\t\t\t\t\t\tsetNewWorkflowTags(newWorkflowTags);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{usecases !== null && usecases !== undefined && usecases.length > 0 ? \n \t\t\t\t\n \t\t\t\t Usecases\n \t\t\t\t \n \t\t\t\t\n\t\t\t\t\t\t: null}\n\t\t\t\t\t
\n\n \t\t\t\t{showMoreClicked ? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tif (event.target.value.toLowerCase() === \"test\") {\n\t\t\t\t\t\t\t\t\t\tsetStatus(\"test\")\n\t\t\t\t\t\t\t\t\t} else if (event.target.value.toLowerCase() === \"production\") {\n\t\t\t\t\t\t\t\t\t\tsetStatus(\"production\")\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tInputProps={{\n\t\t\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\t\t\tcolor: \"white\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\t\t\tdefaultValue={status}\n\t\t\t\t\t\t\t\tplaceholder=\"The status of the workflow. Can be test or production.\"\n\t\t\t\t\t\t\t\trows=\"1\"\n\t\t\t\t\t\t\t\tmargin=\"dense\"\n\t\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t setBlogpost(event.target.value)}\n\t\t\t\t\t\t\t\tInputProps={{\n\t\t\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\t\t\tcolor: \"white\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\t\t\tdefaultValue={blogpost}\n\t\t\t\t\t\t\t\tplaceholder=\"A blogpost or other reference for how this work workflow was built, and what it's for.\"\n\t\t\t\t\t\t\t\trows=\"1\"\n\t\t\t\t\t\t\t\tmargin=\"dense\"\n\t\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t setDefaultReturnValue(event.target.value)}\n\t\t\t\t\t\t\t\tInputProps={{\n\t\t\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\t\t\tcolor: \"white\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\t\t\tdefaultValue={defaultReturnValue}\n\t\t\t\t\t\t\t\tplaceholder=\"Default return value (used for Subflows if the subflow fails)\"\n\t\t\t\t\t\t\t\trows=\"3\"\n\t\t\t\t\t\t\t\tmultiline\n\t\t\t\t\t\t\t\tmargin=\"dense\"\n\t\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\n\t\t\t\t\t: null}\n \n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tsetShowMoreClicked(!showMoreClicked);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{showMoreClicked ? : }\n\t\t\t\t\t\t\n\t\t\t\t\t\n\n
\n \n {\n setNewWorkflowName(\"\");\n setNewWorkflowDescription(\"\");\n setDefaultReturnValue(\"\");\n setEditingWorkflow({});\n setNewWorkflowTags([]);\n setModalOpen(false);\n\t\t\t\t\t\t\tsetSelectedUsecases([])\n }}\n color=\"primary\"\n >\n Cancel\n \n {\n console.log(\"Tags: \", newWorkflowTags);\n if (editingWorkflow.id !== undefined) {\n setNewWorkflow(\n newWorkflowName,\n newWorkflowDescription,\n newWorkflowTags,\n defaultReturnValue,\n editingWorkflow,\n false,\n\t\t\t\t\t\t\t\t\tselectedUsecases,\n\t\t\t\t\t\t\t\t\tblogpost,\n\t\t\t\t\t\t\t\t\tstatus,\n );\n\n setNewWorkflowName(\"\");\n setDefaultReturnValue(\"\");\n setNewWorkflowDescription(\"\");\n setEditingWorkflow({});\n setNewWorkflowTags([]);\n } else {\n setNewWorkflow(\n newWorkflowName,\n newWorkflowDescription,\n newWorkflowTags,\n defaultReturnValue,\n {},\n true,\n\t\t\t\t\t\t\t\t\tselectedUsecases,\n\t\t\t\t\t\t\t\t\tblogpost,\n\t\t\t\t\t\t\t\t\tstatus,\n );\n }\n\n setSubmitLoading(true);\n\t\t\t\t\t\t\tsetSelectedUsecases([])\n }}\n color=\"primary\"\n >\n {submitLoading ? : \"Submit\"}\n \n \n
\n \n ) : null;\n\n const viewSize = {\n workflowView: 4,\n executionsView: 3,\n executionResults: 4,\n };\n\n const workflowViewStyle = {\n flex: viewSize.workflowView,\n marginLeft: 10, \n marginRight: 10, \n };\n\n if (viewSize.workflowView === 0) {\n workflowViewStyle.display = \"none\";\n }\n\n const workflowButtons = (\n \n {view === \"list\" && (\n \n {\n localStorage.setItem(\"view\", \"grid\");\n setView(\"grid\");\n }}\n >\n \n \n \n )}\n {view === \"grid\" && (\n \n {\n localStorage.setItem(\"view\", \"list\");\n setView(\"list\");\n }}\n >\n \n \n \n )}\n \n\t\t\t\t upload.click()}\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t\t\t{submitLoading ? : }\n\t\t\t\t\n \n (upload = ref)}\n onChange={importFiles}\n />\n {workflows.length > 0 ? (\n \n {\n exportAllWorkflows(workflows);\n }}\n >\n \n \n \n ) : null}\n {isCloud ? null : (\n \n setLoadWorkflowsModalOpen(true)}\n >\n \n \n \n )}\n \n );\n\n\t// const tourOptions = {\n\t// \tdefaultStepOptions: {\n\t// \t\tclasses: \"shadow-md bg-purple-dark\",\n // \tscrollTo: true\n\t// \t},\n\t// \tuseModalOverlay: true,\n\t// \ttourName: workflows,\n\t// \texitOnEsc: true,\n\t// }\n\n // //classes: \"custom-class-name-1 custom-class-name-2\",\n\t// const newSteps = [\n\t// \t{\n // \tid: \"intro\",\n // \tscrollTo: true,\n // \tbeforeShowPromise: function() {\n // \t return new Promise(function(resolve) {\n // \t setTimeout(function() {\n // \t window.scrollTo(0, 0);\n // \t resolve();\n // \t }, 500);\n // \t });\n // \t},\n // \tbuttons: [\n // \t {\n // \t classes: \"shepherd-button-primary\",\n\t// \t\t\t\tstyle: {\n\t// \t\t\t\t\tbackgroundColor: \"red\",\t\n\t// \t\t\t\t\tcolor: \"white\", \n\t// \t\t\t\t},\n // \t text: \"Next\",\n // \t type: \"next\"\n // \t }\n // \t],\n // \thighlightClass: \"highlight\",\n // \tshowCancelLink: true,\n // \ttext: [\n // \t \"React-Shepherd is a JavaScript library for guiding users through your React app.\"\n // \t],\n // \twhen: {\n // \t show: () => {\n // \t console.log(\"show step 1\");\n // \t },\n // \t hide: () => {\n // \t console.log(\"hide step 1\");\n // \t }\n // \t}\n // },\t\n // {\n // \tid: \"second\",\n // \tattachTo: {\n // \t element: \"second-step\",\n // \t on: \"top\"\n // \t},\n // \ttext: [\n // \t \"Yuk eksplorasi hasil Tes Minat Bakat-mu dan rekomendasi Jurusan dan Karier.\"\n // \t],\n // \tbuttons: [\n // \t {\n // \t classes: \"btn btn-info\",\n // \t text: \"Kembali\",\n // \t type: \"back\"\n // \t },\n // \t {\n // \t classes: \"btn btn-success\",\n // \t text: \"Saya Mengerti\",\n // \t type: \"cancel\"\n // \t }\n // \t],\n // \twhen: {\n // \t show: () => {\n // \t console.log(\"show stepp\");\n // \t },\n // \t hide: () => {\n // \t console.log(\"complete step\");\n // \t }\n // \t},\n // \tshowCancelLink: false,\n // \tscrollTo: true,\n // \tmodalOverlayOpeningPadding: 4,\n // \tuseModalOverlay: false,\n // \tcanClickTarget: false\n // \t}\n\t// ]\n\t\t\n\t// \tfunction TourButton() {\n\t// \t const tour = useContext(ShepherdTourContext);\n\t\t\n\t// \t return (\n\t// \t \n\t// \t );\n\t// \t}\n\n const WorkflowView = () => {\n if (workflows.length === 0) {\n\t\t\t// Not going there yet\n\t\t\t//if ((userdata.tutorials !== undefined && userdata.tutorials !== null && !userdata.tutorials.includes(\"getting-started\")) || userdata.tutorials === null) {\n\t\t\t//\treturn ;\n\t\t\t//}\n //return (\n //
\n // \n //
\n //

Welcome to Shuffle

\n //
\n //
\n //

\n // Shuffle is a flexible, easy to use, automation platform\n // allowing users to integrate their services and devices freely.\n // It's made to significantly reduce the amount of manual labor,\n // and is focused on security applications.{\" \"}\n // \n // Click here to learn more.\n // \n //

\n //
\n //
\n // If you want to jump straight into it, click here to create your\n // first workflow:\n //
\n //
\n // setModalOpen(true)}\n // >\n // New workflow\n // \n // \n // \n // ..OR\n // \n // {workflowButtons}\n // \n //
\n //
\n //
\n //)\n }\n\n\t\tvar workflowDelay = -150\n\t\tvar appDelay = -75\t\n\n\n return (\n
\n
\n
\n
\n\t\t\t\t\t\t\t\n \tWorkflows\n\t\t\t\t\t\t\t\n
\n\t\t\t\t\t\t{/*\n
\n \n \n Learn more about Workflows\n \n \n
\n\t\t\t\t\t\t*/}\n\t\t\t\t\t\t{isMobile ? null : \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\taddFilter(chip);\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tonDelete={(_, index) => {\n\t\t\t\t\t\t\t\t\t\t\tremoveFilter(index);\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t}\n
\n {workflowButtons}\n
\n
\n {/*\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
{workflows.length}
\n\t\t\t\t\t\t\t\t\t
ACTIVE WORKFLOWS
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
{workflows.length}
\n\t\t\t\t\t\t\t\t\t
AVAILABE WORKFLOWS
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
{workflows.length}
\n\t\t\t\t\t\t\t\t\t
NOTIFICATIONS
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t*/}\n\n {/*\n\t\t\t\t\tchipRenderer={({ value, isFocused, isDisabled, handleClick, handleRequestDelete }, key) => {\n\t\t\t\t\t\tconsole.log(\"VALUE: \", value)\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{value}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)\n\t\t\t\t\t}}\n\t\t\t\t\t*/}\n \t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t{!isMobile && usecases !== null && usecases !== undefined && usecases.length > 0 ? \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{usecases.map((usecase, index) => {\n\t\t\t\t\t\t\t\t\t//console.log(usecase)\n\t\t\t\t\t\t\t\t\tconst percentDone = usecase.matches.length > 0 ? parseInt(usecase.matches.length/usecase.list.length*100) : 0\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"Filters: \", filters, usecase.name.toLowerCase())\n\t\t\t\t\t\t\t\t\t\t\t\tif (!filters.includes(usecase.name.toLowerCase())) {\n\t\t\t\t\t\t\t\t\t\t\t\t\taddFilter(usecase.name)\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n \t\t\t\t\t\t\t\t\t\t\t\tremoveFilter(filters.indexOf(usecase.name.toLowerCase()))\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{usecase.name}\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{usecase.matches.length}/{usecase.list.length}\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t: null}\n\t\t\t\t\t
\n\n
\n {!isMobile &&\n\t\t\t\t\tactionImageList !== undefined &&\n actionImageList !== null &&\n actionImageList.length > 0 ? (\n \n {actionImageList.map((data, index) => {\n if (\n data.large_image === undefined ||\n data.large_image === null ||\n data.large_image.length === 0\n ) {\n return null;\n }\n\n if (data.app_name.toLowerCase() === \"shuffle tools\") {\n data.large_image = theme.palette.defaultImage;\n }\n\n\t\t\t\t\t\t\t\tconst returnData = \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"FILTER: \", data);\n\t\t\t\t\t\t\t\t\t\t\t\taddFilter(data.app_name);\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\tif (firstLoad) {\n\t\t\t\t\t\t\t\t\tappDelay += 75\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t//appDelay = 0\n\t\t\t\t\t\t\t\t\treturn returnData \n\t\t\t\t\t\t\t\t}\n\n return (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{returnData}\n\t\t\t\t\t\t\t\t\t\n );\n })}\n
\n ) : null}\n\n\t\t\t\t\t{userdata.priorities !== undefined && userdata.priorities !== null && userdata.priorities.length > 0 && userdata.priorities[0].name.includes(\"CPU\") ?\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{userdata.priorities[0].name}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{userdata.priorities[0].description}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{/*\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t*/}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t: null}\n\n\t\t\t\t\t
\n\t\t\t\t\t\t{view === \"grid\" ? (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\t{filteredWorkflows.map((data, index) => {\n\t\t\t\t\t\t\t\t\t// Shouldn't be a part of this list\n\t\t\t\t\t\t\t\t\tif (data.public === true) {\n\t\t\t\t\t\t\t\t\t\treturn null\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (firstLoad) {\n\t\t\t\t\t\t\t\t\t\tworkflowDelay += 75\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n );\n };\n\n const importWorkflowsFromUrl = (url) => {\n console.log(\"IMPORT WORKFLOWS FROM \", downloadUrl);\n\n const parsedData = {\n url: url,\n field_3: downloadBranch || \"master\",\n };\n\n if (field1.length > 0) {\n parsedData[\"field_1\"] = field1;\n }\n\n if (field2.length > 0) {\n parsedData[\"field_2\"] = field2;\n }\n\n alert.success(\"Getting specific workflows from your URL.\");\n fetch(globalUrl + \"/api/v1/workflows/download_remote\", {\n method: \"POST\",\n mode: \"cors\",\n headers: {\n Accept: \"application/json\",\n },\n body: JSON.stringify(parsedData),\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status === 200) {\n alert.success(\"Successfully loaded workflows from \" + downloadUrl);\n setTimeout(() => {\n getAvailableWorkflows();\n }, 1000);\n }\n\n return response.json();\n })\n .then((responseJson) => {\n if (!responseJson.success) {\n if (responseJson.reason !== undefined) {\n alert.error(\"Failed loading: \" + responseJson.reason);\n } else {\n alert.error(\"Failed loading\");\n }\n }\n })\n .catch((error) => {\n alert.error(error.toString());\n });\n };\n\n const handleGithubValidation = () => {\n importWorkflowsFromUrl(downloadUrl);\n setLoadWorkflowsModalOpen(false);\n };\n\n const workflowDownloadModalOpen = loadWorkflowsModalOpen ? (\n {}}\n PaperProps={{\n style: {\n backgroundColor: surfaceColor,\n color: \"white\",\n minWidth: \"800px\",\n minHeight: \"320px\",\n },\n }}\n >\n \n
\n Load workflows from github repo\n
\n \n upload.click()}\n >\n \n \n \n
\n
\n
\n \n Repository (supported: github, gitlab, bitbucket)\n setDownloadUrl(e.target.value)}\n placeholder=\"https://github.com/frikky/shuffle-apps\"\n fullWidth\n />\n \n Branch (default value is \"master\"):\n \n
\n setDownloadBranch(e.target.value)}\n placeholder=\"master\"\n fullWidth\n />\n
\n \n Authentication (optional - private repos etc):\n \n
\n setField1(e.target.value)}\n type=\"username\"\n placeholder=\"Username / APIkey (optional)\"\n fullWidth\n />\n setField2(e.target.value)}\n type=\"password\"\n placeholder=\"Password (optional)\"\n fullWidth\n />\n
\n
\n \n setLoadWorkflowsModalOpen(false)}\n color=\"primary\"\n >\n Cancel\n \n {\n handleGithubValidation();\n }}\n color=\"primary\"\n >\n Submit\n \n \n \n ) : null;\n\n\n\t//const \n //const [percentDone, setPercentDone] = React.useState(0)\n\tconst percentDone = gettingStartedItems.filter((item) => item.done).length / gettingStartedItems.length * 100\n\n\tconst GettingStartedItem = ({item, index}) => {\n\t\tconst [clicked, setClicked] = React.useState(false)\n\t\tconst doneIcon = item.done ? : \n\n\t\treturn (\n\t\t\t
setClicked(true)}\n\t\t\t>\n\t\t\t\t\n\t\t\t\t\t{doneIcon} {index + 1}. {item.name}\n\t\t\t\t\n\t\t\t\t{clicked ? \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{item.description}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t: \n\t\t\t\t\tnull\n\t\t\t\t}\n\t\t\t
\n\t\t)\n\t}\n\n\tconst gettingStartedDrawer = \n\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\tGetting Started\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\tsetDrawerOpen(false)\n\n\t\t\t\t\t\t\tlocalStorage.setItem(sidebarKey, \"closed\");\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n \t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\tSetup progress: {isNaN(percentDone) ? 0 : percentDone}%\n\t\t\t\t\n\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\tFollow these steps to get you up and running!\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t {\n\t\t\t\t\tsetVideoViewOpen(true)\n\t\t\t\t}}>\n\t\t\t\t\tWatch 2-min introduction video\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t{gettingStartedItems.map((item, index) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t\n\t\t\t\t\t)\n\t\t\t\t})}\n\t\t\t
\n\t\t\n\t\t\t\t\n\t\tconst videoView =\n\t\t\t {\n\t\t\t\t\tsetVideoViewOpen(false)\n\t\t\t\t}}\n\t\t\t\tPaperProps={{\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\tbackgroundColor: surfaceColor,\n\t\t\t\t\t\tcolor: \"white\",\n\t\t\t\t\t\tminWidth: 560,\n\t\t\t\t\t\tminHeight: 415,\n\t\t\t\t\t\ttextAlign: \"center\",\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t\n\t\t\t\t\tWelcome to Shuffle!\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\tsetVideoViewOpen(false)\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\n const loadedCheck =\n isLoaded && isLoggedIn && workflowDone ? (\n
\n\t\t\t\t{/*\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t*/}\n 1366 ? 1366 : isMobile ? \"100%\" : 1200,\n margin: \"auto\",\n padding: 20,\n }}\n onDrop={uploadFile}\n >\n \n \n {/*modalView*/}\n {deleteModal}\n {exportVerifyModal}\n {publishModal}\n {workflowDownloadModalOpen}\n\n\t\t\t\t{!drawerOpen ?
\n \n\t\t\t\t\t\t {\n\t\t\t\t\t\t\tsetDrawerOpen(true)\n\t\t\t\t\t\t\tlocalStorage.setItem(sidebarKey, \"open\");\n\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
: null}\n\t\t\t\t{isMobile ? null : gettingStartedDrawer} \n\t\t\t\t{videoView} \n\n\t\t\t\t{modalOpen === true ? \n\t\t\t\t\t\n\t\t\t\t: null}\n\t\t\t\t{/*
\n\t\t\t\t\t\n\t\t\t\t\t\tNeed assistance? Ask our support team (it's free!).\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
*/}\n\t\t\t
\n ) : (\n \n \n Loading Workflows\n
\n );\n\n // Maybe use gridview or something, idk\n return
{loadedCheck}
;\n};\n\nexport default Workflows;\n","import React, { useEffect, useContext } from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { useTheme } from \"@material-ui/core/styles\";\n\nimport ReactGA from 'react-ga4';\nimport SecurityFramework from '../components/SecurityFramework.jsx';\n\nimport {\n Badge,\n Avatar,\n Grid,\n Paper,\n Tooltip,\n Divider,\n Button,\n TextField,\n FormControl,\n IconButton,\n Menu,\n MenuItem,\n FormControlLabel,\n Chip,\n Switch,\n Typography,\n Zoom,\n CircularProgress,\n Dialog,\n DialogTitle,\n DialogActions,\n DialogContent,\n} from \"@material-ui/core\";\n\nimport {\n\tCheck as CheckIcon,\n GridOn as GridOnIcon,\n List as ListIcon,\n Close as CloseIcon,\n Compare as CompareIcon,\n Maximize as MaximizeIcon,\n Minimize as MinimizeIcon,\n AddCircle as AddCircleIcon,\n Toc as TocIcon,\n Send as SendIcon,\n Search as SearchIcon,\n FileCopy as FileCopyIcon,\n Delete as DeleteIcon,\n BubbleChart as BubbleChartIcon,\n Restore as RestoreIcon,\n Cached as CachedIcon,\n GetApp as GetAppIcon,\n Apps as AppsIcon,\n Edit as EditIcon,\n MoreVert as MoreVertIcon,\n PlayArrow as PlayArrowIcon,\n Add as AddIcon,\n Publish as PublishIcon,\n CloudUpload as CloudUploadIcon,\n CloudDownload as CloudDownloadIcon,\n} from \"@mui/icons-material\";\n\nimport NestedMenuItem from \"material-ui-nested-menu-item\";\n//import {Search as SearchIcon, ArrowUpward as ArrowUpwardIcon, Visibility as VisibilityIcon, Done as DoneIcon, Close as CloseIcon, Error as ErrorIcon, FindReplace as FindreplaceIcon, ArrowLeft as ArrowLeftIcon, Cached as CachedIcon, DirectionsRun as DirectionsRunIcon, Add as AddIcon, Polymer as PolymerIcon, FormatListNumbered as FormatListNumberedIcon, Create as CreateIcon, PlayArrow as PlayArrowIcon, AspectRatio as AspectRatioIcon, MoreVert as MoreVertIcon, Apps as AppsIcon, Schedule as ScheduleIcon, FavoriteBorder as FavoriteBorderIcon, Pause as PauseIcon, Delete as DeleteIcon, AddCircleOutline as AddCircleOutlineIcon, Save as SaveIcon, KeyboardArrowLeft as KeyboardArrowLeftIcon, KeyboardArrowRight as KeyboardArrowRightIcon, ArrowBack as ArrowBackIcon, Settings as SettingsIcon, LockOpen as LockOpenIcon, ExpandMore as ExpandMoreIcon, VpnKey as VpnKeyIcon} from '@material-ui/icons';\n\n//https://next.material-ui.com/components/material-icons/\nimport { DataGrid, GridToolbar } from \"@mui/x-data-grid\";\n\n//import JSONPretty from 'react-json-pretty';\n//import JSONPrettyMon from 'react-json-pretty/dist/monikai'\nimport Dropzone from \"../components/Dropzone.jsx\";\n\nimport { useNavigate, Link, useParams } from \"react-router-dom\";\nimport { useAlert } from \"react-alert\";\nimport ChipInput from \"material-ui-chip-input\";\nimport { v4 as uuidv4 } from \"uuid\";\n\nconst inputColor = \"#383B40\";\nconst surfaceColor = \"#27292D\";\nconst svgSize = 24;\nconst imagesize = 22;\n\nconst useStyles = makeStyles((theme) => ({\n datagrid: {\n border: 0,\n \"& .MuiDataGrid-columnsContainer\": {\n backgroundColor:\n theme.palette.type === \"light\" ? \"#fafafa\" : theme.palette.inputColor,\n },\n \"& .MuiDataGrid-iconSeparator\": {\n display: \"none\",\n },\n \"& .MuiDataGrid-colCell, .MuiDataGrid-cell\": {\n borderRight: `1px solid ${\n theme.palette.type === \"light\" ? \"white\" : \"#303030\"\n }`,\n },\n \"& .MuiDataGrid-columnsContainer, .MuiDataGrid-cell\": {\n borderBottom: `1px solid ${\n theme.palette.type === \"light\" ? \"#f0f0f0\" : \"#303030\"\n }`,\n },\n \"& .MuiDataGrid-cell\": {\n color:\n theme.palette.type === \"light\" ? \"white\" : \"rgba(255,255,255,0.65)\",\n },\n \"& .MuiPaginationItem-root, .MuiTablePagination-actions, .MuiTablePagination-caption\":\n {\n borderRadius: 0,\n color: \"white\",\n },\n },\n}));\n\n \nconst chipStyle = {\n backgroundColor: \"#3d3f43\",\n marginRight: 5,\n paddingLeft: 5,\n paddingRight: 5,\n height: 28,\n cursor: \"pointer\",\n borderColor: \"#3d3f43\",\n color: \"white\",\n};\n\nconst GettingStarted = (props) => {\n const { globalUrl, isLoggedIn, isLoaded, userdata } = props;\n\n document.title = \"Getting Started with Shuffle\";\n const theme = useTheme();\n const alert = useAlert();\n const classes = useStyles(theme);\n\tlet navigate = useNavigate();\n const imgSize = 60;\n\n const referenceUrl = globalUrl + \"/api/v1/hooks/\";\n\n\n var upload = \"\";\n\n const [workflows, setWorkflows] = React.useState([]);\n const [filteredWorkflows, setFilteredWorkflows] = React.useState([]);\n const [selectedWorkflow, setSelectedWorkflow] = React.useState({});\n const [workflowDone, setWorkflowDone] = React.useState(false);\n const [selectedWorkflowId, setSelectedWorkflowId] = React.useState(\"\");\n\n const [field1, setField1] = React.useState(\"\");\n const [field2, setField2] = React.useState(\"\");\n const [downloadUrl, setDownloadUrl] = React.useState(\n \"https://github.com/frikky/shuffle-workflows\"\n );\n const [videoViewOpen, setVideoViewOpen] = React.useState(false)\n const [downloadBranch, setDownloadBranch] = React.useState(\"master\");\n const [loadWorkflowsModalOpen, setLoadWorkflowsModalOpen] = React.useState(false);\n const [exportModalOpen, setExportModalOpen] = React.useState(false);\n const [exportData, setExportData] = React.useState(\"\");\n\n const [modalOpen, setModalOpen] = React.useState(false);\n const [newWorkflowName, setNewWorkflowName] = React.useState(\"\");\n const [newWorkflowDescription, setNewWorkflowDescription] =\n React.useState(\"\");\n const [newWorkflowTags, setNewWorkflowTags] = React.useState([]);\n\n const [defaultReturnValue, setDefaultReturnValue] = React.useState(\"\");\n\n const [deleteModalOpen, setDeleteModalOpen] = React.useState(false);\n const [publishModalOpen, setPublishModalOpen] = React.useState(false);\n const [editingWorkflow, setEditingWorkflow] = React.useState({});\n const [importLoading, setImportLoading] = React.useState(false);\n const [isDropzone, setIsDropzone] = React.useState(false);\n const [view, setView] = React.useState(\"grid\");\n const [filters, setFilters] = React.useState([]);\n const [submitLoading, setSubmitLoading] = React.useState(false);\n const [actionImageList, setActionImageList] = React.useState([]);\n\n const [firstLoad, setFirstLoad] = React.useState(true);\n\n const isCloud =\n window.location.host === \"localhost:3002\" ||\n window.location.host === \"shuffler.io\";\n\n const findWorkflow = (filters) => {\n if (filters.length === 0) {\n setFilteredWorkflows(workflows);\n return;\n }\n\n var newWorkflows = [];\n for (var workflowKey in workflows) {\n const curWorkflow = workflows[workflowKey];\n\n var found = [false];\n if (curWorkflow.tags === undefined || curWorkflow.tags === null) {\n found = filters.map((filter) =>\n curWorkflow.name.toLowerCase().includes(filter)\n );\n } else {\n found = filters.map((filter) => {\n const newfilter = filter.toLowerCase();\n if (filter === undefined) {\n return false;\n }\n\n if (curWorkflow.name.toLowerCase().includes(filter.toLowerCase())) {\n return true;\n } else if (curWorkflow.tags.includes(filter)) {\n return true;\n } else if (curWorkflow.owner === filter) {\n return true;\n } else if (curWorkflow.org_id === filter) {\n return true;\n } else if (\n curWorkflow.actions !== null &&\n curWorkflow.actions !== undefined\n ) {\n for (var key in curWorkflow.actions) {\n const action = curWorkflow.actions[key];\n if (\n action.app_name.toLowerCase() === newfilter ||\n action.app_name.toLowerCase().includes(newfilter)\n ) {\n return true;\n }\n }\n }\n\n return false;\n });\n }\n\n if (found.every((v) => v === true)) {\n newWorkflows.push(curWorkflow);\n continue;\n }\n }\n\n if (newWorkflows.length !== workflows.length) {\n setFilteredWorkflows(newWorkflows);\n }\n };\n\n const addFilter = (data) => {\n if (data === null || data === undefined) {\n return;\n }\n\n if (data.includes(\"<\") && data.includes(\">\")) {\n return;\n }\n\n if (filters.includes(data) || filters.includes(data.toLowerCase())) {\n return;\n }\n\n filters.push(data.toLowerCase());\n setFilters(filters);\n\n findWorkflow(filters);\n };\n\n const removeFilter = (index) => {\n var newfilters = filters;\n\n if (index < 0) {\n console.log(\"Can't handle index: \", index);\n return;\n }\n\n newfilters.splice(index, 1);\n\n if (newfilters.length === 0) {\n newfilters = [];\n setFilters(newfilters);\n } else {\n setFilters(newfilters);\n }\n\n findWorkflow(newfilters);\n };\n\n const exportVerifyModal = exportModalOpen ? (\n {\n setExportModalOpen(false);\n setSelectedWorkflow({});\n }}\n PaperProps={{\n style: {\n backgroundColor: surfaceColor,\n color: \"white\",\n minWidth: 500,\n padding: 30,\n },\n }}\n >\n \n
\n Want to auto-sanitize this workflow before exporting?\n
\n
\n \n \n This will make potentially sensitive fields such as username,\n password, url etc. empty\n \n {\n setExportModalOpen(false);\n exportWorkflow(exportData, true);\n setExportData(\"\");\n }}\n color=\"primary\"\n >\n Yes\n \n {\n setExportModalOpen(false);\n exportWorkflow(exportData, false);\n setExportData(\"\");\n }}\n color=\"primary\"\n >\n No\n \n \n \n ) : null;\n\n const publishModal = publishModalOpen ? (\n {\n setPublishModalOpen(false);\n setSelectedWorkflow({});\n }}\n PaperProps={{\n style: {\n backgroundColor: surfaceColor,\n color: \"white\",\n minWidth: 500,\n padding: 50,\n },\n }}\n >\n \n
\n Are you sure you want to PUBLISH this workflow?\n
\n
\n \n
\n \n Before publishing, we will sanitize all inputs, remove references to\n you, randomize ID's and remove your authentication.\n \n
\n {\n publishWorkflow(selectedWorkflow);\n setPublishModalOpen(false);\n }}\n color=\"primary\"\n >\n Yes\n \n {\n setPublishModalOpen(false);\n }}\n color=\"primary\"\n >\n No\n \n \n \n ) : null;\n\n const deleteModal = deleteModalOpen ? (\n {\n setDeleteModalOpen(false);\n setSelectedWorkflowId(\"\");\n }}\n PaperProps={{\n style: {\n backgroundColor: surfaceColor,\n color: \"white\",\n minWidth: 500,\n },\n }}\n >\n \n
\n Are you sure you want to delete this workflow?
\n Other workflows relying on this one may stop working\n
\n \n \n {\n console.log(\"Editing: \", editingWorkflow);\n if (selectedWorkflowId) {\n deleteWorkflow(selectedWorkflowId);\n setTimeout(() => {\n getAvailableWorkflows();\n }, 1000);\n }\n setDeleteModalOpen(false);\n }}\n color=\"primary\"\n >\n Yes\n \n {\n setDeleteModalOpen(false);\n }}\n color=\"primary\"\n >\n No\n \n \n \n ) : null;\n\n const uploadFile = (e) => {\n const isDropzone =\n e.dataTransfer === undefined ? false : e.dataTransfer.files.length > 0;\n const files = isDropzone ? e.dataTransfer.files : e.target.files;\n\n const reader = new FileReader();\n alert.info(\"Starting upload. Please wait while we validate the workflows\");\n\n try {\n reader.addEventListener(\"load\", (e) => {\n var data = e.target.result;\n setIsDropzone(false);\n try {\n data = JSON.parse(reader.result);\n } catch (e) {\n alert.error(\"Invalid JSON: \" + e);\n return;\n }\n\n // Initialize the workflow itself\n setNewWorkflow(\n data.name,\n data.description,\n data.tags,\n data.default_return_value,\n {},\n false\n )\n .then((response) => {\n if (response !== undefined) {\n // SET THE FULL THING\n data.id = response.id;\n\n // Actually create it\n setNewWorkflow(\n data.name,\n data.description,\n data.tags,\n data.default_return_value,\n data,\n false\n ).then((response) => {\n if (response !== undefined) {\n alert.success(`Successfully imported ${data.name}`);\n }\n });\n }\n })\n .catch((error) => {\n alert.error(\"Import error: \" + error.toString());\n });\n });\n } catch (e) {\n console.log(\"Error in dropzone: \", e);\n }\n\n reader.readAsText(files[0]);\n };\n\n useEffect(() => {\n if (isDropzone) {\n setIsDropzone(false);\n }\n }, [isDropzone]);\n\n const getAvailableWorkflows = () => {\n fetch(globalUrl + \"/api/v1/workflows\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for workflows :O!: \", response.status);\n\n if (isCloud) {\n window.location.pathname = \"/login\";\n }\n\n alert.info(\"Failed getting workflows.\");\n setWorkflowDone(true);\n\n return;\n }\n return response.json();\n })\n .then((responseJson) => {\n if (responseJson !== undefined) {\n setWorkflows(responseJson);\n\n if (responseJson !== undefined) {\n var actionnamelist = [];\n var parsedactionlist = [];\n for (var key in responseJson) {\n for (var actionkey in responseJson[key].actions) {\n const action = responseJson[key].actions[actionkey];\n //console.log(\"Action: \", action)\n if (actionnamelist.includes(action.app_name)) {\n continue;\n }\n\n actionnamelist.push(action.app_name);\n parsedactionlist.push(action);\n }\n }\n\n //console.log(parsedactionlist)\n setActionImageList(parsedactionlist);\n }\n\n setFilteredWorkflows(responseJson);\n setWorkflowDone(true);\n \n\t\t\t\t\t// Ensures the zooming happens only once per load\n \tsetTimeout(() => {\n\t\t\t\t\t\tsetFirstLoad(false)\n\t\t\t\t\t\tsetVideoViewOpen(true)\n\t\t\t\t\t}, 100)\n } else {\n if (isLoggedIn) {\n alert.error(\"An error occurred while loading workflows\");\n }\n\n return;\n }\n })\n .catch((error) => {\n\t\t\t\tsetVideoViewOpen(true)\n\n alert.error(error.toString());\n });\n };\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => {\n if (workflows.length <= 0) {\n const tmpView = localStorage.getItem(\"view\");\n if (tmpView !== undefined && tmpView !== null) {\n setView(tmpView);\n }\n\n //setFirstrequest(false);\n getAvailableWorkflows();\n }\n }, [])\n\n const viewStyle = {\n color: \"#ffffff\",\n width: \"100%\",\n display: \"flex\",\n minWidth: 1024,\n maxWidth: 1024,\n margin: \"auto\",\n };\n\n const emptyWorkflowStyle = {\n paddingTop: \"200px\",\n width: 1024,\n margin: \"auto\",\n };\n\n const boxStyle = {\n padding: \"20px 20px 20px 20px\",\n width: \"100%\",\n height: \"250px\",\n color: \"white\",\n backgroundColor: surfaceColor,\n display: \"flex\",\n flexDirection: \"column\",\n };\n\n const paperAppContainer = {\n display: \"flex\",\n flexWrap: \"wrap\",\n alignContent: \"space-between\",\n marginTop: 5,\n };\n\n const paperAppStyle = {\n minHeight: 130,\n maxHeight: 130,\n overflow: \"hidden\",\n width: \"100%\",\n color: \"white\",\n backgroundColor: surfaceColor,\n padding: \"12px 12px 0px 15px\",\n borderRadius: 5,\n display: \"flex\",\n boxSizing: \"border-box\",\n position: \"relative\",\n };\n\n const gridContainer = {\n height: \"auto\",\n color: \"white\",\n margin: \"10px\",\n backgroundColor: surfaceColor,\n };\n\n const workflowActionStyle = {\n display: \"flex\",\n width: 160,\n height: 44,\n justifyContent: \"space-between\",\n };\n\n const exportAllWorkflows = () => {\n for (var key in workflows) {\n exportWorkflow(workflows[key], false);\n }\n };\n\n const deduplicateIds = (data) => {\n if (data.triggers !== null && data.triggers !== undefined) {\n for (var key in data.triggers) {\n const trigger = data.triggers[key];\n if (trigger.app_name === \"Shuffle Workflow\") {\n if (trigger.parameters.length > 2) {\n trigger.parameters[2].value = \"\";\n }\n }\n\n if (trigger.status === \"running\") {\n trigger.status = \"stopped\";\n }\n\n const newId = uuidv4();\n if (trigger.trigger_type === \"WEBHOOK\") {\n if (\n trigger.parameters !== undefined &&\n trigger.parameters !== null &&\n trigger.parameters.length === 2\n ) {\n trigger.parameters[0].value =\n referenceUrl + \"webhook_\" + trigger.id;\n trigger.parameters[1].value = \"webhook_\" + trigger.id;\n } else if (\n trigger.parameters !== undefined &&\n trigger.parameters !== null &&\n trigger.parameters.length === 3\n ) {\n trigger.parameters[0].value =\n referenceUrl + \"webhook_\" + trigger.id;\n trigger.parameters[1].value = \"webhook_\" + trigger.id;\n // FIXME: Add auth here?\n } else {\n alert.info(\"Something is wrong with the webhook in the copy\");\n }\n }\n\n for (var branchkey in data.branches) {\n const branch = data.branches[branchkey];\n if (branch.source_id === trigger.id) {\n branch.source_id = newId;\n }\n\n if (branch.destination_id === trigger.id) {\n branch.destination_id = newId;\n }\n }\n\n trigger.environment = isCloud ? \"cloud\" : \"Shuffle\";\n trigger.id = newId;\n }\n }\n\n if (data.actions !== null && data.actions !== undefined) {\n for (key in data.actions) {\n data.actions[key].authentication_id = \"\";\n\n for (var subkey in data.actions[key].parameters) {\n const param = data.actions[key].parameters[subkey];\n if (\n param.name.includes(\"key\") ||\n param.name.includes(\"user\") ||\n param.name.includes(\"pass\") ||\n param.name.includes(\"api\") ||\n param.name.includes(\"auth\") ||\n param.name.includes(\"secret\") ||\n param.name.includes(\"domain\") ||\n param.name.includes(\"url\") ||\n param.name.includes(\"mail\")\n ) {\n // FIXME: This may be a vuln if api-keys are generated that start with $\n if (param.value.startsWith(\"$\")) {\n console.log(\"Skipping field, as it's referencing a variable\");\n } else {\n param.value = \"\";\n param.is_valid = false;\n }\n }\n }\n\n const newId = uuidv4();\n for (branchkey in data.branches) {\n const branch = data.branches[branchkey];\n if (branch.source_id === data.actions[key].id) {\n branch.source_id = newId;\n }\n\n if (branch.destination_id === data.actions[key].id) {\n branch.destination_id = newId;\n }\n }\n\n if (data.actions[key].id === data.start) {\n data.start = newId;\n }\n\n data.actions[key].environment = \"\";\n data.actions[key].id = newId;\n }\n }\n\n if (\n data.workflow_variables !== null &&\n data.workflow_variables !== undefined\n ) {\n for (key in data.workflow_variables) {\n const param = data.workflow_variables[key];\n if (\n param.name.includes(\"key\") ||\n param.name.includes(\"user\") ||\n param.name.includes(\"pass\") ||\n param.name.includes(\"api\") ||\n param.name.includes(\"auth\") ||\n param.name.includes(\"secret\") ||\n param.name.includes(\"email\")\n ) {\n param.value = \"\";\n param.is_valid = false;\n }\n }\n }\n\n return data;\n };\n\n const sanitizeWorkflow = (data) => {\n data = JSON.parse(JSON.stringify(data));\n data[\"owner\"] = \"\";\n console.log(\"Sanitize start: \", data);\n data = deduplicateIds(data);\n\n data[\"org\"] = [];\n data[\"org_id\"] = \"\";\n data[\"execution_org\"] = {};\n\n // These are backwards.. True = saved before. Very confuse.\n data[\"previously_saved\"] = false;\n data[\"first_save\"] = false;\n console.log(\"Sanitize end: \", data);\n\n return data;\n };\n\n const exportWorkflow = (data, sanitize) => {\n data = JSON.parse(JSON.stringify(data));\n let exportFileDefaultName = data.name + \".json\";\n\n if (sanitize === true) {\n data = sanitizeWorkflow(data);\n\n if (data.subflows !== null && data.subflows !== undefined) {\n alert.info(\n \"Not exporting with subflows when sanitizing. Please manually export them.\"\n );\n data.subflows = [];\n }\n\n //\tfor (var key in data.subflows) {\n //\t\tif (data.sublof\n //\t}\n //}\n }\n\n // Add correct ID's for triggers\n // Add mag\n\n let dataStr = JSON.stringify(data);\n let dataUri =\n \"data:application/json;charset=utf-8,\" + encodeURIComponent(dataStr);\n let linkElement = document.createElement(\"a\");\n linkElement.setAttribute(\"href\", dataUri);\n linkElement.setAttribute(\"download\", exportFileDefaultName);\n linkElement.click();\n };\n\n const publishWorkflow = (data) => {\n data = JSON.parse(JSON.stringify(data));\n data = sanitizeWorkflow(data);\n alert.info(\"Sanitizing and publishing \" + data.name);\n\n // This ALWAYS talks to Shuffle cloud\n fetch(globalUrl + \"/api/v1/workflows/\" + data.id + \"/publish\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify(data),\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for workflow publish :O!\");\n } else {\n if (isCloud) {\n alert.success(\"Successfully published workflow\");\n } else {\n alert.success(\n \"Successfully published workflow to https://shuffler.io\"\n );\n }\n }\n\n return response.json();\n })\n .then((responseJson) => {\n if (responseJson.reason !== undefined) {\n alert.error(\"Failed publishing: \", responseJson.reason);\n }\n\n getAvailableWorkflows();\n })\n .catch((error) => {\n alert.error(error.toString());\n });\n };\n\n const copyWorkflow = (data) => {\n data = JSON.parse(JSON.stringify(data));\n alert.success(\"Copying workflow \" + data.name);\n data.id = \"\";\n data.name = data.name + \"_copy\";\n data = deduplicateIds(data);\n\n fetch(globalUrl + \"/api/v1/workflows\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify(data),\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for workflows :O!\");\n return;\n }\n return response.json();\n })\n .then(() => {\n setTimeout(() => {\n getAvailableWorkflows();\n }, 1000);\n })\n .catch((error) => {\n alert.error(error.toString());\n });\n };\n\n const deleteWorkflow = (id) => {\n fetch(globalUrl + \"/api/v1/workflows/\" + id, {\n method: \"DELETE\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for setting workflows :O!\");\n alert.error(\"Failed deleting workflow. Do you have access?\");\n } else {\n alert.success(\"Deleted workflow \" + id);\n }\n\n return response.json();\n })\n .then(() => {\n setTimeout(() => {\n getAvailableWorkflows();\n }, 1000);\n })\n .catch((error) => {\n alert.error(error.toString());\n });\n };\n\n const handleChipClick = (e) => {\n addFilter(e.target.innerHTML);\n };\n\n const NewWorkflowPaper = () => {\n const [hover, setHover] = React.useState(false);\n\n const innerColor = \"rgba(255,255,255,0.3)\";\n const setupPaperStyle = {\n minHeight: paperAppStyle.minHeight,\n width: paperAppStyle.width,\n color: innerColor,\n padding: paperAppStyle.padding,\n borderRadius: paperAppStyle.borderRadius,\n display: \"flex\",\n boxSizing: \"border-box\",\n position: \"relative\",\n border: `2px solid ${innerColor}`,\n cursor: \"pointer\",\n backgroundColor: hover ? \"rgba(39,41,45,0.5)\" : \"rgba(39,41,45,1)\",\n };\n\n return (\n \n setModalOpen(true)}\n onMouseOver={() => {\n setHover(true);\n }}\n onMouseOut={() => {\n setHover(false);\n }}\n >\n \n \n \n \n \n \n \n );\n };\n\n const WorkflowPaper = (props) => {\n const { data } = props;\n const [open, setOpen] = React.useState(false);\n const [anchorEl, setAnchorEl] = React.useState(null);\n\n var boxColor = \"#FECC00\";\n if (data.is_valid) {\n boxColor = \"#86c142\";\n }\n\n if (!data.previously_saved) {\n boxColor = \"#f85a3e\";\n }\n\n const menuClick = (event) => {\n setOpen(!open);\n setAnchorEl(event.currentTarget);\n };\n\n var parsedName = data.name;\n if (\n parsedName !== undefined &&\n parsedName !== null &&\n parsedName.length > 20\n ) {\n parsedName = parsedName.slice(0, 21) + \"..\";\n }\n\n const actions = data.actions !== null ? data.actions.length : 0;\n const [triggers, subflows] = getWorkflowMeta(data);\n\n const workflowMenuButtons = (\n {\n setOpen(false);\n setAnchorEl(null);\n }}\n >\n {\n setModalOpen(true);\n setEditingWorkflow(JSON.parse(JSON.stringify(data)));\n setNewWorkflowName(data.name);\n setNewWorkflowDescription(data.description);\n setDefaultReturnValue(data.default_return_value);\n if (data.tags !== undefined && data.tags !== null) {\n setNewWorkflowTags(JSON.parse(JSON.stringify(data.tags)));\n }\n }}\n key={\"change\"}\n >\n \n {\"Change details\"}\n \n {\n setSelectedWorkflow(data);\n setPublishModalOpen(true);\n }}\n key={\"publish\"}\n >\n \n {\"Publish Workflow\"}\n \n {\n copyWorkflow(data);\n setOpen(false);\n }}\n key={\"duplicate\"}\n >\n \n {\"Duplicate Workflow\"}\n \n {/*= 0} style={{backgroundColor: inputColor, color: \"white\"}} onClick={() => {\n\t\t\t\t\t//copyWorkflow(data)\t\t\n\t\t\t\t\t//setOpen(false)\n\t\t\t\t}} key={\"duplicate\"}>\n\t\t\t\t\t\n\t\t\t\t\t{\"Copy to Child Org\"}\n\t\t\t\t*/}\n {\n setExportModalOpen(true);\n\n if (data.triggers !== null && data.triggers !== undefined) {\n var newSubflows = [];\n for (var key in data.triggers) {\n const trigger = data.triggers[key];\n\n if (\n trigger.parameters !== null &&\n trigger.parameters !== undefined\n ) {\n for (var subkey in trigger.parameters) {\n const param = trigger.parameters[subkey];\n if (\n param.name === \"workflow\" &&\n param.value !== data.id &&\n !newSubflows.includes(param.value)\n ) {\n newSubflows.push(param.value);\n }\n }\n }\n }\n\n var parsedworkflows = [];\n for (var key in newSubflows) {\n const foundWorkflow = workflows.find(\n (workflow) => workflow.id === newSubflows[key]\n );\n if (foundWorkflow !== undefined && foundWorkflow !== null) {\n parsedworkflows.push(foundWorkflow);\n }\n }\n\n if (parsedworkflows.length > 0) {\n console.log(\n \"Appending subflows during export: \",\n parsedworkflows.length\n );\n data.subflows = parsedworkflows;\n }\n }\n\n setExportData(data);\n setOpen(false);\n }}\n key={\"export\"}\n >\n \n {\"Export Workflow\"}\n \n {\n setDeleteModalOpen(true);\n setSelectedWorkflowId(data.id);\n setOpen(false);\n }}\n key={\"delete\"}\n >\n \n {\"Delete Workflow\"}\n \n \n );\n\n var image = \"\";\n var orgName = \"\";\n var orgId = \"\";\n if (userdata.orgs !== undefined) {\n const foundOrg = userdata.orgs.find((org) => org.id === data[\"org_id\"]);\n if (foundOrg !== undefined && foundOrg !== null) {\n //position: \"absolute\", bottom: 5, right: -5,\n const imageStyle = {\n width: imagesize,\n height: imagesize,\n pointerEvents: \"none\",\n marginLeft:\n data.creator_org !== undefined && data.creator_org.length > 0\n ? 20\n : 0,\n borderRadius: 10,\n border:\n foundOrg.id === userdata.active_org.id\n ? `3px solid ${boxColor}`\n : null,\n cursor: \"pointer\",\n marginRight: 10,\n };\n\n image =\n foundOrg.image === \"\" ? (\n \n ) : (\n {}}\n />\n );\n\n orgName = foundOrg.name;\n orgId = foundOrg.id;\n }\n }\n\n return (\n\t\t\t
\n \n \n \n \n \n {\n addFilter(orgId);\n }}\n >\n {image}\n
\n \n \n \n \n {parsedName}\n \n \n \n \n \n \n \n \n \n {actions}\n \n \n \n \n \n \n \n {triggers}\n \n \n \n \n {\n if (subflows === 0) {\n alert.info(\"No subflows for \" + data.name);\n return;\n }\n\n var newWorkflows = [data];\n for (var key in data.triggers) {\n const trigger = data.triggers[key];\n if (trigger.app_name !== \"Shuffle Workflow\") {\n continue;\n }\n\n if (\n trigger.parameters !== undefined &&\n trigger.parameters !== null &&\n trigger.parameters.length > 0 &&\n trigger.parameters[0].name === \"workflow\"\n ) {\n const newWorkflow = workflows.find(\n (item) => item.id === trigger.parameters[0].value\n );\n if (newWorkflow !== null && newWorkflow !== undefined) {\n newWorkflows.push(newWorkflow);\n continue;\n }\n }\n }\n\n setFilters([\"Subflows of \" + data.name]);\n setFilteredWorkflows(newWorkflows);\n }}\n >\n \n \n \n \n {subflows}\n \n \n \n \n \n {data.tags !== undefined\n ? data.tags.map((tag, index) => {\n if (index >= 3) {\n return null;\n }\n\n return (\n \n );\n })\n : null}\n \n {data.actions !== undefined && data.actions !== null ? (\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t{workflowMenuButtons}\n\t\t\t\t\t\t
\n ) : null}\n\t\t\t\t\n\t\t\t\n\t\t
\n )\n }\n\n // Can create and set workflows\n const setNewWorkflow = (\n name,\n description,\n tags,\n defaultReturnValue,\n editingWorkflow,\n redirect\n ) => {\n var method = \"POST\";\n var extraData = \"\";\n var workflowdata = {};\n\n if (editingWorkflow.id !== undefined) {\n console.log(\"Building original workflow\");\n method = \"PUT\";\n extraData = \"/\" + editingWorkflow.id + \"?skip_save=true\";\n workflowdata = editingWorkflow;\n\n console.log(\"REMOVING OWNER\");\n workflowdata[\"owner\"] = \"\";\n // FIXME: Loop triggers and turn them off?\n }\n\n workflowdata[\"name\"] = name;\n workflowdata[\"description\"] = description;\n if (tags !== undefined) {\n workflowdata[\"tags\"] = tags;\n }\n\n if (defaultReturnValue !== undefined) {\n workflowdata[\"default_return_value\"] = defaultReturnValue;\n }\n\n return fetch(globalUrl + \"/api/v1/workflows\" + extraData, {\n method: method,\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify(workflowdata),\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for workflows :O!\");\n return;\n }\n setSubmitLoading(false);\n\n return response.json();\n })\n .then((responseJson) => {\n\t\t\t\tif (responseJson.success === false) {\n\t\t\t\t\tif (responseJson.reason !== undefined) {\n\t\t\t\t\t\talert.error(\"Error setting workflow: \", responseJson.reason)\n\t\t\t\t\t} else {\n\t\t\t\t\t\talert.error(\"Error setting workflow.\")\n\t\t\t\t\t}\n\n\t\t\t\t\treturn\n\t\t\t\t}\n\n if (method === \"POST\" && redirect) {\n window.location.pathname = \"/workflows/\" + responseJson[\"id\"];\n setModalOpen(false);\n } else if (!redirect) {\n // Update :)\n setTimeout(() => {\n getAvailableWorkflows();\n }, 1000);\n setImportLoading(false);\n setModalOpen(false);\n } else {\n alert.info(\"Successfully changed basic info for workflow\");\n setModalOpen(false);\n }\n\n return responseJson;\n })\n .catch((error) => {\n alert.error(error.toString());\n setImportLoading(false);\n setModalOpen(false);\n setSubmitLoading(false);\n });\n };\n\n const importFiles = (event) => {\n console.log(\"Importing!\");\n\n setImportLoading(true);\n if (event.target.files.length > 0) {\n for (var key in event.target.files) {\n const file = event.target.files[key];\n if (file.type !== \"application/json\") {\n if (file.type !== undefined) {\n alert.error(\"File has to contain valid json\");\n \t\t\t\tsetImportLoading(false);\n }\n\n continue;\n }\n\n const reader = new FileReader();\n // Waits for the read\n reader.addEventListener(\"load\", (event) => {\n var data = reader.result;\n try {\n data = JSON.parse(reader.result);\n } catch (e) {\n alert.error(\"Invalid JSON: \" + e);\n setImportLoading(false);\n return;\n }\n\n // Initialize the workflow itself\n setNewWorkflow(\n data.name,\n data.description,\n data.tags,\n data.default_return_value,\n {},\n false\n )\n .then((response) => {\n if (response !== undefined) {\n // SET THE FULL THING\n data.id = response.id;\n data.first_save = false;\n data.previously_saved = false;\n data.is_valid = false;\n\n // Actually create it\n setNewWorkflow(\n data.name,\n data.description,\n data.tags,\n data.default_return_value,\n data,\n false\n ).then((response) => {\n if (response !== undefined) {\n alert.success(\"Successfully imported \" + data.name);\n }\n });\n }\n })\n .catch((error) => {\n alert.error(\"Import error: \" + error.toString());\n });\n });\n\n // Actually reads\n reader.readAsText(file);\n }\n }\n\n setLoadWorkflowsModalOpen(false);\n };\n\n const getWorkflowMeta = (data) => {\n let triggers = 0;\n let subflows = 0;\n if (\n data.triggers !== undefined &&\n data.triggers !== null &&\n data.triggers.length > 0\n ) {\n triggers = data.triggers.length;\n for (let key in data.triggers) {\n if (data.triggers[key].app_name === \"Shuffle Workflow\") {\n subflows += 1;\n }\n }\n }\n\n return [triggers, subflows];\n };\n\n const WorkflowListView = () => {\n let workflowData = \"\";\n if (workflows.length > 0) {\n const columns = [\n {\n field: \"image\",\n headerName: \"Logo\",\n width: 50,\n sortable: false,\n renderCell: (params) => {\n const data = params.row.record;\n\n var boxColor = \"#FECC00\";\n if (data.is_valid) {\n boxColor = \"#86c142\";\n }\n\n if (!data.previously_saved) {\n boxColor = \"#f85a3e\";\n }\n\n var image = \"\";\n if (userdata.orgs !== undefined) {\n const foundOrg = userdata.orgs.find(\n (org) => org.id === data[\"org_id\"]\n );\n if (foundOrg !== undefined && foundOrg !== null) {\n //position: \"absolute\", bottom: 5, right: -5,\n const imageStyle = {\n width: imagesize + 7,\n height: imagesize + 7,\n pointerEvents: \"none\",\n marginLeft:\n data.creator_org !== undefined &&\n data.creator_org.length > 0\n ? 20\n : 0,\n borderRadius: 10,\n border:\n foundOrg.id === userdata.active_org.id\n ? `3px solid ${boxColor}`\n : null,\n cursor: \"pointer\",\n marginTop: 5,\n };\n\n //\n image =\n foundOrg.image === \"\" ? (\n \n ) : (\n {\n //setFilteredWorkflows(newWorkflows)\n }}\n />\n );\n }\n }\n\n return
{image}
;\n },\n },\n {\n field: \"title\",\n headerName: \"Title\",\n width: 330,\n renderCell: (params) => {\n const data = params.row.record;\n\n return (\n \n \n {data.name}\n \n \n );\n },\n },\n\n {\n field: \"options\",\n headerName: \"Options\",\n width: 200,\n sortable: false,\n disableClickEventBubbling: true,\n renderCell: (params) => {\n const data = params.row.record;\n const actions = data.actions !== null ? data.actions.length : 0;\n let [triggers, subflows] = getWorkflowMeta(data);\n\n return (\n \n
\n \n \n \n \n {actions}\n \n \n \n \n \n \n \n {triggers}\n \n \n \n \n {\n if (subflows === 0) {\n alert.info(\"No subflows for \" + data.name);\n return;\n }\n\n var newWorkflows = [data];\n for (var key in data.triggers) {\n const trigger = data.triggers[key];\n if (trigger.app_name !== \"Shuffle Workflow\") {\n continue;\n }\n\n if (\n trigger.parameters !== undefined &&\n trigger.parameters !== null &&\n trigger.parameters.length > 0 &&\n trigger.parameters[0].name === \"workflow\"\n ) {\n const newWorkflow = workflows.find(\n (item) => item.id === trigger.parameters[0].value\n );\n if (\n newWorkflow !== null &&\n newWorkflow !== undefined\n ) {\n newWorkflows.push(newWorkflow);\n continue;\n }\n }\n }\n\n setFilters([\"Subflows of \" + data.name]);\n setFilteredWorkflows(newWorkflows);\n }}\n >\n \n \n \n \n {subflows}\n \n \n \n
\n
\n );\n },\n },\n {\n field: \"tags\",\n headerName: \"Tags\",\n maxHeight: 15,\n width: 300,\n sortable: false,\n disableClickEventBubbling: true,\n renderCell: (params) => {\n const data = params.row.record;\n return (\n \n {data.tags !== undefined\n ? data.tags.map((tag, index) => {\n if (index >= 3) {\n return null;\n }\n\n return (\n \n );\n })\n : null}\n \n );\n },\n },\n {\n field: \"\",\n headerName: \"\",\n maxHeight: 15,\n width: 100,\n sortable: false,\n disableClickEventBubbling: true,\n renderCell: (params) => {},\n },\n ];\n let rows = [];\n rows = filteredWorkflows.map((data, index) => {\n let obj = {\n id: index + 1,\n title: data.name,\n record: data,\n };\n\n return obj;\n })\n\n workflowData = (\n \n );\n }\n return
{workflowData}
;\n };\n\n const modalView = modalOpen ? (\n {\n setModalOpen(false);\n }}\n PaperProps={{\n style: {\n backgroundColor: surfaceColor,\n color: \"white\",\n minWidth: \"800px\",\n },\n }}\n >\n \n
\n {editingWorkflow.id !== undefined ? \"Editing\" : \"New\"} workflow\n
\n \n upload.click()}\n >\n \n \n \n
\n
\n
\n \n \n setNewWorkflowName(event.target.value)}\n InputProps={{\n style: {\n color: \"white\",\n },\n }}\n color=\"primary\"\n placeholder=\"Name\"\n margin=\"dense\"\n defaultValue={newWorkflowName}\n autoFocus\n fullWidth\n />\n setNewWorkflowDescription(event.target.value)}\n InputProps={{\n style: {\n color: \"white\",\n },\n }}\n color=\"primary\"\n defaultValue={newWorkflowDescription}\n placeholder=\"Description\"\n rows=\"3\"\n multiline\n margin=\"dense\"\n fullWidth\n />\n {\n newWorkflowTags.push(chip);\n setNewWorkflowTags(newWorkflowTags);\n }}\n onDelete={(chip, index) => {\n newWorkflowTags.splice(index, 1);\n setNewWorkflowTags(newWorkflowTags);\n }}\n />\n\n setDefaultReturnValue(event.target.value)}\n InputProps={{\n style: {\n color: \"white\",\n },\n }}\n color=\"primary\"\n defaultValue={defaultReturnValue}\n placeholder=\"Default return value (used for Subflows if the subflow fails)\"\n rows=\"3\"\n multiline\n margin=\"dense\"\n fullWidth\n />\n \n \n {\n setNewWorkflowName(\"\");\n setNewWorkflowDescription(\"\");\n setDefaultReturnValue(\"\");\n setEditingWorkflow({});\n setNewWorkflowTags([]);\n setModalOpen(false);\n }}\n color=\"primary\"\n >\n Cancel\n \n {\n console.log(\"Tags: \", newWorkflowTags);\n if (editingWorkflow.id !== undefined) {\n setNewWorkflow(\n newWorkflowName,\n newWorkflowDescription,\n newWorkflowTags,\n defaultReturnValue,\n editingWorkflow,\n false\n );\n setNewWorkflowName(\"\");\n setDefaultReturnValue(\"\");\n setNewWorkflowDescription(\"\");\n setEditingWorkflow({});\n setNewWorkflowTags([]);\n } else {\n setNewWorkflow(\n newWorkflowName,\n newWorkflowDescription,\n newWorkflowTags,\n defaultReturnValue,\n {},\n true\n );\n }\n\n setSubmitLoading(true);\n }}\n color=\"primary\"\n >\n {submitLoading ? : \"Submit\"}\n \n \n \n \n ) : null;\n\n const viewSize = {\n workflowView: 4,\n executionsView: 3,\n executionResults: 4,\n };\n\n\n if (viewSize.workflowView === 0) {\n workflowViewStyle.display = \"none\";\n }\n\n const workflowButtons = (\n \n {view === \"list\" && (\n \n {\n localStorage.setItem(\"view\", \"grid\");\n setView(\"grid\");\n }}\n >\n \n \n \n )}\n {view === \"grid\" && (\n \n {\n localStorage.setItem(\"view\", \"list\");\n setView(\"list\");\n }}\n >\n \n \n \n )}\n \n {importLoading ? (\n \n ) : (\n upload.click()}\n >\n \n \n )}\n \n (upload = ref)}\n onChange={importFiles}\n />\n {workflows.length > 0 ? (\n \n {\n exportAllWorkflows();\n }}\n >\n \n \n
\n ) : null}\n {isCloud ? null : (\n \n setLoadWorkflowsModalOpen(true)}\n >\n \n \n \n )}\n \n );\n\n\n\tconst workflowViewStyle = {\n\t\tflex: viewSize.workflowView,\n\t\tmargin: \"auto\",\n\t\tmarginTop: 25,\n\t\ttextAlign: \"center\",\n\t\tmaxWidth: 600,\n\t};\n\n\n const WorkflowView = () => {\n\t\tvar workflowDelay = -150\n\t\tvar appDelay = -75\t\n\n\t\tconst textSpacingDiff = 8\n\t\tconst textType = \"body2\"\n\t\t\t\t\t\t\n\t\t// Discover use-cases made by us and other creators!\n\t\tconst steps = [\n\t\t\t{\n\t\t\t\thtml: (\n\t\t\t\t\t {\n\t\t\t\t\t\tif (isCloud) {\n\t\t\t\t\t\t\tReactGA.event({\n\t\t\t\t\t\t\t\tcategory: \"getting-started\",\n\t\t\t\t\t\t\t\taction: `integerations_find_click`,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t}}>\n\t\t\t\t\t\tFind relevant apps and start your automation journey\n\t\t\t\t\t\n\t\t\t\t), \n\t\t\t\ttutorial: \"find_integrations\",\n\t\t\t},\n\t\t\t{\n\t\t\t\thtml: \n\t\t\t\t\t\n\t\t\t\t\t\t\tDiscover Use-Case ideas and \n\t\t\t\t\t\t\t {\n \n \t\t\t\t\t\tif (isCloud) {\n\t\t\t\t\t\t\t\tnavigate(`/search?tab=workflows`)\n\n\t\t\t\t\t\t\t\tReactGA.event({\n\t\t\t\t\t\t\t\t\tcategory: \"getting-started\",\n\t\t\t\t\t\t\t\t\taction: `workflow_find_click`,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\talert.success(\"TBD: Coming in version 1.0.0\");\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst ele = document.getElementById(\"shuffle_search_field\")\n\t\t\t\t\t\t\tif (ele !== undefined && ele !== null) {\n\t\t\t\t\t\t\t\tconsole.log(\"Found ele: \", ele)\n\t\t\t\t\t\t\t\tele.focus()\n\t\t\t\t\t\t\t\tele.style.borderColor = \"#f86a3e\"\n\t\t\t\t\t\t\t\tele.style.borderWidth = \"2px\"\n\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t//alert.success(\"TBD: Coming in version 1.0.0\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}>\n\t\t\t\t\t\tworkflows made by other creators!\n\t\t\t\t\t,\n\t\t\t\ttutorial: \"discover_workflows\",\n\t\t\t},\n\t\t\t{\n\t\t\t\thtml: (\n\t\t\t\t\t {\n\t\t\t\t\t\tif (isCloud) {\n\t\t\t\t\t\t\tReactGA.event({\n\t\t\t\t\t\t\t\tcategory: \"getting-started\",\n\t\t\t\t\t\t\t\taction: `create_workflow_click`,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t}}>\n\t\t\t\t\t\tLearn to use Shuffle by  \n\t\t\t\t\t\t {setModalOpen(true)}}>\n\t\t\t\t\t\t\tcreating your first workflow \n\t\t\t\t\t\t and reading the docs.\n\t\t\t\t\t\n\t\t\t\t),\n\t\t\t\ttutorial: \"learn_shuffle\",\n\t\t\t},\n\t\t\t{\n\t\t\t\thtml: \n\t\t\t\t\t\n\t\t\t\t\t\tConfigure your organization name in the admin panel and invite your team\n\t\t\t\t\t,\n\t\t\t\ttutorial: \"configure_organization\",\n\t\t\t}\n\t\t]\n\t\n return (\n
\n\t\t\t\t {\n\t\t\t\t\t\tsetVideoViewOpen(false)\n\t\t\t\t\t}}\n\t\t\t\t\tPaperProps={{\n\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\tbackgroundColor: surfaceColor,\n\t\t\t\t\t\t\tcolor: \"white\",\n\t\t\t\t\t\t\tminWidth: 560,\n\t\t\t\t\t\t\tminHeight: 415,\n\t\t\t\t\t\t\ttextAlign: \"center\",\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t\t\t\tWelcome to Shuffle!\t\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\tsetVideoViewOpen(false)\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\n
\n\t\t\t\t\t\n\t\t\t\t\t\tGetting Started with Shuffle\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tWe provide everything you need to automate your operations - apps, default workflows, security dashboards and analytics that work well together.\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{steps.map((data, index) => {\n\t\t\t\t\t\t\tvar tutorialFound = false\n\t\t\t\t\t\t\tif (userdata.tutorials !== undefined && userdata.tutorials !== null && userdata.tutorials.length > 0 && data.tutorial !== undefined) {\n\t\t\t\t\t\t\t\tconst foundTutorial = userdata.tutorials.find(tutorial => tutorial === data.tutorial)\n\t\t\t\t\t\t\t\tif (foundTutorial !== undefined && foundTutorial !== null) {\n\t\t\t\t\t\t\t\t\tconsole.log(\"Found tutorial for \", data.tutorial)\n\t\t\t\t\t\t\t\t\ttutorialFound = true \n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (tutorialFound === false) {\n\t\t\t\t\t\t\t\t\tif (data.tutorial === \"discover_workflows\") {\n\t\t\t\t\t\t\t\t\t\tif (workflows.length > 0) {\n\t\t\t\t\t\t\t\t\t\t\tfor (var key in workflows) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst tmpworkflow = workflows[key]\n\t\t\t\t\t\t\t\t\t\t\t\tif (tmpworkflow.published_id !== undefined && tmpworkflow.published_id !== null && tmpworkflow.published_id.length > 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\ttutorialFound = true\n\t\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (data.tutorial === \"learn_shuffle\") {\n\t\t\t\t\t\t\t\t\t\t//tutorial: \"discover_workflows\",\n\t\t\t\t\t\t\t\t\t\tif (workflows.length > 0) {\n\t\t\t\t\t\t\t\t\t\t\ttutorialFound = true\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (data.tutorial === \"configure_organization\") {\n\t\t\t\t\t\t\t\t\t\tif (userdata.active_org.name !== userdata.username) {\n\t\t\t\t\t\t\t\t\t\t\ttutorialFound = true\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{tutorialFound ? \n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t:\n\t\t\t\t\t\t\t\t\t\t\t\t{index+1}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t{data.html}\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t})}\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tInvite your team\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tGet teammates, managers and customers involved.\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tInvite Users\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tNeed help?\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tWe help with automation, scaling, training and more. Get involved!\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tJoin Discord community\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t{/*\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tNeed assistance? Ask our support team (it's free!).\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t*/}\n\t\t\t\t\t
\n {/*\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
{workflows.length}
\n\t\t\t\t\t\t\t\t\t
ACTIVE WORKFLOWS
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
{workflows.length}
\n\t\t\t\t\t\t\t\t\t
AVAILABE WORKFLOWS
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
{workflows.length}
\n\t\t\t\t\t\t\t\t\t
NOTIFICATIONS
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t*/}\n\n {/*\n\t\t\t\t\tchipRenderer={({ value, isFocused, isDisabled, handleClick, handleRequestDelete }, key) => {\n\t\t\t\t\t\tconsole.log(\"VALUE: \", value)\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{value}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)\n\t\t\t\t\t}}\n\t\t\t\t\t*/}\n\t\t\t\t\t{/*\n
\n
\n \n \n Learn more about Workflows\n \n \n
\n
\n {\n addFilter(chip);\n }}\n onDelete={(_, index) => {\n removeFilter(index);\n }}\n />\n
\n
\n {workflowButtons}\n
\n
\n
\n {actionImageList !== undefined &&\n actionImageList !== null &&\n actionImageList.length > 0 ? (\n \n {actionImageList.map((data, index) => {\n if (\n data.large_image === undefined ||\n data.large_image === null ||\n data.large_image.length === 0\n ) {\n return null;\n }\n\n if (data.app_name.toLowerCase() === \"shuffle tools\") {\n data.large_image = theme.palette.defaultImage;\n }\n\n\t\t\t\t\t\t\t\tif (firstLoad) {\n\t\t\t\t\t\t\t\t\tappDelay += 75\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tappDelay = 0\n\t\t\t\t\t\t\t\t}\n\n return (\n\t\t\t\t\t\t\t\t\t\n \n {\n console.log(\"FILTER: \", data);\n addFilter(data.app_name);\n }}\n >\n \n \n \n \n
\n \n \n \n \n\t\t\t\t\t\t\t\t\t\n );\n })}\n
\n ) : null}\n {view === \"grid\" ? (\n \n\t\t\t\t\t\t\t\n \t\n\t\t\t\t\t\t\t\n {filteredWorkflows.map((data, index) => {\n \t\t\t\t\t\t\tif (firstLoad) {\n\t\t\t\t\t\t\t\t\tworkflowDelay += 75\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tworkflowDelay = 0\n\t\t\t\t\t\t\t\t}\n\n return (\n\t\t\t\t\t\t\t\t\t\n \t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n \t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t)\n })}\n \n ) : (\n \n )}\n\n
\n\t\t\t\t\t*/}\n
\n
\n );\n };\n\n const importWorkflowsFromUrl = (url) => {\n console.log(\"IMPORT WORKFLOWS FROM \", downloadUrl);\n\n const parsedData = {\n url: url,\n field_3: downloadBranch || \"master\",\n };\n\n if (field1.length > 0) {\n parsedData[\"field_1\"] = field1;\n }\n\n if (field2.length > 0) {\n parsedData[\"field_2\"] = field2;\n }\n\n alert.success(\"Getting specific workflows from your URL.\");\n fetch(globalUrl + \"/api/v1/workflows/download_remote\", {\n method: \"POST\",\n mode: \"cors\",\n headers: {\n Accept: \"application/json\",\n },\n body: JSON.stringify(parsedData),\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status === 200) {\n alert.success(\"Successfully loaded workflows from \" + downloadUrl);\n setTimeout(() => {\n getAvailableWorkflows();\n }, 1000);\n }\n\n return response.json();\n })\n .then((responseJson) => {\n if (!responseJson.success) {\n if (responseJson.reason !== undefined) {\n alert.error(\"Failed loading: \" + responseJson.reason);\n } else {\n alert.error(\"Failed loading\");\n }\n }\n })\n .catch((error) => {\n alert.error(error.toString());\n });\n };\n\n const handleGithubValidation = () => {\n importWorkflowsFromUrl(downloadUrl);\n setLoadWorkflowsModalOpen(false);\n };\n\n const workflowDownloadModalOpen = loadWorkflowsModalOpen ? (\n {}}\n PaperProps={{\n style: {\n backgroundColor: surfaceColor,\n color: \"white\",\n minWidth: \"800px\",\n minHeight: \"320px\",\n },\n }}\n >\n \n
\n Load workflows from github repo\n
\n \n upload.click()}\n >\n \n \n \n
\n
\n
\n \n Repository (supported: github, gitlab, bitbucket)\n setDownloadUrl(e.target.value)}\n placeholder=\"https://github.com/frikky/shuffle-apps\"\n fullWidth\n />\n \n Branch (default value is \"master\"):\n \n
\n setDownloadBranch(e.target.value)}\n placeholder=\"master\"\n fullWidth\n />\n
\n \n Authentication (optional - private repos etc):\n \n
\n setField1(e.target.value)}\n type=\"username\"\n placeholder=\"Username / APIkey (optional)\"\n fullWidth\n />\n setField2(e.target.value)}\n type=\"password\"\n placeholder=\"Password (optional)\"\n fullWidth\n />\n
\n
\n \n setLoadWorkflowsModalOpen(false)}\n color=\"primary\"\n >\n Cancel\n \n {\n handleGithubValidation();\n }}\n color=\"primary\"\n >\n Submit Submit\n \n \n \n ) : null;\n\n const loadedCheck =\n isLoaded && isLoggedIn && workflowDone ? (\n
\n\t\t\t\t{/*\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t*/}\n 1366 ? 1366 : 1200,\n margin: \"auto\",\n padding: 20,\n }}\n onDrop={uploadFile}\n >\n \n \n {modalView}\n {deleteModal}\n {exportVerifyModal}\n {publishModal}\n {workflowDownloadModalOpen}\n
\n ) : (\n \n \n Loading Workflows\n
\n );\n\n // Maybe use gridview or something, idk\n return
{loadedCheck}
;\n};\n\nexport default GettingStarted;\n","export default __webpack_public_path__ + \"static/media/webhook.ea3be945.png\";","const data = [\n {\n selector: \"node\",\n css: {\n label: \"data(label)\",\n \"text-valign\": \"center\",\n \"font-family\":\n \"Segoe UI, Tahoma, Geneva, Verdana, sans-serif, sans-serif\",\n \"font-weight\": \"lighter\",\n \"margin-right\": \"10px\",\n \"font-size\": \"18px\",\n width: \"80px\",\n height: \"80px\",\n color: \"white\",\n padding: \"10px\",\n margin: \"5px\",\n \"border-width\": \"1px\",\n \"text-margin-x\": \"10px\",\n \"z-index\": 5001,\n },\n },\n {\n selector: \"edge\",\n css: {\n \"target-arrow-shape\": \"triangle\",\n \"target-arrow-color\": \"grey\",\n \"curve-style\": \"unbundled-bezier\",\n label: \"data(label)\",\n \"text-margin-y\": \"-15px\",\n width: \"5px\",\n color: \"white\",\n \"line-fill\": \"linear-gradient\",\n \"line-gradient-stop-positions\": [\"0.0\", \"100\"],\n \"line-gradient-stop-colors\": [\"grey\", \"grey\"],\n \"z-index\": 5001,\n },\n },\n {\n selector: `node[type=\"ACTION\"]`,\n css: {\n shape: \"roundrectangle\",\n \"background-color\": \"#213243\",\n \"border-color\": \"#81c784\",\n \"background-width\": \"100%\",\n \"background-height\": \"100%\",\n \"border-radius\": \"5px\",\n \"z-index\": 5001,\n },\n },\n {\n selector: `node[type=\"COMMENT\"]`,\n css: {\n shape: \"roundrectangle\",\n color: \"data(color)\",\n width: \"data(width)\",\n height: \"data(height)\",\n padding: \"0px\",\n margin: \"0px\",\n \"background-color\": \"data(backgroundcolor)\",\n \"background-image\": \"data(backgroundimage)\",\n \"border-color\": \"#ffffff\",\n \"text-margin-x\": \"0px\",\n \"z-index\": 4999,\n \"border-radius\": \"5px\",\n \"background-opacity\": \"0.5\",\n\t\t\t\"text-wrap\": \"wrap\",\n },\n },\n {\n selector: `node[app_name=\"Shuffle Tools\"]`,\n css: {\n width: \"30px\",\n height: \"30px\",\n \"z-index\": 5000,\n \"font-size\": \"0px\",\n \"background-width\": \"75%\",\n \"background-height\": \"75%\",\n \"background-color\": \"data(iconBackground)\",\n \"background-fill\": \"data(fillstyle)\",\n \"background-gradient-direction\": \"to-right\",\n \"background-gradient-stop-colors\": \"data(fillGradient)\",\n },\n },\n {\n selector: `node[app_name=\"Testing\"]`,\n css: {\n width: \"30px\",\n height: \"30px\",\n \"z-index\": 5000,\n \"font-size\": \"0px\",\n },\n },\n {\n selector: `node[?small_image]`,\n css: {\n \"background-image\": \"data(small_image)\",\n \"text-halign\": \"right\",\n },\n },\n {\n selector: `node[?large_image]`,\n css: {\n \"background-image\": \"data(large_image)\",\n \"text-halign\": \"right\",\n },\n },\n {\n selector: `node[type=\"CONDITION\"]`,\n css: {\n shape: \"diamond\",\n \"border-color\": \"##FFEB3B\",\n padding: \"30px\",\n },\n },\n {\n selector: `node[type=\"eventAction\"]`,\n css: {\n \"background-color\": \"#edbd21\",\n },\n },\n {\n selector: `node[type=\"TRIGGER\"]`,\n css: {\n shape: \"octagon\",\n \"border-radius\": \"5px\",\n \"border-color\": \"orange\",\n \"background-color\": \"#213243\",\n \"background-width\": \"100%\",\n \"background-height\": \"100%\",\n },\n },\n {\n selector: `node[status=\"running\"]`,\n css: {\n \"border-color\": \"#81c784\",\n },\n },\n {\n selector: `node[status=\"stopped\"]`,\n css: {\n \"border-color\": \"orange\",\n },\n },\n {\n selector: 'node[type=\"mq\"]',\n css: {\n \"background-color\": \"#edbd21\",\n },\n },\n {\n selector: \"node[?isButton]\",\n css: {\n shape: \"ellipse\",\n width: \"15px\",\n height: \"15px\",\n \"z-index\": \"5002\",\n \"font-size\": \"0px\",\n border: \"1px solid rgba(255,255,255,0.9)\",\n \"background-image\": \"data(icon)\",\n \"background-color\": \"data(iconBackground)\",\n },\n },\n {\n selector: \"node[?isSuggestion]\",\n css: {\n shape: \"ellipse\",\n width: \"50px\",\n height: \"50px\",\n \"z-index\": \"5002\",\n \"font-size\": \"0px\",\n border: \"1px solid rgba(255,255,255,0.9)\",\n \"background-image\": \"data(large_image)\",\n \"background-color\": \"data(iconBackground)\",\n label: \"data(label)\",\n },\n },\n {\n selector: \"node[?canConnect]\",\n css: {\n \"border-color\": \"#f86a3e\",\n \"border-width\": \"10px\",\n \"z-index\": \"5002\",\n \"background-color\": \"#f86a3e\",\n },\n },\n {\n selector: \"node[?isDescriptor]\",\n css: {\n shape: \"ellipse\",\n \"border-color\": \"#80deea\",\n width: \"5px\",\n height: \"5px\",\n \"z-index\": \"5002\",\n \"font-size\": \"10px\",\n \"text-valign\": \"center\",\n \"text-halign\": \"center\",\n border: \"1px solid black\",\n \"margin-right\": \"0px\",\n \"text-margin-x\": \"0px\",\n \"background-color\": \"data(imageColor)\",\n \"background-image\": \"data(image)\",\n\t\t\tlabel: \"data(label)\",\n },\n },\n {\n selector: \"node[?isStartNode]\",\n css: {\n shape: \"ellipse\",\n \"border-color\": \"#80deea\",\n width: \"80px\",\n height: \"80px\",\n \"font-size\": \"18px\",\n \"background-width\": \"100%\",\n \"background-height\": \"100%\",\n },\n },\n {\n selector: \"node[!is_valid]\",\n css: {\n \"border-color\": \"red\",\n \"border-width\": \"10px\",\n },\n },\n {\n selector: \":selected\",\n css: {\n \"background-color\": \"#77b0d0\",\n \"border-color\": \"#77b0d0\",\n \"border-width\": \"20px\",\n },\n },\n {\n selector: \".skipped-highlight\",\n css: {\n \"background-color\": \"grey\",\n \"border-color\": \"grey\",\n \"border-width\": \"8px\",\n \"transition-property\": \"background-color\",\n \"transition-duration\": \"0.5s\",\n },\n },\n {\n selector: \".success-highlight\",\n css: {\n \"background-color\": \"#41dcab\",\n \"border-color\": \"#41dcab\",\n \"border-width\": \"5px\",\n \"transition-property\": \"background-color\",\n \"transition-duration\": \"0.5s\",\n },\n },\n {\n selector: \".hover-highlight\",\n css: {\n \"background-color\": \"#5f9265\",\n \"border-color\": \"#5f9265\",\n \"border-width\": \"5px\",\n \"transition-property\": \"background-color\",\n \"transition-duration\": \"0.5s\",\n },\n },\n {\n selector: \".failure-highlight\",\n css: {\n \"background-color\": \"#8e3530\",\n \"border-color\": \"#8e3530\",\n \"border-width\": \"5px\",\n \"transition-property\": \"background-color\",\n \"transition-duration\": \"0.5s\",\n },\n },\n {\n selector: \".not-executing-highlight\",\n css: {\n \"background-color\": \"grey\",\n \"border-color\": \"grey\",\n \"border-width\": \"5px\",\n \"transition-property\": \"#ffef47\",\n \"transition-duration\": \"0.25s\",\n },\n },\n {\n selector: \".executing-highlight\",\n css: {\n \"background-color\": \"#ffef47\",\n \"border-color\": \"#ffef47\",\n \"border-width\": \"8px\",\n \"transition-property\": \"border-width\",\n \"transition-duration\": \"0.25s\",\n },\n },\n {\n selector: \".awaiting-data-highlight\",\n css: {\n \"background-color\": \"#f4ad42\",\n \"border-color\": \"#f4ad42\",\n \"border-width\": \"5px\",\n \"transition-property\": \"border-color\",\n \"transition-duration\": \"0.5s\",\n },\n },\n {\n selector: \".shuffle-hover-highlight\",\n css: {\n \"background-color\": \"#f85a3e\",\n \"border-color\": \"#f85a3e\",\n \"border-width\": \"12px\",\n \"transition-property\": \"border-width\",\n \"transition-duration\": \"0.25s\",\n label: \"data(label)\",\n \"font-size\": \"18px\",\n color: \"white\",\n },\n },\n {\n selector: \"$node > node\",\n css: {\n \"padding-top\": \"10px\",\n \"padding-left\": \"10px\",\n \"padding-bottom\": \"10px\",\n \"padding-right\": \"10px\",\n },\n },\n {\n selector: \"edge.executing-highlight\",\n css: {\n width: \"5px\",\n \"target-arrow-color\": \"#ffef47\",\n \"line-color\": \"#ffef47\",\n \"transition-property\": \"line-color, width\",\n \"transition-duration\": \"0.25s\",\n },\n },\n {\n selector: `edge[?decorator]`,\n css: {\n width: \"1px\",\n \"line-style\": \"dashed\",\n \"line-fill\": \"linear-gradient\",\n \"target-arrow-color\": \"#f34079\",\n \"line-gradient-stop-positions\": [\"0.0\", \"100\"],\n \"line-gradient-stop-colors\": [\"#f86a3e\", \"#f34079\"],\n },\n },\n {\n selector: \"edge.success-highlight\",\n css: {\n width: \"5px\",\n \"target-arrow-color\": \"#41dcab\",\n \"line-color\": \"#41dcab\",\n \"transition-property\": \"line-color, width\",\n \"transition-duration\": \"0.5s\",\n \"line-fill\": \"linear-gradient\",\n \"line-gradient-stop-positions\": [\"0.0\", \"100\"],\n \"line-gradient-stop-colors\": [\"#41dcab\", \"#41dcab\"],\n },\n },\n {\n selector: \".eh-handle\",\n style: {\n \"background-color\": \"#337ab7\",\n width: \"1px\",\n height: \"1px\",\n shape: \"circle\",\n \"border-width\": \"1px\",\n \"border-color\": \"black\",\n },\n },\n {\n selector: \".eh-source\",\n style: {\n \"border-width\": \"3\",\n \"border-color\": \"#337ab7\",\n },\n },\n {\n selector: \".eh-target\",\n style: {\n \"border-width\": \"3\",\n \"border-color\": \"#337ab7\",\n },\n },\n {\n selector: \".eh-preview, .eh-ghost-edge\",\n style: {\n \"background-color\": \"#337ab7\",\n \"line-color\": \"#337ab7\",\n \"target-arrow-color\": \"#337ab7\",\n \"source-arrow-color\": \"#337ab7\",\n },\n },\n {\n selector: \"edge:selected\",\n css: {\n \"target-arrow-color\": \"#f85a3e\",\n },\n },\n {\n selector: `edge[?source_workflow]`,\n css: {\n \"background-opacity\": \"1\",\n \"font-size\": \"0px\",\n },\n },\n {\n selector: `node[?source_workflow]`,\n css: {\n \"background-opacity\": \"0\",\n \"font-size\": \"0px\",\n },\n },\n\t{\n\t\tselector: \"node:selected\",\n\t\tcss: {\n\t\t\t\"border-color\": \"#f86a3e\",\n\t\t\t\"border-width\": \"7px\",\n\t\t},\n\t},\n];\n\n//{\n//\tselector: 'edge[?hasErrors]',\n//\tcss: {\n//\t\t'target-arrow-color': '#991818',\n//\t\t'line-color': '#991818',\n//\t\t'line-style': 'dashed',\n//\t\t\"line-fill\": \"linear-gradient\",\n//\t\t\"line-gradient-stop-positions\": [\"0.0\", \"100\"],\n//\t\t\"line-gradient-stop-colors\": [\"#991818\", \"#991818\"],\n//\t},\n//},\n\nexport default data;\n","import React, {useState, useEffect, useLayoutEffect} from 'react';\r\nimport {\r\n\tCircularProgress, \r\n\tIconButton,\r\n\tDialog, \r\n\tModal, \r\n\tTooltip,\r\n\tDialogTitle, \r\n\tDialogContent,\r\n\tTypography,\r\n\tPaper,\r\n\tMenu,\r\n\tMenuItem,\r\n\tButton,\r\n} from '@material-ui/core';\r\n\r\nimport theme from '../theme.jsx';\r\nimport Checkbox from '@mui/material/Checkbox';\r\nimport { orange } from '@mui/material/colors';\r\nimport { isMobile } from \"react-device-detect\" \r\nimport NestedMenuItem from \"material-ui-nested-menu-item\";\r\nimport { GetParsedPaths, FindJsonPath } from \"../views/Apps.jsx\";\r\nimport { SetJsonDotnotation } from \"../views/AngularWorkflow.jsx\";\r\n\r\nimport {\r\n\tFullscreenExit as FullscreenExitIcon,\r\n\tExtension as ExtensionIcon, \r\n Apps as AppsIcon,\r\n FavoriteBorder as FavoriteBorderIcon,\r\n Schedule as ScheduleIcon,\r\n FormatListNumbered as FormatListNumberedIcon,\r\n\tSquareFoot as SquareFootIcon,\r\n Circle as CircleIcon,\r\n Add as AddIcon,\r\n\tPlayArrow as PlayArrowIcon, \r\n} from '@mui/icons-material';\r\n\r\nimport {\r\n\tAutoFixHigh as AutoFixHighIcon, \r\n\tCompressOutlined, \r\n\tQrCodeScannerOutlined,\r\n} from '@mui/icons-material';\r\n\r\nimport { validateJson } from \"../views/Workflows.jsx\";\r\nimport ReactJson from \"react-json-view\";\r\nimport PaperComponent from \"../components/PaperComponent.jsx\";\r\n\r\nimport CodeMirror from '@uiw/react-codemirror';\r\nimport 'codemirror/keymap/sublime';\r\nimport 'codemirror/addon/selection/mark-selection.js'\r\nimport 'codemirror/theme/gruvbox-dark.css';\r\nimport 'codemirror/theme/duotone-light.css';\r\nimport {indentWithTab} from \"@codemirror/commands\"\r\nimport { padding, textAlign } from '@mui/system';\r\nimport data from '../frameworkStyle.jsx';\r\nimport { useNavigate, Link, useParams } from \"react-router-dom\";\r\nimport { createTheme } from '@uiw/codemirror-themes';\r\n\r\nimport { tags } from '@lezer/highlight';\r\n\r\nconst liquidFilters = [\r\n\t{\"name\": \"Size\", \"value\": \"size\", \"example\": \"\"},\r\n\t{\"name\": \"Date\", \"value\": `date: \"%Y%m%d\"`, \"example\": `{{ \"now\" | date: \"%s\" }}`},\r\n\t{\"name\": \"Split\", \"value\": `split: \",\"`, \"example\": `{{ \"this,can,become,a,list\" | split: \",\" }}`},\r\n\t{\"name\": \"Join\", \"value\": `join: \",\"`, \"example\": `{{ [\"this\",\"can\",\"become\",\"a\",\"string\"] | join: \",\" }}`},\r\n\t{\"name\": \"Escape String\", \"value\": `{{ \\\"\\\"\\\"'string with weird'\" quotes\\\"\\\"\\\" | escape_string }}`, \"example\": ``},\r\n\t{\"name\": \"Flatten\", \"value\": `flatten`, \"example\": `{{ [1, [1, 2], [2, 3, 4]] | flatten }}`},\r\n\t{\"name\": \"URL encode\", \"value\": `url_encode`, \"example\": `{{ \"https://www.google.com/search?q=hello world\" | url_encode }}`},\r\n\t{\"name\": \"URL decode \", \"value\": `url_decode`, \"example\": `{{ \"https://www.google.com/search?q=hello%20world\" | url_decode }}`},\r\n\t{\"name\": \"base64_encode\", \"value\": `base64_encode`, \"example\": `{{ \"https://www.google.com/search?q=hello%20world\" | base64_encode }}`},\r\n\t{\"name\": \"base64_decode\", \"value\": `base64_decode`, \"example\": `{{ \"aGVsbG8K\" | base64_encode }}`},\r\n]\r\n\r\nconst mathFilters = [\r\n\t{\"name\": \"Plus\", \"value\": \"plus: 1\", \"example\": `{{ \"1\" | plus: 1 }}`},\r\n\t{\"name\": \"Minus\", \"value\": \"minus: 1\", \"example\": `{{ \"1\" | minus: 1 }}`},\r\n]\r\n\r\nconst pythonFilters = [\r\n\t{\"name\": \"Hello World\", \"value\": `{% python %}\\nprint(\"hello world\")\\n{% endpython %}`, \"example\": ``},\r\n\t{\"name\": \"Handle JSON\", \"value\": `{% python %}\\nimport json\\njsondata = json.loads(r\"\"\"$nodename\"\"\")\\n{% endpython %}`, \"example\": ``},\r\n]\r\n\r\n//const shuffleTheme = createTheme({\r\n// theme: 'dark',\r\n// settings: {\r\n// background: '#282828',\r\n// foreground: '#282828',\r\n// caret: '#5d00ff',\r\n// selection: '#036dd626',\r\n// selectionMatch: '#036dd626',\r\n// lineHighlight: '#8a91991a',\r\n// gutterBackground: '#282828',\r\n// gutterForeground: '#8a919966',\r\n//\t\tfontSize: 18,\r\n//\t\tborderRadius: theme.palette.borderRadius,\r\n//\t\tborder: `2px solid ${theme.palette.inputColor}`,\r\n// },\r\n// styles: [\r\n// { tag: tags.comment, color: '#787b8099' },\r\n// { tag: tags.variableName, color: '#0080ff' },\r\n// { tag: [tags.string, tags.special(tags.brace)], color: '#5c6166' },\r\n// { tag: tags.number, color: '#5c6166' },\r\n// { tag: tags.bool, color: '#5c6166' },\r\n// { tag: tags.null, color: '#5c6166' },\r\n// { tag: tags.keyword, color: '#5c6166' },\r\n// { tag: tags.operator, color: '#5c6166' },\r\n// { tag: tags.className, color: '#5c6166' },\r\n// { tag: tags.definition(tags.typeName), color: '#5c6166' },\r\n// { tag: tags.typeName, color: '#5c6166' },\r\n// { tag: tags.angleBracket, color: '#5c6166' },\r\n// { tag: tags.tagName, color: '#5c6166' },\r\n// { tag: tags.attributeName, color: '#5c6166' },\r\n// ],\r\n//});\r\n\r\nconst CodeEditor = (props) => {\r\n\tconst { \r\n\t\tglobalUrl, \r\n\t\tfieldCount, \r\n\t\tsetFieldCount, \r\n\t\tactionlist, \r\n\t\tchangeActionParameterCodeMirror, \r\n\t\texpansionModalOpen, \r\n\t\tsetExpansionModalOpen, \r\n\t\tcodedata, \r\n\t\tsetcodedata, \r\n\t\tisFileEditor, \r\n\t\trunUpdateText, \r\n\t\ttoolsAppId, \r\n\t\tparameterName, \r\n\t\tselectedAction ,\r\n\t\tworkflowExecutions,\r\n\t\tgetParents,\r\n\t} = props\r\n\r\n\tconst [localcodedata, setlocalcodedata] = React.useState(codedata === undefined || codedata === null || codedata.length === 0 ? \"\" : codedata);\r\n \t// const {codelang, setcodelang} = props\r\n\t\r\n\tconst [validation, setValidation] = React.useState(false);\r\n\tconst [expOutput, setExpOutput] = React.useState(\" \");\r\n\tconst [linewrap, setlinewrap] = React.useState(true);\r\n\tconst [codeTheme, setcodeTheme] = React.useState(\"gruvbox-dark\");\r\n\tconst [editorPopupOpen, setEditorPopupOpen] = React.useState(false);\r\n\r\n\tconst [currentCharacter, setCurrentCharacter] = React.useState(-1);\r\n\tconst [currentLine, setCurrentLine] = React.useState(-1);\r\n\r\n\tconst [variableOccurences, setVariableOccurences] = React.useState([]);\r\n\tconst [currentLocation, setCurrentLocation] = React.useState([]);\r\n\tconst [currentVariable, setCurrentVariable] = React.useState(\"\");\r\n\tconst [anchorEl, setAnchorEl] = React.useState(null);\r\n\tconst [anchorEl2, setAnchorEl2] = React.useState(null);\r\n\tconst [anchorEl3, setAnchorEl3] = React.useState(null);\r\n\tconst [mainVariables, setMainVariables] = React.useState([]);\r\n\tconst [availableVariables, setAvailableVariables] = React.useState([]);\r\n\r\n const [menuPosition, setMenuPosition] = useState(null);\r\n const [showAutocomplete, setShowAutocomplete] = React.useState(false);\r\n\r\n\tconst [isAiLoading, setIsAiLoading] = React.useState(false);\r\n\r\n\tconst baseResult = \"\"\r\n\tconst [executionResult, setExecutionResult] = useState({\r\n\t\t\"valid\": false,\t\t\r\n\t\t\"result\": baseResult,\r\n\t})\r\n\tconst [executing, setExecuting] = useState(false)\r\n\r\n\tconst liquidOpen = Boolean(anchorEl);\r\n\tconst mathOpen = Boolean(anchorEl2);\r\n\tconst pythonOpen = Boolean(anchorEl3);\r\n\r\n\tconst handleMenuClose = () => {\r\n\t\tsetShowAutocomplete(false);\r\n\r\n\t\tsetMenuPosition(null);\r\n\t}\r\n\r\n\tlet navigate = useNavigate();\r\n\r\n\tuseEffect(() => {\r\n\t\tvar allVariables = []\r\n\t\tvar tmpVariables = []\r\n\r\n\t\tif (actionlist === undefined || actionlist === null) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tfor(var i=0; i < actionlist.length; i++){\r\n\t\t\tallVariables.push('$'+actionlist[i].autocomplete.toLowerCase())\r\n\t\t\ttmpVariables.push('$'+actionlist[i].autocomplete.toLowerCase())\r\n\r\n\t\t\tvar parsedPaths = []\r\n\t\t\tif (typeof actionlist[i].example === \"object\") {\r\n\t\t\t\tparsedPaths = GetParsedPaths(actionlist[i].example, \"\");\r\n\t\t\t}\r\n\r\n\t\t\tfor (var key in parsedPaths) {\r\n\t\t\t\tconst fullpath = \"$\"+actionlist[i].autocomplete.toLowerCase()+parsedPaths[key].autocomplete\r\n\t\t\t\tif (!allVariables.includes(fullpath)) {\r\n\t\t\t\t\tallVariables.push(fullpath)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tsetAvailableVariables(allVariables)\r\n\t\tsetMainVariables(tmpVariables)\r\n\t}, [])\r\n\r\n\tconst aiSubmit = (value, inputAction) => {\r\n\t\tif (value === undefined || value === \"\") {\r\n\t\t\tconsole.log(\"No value input!\")\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tsetIsAiLoading(true)\r\n\r\n\t\t// Time to construct this huh... Hmm\r\n\t\tvar AppContext = []\r\n\t\tif (inputAction !== undefined && inputAction !== null && getParents !== undefined && getParents !== null && workflowExecutions !== undefined && workflowExecutions !== null) {\r\n\t\t\tconst parents = getParents(inputAction)\r\n\r\n\t\t\tconsole.log(\"Parents: \", parents)\r\n\t\t\tvar actionlist = []\r\n\t\t\tif (parents.length > 1) {\r\n\t\t\t\tfor (let [key,keyval] in Object.entries(parents)) {\r\n\t\t\t\t\tconst item = parents[key];\r\n\t\t\t\t\tif (item.label === \"Execution Argument\") {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar exampledata = item.example === undefined || item.example === null ? \"\" : item.example;\r\n\t\t\t\t\t// Find previous execution and their variables\r\n\t\t\t\t\t//exampledata === \"\" &&\r\n\t\t\t\t\tif (workflowExecutions.length > 0) {\r\n\t\t\t\t\t\t// Look for the ID\r\n\t\t\t\t\t\tconst found = false;\r\n\t\t\t\t\t\tfor (let [key,keyval] in Object.entries(workflowExecutions)) {\r\n\t\t\t\t\t\t\tif (workflowExecutions[key].results === undefined || workflowExecutions[key].results === null) {\r\n\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tvar foundResult = workflowExecutions[key].results.find((result) => result.action.id === item.id);\r\n\t\t\t\t\t\t\tif (foundResult === undefined || foundResult === null) {\r\n\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (foundResult.result !== undefined && foundResult.result !== null) {\r\n\t\t\t\t\t\t\t\tfoundResult = foundResult.result\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tconst valid = validateJson(foundResult, true)\r\n\t\t\t\t\t\t\tif (valid.valid) {\r\n\t\t\t\t\t\t\t\tif (valid.result.success === false) {\r\n\t\t\t\t\t\t\t\t\t//console.log(\"Skipping success false autocomplete\")\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\texampledata = valid.result;\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\texampledata = foundResult;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// 1. Take\r\n\t\t\t\t\tconst itemlabelComplete = item.label === null || item.label === undefined ? \"\" : item.label.split(\" \").join(\"_\");\r\n\r\n\t\t\t\t\tconst actionvalue = {\r\n\t\t\t\t\t\tapp_name: item.app_name,\r\n\t\t\t\t\t\taction_name: item.name,\r\n\t\t\t\t\t\tlabel: item.label,\r\n\r\n\t\t\t\t\t\ttype: \"action\",\r\n\t\t\t\t\t\tid: item.id,\r\n\t\t\t\t\t\tname: item.label,\r\n\t\t\t\t\t\tautocomplete: itemlabelComplete,\r\n\t\t\t\t\t\texample: exampledata,\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tactionlist.push(actionvalue);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar fixedResults = []\r\n\t\t\tfor (var i = 0; i < actionlist.length; i++) {\r\n\t\t\t\tconst item = actionlist[i];\r\n\t\t\t\tconst responseFix = SetJsonDotnotation(item.example, \"\") \r\n\t\t\t\t\r\n\t\t\t\t// Check if json\r\n\t\t\t\tconst validated = validateJson(responseFix)\r\n\t\t\t\tvar exampledata = responseFix;\r\n\t\t\t\tif (validated.valid) {\r\n\t\t\t\t\texampledata = JSON.stringify(validated.result)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tAppContext.push({\r\n\t\t\t\t\t\"app_name\": item.app_name,\r\n\t\t\t\t\t\"action_name\": item.action_name,\r\n\t\t\t\t\t\"label\": item.label,\r\n\t\t\t\t\t\"example\": exampledata,\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar conversationData = {\r\n\t\t\t\"query\": value,\r\n\t\t\t\"output_format\": \"action\",\r\n\t\t\t\"app_context\": AppContext,\r\n\t\t}\r\n\r\n\t\tif (inputAction !== undefined) {\r\n\t\t\tconsole.log(\"Add app context! This should them get parameters directly\")\r\n\t\t\tconversationData.output_format = \"action_parameters\"\r\n\r\n\t\t\tconversationData.app_id = inputAction.app_id\r\n\t\t\tconversationData.app_name = inputAction.app_name\r\n\t\t\tconversationData.action_name = inputAction.name\r\n\t\t\tconversationData.parameters = inputAction.parameters\r\n\t\t}\r\n\r\n\t\tfetch(`${globalUrl}/api/v1/conversation`, {\r\n\t\t\tmethod: \"POST\",\r\n\t\t\theaders: {\r\n\t\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\t\tAccept: \"application/json\",\r\n\t\t\t},\r\n\t\t\tbody: JSON.stringify(conversationData),\r\n\t\t\tcredentials: \"include\",\r\n\t\t})\r\n\t\t.then((response) => {\r\n\t\t\tif (response.status !== 200) {\r\n\t\t\t\tconsole.log(\"Status not 200 for stream results :O!\");\r\n\t\t\t}\r\n\r\n\t\t\treturn response.json();\r\n\t\t})\r\n\t\t.then((responseJson) => {\r\n\t\t\tconsole.log(\"Conversation response: \", responseJson)\r\n\t\t\tsetIsAiLoading(false)\r\n\t\t\tif (responseJson.success === false) {\r\n\t\t\t\tif (responseJson.reason !== undefined) {\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\tif (inputAction !== undefined) {\r\n\t\t\t\tconsole.log(\"In input action! Should check params if they match, and add suggestions\")\r\n\r\n\t\t\t\tif (responseJson.parameters === undefined || responseJson.parameters.length === 0) {\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor (let respParam of responseJson.parameters) {\r\n\t\t\t\t\tif (respParam.name !== parameterName) {\r\n\t\t\t\t\t\tcontinue\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (respParam.value === \"\") {\r\n\t\t\t\t\t\tbreak\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tsetlocalcodedata(respParam.value)\r\n\t\t\t\t\tbreak\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t})\r\n\t\t.catch((error) => {\r\n\t\t\tsetIsAiLoading(false)\r\n\t\t\tconsole.log(\"Conv response error: \", error);\r\n\t\t});\r\n\t}\r\n\r\n\tconst autoFormat = (input) => {\r\n\t\t// Check if it's default too\r\n\t\tif (validation !== true) {\r\n\r\n\t\t\t// Should try to automatically fix this input\r\n\t\t\tconsole.log(\"Running AI input fixer\")\r\n\t\t\tif (aiSubmit !== undefined && parameterName !== undefined && selectedAction !== undefined) {\r\n\r\n\t\t\t\t// Should remove params from selectedAction that aren't parameterName \r\n\t\t\t\tvar tmpAction = JSON.parse(JSON.stringify(selectedAction))\r\n\t\t\t\tvar tmpParams = selectedAction.parameters.filter((param) => param.name === parameterName)\r\n\r\n\t\t\t\tvar aiMsg = `Make it valid for action ${tmpAction.label} with parameter ${parameterName}: `\r\n\t\t\t\tif (tmpParams.length > 0) {\r\n\t\t\t\t\taiMsg += tmpParams[0].value\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\tif (localcodedata.startsWith(\"//\")) {\r\n\t\t\t\t\taiMsg = localcodedata\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttmpAction.parameters = tmpParams\r\n\t\t\t\tconsole.log(\"Parameters: \", tmpParams.length)\r\n\r\n\t\t\t\taiSubmit(aiMsg, tmpAction)\r\n\t\t\t}\r\n\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tinput = JSON.stringify(JSON.parse(input), null, 4)\r\n\t\t} catch (e) {\r\n\t\t\tconsole.log(\"Failed magic JSON stringification: \", e)\r\n\t\t}\r\n\r\n\t\tif (input !== localcodedata) {\r\n\t\t\tsetlocalcodedata(input)\r\n\t\t}\r\n\t}\r\n\r\n\tconst findIndex = (line, loc) => {\r\n\t\t// var temp_arr = []\r\n\t\t// for(var i=0; i {\r\n\t\tif (inputvariable === undefined || inputvariable === null) {\r\n\t\t\treturn inputvariable\r\n\t\t}\r\n\r\n\t\tif (!inputvariable.includes(\".\")) {\r\n\t\t\treturn inputvariable\r\n\t\t}\r\n\r\n\t\tconst itemsplit = inputvariable.split(\".\")\r\n\t\tvar newitem = []\r\n\t\tvar removedIndexes = 0\r\n\t\tfor (var key in itemsplit) {\r\n\t\t\tvar tmpitem = itemsplit[key]\r\n\r\n\t\t\t// Makes sure #0 and # are same, as we only visualize first one anyway\r\n\t\t\tif (tmpitem.startsWith(\"#\")) {\r\n\t\t\t\tremovedIndexes += tmpitem.length-1\r\n\t\t\t\ttmpitem = \"#\"\r\n\t\t\t}\r\n\r\n\t\t\tnewitem.push(tmpitem)\r\n\t\t}\r\n\r\n\t\tconsole.log(\"Fixed item: \", newitem, \"removed length: \", removedIndexes)\r\n\r\n\t\treturn newitem.join(\".\")\r\n\t\t//return inputvariable\r\n\t}\r\n\r\n\tconst highlight_variables = (value) => {\r\n\t\t// value.markText({line:0, ch:2}, {line:0, ch:8}, {\"css\": \"background-color: #f85a3e; border-radius: 4px; color: white\"})\r\n\t\t// value.markText({line:0, ch:13}, {line:0, ch:15}, {\"css\": \"background-color: #f85a3e; border-radius: 4px; color: white\"})\r\n\t\t// value.markText({line:0, ch:19}, {line:0, ch:26}, {\"css\": \"background-color: #f85a3e; border-radius: 4px; color: white\"})\r\n\t\t// value.markText({line:0, ch:31}, {line:0, ch:35}, {\"css\": \"background-color: #f85a3e; border-radius: 4px; color: white\"})\r\n\t\t// value.markText({line:0, ch:69}, {line:0, ch:73}, {\"css\": \"background-color: #f85a3e; border-radius: 4px; color: white\"})\r\n\r\n\t\t// var code_variables = value.getValue().match(/[$]{1}([a-zA-Z0-9_-]+\\.?){1}([a-zA-Z0-9#_-]+\\.?){0,}/g)\r\n\t\t// console.log(code_variables)\r\n\t\t\r\n\t\t// var regex = /[$]{1}([a-zA-Z0-9_-]+\\.?){1}([a-zA-Z0-9#_-]+\\.?){0,}/g\r\n\t\t// var code_variables_loc = regex.exec(value.getValue())\r\n\t\t// console.log(code_variables_loc)\r\n\t\t// while ((code_variables_loc = regex.exec(value.getValue())) != null) {\r\n\t\t// \tconsole.log(code_variables_loc);\r\n\t\t// }\r\n\t\t// var code_variables_loc = regex.exec(value.getValue())\r\n\t\t// console.log(code_variables_loc)\r\n\r\n\t\tvar code_lines = localcodedata.split('\\n')\r\n\t\tfor (var i = 0; i < code_lines.length; i++){\r\n\t\t\tvar current_code_line = code_lines[i]\r\n\t\t\t// console.log(current_code_line)\r\n\r\n\t\t\tvar variable_occurence = current_code_line.match(/[\\\\]{0,1}[$]{1}([a-zA-Z0-9_-]+\\.?){1}([a-zA-Z0-9#_-]+\\.?){0,}/g)\r\n\r\n\t\t\tif (variable_occurence === null || variable_occurence === undefined) {\r\n\t\t\t\t//console.log(\"No variables found. Returning\")\r\n\t\t\t\tcontinue\r\n\t\t\t}\r\n\r\n\t\t\tvar new_occurences = []\r\n\t\t\tfor (var key in variable_occurence) {\r\n\t\t\t\tif (variable_occurence[key][0] !== \"\\\\\") {\r\n\t\t\t\t\tnew_occurences.push(variable_occurence[key])\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvariable_occurence = new_occurences.valueOf()\r\n\t\t\t//console.log(\"Match2: \", variable_occurence)\r\n\t\t\t// console.log(variable_occurence)\r\n\t\t\t// console.log()\r\n\r\n\t\t\t// for (var j = 0; j < actionlist.length; j++) {\r\n\t\t\t// \tif(found[i].slice(1,).toLowerCase() === actionlist[j].autocomplete.toLowerCase()){\r\n\t\t\t// \t\tinput = input.replace(found[i], JSON.stringify(actionlist[j].example));\r\n\t\t\t// \t\tconsole.log(input)\r\n\t\t\t// \t\tconsole.log(actionlist[j].example)\r\n\t\t\t// \t}\r\n\t\t\t// \tconsole.log(actionlist[j].autocomplete);\r\n\t\t\t// }\r\n\r\n\t\t\t// Finds occurences of dollar signs\r\n\t\t\tvar dollar_occurence = []\r\n\t\t\tfor(var ch = 0; ch < current_code_line.length; ch++){\r\n\t\t\t\tif (current_code_line[ch] === '$' && (ch === 0 || current_code_line[ch-1] !== \"\\\\\")) {\r\n\t\t\t\t\tdollar_occurence.push(ch)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//console.log(dollar_occurence)\r\n\r\n\t\t\tvar dollar_occurence_len = []\r\n\t\t\ttry{\r\n\t\t\t\tfor(var occ = 0; occ < variable_occurence.length; occ++){\r\n\t\t\t\t\tdollar_occurence_len.push(variable_occurence[occ].length)\r\n\t\t\t\t}\r\n\t\t\t} catch (e) {}\r\n\r\n\t\t\t//console.log(\"VARIABLES: \", availableVariables)\r\n\r\n\r\n\t\t\ttry{\r\n\t\t\t\tif (variable_occurence.length === 0) {\r\n\t\t\t\t\t//value.markText({line:i, ch:0}, {line:i, ch:code_lines[i].length-1}, {\"css\": \"background-color: #282828; border-radius: 0px; color: #b8bb26\"})\r\n\t\t\t\t\t//value.markText({line:i, ch:0}, {line:i, ch:code_lines[i].length-1}, {\"css\": \"background-color: #; border-radius: 0px; color: inherit\"})\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// console.log(variable_occurence)\r\n\t\t\t\tfor (var occ = 0; occ < variable_occurence.length; occ++){\r\n\t\t\t\t\t// value.markText({line:i, ch:dollar_occurence[occ]}, {line:i, ch:dollar_occurence_len[occ]+dollar_occurence[occ]}, {\"css\": \"background-color: #8b8e26; border-radius: 4px; color: white\"})\r\n\t\t\t\t\t// var correctVariable = actionlist.find(action => action.autocomplete.toLowerCase() === variable_occurence[occ].slice(1,).toLowerCase())\r\n\t\t\t\t\tconst fixedVariable = fixVariable(variable_occurence[occ])\r\n\t\t\t\t\tvar correctVariable = availableVariables.includes(fixedVariable)\r\n\t\t\t\t\tif(!correctVariable) {\r\n\t\t\t\t\t\tvalue.markText({line:i, ch:dollar_occurence[occ]}, {line:i, ch:dollar_occurence_len[occ]+dollar_occurence[occ]}, {\"css\": \"background-color: rgb(248, 106, 62, 0.9); padding-top: 2px; padding-bottom: 2px; color: white\"})\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse{\r\n\t\t\t\t\t\tvalue.markText({line:i, ch:dollar_occurence[occ]}, {line:i, ch:dollar_occurence_len[occ]+dollar_occurence[occ]}, {\"css\": \"background-color: #8b8e26; padding-top: 2px; padding-bottom: 2px; color: white\"})\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// console.log(correctVariables)\r\n\t\t\t\t}\r\n\t\t\t} catch (e) {\r\n\t\t\t\tconsole.log(\"Error in color highlighting: \", e)\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// function findlocation(arr) {\r\n\t// \tfor(var i=0; i {\r\n\t\t// var updatedCode = localcodedata.slice(0,index) + \"$\" + str + localcodedata.slice(index+currentVariable.length+1,)\r\n\t\t// setlocalcodedata(updatedCode)\r\n\t\t// setEditorPopupOpen(false)\r\n\t\t// setCurrentLocation(0)\r\n\t\t// console.log(index)\r\n\t\t// console.log(currentLocation)\r\n\r\n\t\tvar code_lines = localcodedata.split('\\n')\r\n\t\tvar parsedVariable = currentVariable\r\n\t\tif (currentVariable === undefined || currentVariable === null) {\r\n\t\t\tconsole.log(\"Location: \", currentLocation)\r\n\t\t\tparsedVariable= \"$\"\r\n\t\t}\r\n\r\n\t\tcode_lines[currentLine] = code_lines[currentLine].slice(0,currentLocation[1]) + \"$\" + swapVariable + code_lines[currentLine].slice(currentLocation[1]+parsedVariable.length,)\r\n\t\t// console.log(code_lines)\r\n\t\tvar updatedCode = code_lines.join('\\n')\r\n\t\t// console.log(updatedCode)\r\n\t\tsetlocalcodedata(updatedCode)\r\n\t}\r\n\r\n\tconst expectedOutput = (input) => {\r\n\t\t\r\n\t\t//const found = input.match(/[$]{1}([a-zA-Z0-9_-]+\\.?){1}([a-zA-Z0-9#_-]+\\.?){0,}/g)\r\n\t\tconst found = input.match(/[$]{1}([a-zA-Z0-9_-]+\\.?){1}([a-zA-Z0-9#_-]+\\.?){0,}/g)\r\n\r\n\t\tconsole.log(\"FOUND: \", found)\r\n\r\n\r\n\t\t// Whelp this is inefficient af. Single loop pls\r\n\t\t// When the found array is empty.\r\n\t\tif (found !== null && found !== undefined) {\r\n\t\t\ttry { \r\n\t\t\t\tfor (var i = 0; i < found.length; i++) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\t// For found specifically, should replace .#\\d with .# with regex\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t//found[i] = found[i].toLowerCase()\r\n\t\t\t\t\t\tconst fixedVariable = fixVariable(found[i])\r\n\t\t\t\t\t\t//var correctVariable = availableVariables.includes(fixedVariable)\r\n\r\n\t\t\t\t\t\t// \r\n\t\t\t\t\t\tvar valuefound = false\r\n\t\t\t\t\t\tfor (var j = 0; j < actionlist.length; j++) {\r\n\t\t\t\t\t\t\tif(fixedVariable.slice(1,).toLowerCase() === actionlist[j].autocomplete.toLowerCase()){\r\n\t\t\t\t\t\t\t\tvaluefound = true \r\n\r\n\t\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\t\tif (typeof actionlist[j].example === \"object\") {\r\n\t\t\t\t\t\t\t\t\t\tinput = input.replace(found[i], JSON.stringify(actionlist[j].example), -1);\r\n\r\n\t\t\t\t\t\t\t\t\t} else if (actionlist[j].example.trim().startsWith(\"{\") || actionlist[j].example.trim().startsWith(\"[\")) {\r\n\t\t\t\t\t\t\t\t\t\tinput = input.replace(found[i], JSON.stringify(actionlist[j].example), -1);\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\tinput = input.replace(found[i], actionlist[j].example, -1)\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t} catch (e) { \r\n\t\t\t\t\t\t\t\t\tinput = input.replace(found[i], actionlist[j].example, -1)\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t// Couldn't find the correct example value\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (!valuefound && availableVariables.includes(fixedVariable)) {\r\n\t\t\t\t\t\t\tvar shouldbreak = false\r\n\t\t\t\t\t\t\tfor (var k=0; k < actionlist.length; k++){\r\n\t\t\t\t\t\t\t\tvar parsedPaths = []\r\n\t\t\t\t\t\t\t\tif (typeof actionlist[k].example === \"object\") {\r\n\t\t\t\t\t\t\t\t\tparsedPaths = GetParsedPaths(actionlist[k].example, \"\");\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tfor (var key in parsedPaths) {\r\n\t\t\t\t\t\t\t\t\tconst fullpath = \"$\"+actionlist[k].autocomplete.toLowerCase()+parsedPaths[key].autocomplete\r\n\t\t\t\t\t\t\t\t\tif (fullpath === fixedVariable) {\r\n\t\t\t\t\t\t\t\t\t\t//if (actionlist[k].example === undefined) {\r\n\t\t\t\t\t\t\t\t\t\t//\tactionlist[k].example = \"TMP\"\r\n\t\t\t\t\t\t\t\t\t\t//}\r\n\r\n\t\t\t\t\t\t\t\t\t\tvar new_input = \"\"\r\n\t\t\t\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\t\t\t\tnew_input = FindJsonPath(fullpath, actionlist[k].example)\r\n\t\t\t\t\t\t\t\t\t\t} catch (e) {\r\n\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"ERR IN INPUT: \", e)\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t//console.log(\"Got output for: \", fullpath, new_input, actionlist[k].example, typeof new_input)\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (typeof new_input === \"object\") {\r\n\t\t\t\t\t\t\t\t\t\t\tnew_input = JSON.stringify(new_input)\r\n\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\tif (typeof new_input === \"string\") {\r\n\t\t\t\t\t\t\t\t\t\t\t\tnew_input = new_input\r\n\t\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"NO TYPE? \", typeof new_input)\r\n\t\t\t\t\t\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tnew_input = new_input.toString()\r\n\t\t\t\t\t\t\t\t\t\t\t\t} catch (e) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tnew_input = \"\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t//console.log(\"FOUND2: \", fixedVariable, actionlist[j].example)\r\n\t\t\t\t\t\t\t\t\t\tinput = input.replace(fixedVariable, new_input, -1)\r\n\t\t\t\t\t\t\t\t\t\tinput = input.replace(found[i], new_input, -1)\r\n\r\n\t\t\t\t\t\t\t\t\t\t//} catch (e) {\r\n\t\t\t\t\t\t\t\t\t\t//\tinput = input.replace(found[i], actionlist[k].example)\r\n\t\t\t\t\t\t\t\t\t\t//}\r\n\r\n\t\t\t\t\t\t\t\t\t\tshouldbreak = true \r\n\t\t\t\t\t\t\t\t\t\tbreak\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tif (shouldbreak) {\r\n\t\t\t\t\t\t\t\t\tbreak\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} catch (e) {\r\n\t\t\t\t\t\tconsole.log(\"Replace error: \", e)\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} catch (e) {\r\n\t\t\t\t//console.log(\"Outer replace error: \", e)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst tmpValidation = validateJson(input.valueOf())\r\n\t\t//setValidation(true)\r\n\t\tif (tmpValidation.valid === true) {\r\n\t\t\tsetValidation(true)\r\n\t\t\tsetExpOutput(tmpValidation.result)\r\n\t\t} else {\r\n\t\t\tsetExpOutput(input.valueOf())\r\n\t\t\tsetValidation(false)\r\n\t\t}\r\n\t}\r\n\r\n const handleItemClick = (values) => {\r\n\t\tif (\r\n\t\t\tvalues === undefined ||\r\n\t\t\tvalues === null ||\r\n\t\t\tvalues.length === 0\r\n\t\t) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar toComplete = localcodedata.trim().endsWith(\"$\") ? values[0].autocomplete : \"$\" + values[0].autocomplete;\r\n\r\n\t\ttoComplete = toComplete.toLowerCase().replaceAll(\" \", \"_\");\r\n\t\tfor (var key in values) {\r\n\t\t\tif (key == 0 || values[key].autocomplete.length === 0) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\ttoComplete += values[key].autocomplete;\r\n\t\t}\r\n\r\n\t\tsetlocalcodedata(localcodedata+toComplete)\r\n\t\tsetMenuPosition(null)\r\n\t}\r\n\r\n\tconst handleClick = (item) => {\r\n\t\tif (item === undefined || item.value === undefined || item.value === null) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tif (!item.value.includes(\"{%\") && !item.value.includes(\"{{\")) {\r\n\t\t\tsetlocalcodedata(localcodedata+\" | \"+item.value+\" }}\")\r\n\t\t} else {\r\n\t\t\tsetlocalcodedata(localcodedata+item.value)\r\n\t\t}\r\n\r\n\t\tsetAnchorEl(null)\r\n\t\tsetAnchorEl2(null)\r\n\t\tsetAnchorEl3(null)\r\n\t}\r\n\r\n\tconst executeSingleAction = (inputdata) => {\r\n\t\t//if (serverside === true) {\r\n\t\t//\treturn\r\n\t\t//}\r\n\t\r\n\t\tif (validation === true) {\r\n\t\t\tinputdata = JSON.stringify(inputdata)\r\n\t\t}\r\n\r\n\t\t// Shuffle Tools 1.2.0 (in most cases?)\r\n\t\tconst appid = toolsAppId !== undefined && toolsAppId !== null && toolsAppId.length > 0 ? toolsAppId : \"3e2bdf9d5069fe3f4746c29d68785a6a\"\r\n\r\n\t\tconst actiondata = {\"description\":\"Repeats the call parameter\",\"id\":\"\",\"name\":\"repeat_back_to_me\",\"label\":\"\",\"node_type\":\"\",\"environment\":\"\",\"sharing\":false,\"private_id\":\"\",\"public_id\":\"\",\"app_id\": appid,\"tags\":null,\"authentication\":[],\"tested\":false,\"parameters\":[{\"description\":\"The message to repeat\",\"id\":\"\",\"name\":\"call\",\"example\":\"REPEATING: Hello world\",\"value\":inputdata,\"multiline\":true,\"options\":null,\"action_field\":\"\",\"variant\":\"STATIC_VALUE\",\"required\":true,\"configuration\":false,\"tags\":null,\"schema\":{\"type\":\"string\"},\"skip_multicheck\":false,\"value_replace\":null,\"unique_toggled\":false,\"autocompleted\":false}],\"execution_variable\":{\"description\":\"\",\"id\":\"\",\"name\":\"\",\"value\":\"\"},\"returns\":{\"description\":\"\",\"example\":\"\",\"id\":\"\",\"schema\":{\"type\":\"string\"}},\"authentication_id\":\"\",\"example\":\"\",\"auth_not_required\":false,\"source_workflow\":\"\",\"run_magic_output\":false,\"run_magic_input\":false,\"execution_delay\":0,\"app_name\":\"Shuffle Tools\",\"app_version\":\"1.2.0\",\"selectedAuthentication\":{}}\r\n\r\n\t\tsetExecutionResult({\r\n\t\t\t\"valid\": false,\t\t\r\n\t\t\t\"result\": baseResult,\r\n\t\t\t\"errors\": [],\r\n\t\t})\r\n\r\n\t\tsetExecuting(true)\r\n\r\n\t\tfetch(`${globalUrl}/api/v1/apps/${appid}/execute`, {\r\n\t\t\tmethod: 'POST',\r\n\t\t\theaders: {\r\n\t\t\t\t'Content-Type': 'application/json',\r\n\t\t\t\t'Accept': 'application/json',\r\n\t\t\t},\r\n\t\t\tbody: JSON.stringify(actiondata),\r\n\t\t\tcredentials: \"include\",\r\n\t\t})\r\n\t\t.then((response) => {\r\n\t\t\tif (response.status !== 200) {\r\n\t\t\t\tconsole.log(\"Status not 200 for stream results :O!\")\r\n\t\t\t}\r\n\r\n\t\t\treturn response.json()\r\n\t\t})\r\n\t\t.then((responseJson) => {\r\n\t\t\t//console.log(\"RESPONSE: \", responseJson)\r\n\t\t\tvar newResult = {}\r\n\t\t\tif (responseJson.success === true && responseJson.result !== null && responseJson.result !== undefined && responseJson.result.length > 0) {\r\n\t\t\t\tconst result = responseJson.result.slice(0, 50)+\"...\"\r\n\t\t\t\t//alert.info(\"SUCCESS: \"+result)\r\n\r\n\t\t\t\tconst validate = validateJson(responseJson.result)\r\n\t\t\t\tnewResult = validate\r\n\t\t\t} else if (responseJson.success === false && responseJson.reason !== undefined && responseJson.reason !== null) {\r\n\t\t\t\talert.error(responseJson.reason)\r\n\t\t\t\tnewResult = {\"valid\": false, \"result\": responseJson.reason}\r\n\t\t\t} else if (responseJson.success === true) {\r\n\t\t\t\tnewResult = {\"valid\": false, \"result\": \"Couldn't finish execution. Please fill all the required fields, and retry the execution.\"}\r\n\t\t\t} else {\r\n\t\t\t\tnewResult = {\"valid\": false, \"result\": \"Couldn't finish execution (2). Please fill all the required fields, and validate the execution.\"}\r\n\t\t\t}\r\n\r\n\t\t\tif (responseJson.errors !== undefined && responseJson.errors !== null && responseJson.errors.length > 0) {\r\n\t\t\t\tnewResult.errors = responseJson.errors\r\n\t\t\t}\r\n\r\n\t\t\tsetExecutionResult(newResult)\r\n\t\t\tsetExecuting(false)\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\t//alert.error(\"Execution error: \"+error.toString())\r\n\t\t\tconsole.log(\"error: \", error)\r\n\t\t\tsetExecuting(false)\r\n\t\t})\r\n\t}\r\n\r\n\treturn (\r\n\t\t {\r\n\t\t\t\tconsole.log(\"In closer\")\r\n\r\n\t\t\t\tif (changeActionParameterCodeMirror !== undefined) {\r\n\t\t\t\t\tchangeActionParameterCodeMirror({target: {value: \"\"}}, fieldCount, localcodedata)\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconsole.log(\"No action called changeActionParameterCodeMirror in code editor\")\r\n\t\t\t\t}\r\n\t\t\t\t//setExpansionModalOpen(false)\r\n\t\t\t}}\r\n\t\t\tPaperComponent={PaperComponent}\r\n\t\t\tPaperProps={{\r\n\t\t\t\tstyle: {\r\n\t\t\t\t\tzIndex: 12501,\r\n\t\t\t\t\tcolor: \"white\",\r\n\t\t\t\t\tminWidth: isMobile ? \"100%\" : isFileEditor ? 650 : 1200,\r\n\t\t\t\t\tmaxWidth: isMobile ? \"100%\" : isFileEditor ? 650 : 1200,\r\n\t\t\t\t\tminHeight: isMobile ? \"100%\" : 720,\r\n\t\t\t\t\tmaxHeight: isMobile ? \"100%\" : 720,\r\n\t\t\t\t\tborder: theme.palette.defaultBorder,\r\n\t\t\t\t\tpadding: isMobile ? \"25px 10px 25px 10px\" : 25,\r\n\t\t\t\t\tbackgroundColor: theme.palette.surfaceColor,\r\n\t\t\t\t},\r\n\t\t\t}}\r\n\t\t>\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t{ isFileEditor ? \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tFile Editor\r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\t\r\n\t\t\t\t\t:\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tCode Editor\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tautoFormat(localcodedata) \r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{isAiLoading ? \r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t}\r\n\r\n\t\t\r\n\t\t\t\t\t{ isFileEditor ? null :\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tsetAnchorEl(event.currentTarget);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\tFilters \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tsetAnchorEl(null);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tMenuListProps={{\r\n\t\t\t\t\t\t\t\t'aria-labelledby': 'basic-button',\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{liquidFilters.map((item, index) => {\r\n\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\thandleClick(item)\r\n\t\t\t\t\t\t\t\t\t}}>{item.name}\r\n\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tsetAnchorEl2(event.currentTarget);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\tMath \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tsetAnchorEl2(null);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tMenuListProps={{\r\n\t\t\t\t\t\t\t\t'aria-labelledby': 'basic-button',\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{mathFilters.map((item, index) => {\r\n\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\thandleClick(item)\r\n\t\t\t\t\t\t\t\t\t}}>{item.name}\r\n\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tsetAnchorEl3(event.currentTarget);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\tPython\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tsetAnchorEl3(null);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tMenuListProps={{\r\n\t\t\t\t\t\t\t\t'aria-labelledby': 'basic-button',\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{pythonFilters.map((item, index) => {\r\n\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\thandleClick(item)\r\n\t\t\t\t\t\t\t\t\t}}>{item.name}\r\n\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t \r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tsetMenuPosition({\r\n\t\t\t\t\t\t\t\t\ttop: event.pageY,\r\n\t\t\t\t\t\t\t\t\tleft: event.pageX,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t Autocomplete \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\thandleMenuClose();\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\topen={!!menuPosition}\r\n\t\t\t\t\t\t\tstyle={{\r\n\t\t\t\t\t\t\t\tcolor: \"white\",\r\n\t\t\t\t\t\t\t\tmarginTop: 2,\r\n\t\t\t\t\t\t\t\tmaxHeight: 650,\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{actionlist.map((innerdata) => {\r\n\t\t\t\t\t\t\t\tconst icon =\r\n\t\t\t\t\t\t\t\t\tinnerdata.type === \"action\" ? (\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t) : innerdata.type === \"workflow_variable\" ||\r\n\t\t\t\t\t\t\t\t\t\tinnerdata.type === \"execution_variable\" ? (\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\t\t\tconst handleExecArgumentHover = (inside) => {\r\n\t\t\t\t\t\t\t\t\tvar exec_text_field = document.getElementById(\r\n\t\t\t\t\t\t\t\t\t\t\"execution_argument_input_field\"\r\n\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\tif (exec_text_field !== null) {\r\n\t\t\t\t\t\t\t\t\t\tif (inside) {\r\n\t\t\t\t\t\t\t\t\t\t\texec_text_field.style.border = \"2px solid #f85a3e\";\r\n\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\texec_text_field.style.border = \"\";\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\t\tconst handleActionHover = (inside, actionId) => {\r\n\t\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\t\tconst handleMouseover = () => {\r\n\t\t\t\t\t\t\t\t\tif (innerdata.type === \"Execution Argument\") {\r\n\t\t\t\t\t\t\t\t\t\thandleExecArgumentHover(true);\r\n\t\t\t\t\t\t\t\t\t} else if (innerdata.type === \"action\") {\r\n\t\t\t\t\t\t\t\t\t\thandleActionHover(true, innerdata.id);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\t\tconst handleMouseOut = () => {\r\n\t\t\t\t\t\t\t\t\tif (innerdata.type === \"Execution Argument\") {\r\n\t\t\t\t\t\t\t\t\t\thandleExecArgumentHover(false);\r\n\t\t\t\t\t\t\t\t\t} else if (innerdata.type === \"action\") {\r\n\t\t\t\t\t\t\t\t\t\thandleActionHover(false, innerdata.id);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\t\tvar parsedPaths = [];\r\n\t\t\t\t\t\t\t\tif (typeof innerdata.example === \"object\") {\r\n\t\t\t\t\t\t\t\t\tparsedPaths = GetParsedPaths(innerdata.example, \"\");\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tconst coverColor = \"#82ccc3\"\r\n\t\t\t\t\t\t\t\t//menuPosition.left -= 50\r\n\t\t\t\t\t\t\t\t//menuPosition.top -= 250 \r\n\t\t\t\t\t\t\t\t//console.log(\"POS: \", menuPosition1)\r\n\t\t\t\t\t\t\t\tvar menuPosition1 = menuPosition\r\n\t\t\t\t\t\t\t\tif (menuPosition1 === null) {\r\n\t\t\t\t\t\t\t\t\tmenuPosition1 = {\r\n\t\t\t\t\t\t\t\t\t\t\"left\": 0,\r\n\t\t\t\t\t\t\t\t\t\t\"top\": 0,\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t} else if (menuPosition1.top === null || menuPosition1.top === undefined) {\r\n\t\t\t\t\t\t\t\t\tmenuPosition1.top = 0\r\n\t\t\t\t\t\t\t\t} else if (menuPosition1.left === null || menuPosition1.left === undefined) {\r\n\t\t\t\t\t\t\t\t\tmenuPosition1.left = 0\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t//console.log(\"POS1: \", menuPosition1)\r\n\r\n\t\t\t\t\t\t\t\treturn parsedPaths.length > 0 ? (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t{icon} {innerdata.name}\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tparentMenuOpen={!!menuPosition}\r\n\t\t\t\t\t\t\t\t\t\tstyle={{\r\n\t\t\t\t\t\t\t\t\t\t\tcolor: \"white\",\r\n\t\t\t\t\t\t\t\t\t\t\tminWidth: 250,\r\n\t\t\t\t\t\t\t\t\t\t\tmaxWidth: 250,\r\n\t\t\t\t\t\t\t\t\t\t\tmaxHeight: 50,\r\n\t\t\t\t\t\t\t\t\t\t\toverflow: \"hidden\",\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"CLICKED: \", innerdata);\r\n\t\t\t\t\t\t\t\t\t\t\tconsole.log(innerdata.example)\r\n\t\t\t\t\t\t\t\t\t\t\thandleItemClick([innerdata]);\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t//console.log(\"HOVER: \", pathdata);\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\thandleItemClick([innerdata]);\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{innerdata.name}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{parsedPaths.map((pathdata, index) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t// FIXME: Should be recursive in here\r\n\t\t\t\t\t\t\t\t\t\t\t\t//\r\n\t\t\t\t\t\t\t\t\t\t\t\tconst icon =\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tpathdata.type === \"value\" ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t) : pathdata.type === \"list\" ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t\t\t//\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\tconst indentation_count = (pathdata.name.match(/\\./g) || []).length+1\r\n\t\t\t\t\t\t\t\t\t\t\t\t//const boxPadding = pathdata.type === \"object\" ? \"10px 0px 0px 0px\" : 0\r\n\t\t\t\t\t\t\t\t\t\t\t\tconst boxPadding = 0 \r\n\t\t\t\t\t\t\t\t\t\t\t\tconst namesplit = pathdata.name.split(\".\")\r\n\t\t\t\t\t\t\t\t\t\t\t\tconst newname = namesplit[namesplit.length-1]\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//console.log(\"HOVER: \", pathdata);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleItemClick([innerdata, pathdata]);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{Array(indentation_count).fill().map((subdata, subindex) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{icon} {newname} \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{pathdata.type === \"list\" ? {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\te.preventDefault()\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\te.stopPropagation()\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"INNER: \", innerdata, pathdata)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Removing .list from autocomplete\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar newname = pathdata.name\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (newname.length > 5) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewname = newname.slice(0, newname.length-5)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//selectedActionParameters[count].value += `{{ $${innerdata.name}.${newname} | size }}`\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//selectedAction.parameters[count].value = selectedActionParameters[count].value;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//setSelectedAction(selectedAction);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//setShowDropdown(false);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetMenuPosition(null);\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// innerdata.name\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// pathdata.name\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//handleItemClick([innerdata, newpathdata])\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//console.log(\"CLICK LENGTH!\")\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}} /> : null}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t handleMouseover()}\r\n\t\t\t\t\t\t\t\t\t\tonMouseOut={() => {\r\n\t\t\t\t\t\t\t\t\t\t\thandleMouseOut();\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\t\t\thandleItemClick([innerdata]);\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t{icon} {innerdata.name}\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t// console.log(value.getCursor())\r\n\t\t\t\t\t\t\t\tsetCurrentCharacter(value.getCursor().ch)\r\n\t\t\t\t\t\t\t\tsetCurrentLine(value.getCursor().line)\r\n\t\t\t\t\t\t\t\t// console.log(value.getCursor().ch, value.getCursor().line)\r\n\t\t\t\t\t\t\t\tfindIndex(value.getCursor().line, value.getCursor().ch)\r\n\t\t\t\t\t\t\t\thighlight_variables(value)\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tonChange={(value) => {\r\n\t\t\t\t\t\t\t\t//console.log(\"Value: '\", value.getValue(), \"'\")\r\n\r\n\t\t\t\t\t\t\t\tsetlocalcodedata(value.getValue())\r\n\t\t\t\t\t\t\t\texpectedOutput(value.getValue())\r\n\r\n\t\t\t\t\t\t\t\tif(value.display.input.prevInput.startsWith('$') || value.display.input.prevInput.endsWith('$')){\r\n\t\t\t\t\t\t\t\t\tsetEditorPopupOpen(true)\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t// console.log(findIndex(value.getValue()))\r\n\t\t\t\t\t\t\t\t// highlight_variables(value)\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\textensions={[indentWithTab]}\r\n\t\t\t\t\t\t\toptions={{\r\n\t\t\t\t\t\t\t\tstyleSelectedText: true,\r\n\t\t\t\t\t\t\t\ttheme: codeTheme,\r\n\t\t\t\t\t\t\t\tkeyMap: 'sublime',\r\n\t\t\t\t\t\t\t\tmode: validation === true ? \"json\" : \"python\",\r\n\t\t\t\t\t\t\t\tlineWrapping: linewrap,\r\n\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t{/*editorPopupOpen ?\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{mainVariables.map((data, index) => {\r\n\t\t\t\t\t\t\t\t// console.log(data)\r\n\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\treplaceVariables(data.substring(1,))\r\n\t\t\t\t\t\t\t\t\t\t\t\t// console.log(currentCharacter, currentLine)\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\tstyle={{\r\n\t\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: 'transparent',\r\n\t\t\t\t\t\t\t\t\t\t\t\tcolor: 'white',\r\n\t\t\t\t\t\t\t\t\t\t\t\tborder: 'none',\r\n\t\t\t\t\t\t\t\t\t\t\t\tpadding: 7.5,\r\n\t\t\t\t\t\t\t\t\t\t\t\tcursor: 'pointer',\r\n\t\t\t\t\t\t\t\t\t\t\t\twidth: '100%',\r\n\t\t\t\t\t\t\t\t\t\t\t\ttextAlign: 'left'\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t{data.substring(0, 25)}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t: null*/}\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{/*\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tLine Wrap\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tif (linewrap) {\r\n\t\t\t\t\t\t\t\t\t\tsetlinewrap(false)\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tif (!linewrap){\r\n\t\t\t\t\t\t\t\t\t\tsetlinewrap(true)\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tdefaultChecked\r\n\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\tcolor: orange[600],\r\n\t\t\t\t\t\t\t\t\t'&.Mui-checked': {\r\n\t\t\t\t\t\t\t\t\t color: orange[800],\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tDark Theme\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tif (codeTheme === \"gruvbox-dark\") {\r\n\t\t\t\t\t\t\t\t\t\tsetcodeTheme(\"duotone-light\")\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tif (codeTheme === \"duotone-light\"){\r\n\t\t\t\t\t\t\t\t\t\tsetcodeTheme(\"gruvbox-dark\")\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tdefaultChecked\r\n\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\tcolor: orange[600],\r\n\t\t\t\t\t\t\t\t\t'&.Mui-checked': {\r\n\t\t\t\t\t\t\t\t\t color: orange[800],\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t*/}\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t{isFileEditor ? null : \r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t{isMobile ? null : \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\tExpected Output\r\n\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\texecuteSingleAction(expOutput)\r\n\t\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{executing ? : }\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t{isMobile ? null : \r\n\t\t\t\t\t\t\t\tvalidation === true ? \r\n\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t//handleReactJsonClipboard(copy);\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\tdisplayDataTypes={false}\r\n\t\t\t\t\t\t\t\t\t\tonSelect={(select) => {\r\n\t\t\t\t\t\t\t\t\t\t\t//HandleJsonCopy(validate.result, select, \"exec\");\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\tname={\"JSON autocompletion\"}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{expOutput}\r\n\t\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t{executionResult.valid === true ? \r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t//handleReactJsonClipboard(copy);\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tdisplayDataTypes={false}\r\n\t\t\t\t\t\t\t\t\tonSelect={(select) => {\r\n\t\t\t\t\t\t\t\t\t\t//HandleJsonCopy(validate.result, select, \"exec\");\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tname={\"Test result\"}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{executionResult.result.length > 0 ? \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\tTest output\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{executionResult.result}\r\n\t\t\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t: \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\tNo test output yet.\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t{executionResult.errors !== undefined && executionResult.errors !== null && executionResult.errors.length > 0 ?\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\tErrors ({executionResult.errors.length}): {executionResult.errors.join(\"\\n\")}\r\n\t\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t: null}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t}\r\n\t\t\t\t
\r\n\r\n\t\t\t\t{/* Flexbox stop */}\r\n\t\t\t
\r\n\r\n\r\n\t\t\t
\r\n\t\t\t\t {\r\n\t\t\t\t\t\tsetExpansionModalOpen(false);\r\n\t\t\t\t\t}}\r\n\t\t\t\t>\r\n\t\t\t\t\tCancel\r\n\t\t\t\t\r\n\t\t\t\t {\r\n\t\t\t\t\t\t// console.log(codedata)\r\n\t\t\t\t\t\t// console.log(fieldCount)\r\n\t\t\t\t\t\tif (isFileEditor === true){\r\n\t\t\t\t\t\t\trunUpdateText(localcodedata);\r\n\t\t\t\t\t\t\tsetcodedata(localcodedata);\r\n\t\t\t\t\t\t\tsetExpansionModalOpen(false)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\tchangeActionParameterCodeMirror(event, fieldCount, localcodedata)\r\n\t\t\t\t\t\tsetExpansionModalOpen(false)\r\n\t\t\t\t\t\tsetcodedata(localcodedata)}\r\n\t\t\t\t\t}}\r\n\t\t\t\t>\r\n\t\t\t\t\tDone\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t)\r\n}\r\n\r\nexport default CodeEditor;\r\n","import React, { useState, useEffect, useLayoutEffect } from \"react\";\nimport { makeStyles, createStyles } from \"@material-ui/core/styles\";\n\nimport { validateJson, GetIconInfo } from \"../views/Workflows.jsx\";\nimport { GetParsedPaths } from \"../views/Apps.jsx\";\nimport { sortByKey } from \"../views/AngularWorkflow.jsx\";\nimport { useTheme } from \"@material-ui/core/styles\";\nimport NestedMenuItem from \"material-ui-nested-menu-item\";\nimport { useAlert } from \"react-alert\";\nimport theme from '../theme.jsx';\n\nimport {\n\tButtonGroup,\n Popper,\n TextField,\n TextareaAutosize,\n Drawer,\n Button,\n Paper,\n Tabs,\n InputAdornment,\n Tab,\n ButtonBase,\n Tooltip,\n Select,\n MenuItem,\n Divider,\n Dialog,\n Modal,\n DialogActions,\n DialogTitle,\n InputLabel,\n DialogContent,\n FormControl,\n IconButton,\n Menu,\n Input,\n FormGroup,\n FormControlLabel,\n Typography,\n Checkbox,\n Breadcrumbs,\n CircularProgress,\n Switch,\n Fade,\n} from \"@material-ui/core\";\n\nimport { \n\tAutocomplete \n} from \"@material-ui/lab\";\n\nimport {\n HelpOutline as HelpOutlineIcon,\n Description as DescriptionIcon,\n GetApp as GetAppIcon,\n Search as SearchIcon,\n ArrowUpward as ArrowUpwardIcon,\n Visibility as VisibilityIcon,\n Done as DoneIcon,\n Close as CloseIcon,\n Error as ErrorIcon,\n FindReplace as FindreplaceIcon,\n ArrowLeft as ArrowLeftIcon,\n Cached as CachedIcon,\n DirectionsRun as DirectionsRunIcon,\n Add as AddIcon,\n Polymer as PolymerIcon,\n FormatListNumbered as FormatListNumberedIcon,\n Create as CreateIcon,\n PlayArrow as PlayArrowIcon,\n AspectRatio as AspectRatioIcon,\n MoreVert as MoreVertIcon,\n Apps as AppsIcon,\n Schedule as ScheduleIcon,\n FavoriteBorder as FavoriteBorderIcon,\n Pause as PauseIcon,\n Delete as DeleteIcon,\n AddCircleOutline as AddCircleOutlineIcon,\n Save as SaveIcon,\n KeyboardArrowLeft as KeyboardArrowLeftIcon,\n KeyboardArrowRight as KeyboardArrowRightIcon,\n ArrowBack as ArrowBackIcon,\n Settings as SettingsIcon,\n LockOpen as LockOpenIcon,\n ExpandMore as ExpandMoreIcon,\n VpnKey as VpnKeyIcon,\n\tAutoFixHigh as AutoFixHighIcon,\n Circle as CircleIcon,\n\tSquareFoot as SquareFootIcon,\n} from '@mui/icons-material';\n//} from \"@material-ui/icons\";\n\n\n//import CodeMirror from \"@uiw/react-codemirror\";\n//import \"codemirror/keymap/sublime\";\n//import \"codemirror/theme/gruvbox-dark.css\";\nimport ShuffleCodeEditor from \"../components/ShuffleCodeEditor.jsx\";\n\nconst useStyles = makeStyles({\n notchedOutline: {\n borderColor: \"#f85a3e !important\",\n },\n root: {\n \"& .MuiAutocomplete-listbox\": {\n border: \"2px solid grey\",\n color: \"white\",\n fontSize: 18,\n \"& li:nth-child(even)\": {\n backgroundColor: \"#CCC\",\n },\n \"& li:nth-child(odd)\": {\n backgroundColor: \"#FFF\",\n },\n },\n },\n inputRoot: {\n color: \"white\",\n // This matches the specificity of the default styles at https://github.com/mui-org/material-ui/blob/v4.11.3/packages/material-ui-lab/src/Autocomplete/Autocomplete.js#L90\n \"&:hover .MuiOutlinedInput-notchedOutline\": {\n borderColor: \"#f86a3e\",\n },\n },\n});\n\t\t\t\t\t\t\nconst openApiFieldDesc = \"Generated by OpenAPI body example\";\nconst ParsedAction = (props) => {\n const {\n workflow,\n\t\tfiles,\n setWorkflow,\n setAction,\n setSelectedAction,\n setUpdate,\n appActionArguments,\n selectedApp,\n workflowExecutions,\n setSelectedResult,\n selectedAction,\n setSelectedApp,\n setSelectedTrigger,\n setSelectedEdge,\n setCurrentView,\n cy,\n setAuthenticationModalOpen,\n setVariablesModalOpen,\n setCodeModalOpen,\n selectedNameChange,\n rightsidebarStyle,\n showEnvironment,\n selectedActionEnvironment,\n environments,\n setNewSelectedAction,\n appApiViewStyle,\n globalUrl,\n setSelectedActionEnvironment,\n requiresAuthentication,\n hideExtraTypes,\n scrollConfig,\n setScrollConfig,\n authenticationType,\n appAuthentication,\n getAppAuthentication,\n\t\tactionDelayChange,\n\t\tgetParents,\n\t\tisCloud,\n\t\tlastSaved,\n\t\tsetLastSaved,\n\t\tsetShowVideo,\n\t\ttoolsAppId,\n\t\taiSubmit,\n\t\t//expansionModalOpen,\n\t\t//setExpansionModalOpen,\n } = props;\n\n //const theme = useTheme();\n const classes = useStyles();\n const alert = useAlert()\n\n const [expansionModalOpen, setExpansionModalOpen] = React.useState(false);\n const [hideBody, setHideBody] = React.useState(true);\n const [activateHidingBodyButton, setActivateHidingBodyButton] = React.useState(false);\n\n\tconst [codedata, setcodedata] = React.useState(\"\");\n\tconst [fieldCount, setFieldCount] = React.useState(0);\n\tconst [hiddenDescription, setHiddenDescription] = React.useState(true);\n\n\n useEffect(() => {\n\t\tif (setLastSaved !== undefined) {\n\t\t\tsetLastSaved(false)\n\t\t}\n\t}, [expansionModalOpen])\n\n useEffect(() => {\n\t\tif (selectedAction.parameters !== null && selectedAction.parameters !== undefined) {\n\t\t\tconst paramcheck = selectedAction.parameters.find(param => param.name === \"body\")\n\t\t\t//console.log(\"LOADED! Change hideBody based on input? Action: \", selectedAction, paramcheck)\n\t\t\tif (paramcheck !== undefined && paramcheck !== null) {\n\t\t\t\tif (paramcheck.id === \"TOGGLED\"){ \n \t\t\t\tsetHideBody(false)\n \t\t\t\tsetActivateHidingBodyButton(false)\n\t\t\t\t} else {\n \t\t\t\tsetHideBody(true)\n\n\t\t\t\t\tif (paramcheck.id === \"UNTOGGLED\") {\n \t\t\t\t\tsetActivateHidingBodyButton(false)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}, [])\n\n const keywords = [\n \"len(\",\n \"lower(\",\n \"upper(\",\n \"trim(\",\n \"split(\",\n \"length(\",\n \"number(\",\n \"parse(\",\n \"join(\",\n ];\n\n const getApp = (appId, setApp) => {\n fetch(globalUrl + \"/api/v1/apps/\" + appId + \"/config?openapi=false\", {\n headers: {\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status === 200) {\n //alert.success(\"Successfully GOT app \"+appId)\n } else {\n alert.error(\"Failed getting app\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n console.log(\"RESPONSE: \", responseJson);\n\n const parsedapp =\n responseJson.app !== undefined && responseJson.app !== null\n ? JSON.parse(atob(responseJson.app))\n : {};\n console.log(\"PARSED: \", parsedapp);\n //data = parsedapp.body === undefined ? parsedapp : parsedapp.body\n\n if (\n setApp &&\n parsedapp.actions !== undefined &&\n parsedapp.actions !== null\n ) {\n console.log(\"Inside first if\");\n if (\n selectedApp.versions !== undefined &&\n selectedApp.versions !== null\n ) {\n parsedapp.versions = selectedApp.versions;\n }\n\n if (\n selectedApp.loop_versions !== undefined &&\n selectedApp.loop_versions !== null\n ) {\n parsedapp.loop_versions = selectedApp.loop_versions;\n }\n\n // Find authentication, and if it works?\n // If authentication has less OR more fields, it has to change\n //console.log(selected\n\n console.log(\"Inside first if2\");\n var foundAction = parsedapp.actions.find(\n (action) =>\n action.name.toLowerCase() === selectedAction.name.toLowerCase()\n );\n console.log(\"FOUNDACTION: \", foundAction);\n if (foundAction !== null && foundAction !== undefined) {\n var foundparams = [];\n for (let [paramkey,paramkeyval] in Object.entries(foundAction.parameters)) {\n const param = foundAction.parameters[paramkey];\n\n const foundParam = selectedAction.parameters.find(\n (item) => item.name.toLowerCase() === param.name.toLowerCase()\n );\n if (foundParam === undefined) {\n console.log(\"COULDNT find Param: \", param);\n } else {\n foundAction.parameters[paramkey] = foundParam;\n }\n //foundparams.push(param.name)\n }\n } else {\n alert.error(\"Couldn't find action \" + selectedAction.name);\n }\n\n selectedAction.errors = [];\n selectedAction.is_valid = true;\n\n // Updating params for the new action\n selectedAction.parameters = foundAction.parameters;\n selectedAction.app_id = appId;\n selectedAction.app_version = parsedapp.app_version;\n\n setSelectedAction(selectedAction);\n setSelectedApp(parsedapp);\n }\n })\n .catch((error) => {\n alert.error(error.toString());\n });\n };\n\n\n\n const defineStartnode = () => {\n if (cy === undefined) {\n return;\n }\n\n var oldstartnode = cy.getElementById(workflow.start);\n if (oldstartnode.length > 0) {\n oldstartnode[0].data(\"isStartNode\", false);\n var oldnodecnt = workflow.actions.findIndex(\n (a) => a.id === workflow.start\n );\n if (workflow.actions[oldnodecnt] !== undefined) {\n workflow.actions[oldnodecnt].isStartNode = false;\n }\n }\n\n var newstartnode = cy.getElementById(selectedAction.id);\n if (newstartnode.length > 0) {\n newstartnode[0].data(\"isStartNode\", true);\n var newnodecnt = workflow.actions.findIndex(\n (a) => a.id === selectedAction.id\n );\n console.log(\"NEW NODE CNT: \", newnodecnt);\n if (workflow.actions[newnodecnt] !== undefined) {\n workflow.actions[newnodecnt].isStartNode = true;\n console.log(workflow.actions[newnodecnt]);\n }\n }\n\n // Find branches with triggers as source nodes\n // Move these targets to be the new node\n // Set arrows pointing to new startnode with errors\n //for (var key in workflow.branches) {\n //\tvar item = workflow.branches[key]\n //\tif (item.destination_id === oldstartnode[0].data()[\"id\"]) {\n //\t\tvar curbranch = cy.getElementById(item.id)\n //\t\tif (curbranch.length > 0) {\n //\t\t\t//console.log(curbranch[0].data())\n //\t\t\t//curbranch[0].data(\"target\", selectedAction.id)\n //\t\t\t//curbranch[0].data(\"hasErrors\", true)\n //\t\t\t//workflow.branches[key].destination_id = selectedAction.id\n //\t\t\t//console.log(curbranch[0].data())\n //\t\t}\n //\t}\n //}\n\n setUpdate(\"start_node\" + selectedAction.id);\n workflow.start = selectedAction.id;\n setWorkflow(workflow);\n //setStartNode(selectedAction.id)\n };\n\n const AppActionArguments = (props) => {\n const [selectedActionParameters, setSelectedActionParameters] = React.useState([]);\n const [selectedVariableParameter, setSelectedVariableParameter] = React.useState(\"\");\n const [actionlist, setActionlist] = React.useState([]);\n const [jsonList, setJsonList] = React.useState([]);\n const [showDropdown, setShowDropdown] = React.useState(false);\n const [showDropdownNumber, setShowDropdownNumber] = React.useState(0);\n const [showAutocomplete, setShowAutocomplete] = React.useState(false);\n const [menuPosition, setMenuPosition] = useState(null);\n\n useEffect(() => {\n if (\n selectedActionParameters !== null &&\n selectedActionParameters.length === 0\n ) {\n if (\n selectedAction.parameters !== null &&\n selectedAction.parameters.length > 0\n ) {\n setSelectedActionParameters(selectedAction.parameters);\n }\n }\n\n if (\n (selectedVariableParameter === null ||\n selectedVariableParameter === undefined) &&\n workflow.workflow_variables !== null &&\n workflow.workflow_variables.length > 0\n ) {\n // FIXME - this is the bad thing\n setSelectedVariableParameter(workflow.workflow_variables[0].name);\n }\n\n if (actionlist.length === 0) {\n // FIXME: Have previous execution values in here\n\t\t\t\tif (workflowExecutions.length > 0) {\n\t\t\t\t\tfor (let [key,keyval] in Object.entries(workflowExecutions)) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tworkflowExecutions[key].execution_argument === undefined ||\n\t\t\t\t\t\t\tworkflowExecutions[key].execution_argument === null ||\n\t\t\t\t\t\t\tworkflowExecutions[key].execution_argument.length === 0 \n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst valid = validateJson(workflowExecutions[key].execution_argument)\n\t\t\t\t\t\tif (valid.valid) {\n\t\t\t\t\t\t\tactionlist.push({\n\t\t\t\t\t\t\t\ttype: \"Execution Argument\",\n\t\t\t\t\t\t\t\tname: \"Execution Argument\",\n\t\t\t\t\t\t\t\tvalue: \"$exec\",\n\t\t\t\t\t\t\t\thighlight: \"exec\",\n\t\t\t\t\t\t\t\tautocomplete: \"exec\",\n\t\t\t\t\t\t\t\texample: valid.result,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif (actionlist.length === 0) {\n\t\t\t\t\tactionlist.push({\n\t\t\t\t\t\ttype: \"Execution Argument\",\n\t\t\t\t\t\tname: \"Execution Argument\",\n\t\t\t\t\t\tvalue: \"$exec\",\n\t\t\t\t\t\thighlight: \"exec\",\n\t\t\t\t\t\tautocomplete: \"exec\",\n\t\t\t\t\t\texample: \"\",\n\t\t\t\t\t})\n\t\t\t\t}\n\n actionlist.push({\n type: \"Shuffle DB\",\n name: \"Shuffle DB\",\n value: \"$shuffle_cache\",\n highlight: \"shuffle_cache\",\n autocomplete: \"shuffle_cache\",\n example: \"\",\n })\n\n if (\n workflow.workflow_variables !== null &&\n workflow.workflow_variables !== undefined &&\n workflow.workflow_variables.length > 0\n ) {\n for (let [key,keyval] in Object.entries(workflow.workflow_variables)) {\n const item = workflow.workflow_variables[key];\n actionlist.push({\n type: \"workflow_variable\",\n name: item.name,\n value: item.value,\n id: item.id,\n autocomplete: `${item.name.split(\" \").join(\"_\")}`,\n example: item.value,\n });\n }\n }\n\n // FIXME: Add values from previous executions if they exist\n if (\n workflow.execution_variables !== null &&\n workflow.execution_variables !== undefined &&\n workflow.execution_variables.length > 0\n ) {\n for (let [key,keyval] in Object.entries(workflow.execution_variables)) {\n const item = workflow.execution_variables[key];\n actionlist.push({\n type: \"execution_variable\",\n name: item.name,\n value: item.value,\n id: item.id,\n autocomplete: `${item.name.split(\" \").join(\"_\")}`,\n example: \"\",\n });\n }\n }\n\n // Loops parent nodes' old results to fix autocomplete\n\t\t\t\tif (getParents !== undefined) {\n \tvar parents = getParents(selectedAction);\n\n \tif (parents.length > 1) {\n \t for (let [key,keyval] in Object.entries(parents)) {\n \t const item = parents[key];\n \t if (item.label === \"Execution Argument\") {\n \t continue;\n \t }\n\n \t var exampledata = item.example === undefined || item.example === null ? \"\" : item.example;\n \t // Find previous execution and their variables\n \t //exampledata === \"\" &&\n \t if (workflowExecutions.length > 0) {\n \t // Look for the ID\n \t const found = false;\n \t for (let [key,keyval] in Object.entries(workflowExecutions)) {\n \t if (\n \t workflowExecutions[key].results === undefined ||\n \t workflowExecutions[key].results === null\n \t ) {\n \t continue;\n \t }\n\n \t var foundResult = workflowExecutions[key].results.find(\n \t (result) => result.action.id === item.id\n \t );\n \t if (foundResult === undefined || foundResult === null) {\n \t continue;\n \t }\n\n\t\t\t\t\t\t\t\t\tif (foundResult.result !== undefined && foundResult.result !== null) {\n\t\t\t\t\t\t\t\t\t\tfoundResult = foundResult.result\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tconst valid = validateJson(foundResult)\n\t\t\t\t\t\t\t\t\tif (valid.valid) {\n\t\t\t\t\t\t\t\t\t\tif (valid.result.success === false) {\n\t\t\t\t\t\t\t\t\t\t\t//console.log(\"Skipping success false autocomplete\")\n\t\t\t\t\t\t\t\t\t\t} else {\n \t \texampledata = valid.result;\n \t \tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n \t } else {\n \t exampledata = foundResult;\n\t\t\t\t\t\t\t\t\t}\n \t }\n \t }\n\n \t // 1. Take\n \t const itemlabelComplete =\n \t item.label === null || item.label === undefined\n \t ? \"\"\n \t : item.label.split(\" \").join(\"_\");\n\n \t const actionvalue = {\n \t type: \"action\",\n \t id: item.id,\n \t name: item.label,\n \t autocomplete: itemlabelComplete,\n \t example: exampledata,\n \t };\n\n \t actionlist.push(actionvalue);\n \t }\n \t}\n\n\t\t\t\t\t//console.log(\"ACTIONLIST: \", actionlist)\n \tsetActionlist(actionlist);\n\t\t\t\t}\n }\n });\n\n\n\t\tconst calculateHelpertext = (input_data) => {\n\t\t\tvar helperText = \"\"\n\t\t\tvar looperText = \"\"\n\t\t\t//const found = input_data.match(/[$]{1}([a-zA-Z0-9_-]+\\.?){1}([a-zA-Z0-9#_-]+\\.?){0,}/g)\n\t\t\tvar found = input_data.match(/[\\\\]{0,1}[$]{1}([a-zA-Z0-9_-]+\\.?){1}([a-zA-Z0-9#_-]+\\.?){0,}/g)\n\n\t\t\tif (found !== null && found !== undefined) {\n\t\t\t\tvar new_occurences = []\n\t\t\t\tfor (let [key,keyval] in Object.entries(found)) {\n\t\t\t\t\tif (found[key][0] !== \"\\\\\") {\n\t\t\t\t\t\tnew_occurences.push(found[key])\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfound = new_occurences.valueOf()\n\t\t\t}\n\n\t\t\tif (found !== null) {\n\t\t\t\ttry {\n\t\t\t\t\t// When the found array is empty.\n\t\t\t\t\tfor (let i = 0; i < found.length; i++) {\n\t\t\t\t\t\tconst variableSplit = found[i].split(\".#\")\n\t\t\t\t\t\tif ((variableSplit.length-1) > 1) {\n\t\t\t\t\t\t\t//console.log(\"Larger than 1: \", variableSplit)\n\t\t\t\t\t\t\tif (looperText.length === 0) {\n\t\t\t\t\t\t\t\tlooperText += \"PS: Double looping (.#.#) may cause problems.\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar foundSlice = false\n\t\t\t\t\t\tfor (let j = 0; j < actionlist.length; j++) {\n\t\t\t\t\t\t\t//console.log(\"ACTION: \", found[i], actionlist[j])\n\t\t\t\t\t\t\t//console.log(\"ACTION :\", found[i].split(\".\")[0].slice(1,).toLowerCase(), actionlist[j].autocomplete.toLowerCase())\n\t\t\t\t\t\t\tif(found[i].split(\".\")[0].slice(1,).toLowerCase() == actionlist[j].autocomplete.toLowerCase()){\n\t\t\t\t\t\t\t\t//console.log(\"Found: \", found[i])\n\t\t\t\t\t\t\t\t// Validate path?\n\n\t\t\t\t\t\t\t\tfoundSlice = true\n\t\t\t\t\t\t\t}\t\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!foundSlice) {\n\t\t\t\t\t\t\tif (!helperText.includes(\"Invalid variables\")) {\n\t\t\t\t\t\t\t\thelperText+= \"Invalid variables: \"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\thelperText+= found[i] + \", \"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {\n\t\t\t\t\tconsole.log(\"Parsing error: \", e)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (looperText.length > 0) {\n\t\t\t\tif (helperText.length > 0) {\n\t\t\t\t\thelperText += \". \"\n\t\t\t\t}\n\n\t\t\t\thelperText += looperText\n\t\t\t}\n\n\t\t\treturn helperText\n\t\t}\n\n const changeActionParameter = (event, count, data, viewForceUpdate) => {\n\t\t\t//console.log(\"Action change: \", selectedAction, data)\n if (data.name.startsWith(\"${\") && data.name.endsWith(\"}\")) {\n // PARAM FIX - Gonna use the ID field, even though it's a hack\n const paramcheck = selectedAction.parameters.find((param) => param.name === \"body\");\n \n if (paramcheck !== undefined) {\n // Escapes all double quotes\n var toReplace = event.target.value.trim()\n\n\n\t\t\t\t\tif (!toReplace.startsWith(\"{\") && !toReplace.startsWith(\"[\")) {\n\t\t\t\t\t\ttoReplace = toReplace.replaceAll('\\\\\"', '\"').replaceAll('\"', '\\\\\"')\n\t\t\t\t\t}\n\n console.log(\"REPLACE WITH: \", toReplace);\n if (\n paramcheck[\"value_replace\"] === undefined ||\n paramcheck[\"value_replace\"] === null\n ) {\n paramcheck[\"value_replace\"] = [\n {\n key: data.name,\n value: toReplace,\n },\n ];\n\n console.log(\"IN IF: \", paramcheck);\n } else {\n const subparamindex = paramcheck[\"value_replace\"].findIndex(\n (param) => param.key === data.name\n );\n if (subparamindex === -1) {\n paramcheck[\"value_replace\"].push({\n key: data.name,\n value: toReplace,\n });\n } else {\n paramcheck[\"value_replace\"][subparamindex][\"value\"] = toReplace;\n }\n\n console.log(\"IN ELSE: \", paramcheck);\n }\n //console.log(\"PARAM: \", paramcheck)\n //if (paramcheck.id === undefined) {\n //\tconsole.log(\"Normal paramcheck\")\n //} else {\n //\tselectedActionParameters[count][\"value_replace\"] = paramcheck\n //\tselectedAction.parameters[count][\"value_replace\"] = paramcheck\n //}\n\n if (paramcheck[\"value_replace\"] === undefined) {\n selectedActionParameters[count][\"value_replace\"] = paramcheck;\n selectedAction.parameters[count][\"value_replace\"] = paramcheck;\n } else {\n selectedActionParameters[count][\"value_replace\"] =\n paramcheck[\"value_replace\"];\n selectedAction.parameters[count][\"value_replace\"] =\n paramcheck[\"value_replace\"];\n }\n console.log(\"RESULT: \", selectedAction);\n setSelectedAction(selectedAction);\n //setUpdate(Math.random())\n return;\n }\n }\n\n\n if (event.target.value[event.target.value.length - 1] === \"$\") {\n if (!showDropdown) {\n setShowAutocomplete(false);\n setShowDropdown(true);\n setShowDropdownNumber(count);\n }\n } else {\n if (showDropdown) {\n setShowDropdown(false);\n }\n }\n\n // bad detection mechanism probably\n if (event.target.value[event.target.value.length - 1] === \".\" && actionlist.length > 0) {\n console.log(\"GET THE LAST ARGUMENT FOR NODE!\");\n // THIS IS AN EXAMPLE OF SHOWING IT\n /*\n\n\t\t\t\tconst inputdata = {\"data\": \"1.2.3.4\", \"dataType\": \"4.5.6.6\"}\n\t\t\t\tsetJsonList(GetParsedPaths(inputdata, \"\"))\n\t\t\t\tif (!showDropdown) {\n\t\t\t\t\tsetShowAutocomplete(false)\n\t\t\t\t\tsetShowDropdown(true)\n\t\t\t\t\tsetShowDropdownNumber(count)\n\t\t\t\t}\n\t\t\t\tconsole.log(jsonList)\n\t\t\t\t*/\n\n // Search for the item backwards\n // 1. Reverse search backwards from . -> $\n // 2. Search the actionlist for the item\n // 3. Find the data for the specific item\n\n var curstring = \"\";\n var record = false;\n for (let [key,keyval] in Object.entries(selectedActionParameters[count].value)) {\n const item = selectedActionParameters[count].value[key];\n if (record) {\n curstring += item;\n }\n\n if (item === \"$\") {\n record = true;\n curstring = \"\";\n }\n }\n\n //console.log(\"CURSTRING: \", curstring)\n if (curstring.length > 0 && actionlist !== null) {\n // Search back in the action list\n curstring = curstring.split(\" \").join(\"_\").toLowerCase();\n var actionItem = actionlist.find(\n (data) =>\n data.autocomplete.split(\" \").join(\"_\").toLowerCase() === curstring\n );\n if (actionItem !== undefined) {\n console.log(\"Found item: \", actionItem);\n\n //actionItem.example = actionItem.example.trim()\n //actionItem.example = actionItem.example.split(\" None\").join(\" \\\"None\\\"\")\n //actionItem.example = actionItem.example.split(\"\\'\").join(\"\\\"\")\n\n var jsonvalid = true;\n try {\n const tmp = String(JSON.parse(actionItem.example));\n if (\n !actionItem.example.includes(\"{\") &&\n !actionItem.example.includes(\"[\")\n ) {\n jsonvalid = false;\n }\n } catch (e) {\n jsonvalid = false;\n }\n\n if (jsonvalid) {\n setJsonList(GetParsedPaths(JSON.parse(actionItem.example), \"\"));\n\n if (!showDropdown) {\n setShowAutocomplete(false);\n setShowDropdown(true);\n setShowDropdownNumber(count);\n }\n }\n }\n }\n } else {\n if (jsonList.length > 0) {\n setJsonList([]);\n }\n }\n\n //console.log(\"CHANGING ACTION COUNT !\")\n\t\t\tselectedActionParameters[count].autocompleted = false\n\t\t\tselectedAction.parameters[count].autocompleted = false \n selectedActionParameters[count].value = event.target.value;\n selectedAction.parameters[count].value = event.target.value;\n\n\t\t\tvar forceUpdate = false \n\t\t\tif (isCloud && (selectedAction.app_name === \"Shuffle Tools\" || selectedAction.app_name === \"email\") && (selectedAction.name === \"send_email_shuffle\" || selectedAction.name === \"send_sms_shuffle\") && data.name === \"apikey\") {\n\t\t\t\tconsole.log(\"APIKEY - this shouldn't show up!\")\n\t\t\t}\n\n\t\t\tif (selectedAction.app_name === \"Shuffle Tools\" && selectedAction.name === \"filter_list\" && data.name === \"input_list\") {\n\t\t\t\t//console.log(\"FILTER LIST!: \", event, count, data)\n\t\t\t\tconst parsedvalue = event.target.value\n\t\t\t\tif (parsedvalue.includes(\"#\")) {\n\t\t\t\t\tconst splitparsed = parsedvalue.split(\".#.\")\n\t\t\t\t\t//console.log(\"Cant contain #: \", splitparsed)\n\t\t\t\t\tif (splitparsed.length > 1) {\n\t\t\t\t\t\tdata.value = splitparsed[0]\n\n\t\t\t\t\t\tselectedActionParameters[count].value = splitparsed[0]\n\t\t\t\t\t\tselectedAction.parameters[count].value = splitparsed[0]\n\n\t\t\t\t\t\t//changeActionParameter({target: {value: splitparsed[1]}}, \n \tselectedActionParameters[1].value = splitparsed[1] \n \t\t\tselectedAction.parameters[1].value = splitparsed[1] \n\t\t\t\t\t\tforceUpdate = true\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n setSelectedAction(selectedAction);\n\t\t\tif (forceUpdate || viewForceUpdate === true) {\n\t\t\t\tsetUpdate(Math.random())\n\t\t\t}\n //setUpdate(event.target.value)\n };\n\n\t\t\n\t\tconst changeActionParameterCodeMirror = (event, count, data) => {\n\t\t\tif (data.startsWith(\"${\") && data.endsWith(\"}\")) {\n\t\t\t\t// PARAM FIX - Gonna use the ID field, even though it's a hack\n\t\t\t\tconst paramcheck = selectedAction.parameters.find(param => param.name === \"body\")\n\t\t\t\tif (paramcheck !== undefined) {\n\t\t\t\t\t// Escapes all double quotes\n\t\t\t\t\tconst toReplace = event.target.value.trim().replaceAll(\"\\\\\\\"\", \"\\\"\").replaceAll(\"\\\"\", \"\\\\\\\"\");\n\t\t\t\t\tconsole.log(\"REPLACE WITH: \", toReplace)\n\t\t\t\t\tif (paramcheck[\"value_replace\"] === undefined || paramcheck[\"value_replace\"] === null) {\n\t\t\t\t\t\tparamcheck[\"value_replace\"] = [{\n\t\t\t\t\t\t\t\"key\": data.name,\n\t\t\t\t\t\t\t\"value\": toReplace,\n\t\t\t\t\t\t}]\n\n\t\t\t\t\t\tconsole.log(\"IN IF: \", paramcheck)\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst subparamindex = paramcheck[\"value_replace\"].findIndex(param => param.key === data.name)\n\t\t\t\t\t\tif (subparamindex === -1) {\n\t\t\t\t\t\t\tparamcheck[\"value_replace\"].push({\n\t\t\t\t\t\t\t\t\"key\": data.name,\n\t\t\t\t\t\t\t\t\"value\": toReplace,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tparamcheck[\"value_replace\"][subparamindex][\"value\"] = toReplace \n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconsole.log(\"IN ELSE: \", paramcheck)\n\t\t\t\t\t}\n\t\t\t\t\t//console.log(\"PARAM: \", paramcheck)\n\t\t\t\t\t//if (paramcheck.id === undefined) {\n\t\t\t\t\t//\tconsole.log(\"Normal paramcheck\")\n\t\t\t\t\t//} else {\n\t\t\t\t\t//\tselectedActionParameters[count][\"value_replace\"] = paramcheck\n\t\t\t\t\t//\tselectedAction.parameters[count][\"value_replace\"] = paramcheck\n\t\t\t\t\t//}\n\n\t\t\t\t\tif (paramcheck[\"value_replace\"] === undefined) {\n\t\t\t\t\t\tselectedActionParameters[count][\"value_replace\"] = paramcheck\n\t\t\t\t\t\tselectedAction.parameters[count][\"value_replace\"] = paramcheck\n\t\t\t\t\t} else {\n\t\t\t\t\t\tselectedActionParameters[count][\"value_replace\"] = paramcheck[\"value_replace\"]\n\t\t\t\t\t\tselectedAction.parameters[count][\"value_replace\"] = paramcheck[\"value_replace\"]\n\t\t\t\t\t}\n\t\t\t\t\tconsole.log(\"RESULT: \", selectedAction)\n\t\t\t\t\tsetSelectedAction(selectedAction)\n\t\t\t\t\t//setUpdate(Math.random())\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (event.target.value[event.target.value.length-1] === \"$\") {\n\t\t\t\tif (!showDropdown) {\n\t\t\t\t\tsetShowAutocomplete(false)\n\t\t\t\t\tsetShowDropdown(true)\n\t\t\t\t\tsetShowDropdownNumber(count)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (showDropdown) {\n\t\t\t\t\tsetShowDropdown(false)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// bad detection mechanism probably\n\t\t\tif (event.target.value[event.target.value.length-1] === \".\" && actionlist.length > 0) {\n\t\t\t\tconsole.log(\"GET THE LAST ARGUMENT FOR NODE!\")\n\t\t\t\t// THIS IS AN EXAMPLE OF SHOWING IT \n\t\t\t\t/*\n\t\t\t\tconst inputdata = {\"data\": \"1.2.3.4\", \"dataType\": \"4.5.6.6\"}\n\t\t\t\tsetJsonList(GetParsedPaths(inputdata, \"\"))\n\t\t\t\tif (!showDropdown) {\n\t\t\t\t\tsetShowAutocomplete(false)\n\t\t\t\t\tsetShowDropdown(true)\n\t\t\t\t\tsetShowDropdownNumber(count)\n\t\t\t\t}\n\t\t\t\tconsole.log(jsonList)\n\t\t\t\t*/\n\n\t\t\t\t// Search for the item backwards\n\t\t\t\t// 1. Reverse search backwards from . -> $\n\t\t\t\t// 2. Search the actionlist for the item \n\t\t\t\t// 3. Find the data for the specific item\n\n\t\t\t\tvar curstring = \"\"\n\t\t\t\tvar record = false\n\t\t\t\tfor (let [key,keyval] in Object.entries(selectedActionParameters[count].value)) {\n\t\t\t\t\tconst item = selectedActionParameters[count].value[key]\n\t\t\t\t\tif (record) {\n\t\t\t\t\t\tcurstring += item\n\t\t\t\t\t}\n\n\t\t\t\t\tif (item === \"$\") {\n\t\t\t\t\t\trecord = true\n\t\t\t\t\t\tcurstring = \"\"\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t//console.log(\"CURSTRING: \", curstring)\n\t\t\t\tif (curstring.length > 0 && actionlist !== null) {\n\t\t\t\t\t// Search back in the action list\n\t\t\t\t\tcurstring = curstring.split(\" \").join(\"_\").toLowerCase()\n\t\t\t\t\tvar actionItem = actionlist.find(data => data.autocomplete.split(\" \").join(\"_\").toLowerCase() === curstring)\n\t\t\t\t\tif (actionItem !== undefined) {\n\t\t\t\t\t\tconsole.log(\"Found item: \", actionItem)\n\n\t\t\t\t\t\t//actionItem.example = actionItem.example.trim()\n\t\t\t\t\t\t//actionItem.example = actionItem.example.split(\" None\").join(\" \\\"None\\\"\")\n\t\t\t\t\t\t//actionItem.example = actionItem.example.split(\"\\'\").join(\"\\\"\")\n\n\t\t\t\t\t\tvar jsonvalid = true\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst tmp = String(JSON.parse(actionItem.example))\n\t\t\t\t\t\t\tif (!actionItem.example.includes(\"{\") && !actionItem.example.includes(\"[\")) {\n\t\t\t\t\t\t\t\tjsonvalid = false\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tjsonvalid = false\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (jsonvalid) {\n\t\t\t\t\t\t\tsetJsonList(GetParsedPaths(JSON.parse(actionItem.example), \"\"))\n\n\t\t\t\t\t\t\tif (!showDropdown) {\n\t\t\t\t\t\t\t\tsetShowAutocomplete(false)\n\t\t\t\t\t\t\t\tsetShowDropdown(true)\n\t\t\t\t\t\t\t\tsetShowDropdownNumber(count)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (jsonList.length > 0) {\n\t\t\t\t\tsetJsonList([])\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tselectedActionParameters[count].autocompleted = false\n\t\t\tselectedAction.parameters[count].autocompleted = false \n\t\t\tselectedActionParameters[count].value = data\n\t\t\tselectedAction.parameters[count].value = data\n\t\t\tsetSelectedAction(selectedAction)\n\t\t\t//setUpdate(Math.random())\n\t\t\t//setUpdate(event.target.value)\n\t\t}\n\n\n const changeActionParameterVariable = (fieldvalue, count) => {\n //console.log(\"CALLED THIS ONE WITH VALUE!\", fieldvalue)\n //if (selectedVariableParameter === fieldvalue) {\n //\treturn\n //}\n\n setSelectedVariableParameter(fieldvalue);\n\n selectedActionParameters[count].action_field = fieldvalue;\n selectedAction.parameters = selectedActionParameters;\n\n setSelectedApp(selectedApp);\n setSelectedAction(selectedAction);\n setUpdate(fieldvalue);\n };\n\n // Sets ACTION_RESULT things\n const changeActionParameterActionResult = (fieldvalue, count) => {\n //cy.nodes().forEach(function( ele ) {\n //\tif (ele.data()[\"label\"] === fieldvalue) {\n //\t\tselectedActionParameters[count].action_field = ele.id()\n //\t\treturn\n //\t}\n //});\n\n selectedActionParameters[count].action_field = fieldvalue;\n selectedAction.parameters = selectedActionParameters;\n\n // FIXME - check if startnode\n\n // Set value\n setSelectedApp(selectedApp);\n\n setSelectedAction(selectedAction);\n setUpdate(Math.random());\n };\n\n const changeActionParameterVariant = (data, count) => {\n selectedActionParameters[count].variant = data;\n selectedActionParameters[count].value = \"\";\n\n if (data === \"ACTION_RESULT\" && getParents !== undefined) {\n var parents = getParents(selectedAction);\n if (parents.length > 0) {\n selectedActionParameters[count].action_field = parents[0].label;\n } else {\n selectedActionParameters[count].action_field = \"\";\n }\n } else if (data === \"WORKFLOW_VARIABLE\") {\n if (\n workflow.workflow_variables !== null &&\n workflow.workflow_variables !== undefined &&\n workflow.workflow_variables.length > 0\n ) {\n selectedActionParameters[count].action_field =\n workflow.workflow_variables[0].name;\n }\n }\n\n selectedAction.parameters = selectedActionParameters;\n\n // This is a stupid workaround to make it refresh rofl\n setSelectedAction({});\n\n if (setSelectedTrigger !== undefined) {\n setSelectedTrigger({});\n setSelectedApp({});\n setSelectedEdge({});\n }\n // FIXME - check if startnode\n\n // Set value\n setSelectedApp(selectedApp);\n setSelectedAction(selectedAction);\n setUpdate(Math.random());\n };\n\n\n\t\tconst returnHelperText = (name, value) => {\n\t\t\tif (name === undefined || value === undefined) {\n\t\t\t\treturn \"\"\n\t\t\t}\n\n\t\t\tvar helperText = \"\"\n\t\t\t//console.log(\"DATA: \", name, value)\n\t\t\tif (name.includes(\"url\")) {\n\t\t\t\tif (value.includes(\"localhost\") || value.includes(\"127.0.0.1\")) {\n\t\t\t\t\thelperText = \"Can't use localhost. Please change to an external IP or hostname.\" \n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn helperText\n\t\t}\n\n\t\t//console.log(\"AUTH: \", authenticationType)\n if (authenticationType !== undefined && authenticationType !== null && authenticationType.type === \"oauth2\") {\n\t\t\t/*\n\t\t\treturn (\n\t\t\t\t \n\t\t\t\t\tYou must authenticate before using oauth2 apps.\n\t\t\t\t\n\t\t\t)\n\t\t\t*/\n\t\t}\n\n\t\t//console.log(\"APP: \", selectedApp)\n\n // FIXME: Issue #40 - selectedActionParameters not reset\n if (\n Object.getOwnPropertyNames(selectedAction).length > 0 &&\n selectedActionParameters.length > 0\n ) {\n var authWritten = false;\n return (\n
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{selectedAction.template === true && selectedAction.matching_actions !== undefined && selectedAction.matching_actions !== null && selectedAction.matching_actions.length > 0 ?\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tSelect an app you want to use \n\t\t\t\t\t\t\t\n \t\t {\n\t\t\t\t\t\t\t\t\tconsole.log(\"LABEL: \", option)\n \t\t if (\n \t\t option === undefined ||\n \t\t option === null ||\n \t\t option.app_name === undefined ||\n \t\t option.app_name === null \n \t\t ) {\n \t\t return null;\n \t\t }\n\n \t\t const newname = (\n \t\t option.app_name.charAt(0).toUpperCase() + option.app_name.substring(1)\n \t\t ).replaceAll(\"_\", \" \");\n \t\t return newname;\n \t\t }}\n \t\t options={selectedAction.matching_actions}\n \t\t fullWidth\n \t\t style={{\n \t\t backgroundColor: theme.palette.inputColor,\n \t\t height: 50,\n \t\t borderRadius: theme.palette.borderRadius,\n \t\t }}\n \t\t onChange={(event, newValue) => {\n\t\t\t\t\t\t\t\t\tconsole.log(\"SELECT: \", event, newValue)\n \t\t // Workaround with event lol\n \t\t //if (newValue !== undefined && newValue !== null) {\n \t\t // setNewSelectedAction({ target: { value: newValue.name } });\n \t\t //}\n \t\t }}\n \t\t renderOption={(data) => {\n \t\t var newActionname = data.app_name;\n \t\t if (\n \t\t data.label !== undefined &&\n \t\t data.label !== null &&\n \t\t data.label.length > 0\n \t\t ) {\n \t\t newActionname = data.label;\n \t\t }\n\n \t\t const iconInfo = GetIconInfo({ name: data.app_name });\n \t\t const useIcon = iconInfo.originalIcon;\n\n \t\t newActionname = (\n \t\t newActionname.charAt(0).toUpperCase() +\n \t\t newActionname.substring(1)\n \t\t ).replaceAll(\"_\", \" \");\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{useIcon}\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{newActionname}\n\t\t\t\t\t\t\t\t\t\t
\n \t\t );\n \t\t }}\n \t\t renderInput={(params) => {\n\t\t\t\t\t\t\t\t\tif (params.inputProps !== undefined && params.inputProps !== null && params.inputProps.value !== undefined && params.inputProps.value !== null) {\n\t\t\t\t\t\t\t\t\t\tconst prefixes = [\"Post\", \"Put\", \"Patch\"]\n\t\t\t\t\t\t\t\t\t\tfor (let [key,keyval] in Object.entries(prefixes)) {\n\t\t\t\t\t\t\t\t\t\t\tif (params.inputProps.value.startsWith(prefixes[key])) {\n\t\t\t\t\t\t\t\t\t\t\t\tparams.inputProps.value = params.inputProps.value.replace(prefixes[key]+\" \", \"\", -1)\n\t\t\t\t\t\t\t\t\t\t\t\tif (params.inputProps.value.length > 1) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tparams.inputProps.value = params.inputProps.value.charAt(0).toUpperCase()+params.inputProps.value.substring(1)\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\n \t\t return (\n\t\t\t\t\t\t\t\t\t\t\t\n \t\t );\n \t\t }}\n \t\t/>\n\t\t\t\t\t\t
\n\t\t\t\t\t: null}\n \t{selectedAction.description !== undefined && selectedAction.description !== null && selectedAction.description.length > 0 && hiddenDescription === false ? (\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tDescription\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{selectedAction.description}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t) : null}\n {selectedActionParameters.map((data, count) => {\n if (data.variant === \"\") {\n data.variant = \"STATIC_VALUE\";\n }\n\n // selectedAction.selectedAuthentication = e.target.value\n // selectedAction.authentication_id = e.target.value.id\n if (\n !selectedAction.auth_not_required &&\n selectedAction.selectedAuthentication !== undefined &&\n selectedAction.selectedAuthentication.fields !== undefined &&\n selectedAction.selectedAuthentication.fields[data.name] !==\n undefined\n ) {\n // This sets the placeholder in the frontend. (Replaced in backend)\n selectedActionParameters[count].value =\n selectedAction.selectedAuthentication.fields[data.name];\n selectedAction.parameters[count].value =\n selectedAction.selectedAuthentication.fields[data.name];\n setSelectedAction(selectedAction);\n //setUpdate(Math.random())\n\n if (authWritten) {\n return null;\n }\n\n authWritten = true;\n return (\n \n Authentication fields are hidden\n \n );\n }\n\n\t\t\t\t\t\t// Added autofill to make this ALOT simpler\n\t\t\t\t\t\tif (isCloud && (selectedAction.app_name === \"Shuffle Tools\" || selectedAction.app_name === \"email\") && (selectedAction.name === \"send_email_shuffle\" || selectedAction.name === \"send_sms_shuffle\") && data.name === \"apikey\") {\n\t\t\t\t\t\t\tif (selectedActionParameters[count].length === 0) {\n\t\t\t\t\t\t\t\tselectedAction.parameters[count].value = \"TMP: Will be replaced during execution if cloud\"\n\t\t\t\t\t\t\t\tsetSelectedAction(selectedAction)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn null\n\t\t\t\t\t\t}\n\n var staticcolor = \"inherit\";\n var actioncolor = \"inherit\";\n var varcolor = \"inherit\";\n var multiline;\n if (\n data.multiline !== undefined &&\n data.multiline !== null &&\n data.multiline === true\n ) {\n multiline = true;\n }\n\n if (\n data.value !== undefined &&\n data.value !== null &&\n data.value.startsWith(\"{\") &&\n data.value.endsWith(\"}\")\n ) {\n multiline = true;\n }\n\n var placeholder = \"Value\";\n if (\n data.example !== undefined &&\n data.example !== null &&\n data.example.length > 0\n ) {\n placeholder = data.example;\n\n if (data.name === \"url\" && data.value !== undefined && data.value !== null && data.value.length === 0) {\n data.value = data.example;\n }\n\n\t\t\t\t\t\t\t// In case of data.example\n\t\t\t\t\t\t\tif (data.value === undefined || data.value === null) {\n\t\t\t\t\t\t\t\tdata.value = \"\"\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (data.value.length === 0) {\n \tif (data.name.toLowerCase() === \"headers\") {\n\t\t\t\t\t\t\t\t\tconsole.log(\"Should show headers field instead with + and -!\")\n\n\t\t\t\t\t\t\t\t\t// Check if file ID exists\n\t\t\t\t\t\t\t\t\t//\n\t\t\t\t\t\t\t\t\tconst fileFound = selectedActionParameters.find(param => param.name === \"file_id\")\n\t\t\t\t\t\t\t\t\tif (fileFound === undefined || fileFound === null) {\n\t\t\t\t\t\t\t\t\t\tdata.value = data.example\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t// Purposely unset it if set by default when using files\n\t\t\t\t\t\t\t\t\t\tdata.value = \"\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t/*\n \tif (data.name !== \"queries\" && data.name !== \"key\" && data.name !== \"value\" ) {\n\t\t\t\t\t\t\t\t\tdata.value = data.example\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t*/\n }\n\n if (data.name.startsWith(\"${\") && data.name.endsWith(\"}\")) {\n const paramcheck = selectedAction.parameters.find((param) => param.name === \"body\");\n \n\n if (paramcheck !== undefined && paramcheck !== null) {\n if (\n paramcheck[\"value_replace\"] !== undefined &&\n paramcheck[\"value_replace\"] !== null\n ) {\n //console.log(\"IN THE VALUE REPLACE: \", paramcheck[\"value_replace\"])\n const subparamindex = paramcheck[\"value_replace\"].findIndex(\n (param) => param.key === data.name\n );\n if (subparamindex !== -1) {\n data.value =\n paramcheck[\"value_replace\"][subparamindex][\"value\"];\n }\n }\n }\n }\n\n var disabled = false;\n var rows = \"5\";\n var openApiHelperText = \"This is an OpenAPI specific field\";\n\t\t\t\t\t\t/*\n if (\n selectedApp.generated &&\n data.name === \"url\" &&\n data.required &&\n data.configuration \n ) {\n\t\t\t\t\t\t\t//&&\n //hideExtraTypes\n\t\t\t\t\t\t\t\n //console.log(\"GENERATED WITH DATA: \", data);\n return null;\n }\n\t\t\t\t\t\t*/\n\n if (selectedApp.generated && data.name === \"headers\") {\n //console.log(\"HEADER: \", data)\n //if (data.value.length === 0) {\n //}\n //setSelectedActionParameters(selectedActionParameters)\n }\n\n var hideBodyButton = \"\";\n const hideBodyButtonValue = (\n \n \n {\n\t\t\t\t\t\t\t\t\t\t\t\t\tvar tag = \"TOGGLED\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (hideBody) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttag = \"UNTOGGLED\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t} \n\n setHideBody(!hideBody);\n\t\t\t\n for (let paramkey in Object.entries(selectedActionParameters)) {\n var currentItem = selectedActionParameters[paramkey];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (currentItem.name === \"ssl_verify\") {\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (currentItem.name === \"body\") {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// FIXME: Workaround for toggling, as actions don't have IDs. \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// May screw up something in the future.\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcurrentItem.id = tag\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n if (currentItem.description === openApiFieldDesc) {\n currentItem.field_active = !hideBody;\n //console.log(\"Changing\", currentItem);\n }\n }\n }}\n name=\"requires_unique\"\n />\n }\n label={\"Automatically fix body\"}\n />\n \n
\n )\n\n if (selectedApp.generated && data.name === \"body\") {\n const regex = /\\${(\\w+)}/g;\n const found = placeholder.match(regex);\n\n hideBodyButton = hideBodyButtonValue;\n if (found === null || !hideBody) {\n if (found === null) {\n setActivateHidingBodyButton(true);\n } else {\n\t\t\t\t\t\t\t\t\t//console.log(\"In found: \", found, hideBody)\n\t\t\t\t\t\t\t\t}\n } else {\n //console.log(\"SHOW BUTTON\");\n\n rows = \"1\";\n disabled = true;\n openApiHelperText = \"OpenAPI spec: fill the following fields.\";\n //console.log(\"SHOULD ADD TO selectedActionParameters!: \", found, selectedActionParameters)\n var changed = false;\n for (let specKey in found) {\n const tmpitem = found[specKey];\n var skip = false;\n\n for (let innerkey in selectedActionParameters) {\n if (selectedActionParameters[innerkey].name === tmpitem) {\n skip = true;\n break;\n }\n }\n\n if (skip) {\n //console.log(\"SKIPPING \", tmpitem)\n continue;\n }\n\n changed = true;\n selectedActionParameters.push({\n action_field: \"\",\n configuration: false,\n description: openApiFieldDesc,\n example: \"\",\n id: \"\",\n multiline: true,\n name: tmpitem,\n options: null,\n required: false,\n schema: { type: \"string\" },\n skip_multicheck: false,\n tags: null,\n value: \"\",\n variant: \"STATIC_VALUE\",\n field_active: true,\n });\n }\n\n if (changed) {\n setSelectedActionParameters(selectedActionParameters);\n }\n\n return hideBodyButton;\n }\n }\n\n if (activateHidingBodyButton === true) {\n hideBodyButton = \"\";\n }\n\n const clickedFieldId = \"rightside_field_\" + count;\n\n\t\t\t\t\t\tconst shufflecode = fieldCount !== count ? null : \n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)\n\n // 0) {\n\t\t\t\t\t\t\tbaseHelperText = calculateHelpertext(data.value)\n\t\t\t\t\t\t}\n\n\n var tmpitem = data.name.valueOf();\n if (data.name.startsWith(\"${\") && data.name.endsWith(\"}\")) {\n tmpitem = tmpitem.slice(2, data.name.length - 1);\n }\n\n if (tmpitem === \"from_shuffle\") {\n\t\t\t\t\t\t\ttmpitem = \"from\"\n\t\t\t\t\t\t}\n\n tmpitem = (\n tmpitem.charAt(0).toUpperCase() + tmpitem.substring(1)\n ).replaceAll(\"_\", \" \");\n\n if (tmpitem === \"Username basic\") {\n tmpitem = \"Username\"\n } else if (tmpitem === \"Password basic\") {\n tmpitem = \"Password\"\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmultiline = data.name.startsWith(\"${\") && data.name.endsWith(\"}\") ? true : multiline\n\t\t\t\t\t\t\n var datafield = (\n \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetFieldCount(count)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetcodedata(data.value)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetExpansionModalOpen(true)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent.preventDefault()\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Get cursor position\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// This makes it so we can put it in the right location?\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetMenuPosition({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttop: event.pageY + 10,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tleft: event.pageX + 10,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetShowDropdownNumber(count);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetShowDropdown(true);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetShowAutocomplete(true);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n \n ),\n }}\n multiline={data.name.startsWith(\"${\") && data.name.endsWith(\"}\") ? true : multiline}\n helperText={returnHelperText(data.name, data.value)}\n onClick={() => {\n console.log(\"Clicked field: \", clickedFieldId, data.name)\n\n\t\t\t\t\t\t\t\t\t//if (data.name === \"file_id\") {\n\t\t\t\t\t\t\t\t\t//\tconsole.log(\"show file video?\")\n\t\t\t\t\t\t\t\t\t//\tif (setShowVideo !== undefined) {\n\t\t\t\t\t\t\t\t\t//\t\tsetShowVideo(\"https://www.youtube.com/embed/DPYowyTbsSk\")\n\t\t\t\t\t\t\t\t\t//\t}\n\t\t\t\t\t\t\t\t\t//}\n //(data.name.toLowerCase().includes(\"api\") ||\n\t\t\t\t\t\t\t\t\t/*\n setExpansionModalOpen(false);\n if (\n setScrollConfig !== undefined &&\n scrollConfig !== null &&\n scrollConfig !== undefined &&\n scrollConfig.selected !== clickedFieldId\n ) {\n scrollConfig.selected = clickedFieldId;\n setScrollConfig(scrollConfig);\n //console.log(\"Change field id!\")\n }\n\t\t\t\t\t\t\t\t\t*/\n\n\t\t\t\t\t\t\t\t\t//console.log(\"Clicked field: \", clickedFieldId)\n\t\t\t\t\t\t\t\t\tif (setScrollConfig !== undefined && scrollConfig !== null && scrollConfig !== undefined && scrollConfig.selected !== clickedFieldId) {\n\t\t\t\t\t\t\t\t\t\tscrollConfig.selected = clickedFieldId\n\t\t\t\t\t\t\t\t\t\tsetScrollConfig(scrollConfig)\n\t\t\t\t\t\t\t\t\t\t//console.log(\"Change field id!\")\n\t\t\t\t\t\t\t\t\t}\n }}\n id={clickedFieldId}\n rows={data.name.startsWith(\"${\") && data.name.endsWith(\"}\") ? 2 : rows}\n color=\"primary\"\n defaultValue={data.value}\n //value={data.value}\n //options={{\n //\ttheme: 'gruvbox-dark',\n //\tkeyMap: 'sublime',\n //\tmode: 'python',\n //}}\n //height={multiline ? 50 : 150}\n\n type={\n placeholder.includes(\"***\") ||\n (data.configuration &&\n (data.name.toLowerCase().includes(\"api\") ||\n data.name.toLowerCase().includes(\"key\") ||\n data.name.toLowerCase().includes(\"pass\")))\n ? \"password\"\n : \"text\"\n }\n placeholder={placeholder}\n onChange={(event) => {\n //changeActionParameterCodemirror(event, count, data)\n changeActionParameter(event, count, data);\n }}\n helperText={baseHelperText.length > 0 ? baseHelperText : \n selectedApp.generated &&\n selectedApp.activated &&\n data.name === \"body\" ? (\n \n {openApiHelperText}\n \n ) : data.name.startsWith(\"${\") && data.name.endsWith(\"}\") ? \n\t\t\t\t\t\t\t\t\t\tnull : null\t\n }\n onBlur={(event) => {\n\t\t\t\t\t\t\t\t\tbaseHelperText = calculateHelpertext(event.target.value)\n\t\t\t\t\t\t\t\t\tif (setLastSaved !== undefined) {\n\t\t\t\t\t\t\t\t\t\tsetLastSaved(false)\n\t\t\t\t\t\t\t\t\t}\n }}\n />\n );\n\t\t\n\t\t\t\t\t\t// Finds headers from a string to be used for autocompletion\n\t\t\t\t\t\tconst findHeaders = (inputdata) => {\n\t\t\t\t\t\t\tvar splitdata = inputdata.split(\"\\n\")\n\n\t\t\t\t\t\t\tvar foundnewline = false\n\t\t\t\t\t\t\tvar allValues = []\n\t\t\t\t\t\t\tfor (let [key,keyval] in Object.entries(splitdata)) {\n\t\t\t\t\t\t\t\tconst line = splitdata[key]\n\t\t\t\t\t\t\t\tif (line === \"\") {\n\t\t\t\t\t\t\t\t\tfoundnewline = true \n\t\t\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tvar splitvalue = \"\"\n\t\t\t\t\t\t\t\tif (line.includes(\":\")) {\n\t\t\t\t\t\t\t\t\tsplitvalue = \":\"\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (line.includes(\"=\")) {\n\t\t\t\t\t\t\t\t\tsplitvalue = \"=\"\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (splitvalue.length === 0){\n\t\t\t\t\t\t\t\t\tallValues.push({\n\t\t\t\t\t\t\t\t\t\tkey: line,\n\t\t\t\t\t\t\t\t\t\tvalue: \"\",\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tvar splitKeys = line.split(splitvalue)\n\t\t\t\t\t\t\t\tif (splitKeys.length > 1) {\n\t\t\t\t\t\t\t\t\tallValues.push({\n\t\t\t\t\t\t\t\t\t\tkey: splitKeys[0].trim(),\n\t\t\t\t\t\t\t\t\t\tvalue: splitKeys[1].trim(),\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tconsole.log(\"No keys for \", line)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Just add one\n\t\t\t\t\t\t\tif (foundnewline) {\n\t\t\t\t\t\t\t\tallValues.push({\n\t\t\t\t\t\t\t\t\tkey: \"\",\n\t\t\t\t\t\t\t\t\tvalue: \"\",\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn allValues\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (data.name.toLowerCase() === \"headers\") {\n\t\t\t\t\t\t\t//var tmpheaders = findHeaders(data.value)\n\t\t\t\t\t\t\tvar tmpheaders = findHeaders(selectedActionParameters[count].value)\n\t\t\t\t\t\t\tconst tmpdatafield = \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t{tmpheaders.map((inputdata, index) => {\n\t\t\t\t\t\t\t\t\t\tconst oldkey = inputdata.key\n\t\t\t\t\t\t\t\t\t\tconst oldval = inputdata.value\n\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"Change from oldkey to new: \", oldkey, e.target.value)\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Find the right line to replace!\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//const newval = selectedActionParameters[count].value.replace(oldval, e.target.value, 1)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst tmpsplit = selectedActionParameters[count].value.split(\"\\n\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar valsplit = []\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar add_empty = false\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor (let [key,keyval] in Object.entries(tmpsplit)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (tmpsplit[key] === \"\") {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tadd_empty = true\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalsplit.push(tmpsplit[key])\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (add_empty) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalsplit.push(\"\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"Split: \", valsplit)\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar newarr = []\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor (let [key,keyval] in Object.entries(valsplit)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar line = valsplit[key]\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (key == index) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (oldkey === \"\") {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (line.includes(\"=\") || line.includes(\":\")) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewarr.push(e.target.value + line)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewarr.push(e.target.value + \": \" + line)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewarr.push(line.replace(oldkey, e.target.value, 1))\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewarr.push(line)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar newval = newarr.join(\"\\n\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"Fixed: \", newval)\n\n \t\t\t\t\t\t\t\t\t\t\t\tselectedActionParameters[count].value = newval\n \t\t\t\t\t\t\t\t\t\t\t\tselectedAction.parameters[count].value = newval\n \t\t\t\t\t\t\t\t\t\t\t\tsetSelectedAction(selectedAction)\n \t\t\t\t\t\t\t\t\t\tsetSelectedActionParameters(selectedActionParameters)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"Change from oldval to new: \", oldval, e.target.value)\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Find the right line to replace!\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//const newval = selectedActionParameters[count].value.replace(oldval, e.target.value, 1)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar tmpsplit = selectedActionParameters[count].value.split(\"\\n\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar valsplit = []\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar add_empty = false\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor (let [key,keyval] in Object.entries(tmpsplit)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (tmpsplit[key] === \"\") {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tadd_empty = true\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalsplit.push(tmpsplit[key])\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (add_empty) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalsplit.push(\"\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"Split: \", valsplit)\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar newarr = []\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor (let [key,keyval] in Object.entries(valsplit)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar line = valsplit[key]\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (key == index) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (oldval === \"\") {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (line.includes(\"=\") || line.includes(\":\")) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewarr.push(line + e.target.value)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewarr.push(line + \": \" + e.target.value)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewarr.push(line.replace(oldval, e.target.value, 1))\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewarr.push(line)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar newval = newarr.join(\"\\n\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"Fixed: \", newval)\n\n \t\t\t\t\t\t\t\t\t\t\t\tselectedActionParameters[count].value = newval\n \t\t\t\t\t\t\t\t\t\t\t\tselectedAction.parameters[count].value = newval\n \t\t\t\t\t\t\t\t\t\t\t\tsetSelectedAction(selectedAction)\n \t\t\t\t\t\t\t\t\t\tsetSelectedActionParameters(selectedActionParameters)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t}\n\n //console.log(\"FIELD VALUE: \", data.value)\n //const regexp = new RegExp(\"\\W+\\.\", \"g\")\n //let match\n //while ((match = regexp.exec(data.value)) !== null) {\n //\tconsole.log(`Found ${match[0]} start=${match.index} end=${regexp.lastIndex}.`);\n //}\n\n //const str = = data.value.search(submatch)\n //console.log(\"FOUND? \", n)\n //for (var key in keywords) {\n //\tconst keyword = keywords[key]\n //\tif (data.value.includes(keyword)) {\n //\t\tconsole.log(\"INCLUDED: \", keyword)\n //\t}\n //}\n\n\t\t\t\t\t\t// Basic helpertext\n\n if (files !== undefined && files !== null && data.name.toLowerCase() === \"file_category\") {\n //selectedActionParameters[count].options.length > 0\n\t\t\t\t\t\t\tconsole.log(\"FileS: \", files)\n\t\t\t\t\t\t\tif (files.namespaces !== undefined && files.namespaces !== null && files.namespaces.length > 0) {\n\t\t\t\t\t\t\t\tdata.options = files.namespaces\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n //const keywords = [\"len\", \"lower\", \"upper\", \"trim\", \"split\", \"length\", \"number\", \"parse\", \"join\"]\n if (\n selectedActionParameters[count].schema !== undefined &&\n selectedActionParameters[count].schema !== null &&\n selectedActionParameters[count].schema.type === \"file\"\n ) {\n datafield = (\n \n \n {\n setMenuPosition({\n top: event.pageY + 10,\n left: event.pageX + 10,\n });\n setShowDropdownNumber(count);\n setShowDropdown(true);\n setShowAutocomplete(true);\n }}\n />\n \n \n ),\n }}\n \thelperText={returnHelperText(data.name, data.value)}\n fullWidth\n multiline={multiline}\n rows=\"5\"\n color=\"primary\"\n defaultValue={data.value}\n type={\"text\"}\n placeholder={\"The file ID to get\"}\n id={\"rightside_field_\" + count}\n onChange={(event) => {\n changeActionParameter(event, count, data);\n }}\n onBlur={(event) => {}}\n />\n );\n //const fileId = \"6daabec1-892b-469c-b603-c902e47223a9\"\n //datafield = `SHOW FILES FROM OTHER NODES? Filename: ${selectedActionParameters[count].value}`\n /*\n\t\t\t\t\t\t\tif (selectedActionParameters[count].value != fileId) {\n\t\t\t\t\t\t\t\tchangeActionParameter(fileId, count, data)\n\t\t\t\t\t\t\t\tsetUpdate(Math.random())\n\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t*/\n } else if (\n (data.options !== undefined &&\n data.options !== null &&\n data.options.length > 0) \n\t\t\t\t\t\t\t||\n (selectedActionParameters[count].options !== undefined &&\n selectedActionParameters[count].options !== null &&\n selectedActionParameters[count].options.length > 0)\n ) {\n\t\t\t\t\t\t\tconst parsedoptions = data.options !== undefined && data.options !== null && data.options.length > 0 ? data.options : selectedActionParameters[count].options \n\n if (selectedActionParameters[count].value === \"\") {\n // && selectedActionParameters[count].required) {\n // Rofl, dirty workaround :)\n const e = {\n target: {\n value: parsedoptions[0],\n },\n };\n\n changeActionParameter(e, count, data);\n }\n\n datafield = (\n {\n changeActionParameter(e, count, data);\n setUpdate(Math.random());\n }}\n style={{\n backgroundColor: theme.palette.surfaceColor,\n color: \"white\",\n height: \"50px\",\n borderRadius: theme.palette.borderRadius,\n }}\n >\n {parsedoptions.map(\n (data, index) => {\n const split_data = data.split(\"||\");\n var viewed_data = data;\n if (split_data.length > 1) {\n viewed_data = split_data[0];\n }\n\n return (\n \n {viewed_data}\n \n );\n }\n )}\n \n );\n } else if (data.variant === \"STATIC_VALUE\") {\n staticcolor = \"#f85a3e\";\n }\n\n if (data.field_active === false) {\n return null;\n }\n\n\n // Shows nested list of nodes > their JSON lists\n const ActionlistWrapper = (props) => {\n const handleMenuClose = () => {\n setShowAutocomplete(false);\n\n if (\n !selectedActionParameters[count].value[\n selectedActionParameters[count].value.length - 1\n ] === \"$\"\n ) {\n setShowDropdown(false);\n }\n\n setUpdate(Math.random());\n setMenuPosition(null);\n };\n\n const handleItemClick = (values) => {\n\t\t\t\t\t\t\t\tconsole.log(\"In normal itemclick\")\n if (values === undefined ||values === null ||values.length === 0) {\n return;\n }\n\n var toComplete = selectedActionParameters[count].value.trim()\n .endsWith(\"$\")\n ? values[0].autocomplete\n : \"$\" + values[0].autocomplete;\n\n toComplete = toComplete.toLowerCase().replaceAll(\" \", \"_\");\n for (let [key,keyval] in Object.entries(values)) {\n if (key == 0 || values[key].autocomplete.length === 0) {\n continue;\n }\n\n toComplete += values[key].autocomplete;\n }\n\n\t\t\t\t\t\t\t\t\t\t\t\t\n\n // Handles the fields under OpenAPI body to be parsed.\n if (data.name.startsWith(\"${\") && data.name.endsWith(\"}\")) {\n console.log(\"INSIDE VALUE REPLACE: \", data.name, toComplete);\n // PARAM FIX - Gonna use the ID field, even though it's a hack\n const paramcheck = selectedAction.parameters.find(\n (param) => param.name === \"body\"\n );\n if (paramcheck !== undefined) {\n if (\n paramcheck[\"value_replace\"] === undefined ||\n paramcheck[\"value_replace\"] === null\n ) {\n paramcheck[\"value_replace\"] = [\n {\n key: data.name,\n value: toComplete,\n },\n ];\n } else {\n const subparamindex = paramcheck[\n \"value_replace\"\n ].findIndex((param) => param.key === data.name);\n if (subparamindex === -1) {\n paramcheck[\"value_replace\"].push({\n key: data.name,\n value: toComplete,\n });\n } else {\n paramcheck[\"value_replace\"][subparamindex][\"value\"] +=\n toComplete;\n }\n }\n\n selectedActionParameters[count][\"value_replace\"] = paramcheck;\n selectedAction.parameters[count][\"value_replace\"] = paramcheck;\n setSelectedAction(selectedAction);\n setUpdate(Math.random());\n\n setShowDropdown(false);\n setMenuPosition(null);\n return;\n }\n }\n\n\t\t\t\t\t\t\t\tconsole.log(\"In nestedclick!!\")\n\t\t\t\t\t\t\t\tvar newValue = selectedActionParameters[count].value + toComplete\n\t\t\t\t\t\t\t\tchangeActionParameter({target: {value: newValue}}, count, data, true)\n //selectedActionParameters[count].value += toComplete;\n //selectedAction.parameters[count].value = selectedActionParameters[count].value;\n //setSelectedAction(selectedAction);\n\t\t\t\t\t\t\t\t//setUpdate(Math.random());\n \n\t\t\t\t\t\t\t\tsetShowDropdown(false);\n setMenuPosition(null);\n };\n\n const iconStyle = {\n marginRight: 15,\n };\n\n return (\n {\n handleMenuClose();\n }}\n open={!!menuPosition}\n style={{\n color: \"white\",\n marginTop: 2,\n maxHeight: 650,\n }}\n >\n {actionlist.map((innerdata) => {\n const icon =\n innerdata.type === \"action\" ? (\n \n ) : innerdata.type === \"workflow_variable\" ||\n innerdata.type === \"execution_variable\" ? (\n \n ) : (\n \n );\n\n const handleExecArgumentHover = (inside) => {\n var exec_text_field = document.getElementById(\n \"execution_argument_input_field\"\n );\n if (exec_text_field !== null) {\n if (inside) {\n exec_text_field.style.border = \"2px solid #f85a3e\";\n } else {\n exec_text_field.style.border = \"\";\n }\n }\n\n // Also doing arguments\n if (\n workflow.triggers !== undefined &&\n workflow.triggers !== null &&\n workflow.triggers.length > 0\n ) {\n for (let [key,keyval] in Object.entries(workflow.triggers)) {\n const item = workflow.triggers[key];\n\n if (cy !== undefined) {\n var node = cy.getElementById(item.id);\n if (node.length > 0) {\n if (inside) {\n node.addClass(\"shuffle-hover-highlight\");\n } else {\n node.removeClass(\"shuffle-hover-highlight\");\n }\n }\n }\n }\n }\n };\n\n const handleActionHover = (inside, actionId) => {\n if (cy !== undefined) {\n var node = cy.getElementById(actionId);\n if (node.length > 0) {\n if (inside) {\n node.addClass(\"shuffle-hover-highlight\");\n } else {\n node.removeClass(\"shuffle-hover-highlight\");\n }\n }\n }\n };\n\n const handleMouseover = () => {\n if (innerdata.type === \"Execution Argument\") {\n handleExecArgumentHover(true);\n } else if (innerdata.type === \"action\") {\n handleActionHover(true, innerdata.id);\n }\n };\n\n const handleMouseOut = () => {\n if (innerdata.type === \"Execution Argument\") {\n handleExecArgumentHover(false);\n } else if (innerdata.type === \"action\") {\n handleActionHover(false, innerdata.id);\n }\n };\n\n var parsedPaths = [];\n if (typeof innerdata.example === \"object\") {\n parsedPaths = GetParsedPaths(innerdata.example, \"\");\n }\n\n\t\t\t\t\t\t\t\t\t\tconst coverColor = \"#82ccc3\"\n\t\t\t\t\t\t\t\t\t\t//menuPosition.left -= 50\n\t\t\t\t\t\t\t\t\t\t//menuPosition.top -= 250 \n\t\t\t\t\t\t\t\t\t\t//console.log(\"POS: \", menuPosition1)\n\t\t\t\t\t\t\t\t\t\tvar menuPosition1 = menuPosition\n\t\t\t\t\t\t\t\t\t\tif (menuPosition1 === null) {\n\t\t\t\t\t\t\t\t\t\t\tmenuPosition1 = {\n\t\t\t\t\t\t\t\t\t\t\t\t\"left\": 0,\n\t\t\t\t\t\t\t\t\t\t\t\t\"top\": 0,\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} else if (menuPosition1.top === null || menuPosition1.top === undefined) {\n\t\t\t\t\t\t\t\t\t\t\tmenuPosition1.top = 0\n\t\t\t\t\t\t\t\t\t\t} else if (menuPosition1.left === null || menuPosition1.left === undefined) {\n\t\t\t\t\t\t\t\t\t\t\tmenuPosition1.left = 0\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t//console.log(\"POS1: \", menuPosition1)\n\n return parsedPaths.length > 0 ? (\n \n {icon} {innerdata.name}\n
\n }\n parentMenuOpen={!!menuPosition}\n style={{\n color: \"white\",\n minWidth: 250,\n maxWidth: 250,\n maxHeight: 50,\n overflow: \"hidden\",\n }}\n onClick={() => {\n console.log(\"CLICKED: \", innerdata);\n console.log(innerdata.example)\n handleItemClick([innerdata]);\n }}\n >\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//console.log(\"HOVER: \", pathdata);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleItemClick([innerdata]);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n \t\t\t{innerdata.name}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n \t{parsedPaths.map((pathdata, index) => {\n \t // FIXME: Should be recursive in here\n \t //\n \t const icon =\n \t pathdata.type === \"value\" ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n \t ) : pathdata.type === \"list\" ? (\n \t \n \t ) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n \t );\n \t //\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst indentation_count = (pathdata.name.match(/\\./g) || []).length+1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst baseIndent =
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t//const boxPadding = pathdata.type === \"object\" ? \"10px 0px 0px 0px\" : 0\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst boxPadding = 0 \n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst namesplit = pathdata.name.split(\".\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst newname = namesplit[namesplit.length-1]\n \t return (\n \t {\n \t //console.log(\"HOVER: \", pathdata);\n \t }}\n \t onClick={() => {\n \t handleItemClick([innerdata, pathdata]);\n \t }}\n \t >\n \t \n \t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{Array(indentation_count).fill().map((subdata, subindex) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbaseIndent\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t})}\n \t {icon} {newname} \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{pathdata.type === \"list\" ? {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\te.stopPropagation()\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"INNER: \", innerdata, pathdata)\n \t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Removing .list from autocomplete\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar newname = pathdata.name\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (newname.length > 5) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewname = newname.slice(0, newname.length-5)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tselectedActionParameters[count].value += `{{ $${innerdata.name}.${newname} | size }}`\n \t\t\t\t\t\t\t\t\t\t\tselectedAction.parameters[count].value = selectedActionParameters[count].value;\n \t\t\t\t\t\t\t\t\t\t\tsetSelectedAction(selectedAction);\n \t\t\t\t\t\t\t\t\t\t\tsetUpdate(Math.random());\n \t\t\t\t\t\t\t\t\t\t\tsetShowDropdown(false);\n \t\t\t\t\t\t\t\t\t\t\tsetMenuPosition(null);\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// innerdata.name\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// pathdata.name\n \t\t\t\t\t\t\t\t\t\t\t\t//handleItemClick([innerdata, newpathdata])\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//console.log(\"CLICK LENGTH!\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}} /> : null}\n \t
\n \t \n \t \n \t );\n \t})}\n\t\t\t\t\t\t\t\t\t\t\t\t\n \n ) : (\n handleMouseover()}\n onMouseOut={() => {\n handleMouseOut();\n }}\n onClick={() => {\n handleItemClick([innerdata]);\n }}\n >\n \n
\n {icon} {innerdata.name}\n
\n \n \n );\n })}\n \n );\n };\n \n const description =\n data.description === undefined ? \"\" : data.description;\n const tooltipDescription = (\n \n \n - Required:{\" \"}\n {data.required === true || data.configuration === true\n ? \"True\"\n : \"False\"}\n \n \n - Example: {data.example}\n \n \n - Description: {description}\n \n \n );\n\n //var itemColor = \"#f85a3e\"\n //if (!data.required) {\n //\titemColor = \"#ffeb3b\"\n //}\n {\n /*
*/\n }\n\n\t\t\t\t\t\t//console.log(data.configuration)\n\n\t\t\t\t\t\tconst buttonTitle = `Authenticate ${selectedApp.name.replaceAll(\"_\", \" \")}`\n\t\t\t\t\t\tconst hasAutocomplete = data.autocompleted === true\n return (\n
\n {hideBodyButton}\n \n {data.configuration === true ? (\n \n {\n setAuthenticationModalOpen(true);\n }}\n />\n \n ) : null}\n\n\t\t\t\t\t\t\t\t\t{hasAutocomplete === true ? \n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t: \n\t\t\t\t\t\t\t\t\tnull}\n\n \n \n {tmpitem} \n \n
\n\n {/*selectedActionParameters[count].options !== undefined && selectedActionParameters[count].options !== null && selectedActionParameters[count].options.length > 0 ? null : \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
{\n\t\t\t\t\t\t\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\t\t\t\t\t\t\tchangeActionParameterVariant(\"STATIC_VALUE\", count) \n\t\t\t\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t | \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
{\n\t\t\t\t\t\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\t\t\t\t\t\tchangeActionParameterVariant(\"ACTION_RESULT\", count) \n\t\t\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t | \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
{\n\t\t\t\t\t\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\t\t\t\t\t\tchangeActionParameterVariant(\"WORKFLOW_VARIABLE\", count) \n\t\t\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\t\n\t\t\t\t\t\t\t*/}\n {/*(selectedActionParameters[count].options !== undefined && selectedActionParameters[count].options !== null && selectedActionParameters[count].options.length > 0 && selectedActionParameters[count].required === true && selectedActionParameters[count].unique_toggled !== undefined) || hideExtraTypes ? null : \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
{}}>\n \t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t//console.log(\"CHECKED!: \", selectedActionParameters[count])\n \t\t\t\t\t\t \tselectedActionParameters[count].unique_toggled = !selectedActionParameters[count].unique_toggled\n\t\t\t\t\t\t\t\t\t\t\t\t selectedAction.parameters[count].unique_toggled = selectedActionParameters[count].unique_toggled\n \t\t\t\t\t\t \tsetSelectedActionParameters(selectedActionParameters)\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetSelectedAction(selectedAction)\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetUpdate(Math.random())\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n \t\t\t\t\t\t name=\"requires_unique\"\n \t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t*/}\n
\n {datafield}\n\t\t\t\t\t\t\t\t{shufflecode}\n {showDropdown &&\n showDropdownNumber === count &&\n data.variant === \"STATIC_VALUE\" &&\n jsonList.length > 0 ? (\n \n \n Autocomplete\n \n {\n setShowAutocomplete(false);\n\n if (\n !selectedActionParameters[count].value[\n selectedActionParameters[count].value.length - 1\n ] === \".\"\n ) {\n setShowDropdown(false);\n }\n\n setUpdate(Math.random());\n }}\n onClick={() => {\n\t\t\t\t\t\t\t\t\t\t\t\tsetShowAutocomplete(true)\n\t\t\t\t\t\t\t\t\t\t\t}}\n fullWidth\n open={showAutocomplete}\n style={{\n color: \"white\",\n height: 50,\n marginTop: 2,\n borderRadius: theme.palette.borderRadius,\n }}\n onChange={(e) => {\n if (selectedActionParameters[count].value[selectedActionParameters[count].value.length - 1] === \".\") {\n e.target.value.autocomplete = e.target.value.autocomplete.slice(1,e.target.value.autocomplete.length);\n }\n\n selectedActionParameters[count].value += e.target.value.autocomplete;\n selectedAction.parameters[count].value = selectedActionParameters[count].value;\n setSelectedAction(selectedAction);\n setUpdate(Math.random());\n\n setShowDropdown(false);\n }}\n >\n {jsonList.map((data) => {\n const iconStyle = {\n marginRight: 15,\n };\n\n const icon =\n data.type === \"value\" ? (\n \n ) : data.type === \"list\" ? (\n \n ) : (\n \n );\n return (\n {}}\n >\n \n
\n {icon} {data.name}\n
\n \n \n );\n })}\n \n
\n ) : null}\n {showDropdown &&\n \tshowDropdownNumber === count &&\n \tdata.variant === \"STATIC_VALUE\" &&\n \tjsonList.length === 0 ? (\n \t \n ) : null}\n
\n );\n })}\n
\n );\n }\n return null;\n };\n\n //const CustomPopper = function (props) {\n //\tconst classes = useStyles()\n //\treturn \n //}\n //console.log(\"env: \", selectedActionEnvironment)\n\t\n var baselabel = selectedAction.label;\n return (\n
\n\n {hideExtraTypes === true ? null : (\n \n
\n
\n

\n {(\n selectedAction.app_name.charAt(0).toUpperCase() +\n selectedAction.app_name.substring(1)\n ).replaceAll(\"_\", \" \")}\n

\n
\n {\n console.log(\"FIND EXAMPLE RESULTS FOR \", selectedAction);\n if (workflowExecutions.length > 0) {\n // Look for the ID\n const found = false;\n for (let [key,keyval] in Object.entries(workflowExecutions)) {\n if (\n workflowExecutions[key].results === undefined ||\n workflowExecutions[key].results === null\n ) {\n continue;\n }\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Enforces it to show at least one\n\t\t\t\t\t\t\t\t\t\t\t\t//if (workflowExecutions[key].execution_argument.includes(\"too large\") && key !== workflowExecutions.length - 1) {\n\t\t\t\t\t\t\t\t\t\t\t\t//\tcontinue\n\t\t\t\t\t\t\t\t\t\t\t\t//}\n\n var foundResult = workflowExecutions[key].results.find(\n (result) => result.action.id === selectedAction.id\n )\n\n if (foundResult === undefined || foundResult === null) {\n continue;\n }\n\n \t\t\t\t\t\t\t\t\t\tconst oldstartnode = cy.getElementById(selectedAction.id);\n\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"FOUND NODe: \", oldstartnode)\n \t\t\t\t\t\t\t\t\t\tif (oldstartnode !== undefined && oldstartnode !== null) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst foundname = oldstartnode.data(\"label\")\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (foundname !== undefined && foundname !== null) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfoundResult.action.label = foundname\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n setSelectedResult(foundResult);\n if (setCodeModalOpen !== undefined) {\n setCodeModalOpen(true);\n }\n\n break;\n }\n }\n }}\n >\n \n \n \n \n {\n setAuthenticationModalOpen(true)\n }}\n >\n \n \n \n \n {}}\n >\n \n \n \n \n \n \n\t\t\t\t\t\t\t\t{/*\n {\n //setAuthenticationModalOpen(true);\n\t\t\t\t\t\t\t\t\t\tconsole.log(\"Should enable/disable magic!\")\n\t\t\t\t\t\t\t\t\t\tconsole.log(\"Action: \", selectedAction)\n\t\t\t\t\t\t\t\t\t\tif (selectedAction.run_magic_output === undefined) {\n\t\t\t\t\t\t\t\t\t\t\tselectedAction.run_magic_output = true\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tif (selectedAction.run_magic_output === true) {\n\t\t\t\t\t\t\t\t\t\t\t\tselectedAction.run_magic_output = false\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tselectedAction.run_magic_output = true \n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tsetSelectedAction(selectedAction)\n\t\t\t\t\t\t\t\t\t\tsetUpdate(Math.random());\n }}\n >\n \n\t\t\t\t\t\t\t\t\t\t\n \n \n\t\t\t\t\t\t\t\t*/}\n {\n }}\n >\n \n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n \n \n\n
\n
\n
\n {/*selectedAction.id === workflow.start ? null : \n\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t \t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t*/}\n {selectedApp.versions !== null &&\n selectedApp.versions !== undefined &&\n selectedApp.versions.length > 1 ? (\n {\n\t\t\t\t\t\t\t\t\t\tconsole.log(\"VAL: \", event.target.value)\n\t\t\t\t\t\t\t\t\t\tconsole.log(\"App: \", selectedApp)\n const newversion = selectedApp.versions.find(\n (tmpApp) => tmpApp.version == event.target.value\n );\n\n console.log(\"NEWVERSION: \", newversion);\n if (newversion !== undefined && newversion !== null) {\n getApp(newversion.id, true);\n }\n }}\n style={{\n marginTop: 10,\n backgroundColor: theme.palette.surfaceColor,\n backgroundColor: theme.palette.inputColor,\n color: \"white\",\n height: 35,\n marginleft: 10,\n borderRadius: theme.palette.borderRadius,\n }}\n SelectDisplayProps={{\n style: {\n marginLeft: 10,\n },\n }}\n >\n {selectedApp.versions.map((data, index) => {\n return (\n \n {data.version}\n \n );\n })}\n \n ) : null}\n
\n
\n \n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\tName\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tconst name = e.target.value;\n\t\t\t\t\t\t\t\t\tconst parsedBaseLabel = \"$\"+baselabel.toLowerCase().replaceAll(\" \", \"_\")\n\t\t\t\t\t\t\t\t\tconst newname = \"$\"+name.toLowerCase().replaceAll(\" \", \"_\")\n\n\t\t\t\t\t\t\t\t\t// Change in actions, triggers & conditions\n\t\t\t\t\t\t\t\t\t// Highlight the changes somehow with a glow?\n\t\t\t\t\t\t\t\t\t//\n\t\t\t\t\t\t\t\t\t// Should make it a function lol\n\t\t\t\t\t\t\t\t\tif (workflow.branches !== undefined && workflow.branches !== null) {\t\n\t\t\t\t\t\t\t\t\t\tfor (let [key,keyval] in Object.entries(workflow.branches)) {\n\t\t\t\t\t\t\t\t\t\t\tif (workflow.branches[key].conditions !== undefined && workflow.branches[key].conditions !== null) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor (let [subkey,subkeyval] in Object.entries(workflow.branches[key].conditions)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst condition = workflow.branches[key].conditions[subkey]\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst sourceparam = condition.source\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst destinationparam = condition.destination\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t// Should have a smarter way of discovering node names\n\t\t\t\t\t\t\t\t\t\t\t\t\t// Finding index(es) and replacing at the location\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (sourceparam.value.includes(\"$\")) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar cnt = -1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar previous = 0\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\twhile (true) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcnt += 1 \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Need to make sure e.g. changing the first here doesn't change the 2nd\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// $change_me\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// $change_me_2\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst foundindex = sourceparam.value.toLowerCase().indexOf(parsedBaseLabel, previous)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (foundindex === previous && foundindex !== 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (foundindex >= 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tprevious = foundindex+newname.length\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Need to add diff of length to word\n\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Check location:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// If it's a-zA-Z_ then don't replace\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (sourceparam.value.length > foundindex+parsedBaseLabel.length) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst regex = /[a-zA-Z0-9_]/g;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst match = sourceparam.value[foundindex+parsedBaseLabel.length].match(regex);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (match !== null) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"Old found: \", workflow.branches[key].conditions[subkey].source.value)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst extralength = newname.length-parsedBaseLabel.length\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsourceparam.value = sourceparam.value.substring(0, foundindex) + newname + sourceparam.value.substring(foundindex-extralength+newname.length, sourceparam.value.length)\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"New: \", workflow.branches[key].conditions[subkey].source.value)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else { \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Break no matter what after 5 replaces. May need to increase\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (cnt >= 5) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n \t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"Failed value replacement based on index: \", e)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (destinationparam.value.includes(\"$\")) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar cnt = -1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar previous = 0\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\twhile (true) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcnt += 1 \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Need to make sure e.g. changing the first here doesn't change the 2nd\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// $change_me\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// $change_me_2\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst foundindex = destinationparam.value.toLowerCase().indexOf(parsedBaseLabel, previous)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (foundindex === previous && foundindex !== 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (foundindex >= 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tprevious = foundindex+newname.length\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Need to add diff of length to word\n\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Check location:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// If it's a-zA-Z_ then don't replace\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (destinationparam.value.length > foundindex+parsedBaseLabel.length) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst regex = /[a-zA-Z0-9_]/g;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst match = destinationparam.value[foundindex+parsedBaseLabel.length].match(regex);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (match !== null) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"Old found: \", workflow.branches[key].conditions[subkey].destination.value)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst extralength = newname.length-parsedBaseLabel.length\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdestinationparam.value = destinationparam.value.substring(0, foundindex) + newname + destinationparam.value.substring(foundindex-extralength+newname.length, destinationparam.value.length)\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"New: \", workflow.branches[key].conditions[subkey].destination.value)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else { \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Break no matter what after 5 replaces. May need to increase\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (cnt >= 5) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n \t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"Failed value replacement based on index: \", e)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tfor (let [key,keyval] in Object.entries(workflow.actions)) {\n\t\t\t\t\t\t\t\t\t\tif (workflow.actions[key].id === selectedAction.id) {\n\t\t\t\t\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tfor (let [subkey, subkeyval] in Object.entries(workflow.actions[key].parameters)) {\n\t\t\t\t\t\t\t\t\t\t\tconst param = workflow.actions[key].parameters[subkey];\n\t\t\t\t\t\t\t\t\t\t\tif (!param.value.includes(\"$\")) {\n\t\t\t\t\t\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Should have a smarter way of discovering node names\n\t\t\t\t\t\t\t\t\t\t\t// Do regex? \n\t\t\t\t\t\t\t\t\t\t\t// Finding index(es) and replacing at the location\n\t\t\t\t\t\t\t\t\t\t\t//\n\n\t\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\t\tvar cnt = -1\n\t\t\t\t\t\t\t\t\t\t\t\tvar previous = 0\n\t\t\t\t\t\t\t\t\t\t\t\twhile (true) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tcnt += 1 \n\t\t\t\t\t\t\t\t\t\t\t\t\t// Need to make sure e.g. changing the first here doesn't change the 2nd\n\t\t\t\t\t\t\t\t\t\t\t\t\t// $change_me\n\t\t\t\t\t\t\t\t\t\t\t\t\t// $change_me_2\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst foundindex = param.value.toLowerCase().indexOf(parsedBaseLabel, previous)\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (foundindex === previous && foundindex !== 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (foundindex >= 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tprevious = foundindex+newname.length\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Need to add diff of length to word\n\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Check location:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// If it's a-zA-Z_ then don't replace\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (param.value.length > foundindex+parsedBaseLabel.length) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst regex = /[a-zA-Z0-9_]/g;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst match = param.value[foundindex+parsedBaseLabel.length].match(regex);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (match !== null) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"Old found: \", workflow.actions[key].parameters[subkey].value)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst extralength = newname.length-parsedBaseLabel.length\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tparam.value = param.value.substring(0, foundindex) + newname + param.value.substring(foundindex-extralength+newname.length, param.value.length)\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"New: \", workflow.actions[key].parameters[subkey].value)\n\t\t\t\t\t\t\t\t\t\t\t\t\t} else { \n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t// Break no matter what after 5 replaces. May need to increase\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (cnt >= 5) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\t\t\t\t\t\t}\n \t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"Failed value replacement based on index: \", e)\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tconsole.log(\"DID NAME REPLACE ACTUALLY WORK? - may be missing it in certain triggers\");\n\t\t\t\t\t\t\t\t\tsetWorkflow(workflow);\n setUpdate(Math.random());\n\t\t\t\t\t\t\t\t\tbaselabel = name\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t
\n\t\t\t\t\t\t{/*!isCloud ? null :*/}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tDelay\n\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\tif (actionDelayChange !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tactionDelayChange(event) \n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t{/**/}\n\t\t\t\t\t
\n
\n )}\n {selectedApp.name !== undefined &&\n\t\t\t\tselectedAction.authentication !== null &&\n\t\t\t\tselectedAction.authentication !== undefined &&\n\t\t\t\tselectedAction.authentication.length === 0 &&\n\t\t\t\trequiresAuthentication ? (\n
\n \n \n {\n console.log(authenticationType);\n //if (authenticationType.type === \"oauth2\" && authenticationType.redirect_uri !== undefined && authenticationType.redirect_uri !== null) {\n //\treturn null\n //}\n\n setAuthenticationModalOpen(true);\n }}\n >\n Authenticate{\" \"}\n {selectedApp.name}\n \n \n \n
\n ) : null}\n\n {selectedAction.authentication !== undefined &&\n\t\t\t\tselectedAction.authentication !== null &&\n\t\t\t\tselectedAction.authentication.length > 0 ? (\n
\n Authentication\n
\n {\n if (e.target.value === \"No selection\") {\n selectedAction.selectedAuthentication = {};\n selectedAction.authentication_id = \"\";\n\n for (let [key,keyval] in Object.entries(selectedAction.parameters)) {\n //console.log(selectedAction.parameters[key])\n if (selectedAction.parameters[key].configuration) {\n selectedAction.parameters[key].value = \"\";\n }\n }\n setSelectedAction(selectedAction);\n setUpdate(Math.random());\n } else {\n selectedAction.selectedAuthentication = e.target.value;\n selectedAction.authentication_id = e.target.value.id;\n setSelectedAction(selectedAction);\n setUpdate(Math.random());\n }\n }}\n style={{\n backgroundColor: theme.palette.inputColor,\n color: \"white\",\n height: 50,\n maxWidth: rightsidebarStyle.maxWidth - 80,\n borderRadius: theme.palette.borderRadius,\n }}\n >\n \n No selection\n \n {selectedAction.authentication.map((data) => {\n //console.log(\"AUTH DATA: \", data)\n return (\n \n {data.label} - ({data.app.app_version})\n \n );\n })}\n \n\n {/*\n\n\t\t\t\t\t\t\n\t\t\t\t\t\tcuraction.authentication = authenticationOptions\n\t\t\t\t\t\t\tif (curaction.selectedAuthentication === null || curaction.selectedAuthentication === undefined || curaction.selectedAuthentication.length === \"\")\n\t\t\t\t\t\t*/}\n \n {\n setAuthenticationModalOpen(true);\n }}\n >\n \n \n \n
\n
\n ) : null}\n\n {showEnvironment !== undefined && showEnvironment && environments.length > 1 ? (\n
\n Environment\n {\n const env = environments.find((a) => a.Name === e.target.value);\n setSelectedActionEnvironment(env);\n selectedAction.environment = env.Name;\n setSelectedAction(selectedAction);\n }}\n style={{\n backgroundColor: theme.palette.inputColor,\n color: \"white\",\n height: \"50px\",\n borderRadius: theme.palette.borderRadius,\n }}\n >\n {environments.map((data, index) => {\n if (data.archived === true) {\n return null;\n }\n\n return (\n \n {data.Name}\n \n );\n })}\n \n
\n ) : null}\n\n {workflow.execution_variables !== undefined &&\n workflow.execution_variables !== null &&\n workflow.execution_variables.length > 0 ? (\n
\n Execution variable (optional)\n 0 \n ? selectedAction.execution_variable.name\n : \"No selection\"\n }\n SelectDisplayProps={{\n style: {\n marginLeft: 10,\n },\n }}\n fullWidth\n onChange={(e) => {\n if (e.target.value === \"No selection\") {\n selectedAction.execution_variable = { name: \"No selection\" };\n } else {\n const value = workflow.execution_variables.find(\n (a) => a.name === e.target.value\n );\n selectedAction.execution_variable = value;\n }\n setSelectedAction(selectedAction);\n setUpdate(Math.random());\n }}\n style={{\n backgroundColor: theme.palette.inputColor,\n color: \"white\",\n height: \"50px\",\n borderRadius: theme.palette.borderRadius,\n }}\n >\n \n No selection\n \n \n {workflow.execution_variables.map((data) => (\n \n {data.name}\n \n ))}\n \n
\n ) : null}\n\n \n
\n {/*hideExtraTypes ? null : \n\t\t\t\t\t
\n\t\t\t\t\t\tActions\n\t\t\t\t\t
\n\t\t\t\t*/}\n\n {setNewSelectedAction !== undefined ? (\n {\n\t\t\t\t\t\t\t// Most popular\n\t\t\t\t\t\t\t// Is categorized\n\t\t\t\t\t\t\t// Uncategorized\n\t\t\t\t\t\t\treturn option.category_label !== undefined && option.category_label !== null && option.category_label.length > 0 ? \"Most used\" : \"All Actions\";\n\t\t\t\t\t\t}}\n\t\t\t\t\t\trenderGroup={(params) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t
  • \n\t\t\t\t\t\t\t\t\t{params.group}\n\t\t\t\t\t\t\t\t\t{params.children}\n\t\t\t\t\t\t\t\t
  • \n\t\t\t\t\t\t\t)\t\n \t\t\t\t\t}}\n options={selectedApp.actions.filter((a) => a.category_label !== undefined && a.category_label !== null && a.category_label.length > 0).concat(sortByKey(selectedApp.actions, \"label\"))}\n ListboxProps={{\n style: {\n backgroundColor: theme.palette.inputColor,\n color: \"white\",\n },\n }}\n\t\t\t\t\t\tfilterOptions={(options, { inputValue }) => {\n\t\t\t\t\t\t\t//console.log(\"Option contains?: \", inputValue, options)\n\t\t\t\t\t\t\tconst lowercaseValue = inputValue.toLowerCase()\n\t\t\t\t\t\t\toptions = options.filter(x => x.name.replaceAll(\"_\", \" \").toLowerCase().includes(lowercaseValue) || x.description.toLowerCase().includes(lowercaseValue))\n\n\t\t\t\t\t\t\treturn options\n\t\t\t\t\t\t}}\n getOptionLabel={(option) => {\n if (option === undefined || option === null || option.name === undefined || option.name === null ) {\n return null;\n }\n\n const newname = (\n option.name.charAt(0).toUpperCase() + option.name.substring(1)\n ).replaceAll(\"_\", \" \");\n\n return newname;\n }}\n fullWidth\n style={{\n backgroundColor: theme.palette.inputColor,\n height: 50,\n borderRadius: theme.palette.borderRadius,\n }}\n onChange={(event, newValue) => {\n // Workaround with event lol\n if (newValue !== undefined && newValue !== null) {\n setNewSelectedAction({ \n\t\t\t\t\t\t\t\t\ttarget: { \n\t\t\t\t\t\t\t\t\t\tvalue: newValue.name \n\t\t\t\t\t\t\t\t\t} \n\t\t\t\t\t\t\t\t});\n }\n }}\n renderOption={(data) => {\n var newActionname = data.name;\n if (data.label !== undefined && data.label !== null && data.label.length > 0) {\n newActionname = data.label;\n }\n\n var newActiondescription = data.description;\n\t\t\t\t\t\t\t//console.log(\"DESC: \", newActiondescription)\n if (data.description === undefined || data.description === null) {\n\t\t\t\t\t\t\t\tnewActiondescription = \"Description: No description defined for this action\"\n } else {\n\t\t\t\t\t\t\t\tnewActiondescription = \"Description: \"+newActiondescription\n\t\t\t\t\t\t\t}\n\n const iconInfo = GetIconInfo({ name: data.name });\n const useIcon = iconInfo.originalIcon;\n\n newActionname = (\n newActionname.charAt(0).toUpperCase() +\n newActionname.substring(1)\n ).replaceAll(\"_\", \" \");\n\n\t\t\t\t\t\t\tvar method = \"\"\n\t\t\t\t\t\t\tvar extraDescription = \"\"\n\t\t\t\t\t\t\tif (data.name.includes(\"get_\")) {\n\t\t\t\t\t\t\t\tmethod = \"GET\"\n\t\t\t\t\t\t\t} else if (data.name.includes(\"post_\")) {\n\t\t\t\t\t\t\t\tmethod = \"POST\"\n\t\t\t\t\t\t\t} else if (data.name.includes(\"put_\")) {\n\t\t\t\t\t\t\t\tmethod = \"PUT\"\n\t\t\t\t\t\t\t} else if (data.name.includes(\"patch_\")) {\n\t\t\t\t\t\t\t\tmethod = \"PATCH\"\n\t\t\t\t\t\t\t} else if (data.name.includes(\"delete_\")) {\n\t\t\t\t\t\t\t\tmethod = \"DELETE\"\n\t\t\t\t\t\t\t} else if (data.name.includes(\"options_\")) {\n\t\t\t\t\t\t\t\tmethod = \"OPTIONS\"\n\t\t\t\t\t\t\t} else if (data.name.includes(\"connect_\")) {\n\t\t\t\t\t\t\t\tmethod = \"CONNECT\"\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// FIXME: Should it require a base URL?\n\t\t\t\t\t\t\tif (method.length > 0 && data.description !== undefined && data.description !== null && data.description.includes(\"http\")) {\n\t\t\t\t\t\t\t\tvar extraUrl = \"\"\n\t\t\t\t\t\t\t\tconst descSplit = data.description.split(\"\\n\")\n\t\t\t\t\t\t\t\t// Last line of descSplit\n\t\t\t\t\t\t\t\tif (descSplit.length > 0) {\n\t\t\t\t\t\t\t\t\textraUrl = descSplit[descSplit.length-1]\n\t\t\t\t\t\t\t\t} \n\n\t\t\t\t\t\t\t\t//for (let [line,lineval] in Object.entries(descSplit)) {\n\t\t\t\t\t\t\t\t//\tif (descSplit[line].includes(\"http\") && descSplit[line].includes(\"://\")) {\n\t\t\t\t\t\t\t\t//\t\tconst urlsplit = descSplit[line].split(\"/\")\n\t\t\t\t\t\t\t\t//\t\ttry {\n\t\t\t\t\t\t\t\t//\t\t\textraUrl = \"/\"+urlsplit.slice(3, urlsplit.length).join(\"/\")\n\t\t\t\t\t\t\t\t//\t\t} catch (e) {\n\t\t\t\t\t\t\t\t//\t\t\t//console.log(\"Failed - running with -1\")\n\t\t\t\t\t\t\t\t//\t\t\textraUrl = \"/\"+urlsplit.slice(3, urlsplit.length-1).join(\"/\")\n\t\t\t\t\t\t\t\t//\t\t}\n\n\n\t\t\t\t\t\t\t\t//\t\t//console.log(\"NO BASEURL TOO!! Why missing last one in certain scenarios (sevco)?\", extraUrl, urlsplit, descSplit[line])\n\t\t\t\t\t\t\t\t//\t\t//break\n\t\t\t\t\t\t\t\t//\t} \n\t\t\t\t\t\t\t\t//}\n\n\t\t\t\t\t\t\t\tif (extraUrl.length > 0) {\n\t\t\t\t\t\t\t\t\tif (extraUrl.includes(\" \")) {\n\t\t\t\t\t\t\t\t\t\textraUrl = extraUrl.split(\" \")[0]\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (extraUrl.includes(\"#\")) {\n\t\t\t\t\t\t\t\t\t\textraUrl = extraUrl.split(\"#\")[0]\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\textraDescription = `${method} ${extraUrl}`\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t//console.log(\"No url found. Check again :)\")\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n return (\n \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{useIcon}\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{newActionname}\n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t{extraDescription.length > 0 ? \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{extraDescription}\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t: null}\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n );\n }}\n renderInput={(params) => {\n\t\t\t\t\t\t\tif (params.inputProps !== undefined && params.inputProps !== null && params.inputProps.value !== undefined && params.inputProps.value !== null) {\n\t\t\t\t\t\t\t\tconst prefixes = [\"Post\", \"Put\", \"Patch\"]\n\t\t\t\t\t\t\t\tfor (let [key,keyval] in Object.entries(prefixes)) {\n\t\t\t\t\t\t\t\t\tif (params.inputProps.value.startsWith(prefixes[key])) {\n\t\t\t\t\t\t\t\t\t\tparams.inputProps.value = params.inputProps.value.replace(prefixes[key]+\" \", \"\", -1)\n\t\t\t\t\t\t\t\t\t\tif (params.inputProps.value.length > 1) {\n\t\t\t\t\t\t\t\t\t\t\tparams.inputProps.value = params.inputProps.value.charAt(0).toUpperCase()+params.inputProps.value.substring(1)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n return (\n\t\t\t\t\t\t\t\t\n );\n }}\n />\n ) : null}\n\n {/*setNewSelectedAction !== undefined ? \n\t\t\t\t\t\n\t\t\t\t\t\t{sortByKey(selectedApp.actions, \"label\").map(data => {\n\t\t\t\t\t\t\tvar newActionname = data.name\n\t\t\t\t\t\t\tif (data.label !== undefined && data.label !== null && data.label.length > 0) {\n\t\t\t\t\t\t\t\tnewActionname = data.label\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst iconInfo = GetIconInfo({\"name\": data.name})\n\t\t\t\t\t\t\tconst useIcon = iconInfo.originalIcon\n\n\t\t\t\t\t\t\t// ROFL FIXME - loop\n\t\t\t\t\t\t\tnewActionname = newActionname.replaceAll(\"_\", \" \")\n\t\t\t\t\t\t\tnewActionname = newActionname.charAt(0).toUpperCase()+newActionname.substring(1)\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{useIcon} \n\t\t\t\t\t\t\t\t\t{newActionname}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t})}\n\t\t\t\t\t\n\t\t\t\t: null*/}\n\n \n \n
    \n
    \n
    \n );\n};\n\nexport default ParsedAction;\n","/* eslint-disable react/no-multi-comp */\nimport React, { useState, useEffect, useLayoutEffect } from \"react\";\nimport ReactDOM from \"react-dom\"\n\nimport { useInterval } from \"react-powerhooks\";\nimport { makeStyles, useTheme } from \"@material-ui/core/styles\";\n\nimport { v4 as uuidv4 } from \"uuid\";\nimport { useNavigate, Link, useParams } from \"react-router-dom\";\n// import { Prompt } from \"react-router\"; // FIXME\nimport { useBeforeunload } from \"react-beforeunload\";\nimport ReactJson from \"react-json-view\";\nimport NestedMenuItem from \"material-ui-nested-menu-item\";\nimport ReactMarkdown from \"react-markdown\";\nimport { useAlert } from \"react-alert\";\nimport theme from '../theme.jsx';\nimport { isMobile } from \"react-device-detect\"\nimport aa from 'search-insights'\nimport Drift from \"react-driftjs\";\n\n//import { Cron } from 'react-js-cron';\n//import 'react-js-cron/dist/styles.css'\n\n\nimport { InstantSearch, Configure, connectSearchBox, connectHits, Index } from 'react-instantsearch-dom';\nimport algoliasearch from 'algoliasearch/lite';\n\nimport {\n Zoom,\n Avatar,\n Popover,\n TextField,\n Drawer,\n Button,\n Paper,\n Grid,\n Tabs,\n InputAdornment,\n Tab,\n ButtonBase,\n Tooltip,\n Select,\n MenuItem,\n Divider,\n Dialog,\n DialogActions,\n DialogTitle,\n InputLabel,\n DialogContent,\n FormControl,\n IconButton,\n Menu,\n Input,\n Fade,\n FormGroup,\n FormControlLabel,\n Typography,\n Checkbox,\n Breadcrumbs,\n CircularProgress,\n SwipeableDrawer,\n Switch,\n Chip,\n Card,\n List,\n ListItem,\n ListItemText,\n ListItemAvatar,\n Badge,\n} from \"@material-ui/core\";\n\nimport {\n AvatarGroup,\n} from \"@mui/material\"\n\nimport {\n Folder as FolderIcon,\n LibraryBooks as LibraryBooksIcon,\n OpenInNew as OpenInNewIcon,\n Undo as UndoIcon,\n GetApp as GetAppIcon,\n Search as SearchIcon,\n Visibility as VisibilityIcon,\n Done as DoneIcon,\n Close as CloseIcon,\n Error as ErrorIcon,\n ArrowLeft as ArrowLeftIcon,\n Cached as CachedIcon,\n DirectionsRun as DirectionsRunIcon,\n Polymer as PolymerIcon,\n FormatListNumbered as FormatListNumberedIcon,\n PlayArrow as PlayArrowIcon,\n AspectRatio as AspectRatioIcon,\n MoreVert as MoreVertIcon,\n Apps as AppsIcon,\n Schedule as ScheduleIcon,\n FavoriteBorder as FavoriteBorderIcon,\n Pause as PauseIcon,\n Delete as DeleteIcon,\n AddCircleOutline as AddCircleOutlineIcon,\n Save as SaveIcon,\n KeyboardArrowRight as KeyboardArrowRightIcon,\n ArrowBack as ArrowBackIcon,\n Settings as SettingsIcon,\n LockOpen as LockOpenIcon,\n ExpandMore as ExpandMoreIcon,\n VpnKey as VpnKeyIcon,\n AddComment as AddCommentIcon,\n Edit as EditIcon,\n\tSend as SendIcon,\n} from \"@material-ui/icons\";\n\nimport {\n Preview as PreviewIcon,\n ContentCopy as ContentCopyIcon,\n Circle as CircleIcon,\n\tSquareFoot as SquareFootIcon,\n\tAutoFixHigh as AutoFixHighIcon,\n} from '@mui/icons-material';\n\nimport Autocomplete from \"@material-ui/lab/Autocomplete\";\n\nimport * as cytoscape from \"cytoscape\";\nimport * as edgehandles from \"cytoscape-edgehandles\";\nimport * as clipboard from \"cytoscape-clipboard\";\nimport CytoscapeComponent from \"react-cytoscapejs\";\nimport undoRedo from \"cytoscape-undo-redo\";\n\nimport Draggable from \"react-draggable\";\n\nimport cytoscapestyle from \"../defaultCytoscapeStyle.jsx\";\nimport cxtmenu from \"cytoscape-cxtmenu\";\n\nimport { validateJson, GetIconInfo } from \"./Workflows.jsx\";\nimport { GetParsedPaths } from \"./Apps.jsx\";\nimport ConfigureWorkflow from \"../components/ConfigureWorkflow.jsx\";\nimport AuthenticationOauth2 from \"../components/Oauth2Auth.jsx\";\nimport ParsedAction from \"../components/ParsedAction.jsx\";\nimport PaperComponent from \"../components/PaperComponent.jsx\"\nimport ExtraApps from \"../components/ExtraApps.jsx\"\nimport EditWorkflow from \"../components/EditWorkflow.jsx\"\n// import AppStats from \"../components/AppStats.jsx\";\n\nexport const triggers = [\n {\n name: \"Webhook\",\n type: \"TRIGGER\",\n status: \"uninitialized\",\n trigger_type: \"WEBHOOK\",\n errors: null,\n large_image:\n \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAIAAAD/gAIDAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAAAB3RJTUUH4wYNAxEP4A5uKQAAGipJREFUeNrtXHt4lNWZf8853zf3SSZDEgIJJtxCEnLRLSkXhSKgTcEL6yLK1hZWWylVbO1q7SKsSu3TsvVZqF2g4haoT2m9PIU+gJVHtFa5NQRD5FICIUAumBAmc81cvss5Z/845MtkAskEDJRu3r8Y8n3nfc/vvOe9zyDOOQxScoRvtAA3Ew2C1Q8aBKsfNAhWP2gQrH7QIFj9oEGw+kGDYPWDBsHqBw2C1Q+SbrQAPSg+/ULoRkvTjf4uwOKMAeeAEMI4AaBuf7rRhG5kIs05Zxxh1AUQ5yymUkVFgLBFxhZzbw///wGLUyZ2zikLn2oIVJ3o+NtZ5Xyb5u/gmgYAyCTLLqdlRKajaFRqeZFtTA7C+BJk5MZo2Y0Ai3EOHGGshyIX393btnNv5FQjjSoIYyQRRDBgdOkxyriuc8aJzeIozMu4d2rG16YQm4UzhtANULHrDRZnDGHMGW/b9lHzxh3RxlZslrHFjDAG4JxziBcHAUIIAHHGWFRhqmYblZ3z7bmZc24HAM75dTZk1xUsThkiWPn84umVv/btrSF2K7aYOGPA+pYBYQQIs5hCo8qQGRNGP/9vpky3WPAfECyxseCntSef+6Xq8UupDk4Z9Jc7QohgzR+yDMsY9/OlzpIx1xOv6wSW2JJvb03tM78AxrHVzHWaiAJGAMA5F4p2KYzgnHMG3WVEEqGRGDbJhWt+kFpedN3wuh5gCTsVPHzyb9/9L845Nkmcsm5CEMw0yiIxzhg2ycgkAQemqFyniBBiMyOJXOYVRcNmuXjDMntBnmBx84PFOSCktvmOLHxR9fiJ1Ry/bYQxZ0wPhk3pLtek4tQJhda84cRpA8Y0bzBS3xz4tDZYXav5QlKKXTwcjxcNxyy3ZJVufkFKtQtG/whg1f77Lzy7K+U0Z/ztQwTTiIJN0rAFdw97+G5TRlrihjkAAuVzT8tbu1ve3s01SmzdsZaI5g1m/cudY158/Doo18CCJTbg2V158plfXLLocUjpoYhtdE7+T5bYx+WKaJNR2mW8GOMciERESBWuPXdq2brIuRbJYU3QTRqOFq37oWtSyUDjNZBHwQFhzCk9v3knkqV4Iy2QcpaMKfnf5fZxuZxSRhlgREwykSVMCCaEyLJkkhHGlFKuU3tBXvH/LncU5Okd0QRzzjk/v2kngAjKBpAGULPEOXv/8umJ7/+3lGLvUgeMuKKZhrpLNv6nKcPFKeUIYYxVVa2srKyurm5ra+Ocp6enl5WVTZo0yW63M8YQ40giyueeo4+u1HwhJEtG2IEwohFl/Gv/kTqhcECVa8CrDhd3HUhw/MCBUzbquYXxSFVVVb322mv19fWcc0IIAFBKt2/fnp2dvWjRorvuuosBA52ah6ePfPYbtc++KpnkrmNGiGm65739qRMKYSAt8ICBxTnCWPd3hGrqsNXEO2N0RLAeDKffNTHtjjLOmEBq+/bta9askSQpJSUFRKjVeafa29tXrlx57ty5b3/72wwYMDZkZrl76q3eTw5LDptwjpxxYjEFDp2gkRixWQbOLQ6UxooNh+sa1Yu++CvDOUeEDJ03AwAYYxjjysrKNWvW2Gw2i8VCKaWUMsYYY+LfJpPJ7Xa/8cYbW7duxRgzygAga96M7k6TI5OstHgi9ecN1jcTWOI6hOuamKp12V2EWEyz5g1LuTUfAIgkqaq6YcMGSZIwxoyxnssI4FJSUjZv3nz+/HkiSxwg5bYCS3YGUzUDMoQRjamR+maD9U0FFgAAKOfb4j8ijLiq2gvzsNlENR0A/vrXv545c8ZqtV4WqUuwcy5JUiAQePfddwGA6TpxWO1jb2GKGuf+EHDeye6m0ywEAKB6At19E+KM20ZmCwwA4NChQ8ncGsaY2WyuqakBAIwwAFhGZHLGoOsuckBIC3R08b6ZwAIEACyqAEJxJ80BITnNCSJPBmhpaSGEJIMXIcTr9YZCIRFkSSkO4Im4cI32uc7fJ1gCMdTjUvD4/I5Smnwk2R3TnvhybJYHdDcDBxYHAOKwivwu/r/VNp+xc5fL1Yu1iidKqdvtdjgcwBgA6MEIksilAjQAAAIO8pDUK+D4dw4WBwAwZ6bF6xFwQBIJ1zaI3QFAfn5+Msol4vuioiKEEKUMAMKnGvVAB4sqAIAIRhghgq25WWAsfTOBBQAA1lHZ8QER54xYzKEjdbHzF4kkAcC0adNSU1P7xIsxJsvytGnToNPYDX/kazmP3WcdORwY1/whzRfEZpM9PxcGMkMcqAheSOwoHNmtSMAByUT1Bi5s+yj3yflU1YYPH37fffdt3rw5IyND07TLLoUxjkQixcXFZWVlAIAJBoC020vTbi/llEbPtgQ/O+X75DAgZM0bBgBxd/MmAUtIbBuTYxuT03H8LLaZRbGYMyY5bK1v7U6/a5J93C3A2KJFi86ePfvxxx+73W6EEO8kYyURZ/l8Pr/f73K5OOcIIc4YcECECBZZ/zIjsU49AERefPHFAVpatFH1QNi3t4ZYLV1FAkJoROk4Vp9RMRmbTRjgjqlTFUU5fvx4OBxmjBFCJEmKx0uW5ZaWFoTQhAkTRJKEuspeHBgDQNehDD+AYCEEgJBleMbFXQeYonRFp5xjsxxrbus4cTZ9ZjkyyRjQpMmTJk2a5HA4CCHBYDAYDJrNXb17zrnZbD516tTkyZPdbrdQrk4uCGE80JWsAQdLtOYlp412RPz7jxK7pas/yDmxWiKnmwNVf3NNKpZTHUyn6RkZEyZMqKiomDlzJqX02LFjstwVNxFCOjo6gsHgV77ylXiwricNJFidymUvHOn96FPNF8Iy6YqBOCdWS6y5zbPrgGVYhn3sCM454xwB2Gy2iRMnyrJ84MABi8Ui7iPn3GKxnD59urCwMCcnh4kO/j8SWIAQZ4xYTObsjIvv7sMmU7euKufEYqJR5eJ7+yOnmx35t5jcKUh08TkvLS2tra09d+6c2Ww2Klyapn3++ecVFRX4RkwgDXyvDWPOmHvabTmL7lG9ASSR+L9yypAkSU57+wdVNQ8tC59sAIRwZ1S5cOFCWe6qiDLG7Hb70aNH33vvPQCgdMDd3/UGS+AFnOc+9VBGxRTN40+skXMOCBBBriml9nG5wAEwEuWtwsLCmTNnhkIhUWgWeFkslt///vfBYDDJDPwmA6sTMzT25e+4Z5TTmJI43kcZtphzn3jwEnaXHkcAsGDBApfLpeu6+CjcYlNT0zvvvCOwS2DSM0z7uwNLVIF7ExEhTimxmrMeuJPTbrYZEaIHw8Mevts2dgSnzIi/EUKU0pycnHvuuaejo8MwUowxh8Oxffv2pqYmQohRiTbsmiDOuZAqyUR9wMHinAuMMMaEkN7dEyKEa3rz5h0ovm6DEI0ptlHZ2YvuATFXFC8cxgDw4IMPZmdnK4piKJckScFg8Le//a1AhxAiwlRKaSwWi8ViQhOFVBhjQ85rBOvq0x3hvAkhuq7X1tZ++OGHxcXFM2fOFBF2IqyUIYJb3v4gWH1STnMa2SLCiCvaiMUPSE5bz2EYsf/U1NSHHnpo9erVZrNZGHVKqcPh+Oijj2bNmjV06NCqqqqzZ8+2trYGAgFFUcRVTU1NzcrKys/PLykpycvLEwbusrIlT1fTZBVGAWOsKMr777+/Y8eOc+fOeb3emTNnrlq16jICcQ4IKa3tRx75T70jiiQiDJPoS6fdXlr0Pz/svX+l6/rSpUtPnz4dX60XKqZpWjgcRgiJrodgLVRJ3EGbzTZ69OhZs2bNmjXL4XCI168Osn6DZSB18ODB1157ra6uzmw2WywW4dc3bNhg5LpdrzCGMD790uutf/hIdjl5nMvnjJX8eoWjaOSlSeTLkUB///79K1asEN3pS6IjZGi3IVjXxhASMlBKFUVRVTU7O3vBggWzZ88mhFydivXvBYECY2z9+vXPPfdcY2Ojy+Uym82Ct8fjOXnyJHSv/wqkAlV/a9uxV0qxG0hdsuvzZjqKRl6aXL6SiBhzzqdMmTJ58uR4S28cSbyNN8joPAKA1Wp1uVxer/fnP//5s88+29zcjDG+ijCtH2AJ4SKRyIoVK7Zs2eJwOERb1HBDlFLRgOl2whhzxhrXvgPxCQpCLKZYc4flPHYf9LDrl2UNAN/85jeFCvd3kwI4WZbdbndNTc3SpUurqqqEJx0QsARSsVhs+fLl+/btGzJkiGh/xj9gsVg+++wzADBiSGHIW9/5MFBdSzq77QIdqqgjFv+z5HJyyvrstosYNT8/v6KioqOjw1i/60jifJ+4gD0dNOdc13Wn0xmLxZ5//vmPP/64v3j17xquWrWqqqoqLS1N1/WEzXDOI5GI1+v1+/1CMuAcEay2+Zp/vZ3YrF1ICbs+pSzz3qnimWRYGzGqqKkaKAhQdF0PhUJ+vz8cDiuKEovFxEdVVRMgEyomy/JPfvKTQ4cOCfuV5PaTMvDCJG3ZsuVXv/qV2+1OQIoQEo1GAWDOnDmPPPJIenr6pWImZYjg+pc3try9W3aldLPrlJX8erlj/Khe7HpPopQSQt56661169aJthBCKBqNapqWlZVVXFxcVFSUk5PjcDgope3t7bW1tZWVlWfPnrVarbIsx4MiOiB2u/2Xv/zl8OHDk6z59A2WQOrUqVPf+973hJLHvyJqdaNGjXr66adLSkqEQgHnopETrD55bPFPsVmOL5NqvmD2wntGPvP1/k4Ziy0pivLEE080NzcDgKIo48ePv/fee6dMmeJ0Onu+oqrqn//8502bNnk8HgFivOShUKi8vHzVqlVJgtW3rGKVTZs2xWKxhNwVYxwIBO666661a9eWlJRQTeeMI4wRJqK60LD2HR7fuUGIKYr1lqycbyVl13tKIvr43/jGN/x+//Dhw1944YVXX331q1/9ak+kdF3XNE2W5YqKivXr1992220i9zYeoJQ6nc7Kyspdu3aJlfsWoHfNEmpVXV397LPP2my2BE0OBoMPP/zwkiVLOOeMUiJJwHnH8TO+/UeiDa1Ki6fj+JluI3oEa/6O/Je/k3nftGsZXldVdffu3VOnTk1JSaGUCn1vbW09d+5cOBx2OBy5ublZWVnQOYQjYteXXnpp37594hUDfVVVc3Jy1q9fbzKZ+tSvpNKdnTt3JgBPCAkEAnPnzl2yZAljDBgnktRx4lzDq28Gqk4wRUUYIUnCVnPcMCPWO6JpU0oy75uWvF2/LMmyPGfOHM650J36+vrNmzfX1NSIfgfG2OFwFBUVPfzww7feeit0th2XL1/+gx/8oK6uzkgDhAc/c+bM/v37p0+f3idYvUksIvW2trbDhw8b5V2hU+FwuLS0dOmTS4WRwhK5+O7eo4te8h84hq0mOS1FSnUQmxl6qO2wf60A0ZK5NtJ1Xdd1WZb37Nnz5JNP7tmzR6QQTqfTbrfrun7w4MGnn3769ddfN3Jsi8Xy/e9/32QyJUQ8CKEPP/wwGaa9gSUWPXLkiNfrja9YiqTs8ccfl2SJ6RQT4v3o01PPr0cESyl2YJxTyinrhghCTNflNKejIA/6b60SSKQ4Aqkf//jHACDmK1knIYQcDofD4di0adPatWtF2EUp7RmpCeWqra31er0iALpKsAQdO3as2wsYh8Ph8vLykpISRimRJc0XPLPqDWySESH8ijEeRwhxnTJNv/yfe6WEhzVNa2xsXLt27cqVKyVJkiSpZ2wpUov09PS33nrrk08+MZz47Nmz7Xa78bw4eK/XW1dXB32NWPZms0QW1tDQEN/yFI7jjjvuABGgE3Lhjx/Hmi/IQ1J76wlzQBLR/aHQkTpLdgZw0HTtpZdeunDhgqGz8ZoLcSMLRj3PCFxCodCFCxcikYhwgldyZAJok8n05ptvTps2Texi9OjRY8eOPXbsmOGvEEK6rp85c2bixIlXCZYR1Hi93viIgVJqs9ny8/MBQMQH/n2fYbOczHcGOQf/viMZX5sCCBBAQ0NDY2OjyMMNXC4rSYJUGGNZlsVESe8cRc3+9OnTtbW1BQUFlFJJkvLz82tqarpVaxFqaWnpU/4+vGEsFotGo0aiLyyl3W53uVwAgDGm4ZjS6kXdu+1XQh+bpGhDi1iIcS5JktVqFT4brnwFeiIoVCbJtE7U3c6ePVtQUCBOJTs7O1EwjEWWdk2hA6XUaBYYS4uzvfSRMZ5kbsUBEKLRGNN0LEuqoookySif94JyUuv3SqFQyPh3zwhWdCT7BKsPA08Iib+D4hCi0WhHR4f4KDltl8rEffo3BMA5sVmQLAFAIBgIh8M9HRBOmvrVkbbZbMa/e842iX31uUgfmmWxWGw2WyAQiIcvHA6fP38+JyeH6TqRZcf40aGj9cRm4dDbvUAIMVW3jc4RW2xtbY1EIglZAQBEo9FkWvPC5ffp7MWTsizn5nbNuXk8noS3OOd2ux3iCor9A0v4HbPZ7Ha7m5ubDdcrzNaRI0cmTpwoBhIzKiZf+MOfk/i2M0IYDZn5ZfHh5MmT8ZUWQ+hx48bFB8BXIoxxXV2dqMD08rDwUSNGjCgoKIDOQlt9fX38W8K/Z2RkwLWEDmJUatSoUdXV1cauGGMmk+ngwYOLFi2SZZkzlvJP49Lvnti2Y4+c7uJXCKOQLGntAff0L6XdUSbKMtXV1fGBrrAamZmZr7zyitVq7f2ERU6za9eun/70p737REJIJBKZO3euLMuiwhMMBk+cOGHMTxjcher1cUJ9PlFaWhpflhH6X19ff+DAAQBgjAPAyB9+016Qp3mDSJa6RecIxE9baN6AbXTOmBWPcgCEUV1d3fHjx+NrxMJnFRUVWa1WsfleYlShCxUVFXPnzvV4PKKv01OnJElqb2+/884777//fuP/9+3b19raGn9OIhgaM2YMXIuBFxKUlZVlZmYmXBlRC1RVlUiEMyanOYvW/tBVXqRe9NGoIhwfIMQp18NRzRtMu71s/Gv/Ycp0i2+hbNu2LRqNxhdMBARixBbiAtFeiHP+1FNPPfDAA+3t7bFYTJRMBWGMNU3zeDzTp09ftmyZWJ8QEovFtm7dmqDRqqrm5uaOHDkS+mqR9TZyJA7QarU2NzcfO3ZM3A7oHDg4f/68pmnl5eWMMQQgOW0Zs6eYh6Vr7UE9GGaKyhmT7NaU0rF5Tz2Uu/QhyWnTNU2S5YMHD77++uvxpt0olSxevFiSJKOL1QsZKnb77bePGDGiqanJ4/FEIhHRkWaMDRs27Fvf+tbixYvFRJy4uZs2bfrLX/5idA+h01/df//9ZWVlotrTC9Ok6lmnT59eunRpwkIY446OjieeeGLevHmMMc4YxgRhxClTWjxaewAINg8dYspwAQCjjDEqyXJTU9Mzzzzj9/vjj5cQ4vf7n3zyyfnz5wvL0jtSRtdPhKaiXFVbW1tfX9/R0WGz2UaOHFlYWGhcc1HS2r1796pVq4wjN0CXJGn9+vXJFJeTLSuvXr1627ZtLpcrvnIGAOFweMGCBY899pjwL1TTESGks1bFAZiuIwBECELoxIkTK1eu9Hg88dbKMO3r1693OBy9SywagoSQ999/v7m5+ZFHHjFKLglnKXA0ksrdu3e/8sorwrolHNK8efOWLl2aTNu1b7CE9F6v97vf/a7P54uvBwlRgsFgUVHRwoULy8vLeyqFeP3ixYtbt27dtm2bqAvHx1aijvjCCy/MmDGjd4kNULZs2bJx40Zd10ePHj1//vzp06dbLBYDSsFRHJ5o3/3mN795++23E+IykT87nc5169YZTZZrBctQrn379okGekLZRLhnSunYsWPLy8sLCgoyMzOtVquu636/v6Gh4bPPPqupqfH5fA6HI+FLmGLAfc6cOc8991zvSInNqKq6Zs2anTt3ulwukUsoipKXlzdt2rSJEyfm5eWJ2FLI3NLScuDAgR07djQ0NIgUJ0HsQCCwbNmyu+++O8lufrKzDmK53/3ud+vWrXO73QkJneAUi8UURcEYm81mSZIYY6qqappGCLFarT2rTuIrl+PHj+8zthJ/8vl8K1eurK6uNqyBuGLCqJvN5vT09IyMDNHF8Xq9LS0twWDQYrGIznkC6/b29vnz5yd5AfsHloHXhg0b3njjjbS0tJ5lOSF6fMXOqED1fFiSJL/fn5+fv2rVqoTR9ssiFYlEHn/88aampiFDhqiq2pMvY0zTNF3XjWkRWZbFmfVk3d7ePmvWrBUrViTjeQ3qx7SyiCQmTJhgNpsPHDggiko9k6wEX9MTJoGg1+udMGHCyy+/LPS0l7MVcJtMJrvdXl1dLZQoIaMULAghpk4yRmsSWAOAz+ebPXv2j370I/FM8mD1e+RIuPa9e/euXr3a4/E4nU5xqsmsI2AKh8MA8OCDDz722GOiUZzMLRD6dfz48Z/97GeNjY0pKSn9moQRrCORCAAsWrTo61//ekI9dkDAMvDyeDwbN2784IMPFEWx2Wwi9rvs3RQC6bouClhlZWWPPvpoaWmpuC/JiytgDYVCGzdu/NOf/iT678LrXbZUD3GWQdjT4uLiJUuWFBcX95f11YMFnTOSCKFTp0798Y9/rKysbG9vFwGeMcoCnbM+uq5zzlNSUkpLS++9994vf/nLQhmvQlzjrZMnT7755ptVVVWhUEiWZXHv4hcUcZamaaqqSpI0ZsyYBx54YMaMGcKKXafJP4PEYRpW4PDhw0ePHhXzkiKSEG4xLS1txIgR48eP/9KXvjRs2LCEF6+Rb1NT0549ew4dOtTY2BgMBjVNM7YjSZLNZhs6dGhxcfHUqVNLS0tFw+JaWF/rD/f0jJ5VVY1EIrquY4ytVqvVau3l4S+Kr8/na2lpuXjxomhKWywWt9udlZU1dOhQw9KL0P9amH4xv3IkRIFOO9pzY+I8v/CvJiWzskh6vpAT+uJ/Eqqngf9i178S0wQbb1RyvkAuN/S3lW82uvE/hX0T0SBY/aBBsPpBg2D1gwbB6gcNgtUPGgSrHzQIVj9oEKx+0CBY/aD/A/ORNiwv2PAfAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE5LTA2LTEzVDAzOjE3OjE2LTA0OjAwj3mANAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxOS0wNi0xM1QwMzoxNzoxNS0wNDowMM/MIhUAAAAASUVORK5CYII=\",\n is_valid: true,\n label: \"Webhook\",\n environment: \"onprem\",\n description: \"Custom HTTP input\",\n long_description: \"Execute a workflow with an unauthicated POST request\",\n },\n {\n name: \"Schedule\",\n type: \"TRIGGER\",\n status: \"uninitialized\",\n description: \"Specify time\",\n trigger_type: \"SCHEDULE\",\n errors: null,\n large_image:\n \"data:image/png;base64,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\",\n label: \"Schedule\",\n is_valid: true,\n environment: \"onprem\",\n long_description: \"Create a schedule based on cron\",\n },\n \n {\n name: \"Office365\",\n type: \"TRIGGER\",\n status: \"uninitialized\",\n description: \"O365 email trigger\",\n trigger_type: \"EMAIL\",\n errors: null,\n is_valid: true, \n label: \"Email\",\n environment: \"cloud\",\n large_image:\n \"data:image/jpg;base64,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\",\n long_description: \"Execute a workflow when you get an email\",\n },\n {\n name: \"Gmail\",\n type: \"TRIGGER\",\n status: \"uninitialized\",\n description: \"Gmail email trigger\",\n trigger_type: \"EMAIL\",\n errors: null,\n is_valid: true, \n label: \"Email\",\n environment: \"cloud\",\n large_image:\n \"data:image/jpg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/hAzFodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTIyMjgyMEYwMDJDMTFFQkJBOEE5OUJBM0MzMTA2RDIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTIyMjgyMTAwMDJDMTFFQkJBOEE5OUJBM0MzMTA2RDIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozQTMwMDQxRTAwMEUxMUVCQkE4QTk5QkEzQzMxMDZEMiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBMjIyODIwRTAwMkMxMUVCQkE4QTk5QkEzQzMxMDZEMiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pv/bAEMAAwICAwICAwMCAwMDAwMEBwUEBAQECQYHBQcKCQsL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\",\n long_description: \"Execute a workflow when you get an email\",\n },\n\t\t{\n name: \"Shuffle Workflow\",\n type: \"TRIGGER\",\n status: \"uninitialized\",\n trigger_type: \"SUBFLOW\",\n errors: null,\n large_image:\n \"data:image/png;base64,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\",\n is_valid: true,\n label: \"Subflow\",\n environment: \"onprem\",\n description: \"Control a workflow\",\n long_description: \"Execute another workflow from this workflow\",\n },\n {\n name: \"User Input\",\n type: \"TRIGGER\",\n status: \"running\",\n large_image:\n \"data:image/png;base64,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\",\n description: \"Wait for user input\",\n trigger_type: \"USERINPUT\",\n\t\t\tis_valid: true, \n errors: null,\n label: \"User input\",\n environment: \"cloud\",\n long_description: \"Take user input to continue execution\",\n },\n ];\n\t// is_valid: cloudSyncEnabled || isCloud ? true : false,\n\nconst surfaceColor = \"#27292D\";\nconst inputColor = \"#383B40\";\n\n// http://apps.cytoscape.org/apps/yfileslayoutalgorithms\ncytoscape.use(edgehandles);\ncytoscape.use(clipboard);\ncytoscape.use(undoRedo);\ncytoscape.use(cxtmenu);\n\n// Adds specific text to items\n//import popper from 'cytoscape-popper';\n//cytoscape.use(popper);\n\n// https://stackoverflow.com/questions/19014250/rerender-view-on-browser-resize-with-react\nfunction useWindowSize() {\n const [size, setSize] = useState([0, 0]);\n useLayoutEffect(() => {\n function updateSize() {\n setSize([window.innerWidth, window.innerHeight]);\n }\n window.addEventListener(\"resize\", updateSize);\n updateSize();\n return () => window.removeEventListener(\"resize\", updateSize);\n }, []);\n return size;\n}\n\nexport function sortByKey(array, key) {\n if (array === undefined) {\n return [];\n }\n\n if (key.startsWith(\"-\") && key.length > 2) {\n key = key.slice(1, key.length);\n return array\n .sort(function (a, b) {\n var x = a[key];\n var y = b[key];\n return x < y ? -1 : x > y ? 1 : 0;\n })\n .reverse();\n }\n\n if (array === undefined || array === null) {\n return [];\n }\n\n return array.sort(function (a, b) {\n var x = a[key];\n var y = b[key];\n return x < y ? -1 : x > y ? 1 : 0;\n });\n}\n\n// look for keys and set values with shuffle dotnotation \n// used primarily for AI autocompletions\nexport function SetJsonDotnotation(jsonInput, inputKey) {\n\n\tif (jsonInput === undefined || jsonInput === null) {\n\t\treturn jsonInput;\n\t}\n\n\t// Check for array\n\tif (Array.isArray(jsonInput)) {\n\t\tfor (var i = 0; i < jsonInput.length; i++) {\n\t\t\tjsonInput[i] = SetJsonDotnotation(jsonInput[i], inputKey+\".#\");\n\t\t}\n\n\t\treturn jsonInput;\n\t\t// Check for dict\n\t} else if (typeof jsonInput === \"object\") {\n\t\t// Loop keys and values\n\t\n\t\tfor (var key in jsonInput) {\n\t\t\tif (!jsonInput.hasOwnProperty(key)) {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tconst value = jsonInput[key];\n\t\t\t// Check if array\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\tfor (var i = 0; i < value.length; i++) {\n\t\t\t\t\tjsonInput[key][i] = SetJsonDotnotation(jsonInput[key][i], inputKey+\".\"+key+\".#\");\n\t\t\t\t}\n\t\t\t} else if (typeof value === \"object\") {\n\t\t\t\tjsonInput[key] = SetJsonDotnotation(jsonInput[key], inputKey+\".\"+key);\n\t\t\t} else {\n\t\t\t\tjsonInput[key] = inputKey+\".\"+key\n\t\t\t}\n\t\t}\n\t} else {\n\t\t//jsonInput = inputKey\n\n\t\tconsole.log(\"SetJsonDotnotation: jsonInput is not an object or array, but key \", jsonInput, typeof jsonInput);\n\t}\n\n\treturn jsonInput;\n}\n\nexport const green = \"#86c142\";\nexport const yellow = \"#FECC00\";\n\nexport function removeParam(key, sourceURL) {\n if (sourceURL === undefined) {\n return;\n }\n\n var rtn = sourceURL.split(\"?\")[0],\n param,\n params_arr = [],\n queryString = sourceURL.indexOf(\"?\") !== -1 ? sourceURL.split(\"?\")[1] : \"\";\n\n if (queryString !== \"\") {\n params_arr = queryString.split(\"&\");\n for (let i = params_arr.length - 1; i >= 0; i -= 1) {\n param = params_arr[i].split(\"=\")[0];\n if (param === key) {\n params_arr.splice(i, 1);\n }\n }\n rtn = rtn + \"?\" + params_arr.join(\"&\");\n }\n\n if (rtn === \"?\") {\n return \"\";\n }\n\n return rtn;\n}\n\nconst useStyles = makeStyles({\n notchedOutline: {\n borderColor: \"#f85a3e !important\",\n },\n root: {\n \"& .MuiAutocomplete-listbox\": {\n border: \"2px solid #f85a3e\",\n color: \"white\",\n fontSize: 18,\n \"& li:nth-child(even)\": {\n backgroundColor: \"#CCC\",\n },\n \"& li:nth-child(odd)\": {\n backgroundColor: \"#FFF\",\n },\n },\n },\n inputRoot: {\n color: \"white\",\n // This matches the specificity of the default styles at https://github.com/mui-org/material-ui/blob/v4.11.3/packages/material-ui-lab/src/Autocomplete/Autocomplete.js#L90\n \"&:hover .MuiOutlinedInput-notchedOutline\": {\n borderColor: \"#f86a3e\",\n },\n },\n});\n\nconst splitter = \"|~|\";\nconst svgSize = 24;\n//const referenceUrl = \"https://shuffler.io/functions/webhooks/\"\n//const referenceUrl = window.location.origin+\"/api/v1/hooks/\"\n\nconst searchClient = algoliasearch(\"JNSS5CFDZZ\", \"db08e40265e2941b9a7d8f644b6e5240\")\nconst AngularWorkflow = (defaultprops) => {\n const { globalUrl, isLoggedIn, isLoaded, userdata, data_id } = defaultprops;\n const referenceUrl = globalUrl + \"/api/v1/hooks/\";\n const alert = useAlert()\n let navigate = useNavigate();\n const params = useParams();\n var props = JSON.parse(JSON.stringify(defaultprops))\n props.match = {}\n props.match.params = params\n\n //const theme = useTheme();\n\n\n var to_be_copied = \"\";\n const [firstrequest, setFirstrequest] = React.useState(true);\n const [cystyle] = useState(cytoscapestyle);\n const [cy, setCy] = React.useState();\n\n\tconst [toolsApp, setToolsApp] = React.useState({});\n const [currentView, setCurrentView] = React.useState(0);\n const [triggerAuthentication, setTriggerAuthentication] = React.useState({});\n const [triggerFolders, setTriggerFolders] = React.useState([]);\n const [workflows, setWorkflows] = React.useState([]);\n const [parentWorkflows, setParentWorkflows] = React.useState([]);\n const [showEnvironment, setShowEnvironment] = React.useState(false);\n const [editWorkflowDetails, setEditWorkflowDetails] = React.useState(false);\n\n const [workflow, setWorkflow] = React.useState({});\n const [userSettings, setUserSettings] = React.useState({});\n const [subworkflow, setSubworkflow] = React.useState({});\n const [subworkflowStartnode, setSubworkflowStartnode] = React.useState(\"\");\n const [leftViewOpen, setLeftViewOpen] = React.useState(isMobile ? false : true);\n const [leftBarSize, setLeftBarSize] = React.useState(isMobile ? 0 : 350);\n const [creatorProfile, setCreatorProfile] = React.useState({});\n const [usecases, setUsecases] = React.useState([]);\n const [files, setFiles] = React.useState({\n \"namespaces\": [\n \"default\",\n ]\n });\n const [appGroup, setAppGroup] = React.useState([]);\n const [triggerGroup, setTriggerGroup] = React.useState([]);\n const [executionText, setExecutionText] = React.useState(\"\");\n const [executionRequestStarted, setExecutionRequestStarted] =React.useState(false);\n \n const [scrollConfig, setScrollConfig] = React.useState({\n top: 0,\n left: 0,\n selected: \"\",\n });\n\n const [history, setHistory] = React.useState([]);\n const [historyIndex, setHistoryIndex] = React.useState(history.length);\n const [variableInfo, setVariableInfo] = React.useState({})\n\n const [appAuthentication, setAppAuthentication] = React.useState(undefined);\n const [variablesModalOpen, setVariablesModalOpen] = React.useState(false);\n const [executionVariablesModalOpen, setExecutionVariablesModalOpen] =\n React.useState(false);\n const [authenticationModalOpen, setAuthenticationModalOpen] = React.useState(false);\n \n const [conditionsModalOpen, setConditionsModalOpen] = React.useState(false);\n const [authenticationType, setAuthenticationType] = React.useState(\"\");\n\n\n const [workflowDone, setWorkflowDone] = React.useState(false);\n const [localFirstrequest, setLocalFirstrequest] = React.useState(true);\n const [requiresAuthentication, setRequiresAuthentication] =\n React.useState(false);\n const [rightSideBarOpen, setRightSideBarOpen] = React.useState(false);\n const [showSkippedActions, setShowSkippedActions] = React.useState(false);\n const [lastExecution, setLastExecution] = React.useState(\"\");\n const [configureWorkflowModalOpen, setConfigureWorkflowModalOpen] = React.useState(false);\n\n const curpath =\n typeof window === \"undefined\" || window.location === undefined\n ? \"\"\n : window.location.pathname;\n\n // 0 = normal, 1 = just done, 2 = normal\n const [savingState, setSavingState] = React.useState(0);\n\n const [selectedResult, setSelectedResult] = React.useState({});\n const [codeModalOpen, setCodeModalOpen] = React.useState(false);\n\n const [variableAnchorEl, setVariableAnchorEl] = React.useState(null);\n\n const [sourceValue, setSourceValue] = React.useState({});\n const [destinationValue, setDestinationValue] = React.useState({});\n const [conditionValue, setConditionValue] = React.useState({});\n const [dragging, setDragging] = React.useState(false);\n const [dragPosition, setDragPosition] = React.useState({\n x: 0,\n y: 0,\n });\n\n // Trigger stuff\n const [selectedComment, setSelectedComment] = React.useState({});\n const [selectedTrigger, setSelectedTrigger] = React.useState({});\n const [selectedTriggerIndex, setSelectedTriggerIndex] = React.useState({});\n const [selectedEdge, setSelectedEdge] = React.useState({});\n const [selectedEdgeIndex, setSelectedEdgeIndex] = React.useState({});\n\n const [visited, setVisited] = React.useState([]);\n\n const [apps, setApps] = React.useState([]);\n const [filteredApps, setFilteredApps] = React.useState([]);\n const [prioritizedApps, setPrioritizedApps] = React.useState([]);\n\n const [environments, setEnvironments] = React.useState([]);\n const [established, setEstablished] = React.useState(false);\n const [setupSent, setSetupSent] = React.useState(false);\n\n const [graphSetup, setGraphSetup] = React.useState(false);\n\n const [selectedApp, setSelectedApp] = React.useState({});\n const [selectedAction, setSelectedAction] = React.useState({});\n const [selectedActionEnvironment, setSelectedActionEnvironment] = React.useState({});\n\n const [executionRequest, setExecutionRequest] = React.useState({});\n\n const [executionRunning, setExecutionRunning] = React.useState(false);\n const [executionModalOpen, setExecutionModalOpen] = React.useState(false);\n const [executionModalView, setExecutionModalView] = React.useState(0);\n const [executionData, setExecutionData] = React.useState({});\n const [appsLoaded, setAppsLoaded] = React.useState(false);\n const [showVideo, setShowVideo] = React.useState(\"\");\n const [editWorkflowModalOpen, setEditWorkflowModalOpen] = React.useState(false);\n const [userediting, setUserediting] = React.useState(false)\n\n const [lastSaved, setLastSaved] = React.useState(true);\n const [selectionOpen, setSelectionOpen] = React.useState(false);\n\n // eslint-disable-next-line no-unused-vars\n const [_, setUpdate] = useState(\"\"); // Used for rendring, don't remove\n\n const [workflowExecutions, setWorkflowExecutions] = React.useState([]);\n const [defaultEnvironmentIndex, setDefaultEnvironmentIndex] = React.useState(0);\n const [workflowRecommendations, setWorkflowRecommendations] = React.useState([]);\n\n\tconst [listCache, setListCache] = React.useState([]);\n\tconst [suggestionBox, setSuggestionBox] = React.useState({\n\t\t\"position\": {\n\t\t\t\"top\": 500,\n\t\t\t\"left\": 500,\n\t\t},\n\t\t\"open\": false,\n\t\t\"attachedTo\": \"\",\n\t});\n\n\t\n\n // This should all be set once, not on every iteration\n // Use states and don't update lol\n const cloudSyncEnabled =\n props.userdata !== undefined &&\n props.userdata.active_org !== null &&\n props.userdata.active_org !== undefined\n ? props.userdata.active_org.cloud_sync === true\n : false;\n const isCloud =\n window.location.host === \"localhost:3002\" ||\n window.location.host === \"shuffler.io\";\n\n const appBarSize = isCloud ? 75 : 72;\n const triggerEnvironments = isCloud ? [\"cloud\"] : [\"onprem\", \"cloud\"];\n const unloadText = \"Are you sure you want to leave without saving (CTRL+S)?\";\n const classes = useStyles();\n\n const [bodyWidth, bodyHeight] = useWindowSize()\n //console.log(\"Mobile: \", isMobile, bodyWidth, bodyHeight)\n const cytoscapeWidth = isMobile ? bodyWidth - leftBarSize : bodyWidth - leftBarSize - 25\n\t\n const [elements, setElements] = useState([]);\n // No point going as fast, as the nodes aren't realtime anymore, but bulk updated.\n // Set it from 2500 to 6000 to reduce overall load\n const { start, stop } = useInterval({\n duration: 3000,\n startImmediate: false,\n callback: () => {\n fetchUpdates();\n },\n });\n\n const getAppDocs = (appname, location, version) => {\n fetch(`${globalUrl}/api/v1/docs/${appname}?location=${location}&version=${version}`, {\n headers: {\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status === 200) {\n //alert.success(\"Successfully GOT app \"+appId)\n } else {\n //alert.error(\"Failed getting app\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n if (responseJson.success === true) {\n if (responseJson.reason !== undefined && responseJson.reason !== undefined && responseJson.reason.length > 0) {\n if (!responseJson.reason.includes(\"404: Not Found\") && responseJson.reason.length > 25) {\n selectedApp.documentation = responseJson.reason\n setSelectedApp(selectedApp)\n setUpdate(Math.random())\n }\n }\n }\n\n })\n .catch((error) => {\n alert.error(error.toString());\n });\n };\n\n useEffect(() => {\n if (authenticationModalOpen === true && selectedAction.app_name !== undefined) {\n console.log(`Should get app docs for: ${selectedAction.app_name}`)\n //console.log(selectedAction)\n //console.log(\"APP: \", selectedApp)\n\n if (selectedAction.documentation === undefined || selectedAction.documentation === null || selectedAction.documentation.length === 0) {\n // SelectedApp.documentation = Markdown? If so, it works\n //\n const apptype = selectedApp.generated === false ? \"python\" : \"openapi\"\n getAppDocs(selectedAction.app_name, apptype, selectedAction.app_version)\n }\n }\n }, [authenticationModalOpen])\n\n\tconst listOrgCache = (orgId) => {\n\t\tfetch(`${globalUrl}/api/v1/orgs/${orgId}/list_cache`, {\n\t\t\t\tmethod: \"GET\",\n\t\t\t\theaders: {\n\t\t\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t\t\tAccept: \"application/json\",\n\t\t\t\t},\n\t\t\t\tcredentials: \"include\",\n\t\t})\n\t\t.then((response) => {\n\t\t\t\tif (response.status !== 200) {\n\t\t\t\t\t\tconsole.log(\"Status not 200 for apps :O!\");\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\treturn response.json();\n\t\t})\n\t\t.then((responseJson) => {\n\t\t\t\tsetListCache(responseJson);\n\t\t})\n\t\t.catch((error) => {\n\t\t\t\talert.error(error.toString());\n\t\t});\n\t};\n\n const getAvailableWorkflows = (trigger_index) => {\n fetch(globalUrl + \"/api/v1/workflows\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for workflows :O!\");\n return;\n }\n return response.json();\n })\n .then((responseJson) => {\n if (responseJson !== undefined) {\n\n // Sets up subflow trigger with the right info\n if (trigger_index > -1) {\n\n var baseSubflow = {}\n const trigger = workflow.triggers[trigger_index];\n if (trigger.parameters.length >= 3) {\n for (let paramkey in trigger.parameters) {\n const param = trigger.parameters[paramkey];\n\n\t\t\t\t\t\t\t\t// User Input & Subflow nodes\n if (param.name === \"workflow\" || param.name === \"subflow\") {\n\t\t\t\t\t\t\t\t\tconst paramIndex = param.name === \"workflow\" ? 0 : 5\n\t\t\t\t\t\t\t\t\tconsole.log(\"Current vs new: \", workflow.triggers[trigger_index].parameters[paramIndex].value, subworkflow.id)\n\n\t\t\t\t\t\t\t\t\tif (workflow.triggers[trigger_index].parameters[paramIndex].value !== subworkflow.id) {\n\t\t\t\t\t\t\t\t\t\tif (param.value === workflow.id) {\n\t\t\t\t\t\t\t\t\t\t\tsetSubworkflow(workflow);\n\t\t\t\t\t\t\t\t\t\t\tbaseSubflow = workflow\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tconst sub = responseJson.find((data) => data.id === param.value);\n\t\t\t\t\t\t\t\t\t\t\tif (sub !== undefined && subworkflow.id !== sub.id) {\n\t\t\t\t\t\t\t\t\t\t\t\tbaseSubflow = sub\n\t\t\t\t\t\t\t\t\t\t\t\tsetSubworkflow(sub);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n }\n\n if (param.name === \"startnode\" && param.value !== undefined && param.value !== null) {\n \n if (Object.getOwnPropertyNames(baseSubflow).length > 0) {\n const foundAction = baseSubflow.actions.find(action => action.id === param.value)\n if (foundAction !== null && foundAction !== undefined) {\n setSubworkflowStartnode(foundAction);\n }\n } else {\n setSubworkflowStartnode(param.value);\n }\n }\n }\n }\n }\n\n\t\t\t\t\tif (workflows.length === 0) {\n\t\t\t\t\t\t//console.log(\"First request. Checking for parent trigger (if this is subflow\")\n\t\t\t\t\t\tvar parentworkflows = []\n\t\t\t\t\t\tvar parent_ids = []\n\t\t\t\t\t\tfor (let workflowkey in responseJson) {\n\t\t\t\t\t\t\tconst innerworkflow = responseJson[workflowkey]\n\n\t\t\t\t\t\t\tfor (let triggerkey in innerworkflow.triggers) {\n\t\t\t\t\t\t\t\tconst trigger = innerworkflow.triggers[triggerkey]\n\t\t\t\t\t\t\t\tif (trigger.trigger_type === \"SUBFLOW\" || trigger.trigger_type === \"USERINPUT\") {\n\n\t\t\t\t\t\t\t\t\tfor (let paramkey in trigger.parameters) {\n\t\t\t\t\t\t\t\t\t\tconst param = trigger.parameters[paramkey]\n\t\t\t\t\t\t\t\t\t\tif ((param.name === \"workflow\" || param.name === \"subflow\") && param.value === props.match.params.key && !parent_ids.includes(innerworkflow.id)) {\n\n\t\t\t\t\t\t\t\t\t\t\tparent_ids.push(innerworkflow.id)\n\t\t\t\t\t\t\t\t\t\t\tparentworkflows.push({\n\t\t\t\t\t\t\t\t\t\t\t\tid: innerworkflow.id,\n\t\t\t\t\t\t\t\t\t\t\t\tname: innerworkflow.name,\n\t\t\t\t\t\t\t\t\t\t\t\timage: innerworkflow.image,\n\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (parentworkflows.length > 0) {\n\t\t\t\t\t\t\tsetParentWorkflows(parentworkflows.filter(wf => wf.id !== props.match.params.key))\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n setWorkflows(responseJson);\n }\n })\n .catch((error) => {\n //alert.error(error.toString());\n console.log(\"Workflow error: \", error.toString())\n });\n };\n\n function OuterLink(props) {\n if (props.href.includes(\"http\") || props.href.includes(\"mailto\")) {\n return (\n \n {props.children}\n \n );\n }\n return (\n \n {props.children}\n \n );\n }\n\n function Img(props) {\n return {props.alt};\n }\n\n function CodeHandler(props) {\n return (\n \n {props.value}\n \n );\n }\n\n function Heading(props) {\n const element = React.createElement(\n `h${props.level}`,\n { style: { marginTop: 40 } },\n props.children\n );\n return (\n \n {props.level !== 1 ? (\n \n ) : null}\n {element}\n \n );\n }\n\n const generateApikey = () => {\n fetch(globalUrl + \"/api/v1/generateapikey\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for APIKEY gen :O!\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n setUserSettings(responseJson);\n })\n .catch((error) => {\n console.log(\"Apikey error: \", error);\n });\n };\n\n const getSettings = () => {\n fetch(globalUrl + \"/api/v1/getsettings\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for get settings :O!\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n if (\n responseJson.success === true &&\n (responseJson.apikey === undefined ||\n responseJson.apikey.length === 0 ||\n responseJson.apikey === null)\n ) {\n generateApikey();\n }\n\n if (responseJson.success === true) {\n setUserSettings(responseJson)\n }\n })\n .catch((error) => {\n console.log(\"Settings error: \", error);\n });\n };\n\n const setNewAppAuth = (appAuthData) => {\n fetch(globalUrl + \"/api/v1/apps/authentication\", {\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify(appAuthData),\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for setting app auth :O!\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n if (!responseJson.success) {\n alert.error(\"Failed to set app auth: \" + responseJson.reason);\n } else {\n getAppAuthentication(true, false);\n setAuthenticationModalOpen(false);\n\n // Needs a refresh with the new authentication..\n //alert.success(\"Successfully saved new app auth\")\n }\n })\n .catch((error) => {\n //alert.error(error.toString());\n console.log(\"New auth error: \", error.toString());\n });\n };\n\n const getWorkflowExecution = (id, execution_id) => {\n fetch(globalUrl + \"/api/v1/workflows/\" + id + \"/executions\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for WORKFLOW EXECUTION :O!\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n if (responseJson.length > 0) {\n // FIXME: Sort this by time\n\n // - means it's opposite\n const newkeys = sortByKey(responseJson, \"-started_at\");\n setWorkflowExecutions(newkeys);\n\n const cursearch =\n typeof window === \"undefined\" || window.location === undefined\n ? \"\"\n : window.location.search;\n\n var tmpView = new URLSearchParams(cursearch).get(\"execution_id\");\n if (\n execution_id !== undefined && execution_id !== null &&\n execution_id.length > 0 && (tmpView === undefined || tmpView === null || tmpView.length === 0)\n ) {\n tmpView = execution_id;\n }\n\n if (tmpView !== undefined && tmpView !== null && tmpView.length > 0) {\n const execution = responseJson.find((data) => data.execution_id === tmpView);\n\n if (execution !== null && execution !== undefined) {\n\n\t\t\t\t\t\t\tif (execution.execution_argument.includes(\"too large\")) {\n \tsetExecutionData({});\n\t\t\t\t\t\t\t\tsetExecutionRunning(true);\n\t\t\t\t\t\t\t\tsetExecutionRequestStarted(false);\n\t\t\t\t\t\t\t} else { \n \tsetExecutionData(execution);\n\t\t\t\t\t\t\t}\n\n setExecutionModalView(1);\n start();\n\n setExecutionRequest({\n execution_id: execution.execution_id,\n authorization: execution.authorization,\n });\n\n const newitem = removeParam(\"execution_id\", cursearch);\n navigate(curpath + newitem)\n //props.history.push(curpath + newitem);\n } else {\n console.log(\"Couldn't find execution for execution ID. Retrying as user to get \", tmpView)\n\n //setExecutionRequestStarted(true);\n const cur_execution = {\n execution_id: tmpView,\n //authorization: data.authorization,\n }\n setExecutionModalView(1);\n setExecutionRequest(cur_execution);\n start();\n\n const newitem = removeParam(\"execution_id\", cursearch);\n navigate(curpath + newitem)\n\n setTimeout(() => {\n stop()\n }, 5000);\n }\n }\n }\n })\n .catch((error) => {\n //alert.error(error.toString());\n console.log(\"Get execution error: \", error.toString());\n });\n };\n\n const fetchUpdates = () => {\n fetch(globalUrl + \"/api/v1/streams/results\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify(executionRequest),\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for stream results :O!\");\n stop();\n }\n\n return response.json();\n })\n .then((responseJson) => {\n //console.log(\"RESPONSE: \", responseJson)\n handleUpdateResults(responseJson, executionRequest);\n })\n .catch((error) => {\n console.log(\"Execution result Error: \", error);\n stop();\n });\n };\n\n const abortExecution = () => {\n setExecutionRunning(false);\n\n fetch(globalUrl +\"/api/v1/workflows/\" +props.match.params.key +\"/executions/\" +executionRequest.execution_id +\"/abort\",\n {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n }\n )\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for ABORT EXECUTION :O!\");\n }\n\n return response.json();\n })\n .catch((error) => {\n //alert.error(error.toString());\n console.log(\"Abort error: \", error.toString());\n });\n };\n\n\tconst handleColoring = (actionId, status, label) => {\n\t\tif (cy === undefined) {\n\t\t\treturn\n\t\t}\n\n\t\tvar currentnode = cy.getElementById(actionId);\n\t\tif (currentnode.length === 0) {\n\t\t\treturn\n\t\t\t//continue;\n\t\t}\n\n\t\tcurrentnode = currentnode[0];\n\t\tconst outgoingEdges = currentnode.outgoers(\"edge\");\n\t\tconst incomingEdges = currentnode.incomers(\"edge\");\n\n\t\tswitch (status) {\n\t\t\tcase \"EXECUTING\":\n\t\t\t\tcurrentnode.removeClass(\"not-executing-highlight\");\n\t\t\t\tcurrentnode.removeClass(\"success-highlight\");\n\t\t\t\tcurrentnode.removeClass(\"failure-highlight\");\n\t\t\t\tcurrentnode.removeClass(\"shuffle-hover-highlight\");\n\t\t\t\tcurrentnode.removeClass(\"awaiting-data-highlight\");\n\t\t\t\tincomingEdges.addClass(\"success-highlight\");\n\t\t\t\tcurrentnode.addClass(\"executing-highlight\");\n\t\t\t\tbreak;\n\t\t\tcase \"SKIPPED\":\n\t\t\t\tcurrentnode.removeClass(\"not-executing-highlight\");\n\t\t\t\tcurrentnode.removeClass(\"success-highlight\");\n\t\t\t\tcurrentnode.removeClass(\"failure-highlight\");\n\t\t\t\tcurrentnode.removeClass(\"shuffle-hover-highlight\");\n\t\t\t\tcurrentnode.removeClass(\"awaiting-data-highlight\");\n\t\t\t\tcurrentnode.removeClass(\"executing-highlight\");\n\t\t\t\tcurrentnode.addClass(\"skipped-highlight\");\n\t\t\t\tbreak;\n\t\t\tcase \"WAITING\":\n\t\t\t\tcurrentnode.removeClass(\"not-executing-highlight\");\n\t\t\t\tcurrentnode.removeClass(\"success-highlight\");\n\t\t\t\tcurrentnode.removeClass(\"failure-highlight\");\n\t\t\t\tcurrentnode.removeClass(\"shuffle-hover-highlight\");\n\t\t\t\tcurrentnode.removeClass(\"awaiting-data-highlight\");\n\t\t\t\tcurrentnode.addClass(\"executing-highlight\");\n\n\t\t\t\tif (!visited.includes(label)) {\n\t\t\t\t\tif (executionRunning) {\n\t\t\t\t\t\tvisited.push(label);\n\t\t\t\t\t\tsetVisited(visited);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// FIXME - add outgoing nodes to executing\n\t\t\t\t//const outgoingNodes = outgoingEdges.find().data().target\n\t\t\t\tif (outgoingEdges.length > 0) {\n\t\t\t\t\toutgoingEdges.addClass(\"success-highlight\");\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"SUCCESS\":\n\t\t\t\tcurrentnode.removeClass(\"not-executing-highlight\");\n\t\t\t\tcurrentnode.removeClass(\"executing-highlight\");\n\t\t\t\tcurrentnode.removeClass(\"failure-highlight\");\n\t\t\t\tcurrentnode.removeClass(\"shuffle-hover-highlight\");\n\t\t\t\tcurrentnode.removeClass(\"awaiting-data-highlight\");\n\t\t\t\tcurrentnode.addClass(\"success-highlight\");\n\t\t\t\tincomingEdges.addClass(\"success-highlight\");\n\t\t\t\toutgoingEdges.addClass(\"success-highlight\");\n\n\t\t\t\tif (visited !== undefined && visited !== null && !visited.includes(label)) {\n\t\t\t\t\tif (executionRunning) {\n\t\t\t\t\t\tvisited.push(label);\n\t\t\t\t\t\tsetVisited(visited);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// FIXME - add outgoing nodes to executing\n\t\t\t\t//const outgoingNodes = outgoingEdges.find().data().target\n\t\t\t\tif (outgoingEdges.length > 0) {\n\t\t\t\t\tfor (let i = 0; i < outgoingEdges.length; i++) {\n\t\t\t\t\t\tconst edge = outgoingEdges[i];\n\t\t\t\t\t\tconst targetnode = cy.getElementById(edge.data().target);\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\ttargetnode !== undefined &&\n\t\t\t\t\t\t\t!targetnode.classes().includes(\"success-highlight\") &&\n\t\t\t\t\t\t\t!targetnode.classes().includes(\"failure-highlight\")\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\ttargetnode.removeClass(\"not-executing-highlight\");\n\t\t\t\t\t\t\ttargetnode.removeClass(\"success-highlight\");\n\t\t\t\t\t\t\ttargetnode.removeClass(\"shuffle-hover-highlight\");\n\t\t\t\t\t\t\ttargetnode.removeClass(\"failure-highlight\");\n\t\t\t\t\t\t\ttargetnode.removeClass(\"awaiting-data-highlight\");\n\t\t\t\t\t\t\ttargetnode.addClass(\"executing-highlight\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"FAILURE\":\n\t\t\t\t//When status comes as failure, allow user to start workflow execution\n\t\t\t\tif (executionRunning) {\n\t\t\t\t\tsetExecutionRunning(false);\n\t\t\t\t}\n\n\t\t\t\tcurrentnode.removeClass(\"not-executing-highlight\");\n\t\t\t\tcurrentnode.removeClass(\"executing-highlight\");\n\t\t\t\tcurrentnode.removeClass(\"success-highlight\");\n\t\t\t\tcurrentnode.removeClass(\"awaiting-data-highlight\");\n\t\t\t\tcurrentnode.removeClass(\"shuffle-hover-highlight\");\n\t\t\t\tcurrentnode.addClass(\"failure-highlight\");\n\n\t\t\t\tif (!visited.includes(label)) {\n\t\t\t\t\t//if (item.action.result !== undefined && item.action.result !== null && !item.action.result.includes(\"failed condition\")) {\n\t\t\t\t\t//\talert.error(\"Error for \" + item.action.label + \" with result \" + item.result);\n\t\t\t\t\t//}\n\t\t\t\t\tvisited.push(label);\n\t\t\t\t\tsetVisited(visited);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"AWAITING_DATA\":\n\t\t\t\tcurrentnode.removeClass(\"not-executing-highlight\");\n\t\t\t\tcurrentnode.removeClass(\"executing-highlight\");\n\t\t\t\tcurrentnode.removeClass(\"success-highlight\");\n\t\t\t\tcurrentnode.removeClass(\"failure-highlight\");\n\t\t\t\tcurrentnode.removeClass(\"shuffle-hover-highlight\");\n\t\t\t\tcurrentnode.addClass(\"awaiting-data-highlight\");\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tcurrentnode.removeClass(\"not-executing-highlight\");\n\t\t\t\tcurrentnode.removeClass(\"executing-highlight\");\n\t\t\t\tcurrentnode.removeClass(\"success-highlight\");\n\t\t\t\tcurrentnode.removeClass(\"failure-highlight\");\n\t\t\t\tcurrentnode.removeClass(\"shuffle-hover-highlight\");\n\t\t\t\tcurrentnode.removeClass(\"awaiting-data-highlight\");\n\t\t\t\tcurrentnode.addClass(\"not-executing-highlight\");\n\t\t\t\t//console.log(\"DEFAULT -> Clearing!\");\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n // Controls the colors and direction of execution results.\n // Style is in defaultCytoscapeStyle.js\n const handleUpdateResults = (responseJson, executionRequest) => {\n\t\tif (responseJson === undefined || responseJson === null || responseJson.success === false) {\n\t\t\treturn\n\t\t}\n //console.log(responseJson)\n // Loop nodes and find results\n // Update on every interval? idk\n\n ReactDOM.unstable_batchedUpdates(() => {\n if (JSON.stringify(responseJson) !== JSON.stringify(executionData)) {\n // FIXME: If another is selected, don't edit..\n // Doesn't work because this is some async garbage\n if (executionData.execution_id === undefined || (responseJson.execution_id === executionData.execution_id && responseJson.results !== undefined && responseJson.results !== null)) {\n if (executionData.status !== responseJson.status || executionData.result !== responseJson.result || (executionData.results !== undefined && responseJson.results !== null && executionData.results.length !== responseJson.results.length)) {\n\t\t\t\t\t\tconsole.log(\"Updating data!\")\n setExecutionData(responseJson)\n } else {\n console.log(\"NOT updating executiondata state.\");\n }\n }\n }\n\n if (responseJson.execution_id !== executionRequest.execution_id) {\n cy.elements().removeClass(\"success-highlight failure-highlight executing-highlight\");\n return;\n }\n\n \tif (responseJson.results !== null && responseJson.results.length > 0) {\n\t\t\t\t// First clear current nodes\n\t\t\t\tif (responseJson.workflow.actions !== undefined && responseJson.workflow.actions !== null) {\n\t\t\t\t\t// In clearing of actions\n\t\t\t\t\tfor (let actionKey in responseJson.workflow.actions) {\n \t \tvar item = responseJson.workflow.actions[actionKey];\n\n\t\t\t\t\t\thandleColoring(item.id, \"\", item.label)\n\t\t\t\t\t}\n\t\t\t\t}\n\n \t for (let resultKey in responseJson.results) {\n \t var item = responseJson.results[resultKey];\n\n\t\t\t\t\thandleColoring(item.action.id, item.status, item.action.label)\n }\n }\n\n if (responseJson.status === \"ABORTED\" || responseJson.status === \"STOPPED\" || responseJson.status === \"FAILURE\" || responseJson.status === \"WAITING\") {\n stop();\n\n if (executionRunning) {\n setExecutionRunning(false);\n }\n\n \t var curelements = cy.elements();\n \t for (let i = 0; i < curelements.length; i++) {\n \t if (curelements[i].classes().includes(\"executing-highlight\")) {\n \t curelements[i].removeClass(\"executing-highlight\");\n \t curelements[i].addClass(\"failure-highlight\");\n \t }\n \t }\n\n getWorkflowExecution(props.match.params.key, \"\");\n } else if (responseJson.status === \"FINISHED\") {\n setExecutionRunning(false);\n stop();\n getWorkflowExecution(props.match.params.key, \"\");\n setUpdate(Math.random());\n }\n })\n };\n\n const sendStreamRequest = (body) => {\n console.log(\"Stream not activated yet.\")\n return\n\n // Session may be important here huh \n body.user_id = userdata.id\n\n fetch(globalUrl + \"/api/v1/workflows/\" + props.match.params.key + \"/stream\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify(body),\n credentials: \"include\",\n })\n .then((response) => {\n setSavingState(0);\n if (response.status !== 200) {\n console.log(\"Status not 200 for setting workflows :O!\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n console.log(\"RESP: \", responseJson)\n })\n .catch((error) => {\n console.log(\"Stream send error: \", error.toString())\n //alert.error(error.toString());\n })\n }\n\n const saveWorkflow = (curworkflow, executionArgument, startNode) => {\n var success = false;\n\n if (isCloud && !isLoggedIn) {\n console.log(\"Should redirect to register with redirect.\");\n window.location.href = `/register?view=/workflows/${props.match.params.key}&message=You need sign up to use workflows with Shuffle`;\n return;\n }\n\n setSavingState(2);\n\n // This might not be the right course of action, but seems logical, as items could be running already\n // Makes it possible to update with a version in current render\n stop();\n var useworkflow = workflow;\n if (curworkflow !== undefined) {\n useworkflow = curworkflow;\n }\n\n \tvar cyelements = cy.elements();\n \tvar newActions = [];\n \tvar newTriggers = [];\n \tvar newBranches = [];\n \tvar newVBranches = [];\n \tvar newComments = [];\n \tfor (let cyelementsKey in cyelements) {\n \t if (cyelements[cyelementsKey].data === undefined) {\n \t continue;\n \t }\n\n \t var type = cyelements[cyelementsKey].data()[\"type\"];\n \t if (type === undefined) {\n \t if (\n \t cyelements[cyelementsKey].data().source === undefined ||\n \t cyelements[cyelementsKey].data().target === undefined\n \t ) {\n \t continue;\n \t }\n\n \t var parsedElement = {\n \t id: cyelements[cyelementsKey].data().id,\n \t source_id: cyelements[cyelementsKey].data().source,\n \t destination_id: cyelements[cyelementsKey].data().target,\n \t conditions: cyelements[cyelementsKey].data().conditions,\n \t decorator: cyelements[cyelementsKey].data().decorator,\n \t };\n\n \t if (parsedElement.decorator) {\n \t newVBranches.push(parsedElement);\n \t } else {\n \t newBranches.push(parsedElement);\n \t }\n \t } else {\n \t if (type === \"ACTION\") {\n \t const cyelement = cyelements[cyelementsKey].data();\n \t const elementid =\n \t cyelement.id === undefined || cyelement.id === null\n \t ? cyelement[\"_id\"]\n \t : cyelement.id;\n\n \t var curworkflowAction = useworkflow.actions.find(\n \t (a) =>\n \t a !== undefined &&\n \t (a[\"id\"] === elementid || a[\"_id\"] === elementid)\n \t );\n \t if (curworkflowAction === undefined) {\n \t curworkflowAction = cyelements[cyelementsKey].data();\n \t }\n\n \t curworkflowAction.position = cyelements[cyelementsKey].position();\n\n // workaround to fix some edgecases\n if (\n curworkflowAction.parameters === \"\" ||\n curworkflowAction.parameters === null\n ) {\n curworkflowAction.parameters = [];\n }\n\n \t if (\n \t curworkflowAction.example === undefined ||\n \t curworkflowAction.example === \"\" ||\n \t curworkflowAction.example === null\n \t ) {\n \t if (cyelements[cyelementsKey].data().example !== undefined) {\n \t curworkflowAction.example = cyelements[cyelementsKey].data().example;\n \t }\n \t }\n\n // Override just in this place\n curworkflowAction.errors = [];\n curworkflowAction.isValid = true;\n\n \t // Cleans up OpenAPI items\n \t var newparams = [];\n \t for (let parametersKey in curworkflowAction.parameters) {\n \t const thisitem = curworkflowAction.parameters[parametersKey];\n \t if (thisitem.name.startsWith(\"${\") && thisitem.name.endsWith(\"}\")) {\n \t continue;\n \t }\n\n newparams.push(thisitem);\n }\n\n curworkflowAction.parameters = newparams;\n newActions.push(curworkflowAction);\n } else if (type === \"TRIGGER\") {\n if (useworkflow.triggers === undefined || useworkflow.triggers === null) {\n useworkflow.triggers = [];\n }\n\n \t var curworkflowTrigger = useworkflow.triggers.find(\n \t (a) => a.id === cyelements[cyelementsKey].data()[\"id\"]\n \t );\n \t if (curworkflowTrigger === undefined) {\n \t curworkflowTrigger = cyelements[cyelementsKey].data();\n \t }\n\n \t curworkflowTrigger.position = cyelements[cyelementsKey].position();\n\t\t\t\t\t\tif (curworkflowTrigger.canConnect === false) {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\n newTriggers.push(curworkflowTrigger);\n } else if (type === \"COMMENT\") {\n if (useworkflow.comments === undefined || useworkflow.comments === null) {\n useworkflow.comments = [];\n }\n\n \t var curworkflowComment = useworkflow.comments.find(\n \t (a) => a.id === cyelements[cyelementsKey].data()[\"id\"]\n \t )\n\n \t if (curworkflowComment === undefined) {\n \t curworkflowComment = cyelements[cyelementsKey].data();\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tcurworkflowComment.position.x = parseInt(curworkflowComment.position.x)\n\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\tconsole.log(\"Failed to parse position Y of comment: \", curworkflowComment.position.x)\n\t\t\t\t\t\t\t}\n\n try {\n curworkflowComment.position.y = parseInt(curworkflowComment.position.y)\n } catch (e) {\n console.log(\"Failed to parse position Y of comment: \", curworkflowComment.position.y)\n }\n }\n\n const parsedHeight = parseInt(curworkflowComment[\"height\"])\n if (!isNaN(parsedHeight)) {\n curworkflowComment.height = parsedHeight\n } else {\n curworkflowComment.width = 150\n }\n\n const parsedWidth = parseInt(curworkflowComment[\"width\"])\n if (!isNaN(parsedWidth)) {\n curworkflowComment.width = parsedWidth\n } else {\n curworkflowComment.width = 200\n }\n\n \t curworkflowComment.position = cyelements[cyelementsKey].position();\n\t\t\t\t\t\t//console.log(curworkflowComment)\n\n newComments.push(curworkflowComment);\n } else {\n alert.info(\"No handler for type: \" + type);\n }\n }\n }\n\n if (userediting === true) {\n useworkflow.user_editing = true\n }\n\n useworkflow.actions = newActions;\n useworkflow.triggers = newTriggers;\n useworkflow.branches = newBranches;\n useworkflow.comments = newComments;\n useworkflow.visual_branches = newVBranches;\n\n // Errors are backend defined\n useworkflow.errors = [];\n useworkflow.previously_saved = true;\n\n if (cy !== undefined) {\n // scale: 0.3,\n // bg: \"#27292d\",\n const cyImageData = cy.png({\n output: \"base64uri\",\n maxWidth: 480,\n maxHeight: 270,\n })\n\n if (cyImageData !== undefined && cyImageData !== null && cyImageData.length > 0) {\n useworkflow.image = cyImageData\n }\n }\n\n setLastSaved(true);\n fetch(`${globalUrl}/api/v1/workflows/${useworkflow.id}`, {\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify(useworkflow),\n credentials: \"include\",\n })\n .then((response) => {\n setSavingState(0);\n if (response.status !== 200) {\n console.log(\"Status not 200 for setting workflows :O!\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n if (executionArgument !== undefined && startNode !== undefined) {\n //console.log(\"Running execution AFTER saving\");\n executeWorkflow(executionArgument, startNode, true);\n return;\n }\n\n if (!responseJson.success) {\n console.log(responseJson);\n if (responseJson.reason !== undefined && responseJson.reason !== null) {\n alert.error(\"Failed to save: \" + responseJson.reason);\n } else {\n alert.error(\"Failed to save. Please contact your support@shuffler.io or your local admin if this is unexpected.\")\n }\n } else {\n\n sendStreamRequest({\n \"item\": \"workflow\",\n \"type\": \"save\",\n \"id\": workflow.id,\n })\n\n if (\n responseJson.new_id !== undefined &&\n responseJson.new_id !== null\n ) {\n window.location.pathname = \"/workflows/\" + responseJson.new_id;\n }\n\n success = true;\n if (responseJson.errors !== undefined) {\n workflow.errors = responseJson.errors;\n if (responseJson.errors.length === 0) {\n workflow.isValid = true;\n workflow.is_valid = true;\n\n \t const cyelements = cy.elements();\n \t \n \t for (let i = 0; i < cyelements.length; i++) {\n\t\t\t\t\t\t\t\t\t//cyelements[i].removeStyle();\n \t cyelements[i].data().is_valid = true;\n \t cyelements[i].data().errors = [];\n \t }\n\n \t for (let actionkey in workflow.actions) {\n \t workflow.actions[actionkey].is_valid = true;\n \t workflow.actions[actionkey].errors = [];\n \t }\n \t }\n\n setWorkflow(workflow);\n }\n\n setSavingState(1);\n setTimeout(() => {\n setSavingState(0);\n }, 1500);\n }\n })\n .catch((error) => {\n setSavingState(0);\n //alert.error(error.toString());\n console.log(\"Save workflow error: \", error.toString());\n });\n\n return success;\n };\n\n const monitorUpdates = () => {\n var firstnode = cy.getElementById(workflow.start);\n if (firstnode.length === 0) {\n var found = false;\n for (let actionkey in workflow.actions) {\n if (workflow.actions[actionkey].isStartNode) {\n console.log(\"Updating startnode\");\n workflow.start = workflow.actions[actionkey].id;\n firstnode = cy.getElementById(workflow.actions[actionkey].id);\n found = true;\n break;\n }\n }\n\n if (!found) {\n return false;\n }\n }\n\n cy.elements().removeClass(\n \"success-highlight failure-highlight executing-highlight\"\n );\n firstnode[0].addClass(\"executing-highlight\");\n\n return true;\n };\n\n const executeWorkflow = (executionArgument, startNode, hasSaved) => {\n ReactDOM.unstable_batchedUpdates(() => {\n if (hasSaved === false) {\n setExecutionRequestStarted(true);\n saveWorkflow(workflow, executionArgument, startNode);\n console.log(\"FIXME: Might have forgotten to save before executing.\");\n return;\n }\n\n if (workflow.public) {\n alert.info(\"Save it to get a new version\");\n }\n\n var returncheck = monitorUpdates();\n if (!returncheck) {\n alert.error(\"No startnode set.\");\n return;\n }\n\n setVisited([])\n setExecutionRequest({})\n stop()\n\n \tvar curelements = cy.elements();\n \tfor (let i = 0; i < curelements.length; i++) {\n \t curelements[i].addClass(\"not-executing-highlight\");\n \t}\n\n const data = { execution_argument: executionArgument, start: startNode };\n fetch(\n globalUrl + \"/api/v1/workflows/\" + props.match.params.key + \"/execute\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n body: JSON.stringify(data),\n }\n )\n .then((response) => {\n setExecutionRequestStarted(false)\n if (response.status !== 200) {\n console.log(\"Status not 200 for WORKFLOW EXECUTION :O!\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n if (!responseJson.success) {\n alert.error(\"Failed to start: \" + responseJson.reason);\n setExecutionRunning(false);\n setExecutionRequestStarted(false);\n stop();\n\n \t for (let i = 0; i < curelements.length; i++) {\n \t curelements[i].removeClass(\"not-executing-highlight\");\n \t }\n \t return;\n \t } else {\n \t setExecutionRunning(true);\n \t setExecutionRequestStarted(false);\n \t }\n\n if (\n responseJson.execution_id === \"\" ||\n responseJson.execution_id === undefined ||\n responseJson.authorization === \"\" ||\n responseJson.authorization === undefined\n ) {\n alert.error(\"Something went wrong during execution startup\");\n console.log(\"BAD RESPONSE FOR EXECUTION: \", responseJson);\n setExecutionRunning(false);\n setExecutionRequestStarted(false);\n stop();\n\n \t for (let i = 0; i < curelements.length; i++) {\n \t curelements[i].removeClass(\"not-executing-highlight\");\n \t }\n \t return;\n \t }\n\n setExecutionRequest({\n execution_id: responseJson.execution_id,\n authorization: responseJson.authorization,\n });\n setExecutionData({});\n setExecutionModalOpen(true);\n setExecutionModalView(1);\n start();\n })\n .catch((error) => {\n //alert.error(error.toString());\n setExecutionRequestStarted(false)\n console.log(\"Execute workflow err: \", error.toString());\n });\n })\n };\n\n // This can be used to only show prioritzed ones later\n // Right now, it can prioritize authenticated ones\n //\"Testing\",\n const internalIds = [\"Shuffle Tools\", \"http\", \"email\"];\n\n const getAppAuthentication = (reset, updateAction, closeMenu) => {\n fetch(globalUrl + \"/api/v1/apps/authentication\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n\t\t.then((response) => {\n\t\t\tif (response.status !== 200) {\n\t\t\t\tconsole.log(\"Status not 200 for app auth :O!\");\n\t\t\t}\n\n\t\t\treturn response.json();\n\t\t})\n\t\t.then((responseJson) => {\n\t\t\t\tvar shouldClose = false \n if (responseJson.success) {\n var newauth = [];\n for (let authkey in responseJson.data) {\n if (responseJson.data[authkey].defined === false) {\n continue;\n }\n\n newauth.push(responseJson.data[authkey]);\n }\n\n setAppAuthentication(newauth);\n\n if (cy !== undefined) {\n // Remove the old listener for select, run with new one\n cy.removeListener(\"select\");\n cy.on(\"select\", \"node\", (e) => onNodeSelect(e, newauth));\n cy.on(\"select\", \"edge\", (e) => onEdgeSelect(e));\n }\n\n if (updateAction === true) {\n if (selectedApp.authentication.required) {\n // Setup auth here :)\n var appUpdates = false;\n const authenticationOptions = [];\n\n var tmpAuth = JSON.parse(JSON.stringify(newauth));\n var latest = 0;\n for (let authkey in tmpAuth) {\n var item = tmpAuth[authkey];\n\n\t\t\t\t\t\t\t\t//console.log(\"Got auth: \", item);\n\n const newfields = {};\n for (let filterkey in item.fields) {\n newfields[item.fields[filterkey].key] = item.fields[filterkey].value;\n }\n\n item.fields = newfields;\n\n\t\t\t\t\t\t\t\tconst appname = selectedApp.name.toLowerCase().replace(\" \", \"_\", -1)\n\t\t\t\t\t\t\t\tconst itemname = item.app.name.toLowerCase().replace(\" \", \"_\", -1)\n if (itemname === appname) {\n authenticationOptions.push(item);\n\n // Always becoming the last one\n if (item.edited > latest) {\n latest = item.edited;\n selectedAction.selectedAuthentication = item;\n\n for (let actionkey in workflow.actions) {\n\t\t\t\t\t\t\t\t\t\t\tconst actionAppname = workflow.actions[actionkey].app_name.toLowerCase().replace(\" \", \"_\", -1)\n if (actionAppname === appname) {\n workflow.actions[actionkey].selectedAuthentication = item;\n workflow.actions[actionkey].authentication_id = item.id;\n appUpdates = true;\n }\n }\n } else {\n\t\t\t\t\t\t\t\t\t\t//console.log(\"Not newer: \", item.edited, \" vs \", latest)\n\t\t\t\t\t\t\t\t\t}\n } else {\n\t\t\t\t\t\t\t\t\t//console.log(\"Appname is wrong: \", appname, \" vs \", itemname)\n\t\t\t\t\t\t\t\t}\n }\n\n selectedAction.authentication = authenticationOptions;\n if (\n selectedAction.selectedAuthentication === null ||\n selectedAction.selectedAuthentication === undefined ||\n selectedAction.selectedAuthentication.length === \"\"\n ) {\n selectedAction.selectedAuthentication = {};\n }\n\n if (appUpdates === true) {\n console.log(\"Closing auth modal: Success\")\n\n setAuthenticationModalOpen(false);\n setSelectedAction(selectedAction);\n setWorkflow(workflow);\n saveWorkflow(workflow);\n alert.info(\"Added and updated authentication!\");\n\t\t\t\t\t\t\t\tshouldClose = true \n } else {\n console.log(\"Closing auth modal? FAIL\")\n\n alert.error(\"Failed to find new authentication. See details in Oauth2 popup window where auth was attempted.\");\n\t\t\t\t\t\t\t\tshouldClose = false \n }\n } else {\n alert.info(\"No authentication to update\");\n }\n } else {\n\t\t\t\t\t\tshouldClose = true\n\t\t\t\t\t}\n } else {\n\t\t\t\t\tsetAppAuthentication([]);\n\t\t\t\t\tshouldClose = true \n }\n\n\t\t\t\t// Auto-closing if changes were made \n\t\t\t\tif (closeMenu === true && shouldClose === true) {\n\t\t\t\t\tsetAuthenticationModalOpen(false);\n\t\t\t\t}\n })\n .catch((error) => {\n\t\t\t\tsetAppAuthentication([]);\n //alert.error(\"Auth loading error: \" + error.toString());\n console.log(\"AppAuth error: \" + error.toString());\n });\n };\n\n const getApps = () => {\n fetch(globalUrl + \"/api/v1/apps\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for apps. Setting to pretend apps!\");\n\n const pretend_apps = [{\n \"name\": \"TBD\",\n \"app_name\": \"TBD\",\n \"app_version\": \"TBD\",\n \"description\": \"TBD\",\n \"version\": \"TBD\",\n \"large_image\": \"\",\n }]\n \t\n\t\t\t\t\tsetAppsLoaded(true)\n setApps(pretend_apps)\n setFilteredApps(pretend_apps)\n setPrioritizedApps(pretend_apps);\n\n\t\t\t\t\talert.error(\"Something went wrong while loading apps. Please refresh the window to try again.\")\n return\n }\n\n return response.json();\n })\n .then((responseJson) => {\n if (responseJson === null) {\n console.log(\"No response\")\n const pretend_apps = [{\n \"name\": \"TBD\",\n \"app_name\": \"TBD\",\n \"app_version\": \"TBD\",\n \"description\": \"TBD\",\n \"version\": \"TBD\",\n \"large_image\": \"\",\n }]\n \t\n\t\t\t\t\tsetAppsLoaded(true)\n setApps(pretend_apps)\n setFilteredApps(pretend_apps)\n setPrioritizedApps(pretend_apps);\n return\n }\n\n if (responseJson.success === false) {\n return\n }\n\n\t\t\t\t// Used for e.g. Liquid testing\n\t\t\t\tconst foundTools = responseJson.find((app) => app.name === \"Shuffle Tools\")\n\t\t\t\tif (foundTools !== undefined && foundTools !== null) {\n\t\t\t\t\tsetToolsApp(foundTools)\n\t\t\t\t}\n\n setApps(responseJson);\n\n if (isCloud) {\n setFilteredApps(responseJson.filter((app) => !internalIds.includes(app.name)));\n setPrioritizedApps(responseJson.filter((app) => internalIds.includes(app.name)));\n \n } else {\n //setFilteredApps(\n // responseJson.filter(\n // (app) =>\n // !internalIds.includes(app.name) &&\n // !(!app.activated && app.generated)\n // )\n //);\n\n var tmpFiltered = responseJson.filter((app) => !internalIds.includes(app.name))\n //tmpFiltered = sortByKey(tmpFiltered, \"activated\")\n setFilteredApps(tmpFiltered)\n\n //!(!app.activated && app.generated)\n setPrioritizedApps(responseJson.filter((app) => internalIds.includes(app.name)));\n }\n\n\t\t\t\tsetAppsLoaded(true)\n })\n .catch((error) => {\n console.log(\"App loading error: \" + error.toString());\n setAppsLoaded(true)\n //alert.error(\"App loading error: \"+error.toString());\n });\n };\n\n // Searhc by username, userId, workflow, appId should all work\n const getUserProfile = (username, rerun) => {\n fetch(`${globalUrl}/api/v1/users/creators/${username}`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for WORKFLOW EXECUTION :O!\");\n }\n\n\n return response.json();\n })\n .then((responseJson) => {\n if (responseJson.success !== false) {\n console.log(\"Found creator: \", responseJson)\n setCreatorProfile(responseJson)\n } else {\n console.log(\"Couldn't find the creator profile (rerun?): \", responseJson, rerun)\n // If the current user is any of the Shuffle Creators \n // AND the workflow doesn't have an owner: allow editing.\n // else: Allow suggestions?\n //console.log(\"User: \", userdata)\n //if (rerun !== true) {\n //\tgetUserProfile(userdata.id, true)\n //}\n }\n })\n .catch((error) => {\n console.log(\"Get userprofile error: \", error);\n })\n }\n\n const getFiles = () => {\n fetch(globalUrl + \"/api/v1/files\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n //console.log(\"Status not 200 for apps :O!\");\n return;\n }\n\n return response.json();\n })\n .then((responseJson) => {\n if (responseJson.files !== undefined && responseJson.files !== null) {\n setFiles(responseJson);\n } else {\n setFiles({\n \"namespaces\": [\n \"default\"\n ]\n });\n }\n\n if (\n responseJson.namespaces !== undefined &&\n responseJson.namespaces !== null\n ) {\n //setFileNamespaces(responseJson.namespaces);\n }\n })\n .catch((error) => {\n //alert.error(error.toString());\n\t\t\t\tconsole.log(\"Error loading files: \", error)\n });\n };\n\n const getWorkflow = (workflow_id, sourcenode) => {\n fetch(`${globalUrl}/api/v1/workflows/${workflow_id}`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for workflows :O!\");\n\n\t\t\t\t\tif (response.status >= 500) {\n\t\t\t\t\t\talert.info(\"Something went wrong while loading the workflow. Please reload.\")\n\t\t\t\t\t} else {\n\t\t\t\t\t\talert.info(\"You don't access to this workflow or loading failed.\")\n\t\t\t\t\t\twindow.location.pathname = \"/workflows\";\n\t\t\t\t\t}\n }\n\n\t\t\t\t// Read text from stream\n\t\t\t\t//return response.text();\n return response.json();\n })\n .then((responseJson) => {\n\t\t\t\t// Load as JSON\n\t\t\t\t//console.log(\"Got workflow TXT: \", responseText)\n\t\t\t\t//const responseJson = JSON.parse(responseText)\n\t\t\t\t//console.log(\"Got workflow JSON: \", responseJson)\n\n // Not sure why this is necessary.\n if (responseJson.isValid === undefined) {\n responseJson.isValid = true;\n }\n\n if (responseJson.errors === undefined) {\n responseJson.errors = [];\n }\n\n if (responseJson.actions === undefined || responseJson.actions === null) {\n responseJson.actions = [];\n }\n\n if (responseJson.triggers === undefined || responseJson.triggers === null) {\n responseJson.triggers = [];\n }\n \t\n\t\t\t\tfetchRecommendations(responseJson) \n\n if (responseJson.public) {\n //alert.info(\"This workflow is public. Save the workflow to use it in your organization.\");\n\n \t\t\t\tsetAppAuthentication([])\n console.log(\"RESP: \", responseJson)\n if (Object.getOwnPropertyNames(creatorProfile).length === 0) {\n //getUserProfile(\"frikky\") \n getUserProfile(responseJson.id, false)\n }\n\n\t\t\t\t\t//{appGroup.map((data, index) => {\n\t\t\t\t\t//const [appGroup, setAppGroup] = React.useState([]);\n\t\t\t\t\tvar appsFound = []\n\t\t\t\t\tfor (let actionkey in responseJson.actions) {\n\t\t\t\t\t\tconst parsedAction = responseJson.actions[actionkey]\n\t\t\t\t\t\tif (parsedAction.large_image === undefined || parsedAction.large_image === null || parsedAction.large_image === \"\") {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (appsFound.findIndex(data => data.app_name === parsedAction.app_name) < 0){\n\t\t\t\t\t\t\tappsFound.push(parsedAction)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n setAppGroup(appsFound)\n\n\t\t\t\t\tappsFound = []\n\t\t\t\t\tfor (let triggerkey in responseJson.triggers) {\n\t\t\t\t\t\tconst parsedAction = responseJson.triggers[triggerkey]\n\t\t\t\t\t\tif (appsFound.findIndex(data => data.app_name === parsedAction.app_name) < 0){\n\t\t\t\t\t\t\tappsFound.push(parsedAction)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n setTriggerGroup(appsFound)\n } else {\n getAppAuthentication();\n getEnvironments();\n getWorkflowExecution(props.match.params.key, \"\");\n getAvailableWorkflows(-1);\n getSettings();\n getFiles()\n }\n\n // Appends SUBFLOWS. Does NOT run during normal grabbing of workflows.\n if (sourcenode.id !== undefined) {\n console.log(\"WORKFLOW: \", responseJson);\n\n var nodefound = false;\n var target = sourcenode.parameters.find((item) => item.name === \"startnode\");\n\t\t\t\t\tconsole.log(\"Got rightclick target: \", target)\n\t\t\t\t\tif (target === undefined || target === null) {\n\t\t\t\t\t\ttarget = {\n\t\t\t\t\t\t\t\"name\": \"startnode\",\n\t\t\t\t\t\t\t\"value\": responseJson.start\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n \n console.log(sourcenode.parameters);\n console.log(target);\n const target_id = target === undefined ? \"\" : target.value;\n const actions = responseJson.actions.map((action) => {\n const node = {\n group: \"nodes\",\n };\n\n // Set it dynamically?\n node.position = {\n x: sourcenode.position.x + action.position.x,\n y: sourcenode.position.y + action.position.y,\n };\n\n node.data = action;\n\n node.data.canConnect = false\n node.data.is_valid = true\n node.data.isValid = true\n node.data._id = action[\"id\"];\n node.data.type = \"ACTION\";\n node.data.source_workflow = responseJson.id;\n if (action.id === target_id) {\n nodefound = true;\n }\n\n if (responseJson.public) {\n node.data.is_valid = true\n node.is_valid = true\n }\n\n var example = \"\";\n if (\n action.example !== undefined &&\n action.example !== null &&\n action.example.length > 0\n ) {\n example = action.example;\n }\n\n node.data.example = example;\n return node;\n });\n\n var triggers = responseJson.triggers.map((trigger) => {\n const node = {};\n\n console.log(\"Only add workflow: \", trigger.app_name)\n if (trigger.app_name !== \"Shuffle Workflow\" && trigger.app_name !== \"User Input\") {\n return null\n }\n\n node.position = trigger.position;\n node.data = trigger;\n\n node.data.canConnect = false\n node.data.id = trigger[\"id\"];\n node.data._id = trigger[\"id\"];\n node.data.type = \"TRIGGER\";\n\n return node;\n });\n\n triggers = triggers.filter((trigger) => trigger !== null);\n const insertedNodes = [].concat(actions, triggers);\n var edges = responseJson.branches.map((branch, index) => {\n const edge = {};\n var conditions = responseJson.branches[index].conditions;\n if (conditions === undefined || conditions === null) {\n conditions = [];\n }\n\n var label = \"\";\n if (conditions.length === 1) {\n label = conditions.length + \" condition\";\n } else if (conditions.length > 1) {\n label = conditions.length + \" conditions\";\n }\n\n const sourceFound = insertedNodes.findIndex(\n (action) => action.data.id === branch.source_id\n );\n if (sourceFound < 0) {\n return null;\n }\n\n const destinationFound = insertedNodes.findIndex(\n (action) => action.data.id === branch.destination_id\n );\n if (destinationFound < 0) {\n return null;\n }\n\n\n edge.data = {\n id: branch.id,\n _id: branch.id,\n source: branch.source_id,\n target: branch.destination_id,\n label: label,\n conditions: conditions,\n hasErrors: branch.has_errors,\n decorator: false,\n source_workflow: responseJson.id,\n };\n\n if (responseJson.public) {\n edge.data.is_valid = true\n edge.is_valid = true\n }\n\n return edge;\n });\n\n edges = edges.filter((edge) => edge !== null);\n cy.removeListener(\"add\");\n cy.add(insertedNodes)\n cy.add(edges);\n\n if (nodefound === true) {\n const newId = uuidv4();\n cy.add({\n group: \"edges\",\n data: {\n id: newId,\n _id: newId,\n source: sourcenode.id,\n target: target_id,\n label: \"Subflow\",\n decorator: true,\n source_workflow: responseJson.id,\n },\n });\n }\n\n cy.fit(null, 100);\n cy.on(\"add\", \"node\", (e) => onNodeAdded(e));\n cy.on(\"add\", \"edge\", (e) => onEdgeAdded(e));\n } else {\n setWorkflow(responseJson);\n setWorkflowDone(true);\n\n // Add error checks\n if (!responseJson.public) {\n if (\n !responseJson.previously_saved ||\n !responseJson.is_valid ||\n responseJson.errors !== undefined ||\n responseJson.errors !== null ||\n responseJson.errors !== // what\n responseJson.errors.length > 0\n ) {\n\t\t\t\t\t\t\tconsole.log(\"Setting configure Modal to open\")\n setConfigureWorkflowModalOpen(true);\n }\n }\n }\n })\n .catch((error) => {\n //alert.error(error.toString());\n console.log(\"Get workflows error: \", error.toString());\n });\n };\n\n const onUnselect = (event) => {\n const nodedata = event.target.data();\n console.log(\"UNSELECT: \", nodedata);\n //if (nodedata.type === \"ACTION\") {\n //\tsetLastSelected(nodedata)\n //}\n //\n\n // Wait for new node to possibly be selected\n //setTimeout(() => {\n const typeIds = cy.elements('node:selected').jsons();\n for (var idkey in typeIds) {\n const item = typeIds[idkey]\n if (item.data.isButton === true) {\n //console.log(\"Reselect old node & return - or just return?\")\n\n if (item.data.buttonType === \"delete\" && item.data.attachedTo === nodedata.id) {\n //console.log(\"delete of same node!\")\n }\n return\n }\n }\n\n // Unselecting all\n //cy.elements().unselect()\n\n //if (nodedata.app_name === undefined && nodedata.source === undefined) {\n // return;\n //}\n //event.target.removeClass(\"selected\");\n //\n\n\n\n\n\n //// If button is clicked, select current node\n\n // Attempt at rewrite of name in other actions in following nodes.\n // Should probably be done in the onBlur for the textfield instead\n /*\n if (event.target.data().type === \"ACTION\") {\n const nodeaction = event.target.data()\n const curaction = workflow.actions.find(a => a.id === nodeaction.id)\n console.log(\"workflowaction: \", curaction)\n console.log(\"nodeaction: \", nodeaction)\n if (nodeaction.label !== curaction.label) {\n console.log(\"BEACH!\")\n\n var params = []\n const fixedName = \"$\"+curaction.label.toLowerCase().replace(\" \", \"_\")\n for (var actionkey in workflow.actions) {\n if (workflow.actions[actionkey].id === curaction.id) {\n continue\n }\n\n for (var paramkey in workflow.actions[actionkey].parameters) {\n const param = workflow.actions[actionkey].parameters[paramkey]\n if (param.value === null || param.value === undefined || !param.value.includes(\"$\")) {\n continue\n }\n\n const innername = param.value.toLowerCase().replace(\" \", \"_\")\n if (innername.includes(fixedName)) {\n //workflow.actions[actionkey].parameters[paramkey].replace(\n //console.log(\"FOUND!: \", innername)\n }\n }\n }\n }\n }\n */\n\n\n // FIXME - check if they have value before overriding like this for no reason.\n // Would save a lot of time (400~ ms -> 30ms)\n //console.log(\"ACTION: \", selectedAction)\n //console.log(\"APP: \", selectedApp)\n\n\t\t//setSubworkflow({})\n ReactDOM.unstable_batchedUpdates(() => {\n setSelectedAction({});\n setSelectedApp({});\n setSelectedTrigger({});\n setSelectedComment({})\n setSelectedEdge({});\n\n setSelectedEdge({})\n setSelectedActionEnvironment({})\n setTriggerAuthentication({})\n setSelectedTriggerIndex(-1)\n setTriggerFolders([])\n setLocalFirstrequest(true)\n\n // Can be used for right side view\n setRightSideBarOpen(false);\n setScrollConfig({\n top: 0,\n left: 0,\n selected: \"\",\n });\n //console.timeEnd(\"UNSELECT\");\n })\n\n sendStreamRequest({\n \"item\": \"node\",\n \"type\": \"unselect\",\n \"userid\": userdata.id,\n })\n //}, 150)\n };\n\n const onEdgeSelect = (event) => {\n ReactDOM.unstable_batchedUpdates(() => {\n setRightSideBarOpen(true);\n setLastSaved(false);\n\n /*\n // Used to not be able to edit trigger-based branches. \n const triggercheck = workflow.triggers.find(trigger => trigger.id === event.target.data()[\"source\"])\n if (triggercheck === undefined) {\n */\n if (\n event.target.data(\"type\") !== \"COMMENT\" &&\n event.target.data().decorator\n ) {\n alert.info(\"This edge can't be edited.\");\n } else {\n //console.log(\"DATA: \", event.target.data())\n const destinationId = event.target.data(\"target\");\n //console.log(\"DATA: \", event.target.data())\n const curaction = workflow.actions.find((a) => a.id === destinationId);\n //console.log(\"ACTION: \", curaction)\n if (curaction !== undefined && curaction !== null) {\n if (\n curaction.app_name === \"Shuffle Tools\" &&\n curaction.name === \"router\"\n ) {\n alert.info(\"Router action can't have incoming conditions\");\n event.target.unselect();\n return;\n }\n }\n\n setSelectedEdgeIndex(\n workflow.branches.findIndex(\n (data) => data.id === event.target.data()[\"id\"]\n )\n );\n setSelectedEdge(event.target.data());\n }\n\n setSelectedAction({});\n setSelectedTrigger({});\n })\n };\n\n // Comparing locations between nodes and setting views\n var styledElements = [];\n var originalLocation = {\n x: 0,\n y: 0,\n };\n\n const onCtxTap = (event) => {\n const nodedata = event.target.data();\n console.log(nodedata);\n if (nodedata.type === \"TRIGGER\" && (nodedata.app_name === \"Shuffle Workflow\" || nodedata.app_name === \"User Input\")) {\n \n if (nodedata.parameters === null) {\n alert.error(\"Set a workflow first\");\n return;\n }\n\n if (nodedata.parameters === undefined) {\n return\n }\n\n const workflow_id = nodedata.parameters.find((param) => param.name === \"workflow\" || param.name === \"subflow\");\n\n if (workflow.id === workflow_id.valu) {\n return;\n }\n\n cy.animation({\n zoom: 0,\n center: {\n eles: event.target,\n },\n })\n\t\t\t.play()\n\t\t\t.promise()\n\t\t\t.then(() => {\n\t\t\t\tconsole.log(\"DONE: \", workflow_id);\n\t\t\t\tgetWorkflow(workflow_id.value, nodedata);\n\t\t\t\tcy.fit(null, 50);\n\t\t\t});\n }\n };\n\n const onNodeDragStop = (event, selectedAction) => {\n const nodedata = event.target.data();\n if (nodedata.id === selectedAction.id) {\n return;\n }\n\n if (nodedata.finished === false) {\n return;\n }\n\n\t\tconst connected = event.target.connectedEdges().jsons()\n if (connected.length > 0 && connected !== undefined) {\n\t\t\tfor (let connectkey in connected) {\n\t\t\t\tconst edge = connected[connectkey]\n\t\t\t\t//console.log(\"EDGE:\", edge)\n\n\t\t\t\t//const edge = edgeBase.json()\n\n\t\t\t\tconst sourcenode = cy.getElementById(edge.data.source)\n\t\t\t\tconst destinationnode = cy.getElementById(edge.data.target)\n\t\t\t\tif (sourcenode === undefined || sourcenode === null || destinationnode === undefined || destinationnode === null) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tconst edgeCurve = calculateEdgeCurve(sourcenode.position(), destinationnode.position())\n\t\t\t\tconst currentedge = cy.getElementById(edge.data.id)\n\t\t\t\tif (currentedge !== undefined && currentedge !== null) {\n\t\t\t\t\tcurrentedge.style('control-point-distance', edgeCurve.distance)\n\t\t\t\t\tcurrentedge.style('control-point-weight', edgeCurve.weight)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n if (styledElements.length === 1) {\n console.log(\n \"Should reset location and autofill: \",\n styledElements,\n selectedAction\n );\n if (originalLocation.x !== 0 || originalLocation.y !== 0) {\n const currentnode = cy.getElementById(nodedata.id);\n if (currentnode !== null && currentnode !== undefined) {\n currentnode.position(\"x\", originalLocation.x);\n currentnode.position(\"y\", originalLocation.y);\n }\n\n originalLocation = { x: 0, y: 0 };\n }\n\n const curElement = document.getElementById(styledElements[0]);\n if (curElement !== null && curElement !== undefined) {\n curElement.style.border = curElement.style.original_border;\n var newValue = \"$\" + nodedata.label.toLowerCase().replaceAll(\" \", \"_\");\n if (nodedata.type === \"TRIGGER\") {\n if (nodedata.trigger_type === \"WEBHOOK\" || nodedata.trigger_type === \"SCHEDULE\" || nodedata.trigger_type === \"EMAIL\") {\n var newValue = \"$exec\"\n }\n }\n var paramname = \"\";\n var idnumber = -1;\n if (curElement.id.startsWith(\"rightside_field_\")) {\n console.log(\"FOUND FIELD WITH NUMBER: \", curElement.id);\n\n\n // Find exact position to put the text\n\n const idsplit = curElement.id.split(\"_\");\n console.log(idsplit);\n if (idsplit.length === 3 && !isNaN(idsplit[2])) {\n console.log(\"ADDING TO PARAM \", idsplit[2]);\n\n selectedAction.parameters[idsplit[2]].value += newValue;\n paramname = selectedAction.parameters[idsplit[2]].name;\n idnumber = idsplit[2];\n }\n }\n\n if (idnumber >= 0 && paramname.length > 0) {\n const exampledata = GetExampleResult(nodedata);\n const parsedname = paramname\n .toLowerCase()\n .trim()\n .replaceAll(\"_\", \" \");\n\n const foundresult = GetParamMatch(parsedname, exampledata, \"\");\n if (foundresult.length > 0) {\n console.log(\"FOUND RESULT: \", paramname, foundresult);\n newValue = `${newValue}${foundresult}`;\n }\n\n selectedAction.parameters[idnumber].value = newValue;\n }\n\n curElement.value = newValue;\n }\n }\n\n if (\n nodedata.app_name !== undefined &&\n ((nodedata.app_name !== \"Shuffle Tools\" &&\n nodedata.app_name !== \"Testing\" &&\n nodedata.app_name !== \"Shuffle Workflow\" &&\n nodedata.app_name !== \"User Input\") ||\n nodedata.isStartNode)\n ) {\n\t\t\tconst allNodes = cy.nodes().jsons();\n\t\t\tvar found = false;\n\t\t\tfor (let nodekey in allNodes) {\n\t\t\t\tconst currentNode = allNodes[nodekey];\n\t\t\t\tif (\n\t\t\t\t\tcurrentNode.data.attachedTo === nodedata.id &&\n\t\t\t\t\tcurrentNode.data.isDescriptor\n\t\t\t\t) {\n\t\t\t\t\tfound = true;\n\t\t\t\t\tconsole.log(\"FOUND THE NODE!\");\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (nodedata.app_name === \"Webhook\" || nodedata.app_name === \"Schedule\" || nodedata.app_name === \"Gmail\" || nodedata.app_name === \"Office365\") {\n\t\t\t\tconsole.log(\"Found triggers. Add!\")\n\n \tif (!found) {\n\t\t\t\t\tconsole.log(\"Find amount of executions for the specific nodetype: \", nodedata.app_name, \"Executions: \", workflowExecutions)\n\t\t\t\t\t// Find how many executions it has \n\t\t\t\t\tvar executions = 0\n\t\t\t\t\tconst matchingExecutions = workflowExecutions.filter((execution => execution.execution_source === nodedata.app_name.toLowerCase()))\n\t\t\t\t\tconsole.log(\"Matches: \", matchingExecutions.length)\n\t\t\t\t\tconst color = matchingExecutions.length > 0 ? \"#34a853\" : \"#ea4436\"\n\t\t\t\t\tconst decoratorNode = {\n\t\t\t\t\t\tposition: {\n\t\t\t\t\t\t\tx: event.target.position().x + 44,\n\t\t\t\t\t\t\ty: event.target.position().y + 44,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tlocked: true,\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tisDescriptor: true,\n\t\t\t\t\t\t\tisValid: true,\n\t\t\t\t\t\t\tis_valid: true,\n\t\t\t\t\t\t\tisTrigger: true,\n\t\t\t\t\t\t\tlabel: `${matchingExecutions.length}`,\n\t\t\t\t\t\t\tattachedTo: nodedata.id,\n\t\t\t\t\t\t\timageColor: color,\n\t\t\t\t\t\t\thasExecutions: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\n\t\t\t\t\tcy.add(decoratorNode)\n\t\t\t\t}\n\t\t\t} else { \n \t// Readding the icon after moving the node\n \tif (!found) {\n \t const iconInfo = GetIconInfo(nodedata);\n \t const svg_pin = ``;\n \t const svgpin_Url = encodeURI(\"data:image/svg+xml;utf-8,\" + svg_pin);\n\n \t const offset = nodedata.isStartNode ? 36 : 44;\n \t const decoratorNode = {\n \t position: {\n \t x: event.target.position().x + offset,\n \t y: event.target.position().y + offset,\n \t },\n \t locked: true,\n \t data: {\n \t isDescriptor: true,\n \t isValid: true,\n \t is_valid: true,\n \t label: \"\",\n \t image: svgpin_Url,\n \t imageColor: iconInfo.iconBackgroundColor,\n \t attachedTo: nodedata.id,\n \t },\n \t };\n\n \t cy.add(decoratorNode).unselectify();\n \t} else {\n \t console.log(\"Node already exists - don't add descriptor node\");\n \t}\n\t\t\t}\n }\n\n originalLocation = {\n x: 0,\n y: 0,\n };\n\n sendStreamRequest({\n \"item\": \"node\",\n \"type\": \"move\",\n \"id\": nodedata.id,\n \"location\": {\n \"x\": event.target.position(\"x\"),\n \"y\": event.target.position(\"y\"),\n }\n })\n };\n\n const onNodeDrag = (event, selectedAction) => {\n const nodedata = event.target.data();\n if (nodedata.finished === false) {\n console.log(\"NOT FINISHED - ADD EXAMPLE BRANCHES TO CLOSEST!!\")\n return\n }\n\n if (nodedata.app_name !== undefined) {\n const allNodes = cy.nodes().jsons();\n for (var nodekey in allNodes) {\n const currentNode = allNodes[nodekey];\n if (currentNode.data.attachedTo === nodedata.id) {\n cy.getElementById(currentNode.data.id).remove();\n }\n\n // Calculate location\n //currentNode.position.x > \n //if (nodedata.position.x > 0 && nodedata.position.y > 0) {\n //\tconsole.log(\"Positive both\")\n //}\n\n //console.log(currentNode.position)\n //console.log(nodedata.position)\n }\n } else {\n //console.log(\"No appid? \", nodedata)\n }\n\n if (nodedata.buttonType === \"edgehandler\") {\n console.log(\"Enable edgehandler!\")\n console.log(\"Find parent: \", nodedata.attachedTo)\n const parentNode = cy.getElementById(nodedata.attachedTo);\n if (parentNode !== null && parentNode !== undefined) {\n console.log(\"Start parentnode tracking!\")\n //cy.edgehandles().start(parentNode)\n }\n }\n\n if (nodedata.id === selectedAction.id) {\n return;\n }\n\n\n\n /*\n // Tried looking for the closest node by position. aStar path not working entirely.\n console.log(\"NODE: \", event.target)\n const closestNode = cy.elements().aStar({\n root: nodedata.id,\n goal: 'node',\n directed: false,\n })\n\n if (closestNode.found) {\n console.log(\"No closest node found for: \", nodedata.id)\n } else {\n console.log(\"Closest: \", closestNode)\n }\n */\n\n if (\n originalLocation.x === 0 &&\n originalLocation.y === 0 &&\n nodedata.position !== undefined\n ) {\n originalLocation.x = nodedata.position.x;\n originalLocation.y = nodedata.position.y;\n }\n\n // Part of autocomplete. Styles elements in frontend to indicate\n // what and where we may input data for the user.\n const onMouseUpdate = (e) => {\n const x = e.pageX;\n const y = e.pageY;\n\n const elementMouseIsOver = document.elementFromPoint(x, y);\n if (elementMouseIsOver !== undefined && elementMouseIsOver !== null) {\n // Color for #f85a3e translated to rgb\n const newBorder = \"3px solid rgb(248, 90, 62)\";\n if (\n elementMouseIsOver.style.border !== newBorder &&\n elementMouseIsOver.id.includes(\"rightside\")\n ) {\n if (elementMouseIsOver.style.border !== undefined) {\n elementMouseIsOver.style.original_border =\n elementMouseIsOver.style.border;\n } else {\n elementMouseIsOver.style.original_border = \"\";\n }\n\n elementMouseIsOver.style.border = newBorder;\n console.log(\"STYLED: \", styledElements);\n for (var styledElementsKey in styledElements) {\n const curElement = document.getElementById(styledElements[styledElementsKey]);\n if (curElement !== null && curElement !== undefined) {\n curElement.style.border = curElement.style.original_border;\n }\n }\n\n styledElements = [];\n styledElements.push(elementMouseIsOver.id);\n } else if (\n elementMouseIsOver.id === \"cytoscape_view\" ||\n elementMouseIsOver.id === \"\"\n ) {\n for (var index in styledElements) {\n const curElement = document.getElementById(styledElements[index]);\n if (curElement !== null && curElement !== undefined) {\n curElement.style.border = curElement.style.original_border;\n }\n }\n\n styledElements = [];\n }\n }\n\n // Ensure it only happens once\n document.removeEventListener(\"mousemove\", onMouseUpdate, false);\n };\n\n document.addEventListener(\"mousemove\", onMouseUpdate, false);\n };\n\n\n useBeforeunload(() => {\n if (!lastSaved) {\n return unloadText;\n } else {\n if (workflow.public === false) {\n //document.removeEventListener(\"mousemove\", onMouseUpdate, true);\n document.removeEventListener(\"keydown\", handleKeyDown, true);\n document.removeEventListener(\"paste\", handlePaste, true);\n }\n }\n });\n\n // Nodeselectbatching:\n // https://stackoverflow.com/questions/16677856/cy-onselect-callback-only-once\n // onNodeClick\n const onNodeSelect = (event, newAppAuth) => {\n // Forces all states to update at the same time,\n\t\t// Otherwise everything is SUPER slow\n\n\t\tReactDOM.unstable_batchedUpdates(() => {\n const data = event.target.data();\n if (data.isButton) {\n if (data.buttonType === \"suggestion\") {\n\t\t\t\t\tif (cy === undefined) {\n\t\t\t\t\t\tconsole.log(\"Cy not defined yet\")\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\n\t\t\t\t\t// Inject HTML at a fixed location\n\t\t\t\t\t//const newHtml = \"

    Do you want to add this suggestion?

    \"\n\t\n\t\t\t\t\t// Find mouse cursor position on screen\n\t\t\t\t\tconsole.log(\"Suggestion html to be added at location: \", event)\n\t\t\t\t\t/*\n\t\t\t\t\tconst position = {\n\t\t\t\t\t\t\"top\": cy.pan().y, \n\t\t\t\t\t\t\"left\": cy.pan().x, \n\t\t\t\t\t}\n\t\t\t\t\t*/\n\n\n\t\t\t\t\tconst position = event.target.renderedPosition();\n\t\t\t\t\tconst container = cy.container();\n\t\t\t\t\tconst offset = {\n \t\t\t\t\tleft: container.offsetLeft,\n \t\t\t\t\ttop: container.offsetTop\n\t\t\t\t\t};\n\t\t\t\t\t\n\t\t\t\t\t// Calculate the actual screen position for the box\n\t\t\t\t\tconst screenPosition = {\n\t\t\t\t\t left: position.x + offset.left - 150,\n\t\t\t\t\t top: position.y + offset.top,\n\t\t\t\t\t};\n\t\t\t\t\t\n\t\t\t\t\t// Log the position to the console\n\t\t\t\t\tconsole.log('Node screen position:', screenPosition);\n\n\t\t\t\t\tconst newbox = {\n\t\t\t\t\t\t\"position\": screenPosition,\n\t\t\t\t\t\t\"node_position\": event.target.position(),\n\t\t\t\t\t\t\"open\": true,\n\t\t\t\t\t\t\"attachedTo\": data.attachedTo,\n\t\t\t\t\t}\n\n\t\t\t\t\tconsole.log(\"Rendered position: \", newbox.node_position)\n\n\t\t\t\t\tsetSuggestionBox(newbox)\n\n\t\t\t\t\t// Unselect\n \tevent.target.unselect();\n\t\t\t\t\t\n } else if (data.buttonType === \"delete\") {\n const parentNode = cy.getElementById(data.attachedTo);\n if (parentNode !== null && parentNode !== undefined) {\n removeNode(data.attachedTo)\n //parentNode.remove()\n }\n\n return\n } else if (data.buttonType === \"set_startnode\" && data.type !== \"TRIGGER\") {\n const parentNode = cy.getElementById(data.attachedTo);\n if (parentNode !== null && parentNode !== undefined) {\n var oldstartnode = cy.getElementById(workflow.start);\n if (\n oldstartnode !== null &&\n oldstartnode !== undefined &&\n oldstartnode.length > 0\n ) {\n try {\n oldstartnode[0].data(\"isStartNode\", false);\n } catch (e) {\n console.log(\"Startnode error: \", e);\n }\n }\n\n workflow.start = parentNode.data(\"id\");\n setLastSaved(false);\n parentNode.data(\"isStartNode\", true);\n }\n\n //event.target.unselect();\n setRightSideBarOpen(true);\n return\n\n } else if (data.buttonType === \"copy\") {\n console.log(\"COPY!\");\n\n // 1. Find parent\n // 2. Find branches for parent\n // 3. Make a new node that's moved a little bit\n const parentNode = cy.getElementById(data.attachedTo);\n if (parentNode !== null && parentNode !== undefined) {\n var newNodeData = JSON.parse(JSON.stringify(parentNode.data()));\n newNodeData.id = uuidv4();\n if (newNodeData.position !== undefined) {\n newNodeData.position = {\n x: newNodeData.position.x + 100,\n y: newNodeData.position.y + 100,\n };\n }\n\n newNodeData.isStartNode = false;\n newNodeData.errors = [];\n newNodeData.is_valid = true;\n newNodeData.isValid = true;\n newNodeData.label = parentNode.data(\"label\") + \"_copy\";\n\n cy.add({\n group: \"nodes\",\n data: newNodeData,\n position: newNodeData.position,\n });\n\n // Readding the icon after moving the node\n if (\n newNodeData.app_name !== \"Testing\" ||\n newNodeData.app_name !== \"Shuffle Workflow\"\n ) {\n } else {\n const iconInfo = GetIconInfo(newNodeData);\n const svg_pin = ``;\n const svgpin_Url = encodeURI(\"data:image/svg+xml;utf-8,\" + svg_pin);\n\n const offset = newNodeData.isStartNode ? 36 : 44;\n const decoratorNode = {\n position: {\n x: newNodeData.position.x + offset,\n y: newNodeData.position.y + offset,\n },\n locked: true,\n data: {\n isDescriptor: true,\n isValid: true,\n is_valid: true,\n label: \"\",\n image: svgpin_Url,\n imageColor: iconInfo.iconBackgroundColor,\n attachedTo: newNodeData.id,\n },\n };\n\n cy.add(decoratorNode).unselectify();\n }\n\n workflow.actions.push(newNodeData);\n\n const sourcebranches = workflow.branches.filter(\n (foundbranch) => foundbranch.source_id === parentNode.data(\"id\")\n );\n const destinationbranches = workflow.branches.filter(\n (foundbranch) =>\n foundbranch.destination_id === parentNode.data(\"id\")\n );\n\n \t for (var sourceBranchesKey in sourcebranches) {\n \t var newbranch = JSON.parse(JSON.stringify(sourcebranches[sourceBranchesKey]));\n \t newbranch.id = uuidv4();\n \t newbranch.source_id = newNodeData.id;\n\n newbranch._id = newbranch.id;\n newbranch.source = newbranch.source_id;\n newbranch.target = newbranch.destination_id;\n cy.add({\n group: \"edges\",\n data: newbranch,\n });\n }\n\n \t for (var destinationBranchesKey in destinationbranches) {\n \t var newbranch = JSON.parse(\n \t JSON.stringify(destinationbranches[destinationBranchesKey])\n \t );\n \t newbranch.id = uuidv4();\n \t newbranch.destination_id = newNodeData.id;\n\n newbranch._id = newbranch.id;\n newbranch.source = newbranch.source_id;\n newbranch.target = newbranch.destination_id;\n cy.add({\n group: \"edges\",\n data: newbranch,\n });\n }\n\n //event.target.unselect();\n return\n }\n }\n\n return;\n } else if (data.isDescriptor) {\n console.log(\"Can't select descriptor\");\n\t\t\t\tif (data.isTrigger) {\n\t\t\t\t\tconsole.log(\"But maybe we can select trigger descriptor? Maybe open execution tab?\")\n \t\tsetExecutionModalOpen(true)\n\t\t\t\t}\n\n event.target.unselect();\n return;\n }\n\n\t\t\tif (data.type === undefined) {\n\t\t\t\tconsole.log(\"No type, automatically setting to action\");\n\t\t\t\tdata.type = \"ACTION\"\n\t\t\t}\n\n if (data.type === \"ACTION\") {\n setSelectedComment({})\n //var curaction = JSON.parse(JSON.stringify(data))\n // FIXME: Trust it to just work?\n //event.target.data()\n var curaction = workflow.actions.find((a) => a.id === data.id)\n if (!curaction || curaction === undefined) {\n if (data.id !== undefined && data.app_name !== undefined) {\n workflow.actions.push(data)\n setWorkflow(workflow)\n curaction = data\n } else {\n if (workflow.public !== true) {\n alert.error(\"Action not found. Please remake it.\");\n }\n\n event.target.remove();\n return;\n }\n }\n\n //var newapps = JSON.parse(JSON.stringify(apps))\n var newapps = apps\n if (apps === null || apps === undefined || apps.length === 0) {\n newapps = filteredApps\n }\n\n // Check ID first, then names etc\n // That way it always selects the right IF it exists\n var curapp = newapps.find((a) =>\n a.id === curaction.app_id\n )\n\n if (curapp === undefined || curapp === null) {\n console.log(\"Couldn't find ID - checking with name & version\")\n\n curapp = newapps.find((a) =>\n a.name === curaction.app_name &&\n (a.app_version === curaction.app_version ||\n (a.loop_versions !== null &&\n a.loop_versions.includes(curaction.app_version)))\n )\n }\n\n if (curaction.template === true && curaction.name !== undefined) {\n //newapps.\n const parsedname = curaction.name.replaceAll(\" \", \"_\").toLowerCase()\n console.log(\"FIND AN ACTION AMONG THE APPS THAT MATCHES NAME: \", parsedname)\n\n\t\t\t\t\tcuraction.matching_actions = []\n\t\t\t\t\tfor (var newAppskey in newapps) {\n\t\t\t\t\t\tfor (let actionsSubkey in newapps[newAppskey].actions) {\n\t\t\t\t\t\t\tconst tmpaction = newapps[newAppskey].actions[actionsSubkey]\n\t\t\t\t\t\t\tif (tmpaction.name.replaceAll(\" \", \"_\").toLowerCase() === parsedname) {\n\t\t\t\t\t\t\t\tconsole.log(\"MATCH!: \", newapps[newAppskey])\n\t\t\t\t\t\t\t\tcuraction.matching_actions.push({\n\t\t\t\t\t\t\t\t\t\"app_name\": newapps[newAppskey].name,\n\t\t\t\t\t\t\t\t\t\"app_version\": newapps[newAppskey].app_version,\n\t\t\t\t\t\t\t\t\t\"app_id\": newapps[newAppskey].id,\n\t\t\t\t\t\t\t\t\t\"action\": tmpaction,\n\t\t\t\t\t\t\t\t\t\"large_image\": newapps[newAppskey].large_image,\n\t\t\t\t\t\t\t\t\t\"app_index\": newAppskey,\n\t\t\t\t\t\t\t\t\t\"action_index\": actionsSubkey,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n if (!curapp || curapp === undefined) {\n console.log(\"APPS - couldn't find it: \", newapps)\n //alert.error(`App ${curaction.app_name}:${curaction.app_version} not found. Is it activated?`);\n\n const tmpapp = {\n name: curaction.app_name,\n app_name: curaction.app_name,\n app_version: curaction.app_version,\n id: curaction.app_id,\n actions: [curaction],\n };\n\n setSelectedApp(tmpapp);\n setSelectedAction(curaction);\n } else {\n //if (curapp.id !== curaction.id) {\n //\tcuraction.app_id = curapp.id\n //\t//.valueOf()\n //}\n curaction.app_id = curapp.id\n\n setAuthenticationType(\n curapp.authentication.type === \"oauth2\" && curapp.authentication.redirect_uri !== undefined && curapp.authentication.redirect_uri !== null ? {\n type: \"oauth2\",\n redirect_uri: curapp.authentication.redirect_uri,\n refresh_uri: curapp.authentication.refresh_uri,\n token_uri: curapp.authentication.token_uri,\n scope: curapp.authentication.scope,\n client_id: curapp.authentication.client_id,\n client_secret: curapp.authentication.client_secret,\n } : {\n type: \"\",\n }\n )\n\n const requiresAuth = curapp.authentication.required; //&& ((curapp.authentication.parameters !== undefined && curapp.authentication.parameters !== null) || (curapp.authentication.type === \"oauth2\" && curapp.authentication.redirect_uri !== undefined && curapp.authentication.redirect_uri !== null))\n setRequiresAuthentication(requiresAuth);\n if (curapp.authentication.required) {\n //console.log(\"App requires auth.\")\n // Setup auth here :)\n const authenticationOptions = [];\n var findAuthId = \"\";\n if (\n curaction.authentication_id !== null &&\n curaction.authentication_id !== undefined &&\n curaction.authentication_id.length > 0\n ) {\n findAuthId = curaction.authentication_id;\n }\n\n const tmpAuth = JSON.parse(JSON.stringify(newAppAuth));\n\t\t\t\t\t\t//console.log(\"FOUND AUTH OPTIONS: \", tmpAuth)\n\n\t\t\t\t\t\tconst curappName = curapp.name.toLowerCase()\n \t for (let tmpAuthKey in tmpAuth) {\n \t var item = tmpAuth[tmpAuthKey];\n\n \t const newfields = {};\n if (item.app.name.toLowerCase() !== curappName) {\n\t\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Makes list into key:value object \n\t\t\t\t\t\t\tfor (let fieldkey in item.fields) {\n\t\t\t\t\t\t\t\tif (item.fields[fieldkey] === undefined) {\n\t\t\t\t\t\t\t\t\tconsole.log(\"Problem with filterkey in Node select\", fieldkey)\n\t\t\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tconst filterkey = item.fields[fieldkey][\"key\"]\n\t\t\t\t\t\t\t\tif (filterkey === null || filterkey === undefined) {\n\t\t\t\t\t\t\t\t\tconsole.log(\"Problem with filterkey 2. Null or undefined 3\")\n\t\t\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tnewfields[filterkey] = item.fields[fieldkey][\"value\"];\n \t }\n\n item.fields = newfields;\n if (item.app.name.toLowerCase() === curappName) {\n authenticationOptions.push(item);\n if (item.id === findAuthId) {\n curaction.selectedAuthentication = item;\n }\n }\n }\n\n curaction.authentication = authenticationOptions;\n if (\n curaction.selectedAuthentication === null ||\n curaction.selectedAuthentication === undefined ||\n curaction.selectedAuthentication.length === \"\"\n ) {\n curaction.selectedAuthentication = {};\n }\n } else {\n curaction.authentication = [];\n curaction.authentication_id = \"\";\n curaction.selectedAuthentication = {};\n }\n\n \t if (\n \t curaction.parameters !== undefined &&\n \t curaction.parameters !== null &&\n \t curaction.parameters.length > 0\n \t ) {\n \t for (var curActionParamKey in curaction.parameters) {\n \t if (\n \t curaction.parameters[curActionParamKey].options !== undefined &&\n \t curaction.parameters[curActionParamKey].options !== null &&\n \t curaction.parameters[curActionParamKey].options.length > 0 &&\n \t curaction.parameters[curActionParamKey].value === \"\"\n \t ) {\n \t curaction.parameters[curActionParamKey].value = curaction.parameters[curActionParamKey].options[0];\n \t }\n \t }\n \t } else {\n\t\t\t\t\t\tconsole.log(\"Should check APP if it has the same params as ACTION\")\n\t\t\t\t\t\tfor (let actionKey in curapp.actions) {\n\t\t\t\t\t\t\tconst tmpaction = curapp.actions[actionKey]\n\t\t\t\t\t\t\tif (tmpaction.name === curaction.name) {\n\t\t\t\t\t\t\t\tconsole.log(\"Found action - needs change?\", tmpaction)\n\t\t\t\t\t\t\t\tif (tmpaction.parameters !== undefined && tmpaction.parameters !== null && tmpaction.parameters.length > 0) {\n\t\t\t\t\t\t\t\t\tcuraction.parameters = JSON.parse(JSON.stringify(tmpaction.parameters))\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t//curaction[\"authentication\"] = []\n\t\t\t\t\t//curaction[\"authentication_id\"] = \"\"\n\t\t\t\t\t// Fix parameters that are... Not ideal\n\t\t\t\t\t//var paramnames = []\n\t\t\t\t\t//var newparams = []\n\t\t\t\t\t//for (let paramKey in curaction.parameters) {\n\t\t\t\t\t//\tconsole.log(\"Name: \", curaction.parameters[paramKey].name)\n\t\t\t\t\t//\tif (paramnames.includes(curaction.parameters[paramKey].name)) {\n\t\t\t\t\t//\t\tcontinue\n\t\t\t\t\t//\t}\n\n\t\t\t\t\t//\tparamnames.push(curaction.parameters[paramKey].name)\n\t\t\t\t\t//\tnewparams.push(curaction.parameters[paramKey])\n\t\t\t\t\t//}\n\n\t\t\t\t\t//curaction.parameters = newparams\n console.log(\"ACTION CLICK: \", curaction)\n\n setSelectedApp(curapp);\n setSelectedAction(curaction);\n\n cy.removeListener(\"drag\");\n cy.removeListener(\"free\");\n cy.on(\"drag\", \"node\", (e) => onNodeDrag(e, curaction));\n cy.on(\"free\", \"node\", (e) => onNodeDragStop(e, curaction));\n }\n\n if (environments !== undefined && environments !== null && (typeof environments === \"array\" || typeof environments === \"object\")) {\n var parsedenv = environments\n //if (typeof environments === \"object\") {\n //\tparsedenv = [environments]\n //}\n\n const envs = parsedenv.find((a) => a.Name === curaction.environment);\n var env = environments[defaultEnvironmentIndex]\n if (envs !== undefined && envs !== null) {\n env = envs\n }\n\n setSelectedActionEnvironment(env);\n }\n } else if (data.type === \"TRIGGER\") {\n setSelectedComment({})\n if (workflow.triggers === null) {\n workflow.triggers = []\n }\n\n var trigger_index = workflow.triggers.findIndex(\n (a) => a.id === data.id\n );\n\n //console.log(\"Trigger: \", data, trigger_index)\n if (trigger_index === -1) {\n workflow.triggers.push(data)\n trigger_index = workflow.triggers.length - 1\n setWorkflow(workflow)\n }\n\n //console.log(\"Trigger2: \", data, trigger_index)\n //if (data.id !== undefined && data.app_name !== undefined) {\n //\t//newapps.push(data)\n //\tworkflow.actions.push(data)\n //\tcuraction = data\n //} else {\n //\talert.error(\"Action not found. Please remake it.\");\n //\tevent.target.remove();\n //\treturn;\n //}\n\n if (data.app_name === \"Shuffle Workflow\" || data.app_name === \"User Input\") {\n\t\t\t\t\tconsole.log(\"In Workflow loading for user input & subflow\")\n\n getAvailableWorkflows(trigger_index);\n getSettings();\n } else if (data.app_name === \"Webhook\") {\n if (workflow.triggers[trigger_index].parameters !== undefined && workflow.triggers[trigger_index].parameters !== null && workflow.triggers[trigger_index].parameters.length > 0) {\n\t\t\t\t\t\tconsole.log(\"Can set params here!\")\n workflow.triggers[trigger_index].parameters[0] = {\n name: \"url\",\n value: referenceUrl + \"webhook_\" + workflow.triggers[trigger_index].id,\n };\n\n\t\t\t\t\t\tif (workflow.triggers[trigger_index].parameters.length < 5) {\n\t\t\t\t\t\t\tconsole.log(\"Adding to webhook params!\")\n\t\t\t\t\t\t\tworkflow.triggers[trigger_index].parameters.push({\n\t\t\t\t\t\t\t\tname: \"await_response\",\n\t\t\t\t\t\t\t\tvalue: \"v1,\"\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n }\n }\n\n setSelectedTriggerIndex(trigger_index);\n setSelectedTrigger(data);\n setSelectedActionEnvironment(data.env);\n } else if (data.type === \"COMMENT\") {\n setSelectedComment(data);\n } else {\n alert.error(\"Can't handle node type \" + data.type);\n return;\n }\n\n setRightSideBarOpen(true);\n setLastSaved(false);\n setScrollConfig({\n top: 0,\n left: 0,\n selected: \"\",\n });\n\n console.log(\"DOne in the node update\")\n\n\t\t\tsetSuggestionBox({\n\t\t\t\t\"position\": {\n\t\t\t\t\t\"top\": 500,\n\t\t\t\t\t\"left\": 500,\n\t\t\t\t},\n\t\t\t\t\"open\": false,\n\t\t\t\t\"attachedTo\": \"\",\n\t\t\t});\n sendStreamRequest({\n \"item\": \"node\",\n \"type\": \"select\",\n \"id\": data.id,\n \"userid\": userdata.id,\n \"location\": {\n \"x\": event.target.position(\"x\"),\n \"y\": event.target.position(\"y\"),\n }\n })\n\n })\n }\n\n const activateApp = (appid, refresh) => {\n fetch(`${globalUrl}/api/v1/apps/${appid}/activate`, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json',\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Failed to activate\")\n }\n\n return response.json()\n })\n .then((responseJson) => {\n if (responseJson.success === false) {\n alert.error(\"Failed to auto-activate the app. Go to /apps and activate it.\")\n } else {\n if (refresh === true) {\n \t//alert.success(\"App activated for your organization! Refresh the page to use the app.\")\n getApps()\n }\n }\n })\n .catch(error => {\n //alert.error(error.toString())\n console.log(\"Activate app error: \", error.toString())\n });\n }\n\n const GetExampleResult = (item) => {\n var exampledata = item.example === undefined ? \"\" : item.example;\n if (workflowExecutions.length > 0) {\n // Look for the ID\n for (let execkey in workflowExecutions) {\n if (\n workflowExecutions[execkey].results === undefined ||\n workflowExecutions[execkey].results === null\n ) {\n continue;\n }\n\n var foundResult = { result: \"\" };\n if (item.id === \"exec\") {\n if (\n workflowExecutions[execkey].execution_argument !== undefined &&\n workflowExecutions[execkey].execution_argument !== null &&\n workflowExecutions[execkey].execution_argument.length > 0\n ) {\n foundResult.result = workflowExecutions[execkey].execution_argument;\n } else {\n continue;\n }\n } else {\n foundResult = workflowExecutions[execkey].results.find(\n (result) => result.action.id === item.id\n );\n if (foundResult === undefined) {\n continue;\n }\n }\n\n foundResult.result = foundResult.result.trim();\n foundResult.result = foundResult.result.split(\" None\").join(' \"None\"');\n foundResult.result = foundResult.result.split(\" False\").join(\" false\");\n foundResult.result = foundResult.result.split(\" True\").join(\" true\");\n\n var jsonvalid = true;\n try {\n if (\n !foundResult.result.includes(\"{\") &&\n !foundResult.result.includes(\"[\")\n ) {\n jsonvalid = false;\n }\n } catch (e) {\n try {\n foundResult.result = foundResult.result.split(\"'\").join('\"');\n if (\n !foundResult.result.includes(\"{\") &&\n !foundResult.result.includes(\"[\")\n ) {\n jsonvalid = false;\n }\n } catch (e) {\n jsonvalid = false;\n }\n }\n\n // Finds the FIRST json only\n if (jsonvalid) {\n try {\n exampledata = JSON.parse(foundResult.result)\n } catch (e) {\n console.log(\"Result: \", exampledata)\n\n }\n\n break;\n }\n }\n }\n\n return exampledata;\n };\n\n const GetParamMatch = (paramname, exampledata, basekey) => {\n if (typeof exampledata !== \"object\") {\n return \"\";\n }\n\n if (exampledata === null) {\n return \"\";\n }\n\n //console.log(\"NOT REPLACING ON PURPOSE!!\")\n //return \"\"\n\n // Basically just a stupid if-else :)\n const synonyms = {\n id: [\n \"id\",\n \"ref\",\n \"sourceref\",\n \"reference\",\n \"sourcereference\",\n \"alert id\",\n \"case id\",\n \"incident id\",\n \"service id\",\n \"sid\",\n \"uid\",\n \"uuid\",\n \"team id\",\n \"message id\",\n \"message_id\",\n ],\n title: [\"title\", \"name\", \"message\"],\n description: [\"description\", \"explanation\", \"story\", \"details\"],\n email: [\"mail\", \"email\", \"sender\", \"receiver\", \"recipient\"],\n data: [\n \"data\",\n \"ip\",\n \"domain\",\n \"url\",\n \"hash\",\n \"md5\",\n \"sha2\",\n \"sha256\",\n \"value\",\n \"item\",\n ],\n tags: [\"tags\", \"taxonomies\"],\n };\n\n // 1. Find the right synonym\n // 2. Replace with an autocomplete if it exists\n var selectedsynonyms = [paramname];\n for (const [key, value] of Object.entries(synonyms)) {\n if (key === paramname || value.includes(paramname)) {\n if (!value.includes(key)) {\n value.push(key.toLowerCase());\n }\n\n selectedsynonyms = value;\n break;\n }\n }\n\n var toreturn = \"\";\n\n for (const [key, value] of Object.entries(exampledata)) {\n // Check if loop or JSON\n\n if (typeof value === \"object\") {\n if (Array.isArray(value)) {\n var selectedkey = \"\";\n if (isNaN(key)) {\n selectedkey = `.${key}`;\n }\n\n for (let [subitem,subitemval] in Object.entries(value)) {\n toreturn = GetParamMatch(\n paramname,\n value[subitem],\n `${basekey}${selectedkey}.#`\n );\n if (toreturn.length > 0) {\n break;\n }\n }\n\n if (toreturn.length > 0) {\n break;\n }\n\n } else {\n var selectedkey = \"\";\n if (isNaN(key)) {\n selectedkey = `.${key}`;\n }\n\n toreturn = GetParamMatch(\n paramname,\n value,\n `${basekey}${selectedkey}`\n );\n if (toreturn.length > 0) {\n break;\n }\n }\n } else {\n if (selectedsynonyms.includes(key.toLowerCase())) {\n toreturn = `${basekey}.${key}`\n break\n }\n }\n }\n\n return toreturn;\n };\n\n // Takes an action as input, then runs through and updates the relevant fields\n // based on previous actions'\n // Uses lots of synonyms \n // autocomplete\n const RunAutocompleter = (dstdata) => {\n // **PS: The right action should already be set here**\n // 1. Check execution argument\n // 2. Check parents in order\n var exampledata = GetExampleResult({ id: \"exec\", name: \"exec\" });\n var parentlabel = \"exec\";\n for (var dstdataParamKey in dstdata.parameters) {\n const param = dstdata.parameters[dstdataParamKey];\n // Skip authentication params\n if (param.configuration) {\n continue\n }\n\n if (param.options !== undefined && param.options !== null && param.options.length > 0) {\n continue\n }\n\n const paramname = param.name.toLowerCase().trim().replaceAll(\"_\", \" \");\n\n const foundresult = GetParamMatch(paramname, exampledata, \"\");\n if (foundresult.length > 0) {\n\t\t\t\tconsole.log(\"FOUND ReS for field: \", dstdata.parameters[dstdataParamKey].name, foundresult)\n if (dstdata.parameters[dstdataParamKey].value.length === 0) {\n dstdata.parameters[dstdataParamKey].value = `$${parentlabel}${foundresult}`;\n dstdata.parameters[dstdataParamKey].autocompleted = true\n }\n }\n }\n\n var parents = getParents(dstdata);\n if (parents.length > 1) {\n for (let parentkey in parents) {\n const item = parents[parentkey];\n if (item.label === \"Execution Argument\") {\n continue;\n }\n\n parentlabel =\n item.label === undefined\n ? \"\"\n : item.label.toLowerCase().trim().replaceAll(\" \", \"_\");\n\n exampledata = GetExampleResult(item);\n\t\t\t\tif (dstdata.parameters !== undefined && dstdata.parameters !== null) {\n \tfor (let [paramkey,paramkeyval] in Object.entries(dstdata.parameters)) {\n \t const param = dstdata.parameters[paramkey];\n \t // Skip authentication params\n \t if (param.configuration) {\n \t continue\n \t }\n\n \t if (param.options !== undefined && param.options !== null && param.options.length > 0) {\n \t continue\n \t }\n\n \t const paramname = param.name\n \t .toLowerCase()\n \t .trim()\n \t .replaceAll(\"_\", \" \");\n\n \t const foundresult = GetParamMatch(paramname, exampledata, \"\");\n \t if (foundresult.length > 0) {\n \t if (dstdata.parameters[paramkey].value.length === 0) {\n \t dstdata.parameters[paramkey].value = `$${parentlabel}${foundresult}`;\n \t dstdata.parameters[paramkey].autocompleted = true\n \t } else {\n \t //dstdata.parameters[paramkey].value = `$${parentlabel}${foundresult}`;\n \t }\n \t }\n \t}\n\t\t\t\t}\n // Check agains every param\n }\n }\n\n return dstdata;\n };\n\n // Checks for errors in edges when they're added\n const onEdgeAdded = (event) => {\n setLastSaved(false);\n const edge = event.target.data();\n\n console.log(\"edge added: \", edge)\n if (edge.source === undefined && edge.target === undefined) {\n return\n }\n\n if (edge.readded === true) {\n console.log(\"Readded edge - stopping\")\n\n event.target.data(\"readded\", false)\n return\n }\n\n const sourcenode = cy.getElementById(edge.source)\n const destinationnode = cy.getElementById(edge.target)\n if (sourcenode === undefined || sourcenode === null || destinationnode === undefined || destinationnode === null) {\n } else {\n console.log(\"Edge added: Is it a trigger? If so, check if it already has a branch and remove it: \", sourcenode.data())\n if (sourcenode.data(\"type\") === \"TRIGGER\") {\n if (sourcenode.data(\"app_name\") !== \"Shuffle Workflow\" && sourcenode.data(\"app_name\") !== \"User Input\") {\n setTimeout(() => {\n const alledges = cy.edges().jsons()\n console.log(\"edges: \", alledges, edge)\n var targetedge = alledges.findIndex(\n (data) => data.data.source === edge.source && data.data.id !== edge.id\n )\n\n console.log(\"Node: \", targetedge)\n if (targetedge !== -1) {\n event.target.remove()\n\n //console.log(\"Found branch already!\")\n alert.info(\"Triggers can have exactly one target node\")\n return\n\n\n // name: \"Shuffle Workflow\",\n // name: \"User Input\",\n } else {\n console.log(\"Node doesn't already have one\")\n }\n }, 50)\n }\n }\n\n const edgeCurve = calculateEdgeCurve(sourcenode.position(), destinationnode.position())\n const currentedge = cy.getElementById(edge.id)\n if (currentedge !== undefined && currentedge !== null) {\n\t\t\t\tconsole.log(\"Setting edge curve: \", edgeCurve)\n\t\t\t\tcurrentedge.style('control-point-distance', edgeCurve.distance)\n\t\t\t\tcurrentedge.style('control-point-weight', edgeCurve.weight)\n }\n }\n\n\n var targetnode = workflow.triggers.findIndex(\n (data) => data.id === edge.target\n );\n if (targetnode !== -1) {\n console.log(\"TARGETNODE: \", targetnode);\n if (\n workflow.triggers[targetnode].app_name === \"User Input\" ||\n workflow.triggers[targetnode].app_name === \"Shuffle Workflow\"\n ) {\n } else {\n alert.error(\"Can't have triggers as target of branch\");\n event.target.remove();\n }\n }\n\n const eventTarget = event.target.target()\n //console.log(\"BUTTON ADDED! Find parent from: \", eventTarget)\n if (eventTarget.data(\"isButton\") === true) {\n const parentNode = cy.getElementById(eventTarget.data(\"attachedTo\"))\n event.target.remove()\n console.log(\"Setting it to parentnode: \", parentNode.data())\n if (parentNode !== undefined && parentNode !== null) {\n //event.target.data(\"target\", eventTarget.data(\"attachedTo\"))\n\n const newEdgeUuid = uuidv4()\n const newcybranch = {\n source: event.target.data(\"source\"),\n target: eventTarget.data(\"attachedTo\"),\n _id: newEdgeUuid,\n id: newEdgeUuid,\n hasErrors: event.target.data(\"hasErrors\"),\n };\n\n const edgeToBeAdded = {\n group: \"edges\",\n data: newcybranch,\n }\n\n cy.add(edgeToBeAdded);\n }\n }\n\n if (\n eventTarget.data(\"isDescriptor\") === true ||\n eventTarget.data(\"type\") === \"COMMENT\"\n ) {\n console.log(\"Removing because of descriptor or comment\")\n event.target.remove();\n return;\n }\n\n targetnode = -1;\n\n // Check if:\n // dest == source && source == dest\n // dest == dest && source == source\n // backend: check all children? to stop recursion\n var found = false;\n for (let branchkey in workflow.branches) {\n if (\n workflow.branches[branchkey].destination_id === edge.source &&\n workflow.branches[branchkey].source_id === edge.target\n ) {\n alert.error(\"A branch in the opposite direction already exists\");\n event.target.remove();\n found = true;\n break;\n } else if (\n workflow.branches[branchkey].destination_id === edge.target &&\n workflow.branches[branchkey].source_id === edge.source\n ) {\n console.log(edge.source);\n alert.error(\"That branch already exists\");\n event.target.remove();\n found = true;\n break;\n } else if (edge.target === workflow.start) {\n targetnode = workflow.triggers.findIndex(\n (data) => data.id === edge.source\n );\n if (targetnode === -1) {\n if (targetnode.type !== \"TRIGGER\") {\n alert.error(\"Can't make arrow to starting node\");\n event.target.remove();\n break;\n }\n\n found = true;\n }\n } else if (edge.source === workflow.branches[branchkey].source_id) {\n // FIXME: Verify multi-target for triggers\n // 1. Check if destination exists\n // 2. Check if source is a trigger\n // targetnode = workflow.triggers.findIndex(data => data.id === edge.source)\n // console.log(\"Destination: \", edge.target)\n // console.log(\"CHECK SOURCE IF ITS A TRIGGER: \", targetnode)\n // if (targetnode !== -1) {\n // \talert.error(\"Triggers can only target one target (startnode)\")\n // \tevent.target.remove()\n // \tfound = true\n // \tbreak\n // }\n } else {\n //console.log(\"INSIDE LAST CHECK: \", edge)\n // Find the targetnode and check if its a trigger\n // FIXME - do this for both actions and other types?\n /*\n targetnode = workflow.triggers.findIndex(data => data.id === edge.target)\n if (targetnode !== -1) {\n console.log(\"TARGETNODE: \", targetnode)\n if (workflow.triggers[targetnode].app_name === \"User Input\" || workflow.triggers[targetnode].app_name === \"Shuffle Workflow\") {\n } else {\n alert.error(\"Can't have triggers as target of branch\")\n event.target.remove()\n found = true\n break\n }\n } \n */\n }\n }\n\n // 1. Guess what the next node's action should be\n // 2. Get result from previous nodes (if any)\n // 3. TRY to automatically map them in based on synonyms\n const newsource = cy.getElementById(edge.source);\n const newdst = cy.getElementById(edge.target);\n if (\n newsource !== undefined &&\n newsource !== null &&\n newdst !== undefined &&\n newdst !== null\n ) {\n const dstdata = RunAutocompleter(newdst.data());\n console.log(\"AUTO DST: \", dstdata);\n }\n\n var newbranch = {\n source_id: edge.source,\n destination_id: edge.target,\n id_: edge.id,\n id: edge.id,\n hasErrors: false,\n decorator: false,\n };\n\n if (!found) {\n newbranch[\"hasErrors\"] = false;\n\n workflow.branches.push(newbranch);\n setWorkflow(workflow);\n }\n\n history.push({\n type: \"edge\",\n action: \"added\",\n data: edge,\n });\n setHistory(history);\n setHistoryIndex(history.length);\n };\n\n const onNodeAdded = (event) => {\n const node = event.target;\n const nodedata = event.target.data();\n\n //if (Object.keys(nodedata).length === 1) {\n // console.log(\"Check if another node actually exists before adding\")\n //}\n\n if (nodedata.finished === false || (nodedata.id !== undefined && nodedata.is_valid === undefined)\n ) {\n //if (nodedata.app_id === undefined) {\n //console.log(\"Returning because node is not valid: \", nodedata)\n return;\n }\n\n\n // DONT MOVE THIS LINE RIGHT HERE v\n setLastSaved(false)\n // Dont move the line above. May break stuff.\n\n\n if (node.isNode() && cy.nodes().size() === 1) {\n workflow.start = node.data(\"id\");\n nodedata.isStartNode = true;\n } else {\n if (workflow.actions === null) {\n console.log(\"Returning because node has no value\")\n return;\n }\n\n // Remove bad startnode\n for (let actionkey in workflow.actions) {\n const action = workflow.actions[actionkey];\n if (action.isStartNode && workflow.start !== action.id) {\n action.isStartNode = false;\n }\n }\n }\n\n if (nodedata.type === \"ACTION\") {\n /*\n var curaction = workflow.actions.find((a) => a.id === nodedata.id);\n if (curaction === null || curaction === undefined) {\n alert.error(\"Node not found. Please remake it.\")\n event.target.remove();\n }\n */\n if (\n workflow.actions.length === 1 &&\n workflow.actions[0].id === workflow.start\n ) {\n const newEdgeUuid = uuidv4();\n const newcybranch = {\n source: workflow.start,\n target: nodedata.id,\n _id: newEdgeUuid,\n id: newEdgeUuid,\n hasErrors: false,\n };\n\n const edgeToBeAdded = {\n group: \"edges\",\n data: newcybranch,\n };\n\n console.log(\"SHOULD STITCH WITH STARTNODE\");\n cy.add(edgeToBeAdded);\n }\n\n if (nodedata.app_name === \"Shuffle Tools\") {\n const iconInfo = GetIconInfo(nodedata);\n const svg_pin = ``;\n const svgpin_Url = encodeURI(\"data:image/svg+xml;utf-8,\" + svg_pin);\n nodedata.large_image = svgpin_Url;\n nodedata.fillGradient = iconInfo.fillGradient;\n nodedata.fillstyle = \"solid\";\n if (\n nodedata.fillGradient !== undefined &&\n nodedata.fillGradient !== null &&\n nodedata.fillGradient.length > 0\n ) {\n nodedata.fillstyle = \"linear-gradient\";\n } else {\n nodedata.iconBackground = iconInfo.iconBackgroundColor;\n }\n }\n\n\n if (\n nodedata.parameters !== undefined &&\n nodedata.parameters !== null &&\n !nodedata.label.endsWith(\"_copy\")\n ) {\n var newparameters = [];\n\n for (let [subkey,subkeyval] in Object.entries(nodedata.parameters)) {\n var newparam = JSON.parse(\n JSON.stringify(nodedata.parameters[subkey])\n );\n newparam.id = uuidv4();\n\n if (newparam.value === undefined || newparam.value === null) {\n newparam.value = \"\";\n } else {\n newparam.value = newparam.value;\n }\n\n newparameters.push(newparam);\n }\n\n nodedata.parameters = newparameters;\n }\n\n if (workflow.actions === undefined || workflow.actions === null) {\n workflow.actions = [nodedata];\n } else {\n workflow.actions.push(nodedata);\n }\n\n setWorkflow(workflow);\n } else if (nodedata.type === \"TRIGGER\") {\n if (nodedata.is_valid === false) {\n alert.info(\"This trigger is not available to you\");\n node.remove();\n return;\n }\n\n if (workflow.triggers === undefined) {\n workflow.triggers = [nodedata];\n } else {\n workflow.triggers.push(nodedata);\n }\n\n const newEdgeUuid = uuidv4();\n const newcybranch = {\n source: nodedata.id,\n target: workflow.start,\n source_id: nodedata.id,\n destination_id: workflow.start,\n _id: newEdgeUuid,\n id: newEdgeUuid,\n hasErrors: false,\n decorator: false,\n };\n\n const edgeToBeAdded = {\n group: \"edges\",\n data: newcybranch,\n };\n\n if (\n nodedata.name !== \"User Input\" &&\n nodedata.name !== \"Shuffle Workflow\"\n ) {\n if (\n workflow.actions !== undefined &&\n workflow.actions !== null &&\n workflow.actions.length > 0\n ) {\n cy.add(edgeToBeAdded);\n }\n }\n\n setWorkflow(workflow);\n }\n\n if (nodedata.app_name !== undefined) {\n history.push({\n type: \"node\",\n action: \"added\",\n data: nodedata,\n });\n setHistory(history);\n setHistoryIndex(history.length);\n }\n };\n\n const onEdgeRemoved = (event) => {\n setLastSaved(false);\n\n const edge = event.target;\n if (edge.data(\"decorator\") === true) {\n return;\n }\n\n // Check if the source is trigger and can start\n console.log(\"Removed: \", edge.data())\n const allNodes = cy.nodes().jsons()\n\t\tfor (let nodekey in allNodes) {\n\t\t\tconst curnode = allNodes[nodekey]\n\t\t\tif (curnode.data.type !== \"TRIGGER\") {\n\t\t\t\tcontinue\n\t\t\t}\n\n if (curnode.data.id === edge.data(\"source\")) {\n console.log(\"Found matching trigger source: \", curnode)\n if (curnode.data.app_name !== \"Shuffle Workflow\" && curnode.data.app_name !== \"User Input\") {\n // If it's started, READD the edge\n if (curnode.data.status === \"running\") {\n console.log(\"Edge is running - readd it: \", edge.data())\n\n // Just making sure it's not running infinitely\n var newdata = edge.data()\n newdata.readded = true\n\n try {\n cy.add({\n group: \"edges\",\n data: newdata,\n })\n\n alert.error(\"You must STOP the trigger before deleting its branches\")\n } catch (e) {\n console.log(\"Failed re-adding edge: \", e)\n }\n }\n\n //status: \"uninitialized\",\n }\n }\n }\n\n workflow.branches = workflow.branches.filter(\n (a) => a.id !== edge.data().id\n );\n\n setWorkflow(workflow);\n event.target.remove();\n\n // trigger as source check\n const indexcheck = workflow.triggers.findIndex(\n (data) => edge.data(\"source\") === data.id\n );\n if (indexcheck !== -1) {\n console.log(\"Shouldnt remove edge from trigger? \");\n }\n\n if (edge.data().source !== undefined) {\n history.push({\n type: \"edge\",\n action: \"removed\",\n data: edge.data(),\n });\n\n setHistory(history);\n setHistoryIndex(history.length);\n }\n };\n\n const onNodeRemoved = (event) => {\n const node = event.target;\n const data = node.data();\n\n if (data.finished === false) {\n return\n }\n\n workflow.actions = workflow.actions.filter((a) => a.id !== data.id);\n workflow.triggers = workflow.triggers.filter((a) => a.id !== data.id);\n if (workflow.start === data.id && workflow.actions.length > 0) {\n // FIXME - should check branches connected to startnode, as picking random\n // is just confusing\n if (workflow.actions[0].id !== data.id) {\n const ele = cy.getElementById(workflow.actions[0].id);\n if (ele !== undefined && ele !== null) {\n ele.data(\"isStartNode\", true);\n workflow.start = ele.id();\n }\n } else {\n if (workflow.actions.length > 1) {\n const ele = cy.getElementById(workflow.actions[1].id);\n if (ele !== undefined && ele !== null) {\n ele.data(\"isStartNode\", true);\n workflow.start = ele.id();\n }\n }\n }\n }\n\n if (data.app_name !== undefined) {\n const allNodes = cy.nodes().jsons();\n for (let allNodesKey in allNodes) {\n const currentNode = allNodes[allNodesKey];\n if (currentNode.data.attachedTo === data.id) {\n cy.getElementById(currentNode.data.id).remove();\n }\n }\n\n history.push({\n type: \"node\",\n action: \"removed\",\n data: data,\n })\n\n //console.log(\"REMOVED: \", data)\n setHistory(history);\n setHistoryIndex(history.length);\n }\n\n setWorkflow(workflow);\n if (data.type === \"TRIGGER\") {\n saveWorkflow(workflow);\n }\n };\n\n //var previouskey = 0\n const handleKeyDown = (event) => {\n switch (event.keyCode) {\n case 27:\n if (configureWorkflowModalOpen === true) {\n setConfigureWorkflowModalOpen(false);\n }\n break;\n case 46:\n console.log(\"DELETE\");\n break;\n case 38:\n //console.log(\"UP\");\n break;\n case 37:\n //console.log(\"LEFT\");\n break;\n case 40:\n //console.log(\"DOWN\");\n break;\n case 39:\n //console.log(\"RIGHT\");\n break;\n case 90:\n if (event.ctrlKey) {\n console.log(\"CTRL+Z\");\n }\n\n break;\n case 67:\n if (event.ctrlKey && !event.shiftKey) {\n if (\n event.path !== undefined &&\n event.path !== null &&\n event.path.length > 0\n ) {\n if (event.path[0].localName !== \"body\") {\n console.log(\"Skipping because body is not targeted\");\n return;\n }\n }\n\n if (\n event.target !== undefined &&\n event.target !== null\n ) {\n if (event.target.localName !== \"body\") {\n console.log(\"Skipping because body is not targeted\")\n return;\n }\n }\n\n console.log(\"CTRL+C\");\n if (cy !== undefined) {\n var cydata = cy.$(\":selected\").jsons();\n if (cydata !== undefined && cydata !== null && cydata.length > 0) {\n console.log(cydata);\n\n const elementName = \"copy_element_shuffle\";\n var copyText = document.getElementById(elementName);\n if (copyText !== null && copyText !== undefined) {\n const clipboard = navigator.clipboard;\n if (clipboard === undefined) {\n alert.error(\"Can only copy over HTTPS (port 3443)\");\n return;\n }\n\n navigator.clipboard.writeText(JSON.stringify(cydata));\n copyText.select();\n copyText.setSelectionRange(0, 99999); /* For mobile devices */\n document.execCommand(\"copy\");\n alert.success(`Copied ${cydata.length} element(s)`);\n }\n }\n }\n }\n break;\n case 86:\n if (event.ctrlKey) {\n //console.log(\"CTRL+V\")\n // The below parts are handled in the function handlePaste()\n /*\n const clipboard = navigator.clipboard\n if (clipboard === undefined || window === undefined || window === null) {\n alert.error(\"Can only use cliboard over HTTPS (port 3443)\")\n return\n } \n\n console.log(\"CLIPBOARD: \", window.clipboardData)\n const pastedData = window.clipboardData.getData('Text');\n console.log(\"PASTED: \", pastedData)\n\n \t\n //var tmpAuth = JSON.parse(JSON.stringify(appAuthentication))\n var jsonvalid = true\n var parsedjson = []\n */\n }\n break;\n case 88:\n if (event.ctrlKey) {\n console.log(\"CTRL+X\");\n }\n break;\n case 83:\n break;\n case 70:\n break;\n case 65:\n // As a poweruser myself, I found myself hitting this a few\n // too many times to just edit text. Need a better bind, which does NOT work while inside a field\n break;\n default:\n break;\n }\n\n //previouskey = event.keyCode\n };\n\n const handlePaste = (event) => {\n //console.log(\"EV: \", event)\n if (\n event.path !== undefined &&\n event.path !== null &&\n event.path.length > 0\n ) {\n //console.log(\"PATH: \", event.path[0])\n if (event.path[0].localName !== \"body\") {\n //console.log(\"Skipping because body is not targeted\")\n return;\n }\n }\n\n //console.log(\"PATH2: \", event.target)\n if (\n event.target !== undefined &&\n event.target !== null\n ) {\n if (event.target.localName !== \"body\") {\n //console.log(\"Skipping because body is not targeted\")\n return;\n }\n }\n\n\n event.preventDefault();\n const clipboard = (event.originalEvent || event).clipboardData.getData(\n \"text/plain\"\n );\n //console.log(\"Text: \", clipboard)\n //window.document.execCommand('insertText', false, text);\n //\n try {\n var parsedjson = JSON.parse(clipboard);\n\t\t\t// Check if array\n\t\t\tif (!Array.isArray(parsedjson)) {\n\t\t\t\tconsole.log(\"Not array! Adding to array.\")\n\t\t\t\tparsedjson = [parsedjson]\n\t\t\t}\n\n for (let jsonkey in parsedjson) {\n var item = parsedjson[jsonkey];\n console.log(\"Adding: \", item);\n\n\t\t\t\tif (item.data === undefined || item.data === null) {\n\t\t\t\t\tconsole.log(\"Appending from here\")\n\t\t\t\t\tconst newitem = {\n\t\t\t\t\t\t\"data\": item,\n\t\t\t\t\t\t\"position\": {\n\t\t\t\t\t\t\t\"x\": 0,\n\t\t\t\t\t\t\t\"y\": 0\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"group\": \"nodes\",\n\t\t\t\t\t}\n\n\t\t\t\t\titem = newitem\n\t\t\t\t\titem.type = \"ACTION\"\n\t\t\t\t\titem.isStartNode = false\n\t\t\t\t\titem.data.type = \"ACTION\"\n\t\t\t\t\titem.data.isStartNode = false\n\t\t\t\t}\n\n\t\t\t\titem.data.id = uuidv4()\n\n cy.add({\n group: item.group,\n data: item.data,\n position: item.position,\n });\n }\n } catch (e) {\n console.log(\"Error pasting: \", e);\n //alert.info(\"Failed parsing clipboard: \", e)\n }\n };\n\n const registerKeys = () => {\n document.addEventListener(\"keydown\", handleKeyDown);\n document.addEventListener(\"paste\", handlePaste);\n };\n\n const getEnvironments = () => {\n fetch(globalUrl + \"/api/v1/getenvironments\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for envs :O!\");\n if (isCloud) {\n setEnvironments([{ Name: \"Cloud\", Type: \"cloud\" }]);\n } else {\n setEnvironments([{ Name: \"Onprem\", Type: \"onprem\" }]);\n }\n\n return;\n }\n\n return response.json();\n })\n .then((responseJson) => {\n var found = false;\n var showEnvCnt = 0;\n for (let jsonkey in responseJson) {\n if (responseJson[jsonkey].default && !found) {\n setDefaultEnvironmentIndex(jsonkey);\n found = true;\n }\n\n if (responseJson[jsonkey].archived === false) {\n showEnvCnt += 1;\n }\n }\n\n if (showEnvCnt > 1) {\n setShowEnvironment(true);\n }\n\n if (!found) {\n for (let jsonkey in responseJson) {\n if (!responseJson[jsonkey].archived) {\n setDefaultEnvironmentIndex(jsonkey);\n break;\n }\n }\n }\n\n // FIXME: Don't allow multiple in cloud yet. Cloud -> Onprem isn't stable.\n if (isCloud) {\n if (responseJson !== undefined && responseJson !== null && responseJson.length > 0) {\n setEnvironments(responseJson);\n } else {\n setEnvironments([{ Name: \"Cloud\", Type: \"cloud\" }]);\n }\n } else {\n setEnvironments(responseJson);\n }\n })\n .catch((error) => {\n //alert.error(error.toString());\n console.log(\"Get environments error: \", error.toString());\n });\n };\n\n if (\n !firstrequest &&\n graphSetup &&\n established &&\n props.match.params.key !== workflow.id &&\n workflow.id !== undefined &&\n workflow.id !== null &&\n workflow.id.length > 0\n ) {\n window.location.pathname = \"/workflows/\" + props.match.params.key;\n }\n\n const animationDuration = 150;\n const onNodeHoverOut = (event) => {\n // console.log(\"Hover out: \", event.target.data());\n\n const nodedata = event.target.data();\n // console.log(\"nodedata\", nodedata);\n // console.log(\"nodedata.app_name: \", nodedata.app_name);\n if (nodedata.app_name !== undefined) {\n \n const allNodes = cy.nodes().jsons();\n // console.log(\"allNodes: \", allNodes)\n for (var nodekey in allNodes) {\n const currentNode = allNodes[nodekey];\n // console.log(\"Current node: \", currentNode);\n if (\n currentNode.data.isButton &&\n currentNode.data.attachedTo !== nodedata.id\n ) {\n cy.getElementById(currentNode.data.id).remove();\n }\n\n }\n }\n\n const cytoscapeElement = document.getElementById(\"cytoscape_view\")\n if (cytoscapeElement !== undefined && cytoscapeElement !== null) {\n cytoscapeElement.style.cursor = \"default\"\n }\n\n // Skipping node editing if it's the selected one\n if (cy !== undefined) {\n const typeIds = cy.elements('node:selected').jsons();\n for (var idkey in typeIds) {\n const item = typeIds[idkey]\n if (item.data.id === nodedata.id) {\n return\n }\n }\n }\n //if (nodedata.id === selectedAction.id || nodedata.id === selectedTrigger.id) {\n //\treturn\n //}\n\n var parsedStyle = {\n \"border-width\": \"1px\",\n \"font-size\": \"18px\",\n //\"cursor\": \"default\",\n }\n\n if ((nodedata.app_name === \"Testing\" || nodedata.app_name === \"Shuffle Tools\") && !nodedata.isStartNode) {\n parsedStyle = {\n \"border-width\": \"1px\",\n \"font-size\": \"0px\",\n };\n }\n\n event.target.animate(\n {\n style: parsedStyle,\n },\n {\n duration: animationDuration,\n }\n );\n\n const outgoingEdges = event.target.outgoers(\"edge\");\n const incomingEdges = event.target.incomers(\"edge\");\n if (outgoingEdges.length > 0) {\n outgoingEdges.removeClass(\"hover-highlight\");\n }\n\n if (incomingEdges.length > 0) {\n outgoingEdges.removeClass(\"hover-highlight\");\n }\n };\n\n const buttonColor = \"rgba(255,255,255,0.9)\";\n const buttonBackgroundColor = \"#1f2023\";\n const addStartnodeButton = (event) => {\n var parentNode = cy.$(\"#\" + event.target.data(\"id\"));\n if (parentNode.data(\"isButton\") || parentNode.data(\"buttonId\")) return;\n\n if (parentNode.data(\"isStartNode\")) {\n return;\n }\n\n const px = parentNode.position(\"x\") - 65;\n const py = parentNode.position(\"y\") - 45;\n const circleId = (newNodeId = uuidv4());\n\n parentNode.data(\"circleId\", circleId);\n\n const iconInfo = {\n icon: \"M9.4 2H15V12H8L7.6 10H2V17H0V0H9L9.4 2ZM9 10H11V8H13V6H11V4H9V6L8 4V2H6V4H4V2H2V4H4V6H2V8H4V6H6V8H8V6L9 8V10ZM6 6V4H8V6H6ZM9 6H11V8H9V6Z\",\n iconColor: buttonColor,\n iconBackgroundColor: buttonBackgroundColor,\n };\n\n const svg_pin = ``;\n const svgpin_Url = encodeURI(\"data:image/svg+xml;utf-8,\" + svg_pin);\n\n cy.add({\n group: \"nodes\",\n data: {\n weight: 30,\n id: circleId,\n name: \"TEEEXT\",\n isButton: true,\n buttonType: \"set_startnode\",\n attachedTo: event.target.data(\"id\"),\n icon: svgpin_Url,\n iconBackground: iconInfo.iconBackgroundColor,\n is_valid: true,\n },\n position: { x: px, y: py },\n locked: true,\n });\n };\n\n const addRunCountButton = (event) => {\n\t\t// Count executions?\n\t\t// Maybe it shouldn't be onclick?\n\t}\n\n const addCopyButton = (event) => {\n var parentNode = cy.$(\"#\" + event.target.data(\"id\"));\n if (parentNode.data(\"isButton\") || parentNode.data(\"buttonId\")) return;\n\n const px = parentNode.position(\"x\") - 65;\n const py = parentNode.position(\"y\") - 5;\n const circleId = (newNodeId = uuidv4());\n\n parentNode.data(\"circleId\", circleId);\n\n const iconInfo = {\n icon: \"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm-1 4l6 6v10c0 1.1-.9 2-2 2H7.99C6.89 23 6 22.1 6 21l.01-14c0-1.1.89-2 1.99-2h7zm-1 7h5.5L14 6.5V12z\",\n iconColor: buttonColor,\n iconBackgroundColor: buttonBackgroundColor,\n };\n\n const svg_pin = ``;\n const svgpin_Url = encodeURI(\"data:image/svg+xml;utf-8,\" + svg_pin);\n\n cy.add({\n group: \"nodes\",\n data: {\n weight: 30,\n id: circleId,\n name: \"TEEEXT\",\n isButton: true,\n buttonType: \"copy\",\n attachedTo: event.target.data(\"id\"),\n icon: svgpin_Url,\n iconBackground: iconInfo.iconBackgroundColor,\n is_valid: true,\n },\n position: { x: px, y: py },\n locked: true,\n });\n };\n\n const addSuggestionButtons = (nodedata, event) => {\n\t\t//console.log(\"In suggestion buttons: \", nodedata, \". This is not enabled yet. Backend needs further work.\")\n\t\t// Skipping add for now. Should Re-enable\n\n\t\t// Add a button for autocompletion based on input\n\t\tconsole.log(\"Type: \", nodedata.type)\n\t\tif (nodedata.type === \"ACTION\") {\n\t\t\tconst color = \"#34a853\" \n\n\t\t\t// Fix icon\n \tconst iconInfo = {\n \t icon: \"M7.5 5.6 10 7 8.6 4.5 10 2 7.5 3.4 5 2l1.4 2.5L5 7zm12 9.8L17 14l1.4 2.5L17 19l2.5-1.4L22 19l-1.4-2.5L22 14zM22 2l-2.5 1.4L17 2l1.4 2.5L17 7l2.5-1.4L22 7l-1.4-2.5zm-7.63 5.29a.9959.9959 0 0 0-1.41 0L1.29 18.96c-.39.39-.39 1.02 0 1.41l2.34 2.34c.39.39 1.02.39 1.41 0L16.7 11.05c.39-.39.39-1.02 0-1.41l-2.33-2.35zm-1.03 5.49-2.12-2.12 2.44-2.44 2.12 2.12-2.44 2.44z\",\n \t iconColor: buttonColor,\n \t iconBackgroundColor: buttonBackgroundColor,\n \t};\n\n \tconst svg_pin = ``;\n \tconst svgpin_Url = encodeURI(\"data:image/svg+xml;utf-8,\" + svg_pin);\n\n\t\t\tconst decoratorNode = {\n\t\t\t\tposition: {\n\t\t\t\t\tx: event.target.position().x + 0,\n\t\t\t\t\ty: event.target.position().y + 65,\n\t\t\t\t},\n\t\t\t\tlocked: true,\n\t\t\t\tdata: {\n\t\t\t\t\tisButton: true,\n\t\t\t\t\tisValid: true,\n\t\t\t\t\tis_valid: true,\n\t\t\t\t\t//label: \"+\",\n\t\t\t\t\tattachedTo: nodedata.id,\n\t\t\t\t\timageColor: color,\n \tbuttonType: \"suggestion\", \n\t\t\t\t\ticon: svgpin_Url,\n\t\t\t\t\ticonBackground: iconInfo.iconBackgroundColor,\n\t\t\t\t},\n\t\t\t};\n\n\t\t\tcy.add(decoratorNode);\n\t\t}\n\n\t\treturn\n\t\n\t\t//setWorkflowRecommendations(responseJson.actions)\n\t\tif (workflowRecommendations.length === 0) {\n\t\t\treturn\n\t\t}\n\n var parentNode = cy.$(\"#\" + event.target.data(\"id\"));\n if (parentNode.data(\"isButton\") || parentNode.data(\"buttonId\")) return;\n\n const px = parentNode.position(\"x\") + 300;\n const py = parentNode.position(\"y\") + -100;\n const circleId = (newNodeId = uuidv4());\n\n parentNode.data(\"circleId\", circleId);\n\n\t\tvar startHeight = 0\n\t\tfor (let recKey in workflowRecommendations) {\n\t\t\tconst rec = workflowRecommendations[recKey]\n\t\t\tif (rec.action_id !== nodedata.id) {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif (rec.recommendations === undefined || rec.recommendations.length === 0) {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tfor (let recIndex in rec.recommendations) {\n\t\t\t\tconst parsedRec = rec.recommendations[recIndex]\n\t\t\t\tstartHeight += 100\n\n\t\t\t\tconst foundVersion = parsedRec.app_version !== undefined && parsedRec.app_version !== null && parsedRec.app_version !== \"\" ? parsedRec.app_version : \"1.1.0\"\n\t\t\t\tconst largeImage = parsedRec.large_image !== undefined && parsedRec.large_image !== null && parsedRec.large_image !== \"\" ? parsedRec.large_image : theme.palette.defaultImage\n\t\t\t\t\n\n\t\t\t\tvar newapp = {\n \t\t app_name: parsedRec.app_name,\n \t\t app_version: foundVersion,\n \t\t app_id: parsedRec.app_id,\n \t\t sharing: false,\n \t\t private_id: false,\n \t\t isStartNode: false,\n \t\t label: \"Suggestion \"+recIndex,\n \t\t large_image: largeImage,\n \t\t finished: false,\n \t\t is_valid: true,\n \t\t isSuggestion: true,\n \t\t attachedTo: event.target.data(\"id\"),\n \t\t}\n\n \t\tcy.add({\n \t\t group: \"nodes\",\n \t\t data: newapp,\n \t\t position: { \n\t\t\t\t\t\tx: px, \n\t\t\t\t\t\ty: py+startHeight, \n\t\t\t\t\t},\n \t\t locked: true,\n \t\t});\n\t\t\t}\n\t\t\tconsole.log(\"Got Rec: \", rec)\n\t\t}\n }\n\n const addDeleteButton2 = (event) => {\n var parentNode = cy.$(\"#\" + event.target.data(\"id\"));\n if (parentNode.data(\"isButton\") || parentNode.data(\"buttonId\")) return;\n\n const px = parentNode.position(\"x\") + 100;\n const py = parentNode.position(\"y\") + 35;\n const circleId = (newNodeId = uuidv4());\n\n parentNode.data(\"circleId\", circleId);\n\n const iconInfo = {\n icon: \"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z\",\n iconColor: buttonColor,\n iconBackgroundColor: buttonBackgroundColor,\n };\n const svg_pin = ``;\n const svgpin_Url = encodeURI(\"data:image/svg+xml;utf-8,\" + svg_pin);\n\n cy.add({\n group: \"nodes\",\n data: {\n weight: 30,\n id: circleId,\n name: \"This is autocomplete\",\n buttonType: \"delete\",\n attachedTo: event.target.data(\"id\"),\n icon: svgpin_Url,\n iconBackground: iconInfo.iconBackgroundColor,\n is_valid: true,\n },\n position: { x: px, y: py },\n locked: true,\n });\n };\n\n const addDeleteButton = (event) => {\n var parentNode = cy.$(\"#\" + event.target.data(\"id\"));\n if (parentNode.data(\"isButton\") || parentNode.data(\"buttonId\")) return;\n\n const px = parentNode.position(\"x\") - 65;\n const py = parentNode.position(\"y\") + 35;\n const circleId = (newNodeId = uuidv4());\n\n parentNode.data(\"circleId\", circleId);\n\n const iconInfo = {\n icon: \"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z\",\n iconColor: buttonColor,\n iconBackgroundColor: buttonBackgroundColor,\n };\n const svg_pin = ``;\n const svgpin_Url = encodeURI(\"data:image/svg+xml;utf-8,\" + svg_pin);\n\n cy.add({\n group: \"nodes\",\n data: {\n weight: 30,\n id: circleId,\n name: \"TEEEXT\",\n isButton: true,\n buttonType: \"delete\",\n attachedTo: event.target.data(\"id\"),\n icon: svgpin_Url,\n iconBackground: iconInfo.iconBackgroundColor,\n is_valid: true,\n },\n position: { x: px, y: py },\n locked: true,\n });\n };\n\n const onNodeHover = (event) => {\n const nodedata = event.target.data();\n\n if (nodedata.finished === false) {\n console.log(\"NODE: \", nodedata)\n return;\n }\n\n const cytoscapeElement = document.getElementById(\"cytoscape_view\")\n if (cytoscapeElement !== undefined && cytoscapeElement !== null) {\n cytoscapeElement.style.cursor = \"pointer\"\n }\n\n //var parentNode = cy.$(\"#\" + event.target.data(\"id\"));\n //if (parentNode.data(\"isButton\") || parentNode.data(\"buttonId\")) return;\n\n if (nodedata.app_name !== undefined && !workflow.public === true) {\n\t\t\tconst allNodes = cy.nodes().jsons();\n\n\t\t\tif (nodedata.app_name === \"Webhook\" || nodedata.app_name === \"Schedule\" || nodedata.app_name === \"Gmail\" || nodedata.app_name === \"Office365\") {\n\t\t\t\tconsole.log(\"In this :)\")\n\n\t\t\t\tvar found = false;\n\t\t\t\tfor (let nodekey in allNodes) {\n\t\t\t\t\tconst currentNode = allNodes[nodekey];\n\t\t\t\t\tif (\n\t\t\t\t\t\tcurrentNode.data.attachedTo === nodedata.id &&\n\t\t\t\t\t\tcurrentNode.data.isDescriptor\n\t\t\t\t\t) {\n\t\t\t\t\t\tfound = true;\n\t\t\t\t\t\tconsole.log(\"FOUND THE NODE!\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!found) {\n\t\t\t\t\tconsole.log(\"Find amount of executions for the specific nodetype: \", nodedata.app_name, \"Executions: \", workflowExecutions)\n\t\t\t\t\t// Find how many executions it has \n\t\t\t\t\tvar executions = 0\n\t\t\t\t\tconst matchingExecutions = workflowExecutions.filter((execution => execution.execution_source === nodedata.app_name.toLowerCase()))\n\t\t\t\t\tconsole.log(\"Matches: \", matchingExecutions.length)\n\t\t\t\t\tconst color = matchingExecutions.length > 0 ? \"#34a853\" : \"#ea4436\"\n\t\t\t\t\tconst decoratorNode = {\n\t\t\t\t\t\tposition: {\n\t\t\t\t\t\t\tx: event.target.position().x + 44,\n\t\t\t\t\t\t\ty: event.target.position().y + 44,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tlocked: true,\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tisDescriptor: true,\n\t\t\t\t\t\t\tisValid: true,\n\t\t\t\t\t\t\tis_valid: true,\n\t\t\t\t\t\t\tisTrigger: true,\n\t\t\t\t\t\t\tlabel: `${matchingExecutions.length}`,\n\t\t\t\t\t\t\tattachedTo: nodedata.id,\n\t\t\t\t\t\t\timageColor: color,\n\t\t\t\t\t\t\thasExecutions: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\n\t\t\t\t\tcy.add(decoratorNode)\n\t\t\t\t}\n\t\t\t}\n\n var found = false;\n for (var _key in allNodes) {\n const currentNode = allNodes[_key];\n // console.log(\"CURRENT NODE: \", currentNode)\n if (\n (currentNode.data.isButton || currentNode.data.isSuggestion) &&\n currentNode.data.attachedTo !== nodedata.id\n ) {\n cy.getElementById(currentNode.data.id).remove();\n }\n\n /*if (\n currentNode.data.isSuggestion &&\n currentNode.data.attachedTo !== nodedata.id\n ) {\n cy.getElementById(currentNode.data.id).remove();\n }*/\n\n if (\n currentNode.data.isButton &&\n currentNode.data.attachedTo === nodedata.id\n ) {\n found = true;\n }\n }\n\n if (!found) {\n addDeleteButton(event);\n\n if (nodedata.type === \"TRIGGER\") {\n if (nodedata.trigger_type === \"SUBFLOW\" || nodedata.trigger_type === \"USERINPUT\") {\n addCopyButton(event);\n } else {\n\t\t\t\t\t\t// Check how many executions from the source\n\t\t\t\t\t\taddRunCountButton(event);\n\t\t\t\t\t}\n } else {\n addCopyButton(event);\n addStartnodeButton(event);\n }\n\n // autocomplete\n // right click\n // suggestions\n addSuggestionButtons(nodedata, event);\n }\n }\n\n var parsedStyle = {\n \"border-width\": \"7px\",\n \"border-opacity\": \".7\",\n \"font-size\": \"25px\",\n //\"cursor\": \"pointer\",\n }\n\n const typeIds = cy.elements('node:selected').jsons();\n for (var idkey in typeIds) {\n const item = typeIds[idkey]\n if (item.data.id === nodedata.id) {\n //console.log(\"items: \", item.data.id, nodedata.id)\n parsedStyle[\"border-width\"] = \"12px\"\n break\n }\n }\n\n if (nodedata.type !== \"COMMENT\") {\n parsedStyle.color = \"white\";\n\n //if (!event.target.data(\"isButton\") && !event.target.data(\"buttonId\")) {\n //\tconst px = event.target.position(\"x\") - 0;\n //\tconst py = event.target.position(\"y\") - 50;\n //\tconst circleId = (newNodeId = uuidv4());\n\n //\tconsole.log(\"Got px, py: \", px, py)\n //\t\n //\tcy.add({\n //\t\tgroup: \"nodes\",\n //\t\tdata: {\n //\t\t\tweight: 30,\n //\t\t\tid: circleId,\n //\t\t\tisButton: true,\n //\t\t\tattachedTo: event.target.data(\"id\"),\n //\t\t\tbuttonType: \"edgehandler\",\n //\t\t\tis_valid: true,\n //\t\t},\n //\t\tposition: { x: px, y: py },\n //\t\tlocked: true,\n //\t})\n //}\n } \n\n if (event.target !== undefined && event.target !== null) {\n event.target.animate(\n {\n style: parsedStyle,\n },\n {\n duration: animationDuration,\n }\n );\n }\n\n const outgoingEdges = event.target.outgoers(\"edge\");\n const incomingEdges = event.target.incomers(\"edge\");\n if (outgoingEdges.length > 0) {\n outgoingEdges.addClass(\"hover-highlight\");\n }\n\n if (incomingEdges.length > 0) {\n outgoingEdges.addClass(\"hover-highlight\");\n }\n };\n\n const onEdgeHoverOut = (event) => {\n if (event === null || event === undefined) {\n event.target.removeStyle();\n return;\n }\n\n const edgeData = event.target.data();\n if (edgeData.decorator === true) {\n return;\n }\n\n const cytoscapeElement = document.getElementById(\"cytoscape_view\")\n if (cytoscapeElement !== undefined && cytoscapeElement !== null) {\n cytoscapeElement.style.cursor = \"default\"\n }\n\n //event.target.removeStyle();\n };\n\n // This is here to have a proper transition for lines\n const onEdgeHover = (event) => {\n if (event === null || event === undefined) {\n return;\n }\n\n const edgeData = event.target.data();\n if (edgeData.decorator === true) {\n return;\n }\n\n const cytoscapeElement = document.getElementById(\"cytoscape_view\")\n if (cytoscapeElement !== undefined && cytoscapeElement !== null) {\n cytoscapeElement.style.cursor = \"pointer\"\n }\n\n //const sourcecolor = cy\n // .getElementById(event.target.data(\"source\"))\n // .style(\"border-color\");\n //const targetcolor = cy\n // .getElementById(event.target.data(\"target\"))\n // .style(\"border-color\");\n\n ////console.log(sourcecolor, targetcolor)\n //if (\n // sourcecolor !== null &&\n // sourcecolor !== undefined &&\n // targetcolor !== null &&\n // targetcolor !== undefined && \n //\t!sourcecolor.includes(\"rgb\") &&\n //\t!targetcolor.includes(\"rgb\") \n //) {\n //\tconsole.log(sourcecolor)\n //\tconsole.log(targetcolor)\n\n //\tif (event.target !== null && event.target.value !== null) {\n //\t\tevent.target.animate({\n //\t\t\tstyle: {\n //\t\t\t\t\"target-arrow-color\": targetcolor,\n //\t\t\t\t\"line-fill\": \"linear-gradient\",\n //\t\t\t\t\"line-gradient-stop-colors\": [sourcecolor, targetcolor],\n //\t\t\t\t\"line-gradient-stop-positions\": [0, 1],\n //\t\t\t},\n //\t\t\tduration: animationDuration,\n //\t\t})\n //\t} else {\n //\t\tevent.target.animate({\n //\t\t\tstyle: {\n //\t\t\t\t\"target-arrow-color\": targetcolor,\n //\t\t\t\t\"line-fill\": \"linear-gradient\",\n // \t\t\t\"line-gradient-stop-colors\": [\"#41dcab\", \"#41dcab\"],\n //\t\t\t\t\"line-gradient-stop-positions\": [0, 1],\n //\t\t\t},\n //\t\t\tduration: animationDuration,\n //\t\t})\n\n //\t}\n //}\n\n if (event.target !== undefined && event.target !== null) {\n //const targetcolor = \"#66a8b1\"\n //const parsedStyle = {\n //\t\"width\": \"10px\",\n //\t\"font-size\": \"18px\",\n //\t\"target-arrow-color\": \"#66a8b1\",\n //\t\"color\": \"#66a8b1\",\n //}\n\n //event.target.addClass(\"shuffle-hover-highlight\");\n\n //console.log(\"Style1: \", event.target)\n //console.log(\"Style: \", event.target.style())\n\n //event.target.animate(\n //\t{\n //\t\tstyle: parsedStyle,\n //\t},\n //\t{\n //\t\tduration: animationDuration,\n //\t}\n //)\n }\n }\n\n // Thanks to:\n // Calculates how a branch should curve (it's still weird~)\n // https://codepen.io/guillaumethomas/pen/xxbbBKO\n const calculateEdgeCurve = (sourcenodePosition, destinationnodePosition) => {\n const xParsed = destinationnodePosition.x - sourcenodePosition.x\n const yParsed = destinationnodePosition.y - sourcenodePosition.y\n\n const z = Math.sqrt(xParsed * xParsed + yParsed * yParsed);\n const costheta = xParsed / z;\n const alpha = 0.25;\n var controlPointDistance = [-alpha * yParsed * costheta, alpha * yParsed * costheta];\n var controlPointWeight = [alpha, 1 - alpha]\n\n //'control-point-weight': ['0.33', '0.66'],\n //var controlPointWeight = [\"0.33\", \"0.66\"]\n //var controlPointDistance = [\"33%\", \"-66%\"]\n //var controlPointWeight = [\"0.00\", \"1.00\"]\n /*\n if (yParsed !== 0) {\n //const degreeFound = Math.atan2(xParsed / yParsed)\n const degreeFound = Math.atan2(xParsed, yParsed) * 180 / Math.PI\n\n if (degreeFound > 90 && degreeFound < 180) {\n console.log(\"TOPRIGHT\")\n } else if (degreeFound < 90 && degreeFound > 0) {\n console.log(\"BOTTOMRIGHT\")\n } else if (degreeFound < 0 && degreeFound > -90) {\n console.log(\"BOTTOMLEFT\")\n //controlPointWeight = [\"0.20\", \"0.80\"]\n //controlPointWeight = \"0.7\"\n //controlPointDistance = \"50%\" \n\n } else if (degreeFound < -90 && degreeFound > -180) {\n console.log(\"TOPLEFT\")\n } else {\n console.log(\"STRAIGHT!\")\n }\n }\n */\n\t\tif (isNaN(controlPointDistance[0])) {\n\t\t\tcontrolPointDistance[0] = 0\n\t\t} \n\t\tif (isNaN(controlPointDistance[1])) {\n\t\t\tcontrolPointDistance[1] = 0\n\t\t}\n\n\t\tif (isNaN(controlPointWeight[0])) {\n\t\t\tcontrolPointWeight[0] = 0\n\t\t}\n\t\tif (isNaN(controlPointWeight[1])) {\n\t\t\tcontrolPointWeight[1] = 0\n\t\t}\n\n return {\n \"distance\": controlPointDistance,\n \"weight\": controlPointWeight,\n }\n }\n\n const setupGraph = () => {\n const actions = workflow.actions.map((action) => {\n const node = {};\n\n if (!action.isStartNode && action.app_name === \"Shuffle Tools\") {\n const iconInfo = GetIconInfo(action);\n const svg_pin = ``;\n const svgpin_Url = encodeURI(\"data:image/svg+xml;utf-8,\" + svg_pin);\n action.large_image = svgpin_Url;\n action.fillGradient = iconInfo.fillGradient;\n action.fillstyle = \"solid\";\n if (\n action.fillGradient !== undefined &&\n action.fillGradient !== null &&\n action.fillGradient.length > 0\n ) {\n action.fillstyle = \"linear-gradient\";\n } else {\n action.iconBackground = iconInfo.iconBackgroundColor;\n }\n }\n\n node.position = action.position;\n node.data = action;\n\n node.data.id = action[\"id\"];\n node.data._id = action[\"id\"];\n node.data.type = \"ACTION\";\n node.isStartNode = action[\"id\"] === workflow.start;\n\n if (workflow.public === true) {\n node.data.is_valid = true\n node.is_valid = true\n }\n\n var example = \"\";\n if (\n action.example !== undefined &&\n action.example !== null &&\n action.example.length > 0\n ) {\n example = action.example;\n }\n\n node.data.example = example;\n\n return node;\n });\n\n const decoratorNodes = workflow.actions.map((action) => {\n if (!action.isStartNode) {\n if (action.app_name === \"Testing\") {\n return null;\n } else if (action.app_name === \"Shuffle Tools\") {\n return null;\n }\n }\n\n const iconInfo = GetIconInfo(action);\n const svg_pin = ``;\n const svgpin_Url = encodeURI(\"data:image/svg+xml;utf-8,\" + svg_pin);\n\n const offset = action.isStartNode ? 36 : 44;\n const decoratorNode = {\n position: {\n x: action.position.x + offset,\n y: action.position.y + offset,\n },\n locked: true,\n data: {\n isDescriptor: true,\n isValid: true,\n is_valid: true,\n label: \"\",\n image: svgpin_Url,\n imageColor: iconInfo.iconBackgroundColor,\n attachedTo: action.id,\n },\n };\n return decoratorNode;\n });\n\n\n const foundtriggers = workflow.triggers.map((trigger) => {\n const node = {};\n node.position = trigger.position;\n node.data = trigger;\n\n node.data._id = trigger[\"id\"];\n node.data.id = trigger[\"id\"];\n node.data.type = \"TRIGGER\";\n\n return node;\n });\n\n var comments = [];\n if (\n workflow.comments !== undefined &&\n workflow.comments !== null &&\n workflow.comments.length > 0\n ) {\n comments = workflow.comments.map((comment) => {\n const node = {};\n node.position = comment.position;\n node.data = comment;\n\n node.data._id = comment[\"id\"];\n node.data.type = \"COMMENT\";\n\n return node;\n });\n }\n\n // FIXME - tmp branch update\n var insertedNodes = [].concat(actions, foundtriggers, decoratorNodes, comments);\n insertedNodes = insertedNodes.filter((node) => node !== null);\n\n var edges = workflow.branches.map((branch, index) => {\n const edge = {};\n var conditions = workflow.branches[index].conditions;\n if (conditions === undefined || conditions === null) {\n conditions = [];\n }\n\n var label = \"\";\n if (conditions.length === 1) {\n label = conditions.length + \" condition\";\n } else if (conditions.length > 1) {\n label = conditions.length + \" conditions\";\n }\n\n edge.data = {\n id: branch.id,\n _id: branch.id,\n source: branch.source_id,\n target: branch.destination_id,\n label: label,\n conditions: conditions,\n hasErrors: branch.has_errors,\n decorator: false,\n };\n\n // This is an attempt at prettier edges. The numbers are weird to work with.\n // Bezier curves\n //http://manual.graphspace.org/projects/graphspace-python/en/latest/demos/edge-types.html\n var sourcenode = actions.find(node => node.data._id === branch.source_id || node.data.id === branch.source_id)\n var destinationnode = actions.find(node => node.data._id === branch.destination_id || node.data.id === branch.destination_id)\n\n if (sourcenode === undefined) {\n sourcenode = foundtriggers.find(node => node.data._id === branch.source_id || node.data.id === branch.source_id)\n }\n\n if (destinationnode === undefined) {\n destinationnode = foundtriggers.find(node => node.data._id === branch.destination_id || node.data.id === branch.destination_id)\n }\n\n if (sourcenode !== undefined && destinationnode !== undefined && branch.source_id !== branch.destination_id) {\n const edgeCurve = calculateEdgeCurve(sourcenode.position, destinationnode.position)\n edge.style = {\n 'control-point-distance': edgeCurve.distance,\n 'control-point-weight': edgeCurve.weight,\n }\n } else {\n console.log(\"FAILED node curve handling\")\n }\n\n return edge;\n });\n\n if (\n workflow.visual_branches !== undefined &&\n workflow.visual_branches !== null &&\n workflow.visual_branches.length > 0\n ) {\n const visualedges = workflow.visual_branches.map((branch, index) => {\n const edge = {};\n\n if (workflow.branches[index] === undefined) {\n return {};\n }\n\n var conditions = workflow.branches[index].conditions;\n if (conditions === undefined || conditions === null) {\n conditions = [];\n }\n\n const label = \"Subflow\";\n edge.data = {\n id: branch.id,\n _id: branch.id,\n source: branch.source_id,\n target: branch.destination_id,\n label: label,\n decorator: true,\n };\n\n return edge;\n });\n\n edges = edges.concat(visualedges);\n }\n\n setWorkflow(workflow);\n\n // Verifies if a branch is valid and skips others\n var newedges = [];\n for (var edgeKey in edges) {\n var item = edges[edgeKey];\n if (item.data === undefined) {\n continue;\n }\n\n const sourcecheck = insertedNodes.find(\n (data) => data.data.id === item.data.source\n );\n const destcheck = insertedNodes.find(\n (data) => data.data.id === item.data.target\n );\n if (sourcecheck === undefined || destcheck === undefined) {\n continue;\n }\n\n newedges.push(item);\n }\n\n insertedNodes = insertedNodes.concat(newedges);\n setElements(insertedNodes);\n };\n\n const removeNode = (nodeId) => {\n const selectedNode = cy.getElementById(nodeId);\n // console.log(\"selected node in removenode\", selectedNode);\n if (selectedNode.data() === undefined) {\n console.log(\"No node to remove\")\n return;\n }\n\n //console.log(\"Removing node: \", selectedNode.data(\"id\"), \"Action: \", selectedAction.id)\n\n // Get selected node\n\n if (selectedNode.data().type === \"TRIGGER\") {\n console.log(\"Should remove trigger!\");\n console.log(selectedNode.data());\n const triggerindex = workflow.triggers.findIndex(\n (data) => data.id === selectedNode.data().id\n );\n\n setSelectedTriggerIndex(triggerindex);\n if (selectedNode.data().trigger_type === \"SCHEDULE\") {\n setSelectedTrigger(selectedNode.data());\n stopSchedule(selectedNode.data(), triggerindex);\n } else if (selectedNode.data().trigger_type === \"WEBHOOK\") {\n setSelectedTrigger(selectedNode.data());\n deleteWebhook(selectedNode.data(), triggerindex);\n } else if (selectedNode.data().trigger_type === \"EMAIL\") {\n setSelectedTrigger(selectedNode.data());\n stopMailSub(selectedTrigger, triggerindex);\n }\n }\n\n //if (selectedNode.data(\"id\") === selectedAction.id) {\n //\tsetSelectedApp({});\n //\tsetSelectedAction({});\n //setSelectedTrigger({});\n //setSelectedTriggerIndex({});\n //}\n const parsedSelection = cy.$(\":selected\");\n if (selectedNode.data().decorator === true && selectedNode.data(\"type\") !== \"COMMENT\") {\n alert.info(\"This node can't be deleted.\");\n } else {\n\t\t\tconsole.log(\"Deleted.\")\n selectedNode.remove();\n\n\t\t\tsetSelectedTrigger({})\n\t\t\tsetSelectedEdge({})\n\t\t\tsetSelectedAction({})\n }\n\n // An attempt at NOT unselecting when removing\n /*\n setTimeout(() => {\n if (parsedSelection.data() !== undefined) {\n if (parsedSelection.data(\"id\") !== selectedNode.data(\"id\")) {\n console.log(\"SHOULD SELECT SINCE ID IS DIFFERENT\")\n\n parsedSelection.select()\n }\n }\n\n console.log(\"Parsed: \", parsedSelection.data(\"id\"), selectedNode.data(\"id\"))\n }, 2500)\n */\n };\n\n\n if (isLoaded && setupSent === false) {\n setSetupSent(true)\n\n sendStreamRequest({\n \"item\": \"workflow\",\n \"type\": \"enter\",\n \"userid\": userdata.id,\n })\n }\n\n const fetchRecommendations = (inputWorkflow) => {\n\t\tconst parsedWorkflow = JSON.parse(JSON.stringify(inputWorkflow))\n\n fetch(globalUrl + \"/api/v1/workflows/recommend\", {\n method: \"POST\",\n\t\t\theaders: {\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\tAccept: \"application/json\",\n\t\t\t},\n\t\t\tbody: JSON.stringify(parsedWorkflow),\n\t\t\tcredentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for usecases\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n if (responseJson.success !== false) {\n console.log(\"recommendations: \", responseJson);\n\n\t\t\t\t\tif (responseJson.actions !== undefined && responseJson.actions !== null) {\n \t\t\t\t\tsetWorkflowRecommendations(responseJson.actions)\n\t\t\t\t\t}\n } else {\n }\n })\n .catch((error) => {\n //alert.error(\"ERROR: \" + error.toString());\n console.log(\"ERROR getting usecases: \" + error.toString());\n })\n }\n\n const fetchUsecases = () => {\n fetch(globalUrl + \"/api/v1/workflows/usecases\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for usecases\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n if (responseJson.success !== false) {\n console.log(\"Usecases: \", usecases)\n setUsecases(responseJson)\n } else {\n }\n })\n .catch((error) => {\n //alert.error(\"ERROR: \" + error.toString());\n console.log(\"ERROR getting usecases: \" + error.toString());\n })\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n //useEffect(() => {\n if (firstrequest) {\n setFirstrequest(false);\n getWorkflow(props.match.params.key, {});\n getApps();\n fetchUsecases()\n\n const cursearch =\n typeof window === \"undefined\" || window.location === undefined\n ? \"\"\n : window.location.search;\n\n // FIXME: Don't check specific one here\n const tmpExec = new URLSearchParams(cursearch).get(\"execution_highlight\");\n if (\n tmpExec !== undefined &&\n tmpExec !== null &&\n tmpExec === \"executions\"\n ) {\n setExecutionModalOpen(true)\n const newitem = removeParam(\"execution_highlight\", cursearch);\n navigate(curpath + newitem)\n //props.history.push(curpath + newitem);\n }\n\n const tmpView = new URLSearchParams(cursearch).get(\"view\");\n if (\n tmpView !== undefined &&\n tmpView !== null &&\n tmpView === \"executions\"\n ) {\n setExecutionModalOpen(true);\n\n const newitem = removeParam(\"view\", cursearch);\n navigate(curpath + newitem)\n //navigate(`?execution_highlight=${parsed_url}`)\n //props.history.push(curpath + newitem);\n }\n return;\n }\n\n // App length necessary cus of cy initialization\n if (elements.length === 0 && workflow.actions !== undefined && !graphSetup && Object.getOwnPropertyNames(workflow).length > 0) {\n setGraphSetup(true);\n setupGraph();\n console.log(\"In graph setup\")\n\n // 2nd load - configures cytoscape\n } else if (!established && cy !== undefined && ((apps !== null && apps !== undefined && apps.length > 0) || workflow.public === true) && Object.getOwnPropertyNames(workflow).length > 0 && appAuthentication !== undefined) {\n console.log(\"In POST graph setup!\")\n\n\n //This part has to load LAST, as it's kind of not async.\n //This means we need everything else to happen first.\n\n setEstablished(true);\n // Validate if the node is just a node lol\n\n console.log(\"CY grid: \", cy.gridGuide)\n\n // https://www.npmjs.com/package/cytoscape-grid-guide\n //\n if (cy.gridGuide !== undefined) {\n cy.gridGuide({\n gridSpacing: 30,\n guidelinesStyle: {\n strokeStyle: \"#8b7d6b\", \t\t\t\t\t// color of geometric guidelines\n geometricGuidelineRange: 400, \t\t// range of geometric guidelines\n range: 100, \t\t\t\t\t\t\t\t\t\t\t// max range of distribution guidelines\n minDistRange: 10, \t\t\t\t\t\t\t\t// min range for distribution guidelines\n distGuidelineOffset: 10, \t\t\t\t\t// shift amount of distribution guidelines\n horizontalDistColor: \"#ff0000\", \t// color of horizontal distribution alignment\n verticalDistColor: \"#00ff00\", \t\t// color of vertical distribution alignment\n initPosAlignmentColor: \"#0000ff\", // color of alignment to initial mouse location\n lineDash: [0, 0], \t\t\t\t\t\t\t\t// line style of geometric guidelines\n horizontalDistLine: [0, 0], \t\t\t// line style of horizontal distribution guidelines\n verticalDistLine: [0, 0], \t\t\t\t// line style of vertical distribution guidelines\n initPosAlignmentLine: [0, 0], \t\t// line style of alignment to initial mouse position\n }\n })\n } else {\n console.log(\"ERROR: Failed to render grid as it's unitialized\")\n }\n\n if (cy.edgehandles !== undefined) {\n cy.edgehandles({\n handleNodes: (el) => {\n if (el.isNode() &&\n !el.data(\"isButton\") &&\n !el.data(\"isDescriptor\") &&\n !el.data(\"isSuggestion\") &&\n el.data(\"type\") !== \"COMMENT\") {\n return true\n }\n\n return false\n },\n preview: false,\n toggleOffOnLeave: true,\n loopAllowed: function (node) {\n return false;\n },\n });\n\n //cy.edgehandles({\n //\tpreview: false,\n //})\n\n //cy.edgehandles().enable()\n } else {\n console.log(\"ERROR: Failed to initialize edgehandler\")\n }\n // preview: true,\n\n cy.fit(null, 200);\n\n cy.on(\"boxselect\", \"node\", (e) => {\n if (e.target.data(\"isButton\") || e.target.data(\"isDescriptor\") || e.target.data(\"isSuggestion\")) {\n e.target.unselect();\n }\n\n e.target.addClass(\"selected\");\n });\n\n cy.on(\"boxstart\", (e) => {\n console.log(\"START\");\n cy.removeListener(\"select\");\n });\n\n cy.on(\"boxend\", (e) => {\n console.log(\"END: \", cy)\n var cydata = cy.$(\":selected\").jsons();\n if (cydata !== undefined && cydata !== null && cydata.length > 0) {\n alert.success(`Selected ${cydata.length} element(s). CTRL+C to copy them.`);\n }\n });\n\n cy.on(\"select\", \"node\", (e) => {\n onNodeSelect(e, appAuthentication);\n });\n cy.on(\"select\", \"edge\", (e) => onEdgeSelect(e));\n\n cy.on(\"unselect\", (e) => onUnselect(e));\n\n cy.on(\"add\", \"node\", (e) => onNodeAdded(e));\n cy.on(\"add\", \"edge\", (e) => onEdgeAdded(e));\n cy.on(\"remove\", \"node\", (e) => onNodeRemoved(e));\n cy.on(\"remove\", \"edge\", (e) => onEdgeRemoved(e));\n\n cy.on(\"mouseover\", \"edge\", (e) => onEdgeHover(e));\n cy.on(\"mouseout\", \"edge\", (e) => onEdgeHoverOut(e));\n cy.on(\"mouseover\", \"node\", (e) => onNodeHover(e));\n cy.on(\"mouseout\", \"node\", (e) => onNodeHoverOut(e));\n\n // Handles dragging\n cy.on(\"drag\", \"node\", (e) => onNodeDrag(e, selectedAction));\n cy.on(\"free\", \"node\", (e) => onNodeDragStop(e, selectedAction));\n\n cy.on(\"cxttap\", \"node\", (e) => onCtxTap(e));\n\n document.title = \"Workflow - \" + workflow.name;\n registerKeys();\n }\n //})\n\n const stopSchedule = (trigger, triggerindex) => {\n fetch(\n `${globalUrl}/api/v1/workflows/${props.match.params.key}/schedule/${trigger.id}`,\n {\n method: \"DELETE\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n }\n )\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for stream results :O!\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n // No matter what, it's being stopped.\n if (!responseJson.success) {\n if (responseJson.reason !== undefined) {\n alert.error(\"Failed to stop schedule: \" + responseJson.reason);\n }\n } else {\n alert.success(\"Successfully stopped schedule\");\n }\n\n workflow.triggers[triggerindex].status = \"stopped\";\n trigger.status = \"stopped\";\n setSelectedTrigger(trigger);\n setWorkflow(workflow);\n saveWorkflow(workflow);\n })\n .catch((error) => {\n //alert.error(error.toString());\n console.log(\"Stop schedule error: \", error.toString());\n });\n };\n\n const submitSchedule = (trigger, triggerindex) => {\n if (trigger.name.length <= 0) {\n alert.error(\"Error: name can't be empty\");\n return;\n }\n\n\t\tvar mappedStartnode = \"\"\n\t\tconst alledges = cy.edges().jsons()\n if (alledges !== undefined && alledges !== null && alledges.length > 0) {\n\t\tfor (let edgekey in alledges) {\n\t\t\tconst tmp = alledges[edgekey]\n\t\t\tconsole.log(\"TMP: \", tmp, tmp.data.source)\n\t\t\tif (tmp.data.source === trigger.id) {\n\t\t\t\tmappedStartnode = tmp.data.target\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n }\n\n alert.info(\"Creating schedule\") \n const data = {\n name: trigger.name,\n frequency: workflow.triggers[triggerindex].parameters[0].value,\n execution_argument: workflow.triggers[triggerindex].parameters[1].value,\n environment: workflow.triggers[triggerindex].environment,\n id: trigger.id,\n start: mappedStartnode,\n }\n\n fetch(\n `${globalUrl}/api/v1/workflows/${props.match.params.key}/schedule`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify(data),\n credentials: \"include\",\n }\n )\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for stream results :O!\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n if (!responseJson.success) {\n alert.error(\"Failed to set schedule: \" + responseJson.reason);\n } else {\n alert.success(\"Successfully created schedule\");\n workflow.triggers[triggerindex].status = \"running\";\n trigger.status = \"running\";\n setSelectedTrigger(trigger);\n setWorkflow(workflow);\n console.log(\"Should set the status to running and save\");\n saveWorkflow(workflow);\n }\n })\n .catch((error) => {\n //alert.error(error.toString());\n console.log(\"Get schedule error: \", error.toString());\n });\n };\n\n const appViewStyle = {\n marginLeft: 5,\n marginRight: 5,\n display: \"flex\",\n flexDirection: \"column\",\n minHeight: isMobile ? bodyHeight - appBarSize * 4 : \"100%\",\n maxHeight: isMobile ? bodyHeight - appBarSize * 4 : \"100%\",\n };\n\n const paperAppStyle = {\n borderRadius: theme.palette.borderRadius,\n minHeight: isMobile ? 50 : 100,\n maxHeight: isMobile ? 50 : 100,\n minWidth: isMobile ? 50 : \"100%\",\n maxWidth: isMobile ? 50 : \"100%\",\n marginTop: \"5px\",\n color: \"white\",\n backgroundColor: surfaceColor,\n cursor: \"pointer\",\n display: \"flex\",\n };\n\n const paperVariableStyle = {\n borderRadius: theme.palette.borderRadius,\n minHeight: 50,\n maxHeight: 50,\n minWidth: \"100%\",\n maxWidth: \"100%\",\n marginTop: \"5px\",\n color: \"white\",\n backgroundColor: surfaceColor,\n cursor: \"pointer\",\n display: \"flex\",\n };\n\n\tconst VariableItem = (props) => {\n\t\tconst { variable, index, type } = props;\n\n const [open, setOpen] = React.useState(false);\n const [anchorEl, setAnchorEl] = React.useState(null);\n\n const menuClick = (event) => {\n setOpen(!open);\n setAnchorEl(event.currentTarget);\n };\n\n const deleteVariable = (type, variableIndex) => {\n\n\t\t\tconsole.log(\"Delete type: \", type, variableIndex)\n\n\t\t\tif (type === \"normal\") {\n\t\t\t\tif (workflow.workflow_variables !== undefined && workflow.workflow_variables !== null && workflow.workflow_variables.length > variableIndex) {\n\t\t\t\t\tvar vars = JSON.parse(JSON.stringify(workflow.workflow_variables))\n\t\t\t\t\tvars.splice(variableIndex, 1)\n\t\t\t\t\tworkflow.workflow_variables = vars\n\n\t\t\t\t\tconsole.log(\"Workflow after del: \", workflow)\n\n\t\t\t\t\tsetWorkflow(workflow);\n\t\t\t\t\tsetUpdate(Math.random());\n\t\t\t\t}\n\t\t\t} else if (type === \"exec\") {\n\t\t\t\tif (workflow.execution_variables !== undefined && workflow.execution_variables !== null && workflow.execution_variables.length > variableIndex) {\n\t\t\t\t\tvar vars = JSON.parse(JSON.stringify(workflow.execution_variables))\n\t\t\t\t\tvars.splice(variableIndex, 1)\n\t\t\t\t\tworkflow.execution_variables = vars\n\n\t\t\t\t\tconsole.log(\"Workflow after del: \", workflow)\n\n\t\t\t\t\tsetWorkflow(workflow);\n\t\t\t\t\tsetUpdate(Math.random());\n\t\t\t\t}\n\t\t\t}\n };\n\n\t\treturn (\n\t\t\t
    \n\t\t\t\t { }}>\n\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tsetVariableInfo({\n\t\t\t\t\t\t\t\t\t\"name\": variable.name,\n\t\t\t\t\t\t\t\t\t\"description\": variable.description,\n\t\t\t\t\t\t\t\t\t\"value\": variable.value,\n\t\t\t\t\t\t\t\t\t\"index\": index,\n\t\t\t\t\t\t\t\t})\n\n\t\t\t\t\t\t\t\tif (type === \"normal\") {\n\t\t\t\t\t\t\t\t\tsetVariablesModalOpen(true);\n\t\t\t\t\t\t\t\t} else if (type === \"exec\") {\n\t\t\t\t\t\t\t\t\tsetExecutionVariablesModalOpen(true);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tconsole.log(\"Unknown type: \", type)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tName: {variable.name}\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tsetOpen(false);\n\t\t\t\t\t\t\t\t\tsetAnchorEl(null);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\tsetOpen(false);\n\t\t\t\t\t\t\t\t\t\tsetVariableInfo({\n\t\t\t\t\t\t\t\t\t\t\t\"name\": variable.name,\n\t\t\t\t\t\t\t\t\t\t\t\"description\": variable.description,\n\t\t\t\t\t\t\t\t\t\t\t\"value\": variable.value,\n\t\t\t\t\t\t\t\t\t\t\t\"index\": index,\n\t\t\t\t\t\t\t\t\t\t})\n\n\t\t\t\t\t\t\t\t\t\tif (type === \"normal\") {\n\t\t\t\t\t\t\t\t\t\t\tsetVariablesModalOpen(true);\n\t\t\t\t\t\t\t\t\t\t} else if (type === \"exec\") {\n\t\t\t\t\t\t\t\t\t\t\tsetExecutionVariablesModalOpen(true);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"Unknown type: \", type)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tkey={\"Edit\"}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{\"Edit\"}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\tdeleteVariable(type, index);\n\t\t\t\t\t\t\t\t\t\tsetOpen(false);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tkey={\"Delete\"}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{\"Delete\"}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t)\n\t}\n\n const VariablesView = () => {\n const variableScrollStyle = {\n margin: 15,\n overflow: \"scroll\",\n height: isMobile ? \"100%\" : \"66vh\",\n overflowX: \"auto\",\n overflowY: \"auto\",\n flex: \"10\",\n };\n\n return (\n
    \n
    \n What are{\" \"}\n \n Workflow variables?\n \n {workflow.workflow_variables === null\n ? null\n : workflow.workflow_variables.map((variable, varindex) => {\n return (\n\t\t\t\t\t\t\t\t\n );\n\t\t\t\t\t})}\n\n
    \n {\n setVariablesModalOpen(true);\n setLastSaved(false);\n\n\t\t\t\t\t\t\t\tsetVariableInfo({\n\t\t\t\t\t\t\t\t\t\"name\": \"\",\n\t\t\t\t\t\t\t\t\t\"description\": \"\",\n\t\t\t\t\t\t\t\t\t\"value\": \"\",\n\t\t\t\t\t\t\t\t})\n }}\n >\n New workflow variable\n \n
    \n \n What are{\" \"}\n \n Runtime variables?\n \n {workflow.execution_variables === null ||\n workflow.execution_variables === undefined\n ? null\n : workflow.execution_variables.map((variable, varindex2) => {\n return (\n\t\t\t\t\t\t\t\t\n );\n })}\n
    \n {\n setExecutionVariablesModalOpen(true);\n setLastSaved(false);\n\n\t\t\t\t\t\t\t\tsetVariableInfo({\n\t\t\t\t\t\t\t\t\t\"name\": \"\",\n\t\t\t\t\t\t\t\t\t\"description\": \"\",\n\t\t\t\t\t\t\t\t\t\"value\": \"\",\n\t\t\t\t\t\t\t\t})\n }}\n >\n New execution variable\n \n
    \n
    \n
    \n );\n };\n\n const handleSetTab = (event, newValue) => {\n setCurrentView(newValue);\n };\n\n const HandleLeftView = () => {\n // Defaults to apps.\n var thisview = (\n \n );\n if (currentView === 1) {\n thisview = ;\n } else if (currentView === 2) {\n thisview = ;\n }\n\n const tabStyle = {\n maxWidth: isMobile ? leftBarSize : leftBarSize / 3,\n minWidth: isMobile ? leftBarSize : leftBarSize / 3,\n flex: 1,\n textTransform: \"none\",\n };\n\n const iconStyle = {\n marginTop: 3,\n marginRight: 5,\n };\n\n const parsedHeight = isMobile ? bodyHeight - appBarSize * 4 : bodyHeight - appBarSize - 50\n return (\n
    \n \n {thisview}\n
    \n \n \n \n \n \n \n {isMobile ? null : Apps}\n \n }\n style={tabStyle}\n />\n \n \n \n \n {isMobile ? null : Triggers}\n \n }\n style={tabStyle}\n />\n \n \n \n \n {isMobile ? null : Variables}\n \n }\n style={tabStyle}\n />\n \n \n );\n };\n\n \n\n const TriggersView = () => {\n const triggersViewStyle = {\n marginLeft: \"10px\",\n marginRight: \"10px\",\n display: \"flex\",\n flexDirection: \"column\",\n };\n\n // Predefined hurr\n\n return (\n
    \n
    \n {triggers.map((trigger, index) => {\n var imageline =\n trigger.large_image.length === 0 ? (\n \"\"\n ) : (\n \n );\n\n\t\t\t\t\t\tconst title = trigger.trigger_type === \"WEBHOOK\" ? \"Workflow starters\" : trigger.trigger_type === \"SUBFLOW\" ? \"Mid-Workflow\" : \"\"\n\n const color = trigger.is_valid ? green : yellow;\n return (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{title.length > 0 ? \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t: null}\n\n \t {\n \t handleTriggerDrag(e, trigger);\n \t }}\n \t onStop={(e) => {\n \t handleDragStop(e);\n \t }}\n \t dragging={false}\n \t position={{\n \t x: 0,\n \t y: 0,\n \t }}\n \t>\n \t { }}>\n \t
    \n \t \n \t \n \t {imageline}\n \t \n \t {isMobile ? null :\n \t \n \t \n \t

    \n \t {trigger.name}\n \t

    \n \t
    \n \t \n \t {trigger.description}\n \t \n \t \n \t }\n \t \n \t \n \t\n\t\t\t\t\t\t\t\n );\n })}\n
    \n \n );\n };\n\n var newNodeId = \"\";\n var parsedApp = {};\n const handleTriggerDrag = (e, data) => {\n const cycontainer = cy.container();\n // Chrome lol\n if (\n e.pageX > cycontainer.offsetLeft &&\n e.pageX < cycontainer.offsetLeft + cycontainer.offsetWidth &&\n e.pageY > cycontainer.offsetTop &&\n e.pageY < cycontainer.offsetTop + cycontainer.offsetHeight\n ) {\n if (newNodeId.length > 0) {\n var currentnode = cy.getElementById(newNodeId);\n if (currentnode.length === 0) {\n return;\n }\n\n currentnode[0].renderedPosition(\"x\", e.pageX - cycontainer.offsetLeft);\n currentnode[0].renderedPosition(\"y\", e.pageY - cycontainer.offsetTop);\n } else {\n if (workflow.start === \"\" || workflow.start === undefined) {\n alert.error(\"Define a starting action first.\");\n return;\n }\n\n const triggerLabel = getNextActionName(data.name);\n\n newNodeId = uuidv4();\n const newposition = {\n x: e.pageX - cycontainer.offsetLeft,\n y: e.pageY - cycontainer.offsetTop,\n };\n\n const newAppData = {\n app_name: data.name,\n app_version: \"1.0.0\",\n environment: isCloud ? \"cloud\" : data.environment,\n description: data.description,\n long_description: data.long_description,\n errors: [],\n id_: newNodeId,\n _id_: newNodeId,\n id: newNodeId,\n finished: false,\n label: triggerLabel,\n type: data.type,\n is_valid: true,\n trigger_type: data.trigger_type,\n large_image: data.large_image,\n status: \"uninitialized\",\n name: data.name,\n isStartNode: false,\n position: newposition,\n };\n\n // Can all the data be in here? hmm\n const nodeToBeAdded = {\n group: \"nodes\",\n data: newAppData,\n renderedPosition: newposition,\n };\n\n cy.add(nodeToBeAdded);\n parsedApp = nodeToBeAdded;\n return;\n }\n }\n };\n\n const handleDragStop = (e, app) => {\n var currentnode = cy.getElementById(newNodeId);\n if (\n currentnode === undefined ||\n currentnode === null ||\n currentnode.length === 0\n ) {\n return;\n }\n\n // Using remove & replace, as this triggers the function\n // onNodeAdded() with this node after it's added\n\n currentnode.remove();\n parsedApp.data.finished = true;\n parsedApp.data.position = currentnode.renderedPosition();\n parsedApp.position = currentnode.renderedPosition();\n parsedApp.renderedPosition = currentnode.renderedPosition();\n\n var newAppData = parsedApp.data;\n if (newAppData.type === \"ACTION\") {\n\n //const activateApp = (appid) => {\n if (newAppData.activated === false) {\n activateApp(newAppData.app_id, false)\n }\n\n // AUTHENTICATION\n if (app.authentication !== undefined && app.authentication !== null && app.authentication.required === true) {\n\n // Setup auth here :)\n const authenticationOptions = [];\n var findAuthId = \"\";\n if (\n newAppData.authentication_id !== null &&\n newAppData.authentication_id !== undefined &&\n newAppData.authentication_id.length > 0\n ) {\n findAuthId = newAppData.authentication_id;\n }\n\n const tmpAuth = JSON.parse(JSON.stringify(appAuthentication));\n for (let authkey in tmpAuth) {\n\t\t\t\t\tif (authkey === undefined) {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\n var item = tmpAuth[authkey];\n const newfields = {};\n\t\t\t\t\tfor (let fieldkey in item.fields) {\n\t\t\t\t\t\tif (item.fields[fieldkey] === undefined) {\n\t\t\t\t\t\t\tconsole.log(\"Problem with filterkey in Node select\", fieldkey)\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst filterkey = item.fields[fieldkey][\"key\"]\n\t\t\t\t\t\tif (filterkey === null || filterkey === undefined) {\n\t\t\t\t\t\t\tconsole.log(\"Problem with filterkey 2. Null or undefined 3\")\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tnewfields[filterkey] = item.fields[fieldkey][\"value\"];\n\t\t\t\t\t}\n\n item.fields = newfields;\n if (item.app.id === app.id || item.app.name === app.name) {\n authenticationOptions.push(item);\n\n if (item.id === findAuthId) {\n newAppData.selectedAuthentication = item\n newAppData.authentication_id = item.id\n\n } else if (findAuthId === \"\") {\n // Will always be set to the last one if one isn't found. \n // Last = timestamp too\n newAppData.selectedAuthentication = item\n newAppData.authentication_id = item.id\n }\n }\n }\n\n if (\n authenticationOptions !== undefined &&\n authenticationOptions !== null &&\n authenticationOptions.length > 0\n ) {\n for (let authkey in authenticationOptions) {\n const option = authenticationOptions[authkey];\n\n if (option.active && newAppData.authentication_id === \"\") {\n newAppData.selectedAuthentication = option;\n newAppData.authentication_id = option.id;\n break;\n }\n }\n }\n } else {\n newAppData.authentication = [];\n newAppData.authentication_id = \"\";\n newAppData.selectedAuthentication = {};\n }\n\n parsedApp.data = newAppData;\n cy.add(parsedApp);\n } else if (newAppData.type === \"TRIGGER\") {\n cy.add(parsedApp);\n }\n\n newNodeId = \"\";\n parsedApp = {};\n };\n\n const appScrollStyle = {\n overflow: \"scroll\",\n maxHeight: isMobile ? bodyHeight - appBarSize * 4 : bodyHeight - appBarSize - 55 - 50,\n minHeight: isMobile ? bodyHeight - appBarSize * 4 : bodyHeight - appBarSize - 55 - 50,\n marginTop: 1,\n overflowY: \"auto\",\n overflowX: \"hidden\",\n };\n\n const handleAppDrag = (e, app) => {\n const cycontainer = cy.container();\n\n //console.log(\"e: \", e)\n //console.log(\"Offset: \", cycontainer)\n\n // Chrome lol\n if (\n e.pageX > cycontainer.offsetLeft &&\n e.pageX < cycontainer.offsetLeft + cycontainer.offsetWidth &&\n e.pageY > cycontainer.offsetTop &&\n e.pageY < cycontainer.offsetTop + cycontainer.offsetHeight\n ) {\n if (newNodeId.length > 0) {\n var currentnode = cy.getElementById(newNodeId);\n if (\n currentnode === undefined ||\n currentnode === null ||\n currentnode.length === 0\n ) {\n return;\n }\n\n currentnode[0].renderedPosition(\"x\", e.pageX - cycontainer.offsetLeft);\n currentnode[0].renderedPosition(\"y\", e.pageY - cycontainer.offsetTop);\n } else {\n if (workflow.public) {\n console.log(\"workflow is public - not adding\");\n return;\n }\n\n if (\n app.actions === undefined ||\n app.actions === null ||\n app.actions.length === 0\n ) {\n alert.error(\n \"App \" +\n app.name +\n \" currently has no actions to perform. Please go to https://shuffler.io/apps to edit it.\"\n );\n return;\n }\n\n newNodeId = uuidv4();\n const actionType = \"ACTION\";\n const actionLabel = getNextActionName(app.name);\n\t\t\t\tconsole.log(\"Next action name: \", actionLabel)\n var parameters = null;\n var example = \"\";\n var description = \"\"\n\n if (\n app.actions[0].parameters !== undefined &&\n app.actions[0].parameters !== null &&\n app.actions[0].parameters.length > 0\n ) {\n parameters = app.actions[0].parameters;\n }\n\n if (\n app.actions[0].returns !== undefined &&\n app.actions[0].returns !== null &&\n app.actions[0].returns.example !== undefined &&\n app.actions[0].returns.example !== null &&\n app.actions[0].returns.example.length > 0\n ) {\n example = app.actions[0].returns.example;\n }\n\n if (\n app.actions[0].description !== undefined &&\n app.actions[0].description !== null &&\n app.actions[0].description.length > 0\n ) {\n description = app.actions[0].description\n }\n\n const parsedEnvironments =\n environments === null || environments === []\n ? \"cloud\"\n : environments[defaultEnvironmentIndex] === undefined\n ? \"cloud\"\n : environments[defaultEnvironmentIndex].Name;\n\n // activated: app.generated === true ? app.activated === false ? false : true : true,\n const newAppData = {\n name: app.actions[0].name,\n label: actionLabel,\n app_name: app.name,\n app_version: app.app_version,\n app_id: app.id,\n sharing: app.sharing,\n private_id: app.private_id,\n description: description,\n environment: parsedEnvironments,\n errors: [],\n finished: false,\n id_: newNodeId,\n _id_: newNodeId,\n id: newNodeId,\n is_valid: true,\n type: actionType,\n parameters: parameters,\n isStartNode: false,\n large_image: app.large_image,\n run_magic_output: false,\n authentication: [],\n execution_variable: undefined,\n example: example,\n category:\n app.categories !== null &&\n app.categories !== undefined &&\n app.categories.length > 0\n ? app.categories[0]\n : \"\",\n authentication_id: \"\",\n finished: false,\n template: app.template === true ? true : false,\n };\n\n // FIXME: overwrite category if the ACTION chosen has a different category\n\t\t\t\t//\n\n\t\t\t\tif (!isCloud && (!app.is_valid || (!app.activated && app.generated))) {\n\t\t\t\t\tconsole.log(\"NOT VALID: Activate!\")\n \n\t\t\t\t\tactivateApp(app.id, false)\n\t\t\t\t}\n\n // const image = \"url(\"+app.large_image+\")\"\n // FIXME - find the cytoscape offset position\n // Can this be done with zoom calculations?\n const nodeToBeAdded = {\n group: \"nodes\",\n data: newAppData,\n renderedPosition: {\n x: e.pageX - cycontainer.offsetLeft,\n y: e.pageY - cycontainer.offsetTop,\n },\n };\n\n parsedApp = nodeToBeAdded;\n cy.add(nodeToBeAdded);\n return;\n }\n }\n };\n\n const AppView = (props) => {\n const { allApps, prioritizedApps, filteredApps, extraApps } = props;\n //extraApps,\n const [visibleApps, setVisibleApps] = React.useState(\n Array.prototype.concat.apply(\n prioritizedApps,\n filteredApps.filter((innerapp) => !internalIds.includes(innerapp.id)),\n )\n );\n\n var delay = -75\n var runDelay = false\n\n const ParsedAppPaper = (props) => {\n const app = props.app;\n const [hover, setHover] = React.useState(false);\n\n\t\t\tif (app.id === \"\" || app.name === \"\") {\n\t\t\t\treturn null\n\t\t\t}\n\n const maxlen = 24;\n var newAppname = app.name;\n newAppname = newAppname.charAt(0).toUpperCase() + newAppname.substring(1);\n if (newAppname.length > maxlen) {\n newAppname = newAppname.slice(0, maxlen) + \"..\";\n }\n\n newAppname = newAppname.replaceAll(\"_\", \" \");\n\n\t\t\tif (app.large_image === undefined || app.large_image === null || app.large_image === \"\") {\n\t\t\t\tapp.large_image = theme.palette.defaultImage\n\t\t\t}\n\n const image = app.large_image !== undefined && app.large_image !== null && app.large_image !== \"\" ? app.large_image : theme.palette.defaultImage\n\t\t\t\n const newAppStyle = JSON.parse(JSON.stringify(paperAppStyle));\n const pixelSize = !hover ? \"2px\" : \"4px\";\n //newAppStyle.borderLeft = app.is_valid && app.actions !== null && app.actions !== undefined && app.actions.length > 0 && !(app.activated && app.generated)\n newAppStyle.borderLeft = app.is_valid && app.actions !== null && app.actions !== undefined && app.actions.length > 0\n ? `${pixelSize} solid ${green}`\n : `${pixelSize} solid ${yellow}`;\n\n if (!app.activated && app.generated) {\n newAppStyle.borderLeft = `${pixelSize} solid ${yellow}`;\n }\n\n return (\n {\n handleAppDrag(e, app);\n }}\n onStop={(e) => {\n handleDragStop(e, app);\n }}\n key={app.id}\n dragging={false}\n position={{\n x: 0,\n y: 0,\n }}\n >\n {\n setHover(true);\n }}\n onMouseOut={() => {\n setHover(false);\n }}\n onClick={() => {\n if (isMobile) {\n newNodeId = uuidv4();\n const actionType = \"ACTION\";\n const actionLabel = getNextActionName(app.name);\n var parameters = null;\n var example = \"\";\n var description = \"\"\n\n if (\n app.actions[0].parameters !== null &&\n app.actions[0].parameters.length > 0\n ) {\n parameters = app.actions[0].parameters;\n }\n\n if (\n app.actions[0].returns.example !== undefined &&\n app.actions[0].returns.example !== null &&\n app.actions[0].returns.example.length > 0\n ) {\n example = app.actions[0].returns.example;\n }\n\n if (\n app.actions[0].description !== undefined &&\n app.actions[0].description !== null &&\n app.actions[0].description.length > 0\n ) {\n description = app.actions[0].description\n }\n\n const parsedEnvironments =\n environments === null || environments === []\n ? \"cloud\"\n : environments[defaultEnvironmentIndex] === undefined\n ? \"cloud\"\n : environments[defaultEnvironmentIndex].Name;\n\n // activated: app.generated === true ? app.activated === false ? false : true : true,\n const newAppData = {\n app_name: app.name,\n app_version: app.app_version,\n app_id: app.id,\n sharing: app.sharing,\n private_id: app.private_id,\n description: description,\n environment: parsedEnvironments,\n errors: [],\n finished: false,\n id_: newNodeId,\n _id_: newNodeId,\n id: newNodeId,\n is_valid: true,\n label: actionLabel,\n type: actionType,\n name: app.actions[0].name,\n parameters: parameters,\n isStartNode: false,\n large_image: image,\n run_magic_output: false,\n authentication: [],\n execution_variable: undefined,\n example: example,\n category:\n app.categories !== null &&\n app.categories !== undefined &&\n app.categories.length > 0\n ? app.categories[0]\n : \"\",\n authentication_id: \"\",\n finished: false,\n };\n\n const nodeToBeAdded = {\n group: \"nodes\",\n data: newAppData,\n renderedPosition: {\n x: 100,\n y: 100,\n },\n };\n\n parsedApp = nodeToBeAdded;\n cy.add(nodeToBeAdded);\n\n }\n }}\n >\n \n \n \n \n {isMobile ? null :\n \n \n \n {newAppname}\n \n \n \n \n Version: {app.app_version}\n \n \n \n \n {app.description}\n \n \n \n }\n \n \n \n );\n };\n\n const runSearch = (value) => {\n if (value.length > 0) {\n var newApps = allApps.filter(\n (app) =>\n app.name.toLowerCase().includes(value.trim().toLowerCase())\n ||\n app.description.toLowerCase().includes(value.trim().toLowerCase())\n )\n\n // Extend search\n if (newApps.length === 0) {\n const searchvalue = value.trim().toLowerCase();\n newApps = allApps.filter((app) => {\n\t\t\t\t\t\tif (app.actions !== undefined && app.actions !== null) {\n\t\t\t\t\t\t\tfor (let actionkey in app.actions) {\n\t\t\t\t\t\t\t\tconst inneraction = app.actions[actionkey];\n\t\t\t\t\t\t\t\tif (inneraction.name.toLowerCase().includes(searchvalue)) {\n\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n return false;\n });\n }\n\n setVisibleApps(newApps);\n } else {\n setVisibleApps(\n prioritizedApps.concat(\n filteredApps.filter(\n (innerapp) => !internalIds.includes(innerapp.id)\n )\n )\n );\n }\n };\n\n const SearchBox = ({ currentRefinement, refine, isSearchStalled, }) => {\n\n useEffect(() => {\n if (document !== undefined) {\n const appsearchValue = document.getElementById(\"appsearch\")\n if (appsearchValue !== undefined && appsearchValue !== null) {\n if (appsearchValue.value !== undefined && appsearchValue.value !== null && appsearchValue.value.length > 0) {\n refine(appsearchValue.value)\n }\n }\n //}\n }\n }, [])\n\n return (\n
    {\n }}>\n \n \n \n ),\n }}\n autoComplete='off'\n type=\"search\"\n color=\"primary\"\n placeholder=\"Find Public Apps, Workflows, Documentation and more\"\n value={currentRefinement}\n id=\"shuffle_search_field\"\n onClick={(event) => {\n console.log(\"Click!\")\n }}\n onBlur={(event) => {\n //setSearchOpen(false)\n }}\n onChange={(event) => {\n //if (event.currentTarget.value.length > 0 && !searchOpen) {\n //\tsetSearchOpen(true)\n //}\n\n refine(event.currentTarget.value)\n }}\n limit={5}\n />\n {/*isSearchStalled ? 'My search is stalled' : ''*/}\n \n )\n }\n\n\n const AppHits = ({ hits }) => {\n const [mouseHoverIndex, setMouseHoverIndex] = useState(0)\n\n //var tmp = searchOpen\n //if (!searchOpen) {\n //\treturn null\n //}\n\n const positionInfo = document.activeElement.getBoundingClientRect()\n const outerlistitemStyle = {\n width: \"100%\",\n overflowX: \"hidden\",\n overflowY: \"hidden\",\n borderBottom: \"1px solid rgba(255,255,255,0.4)\",\n }\n\n if (hits.length > 4) {\n hits = hits.slice(0, 4)\n }\n\n var type = \"app\"\n const baseImage = \n\n return (\n
    \n \n {hits.length === 0 ?\n \n console.log(hits)}>\n \n \n \n \n \n \n :\n hits.map((hit, index) => {\n const innerlistitemStyle = {\n width: positionInfo.width + 35,\n overflowX: \"hidden\",\n overflowY: \"hidden\",\n borderBottom: \"1px solid rgba(255,255,255,0.4)\",\n backgroundColor: mouseHoverIndex === index ? \"#1f2023\" : \"inherit\",\n cursor: \"pointer\",\n marginLeft: 0,\n marginRight: 0,\n maxHeight: 75,\n minHeight: 75,\n maxWidth: 420,\n minWidth: \"100%\",\n }\n\n const name = hit.name === undefined ?\n hit.filename.charAt(0).toUpperCase() + hit.filename.slice(1).replaceAll(\"_\", \" \") + \" - \" + hit.title :\n (hit.name.charAt(0).toUpperCase() + hit.name.slice(1)).replaceAll(\"_\", \" \")\n\n var secondaryText = hit.data !== undefined ? hit.data.slice(0, 40) + \"...\" : \"\"\n const avatar = hit.image_url === undefined ?\n baseImage\n :\n \n\n //console.log(hit)\n if (hit.categories !== undefined && hit.categories !== null && hit.categories.length > 0) {\n secondaryText = hit.categories.slice(0, 3).map((data, index) => {\n if (index === 0) {\n return data\n }\n\n return \", \" + data\n\n /*\n {\n //handleChipClick\n }}\n variant=\"outlined\"\n color=\"primary\"\n />\n */\n })\n }\n\n var parsedUrl = isCloud ? `/apps/${hit.objectID}` : `https://shuffler.io/apps/${hit.objectID}`\n parsedUrl += `?queryID=${hit.__queryID}`\n\n return (\n
    {\n //if (!isCloud) {\n //\talert.info(\"Since this is an on-prem instance. You will need to activate the app yourself. Opening link to download it in a new window.\")\n //\tsetTimeout(() => {\n //\t\tevent.preventDefault()\n //\t\twindow.open(parsedUrl, '_blank')\n //\t}, 2000)\n //} else {\n alert.info(`Activating ${name}`)\n //}\n\n console.log(\"CLICK: \", hit)\n\n const queryID = hit.__queryID\n console.log(\"QUERY: \", queryID)\n\n if (queryID !== undefined && queryID !== null) {\n aa('init', {\n appId: \"JNSS5CFDZZ\",\n apiKey: \"db08e40265e2941b9a7d8f644b6e5240\",\n })\n\n const timestamp = new Date().getTime()\n aa('sendEvents', [\n {\n eventType: 'conversion',\n eventName: 'Public App Activated',\n index: 'appsearch',\n objectIDs: [hit.objectID],\n timestamp: timestamp,\n queryID: queryID,\n userToken: userdata === undefined || userdata === null || userdata.id === undefined ? \"unauthenticated\" : userdata.id,\n }\n ])\n } else {\n console.log(\"No query to handle when activating\")\n }\n\n activateApp(hit.objectID, true)\n }}>\n {\n setMouseHoverIndex(index)\n }}>\n \n {avatar}\n \n \n {/*\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t*/}\n \n
    \n )\n })\n }\n
    \n
    \n )\n }\n\n\n const CustomSearchBox = connectSearchBox(SearchBox)\n const CustomAppHits = connectHits(AppHits)\n\n return (\n
    \n
    \n \n \n \n \n \n ),\n }}\n fullWidth\n color=\"primary\"\n placeholder={\"Search Active Apps\"}\n id=\"appsearch\"\n onKeyPress={(event) => {\n if (event.key === \"Enter\") {\n event.target.blur(event);\n }\n }}\n onBlur={(event) => {\n\n //navigate(`?q=${event.target.value}`)\n\n runSearch(event.target.value);\n }}\n />\n {visibleApps.length > extraApps.length ? (\n
    \n {visibleApps.map((app, index) => {\n if (app.invalid) {\n return null;\n }\n\n var extraMessage = \"\"\n if (index == 2) {\n extraMessage =
    \n }\n\n delay += 75\n return (\n runDelay ?\n \n
    \n \n
    \n
    \n :\n
    \n {extraMessage}\n \n
    \n )\n })}\n
    \n ) : apps.length > 0 ? (\n {\n console.log(\"Should load in extra apps?\")\n }}\n >\n \n Couldn't find the app you're looking for? Searching unactivated apps. Click one of the below apps to Activate it for your organization.\n \n {\n console.log(\"CLICKED\")\n }}>\n \n \n \n \n \n
    \n ) : (\n
    \n \n \n Loading Apps\n \n
    \n )}\n
    \n
    \n );\n };\n\n const getNextActionName = (appName) => {\n var highest = \"\";\n\n const allitems = workflow.actions.concat(workflow.triggers);\n\t\tif (allitems !== undefined && allitems !== null) {\n\t\t\tfor (let itemkey in allitems) {\n\t\t\t\tconst item = allitems[itemkey];\n\t\t\t\tif (\n\t\t\t\t\titem.app_name === appName &&\n\t\t\t\t\titem.label !== undefined &&\n\t\t\t\t\titem.label !== null\n\t\t\t\t) {\n\t\t\t\t\tvar number = item.label.split(\"_\");\n\t\t\t\t\tif (\n\t\t\t\t\t\tisNaN(number[-1]) &&\n\t\t\t\t\t\tparseInt(number[number.length - 1]) > highest\n\t\t\t\t\t) {\n\t\t\t\t\t\thighest = number[number.length - 1];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n appName = appName.replaceAll(\" \", \"_\")\n\n\t\tconsole.log(\"Highest:\", highest)\n\n if (highest) {\n return appName + \"_\" + (parseInt(highest) + 1);\n } else {\n return appName + \"_\" + 1;\n }\n };\n\n const setNewSelectedAction = (e) => {\n if (selectedApp.actions === undefined || selectedApp.actions === null) {\n return\n }\n\n const newaction = selectedApp.actions.find(\n (a) => a.name === e.target.value\n );\n\n if (newaction === undefined || newaction === null) {\n alert.error(\"Failed to find the action\");\n return;\n }\n\n if (workflow.actions !== undefined && workflow.actions !== null) {\n const foundInfo = workflow.actions.find(ac => ac.id === selectedAction.id)\n }\n\n // Setting an old reference just to use the same memory space elsewhere \n // for selectedAction\n const oldaction = JSON.parse(JSON.stringify(selectedAction))\n\n // Does this one find the wrong one?\n //var newSelectedAction = JSON.parse(JSON.stringify(selectedAction))\n var newSelectedAction = selectedAction\n newSelectedAction.name = newaction.name;\n newSelectedAction.parameters = JSON.parse(JSON.stringify(newaction.parameters))\n newSelectedAction.errors = [];\n newSelectedAction.isValid = true;\n newSelectedAction.is_valid = true;\n //console.log(newSelectedAction)\n\n\n\t\t// Simmple action swap autocompleter\n\t\tif (oldaction.parameters !== undefined && oldaction.parameters !== null && newSelectedAction.parameters !== undefined && oldaction.id === newSelectedAction.id) {\n\t\t\tvar fileid_found = false\n\t\t\tfor (let [paramkey,paramkeyval] in Object.entries(oldaction.parameters)) {\n\t\t\t\tconst param = oldaction.parameters[paramkey];\n\t\t\t\n\t\t\t\tif (param.name === \"file_id\") {\n\t\t\t\t\tfileid_found = true\n\t\t\t\t}\n\n if (param.value === null || param.value === undefined || param.value.length === 0) {\n continue\n }\n\n if (param.name === \"body\") {\n //console.log(\"Param: \", param)\n continue\n }\n\n if (param.name === \"headers\") {\n console.log(\"Swap header? For now, yes. File found: \", fileid_found)\n\n if (fileid_found) {\n newSelectedAction.parameters[paramkey].value = \"\"\n newSelectedAction.parameters[paramkey].autocompleted = true\n\n continue\n }\n //newSelectedAction.parameters[newParamIndex].value = param.value\n }\n\n if (newSelectedAction.parameters === undefined || newSelectedAction.parameters === null) {\n continue\n }\n\n // Not doing options fields\n const newParamIndex = newSelectedAction.parameters.findIndex(paramdata => paramdata.name === param.name)\n if (newParamIndex < 0) {\n continue\n }\n\n newSelectedAction.parameters[newParamIndex].value = param.value\n newSelectedAction.parameters[newParamIndex].autocompleted = true\n if (param.options !== undefined && param.options !== null && param.options.length > 0) {\n newSelectedAction.parameters[newParamIndex].autocompleted = false\n }\n }\n }\n\n if (newSelectedAction.app_name === \"Shuffle Tools\") {\n const iconInfo = GetIconInfo(newSelectedAction);\n console.log(\"ICONINFO: \", iconInfo);\n const svg_pin = ``;\n const svgpin_Url = encodeURI(\"data:image/svg+xml;utf-8,\" + svg_pin);\n newSelectedAction.large_image = svgpin_Url;\n newSelectedAction.fillGradient = iconInfo.fillGradient;\n newSelectedAction.fillstyle = \"solid\";\n if (\n newSelectedAction.fillGradient !== undefined &&\n newSelectedAction.fillGradient !== null &&\n newSelectedAction.fillGradient.length > 0\n ) {\n newSelectedAction.fillstyle = \"linear-gradient\";\n } else {\n newSelectedAction.iconBackground = iconInfo.iconBackgroundColor;\n }\n\n const foundnode = cy.getElementById(newSelectedAction.id);\n if (foundnode !== null && foundnode !== undefined) {\n foundnode.data(newSelectedAction);\n }\n }\n\n\n // Takes an action as input, then runs through and updates the relevant parameters based on previous actions' results (parent nodes)\n // Further checks if those fields are already set in a previously used action\n newSelectedAction = RunAutocompleter(newSelectedAction);\n\n if (\n newaction.returns.example !== undefined &&\n newaction.returns.example !== null &&\n newaction.returns.example.length > 0\n ) {\n newSelectedAction.example = newaction.returns.example;\n }\n\n if (\n newaction.description !== undefined &&\n newaction.description !== null &&\n newaction.description.length > 0\n ) {\n newSelectedAction.description = newaction.description\n }\n\n // FIXME - this is broken sometimes lol\n //var env = environments.find(a => a.Name === newaction.environment)\n //if ((!env || env === undefined) && selectedAction.environment === undefined ) {\n //\tenv = environments[defaultEnvironmentIndex]\n //}\n //setSelectedActionEnvironment(env)\n\n\n if (workflow.actions !== undefined && workflow.actions !== null && workflow.actions.length > 0) {\n const foundActionIndex = workflow.actions.findIndex(actiondata => actiondata.id === newSelectedAction.id)\n console.log(\"Found action on index \", foundActionIndex)\n if (foundActionIndex >= 0) {\n workflow.actions[foundActionIndex] = newSelectedAction\n setWorkflow(workflow)\n }\n }\n\n console.log(\"NEW ACTION: \", newSelectedAction);\n setSelectedAction(newSelectedAction);\n setUpdate(Math.random());\n\n const allNodes = cy.nodes().jsons();\n\t\tif (allNodes !== undefined && allNodes !== null) {\n\t\t\tfor (let nodekey in allNodes) {\n\t\t\t\tconst currentNode = allNodes[nodekey];\n\t\t\t\tif (\n\t\t\t\t\tcurrentNode.data.attachedTo === oldaction.id &&\n\t\t\t\t\tcurrentNode.data.isDescriptor\n\t\t\t\t) {\n\t\t\t\t\tconst foundnode = cy.getElementById(currentNode.data.id);\n\t\t\t\t\tif (foundnode !== null && foundnode !== undefined) {\n\t\t\t\t\t\tconst iconInfo = GetIconInfo(newaction);\n\t\t\t\t\t\tconst svg_pin = ``;\n\t\t\t\t\t\tconst svgpin_Url = encodeURI(\"data:image/svg+xml;utf-8,\" + svg_pin);\n\t\t\t\t\t\tfoundnode.data(\"image\", svgpin_Url);\n\t\t\t\t\t\tfoundnode.data(\"imageColor\", iconInfo.iconBackgroundColor);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Send it in here, after all fields are filled\n\t\t// Disabled for now :(\n\t\t// const aiMsg = \"Fill based on previous values\"\n\t\t// aiSubmit(aiMsg, undefined, undefined, newSelectedAction)\n\t};\n\n // APPSELECT at top\n // appname & version\n // description\n // ACTION select\n const selectedNameChange = (event) => {\n event.target.value = event.target.value.replaceAll(\"(\", \"\");\n event.target.value = event.target.value.replaceAll(\")\", \"\");\n event.target.value = event.target.value.replaceAll(\"]\", \"\");\n event.target.value = event.target.value.replaceAll(\"[\", \"\");\n event.target.value = event.target.value.replaceAll(\"{\", \"\");\n event.target.value = event.target.value.replaceAll(\"}\", \"\");\n event.target.value = event.target.value.replaceAll(\"*\", \"\");\n event.target.value = event.target.value.replaceAll(\"!\", \"\");\n event.target.value = event.target.value.replaceAll(\"@\", \"\");\n event.target.value = event.target.value.replaceAll(\"#\", \"\");\n event.target.value = event.target.value.replaceAll(\"$\", \"\");\n event.target.value = event.target.value.replaceAll(\"%\", \"\");\n event.target.value = event.target.value.replaceAll(\"&\", \"\");\n event.target.value = event.target.value.replaceAll(\"#\", \"\");\n event.target.value = event.target.value.replaceAll(\".\", \"\");\n event.target.value = event.target.value.replaceAll(\",\", \"\");\n event.target.value = event.target.value.replaceAll(\" \", \"_\");\n event.target.value = event.target.value.replaceAll(\"^\", \"_\");\n event.target.value = event.target.value.replaceAll(\"'\", \"_\");\n event.target.value = event.target.value.replaceAll(\"\\\"\", \"_\");\n event.target.value = event.target.value.replaceAll(\"\\\\\", \"_\");\n event.target.value = event.target.value.replaceAll(\":\", \"_\");\n event.target.value = event.target.value.replaceAll(\";\", \"_\");\n event.target.value = event.target.value.replaceAll(\"=\", \"_\");\n event.target.value = event.target.value.replaceAll(\"+\", \"_\");\n\n selectedAction.label = event.target.value;\n setSelectedAction(selectedAction);\n };\n\n const actionDelayChange = (event) => {\n if (isNaN(event.target.value)) {\n console.log(\"NAN: \", event.target.value)\n return\n }\n\n const parsedNumber = parseInt(event.target.value)\n if (parsedNumber > 86400) {\n console.log(\"Max number is 1 day (86400)\")\n return\n }\n\n selectedAction.execution_delay = parsedNumber\n setSelectedAction(selectedAction)\n }\n\n const selectedTriggerChange = (event) => {\n selectedTrigger.label = event.target.value;\n setSelectedTrigger(selectedTrigger);\n };\n\n // Starts on current node and climbs UP the tree to the root object.\n // Sends back everything in it's path\n const getParents = (action) => {\n if (action === undefined || action === null) {\n return []\n }\n\n var allkeys = [action.id];\n var handled = [];\n var results = [];\n\n // maxiter = max amount of parent nodes to loop\n // also handles breaks if there are issues\n var iterations = 0;\n var maxiter = 10;\n while (true) {\n for (let parentkey in allkeys) {\n var currentnode = cy.getElementById(allkeys[parentkey]);\n if (currentnode === undefined || currentnode === null) {\n continue;\n }\n\n if (currentnode.data() === undefined) {\n handled.push(allkeys[parentkey]);\n results.push({ id: allkeys[parentkey], type: \"TRIGGER\" });\n } else {\n if (handled.includes(currentnode.data().id)) {\n continue;\n } else {\n handled.push(currentnode.data().id);\n results.push(currentnode.data());\n }\n }\n\n // Get the name / label here too?\n if (currentnode.length === 0) {\n continue;\n }\n\n const incomingEdges = currentnode.incomers(\"edge\");\n if (incomingEdges.length === 0) {\n continue;\n }\n\n for (let i = 0; i < incomingEdges.length; i++) {\n var tmp = incomingEdges[i];\n if (tmp.data(\"decorator\")) {\n continue\n }\n\n if (!allkeys.includes(tmp.data(\"source\"))) {\n allkeys.push(tmp.data(\"source\"));\n }\n }\n }\n\n if (results.length === allkeys.length || iterations === maxiter) {\n break;\n }\n\n iterations += 1;\n }\n\n // Remove on the end as we don't want to remove everything\n results = results.filter((data) => data.id !== action.id);\n results = results.filter((data) => data.type === \"ACTION\" || data.app_name === \"Shuffle Workflow\" || data.app_name === \"User Input\");\n results.push({ label: \"Execution Argument\", type: \"INTERNAL\" });\n return results;\n };\n\n // BOLD name: type: required?\n // FORM\n // Dropdown -> static, action, local env, global env\n // VALUE (JSON)\n // {data.name}, {data.description}, {data.required}, {data.schema.type}\n\n //height: \"100%\",\n const appApiViewStyle = {\n display: \"flex\",\n flexDirection: \"column\",\n backgroundColor: \"#1F2023\",\n color: \"white\",\n paddingRight: 15,\n paddingLeft: 15,\n minHeight: \"100%\",\n zIndex: 1000,\n resize: \"vertical\",\n overflow: \"auto\",\n };\n\n var rightsidebarStyle = {\n position: \"fixed\",\n top: appBarSize + 25,\n right: 25,\n height: \"80vh\",\n width: isMobile ? \"100%\" : 365,\n minWidth: 200,\n maxWidth: 600,\n maxHeight: \"100vh\",\n border: \"1px solid rgb(91, 96, 100)\",\n zIndex: 1000,\n borderRadius: theme.palette.borderRadius,\n resize: \"both\",\n overflow: \"auto\",\n };\n\n const setTriggerFolderWrapperMulti = (event) => {\n const { options } = event.target;\n var value = [];\n for (let i = 0, l = options.length; i < l; i += 1) {\n if (options[i].selected) {\n value.push(options[i].value);\n }\n }\n\n if (selectedTrigger.parameters === null) {\n selectedTrigger.parameters = [[]];\n workflow.triggers[selectedTriggerIndex].parameters = [[]];\n }\n\n // Max 1 folder for office for some reason. MailFolders('MAILBOX_ID') in resource \n // Can't parse URL with multiple folders.\n if (selectedTrigger.name === \"Office365\" & value !== undefined && value !== null && value.length > 1) {\n alert.info(\"Max 1 folder at a time allowed for Office365\")\n console.log(\"VALUE: \", value)\n value = [value[0]]\n }\n\n // This is a dirty workaround for the static values in the go backend and datastore db\n const fixedValue = value.join(splitter);\n selectedTrigger.parameters[0] = {\n value: fixedValue,\n name: \"outlookfolder\",\n };\n workflow.triggers[selectedTriggerIndex].parameters[0] = {\n value: fixedValue,\n name: \"outlookfolder\",\n };\n\n // This resets state for some reason (:\n setSelectedAction({});\n setSelectedTrigger({});\n setSelectedApp({});\n setSelectedEdge({});\n\n // Set value\n setSelectedTrigger(selectedTrigger);\n setWorkflow(workflow);\n };\n\n const setTriggerCronWrapper = (value) => {\n console.log(\"Cron Value: \", value)\n if (selectedTrigger.parameters === null) {\n selectedTrigger.parameters = [];\n }\n\n workflow.triggers[selectedTriggerIndex].parameters[0] = {\n value: value,\n name: \"cron\",\n };\n setWorkflow(workflow);\n };\n\n const setTriggerOptionsWrapper = (value) => {\n if (selectedTrigger.parameters === null) {\n selectedTrigger.parameters = [];\n }\n\n const splitItems = workflow.triggers[selectedTriggerIndex].parameters[2].value.split(\",\");\n \n console.log(splitItems);\n if (splitItems.includes(value)) {\n for (let i = 0; i < splitItems.length; i++) {\n if (splitItems[i] === value) {\n splitItems.splice(i, 1);\n }\n }\n } else {\n splitItems.push(value);\n }\n\n for (let i = 0; i < splitItems.length; i++) {\n if (splitItems[i] === \"\") {\n splitItems.splice(i, 1);\n }\n }\n\n workflow.triggers[selectedTriggerIndex].parameters[2].value = splitItems.join(\",\");\n\n setWorkflow(workflow);\n setLocalFirstrequest(!localFirstrequest);\n\t\tsetUpdate(Math.random());\n };\n\n const setTriggerTextInformationWrapper = (value) => {\n if (selectedTrigger.parameters === null) {\n selectedTrigger.parameters = [];\n }\n\n workflow.triggers[selectedTriggerIndex].parameters[0] = {\n value: value,\n name: \"alertinfo\",\n };\n setWorkflow(workflow);\n };\n\n const setTriggerBodyWrapper = (value) => {\n if (selectedTrigger.parameters === null) {\n selectedTrigger.parameters = [];\n workflow.triggers[selectedTriggerIndex].parameters[0] = {\n value: value,\n name: \"cron\",\n };\n }\n\n workflow.triggers[selectedTriggerIndex].parameters[1] = {\n value: value,\n name: \"execution_argument\",\n };\n setWorkflow(workflow);\n };\n\n const AppConditionHandler = (props) => {\n const { tmpdata, type } = props;\n const [data] = useState(tmpdata);\n const [multiline, setMultiline] = useState(false);\n const [showAutocomplete, setShowAutocomplete] = React.useState(false);\n const [actionlist, setActionlist] = React.useState([]);\n\n if (tmpdata === undefined) {\n return tmpdata;\n }\n\n if (data.variant === \"\") {\n data.variant = \"STATIC_VALUE\";\n }\n\n // Set actions based on NEXT node, since it should be able to involve those two\n if (actionlist.length === 0) {\n // FIXME: Have previous execution values in here\n actionlist.push({\n type: \"Execution Argument\",\n name: \"Execution Argument\",\n value: \"$exec\",\n highlight: \"exec\",\n autocomplete: \"exec\",\n example: \"tmp\",\n })\n actionlist.push({\n type: \"Shuffle DB\",\n name: \"Shuffle DB\",\n value: \"$shuffle_cache\",\n highlight: \"shuffle_cache\",\n autocomplete: \"shuffle_cache\",\n example: \"tmp\",\n })\n\n if (workflow.workflow_variables !== null && workflow.workflow_variables !== undefined && workflow.workflow_variables.length > 0) {\n for (let varkey in workflow.workflow_variables) {\n const item = workflow.workflow_variables[varkey];\n actionlist.push({\n type: \"workflow_variable\",\n name: item.name,\n value: item.value,\n id: item.id,\n autocomplete: `${item.name.split(\" \").join(\"_\")}`,\n example: item.value,\n });\n }\n }\n\n // FIXME: Add values from previous executions if they exist\n if (\n workflow.execution_variables !== null &&\n workflow.execution_variables !== undefined &&\n workflow.execution_variables.length > 0\n ) {\n for (let varkey in workflow.execution_variables) {\n const item = workflow.execution_variables[varkey];\n actionlist.push({\n type: \"execution_variable\",\n name: item.name,\n value: item.value,\n id: item.id,\n autocomplete: `${item.name.split(\" \").join(\"_\")}`,\n example: \"\",\n });\n }\n }\n\n const destAction = cy.getElementById(selectedEdge.target);\n var parents = getParents(destAction.data());\n if (parents.length > 1) {\n for (let parentkey in parents) {\n const item = parents[parentkey];\n if (item.label === \"Execution Argument\") {\n continue;\n }\n\n // 1. Take\n const actionvalue = {\n type: \"action\",\n id: item.id,\n name: item.label,\n autocomplete: `${item.label.split(\" \").join(\"_\")}`,\n example: item.example === undefined ? \"\" : item.example,\n };\n actionlist.push(actionvalue);\n }\n }\n\n setActionlist(actionlist);\n }\n\n if (\n data.multiline !== undefined &&\n data.multiline !== null &&\n data.multiline === true\n ) {\n setMultiline(true);\n }\n\n var placeholder = \"Static value\";\n if (\n data.example !== undefined &&\n data.example !== null &&\n data.example.length > 0\n ) {\n placeholder = data.example;\n }\n\n var datafield = (\n \n Use \"Shuffle Tools\" app with \"Filter List\" action to handle loops\n \n ) : null\n }\n onBlur={(e) => {\n changeActionVariable(data.action_field, e.target.value);\n setUpdate(Math.random());\n }}\n />\n );\n\n const changeActionVariable = (variable, value) => {\n // set the name\n data.value = value;\n data.action_field = variable;\n\n if (type === \"source\") {\n setSourceValue(data);\n } else if (type === \"destination\") {\n setDestinationValue(data);\n }\n };\n\n return (\n
    \n \n \n
    \n {data.name} \n
    \n
    \n {datafield}\n {actionlist.length === 0 ? null : (\n \n \n Autocomplete\n \n {\n setShowAutocomplete(false);\n\n setUpdate(Math.random());\n }}\n onClick={() => {\n setShowAutocomplete(true);\n }}\n open={showAutocomplete}\n fullWidth\n style={{\n borderBottom: `1px solid #f85a3e`,\n color: \"white\",\n height: 50,\n marginTop: 2,\n }}\n onChange={(e) => {\n const autocomplete = e.target.value.autocomplete;\n const newValue = autocomplete.startsWith(\"$\")\n ? data.value + autocomplete\n : `${data.value}$${autocomplete}`;\n changeActionVariable(data.action_field, newValue);\n }}\n >\n {actionlist.map((data) => {\n const icon =\n data.type === \"action\" ? (\n \n ) : data.type === \"workflow_variable\" ||\n data.type === \"execution_variable\" ? (\n \n ) : (\n \n );\n\n const handleExecArgumentHover = (inside) => {\n var exec_text_field = document.getElementById(\n \"execution_argument_input_field\"\n );\n if (exec_text_field !== null) {\n if (inside) {\n exec_text_field.style.border = \"2px solid #f85a3e\";\n } else {\n exec_text_field.style.border = \"\";\n }\n }\n\n // Also doing arguments\n if (\n workflow.triggers !== undefined &&\n workflow.triggers !== null &&\n workflow.triggers.length > 0\n ) {\n for (let triggerkey in workflow.triggers) {\n const item = workflow.triggers[triggerkey];\n\n var node = cy.getElementById(item.id);\n if (node.length > 0) {\n if (inside) {\n node.addClass(\"shuffle-hover-highlight\");\n } else {\n node.removeClass(\"shuffle-hover-highlight\");\n }\n }\n }\n }\n };\n\n const handleActionHover = (inside, actionId) => {\n var node = cy.getElementById(actionId);\n console.log(\"Hovering over action: \" + actionId)\n if (node.length > 0) {\n if (inside) {\n console.log(\"Hovering over action: \" + actionId)\n node.addClass(\"shuffle-hover-highlight\");\n } else {\n node.removeClass(\"shuffle-hover-highlight\");\n }\n }\n };\n\n return (\n {\n if (data.type === \"Execution Argument\") {\n handleExecArgumentHover(true);\n } else if (data.type === \"action\") {\n handleActionHover(true, data.id);\n }\n }}\n onMouseOut={() => {\n if (data.type === \"Execution Argument\") {\n handleExecArgumentHover(false);\n } else if (data.type === \"action\") {\n handleActionHover(false, data.id);\n }\n }}\n >\n \n
    \n {icon} {data.name}\n
    \n \n \n );\n })}\n \n
    \n )}\n \n );\n };\n\n const menuItemStyle = {\n color: \"white\",\n backgroundColor: inputColor,\n };\n\n const conditionsModal = (\n {\n }}\n >\n \n Conditions can't be used for loops [ .# ]{\" \"}\n \n Learn more\n \n \n \n \n Condition\n \n \n
    \n \n \n {\n conditionValue.configuration =\n !conditionValue.configuration;\n setConditionValue(conditionValue);\n setUpdate(Math.random());\n }}\n >\n {conditionValue.configuration ? \"!\" : \"=\"}\n \n \n \n
    \n \n
    \n \n {\n setVariableAnchorEl(e.currentTarget);\n }}\n >\n {conditionValue.value}\n \n {\n setVariableAnchorEl(null);\n }}\n >\n {\n conditionValue.value = \"equals\";\n setConditionValue(conditionValue);\n setVariableAnchorEl(null);\n }}\n key={\"equals\"}\n >\n equals\n \n {\n conditionValue.value = \"does not equal\";\n setConditionValue(conditionValue);\n setVariableAnchorEl(null);\n }}\n key={\"does not equal\"}\n >\n does not equal\n \n {\n conditionValue.value = \"startswith\";\n setConditionValue(conditionValue);\n setVariableAnchorEl(null);\n }}\n key={\"starts with\"}\n >\n starts with\n \n {\n conditionValue.value = \"endswith\";\n setConditionValue(conditionValue);\n setVariableAnchorEl(null);\n }}\n key={\"ends with\"}\n >\n ends with\n \n {\n conditionValue.value = \"contains\";\n setConditionValue(conditionValue);\n setVariableAnchorEl(null);\n }}\n key={\"contains\"}\n >\n contains\n \n {\n conditionValue.value = \"contains_any_of\";\n setConditionValue(conditionValue);\n setVariableAnchorEl(null);\n }}\n key={\"contains_any_of\"}\n >\n contains any of\n \n {\n conditionValue.value = \"matches regex\";\n setConditionValue(conditionValue);\n setVariableAnchorEl(null);\n }}\n key={\"matches regex\"}\n >\n matches regex\n \n {\n conditionValue.value = \"larger than\";\n setConditionValue(conditionValue);\n setVariableAnchorEl(null);\n }}\n key={\"larger than\"}\n >\n larger than\n \n {\n conditionValue.value = \"less than\";\n setConditionValue(conditionValue);\n setVariableAnchorEl(null);\n }}\n key={\"less than\"}\n >\n less than\n \n {\n conditionValue.value = \"is empty\";\n setConditionValue(conditionValue);\n setVariableAnchorEl(null);\n }}\n key={\"is empty\"}\n >\n is empty\n \n \n
    \n
    \n \n
    \n \n
    \n \n {\n setConditionsModalOpen(false);\n setSourceValue({});\n setConditionValue({});\n setDestinationValue({});\n }}\n color=\"secondary\"\n >\n Cancel\n \n {\n setSelectedEdge({});\n\n var data = {\n condition: conditionValue,\n source: sourceValue,\n destination: destinationValue,\n };\n\n setConditionsModalOpen(false);\n if (selectedEdge.conditions === undefined) {\n selectedEdge.conditions = [data];\n } else {\n const curedgeindex = selectedEdge.conditions.findIndex(\n (data) => data.source.id === sourceValue.id\n );\n if (curedgeindex < 0) {\n selectedEdge.conditions.push(data);\n } else {\n selectedEdge.conditions[curedgeindex] = data;\n }\n }\n\n var label = \"\";\n if (selectedEdge.conditions.length === 1) {\n label = selectedEdge.conditions.length + \" condition\";\n } else if (selectedEdge.conditions.length > 1) {\n label = selectedEdge.conditions.length + \" conditions\";\n }\n\n var currentedge = cy.getElementById(selectedEdge.id);\n if (currentedge !== undefined && currentedge !== null && label !== undefined) {\n currentedge.data(\"label\", label)\n //.label = label;\n //oldstartnode[0].data(\"isStartNode\", false);\n }\n\n setSelectedEdge(selectedEdge);\n workflow.branches[selectedEdgeIndex] = selectedEdge;\n setWorkflow(workflow);\n }}\n color=\"primary\"\n >\n Submit\n \n \n
    \n \n );\n\n const EdgeSidebar = () => {\n const ConditionHandler = (condition, index) => {\n const [open, setOpen] = React.useState(false);\n const [anchorEl, setAnchorEl] = React.useState(null);\n\n const duplicateCondition = (conditionIndex) => {\n var newEdge = JSON.parse(\n JSON.stringify(selectedEdge.conditions[conditionIndex])\n );\n const newUuid = uuidv4();\n newEdge.condition.id = newUuid;\n newEdge.source.id = newUuid;\n newEdge.destination.id = newUuid;\n selectedEdge.conditions.push(newEdge);\n\n setUpdate(Math.random());\n };\n\n const deleteCondition = (conditionIndex) => {\n console.log(selectedEdge);\n if (selectedEdge.conditions.length === 1) {\n selectedEdge.conditions = [];\n } else {\n selectedEdge.conditions.splice(conditionIndex, 1);\n }\n\n setSelectedEdge(selectedEdge);\n setOpen(false);\n setUpdate(Math.random());\n };\n\n const paperVariableStyle = {\n minHeight: 75,\n maxHeight: 75,\n minWidth: \"100%\",\n maxWidth: \"100%\",\n marginTop: \"5px\",\n color: \"white\",\n backgroundColor: surfaceColor,\n cursor: \"pointer\",\n display: \"flex\",\n };\n\n const menuClick = (event) => {\n console.log(\"MENU CLICK\");\n setOpen(!open);\n setAnchorEl(event.currentTarget);\n };\n\n return (\n { }}\n >\n \n
    \n {\n setSourceValue(condition.source);\n setConditionValue(condition.condition);\n setDestinationValue(condition.destination);\n setConditionsModalOpen(true);\n }}\n >\n \n {condition.source.value}\n
    \n \n { }}\n >\n {condition.condition.value}\n \n \n \n {condition.destination.value}\n \n \n
    \n \n \n \n {\n setOpen(false);\n setAnchorEl(null);\n }}\n >\n {\n duplicateCondition(index);\n }}\n key={\"Duplicate\"}\n >\n {\"Duplicate\"}\n \n {\n setOpen(false);\n deleteCondition(index);\n }}\n key={\"Delete\"}\n >\n {\"Delete\"}\n \n \n
    \n \n \n );\n };\n\n var injectedData =
    ;\n\n if (selectedEdge.conditions !== undefined && selectedEdge.conditions !== null && selectedEdge.conditions.length > 0) {\n injectedData = selectedEdge.conditions.map((condition, index) => {\n return ConditionHandler(condition, index);\n });\n }\n\n\t\t// Startnode = dest node\n\t\tconst conditionsDisabled = false\n\n const conditionId = uuidv4();\n return (\n
    \n
    \n
    \n

    \n Branch: Conditions - {selectedEdgeIndex}\n

    \n \n What are conditions?\n \n
    \n
    \n \n
    Conditions
    \n {injectedData}\n\n {\n if (conditionsModalOpen) {\n return\n }\n\n setSourceValue({\n name: \"source\",\n value: \"\",\n variant: \"STATIC_VALUE\",\n action_field: \"\",\n id: conditionId,\n });\n setConditionValue({\n name: \"condition\",\n value: \"equals\",\n id: conditionId,\n });\n setDestinationValue({\n name: \"destination\",\n value: \"\",\n variant: \"STATIC_VALUE\",\n action_field: \"\",\n id: conditionId,\n });\n\n setConditionsModalOpen(true);\n }}\n fullWidth\n >\n New condition\n \n\n\t\t\t\t{/* Check if dest is the same as start */}\n\t\t\t\t{conditionsDisabled ? \n\t\t\t\t\t\n\t\t\t\t\t\tConditions are unavailable between triggers and the startnode.\n\t\t\t\t\t\n\t\t\t\t: null}\n
    \n );\n };\n\n // 1. GET the trigger authentication data\n // 2. Parse the fields that are used (outlook & gmail)\n // 3. Parse the folders that are selected\n // 4. Start / stop\n const EmailSidebar = () => {\n if (Object.getOwnPropertyNames(selectedTrigger).length === 0) {\n return null;\n }\n\n if (workflow.triggers[selectedTriggerIndex] === undefined) {\n return null;\n }\n\n if (\n workflow.triggers[selectedTriggerIndex].parameters === undefined ||\n workflow.triggers[selectedTriggerIndex].parameters === null ||\n workflow.triggers[selectedTriggerIndex].parameters.length === 0\n ) {\n workflow.triggers[selectedTriggerIndex].parameters = [\n { value: \"No folders selected yet\", name: \"outlookfolder\" },\n ];\n selectedTrigger.parameters = [\n { value: \"No folders selected yet\", name: \"outlookfolder\" },\n ];\n setWorkflow(workflow);\n setSelectedTrigger(selectedTrigger);\n }\n\n const setGmailFolders = () => {\n console.log(\"In set gmail folders\");\n fetch(\n globalUrl +\n \"/api/v1/triggers/gmail/getFolders?trigger_id=\" +\n selectedTrigger.id,\n {\n method: \"GET\",\n headers: { \"content-type\": \"application/json\" },\n credentials: \"include\",\n }\n )\n .then((response) => {\n if (response.status !== 200) {\n throw new Error(\"No folders :o!\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n if (\n responseJson !== undefined &&\n responseJson !== null &&\n responseJson.success !== false &&\n responseJson.length > 0\n ) {\n setTriggerFolders(responseJson);\n }\n\n if (\n workflow.triggers[selectedTriggerIndex].parameters.length === 0 &&\n responseJson.length > 0\n ) {\n workflow.triggers[selectedTriggerIndex].parameters = [\n {\n value: responseJson[0].displayName,\n name: \"outlookfolder\",\n id: responseJson[0].id,\n },\n ];\n selectedTrigger.parameters = [\n {\n value: responseJson[0].displayName,\n name: \"outlookfolder\",\n id: responseJson[0].id,\n },\n ];\n setWorkflow(workflow);\n setSelectedTrigger(selectedTrigger);\n }\n })\n .catch((error) => {\n console.log(\"Get gmail folder error: \", error.toString());\n });\n };\n\n const setOutlookFolders = () => {\n fetch(\n globalUrl +\n \"/api/v1/triggers/outlook/getFolders?trigger_id=\" +\n selectedTrigger.id,\n {\n method: \"GET\",\n headers: { \"content-type\": \"application/json\" },\n credentials: \"include\",\n }\n )\n .then((response) => {\n if (response.status !== 200) {\n throw new Error(\"No folders :o!\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n if (\n responseJson !== null &&\n responseJson.success !== false &&\n responseJson.length > 0\n ) {\n console.log(\"Got trigger folders: \", triggerFolders)\n setTriggerFolders(responseJson);\n }\n\n if (\n workflow.triggers[selectedTriggerIndex].parameters.length === 0 &&\n responseJson.length > 0\n ) {\n workflow.triggers[selectedTriggerIndex].parameters = [\n {\n value: responseJson[0].displayName,\n name: \"outlookfolder\",\n id: responseJson[0].id,\n },\n ]\n selectedTrigger.parameters = [\n {\n value: responseJson[0].displayName,\n name: \"outlookfolder\",\n id: responseJson[0].id,\n },\n ];\n setWorkflow(workflow);\n setSelectedTrigger(selectedTrigger);\n }\n })\n .catch((error) => {\n console.log(\"Get outlook folders error: \", error.toString());\n });\n };\n\n const getTriggerAuth = () => {\n fetch(`${globalUrl}/api/v1/triggers/${selectedTrigger.id}`, {\n method: \"GET\",\n headers: { \"content-type\": \"application/json\" },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n throw new Error(\"No trigger info :o!\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n\n setTriggerAuthentication(responseJson);\n })\n .catch((error) => {\n //console.log(error.toString());\n console.log(\"Set trigger auth error: \", error.toString());\n });\n };\n\n // Getting the triggers and the folders if they exist\n if (localFirstrequest) {\n //console.log(\"Trigger: \", selectedTrigger)\n //console.log(\"Triggername: \", selectedTrigger.name)\n //if (selectedTrigger.name.toLowerCase() === \"gmail\") {\n setGmailFolders();\n setOutlookFolders();\n\n getTriggerAuth();\n setLocalFirstrequest(false);\n }\n\n const gmailButton =\n selectedTrigger.name !== \"Gmail\" ? null : (\n {\n console.log(\"HOST: \", window.location.host);\n console.log(\"HOST: \", window.location);\n const redirectUri = isCloud\n ? window.location.host === \"localhost:3002\"\n ? \"http%3A%2F%2Flocalhost:5002%2Fapi%2Fv1%2Ftriggers%2Fgmail%2Fregister\"\n : \"https%3A%2F%2Fshuffler.io%2Fapi%2Fv1%2Ftriggers%2Fgmail%2Fregister\"\n : window.location.protocol === \"http:\" ?\n `http%3A%2F%2F${window.location.host}%2Fapi%2Fv1%2Ftriggers%2Fgmail%2Fregister`\n :\n `https%3A%2F%2F${window.location.host}%2Fapi%2Fv1%2Ftriggers%2Fgmail%2Fregister`\n\n const client_id =\n \"253565968129-c0a35knic7q1pdk6i6qk9gdkvr07ci49.apps.googleusercontent.com\";\n const username = userdata.id;\n console.log(redirectUri);\n console.log(\"USER: \", username, userdata);\n\n const branch = workflow.branches.find(\n (branch) => branch.source_id === selectedTrigger.id\n );\n if (branch === undefined || branch === null) {\n alert.error(\n \"No startnode connected to node. Connect it to an action.\"\n );\n return;\n }\n\n console.log(\"BRANCH: \", branch);\n const startnode = branch.destination_id;\n const scopes = \"https://www.googleapis.com/auth/gmail.readonly\";\n const url = `https://accounts.google.com/o/oauth2/v2/auth?access_type=offline&prompt=consent&client_id=${client_id}&redirect_uri=${redirectUri}&response_type=code&scope=${scopes}&state=workflow_id%3D${props.match.params.key}%26trigger_id%3D${selectedTrigger.id}%26username%3D${username}%26type%3Dgmail%26start%3d${startnode}`;\n console.log(\"URL: \", url);\n\n var newwin = window.open(url, \"\", \"width=800,height=600\");\n\n // Check whether we got a callback somewhere\n var id = setInterval(function () {\n fetch(\n `${globalUrl}/api/v1/triggers/${selectedTrigger.id}`,\n {\n method: \"GET\",\n headers: { \"content-type\": \"application/json\" },\n credentials: \"include\",\n }\n )\n .then((response) => {\n if (response.status !== 200) {\n throw new Error(\"No trigger info :o!\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n //console.log(\"RESPONSE: \");\n setTriggerAuthentication(responseJson);\n clearInterval(id);\n newwin.close();\n setGmailFolders();\n })\n .catch((error) => {\n console.log(\"Set gmail trigg error: \", error.toString());\n });\n }, 2500);\n\n saveWorkflow(workflow);\n }}\n >\n \n \n Sign in with Google\n \n \n );\n\n const outlookButton =\n selectedTrigger.name !== \"Office365\" ? null : (\n {\n console.log(window.location)\n const redirectUri = isCloud\n ? window.location.host === \"localhost:3002\"\n ? \"http%3A%2F%2Flocalhost:5002%2Fapi%2Fv1%2Ftriggers%2Foutlook%2Fregister\"\n : \"https%3A%2F%2Fshuffler.io%2Fapi%2Fv1%2Ftriggers%2Foutlook%2Fregister\"\n : window.location.protocol === \"http:\" ?\n `http%3A%2F%2F${window.location.host}%2Fapi%2Fv1%2Ftriggers%2Foutlook%2Fregister`\n :\n `https%3A%2F%2F${window.location.host}%2Fapi%2Fv1%2Ftriggers%2Foutlook%2Fregister`\n\n //const client_id = \"fd55c175-aa30-4fa6-b303-09a29fb3f750\"\n //const client_id = \"bb4bff85-0d0b-4f5d-8a69-3cee8029b11a\";\n const client_id = \"efe4c3fe-84a1-4821-a84f-23a6cfe8e72d\";\n\n const username = userdata.id;\n console.log(redirectUri);\n console.log(\"USER: \", username, userdata);\n\n const branch = workflow.branches.find(\n (branch) => branch.source_id === selectedTrigger.id\n );\n if (branch === undefined || branch === null) {\n alert.error(\n \"No startnode connected to node. Connect it to an action.\"\n );\n return;\n }\n\n console.log(\"BRANCH: \", branch);\n const startnode = branch.destination_id;\n // prompt=login\n const url = `https://login.microsoftonline.com/common/oauth2/authorize?access_type=offline&client_id=${client_id}&redirect_uri=${redirectUri}&resource=https%3A%2F%2Fgraph.microsoft.com&response_type=code&scope=Mail.Read+User.Read+https%3A%2F%2Foutlook.office.com%2Fmail.read&state=workflow_id%3D${props.match.params.key}%26trigger_id%3D${selectedTrigger.id}%26username%3D${username}%26type%3Doutlook%26start%3d${startnode}`;\n //const url = `https://accounts.google.com/o/oauth2/v2/auth?access_type=offline&prompt=consent&client_id=${client_id}&redirect_uri=${redirectUri}&response_type=code&scope=${scopes}&state=workflow_id%3D${props.match.params.key}%26trigger_id%3D${selectedTrigger.id}%26username%3D${username}%26type%3Dgmail%26start%3d${startnode}`\n\n //const scopes = \"https://www.googleapis.com/auth/gmail.readonly\"\n //const url = `https://accounts.google.com/o/oauth2/v2/auth?access_type=offline&prompt=consent&client_id=${client_id}&redirect_uri=${redirectUri}&response_type=code&scope=${scopes}&state=workflow_id%3D${props.match.params.key}%26trigger_id%3D${selectedTrigger.id}%26username%3D${username}%26type%3Dgmail%26start%3d${startnode}`\n\n console.log(\"URL: \", url);\n\n var newwin = window.open(url, \"\", \"width=800,height=600\");\n\n // Check whether we got a callback somewhere\n var id = setInterval(function () {\n fetch(\n `${globalUrl}/api/v1/triggers/${selectedTrigger.id}`,\n {\n method: \"GET\",\n headers: { \"content-type\": \"application/json\" },\n credentials: \"include\",\n }\n )\n .then((response) => {\n if (response.status !== 200) {\n throw new Error(\"No trigger info :o!\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n setTriggerAuthentication(responseJson);\n clearInterval(id);\n newwin.close();\n setOutlookFolders();\n })\n .catch((error) => {\n console.log(\"Set outlook trigger error: \", error.toString());\n });\n }, 2500);\n\n saveWorkflow(workflow);\n }}\n >\n \n \n Sign in with Microsoft\n \n \n );\n\n // FIXME - set everything in here to multifolder etc\n var triggerInfo = \"SET UP BUT NO TYPE :)\";\n if (Object.getOwnPropertyNames(triggerAuthentication).length > 0) {\n // Should get the folders if they don't already exist\n\n if (\n triggerAuthentication.type === \"outlook\" ||\n triggerAuthentication.type === \"gmail\"\n ) {\n triggerInfo = (\n
    \n {selectedTrigger.status === \"running\" ? null : (\n \n \n \n
    \n Change auth \n
    \n
    \n {outlookButton}\n {gmailButton}\n \n If you have trouble using this trigger, please contact us to get access\n \n \n )}\n\n {triggerFolders === undefined || triggerFolders === null ? null : (\n \n \n \n
    \n Select {triggerAuthentication.type === \"gmail\" ? \"labels\" : \"a folder\"}\n
    \n \n {triggerFolders.length === 0 ?\n \n No folders found. Please authenticate and make sure the user has access folders available. If this persists, contact us.\n \n :\n {\n setTriggerFolderWrapperMulti(e)\n }}\n fullWidth\n input={}\n key={selectedTrigger}\n >\n {triggerFolders.map((folder) => {\n var folderItem = (\n \n {folder.displayName}\n \n );\n\n if (folder.childFolderCount > 0) {\n // Here to handle subfolders sometime later\n folderItem = (\n \n {folder.displayName}\n \n );\n }\n\n return folderItem;\n })}\n \n }\n
    \n )}\n \n );\n } else if (triggerAuthentication.type === \"gmail\") {\n console.log(\"AUTH: \", triggerAuthentication);\n triggerInfo = \"SPECIAL GMAIL\";\n }\n }\n\n // Check\n const argumentView =\n Object.getOwnPropertyNames(triggerAuthentication).length > 0 ? (\n
    {triggerInfo}
    \n ) : (\n
    \n \n \n
    \n Login\n
    \n
    \n {outlookButton}\n {gmailButton}\n \n If you have trouble using this trigger, please {\n if (window.drift !== undefined) {\n window.drift.api.startInteraction({ interactionId: 340043 })\n } else {\n console.log(\"Couldn't find drift in window.drift and not .drift-open-chat with querySelector: \", window.drift)\n }\n }}>contact us to get access\n \n \n );\n\n return (\n
    \n
    \n
    \n

    \n {selectedTrigger.app_name}: {selectedTrigger.status}\n

    \n \n What are email triggers?\n \n
    \n
    \n \n
    Name
    \n \n\n
    \n Environment:\n \n
    \n \n {argumentView}\n
    \n
    \n \n \n {\n startMailSub(selectedTrigger, selectedTriggerIndex);\n }}\n color=\"primary\"\n >\n Start\n \n {\n stopMailSub(selectedTrigger, selectedTriggerIndex);\n }}\n color=\"primary\"\n >\n Stop\n \n
    \n
    \n
    \n \n );\n };\n\n\tconst handleWorkflowSelectionUpdate = (e, isUserinput) => {\n\t\tsetUpdate(Math.random());\n\n\t\tif (e.target.value === undefined || e.target.value === null || e.target.value.id === undefined) {\n\t\t\tconsole.log(\"Returning as there's no id\")\n\t\t\treturn null\n\t\t}\n\n\t\tconst paramIndex = isUserinput === true ? 5 : 0\n\t\tworkflow.triggers[selectedTriggerIndex].parameters[paramIndex].value = e.target.value.id;\n\t\tsetSubworkflow(e.target.value);\n\n\t\t// Sets the startnode\n\t\tif (e.target.value.id !== workflow.id) {\n\t\t\tconsole.log(\"WORKFLOW: \", e.target.value);\n\n\t\t\tconst startnode = e.target.value.actions.find((action) => action.id === e.target.value.start);\n\t\t\t\n\n\t\t\tif (startnode !== undefined && startnode !== null) {\n\t\t\t\tsetSubworkflowStartnode(startnode);\n\n\t\t\t\tif (paramIndex === 0) { \n\t\t\t\t\ttry {\n\t\t\t\t\t\tworkflow.triggers[selectedTriggerIndex].parameters[3].value = startnode.id;\n\t\t\t\t\t} catch {\n\t\t\t\t\t\tworkflow.triggers[selectedTriggerIndex].parameters[3] = {\n\t\t\t\t\t\t\tname: \"startnode\",\n\t\t\t\t\t\t\tvalue: startnode.id,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t//setWorkflow(workflow);\n\t\t\t}\n\t\t\tconsole.log(\"STARTNODE: \", startnode);\n\t\t} else {\n\t\t\tconsole.log(\"WORKFLOW: \", workflow);\n\t\t}\n\n\t\tsetWorkflow(workflow);\n\t}\n\n const SubflowSidebar = () => {\n const [menuPosition, setMenuPosition] = useState(null);\n const [showDropdown, setShowDropdown] = React.useState(false);\n const [actionlist, setActionlist] = React.useState([]);\n\n if (actionlist.length === 0) {\n // FIXME: Have previous execution values in here\n actionlist.push({\n type: \"Execution Argument\",\n name: \"Execution Argument\",\n value: \"$exec\",\n highlight: \"exec\",\n autocomplete: \"exec\",\n example: \"hello\",\n })\n actionlist.push({\n type: \"Shuffle Database\",\n name: \"Shuffle Database\",\n value: \"$shuffle_cache\",\n highlight: \"shuffle_db\",\n autocomplete: \"shuffle_cache\",\n example: \"hello\",\n })\n if (\n workflow.workflow_variables !== null &&\n workflow.workflow_variables !== undefined &&\n workflow.workflow_variables.length > 0\n ) {\n for (let varkey in workflow.workflow_variables) {\n const item = workflow.workflow_variables[varkey];\n actionlist.push({\n type: \"workflow_variable\",\n name: item.name,\n value: item.value,\n id: item.id,\n autocomplete: `${item.name.split(\" \").join(\"_\")}`,\n example: item.value,\n });\n }\n }\n\n // FIXME: Add values from previous executions if they exist\n if (\n workflow.execution_variables !== null &&\n workflow.execution_variables !== undefined &&\n workflow.execution_variables.length > 0\n ) {\n for (let varkey in workflow.execution_variables) {\n const item = workflow.execution_variables[varkey];\n actionlist.push({\n type: \"execution_variable\",\n name: item.name,\n value: item.value,\n id: item.id,\n autocomplete: `${item.name.split(\" \").join(\"_\")}`,\n example: \"\",\n });\n }\n }\n\n var parents = getParents(selectedTrigger);\n if (parents.length > 1) {\n for (let parentkey in parents) {\n const item = parents[parentkey];\n if (item.label === \"Execution Argument\") {\n continue;\n }\n\n var exampledata = item.example === undefined ? \"\" : item.example;\n // Find previous execution and their variables\n if (workflowExecutions.length > 0) {\n // Look for the ID\n for (let execkey in workflowExecutions) {\n if (\n workflowExecutions[execkey].results === undefined ||\n workflowExecutions[execkey].results === null\n ) {\n continue;\n }\n\n var foundResult = workflowExecutions[execkey].results.find(\n (result) => result.action.id === item.id\n );\n if (foundResult === undefined) {\n continue;\n }\n\n const validated = validateJson(foundResult.result)\n if (validated.valid) {\n exampledata = validateJson.result\n break\n }\n }\n }\n\n // 1. Take\n const actionvalue = {\n type: \"action\",\n id: item.id,\n name: item.label,\n autocomplete: `${item.label.split(\" \").join(\"_\")}`,\n example: exampledata,\n }\n actionlist.push(actionvalue);\n }\n }\n\n setActionlist(actionlist);\n }\n\n // Shows nested list of nodes > their JSON lists\n const ActionlistWrapper = (props) => {\n const { data } = props;\n\n const handleMenuClose = () => {\n setUpdate(Math.random());\n setMenuPosition(null);\n };\n\n const handleItemClick = (values) => {\n console.log(\"VALUES: \", values)\n if (values === undefined || values === null || values.length === 0) {\n return;\n }\n\n\n /*\n workflow.triggers[selectedTriggerIndex].parameters[1].value\n .trim()\n .endsWith(\"$\")\n ? values[0].autocomplete\n : \"$\" + values[0].autocomplete;\n\n for (var key in values) {\n if (key === 0 || values[key].autocomplete.length === 0) {\n continue;\n }\n\n toComplete += values[key].autocomplete\n }\n */\n\n console.log(\"SELECTED TRIGGER: \", selectedTrigger)\n if (selectedTrigger.name === \"Shuffle Workflow\") {\n const toComplete = selectedTrigger.parameters[1].value + \"$\" + values[0].autocomplete\n selectedTrigger.parameters[1].value = toComplete\n setSelectedTrigger(selectedTrigger)\n }\n\n setUpdate(Math.random());\n setShowDropdown(false);\n setMenuPosition(null);\n };\n\n const iconStyle = {\n marginRight: 15,\n };\n\n return (\n {\n handleMenuClose();\n }}\n open={!!menuPosition}\n style={{\n border: `2px solid #f85a3e`,\n color: \"white\",\n marginTop: 2,\n }}\n >\n {actionlist.map((innerdata) => {\n const icon =\n innerdata.type === \"action\" ? (\n \n ) : innerdata.type === \"workflow_variable\" ||\n innerdata.type === \"execution_variable\" ? (\n \n ) : (\n \n );\n\n const handleExecArgumentHover = (inside) => {\n var exec_text_field = document.getElementById(\n \"execution_argument_input_field\"\n );\n if (exec_text_field !== null) {\n if (inside) {\n exec_text_field.style.border = \"2px solid #f85a3e\";\n } else {\n exec_text_field.style.border = \"\";\n }\n }\n\n // Also doing arguments\n if (\n workflow.triggers !== undefined &&\n workflow.triggers !== null &&\n workflow.triggers.length > 0\n ) {\n for (let triggerkey in workflow.triggers) {\n const item = workflow.triggers[triggerkey];\n\n if (cy !== undefined) {\n var node = cy.getElementById(item.id);\n if (node.length > 0) {\n if (inside) {\n node.addClass(\"shuffle-hover-highlight\");\n } else {\n node.removeClass(\"shuffle-hover-highlight\");\n }\n }\n }\n }\n }\n }\n\n const handleActionHover = (inside, actionId) => {\n if (cy !== undefined) {\n var node = cy.getElementById(actionId);\n if (node.length > 0) {\n if (inside) {\n node.addClass(\"shuffle-hover-highlight\");\n } else {\n node.removeClass(\"shuffle-hover-highlight\");\n }\n }\n }\n };\n\n const handleMouseover = () => {\n if (innerdata.type === \"Execution Argument\") {\n handleExecArgumentHover(true);\n } else if (innerdata.type === \"action\") {\n handleActionHover(true, innerdata.id);\n }\n };\n\n const handleMouseOut = () => {\n if (innerdata.type === \"Execution Argument\") {\n handleExecArgumentHover(false);\n } else if (innerdata.type === \"action\") {\n handleActionHover(false, innerdata.id);\n }\n };\n\n var parsedPaths = [];\n\t\t\t\t\t\tconsole.log(\"Found example data: \", innerdata.example)\n if (typeof innerdata.example === \"object\") {\n parsedPaths = GetParsedPaths(innerdata.example, \"\");\n }\n\n\t\t\t\t\t\tconst coverColor = \"#82ccc3\"\n\n return parsedPaths.length > 0 ? (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t{/*\n \n {icon} {innerdata.name}\n \n }\n parentMenuOpen={!!menuPosition}\n style={{\n backgroundColor: theme.palette.inputColor,\n color: \"white\",\n minWidth: 250,\n }}\n onClick={() => {\n handleItemClick([innerdata]);\n }}\n >\n {parsedPaths.map((pathdata, index) => {\n // FIXME: Should be recursive in here\n const icon =\n pathdata.type === \"value\" ? (\n \n ) : pathdata.type === \"list\" ? (\n \n ) : (\n \n )\n\n return (\n { }}\n onClick={() => {\n handleItemClick([innerdata, pathdata]);\n }}\n >\n \n
    \n {icon} {pathdata.name}\n
    \n \n \n );\n })}\n \n\t\t\t\t\t\t\t*/}\n\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{icon} {innerdata.name}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tparentMenuOpen={!!menuPosition}\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\tcolor: \"white\",\n\t\t\t\t\t\t\t\t\tminWidth: 250,\n\t\t\t\t\t\t\t\t\tmaxWidth: 250,\n\t\t\t\t\t\t\t\t\tmaxHeight: 50,\n\t\t\t\t\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\tconsole.log(\"CLICKED: \", innerdata);\n\t\t\t\t\t\t\t\t\tconsole.log(innerdata.example)\n\t\t\t\t\t\t\t\t\thandleItemClick([innerdata]);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t//console.log(\"HOVER: \", pathdata);\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\t\thandleItemClick([innerdata]);\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{innerdata.name}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\t\t{parsedPaths.map((pathdata, index) => {\n\t\t\t\t\t\t\t\t\t\t// FIXME: Should be recursive in here\n\t\t\t\t\t\t\t\t\t\t//\n\t\t\t\t\t\t\t\t\t\tconst icon =\n\t\t\t\t\t\t\t\t\t\t\tpathdata.type === \"value\" ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t) : pathdata.type === \"list\" ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t//\n\n\t\t\t\t\t\t\t\t\t\tconst indentation_count = (pathdata.name.match(/\\./g) || []).length+1\n\t\t\t\t\t\t\t\t\t\tconst baseIndent =
    \n\t\t\t\t\t\t\t\t\t\t//const boxPadding = pathdata.type === \"object\" ? \"10px 0px 0px 0px\" : 0\n\t\t\t\t\t\t\t\t\t\tconst boxPadding = 0 \n\t\t\t\t\t\t\t\t\t\tconst namesplit = pathdata.name.split(\".\")\n\t\t\t\t\t\t\t\t\t\tconst newname = namesplit[namesplit.length-1]\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t//console.log(\"HOVER: \", pathdata);\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\t\t\t\thandleItemClick([innerdata, pathdata]);\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{Array(indentation_count).fill().map((subdata, subindex) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbaseIndent\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{icon} {newname} \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{pathdata.type === \"list\" ? {\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}} /> : null}\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n ) : (\n handleMouseover()}\n onMouseOut={() => {\n handleMouseOut();\n }}\n onClick={() => {\n handleItemClick([innerdata]);\n }}\n >\n \n
    \n {icon} {innerdata.name}\n
    \n \n \n );\n })}\n \n );\n };\n\n if (Object.getOwnPropertyNames(selectedTrigger).length > 0) {\n if (workflow.triggers[selectedTriggerIndex] === undefined) {\n return null;\n }\n\n if (\n workflow.triggers[selectedTriggerIndex].parameters === undefined ||\n workflow.triggers[selectedTriggerIndex].parameters === null ||\n workflow.triggers[selectedTriggerIndex].parameters.length === 0\n ) {\n workflow.triggers[selectedTriggerIndex].parameters = [];\n workflow.triggers[selectedTriggerIndex].parameters[0] = {\n name: \"workflow\",\n value: \"\",\n };\n workflow.triggers[selectedTriggerIndex].parameters[1] = {\n name: \"argument\",\n value: \"\",\n };\n workflow.triggers[selectedTriggerIndex].parameters[2] = {\n name: \"user_apikey\",\n value: \"\",\n };\n workflow.triggers[selectedTriggerIndex].parameters[3] = {\n name: \"startnode\",\n value: \"\",\n };\n workflow.triggers[selectedTriggerIndex].parameters[4] = {\n name: \"check_result\",\n value: \"false\",\n };\n\n /*\n // API-key has been replaced by auth key for the execution. \n // Parents can now automatically execute children without auth from a user, as long as the subflow in question is owned by the same org and the subflow is actually referencing it during checkin.\n console.log(\"SETTINGS: \", userSettings);\n if (\n userSettings !== undefined &&\n userSettings !== null &&\n userSettings.apikey !== null &&\n userSettings.apikey !== undefined &&\n userSettings.apikey.length > 0\n ) {\n workflow.triggers[selectedTriggerIndex].parameters[2] = {\n name: \"user_apikey\",\n value: userSettings.apikey,\n };\n }\n */\n }\n\n\n\n const handleSubflowStartnodeSelection = (e) => {\n setSubworkflowStartnode(e.target.value);\n\n if (e.target.value === null || e.target.value === undefined) {\n return\n }\n\n const branchId = uuidv4();\n const newbranch = {\n source_id: workflow.triggers[selectedTriggerIndex].id,\n destination_id: e.target.value.id,\n source: workflow.triggers[selectedTriggerIndex].id,\n target: e.target.value.id,\n has_errors: false,\n id: branchId,\n _id: branchId,\n label: \"Subflow\",\n decorator: true,\n };\n\n if (workflow.visual_branches !== undefined) {\n if (workflow.visual_branches === null) {\n workflow.visual_branches = [newbranch];\n } else if (workflow.visual_branches.length === 0) {\n workflow.visual_branches.push(newbranch);\n } else {\n const foundIndex = workflow.visual_branches.findIndex(\n (branch) => branch.source_id === newbranch.source_id\n );\n if (foundIndex !== -1) {\n const currentEdge = cy.getElementById(\n workflow.visual_branches[foundIndex].id\n );\n if (\n currentEdge !== undefined &&\n currentEdge !== null\n ) {\n currentEdge.remove();\n }\n }\n\n workflow.visual_branches.splice(foundIndex, 1);\n workflow.visual_branches.push(newbranch);\n }\n }\n\n if (workflow.id === subworkflow.id) {\n const cybranch = {\n group: \"edges\",\n source: newbranch.source_id,\n target: newbranch.destination_id,\n id: branchId,\n data: newbranch,\n };\n\n cy.add(cybranch);\n }\n\n console.log(\"Value to be set: \", e.target.value);\n try {\n workflow.triggers[\n selectedTriggerIndex\n ].parameters[3].value = e.target.value.id;\n } catch {\n workflow.triggers[selectedTriggerIndex].parameters[3] =\n {\n name: \"startnode\",\n value: e.target.value.id,\n };\n }\n\n setWorkflow(workflow);\n }\n\n \n\n return (\n
    \n \n
    \n

    \n {selectedTrigger.app_name}\n

    \n \n What are subflows?\n \n
    \n
    \n \n
    \n
    \n Name\n \n
    \n
    \n
    \n \n \n Delay\n {\n if (isNaN(event.target.value)) {\n console.log(\"NAN: \", event.target.value)\n return\n }\n\n const parsedNumber = parseInt(event.target.value)\n if (parsedNumber > 86400) {\n console.log(\"Max number is 1 day (86400)\")\n return\n }\n\n selectedTrigger.execution_delay = parseInt(event.target.value)\n setSelectedTrigger(selectedTrigger)\n }}\n />\n \n \n
    \n
    \n
    \n {\n const newvalue =\n workflow.triggers[selectedTriggerIndex].parameters[4] ===\n undefined ||\n workflow.triggers[selectedTriggerIndex].parameters[4]\n .value === \"false\"\n ? \"true\"\n : \"false\";\n workflow.triggers[selectedTriggerIndex].parameters[4] = {\n name: \"check_result\",\n value: newvalue,\n };\n\n setWorkflow(workflow);\n setUpdate(Math.random());\n }}\n color=\"primary\"\n value=\"Wait for results\"\n />\n }\n style={{ marginTop: 10 }}\n label={
    Wait for results
    }\n />\n \n
    \n
    \n
    \n \n
    \n Select a workflow to execute \n
    \n
    \n {workflow.triggers[selectedTriggerIndex].parameters[0].value\n .length === 0 ? null : workflow.triggers[selectedTriggerIndex]\n .parameters[0].value === props.match.params.key ? null : (\n
    \n \n \n \n
    \n )}\n
    \n {workflows === undefined ||\n workflows === null ||\n workflows.length === 0 ? null : (\n option.id === value.id}\n getOptionLabel={(option) => {\n if (\n option === undefined ||\n option === null ||\n option.name === undefined ||\n option.name === null\n ) {\n return \"No Workflow Selected\";\n }\n\n const newname = (\n option.name.charAt(0).toUpperCase() + option.name.substring(1)\n ).replaceAll(\"_\", \" \");\n return newname;\n }}\n options={workflows}\n fullWidth\n style={{\n backgroundColor: theme.palette.inputColor,\n height: 50,\n borderRadius: theme.palette.borderRadius,\n }}\n onChange={(event, newValue) => {\n\t\t\t\t\t\t\t\t\t\tconsole.log(\"Found value: \", newValue)\n\n\t\t\t\t\t\t\t\t\t\tvar parsedinput = { target: { value: newValue } }\n\n\t\t\t\t\t\t\t\t\t\t// For variables\n\t\t\t\t\t\t\t\t\t\tif (typeof newValue === 'string' && newValue.startsWith(\"$\")) {\n\t\t\t\t\t\t\t\t\t\t\tparsedinput = { \n\t\t\t\t\t\t\t\t\t\t\t\ttarget: { \n\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": newValue, \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": newValue,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"actions\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"triggers\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t} \n\t\t\t\t\t\t\t\t\t\t\t\t} \n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\n handleWorkflowSelectionUpdate(parsedinput)\n }}\n renderOption={(data, index) => {\n if (data.id === workflow.id) {\n data = workflow;\n }\n\n //key={index}\n return (\n \n {data.image !== undefined && data.image !== null && data.image.length > 0 ?\n {data.name}\n : null}\n \n Choose {data.name}\n \n \n } placement=\"bottom\">\n \n {data.name}\n \n \n )\n }}\n renderInput={(params) => {\n return (\n \n );\n }}\n />\n )}\n\n {subworkflow === undefined ||\n subworkflow === null ||\n subworkflow.id === undefined ||\n subworkflow.actions === null ||\n subworkflow.actions === undefined ||\n subworkflow.actions.length === 0 ? null : (\n \n \n
    \n Select the Startnode\n
    \n
    \n option.id === value.id}\n getOptionLabel={(option) => {\n if (option === undefined || option === null || option.label === undefined || option.label === null) {\n if (option.length === 36) {\n\n }\n\n return \"TMP\";\n }\n\n const newname = (\n option.label.charAt(0).toUpperCase() + option.label.substring(1)\n ).replaceAll(\"_\", \" \");\n return newname;\n }}\n options={subworkflow.actions}\n fullWidth\n style={{\n backgroundColor: theme.palette.inputColor,\n height: 50,\n borderRadius: theme.palette.borderRadius,\n }}\n onChange={(event, newValue) => {\n handleSubflowStartnodeSelection({ target: { value: newValue } })\n }}\n renderOption={(action) => {\n const isParent = getParents(selectedTrigger).find(\n (parent) => parent.id === action.id\n )\n\n return (\n {\n if (subworkflow.id === workflow.id) {\n handleActionHover(true, action.id)\n }\n }}\n onMouseOut={() => {\n if (subworkflow.id === workflow.id) {\n handleActionHover(false, action.id)\n }\n }}\n disabled={isCloud && isParent}\n style={{\n backgroundColor: theme.palette.inputColor,\n color: isParent ? \"red\" : \"white\",\n }}\n value={action}\n >\n {action.label}\n \n );\n }}\n renderInput={(params) => {\n return (\n \n );\n }}\n />\n \n )}\n \n
    \n Execution Argument\n
    \n
    \n \n \n {\n setMenuPosition({\n top: event.pageY + 10,\n left: event.pageX + 10,\n });\n //setShowDropdownNumber(3)\n setShowDropdown(true);\n }}\n />\n \n \n ),\n }}\n rows=\"6\"\n multiline\n fullWidth\n color=\"primary\"\n placeholder=\"Some execution data\"\n defaultValue={\n workflow.triggers[selectedTriggerIndex].parameters[1].value\n }\n onBlur={(e) => {\n workflow.triggers[selectedTriggerIndex].parameters[1].value =\n e.target.value;\n setWorkflow(workflow);\n }}\n />\n {!showDropdown ? null :\n\t\t\t\t\t\t\t\t\n }\n {/*\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\tAPI-key \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\tworkflow.triggers[selectedTriggerIndex].parameters[2].value =\n\t\t\t\t\t\t\t\t\t\t\te.target.value;\n\t\t\t\t\t\t\t\t\t\tsetWorkflow(workflow);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t*/}\n \n \n \n );\n }\n\n return null;\n };\n\n const CommentSidebar = () => {\n if (Object.getOwnPropertyNames(selectedComment).length > 0) {\n /*\n if (workflow.triggers[selectedTriggerIndex] === undefined) {\n return null\n }\n\n if (workflow.triggers[selectedTriggerIndex].parameters === undefined || workflow.triggers[selectedTriggerIndex].parameters === null || workflow.triggers[selectedTriggerIndex].parameters.length === 0) {\n workflow.triggers[selectedTriggerIndex].parameters = []\n workflow.triggers[selectedTriggerIndex].parameters[0] = {\"name\": \"url\", \"value\": referenceUrl+\"webhook_\"+selectedTrigger.id}\n workflow.triggers[selectedTriggerIndex].parameters[1] = {\"name\": \"tmp\", \"value\": \"webhook_\"+selectedTrigger.id}\n workflow.triggers[selectedTriggerIndex].parameters[2] = {\"name\": \"auth_headers\", \"value\": \"\"}\n setWorkflow(workflow)\n } else {\n if (selectedTrigger.environment !== \"cloud\") {\n const newUrl = referenceUrl+\"webhook_\"+selectedTrigger.id\n if (newUrl !== workflow.triggers[selectedTriggerIndex].parameters[0].value) {\n console.log(\"Url is wrong - should update. This functionality is temporarily disabled.\")\n //workflow.triggers[selectedTriggerIndex].parameters[0].value = newUrl\n //setWorkflow(workflow)\n }\n }\n }\n\n const trigger_header_auth = workflow.triggers[selectedTriggerIndex].parameters.length > 2 ? workflow.triggers[selectedTriggerIndex].parameters[2].value : \"\"\n */\n\n return (\n
    \n \n
    \n

    Comment

    \n \n What are comments?\n \n
    \n
    \n \n
    Name
    \n {\n selectedComment.label = event.target.value;\n setSelectedComment(selectedComment);\n }}\n />\n
    \n
    \n
    Height
    \n {\n selectedComment.height = event.target.value;\n setSelectedComment(selectedComment);\n }}\n />\n
    \n
    \n
    Width
    \n {\n selectedComment.width = event.target.value;\n setSelectedComment(selectedComment);\n }}\n />\n
    \n
    \n
    \n
    \n
    Background
    \n {\n selectedComment.backgroundcolor = event.target.value;\n setSelectedComment(selectedComment);\n }}\n />\n
    \n
    \n
    Text Color
    \n {\n selectedComment.color = event.target.value;\n setSelectedComment(selectedComment);\n }}\n />\n
    \n
    \n
    Background-Image
    \n {\n selectedComment.backgroundimage = event.target.value;\n console.log(\"Comment: \", selectedComment)\n setSelectedComment(selectedComment);\n }}\n />\n \n );\n }\n\n return null;\n };\n\n const WebhookSidebar = () => {\n if (Object.getOwnPropertyNames(selectedTrigger).length > 0) {\n if (workflow.triggers[selectedTriggerIndex] === undefined) {\n return null;\n }\n\n if (\n workflow.triggers[selectedTriggerIndex].parameters === undefined ||\n workflow.triggers[selectedTriggerIndex].parameters === null ||\n workflow.triggers[selectedTriggerIndex].parameters.length === 0\n ) {\n workflow.triggers[selectedTriggerIndex].parameters = [];\n workflow.triggers[selectedTriggerIndex].parameters[0] = {\n name: \"url\",\n value: referenceUrl + \"webhook_\" + selectedTrigger.id,\n };\n workflow.triggers[selectedTriggerIndex].parameters[1] = {\n name: \"tmp\",\n value: \"webhook_\" + selectedTrigger.id,\n };\n workflow.triggers[selectedTriggerIndex].parameters[2] = {\n name: \"auth_headers\",\n value: \"\",\n };\n workflow.triggers[selectedTriggerIndex].parameters[3] = {\n name: \"custom_response_body\",\n value: \"\",\n };\n workflow.triggers[selectedTriggerIndex].parameters[4] = {\n name: \"await_response\",\n value: \"v1\",\n };\n setWorkflow(workflow);\n } else {\n // Always update\n const newUrl = referenceUrl + \"webhook_\" + selectedTrigger.id;\n //console.log(\"Validating webhook url: \", newUrl);\n if (selectedTrigger.environment !== \"cloud\") {\n if (newUrl !== workflow.triggers[selectedTriggerIndex].parameters[0].value) {\n console.log(\"Url is wrong. NOT updating because of hybrid.\");\n //workflow.triggers[selectedTriggerIndex].parameters[0].value = newUrl;\n //setWorkflow(workflow);\n }\n }\n }\n\n const trigger_header_auth =\n workflow.triggers[selectedTriggerIndex].parameters.length > 2\n ? workflow.triggers[selectedTriggerIndex].parameters[2].value\n : \"\";\n\n return (\n
    \n \n
    \n

    \n {selectedTrigger.app_name}: {selectedTrigger.status}\n

    \n \n What are webhooks?\n \n
    \n
    \n \n
    Name
    \n \n {apps !== undefined && apps !== null && apps.length > 0 ?\n
    \n {\n //console.log(\"Option contains?: \", inputValue, options)\n const lowercaseValue = inputValue.toLowerCase()\n options = options.filter(x => x.name.replaceAll(\"_\", \" \").toLowerCase().includes(lowercaseValue) || x.description.toLowerCase().includes(lowercaseValue))\n\n return options\n }}\n getOptionLabel={(option) => {\n if (\n option === undefined ||\n option === null ||\n option.name === undefined ||\n option.name === null\n ) {\n return null;\n }\n\n const newname = (\n option.name.charAt(0).toUpperCase() + option.name.substring(1)\n ).replaceAll(\"_\", \" \");\n\n return newname;\n }}\n options={sortByKey(apps, \"name\")}\n fullWidth\n style={{\n backgroundColor: theme.palette.inputColor,\n height: 50,\n borderRadius: theme.palette.borderRadius,\n }}\n onChange={(event, newValue) => {\n // Workaround with event lol\n console.log(event, newValue)\n if (newValue !== undefined && newValue !== null) {\n var parsedvalue = JSON.parse(JSON.stringify(newValue))\n parsedvalue.actions = []\n parsedvalue.authentication = {}\n selectedTrigger.app_association = parsedvalue\n setUpdate(Math.random());\n }\n // setNewSelectedAction({ \n //\t\ttarget: { \n //\t\t\tvalue: newValue.name \n //\t\t} \n //\t});\n //}\n }}\n renderOption={(app) => {\n var appname = app.name.replaceAll(\"_\", \" \")\n appname = appname.charAt(0).toUpperCase() + appname.substring(1)\n\n return (\n \n
    \n
    \n \n \n \n \n {appname}\n \n
    \n
    \n \n )\n }}\n renderInput={(params) => {\n return (\n \n );\n }}\n />\n\n
    \n : null}\n {selectedTrigger.status === \"running\" ? null :\n
    \n Environment\n {\n selectedTrigger.environment = e.target.value;\n if (e.target.value === \"cloud\") {\n const tmpvalue = workflow.triggers[selectedTriggerIndex].parameters[0].value.split(\"/\");\n const urlpath = tmpvalue.slice(3, tmpvalue.length);\n const newurl = \"https://shuffler.io/\" + urlpath.join(\"/\");\n workflow.triggers[selectedTriggerIndex].parameters[0].value = newurl;\n } else {\n const tmpvalue = workflow.triggers[selectedTriggerIndex].parameters[0].value.split(\"/\");\n const urlpath = tmpvalue.slice(3, tmpvalue.length);\n const newurl = window.location.origin + \"/\" + urlpath.join(\"/\");\n workflow.triggers[selectedTriggerIndex].parameters[0].value = newurl;\n }\n\n console.log(\"New value: \", workflow.triggers[selectedTriggerIndex].parameters[0])\n selectedTrigger.parameters[0] = workflow.triggers[selectedTriggerIndex].parameters[0]\n setSelectedTrigger(selectedTrigger);\n setWorkflow(workflow);\n setUpdate(Math.random());\n }}\n style={{\n backgroundColor: inputColor,\n color: \"white\",\n height: 50,\n }}\n >\n {triggerEnvironments.map((data) => {\n if (data.archived) {\n return null;\n }\n\n return (\n \n {data}\n \n );\n })}\n \n
    \n }\n \n
    \n
    \n Parameters\n \n \n
    \n Webhook URI \n
    \n
    \n {\n }}\n helperText={\n workflow.triggers[selectedTriggerIndex].parameters[0].value !== undefined &&\n workflow.triggers[selectedTriggerIndex].parameters[0].value !== null &&\n (workflow.triggers[\n selectedTriggerIndex\n ].parameters[0].value.includes(\"localhost\") ||\n workflow.triggers[\n selectedTriggerIndex\n ].parameters[0].value.includes(\"127.0.0.1\")) ? (\n \n PS: This does NOT work with localhost. Use your local IP\n instead.\n \n ) : null\n }\n InputProps={{\n style: {\n color: \"white\",\n height: 50,\n marginLeft: \"5px\",\n maxWidth: \"95%\",\n fontSize: \"1em\",\n },\n endAdornment:\n \n {\n var copyText = document.getElementById(\"webhook_uri_field\");\n if (copyText !== undefined && copyText !== null) {\n console.log(\"NAVIGATOR: \", navigator);\n const clipboard = navigator.clipboard;\n if (clipboard === undefined) {\n alert.error(\"Can only copy over HTTPS (port 3443)\");\n return;\n }\n\n navigator.clipboard.writeText(copyText.value);\n copyText.select();\n copyText.setSelectionRange(\n 0,\n 99999\n ); /* For mobile devices */\n\n /* Copy the text inside the text field */\n document.execCommand(\"copy\");\n alert.success(\"Copied Webhook URL\");\n } else {\n console.log(\"Couldn't find webhook URI field: \", copyText);\n }\n }}\n edge=\"end\"\n >\n \n \n \n }}\n fullWidth\n disabled\n value={\n workflow.triggers[selectedTriggerIndex].parameters[0].value\n }\n color=\"primary\"\n placeholder=\"defaultValue\"\n onBlur={(e) => {\n setTriggerCronWrapper(e.target.value);\n }}\n />\n \n {\n newWebhook(workflow.triggers[selectedTriggerIndex]);\n }}\n color=\"primary\"\n >\n Start\n \n {\n deleteWebhook(selectedTrigger, selectedTriggerIndex);\n }}\n color=\"primary\"\n >\n Stop\n \n
    \n \n \n \n
    \n Authentication headers\n
    \n \n
    \n { }}\n InputProps={{\n style: {\n color: \"white\",\n marginLeft: \"5px\",\n maxWidth: \"95%\",\n fontSize: \"1em\",\n },\n }}\n fullWidth\n multiline\n rows=\"4\"\n defaultValue={trigger_header_auth}\n color=\"primary\"\n disabled={selectedTrigger.status === \"running\"}\n placeholder={\"AUTH_HEADER=AUTH_VALUE1\"}\n onBlur={(e) => {\n const value = e.target.value;\n if (selectedTrigger.parameters === null) {\n selectedTrigger.parameters = [];\n }\n\n workflow.triggers[selectedTriggerIndex].parameters[2] = {\n value: value,\n name: \"auth_headers\",\n };\n setWorkflow(workflow);\n }}\n />\n
    \n \n \n
    \n Custom Response\n
    \n \n
    \n { }}\n InputProps={{\n style: {\n color: \"white\",\n marginLeft: \"5px\",\n maxWidth: \"95%\",\n fontSize: \"1em\",\n },\n }}\n fullWidth\n multiline\n rows=\"2\"\n color=\"primary\"\n disabled={selectedTrigger.status === \"running\"}\n placeholder={\"OK\"}\n onBlur={(e) => {\n const value = e.target.value;\n if (selectedTrigger.parameters === null) {\n selectedTrigger.parameters = [];\n }\n\n workflow.triggers[selectedTriggerIndex].parameters[3] = {\n value: value,\n name: \"custom_response_body\",\n };\n setWorkflow(workflow);\n }}\n />\n
    \n\t\t\t\t\t\t\t{isCloud && workflow.triggers[selectedTriggerIndex].parameters.length > 4 ? \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\tif (selectedTrigger.parameters === null) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tselectedTrigger.parameters = [];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Sets the webhook to run as version 2.. kinda\n\t\t\t\t\t\t\t\t\t\t\t\tvar value = \"v2\"\n\t\t\t\t\t\t\t\t\t\t\t\tif (workflow.triggers[selectedTriggerIndex].parameters[4].value.includes(\"v2\")) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalue = \"v1\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tworkflow.triggers[selectedTriggerIndex].parameters[4] = {\n\t\t\t\t\t\t\t\t\t\t\t\t\tname: \"await_response\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: value\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tsetWorkflow(workflow)\n\t\t\t\t\t\t\t\t\t\t\t\tsetUpdate(Math.random())\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\t\t\t\t\t\tvalue=\"await_response\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tlabel={
    Wait For Response
    }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t: null}\n\t\t\t\t\t\t\n \n \n );\n }\n\n return null;\n };\n\n const stopMailSub = (trigger, triggerindex) => {\n // DELETE\n if (trigger.id === undefined) {\n return;\n }\n\n alert.info(\"Stopping mail trigger\");\n const requesttype = triggerAuthentication.type;\n fetch(\n `${globalUrl}/api/v1/workflows/${props.match.params.key}/${requesttype}/${trigger.id}`,\n {\n method: \"DELETE\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n }\n )\n .then((response) => {\n if (response.status !== 200) {\n throw new Error(\"Status not 200 for stream results :O!\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n if (responseJson.success) {\n alert.success(\"Successfully stopped trigger\");\n // Set the status\n workflow.triggers[triggerindex].status = \"stopped\";\n trigger.status = \"stopped\";\n setWorkflow(workflow);\n setSelectedTrigger(trigger);\n saveWorkflow(workflow);\n } else {\n alert.error(\"Failed stopping trigger: \" + responseJson.reason);\n }\n })\n .catch((error) => {\n //alert.error(error.toString());\n console.log(\"Stop mailsub error: \", error.toString());\n });\n };\n\n const startMailSub = (trigger, triggerindex) => {\n var folders = [];\n\n if (triggerFolders === null || triggerFolders === undefined) {\n return null;\n }\n\n const splitItem =\n workflow.triggers[selectedTriggerIndex].parameters[0].value.split(\n splitter\n )\n\n\t\tconsole.log(\"Starting mail sub: \", workflow.triggers[selectedTriggerIndex].parameters[0].value, splitItem);\n for (let splitkey in splitItem) {\n const item = splitItem[splitkey];\n const curfolder = triggerFolders.find((a) => a.displayName === item);\n if (curfolder === undefined) {\n alert.error(\"Something went wrong with folder selection: \" + item);\n return;\n }\n\n folders.push(curfolder.id);\n }\n\n const data = {\n name: trigger.name,\n folders: folders,\n id: trigger.id,\n };\n\n const requesttype = triggerAuthentication.type;\n alert.info(\n \"Creating \" + requesttype + \" subscription with name \" + trigger.name\n );\n\n fetch(\n globalUrl +\n \"/api/v1/workflows/\" +\n props.match.params.key +\n \"/\" +\n requesttype,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify(data),\n credentials: \"include\",\n }\n )\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for stream results :O!\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n if (!responseJson.success) {\n alert.error(\"Failed to start trigger: \" + responseJson.reason);\n } else {\n alert.success(\n \"Successfully started folder subscription trigger. Test it by sending yoursend an email\"\n );\n\n workflow.triggers[triggerindex].status = \"running\";\n trigger.status = \"running\";\n setWorkflow(workflow);\n setSelectedTrigger(trigger);\n saveWorkflow(workflow);\n }\n })\n .catch((error) => {\n //alert.error(error.toString());\n console.log(\"Start mailsub error: \", error.toString());\n });\n };\n\n const newWebhook = (trigger) => {\n const hookname = trigger.label;\n if (hookname.length === 0) {\n alert.error(\"Missing name\");\n return;\n }\n\n if (trigger.id.length !== 36) {\n alert.error(\"Missing id\");\n return;\n }\n\n // Check the node it's connected to\n var startNode = workflow.start;\n const branch = workflow.branches.find(\n (branch) => branch.source_id === trigger.id\n );\n if (branch === undefined && (workflow.start === undefined || workflow.start === null || workflow.start.length === 0)) {\n alert.error(\"No webhook node defined\");\n }\n\n alert.info(\"Starting webhook\");\n if (branch !== undefined) {\n startNode = branch.destination_id;\n }\n\n const param = trigger.parameters.find((param) => param.name === \"auth_headers\");\n var auth = \"\";\n if (param !== undefined && param !== null) {\n auth = param.value;\n }\n\n\n\t\t// Version: v2 = await response for 30 sec\n const await_resp = trigger.parameters.find((param) => param.name === \"await_response\");\n var version = \"\";\n if (await_resp !== undefined && await_resp !== null) {\n version = await_resp.value;\n }\n\n const customRespParam = trigger.parameters.find(\n (param) => param.name === \"custom_response_body\"\n )\n var custom_response = \"\";\n if (customRespParam !== undefined && customRespParam !== null) {\n custom_response = customRespParam.value;\n }\n\n const data = {\n name: hookname,\n type: \"webhook\",\n id: trigger.id,\n workflow: workflow.id,\n start: startNode,\n environment: trigger.environment,\n auth: auth,\n custom_response: custom_response,\n\t\t\tversion: version,\n\t\t\tversion_timeout: 15,\n };\n\n\t\tconsole.log(\"Trigger data: \", data)\n\n fetch(globalUrl + \"/api/v1/hooks/new\", {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify(data),\n credentials: \"include\",\n })\n .then((response) => response.json())\n .then((responseJson) => {\n if (responseJson.success) {\n // Set the status\n alert.success(\"Successfully started webhook\");\n trigger.status = \"running\";\n setSelectedTrigger(trigger);\n workflow.triggers[selectedTriggerIndex].status = \"running\";\n setWorkflow(workflow);\n saveWorkflow(workflow);\n } else {\n alert.error(\"Failed starting webhook: \" + responseJson.reason);\n }\n })\n .catch((error) => {\n //console.log(error.toString());\n console.log(\"New webhook error: \", error.toString());\n });\n };\n\n const deleteWebhook = (trigger, triggerindex) => {\n if (trigger.id === undefined) {\n return;\n }\n\n fetch(globalUrl + \"/api/v1/hooks/\" + trigger.id + \"/delete\", {\n method: \"DELETE\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for stream results :O!\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n if (workflow.triggers[triggerindex] !== undefined) {\n workflow.triggers[triggerindex].status = \"stopped\";\n }\n\n if (responseJson.success) {\n // Set the status\n saveWorkflow(workflow);\n } else {\n if (responseJson.reason !== undefined) {\n alert.error(\"Failed stopping webhook: \" + responseJson.reason);\n }\n }\n\n trigger.status = \"stopped\";\n setWorkflow(workflow);\n setSelectedTrigger(trigger);\n })\n .catch((error) => {\n //alert.error(error.toString());\n alert.error(\"Delete webhook error. Contact support or check logs if this persists.\")\n });\n };\n\n const UserinputSidebar = () => {\n if (\n Object.getOwnPropertyNames(selectedTrigger).length > 0 &&\n workflow.triggers[selectedTriggerIndex] !== undefined\n ) {\n if (\n workflow.triggers[selectedTriggerIndex].parameters === undefined ||\n workflow.triggers[selectedTriggerIndex].parameters === null ||\n workflow.triggers[selectedTriggerIndex].parameters.length === 0\n ) {\n workflow.triggers[selectedTriggerIndex].parameters = [];\n workflow.triggers[selectedTriggerIndex].parameters[0] = {\n name: \"alertinfo\",\n value: \"Do you want to continue the workflow? Start parameters: $exec\",\n };\n\n // boolean,\n workflow.triggers[selectedTriggerIndex].parameters[1] = {\n name: \"options\",\n value: \"boolean\",\n };\n\n // email,sms,app ...\n workflow.triggers[selectedTriggerIndex].parameters[2] = {\n name: \"type\",\n value: \"email\",\n };\n\n workflow.triggers[selectedTriggerIndex].parameters[3] = {\n name: \"email\",\n value: \"test@test.com\",\n };\n workflow.triggers[selectedTriggerIndex].parameters[4] = {\n name: \"sms\",\n value: \"0000000\",\n };\n workflow.triggers[selectedTriggerIndex].parameters[5] = {\n name: \"subflow\",\n value: \"\",\n };\n\n setWorkflow(workflow);\n }\n\n return (\n
    \n \n
    \n

    \n {selectedTrigger.app_name}: {selectedTrigger.status}\n

    \n \n What is the user input trigger?\n \n
    \n
    \n \n
    Name
    \n \n\n
    \n Environment:\n \n
    \n \n
    \n Parameters\n \n \n
    \n Information\n
    \n
    \n {\n setTriggerTextInformationWrapper(e.target.value);\n }}\n />\n \n \n
    \n Contact options\n
    \n \n \n {\n setTriggerOptionsWrapper(\"email\");\n }}\n color=\"primary\"\n value=\"email\"\n />\n }\n label={
    Email
    }\n />\n {\n setTriggerOptionsWrapper(\"sms\");\n }}\n color=\"primary\"\n value=\"sms\"\n\t\t\t\t\t\t\t\t\t\tdisabled={true}\n />\n }\n label={
    SMS
    }\n />\n {\n setTriggerOptionsWrapper(\"subflow\");\n }}\n color=\"primary\"\n value=\"subflow\"\n />\n }\n label={
    Subflow
    }\n />\n \n\t\t\t\t\t\t{workflow.triggers[selectedTriggerIndex].parameters[2] !== undefined && workflow.triggers[selectedTriggerIndex].parameters[2].value.includes(\"subflow\") ? (\n\t\t\t\t\t\t\t
    \n \t{workflows === undefined ||\n \t workflows === null ||\n \t workflows.length === 0 ? null : (\n \t option.id === value.id}\n \t getOptionLabel={(option) => {\n \t if (option === undefined || option === null || option.name === undefined || option.name === null) {\n \t return \"No Workflow Selected\";\n \t }\n\n \t const newname = (option.name.charAt(0).toUpperCase() + option.name.substring(1)).replaceAll(\"_\", \" \");\n \t return newname;\n \t }}\n \t options={workflows}\n \t fullWidth\n \t style={{\n \t backgroundColor: theme.palette.inputColor,\n \t height: 50,\n \t borderRadius: theme.palette.borderRadius,\n\t\t\t\t\t\t\t\t\t\t\tmarginTop: 15,\n\t\t\t\t\t\t\t\t\t\t\tmarginBottom: 15,\n \t }}\n \t onChange={(event, newValue) => {\n\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"Changed autocomplete!\")\n \t handleWorkflowSelectionUpdate({ target: { value: newValue } }, true)\n \t }}\n \t renderOption={(data, index) => {\n \t if (data.id === workflow.id) {\n \t data = workflow;\n \t }\n\n \t //key={index}\n \t return (\n \t \n \t {data.image !== undefined && data.image !== null && data.image.length > 0 ?\n \t {data.name}\n \t : null}\n \t \n \t Choose {data.name}\n \t \n \t \n \t } placement=\"bottom\">\n \t \n \t {data.name}\n \t \n \t \n \t )\n \t }}\n \t renderInput={(params) => {\n \t return (\n \t \n \t );\n \t }}\n \t />\n \t)}\n\t\t\t\t\t\t\t
    \n ) : null}\n {workflow.triggers[selectedTriggerIndex].parameters[2] !==\n undefined &&\n workflow.triggers[selectedTriggerIndex].parameters[2].value.includes(\"email\") ? (\n {\n workflow.triggers[selectedTriggerIndex].parameters[3].value =\n event.target.value;\n setWorkflow(workflow);\n setUpdate(Math.random());\n }}\n />\n ) : null}\n {workflow.triggers[selectedTriggerIndex].parameters[2] !==\n undefined &&\n workflow.triggers[\n selectedTriggerIndex\n ].parameters[2].value.includes(\"sms\") ? (\n {\n workflow.triggers[selectedTriggerIndex].parameters[4].value =\n event.target.value;\n setWorkflow(workflow);\n setUpdate(Math.random());\n }}\n />\n ) : null}\n \n \n \n );\n }\n\n return null;\n };\n\n const ScheduleSidebar = () => {\n if (\n Object.getOwnPropertyNames(selectedTrigger).length > 0 &&\n workflow.triggers[selectedTriggerIndex] !== undefined\n ) {\n if (\n workflow.triggers[selectedTriggerIndex].parameters === undefined ||\n workflow.triggers[selectedTriggerIndex].parameters === null ||\n workflow.triggers[selectedTriggerIndex].parameters.length === 0\n ) {\n workflow.triggers[selectedTriggerIndex].parameters = [];\n workflow.triggers[selectedTriggerIndex].parameters[0] = {\n name: \"cron\",\n value: isCloud ? \"*/25 * * * *\" : \"60\",\n };\n workflow.triggers[selectedTriggerIndex].parameters[1] = {\n name: \"execution_argument\",\n value: '{\"example\": {\"json\": \"is cool\"}}',\n };\n setWorkflow(workflow);\n }\n\n return (\n
    \n \n
    \n

    \n {selectedTrigger.app_name}: {selectedTrigger.status}\n

    \n \n What are schedules?\n \n
    \n
    \n \n
    Name
    \n \n
    \n Environment\n {\n selectedTrigger.environment = e.target.value;\n setSelectedTrigger(selectedTrigger);\n if (e.target.value === \"cloud\") {\n console.log(\"Set cloud config\");\n workflow.triggers[selectedTriggerIndex].parameters[0].value =\n \"*/25 * * * *\";\n } else {\n console.log(\"Set cloud config\");\n\n workflow.triggers[selectedTriggerIndex].parameters[0].value =\n \"60\";\n }\n\n setWorkflow(workflow);\n setUpdate(Math.random());\n }}\n style={{\n backgroundColor: inputColor,\n color: \"white\",\n height: 50,\n }}\n >\n {triggerEnvironments.map((data) => {\n if (data.archived) {\n return null;\n }\n\n return (\n \n {data}\n \n );\n })}\n \n
    \n \n
    \n
    \n Parameters\n \n \n
    \n Interval (UTC) \n
    \n
    \n {\n setTriggerCronWrapper(e.target.value);\n }}\n />\n {/*selectedTrigger.environment === \"cloud\" ? \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t: \n\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t*/}\n \n \n
    \n Execution argument: \n
    \n
    \n {\n setTriggerBodyWrapper(e.target.value);\n }}\n />\n \n \n {\n submitSchedule(selectedTrigger, selectedTriggerIndex);\n }}\n color=\"primary\"\n >\n Start\n \n {\n stopSchedule(selectedTrigger, selectedTriggerIndex);\n }}\n color=\"primary\"\n >\n Stop\n \n \n \n \n \n );\n }\n\n return null;\n };\n\n const cytoscapeViewWidths = isMobile ? 50 : 850;\n const bottomBarStyle = {\n position: \"fixed\",\n right: isMobile ? 20 : 20,\n bottom: isMobile ? undefined : 0,\n top: isMobile ? appBarSize + 55 : undefined,\n left: isMobile ? undefined : leftBarSize,\n minWidth: cytoscapeViewWidths,\n maxWidth: cytoscapeViewWidths,\n marginLeft: 20,\n marginBottom: 20,\n zIndex: 10,\n };\n\n const topBarStyle = {\n position: \"fixed\",\n right: 0,\n left: isMobile ? 20 : leftBarSize + 20,\n top: isMobile ? 30 : appBarSize + 20,\n };\n\n const TopCytoscapeBar = (props) => {\n if (workflow.public === true) {\n return null\n }\n\n return (\n \n );\n };\n\n const WorkflowMenu = () => {\n const [newAnchor, setNewAnchor] = React.useState(null);\n const [showShuffleMenu, setShowShuffleMenu] = React.useState(false);\n\n return (\n
    \n {\n setShowShuffleMenu(false);\n }}\n >\n \n

    This menu is used to control the workflow itself.

    \n \n\n Skip Notifications
    }\n control={\n {\n workflow.configuration.skip_notifications =\n !workflow.configuration.skip_notifications;\n setWorkflow(workflow);\n setUpdate(\n \"skip_notifications\" +\n workflow.configuration.skip_notification\n ? \"true\"\n : \"false\"\n );\n }}\n />\n }\n />\n Exit on Error}\n control={\n {\n workflow.configuration.exit_on_error =\n !workflow.configuration.exit_on_error;\n setWorkflow(workflow);\n setUpdate(\n \"exit_on_error_\" + workflow.configuration.exit_on_error\n ? \"true\"\n : \"false\"\n );\n }}\n />\n }\n />\n Start from top}\n control={\n {\n workflow.configuration.start_from_top =\n !workflow.configuration.start_from_top;\n setWorkflow(workflow);\n setUpdate(\n \"start_from_top_\" + workflow.configuration.start_from_top\n ? \"true\"\n : \"false\"\n );\n }}\n />\n }\n />\n \n \n {/*\n \n \n {\n setShowShuffleMenu(!showShuffleMenu);\n setNewAnchor(event.currentTarget);\n }}\n >\n \n \n \n \n\t\t\t\t*/}\n {isMobile ?\n \n \n {\n console.log(\"Show apps!\")\n setLeftBarSize(leftViewOpen ? 0 : 60)\n setLeftViewOpen(!leftViewOpen)\n }}\n >\n \n \n \n \n : null}\n \n );\n };\n\n const handleActionHover = (inside, actionId) => {\n if (cy !== undefined) {\n var node = cy.getElementById(actionId);\n if (node.length > 0) {\n if (inside) {\n node.addClass(\"shuffle-hover-highlight\");\n } else {\n node.removeClass(\"shuffle-hover-highlight\");\n }\n }\n }\n }\n\n const handleHistoryUndo = () => {\n //console.log(\"history: \", history, \"index: \", historyIndex);\n var item = history[historyIndex - 1];\n if (historyIndex === 0) {\n item = history[historyIndex];\n }\n\n if (item === undefined) {\n console.log(\"Couldn't find the action you're looking for\");\n return;\n }\n\n //console.log(\"HANDLE: \", item);\n if (item.type === \"node\" && item.action === \"removed\") {\n // Re-add the node\n console.log(\"Item: \", item.data)\n\n const edge = cy.getElementById(item.data.id).json()\n if (edge !== null && edge !== undefined) {\n console.log(\"Couldn't add node as it exists\")\n return\n }\n\n cy.add({\n group: \"nodes\",\n data: item.data,\n position: item.data.position,\n });\n } else if (item.action === \"added\") {\n //console.log(\"Should remove item!\");\n const currentitem = cy.getElementById(item.data.id);\n if (currentitem !== undefined && currentitem !== null) {\n currentitem.remove();\n }\n\n } else if (item.type === \"edge\" && item.action === \"removed\") {\n const sourcenode = cy.getElementById(item.data.source)\n const targetnode = cy.getElementById(item.data.target)\n if (sourcenode === undefined || sourcenode === null || targetnode === undefined || targetnode === null) {\n console.log(\"Can't readd bad edge!\")\n return\n }\n\n const edge = cy.getElementById(item.data.id).json()\n if (edge !== null && edge !== undefined) {\n console.log(\"Couldn't add edge as it exists\")\n return\n }\n\n cy.add({\n group: \"edges\",\n data: item.data,\n });\n\n } else {\n console.log(\"UNHANDLED: \", item)\n }\n\n if (historyIndex > 0) {\n setHistoryIndex(historyIndex - 1);\n }\n };\n\n const BottomCytoscapeBar = () => {\n if (workflow.id === undefined || workflow.id === null || (!workflow.public && apps.length === 0)) {\n return null;\n }\n\n const boxSize = isMobile ? 50 : 100;\n const executionButton = executionRunning ? (\n \n \n {\n abortExecution();\n }}\n >\n \n \n \n \n ) : (\n \n \n {\n executeWorkflow(executionText, workflow.start, lastSaved);\n }}\n >\n \n \n \n \n );\n\n return (\n
    \n {executionButton}\n \n {isMobile || workflow.public ? null : (\n \n {\n setExecutionText(e.target.value);\n }}\n />\n \n )}\n {/*userdata.avatar === creatorProfile.github_avatar ? null :*/}\n \n \n {\n saveWorkflow()\n\n if (workflow.public === true) {\n console.log(\"Public!\")\n\n const tmpurl = new URL(window.location.href)\n const searchParams = tmpurl.searchParams\n const queryID = searchParams.get('queryID')\n\n if (queryID !== undefined && queryID !== null) {\n aa('init', {\n appId: \"JNSS5CFDZZ\",\n apiKey: \"db08e40265e2941b9a7d8f644b6e5240\",\n })\n\n const timestamp = new Date().getTime()\n aa('sendEvents', [\n {\n eventType: 'conversion',\n eventName: 'Public Workflow Saved',\n index: 'workflows',\n objectIDs: [workflow.id],\n timestamp: timestamp,\n queryID: queryID,\n userToken: userdata === undefined || userdata === null || userdata.id === undefined ? \"unauthenticated\" : userdata.id,\n }\n ])\n } else {\n console.log(\"No query to handle\")\n }\n }\n }}\n >\n {savingState === 2 ? (\n \n ) : savingState === 1 ? (\n \n ) : (\n \n )}\n \n \n \n {workflow.public ? (\n \n \n {\n const data = workflow;\n let exportFileDefaultName = data.name + \".json\";\n\n let dataStr = JSON.stringify(data);\n let dataUri =\n \"data:application/json;charset=utf-8,\" +\n encodeURIComponent(dataStr);\n let linkElement = document.createElement(\"a\");\n linkElement.setAttribute(\"href\", dataUri);\n linkElement.setAttribute(\"download\", exportFileDefaultName);\n linkElement.click();\n }}\n >\n \n \n \n \n ) : null}\n \n \n cy.fit(null, 50)}\n >\n \n \n \n \n \n \n {\n handleHistoryUndo(history);\n }}\n >\n \n \n \n \n \n \n {\n const selectedNode = cy.$(\":selected\");\n if (selectedNode.data() === undefined) {\n return\n }\n\n removeNode(selectedNode.data(\"id\"))\n }}\n >\n \n \n \n \n \n \n {\n setExecutionModalOpen(true);\n getWorkflowExecution(props.match.params.key, \"\");\n }}\n >\n {/* */}\n \n {/**/}\n \n \n \n \n \n {\n addCommentNode();\n }}\n >\n \n \n \n \n {workflow.configuration !== null &&\n workflow.configuration !== undefined &&\n workflow.configuration.exit_on_error !== undefined ? (\n \n ) : null}\n \n \n {\n console.log(\"SHOW EDIT VIEW!\")\n\n setEditWorkflowModalOpen(true)\n }}\n >\n \n \n \n \n
    \n \n );\n };\n\n const addCommentNode = () => {\n const newId = uuidv4();\n const position = {\n x: 300,\n y: 300,\n };\n\n cy.add({\n group: \"nodes\",\n data: {\n id: newId,\n label: \"Click to write a comment\",\n type: \"COMMENT\",\n is_valid: true,\n decorator: true,\n width: 250,\n height: 150,\n position: position,\n backgroundcolor: \"#1f2023\",\n color: \"#ffffff\",\n },\n position: position,\n });\n };\n\n const RightSideBar = (props) => {\n const {\n workflow,\n setWorkflow,\n setSelectedAction,\n setUpdate,\n selectedApp,\n workflowExecutions,\n setSelectedResult,\n selectedAction,\n setSelectedApp,\n setSelectedTrigger,\n setSelectedEdge,\n setCurrentView,\n cy,\n setAuthenticationModalOpen,\n setVariablesModalOpen,\n setCodeModalOpen,\n selectedNameChange,\n rightsidebarStyle,\n showEnvironment,\n selectedActionEnvironment,\n environments,\n setNewSelectedAction,\n appApiViewStyle,\n globalUrl,\n setSelectedActionEnvironment,\n requiresAuthentication,\n scrollConfig,\n setScrollConfig,\n } = props;\n\n if (!rightSideBarOpen) {\n return null;\n }\n\n var defaultReturn = null\n if (Object.getOwnPropertyNames(selectedAction).length > 0) {\n if (Object.getOwnPropertyNames(selectedAction).length === 0) {\n return null;\n }\n\n defaultReturn = \n\n } else if (Object.getOwnPropertyNames(selectedComment).length > 0) {\n defaultReturn = \n } else if (Object.getOwnPropertyNames(selectedTrigger).length > 0) {\n if (selectedTrigger.trigger_type === \"SCHEDULE\") {\n defaultReturn = \n } else if (selectedTrigger.trigger_type === \"WEBHOOK\") {\n defaultReturn = \n } else if (selectedTrigger.trigger_type === \"SUBFLOW\") {\n defaultReturn = \n } else if (selectedTrigger.trigger_type === \"EMAIL\") {\n defaultReturn = \n } else if (selectedTrigger.trigger_type === \"USERINPUT\") {\n defaultReturn = \n } else if (selectedTrigger.trigger_type === undefined) {\n //defaultReturn = \n return null;\n } else {\n console.log(\n \"Unable to handle invalid trigger type \" +\n selectedTrigger.trigger_type\n );\n return null;\n }\n } else if (Object.getOwnPropertyNames(selectedEdge).length > 0) {\n defaultReturn = \n }\n\n const iOS = typeof navigator !== 'undefined' && /iPad|iPhone|iPod/.test(navigator.userAgent);\n\n const drawerBleeding = 56;\n if (defaultReturn === undefined || defaultReturn === null) {\n return null\n }\n\n return (\n isMobile ?\n {\n console.log(\"Close!\")\n //setRightSideBarOpen(false)\n cy.elements().unselect()\n }}\n disableSwipeToOpen={false}\n ModalProps={{\n keepMounted: true,\n }}\n PaperProps={{\n style: {\n maxHeight: \"70%\",\n overflow: \"auto\",\n }\n }}\n >\n {defaultReturn}\n \n :\n \n
    \n {defaultReturn}\n
    \n
    \n );\n\n //return null;\n };\n\n // This can execute a workflow with firestore. Used for test, as datastore is old and stuff\n // Too much work to move everything over alone, so won't touch it for now\n //\n //\n\n // A list used for FRONTEND handling of whether a public workflow\n // should be change-able\n const allowList = [\"frikky\", \"m1nk-code\", \"DavidtheGoliath\"]\n // console.log(allowList, userdata.public_username)\n\n const leftView = workflow.public === true ?\n
    \n \n {workflow.name}\n \n \n This workflow is public\tand {\n saveWorkflow()\n }}>must be saved or exported before use.\n \n {Object.getOwnPropertyNames(creatorProfile).length !== 0 && creatorProfile.github_avatar !== undefined && creatorProfile.github_avatar !== null ?\n
    \n {\n }}>\n \n \n \n \n \n Shared by {creatorProfile.github_username}\n \n
    \n : null}\n
    \n {workflow.tags !== undefined && workflow.tags !== null && workflow.tags.length > 0 ?\n
    \n \n Tags\n \n
    \n {workflow.tags.map((tag, index) => {\n if (index >= 3) {\n return null;\n }\n\n return (\n \n );\n })}\n
    \n
    \n : null}\n\n {workflow.blogpost !== undefined && workflow.blogpost !== null && workflow.blogpost.length > 0 ?\n
    \n \n \n Related blog & docs\n \n \n
    \n : null\n }\n\n {appGroup.length > 0 ?\n
    \n
    \n \n Apps\n \n \n {appGroup.map((data, index) => {\n return (\n \n \n \n )\n })}\n \n
    \n
    \n : null}\n\n {triggerGroup.length > 0 ?\n
    \n \n Triggers\n \n \n {triggerGroup.map((data, index) => {\n return (\n \n )\n })}\n \n
    \n : null}\n\n {/*\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\tMitre Att&ck:  \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tTBD\n\t\t\t\t\n\t\t\t
    \n\t\t\t*/}\n\n {/*\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\tRelated Workflows:\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tTBD\n\t\t\t\t\n\t\t\t
    \n\t\t\t*/}\n\n {workflow.video !== undefined && workflow.video !== null && workflow.video.length > 0 ?\n
    \n \n Video\n \n {\n workflow.video.includes(\"loom.com/share\") && workflow.video.split(\"/\").length > 4 ?\n
    \n \n
    \n :\n workflow.video.includes(\"youtube.com\") && workflow.video.split(\"/\").length > 3 && workflow.video.includes(\"v=\")\n ?\n
    \n \n
    \n :\n \n {workflow.video}\n \n }\n
    \n : null}\n\n {workflow.description !== undefined && workflow.description !== null && workflow.description.length > 0 ?\n
    \n \n Description\n \n \n {workflow.description}\n \n
    \n : null}\n\n\t\t\t{/*\n\t\t\t
    \n\t\t\t\t {\n\t\t\t\t\t\tsetSelectionOpen(true)\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\tStatistics\n\t\t\t\t\n\t\t\t
    \n\t\t\t*/}\n {userdata.avatar !== undefined && (userdata.avatar === creatorProfile.github_avatar || allowList.includes(userdata.public_username)) ?\n
    \n \n You can see these buttons because you may have the correct access rights as a creator to help modify this workflow.\n \n {\n // Further checks are being done on the backend\n // Even if the user can \"edit\" a workflow on the frontend,\n // that doesn't necessarily mean anything\n\n //setEditWorkflowDetails(true)\n workflow.public = false\n setUserediting(true)\n setWorkflow(workflow)\n\n getAppAuthentication();\n getEnvironments();\n getWorkflowExecution(props.match.params.key, \"\");\n getAvailableWorkflows(-1);\n getSettings();\n getFiles()\n\n\t\t\t\t\t\t\t// For loading datastore\n\t\t\t\t\t\t\t// listOrgCache(workflow.org_id) \n\n setUpdate(Math.random());\n }}\n >\n Edit Workflow\n \n {\n // setEditWorkflowDetails(true)\n // workflow.public = false\n // setWorkflow(workflow)\n // setUpdate(Math.random());\n }}\n >\n Unpublish Workflow\n \n
    \n : null}\n\n\n
    \n : isMobile && leftViewOpen ?\n \n \n
    \n : leftViewOpen ? (\n \n \n \n ) : (\n \n {\n setLeftViewOpen(true);\n setLeftBarSize(350);\n }}\n >\n \n \n \n \n \n );\n\n const executionPaperStyle = {\n minWidth: \"95%\",\n maxWidth: \"95%\",\n marginTop: \"5px\",\n color: \"white\",\n marginBottom: 10,\n padding: 5,\n backgroundColor: surfaceColor,\n cursor: \"pointer\",\n display: \"flex\",\n minHeight: 40,\n maxHeight: 40,\n };\n\n const parsedExecutionArgument = () => {\n var showResult = executionData.execution_argument.trim();\n const validate = validateJson(showResult);\n\n if (validate.valid) {\n if (typeof validate.result === \"string\") {\n try {\n validate.result = JSON.parse(validate.result);\n } catch (e) {\n console.log(\"Error: \", e);\n validate.valid = false;\n }\n }\n\n return (\n
    \n {\n if (validate.valid) {\n //console.log(\"Find and change result: \", \n //const oldstartnode = cy.getElementById(selectedResult.action.id);\n //if (oldstartnode !== undefined && oldstartnode !== null) {\n //\tconst foundname = oldstartnode.data(\"label\")\n //\tif (foundname !== undefined && foundname !== null) {\n //\t\tresult.action.label = foundname\n //\t}\n //}\n }\n\n setSelectedResult({\n \"action\": {\n \"label\": \"Execution Argument\",\n \"name\": \"Execution Argument\",\n \"large_image\": theme.palette.defaultImage,\n \"image\": theme.palette.defaultImage,\n },\n \"result\": validate.valid ? JSON.stringify(validate.result) : validate.result,\n \"status\": \"SUCCESS\"\n })\n\n setCodeModalOpen(true);\n }}\n >\n \n \n \n \n {\n handleReactJsonClipboard(copy);\n }}\n displayDataTypes={false}\n onSelect={(select) => {\n HandleJsonCopy(validate.result, select, \"exec\");\n }}\n name={\"Execution Argument\"}\n />\n
    \n )\n }\n\n return (\n
    \n

    Execution Argument

    \n
    \n {executionData.execution_argument}\n
    \n
    \n );\n };\n\n const getExecutionSourceImage = (execution) => {\n // This is the playbutton at 150x150\n const defaultImage =\n \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAACOCAMAAADkWgEmAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAWlBMVEX4Wj69TDgmKCvkVTwlJyskJiokJikkJSkjJSn4Ykf+6+f5h3L////8xLr5alH/9fT7nYz4Wz/919H5cVn/+vr8qpv4XUL94d35e2X//v38t6v4YUbkVDy8SzcVIzHLAAAAAWJLR0QMgbNRYwAAAAlwSFlzAAARsAAAEbAByCf1VAAAAAd0SU1FB+QGGgsvBZ/GkmwAAAFKSURBVHja7dlrTgMxDEXhFgpTiukL2vLc/zbZQH5N7MmReu4KPmlGN4m9WgGzfhgtaOZxM1rQztNoQDvPowHtTKMB7WxHA2TJkiVLlixIZMmSRYgsWbIIkSVLFiGyZMkiRNZirBcma/eKZEW87ZGsOBxPRFbE+R3Jio/LlciKuH0iWfH1/UNkRSR3RRYruSvyWKldkcjK7IpUVl5X5LLSuiKbldQV6aycrihgZXRFCau/K2pY3V1RxersijJWX1cUsnq6opLV0RW1rNldUc2a2RXlrHldsQBrTlfcLwv5EZm/PLIgkHXKPHyQRzXzYoO8BjIvzcgnBvJBxny+Ih/7zNEIcpDEHLshh5TIkS5zAI5cFzCXK8hVFHNxh1xzQpfC0BV6XWTJkkWILFmyCJElSxYhsmTJIkSWLFmEyJIlixBZsmQB8stk/U3/Yb49pVcDMg4AAAAldEVYdGRhdGU6Y3JlYXRlADIwMjAtMDYtMjZUMTE6NDc6MDUrMDI6MDD8QCPmAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIwLTA2LTI2VDExOjQ3OjA1KzAyOjAwjR2bWgAAAABJRU5ErkJggg==\";\n const size = 40;\n if (\n execution.execution_source === undefined ||\n execution.execution_source === null ||\n execution.execution_source.length === 0\n ) {\n return (\n \n );\n }\n\n if (execution.execution_source === \"webhook\") {\n return (\n trigger.trigger_type === \"WEBHOOK\")\n .large_image\n }\n style={{ width: size, height: size }}\n />\n );\n } else if (execution.execution_source === \"outlook\") {\n return (\n trigger.trigger_type === \"EMAIL\")\n .large_image\n }\n style={{ width: size, height: size }}\n />\n );\n } else if (execution.execution_source === \"schedule\") {\n return (\n trigger.trigger_type === \"SCHEDULE\")\n .large_image\n }\n style={{ width: size, height: size }}\n />\n );\n } else if (execution.execution_source === \"EMAIL\") {\n return (\n trigger.trigger_type === \"EMAIL\")\n .large_image\n }\n style={{ width: size, height: size }}\n />\n );\n }\n\n if (\n execution.execution_parent !== null &&\n execution.execution_parent !== undefined &&\n execution.execution_parent.length > 0\n ) {\n return (\n trigger.trigger_type === \"SUBFLOW\")\n .large_image\n }\n style={{ width: size, height: size }}\n />\n );\n }\n\n return (\n \n );\n };\n\n const handleReactJsonClipboard = (copy) => {\n console.log(\"COPY: \", copy);\n\n const elementName = \"copy_element_shuffle\";\n var copyText = document.getElementById(elementName);\n if (copyText !== null && copyText !== undefined) {\n if (\n copy.namespace !== undefined &&\n copy.name !== undefined &&\n copy.src !== undefined\n ) {\n copy = copy.src;\n }\n\n const clipboard = navigator.clipboard;\n if (clipboard === undefined) {\n alert.error(\"Can only copy over HTTPS (port 3443)\");\n return;\n }\n\n var stringified = JSON.stringify(copy);\n if (stringified.startsWith('\"') && stringified.endsWith('\"')) {\n stringified = stringified.substring(1, stringified.length - 1);\n }\n\n navigator.clipboard.writeText(stringified);\n copyText.select();\n copyText.setSelectionRange(0, 99999); /* For mobile devices */\n\n /* Copy the text inside the text field */\n document.execCommand(\"copy\");\n\n console.log(\"COPYING!\");\n alert.info(\"Copied value to clipboard, NOT json path.\")\n } else {\n console.log(\"Failed to copy from \" + elementName + \": \", copyText);\n }\n };\n\n const HandleJsonCopy = (base, copy, base_node_name) => {\n if (typeof copy.name === \"string\") {\n copy.name = copy.name.replaceAll(\" \", \"_\");\n }\n\n //lol\n if (typeof base === 'object' || typeof base === 'dict') {\n base = JSON.stringify(base)\n }\n\n if (base_node_name === \"execution_argument\" || base_node_name === \"Execution Argument\") {\n base_node_name = \"exec\"\n }\n\n console.log(\"COPY: \", base_node_name, copy);\n\n //var newitem = JSON.parse(base);\n var newitem = validateJson(base).result\n\n // Check if base_node_name has changed\n if (cy !== undefined && cy !== null) {\n console.log(\"Change name?\")\n //const allNodes = cy.nodes().jsons();\n //for (var key in allNodes) {\n //const currentNode = allNodes[key];\n\n //if (currentNode.\n //}\n\n //const nodedata = cy.getElementById(data.action.id).data();\n //base_node_name = \n }\n\n to_be_copied = \"$\" + base_node_name.toLowerCase().replaceAll(\" \", \"_\");\n for (let copykey in copy.namespace) {\n if (copy.namespace[copykey].includes(\"Results for\")) {\n continue;\n }\n\n if (newitem !== undefined && newitem !== null) {\n newitem = newitem[copy.namespace[copykey]];\n if (!isNaN(copy.namespace[copykey])) {\n to_be_copied += \".#\";\n } else {\n to_be_copied += \".\" + copy.namespace[copykey];\n }\n }\n }\n\n if (newitem !== undefined && newitem !== null) {\n newitem = newitem[copy.name];\n if (!isNaN(copy.name)) {\n to_be_copied += \".#\";\n } else {\n to_be_copied += \".\" + copy.name;\n }\n }\n\n to_be_copied.replaceAll(\" \", \"_\");\n const elementName = \"copy_element_shuffle\";\n var copyText = document.getElementById(elementName);\n if (copyText !== null && copyText !== undefined) {\n console.log(\"NAVIGATOR: \", navigator);\n const clipboard = navigator.clipboard;\n if (clipboard === undefined) {\n alert.error(\"Can only copy over HTTPS (port 3443)\");\n return;\n }\n\n navigator.clipboard.writeText(to_be_copied);\n copyText.select();\n copyText.setSelectionRange(0, 99999); /* For mobile devices */\n\n /* Copy the text inside the text field */\n document.execCommand(\"copy\");\n console.log(\"COPYING!\");\n alert.info(\"Copied JSON path to clipboard.\")\n } else {\n console.log(\"Couldn't find element \", elementName);\n }\n }\n\n // Not used because of issue with state updates.\n const ShowReactJsonField = (props) => {\n const { validate, jsonValue, collapsed, label, autocomplete } = props\n\n const [parsedCollapse, setParsedCollapse] = React.useState(collapsed)\n const [open, setOpen] = React.useState(false);\n const [anchorPosition, setAnchorPosition] = React.useState({\n top: 750,\n left: 16,\n });\n\n const isFirstRender = React.useRef(true)\n useEffect(() => {\n console.log(\"IN useeffectt \" + autocomplete)\n\n if (isFirstRender.current) {\n isFirstRender.current = false;\n console.log(\"IN useeffectt (2)\" + collapsed)\n return;\n }\n })\n /*\n componentWillUpdate = (nextProps, nextState) => {\n console.log(nextProps, nextState)\n //nextState.value = nextProps.a + nextProps.b;\n }\n */\n\n const jsonRef = React.useRef()\n\n return (\n \n {\n console.log(\"FIELD: \", field)\n }}\n enableClipboard={(copy) => {\n handleReactJsonClipboard(copy);\n }}\n displayDataTypes={false}\n onClick={(event) => {\n const pos = {\n top: event.screenX,\n left: event.screenY,\n }\n\n console.log(\"POS CLICK: \", pos)\n\n setAnchorPosition(pos)\n }}\n onSelect={(select) => {\n setOpen(true)\n\n setTimeout(() => {\n setOpen(false)\n }, 2500)\n\n //setAnchorPosition({\n //\ttop: 300,\n //\tright: 300,\n //})\n //setAnchorEl(jsonRef.current)\n HandleJsonCopy(jsonValue, select, autocomplete);\n console.log(\"SELECTED!: \", select);\n }}\n name={label}\n />\n {anchorPosition !== null ?\n {\n setAnchorPosition({\n top: 750,\n left: 16,\n })\n }}\n disableRestoreFocus\n >\n \n Copying\n \n \n : null}\n \n )\n }\n\n const ShowCopyingTooltip = () => {\n const [showCopying, setShowCopying] = React.useState(true)\n\n if (!showCopying) {\n return false\n }\n\n return (\n \n
    \n \n )\n }\n\n var nonskippedResults = []\n if (executionData.results !== undefined) {\n const newSkipped = executionData.results.find((result) => result.status !== \"SKIPPED\")\n if (newSkipped !== undefined) {\n nonskippedResults = newSkipped\n }\n }\n\n\n var executionDelay = -75\n const executionModal = (\n {\n setExecutionModalOpen(false)\n }}\n style={{ resize: \"both\", overflow: \"auto\", zIndex: 10005 }}\n hideBackdrop={false}\n variant=\"temporary\"\n BackdropProps={{\n style: {\n //backgroundColor: \"transparent\",\n }\n }}\n PaperProps={{\n style: {\n resize: \"both\",\n overflow: \"auto\",\n minWidth: isMobile ? \"100%\" : 420,\n maxWidth: isMobile ? \"100%\" : 420,\n backgroundColor: \"#1F2023\",\n color: \"white\",\n fontSize: 18,\n zIndex: 10005,\n borderLeft: theme.palette.defaultBorder,\n },\n }}\n >\n {isMobile ?\n \n {\n e.preventDefault();\n setExecutionModalOpen(false)\n }}\n >\n \n \n \n : null}\n {executionModalView === 0 ? (\n
    \n \n

    \n \n All Executions\n

    \n \n {\n getWorkflowExecution(props.match.params.key, \"\");\n }}\n color=\"primary\"\n >\n \n Refresh executions\n \n \n {workflowExecutions.length > 0 ? (\n
    \n {workflowExecutions.map((data, index) => {\n executionDelay += 50\n\n const statusColor =\n data.status === \"FINISHED\"\n ? green : data.status === \"ABORTED\" || data.status === \"FAILED\"\n ? \"red\"\n : yellow;\n const resultsLength =\n data.results !== undefined && data.results !== null\n ? data.results.length\n : 0;\n\n const timestamp = new Date(data.started_at * 1000)\n .toLocaleString(\"en-GB\")\n .split(\".\")[0]\n .split(\"T\")\n .join(\" \");\n\n var calculatedResult =\n data.workflow.actions !== undefined &&\n data.workflow.actions !== null\n ? data.workflow.actions.length\n : 0;\n\n\t\t\t\t\t\t\t\tif (data.workflow.triggers !== undefined && data.workflow.triggers !== null) {\n \tfor (let triggerkey in data.workflow.triggers) {\n \t const trigger = data.workflow.triggers[triggerkey];\n \t if (\n \t (trigger.app_name === \"User Input\" &&\n \t trigger.trigger_type === \"USERINPUT\") ||\n \t (trigger.app_name === \"Shuffle Workflow\" &&\n \t trigger.trigger_type === \"SUBFLOW\")\n \t ) {\n \t calculatedResult += 1;\n \t }\n \t}\n\t\t\t\t\t\t\t\t}\n\n return (\n \n
    \n \n { }}\n onMouseOut={() => { }}\n onClick={() => {\n if (\n (data.result === undefined ||\n data.result === null ||\n data.result.length === 0) &&\n data.status !== \"FINISHED\" &&\n data.status !== \"ABORTED\"\n ) {\n start();\n setExecutionRunning(true);\n setExecutionRequestStarted(false);\n }\n\n\n // Ensuring we have the latest version of the result.\n // Especially important IF the result is > 1 Mb in cloud\n var checkStarted = false\n if (data.results !== undefined && data.results !== null && data.results.length > 0) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (data.execution_argument !== undefined && data.execution_argument !== null && data.execution_argument.includes(\"too large\")) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetExecutionData({});\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcheckStarted = true \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstart();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetExecutionRunning(true);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetExecutionRequestStarted(false);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (data.results !== undefined && data.results !== null) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor (let resultkey in data.results) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (data.results[resultkey].status !== \"SUCCESS\") {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (data.results[resultkey].result.includes(\"too large\")) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetExecutionData({});\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcheckStarted = true\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstart();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetExecutionRunning(true);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetExecutionRequestStarted(false);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n }\n\n const cur_execution = {\n execution_id: data.execution_id,\n authorization: data.authorization,\n };\n setExecutionRequest(cur_execution);\n setExecutionModalView(1);\n\n if (!checkStarted) {\n handleUpdateResults(data, cur_execution);\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"Clearing colors during click for: !\", data)\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (cy !== undefined && cy !== null) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcy.elements().removeClass(\"success-highlight failure-highlight executing-highlight\");\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor (let actionKey in data.workflow.actions) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar actionitem = data.workflow.actions[actionKey];\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleColoring(actionitem.id, \"\", actionitem.label)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n \t \t\t\t\t\t\t\t\t\t\t\t\tfor (let resultKey in data.results) {\n \t \t\t\t\t\t\t\t\t\t\t\t\t var item = data.results[resultKey];\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleColoring(item.action.id, item.status, item.action.label)\n \t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n setExecutionData(data);\n }\n }}\n >\n
    \n \n \n {getExecutionSourceImage(data)}\n
    \n \n {timestamp}\n
    \n {data.workflow.actions !== null ? (\n \n \n {resultsLength}/{calculatedResult}\n
    \n \n ) : null}\n
    \n \n {lastExecution === data.execution_id ? (\n \n ) : (\n \n )}\n \n \n \n
    \n \n );\n })}\n \n ) : (\n
    There are no executions yet, or they are not loaded.
    \n )}\n \n ) : (\n
    \n \n {\n setExecutionRunning(false);\n stop();\n getWorkflowExecution(props.match.params.key, \"\");\n setExecutionModalView(0);\n setLastExecution(executionData.execution_id);\n }}\n >\n { }}\n >\n \n \n { }}\n >\n See other Executions\n \n \n \n \n
    \n

    Execution info

    \n \n \n {\n //console.log(\"DATA: \", executionData);\n executeWorkflow(\n executionData.execution_argument,\n executionData.start,\n lastSaved\n )\n\n if (executionText === undefined || executionText === null || executionText.length === 0) {\n setExecutionText(executionData.execution_argument)\n }\n\n setExecutionModalOpen(false);\n }}\n >\n \n \n \n \n {executionData.status === \"EXECUTING\" ? (\n \n \n {\n abortExecution();\n }}\n >\n \n \n \n \n ) : null}\n
    \n {executionData.status !== undefined &&\n executionData.status.length > 0 ? (\n
    \n \n Status   \n \n \n {executionData.status}\n \n
    \n ) : null}\n {executionData.execution_source !== undefined &&\n executionData.execution_source !== null &&\n executionData.execution_source.length > 0 &&\n executionData.execution_source !== \"default\" ? (\n
    \n \n Source   \n \n \n {executionData.execution_parent !== null &&\n executionData.execution_parent !== undefined &&\n executionData.execution_parent.length > 0 ? (\n executionData.execution_source === props.match.params.key ? (\n {\n getWorkflowExecution(\n props.match.params.key,\n executionData.execution_parent\n );\n }}\n >\n Parent Execution\n \n ) : (\n \n Parent Workflow\n \n )\n ) : (\n executionData.execution_source\n )}\n \n
    \n ) : null}\n {executionData.started_at !== undefined ? (\n
    \n \n Started   \n \n \n {new Date(executionData.started_at * 1000).toLocaleString(\"en-GB\")}\n \n
    \n ) : null}\n {executionData.completed_at !== undefined &&\n executionData.completed_at !== null &&\n executionData.completed_at > 0 ? (\n
    \n {\n console.log(executionData)\n }}>\n Finished  \n \n \n {new Date(executionData.completed_at * 1000).toLocaleString(\"en-GB\")}\n \n
    \n ) : null}\n
    \n {executionData.execution_argument !== undefined &&\n executionData.execution_argument.length > 0\n ? parsedExecutionArgument()\n : null}\n \n {executionData.results !== undefined &&\n executionData.results !== null &&\n executionData.results.length > 1 &&\n executionData.results.find(\n (result) =>\n result.status === \"SKIPPED\"\n ) ? (\n \n Show skipped actions\n
    \n }\n control={\n {\n setShowSkippedActions(!showSkippedActions);\n }}\n />\n }\n />\n ) : null}\n
    \n
    \n {executionData.status !== undefined &&\n\t\t\t\t\t\t\t\t\texecutionData.status !== \"ABORTED\" &&\n\t\t\t\t\t\t\t\t\texecutionData.status !== \"FINISHED\" &&\n\t\t\t\t\t\t\t\t\texecutionData.status !== \"FAILURE\" &&\n\t\t\t\t\t\t\t\t\texecutionData.status !== \"WAITING\" &&\n !(executionData.results === undefined || executionData.results === null || (executionData.results.length === 0 && executionData.status === \"EXECUTING\")) ? (\n
    \n {\n\t\t\t\t\t\t\t\t\t\tconsole.log(environments, defaultEnvironmentIndex, nonskippedResults)\n\t\t\t\t\t\t\t\t\t}} />\n\n {environments.length > 0 && defaultEnvironmentIndex < environments.length && nonskippedResults.length === 0 && environments[defaultEnvironmentIndex].Name !== \"Cloud\" ?\n \n No results yet. Is Orborus running for the \"{environments[defaultEnvironmentIndex].Name}\" environment? Learn more. If the Workflow doesn't start within 30 seconds with Orborus running, contact support: support@shuffler.io\n \n : null}\n
    \n ) : null}\n
    \n
    \n {\n\t\t\t\t\t\texecutionData.results === undefined ||\n executionData.results === null ||\n (executionData.results.length === 0 && executionData.status === \"EXECUTING\") ? (\n\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t{environments.length > 0 && defaultEnvironmentIndex < environments.length && nonskippedResults.length === 0 && environments[defaultEnvironmentIndex].Name !== \"Cloud\" ?\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tNo results yet. Is Orborus running for the \"{environments[defaultEnvironmentIndex].Name}\" environment? Learn more. If the Workflow doesn't start within 30 seconds with Orborus running, contact support: support@shuffler.io\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t: \n\t\t\t\t\t\t\t\tnull}\n\t\t\t\t\t\t\t
    \n ) : (\n executionData.results.map((data, index) => {\n if (executionData.results.length !== 1 && !showSkippedActions && (data.status === \"SKIPPED\")) {\n return null;\n }\n\n // FIXME: The latter replace doens't really work if ' is used in a string\n var showResult = data.result.trim();\n const validate = validateJson(showResult);\n\n const curapp = apps.find(\n (a) =>\n a.name === data.action.app_name &&\n a.app_version === data.action.app_version\n );\n const imgsize = 50;\n const statusColor =\n data.status === \"FINISHED\" || data.status === \"SUCCESS\"\n ? green\n : data.status === \"ABORTED\" || data.status === \"FAILURE\"\n ? \"red\"\n : yellow;\n\n var imgSrc = curapp === undefined ? \"\" : curapp.large_image;\n if (\n imgSrc.length === 0 &&\n workflow.actions !== undefined &&\n workflow.actions !== null\n ) {\n // Look for the node in the workflow\n const action = workflow.actions.find(\n (action) => action.id === data.action.id\n );\n if (action !== undefined && action !== null) {\n imgSrc = action.large_image;\n }\n }\n\n var actionimg =\n curapp === null ? null : (\n \n );\n\n if (triggers.length > 2) {\n if (data.action.app_name === \"shuffle-subflow\") {\n const parsedImage = triggers[4].large_image;\n actionimg = (\n \n );\n }\n\n if (data.action.app_name === \"User Input\") {\n actionimg = (\n \n );\n }\n }\n\n if (\n data.action.app_name === \"Shuffle Tools\" &&\n data.action.id !== undefined &&\n cy !== undefined\n ) {\n const nodedata = cy.getElementById(data.action.id).data();\n if (\n nodedata !== undefined &&\n nodedata !== null &&\n nodedata.fillstyle === \"linear-gradient\"\n ) {\n var imgStyle = {\n marginRight: 20,\n width: imgsize,\n height: imgsize,\n border: `2px solid ${statusColor}`,\n borderRadius:\n executionData.start === data.action.id ? 25 : 5,\n background: `linear-gradient(to right, ${nodedata.fillGradient})`,\n };\n\n actionimg = (\n \n );\n }\n }\n\n if (validate.valid && typeof validate.result === \"string\") {\n validate.result = JSON.parse(validate.result);\n }\n\n if (validate.valid && typeof validate.result === \"object\") {\n if (\n validate.result.result !== undefined &&\n validate.result.result !== null\n ) {\n try {\n validate.result.result = JSON.parse(validate.result.result);\n } catch (e) {\n //console.log(\"ERROR PARSING: \", e)\n }\n }\n }\n\n\n\t\t\t\t\t\t\tvar similarActionsView = null\n\t\t\t\t\t\t\tif (data.similar_actions !== undefined && data.similar_actions !== null) {\n\t\t\t\t\t\t\t\tvar minimumMatch = 85\n\t\t\t\t\t\t\t\tvar matching_executions = []\n\t\t\t\t\t\t\t\tif (data.similar_actions !== undefined && data.similar_actions !== null) {\n\t\t\t\t\t\t\t\t\tfor (let [k,kval] in Object.entries(data.similar_actions)){\n\t\t\t\t\t\t\t\t\t\tif (data.similar_actions.hasOwnProperty(k)) {\n\t\t\t\t\t\t\t\t\t\t\tif (data.similar_actions[k].similarity > minimumMatch) {\n\t\t\t\t\t\t\t\t\t\t\t\tmatching_executions.push(data.similar_actions[k].execution_id)\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n if (matching_executions.length !== 0) {\n var parsed_url = matching_executions.join(\",\")\n\n similarActionsView =\n \n {\n navigate(`?execution_highlight=${parsed_url}`)\n }}\n >\n \n \n \n }\n }\n\n\n return (\n {\n var currentnode = cy.getElementById(data.action.id);\n if (currentnode !== undefined && currentnode !== null && currentnode.length !== 0) {\n currentnode.addClass(\"shuffle-hover-highlight\");\n }\n\n // Add a hover highlight\n\n //var copyText = document.getElementById(\n //\t\"copy_element_shuffle\"\n //)\n }}\n onMouseOut={() => {\n var currentnode = cy.getElementById(data.action.id);\n if (currentnode.length !== 0) {\n currentnode.removeClass(\"shuffle-hover-highlight\");\n }\n }}\n >\n
    \n
    \n {\n const oldstartnode = cy.getElementById(data.action.id);\n console.log(\"FOUND NODe: \", oldstartnode)\n if (oldstartnode !== undefined && oldstartnode !== null) {\n const foundname = oldstartnode.data(\"label\")\n if (foundname !== undefined && foundname !== null) {\n data.action.label = foundname\n }\n }\n\n console.log(\"Click data: \", data)\n //data.action.label = \"\"\n setSelectedResult(data);\n setCodeModalOpen(true);\n }}\n >\n \n \n \n \n {actionimg}\n
    \n \n {data.action.label}\n
    \n
    \n \n {data.action.name}\n \n
    \n
    \n
    \n {data.action.app_name === \"shuffle-subflow\" &&\n validate.result.success !== undefined &&\n validate.result.success === true ? (\n \n {validate.valid &&\n data.action.parameters !== undefined &&\n data.action.parameters !== null &&\n data.action.parameters.length > 0 ? (\n data.action.parameters[0].value ===\n props.match.params.key ? (\n {\n getWorkflowExecution(\n props.match.params.key,\n validate.result.execution_id\n );\n }}\n >\n \n \n ) : (\n { }}\n >\n \n \n )\n ) : (\n \"\"\n )}\n \n ) : null}\n
    \n
    \n \n Status \n \n \n {data.status}\n \n {similarActionsView}\n
    \n {validate.valid ? (\n \n {\n handleReactJsonClipboard(copy);\n }}\n displayDataTypes={false}\n onSelect={(select) => {\n HandleJsonCopy(showResult, select, data.action.label);\n console.log(\"SELECTED!: \", select);\n }}\n name={\"Results for \" + data.action.label}\n />\n\n \n ) : (\n \n \n Result \n \n \n {data.result}\n \n \n )}\n \n );\n })\n )}\n \n )}\n \n );\n\n // This sucks :)\n const curapp = !codeModalOpen\n ? {}\n : selectedResult.action.app_name === \"shuffle-subflow\"\n ? triggers[2]\n : selectedResult.action.app_name === \"User Input\"\n ? triggers[3]\n : apps.find(\n (a) =>\n a.name === selectedResult.action.app_name &&\n a.app_version === selectedResult.action.app_version\n );\n const imgsize = 50;\n const statusColor = !codeModalOpen\n ? \"red\"\n : selectedResult.status === \"FINISHED\" ||\n selectedResult.status === \"SUCCESS\"\n ? green\n : selectedResult.status === \"ABORTED\" || selectedResult.status === \"FAILURE\"\n ? \"red\"\n : yellow;\n\n const validate = !codeModalOpen\n ? \"\"\n : validateJson(selectedResult.result.trim());\n\n if (validate.valid && typeof validate.result === \"string\") {\n validate.result = JSON.parse(validate.result);\n }\n\n const AppResultVariable = ({ data }) => {\n const [open, setOpen] = React.useState(false)\n const showVariable = data.value.length < 60\n\n return (\n
    \n {data.value.length > 60 ?\n {\n if (!showVariable) {\n setOpen(!open)\n }\n }}\n >\n \n {data.name} {showVariable ? data.value : null}\n \n \n :\n \n {data.name}: {showVariable ? data.value : null}\n \n }\n {open ?\n \n {data.value}\n \n : null}\n
    \n )\n }\n\n var draggingDisabled = false;\n const codePopoutModal = !codeModalOpen ? null : (\n \n \n \n {\n e.preventDefault();\n\n\t\t\t\t\t\t\t\tif (workflowExecutions !== null) {\n \tfor (let execkey in workflowExecutions) {\n \t const execution = workflowExecutions[execkey];\n\t\t\t\t\t\t\t\t\t\tif (execution.execution_argument.includes(\"too large\")) {\n\t\t\t\t\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t\t\t\t\t}\n\n \t const result = execution.results.find((data) => data.status === \"SUCCESS\" && data.action.id === selectedResult.action.id)\n\n\t\t\t\t\t\t\t\t\t\tif (result !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\tconst oldstartnode = cy.getElementById(selectedResult.action.id);\n\t\t\t\t\t\t\t\t\t\t\tif (oldstartnode !== undefined && oldstartnode !== null) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst foundname = oldstartnode.data(\"label\")\n\t\t\t\t\t\t\t\t\t\t\t\tif (foundname !== undefined && foundname !== null) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tresult.action.label = foundname\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\tsetSelectedResult(result);\n\t\t\t\t\t\t\t\t\t\t\tsetUpdate(Math.random());\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n \t}\n\t\t\t\t\t\t\t\t}\n }}\n >\n \n \n
    \n \n {\n e.preventDefault();\n for (let execkey in workflowExecutions) {\n const execution = workflowExecutions[execkey];\n const result = execution.results.find(\n (data) =>\n data.action.id === selectedResult.action.id &&\n data.status !== \"SUCCESS\" &&\n data.status !== \"SKIPPED\" &&\n data.status !== \"WAITING\"\n );\n\n if (result !== undefined) {\n const oldstartnode = cy.getElementById(selectedResult.action.id);\n if (oldstartnode !== undefined && oldstartnode !== null) {\n const foundname = oldstartnode.data(\"label\")\n if (foundname !== undefined && foundname !== null) {\n result.action.label = foundname\n }\n }\n\n setSelectedResult(result);\n setUpdate(Math.random());\n break;\n }\n }\n }}\n >\n \n \n \n \n {\n e.preventDefault();\n const executionIndex = workflowExecutions.findIndex((data) => data.execution_id === selectedResult.execution_id);\n\n if (executionIndex !== -1) {\n setExecutionModalOpen(true);\n setExecutionModalView(1);\n\n\t\t\t\t\t\t\t\tif (workflowExecutions[executionIndex] !== undefined && workflowExecutions[executionIndex] !== null && workflowExecutions[executionIndex].execution_argument.includes(\"too large\")) {\n\t\t\t\t\t\t\t\t\t//checkStarted = true \n\t\t\t\t\t\t\t\t\tsetExecutionData({});\n\t\t\t\t\t\t\t\t\tstart();\n\t\t\t\t\t\t\t\t\tsetExecutionRunning(true);\n\t\t\t\t\t\t\t\t\tsetExecutionRequestStarted(false);\n\t\t\t\t\t\t\t\t} else {\n \tsetExecutionData(workflowExecutions[executionIndex]);\n\t\t\t\t\t\t\t\t}\n }\n }}\n >\n \n \n \n \n {\n e.preventDefault();\n setCodeModalOpen(false);\n }}\n >\n \n \n \n
    \n
    \n
    \n {curapp === null ? null : (\n \n )}\n\n
    \n \n {selectedResult.action.label}\n
    \n
    {selectedResult.action.name}
    \n
    \n
    \n
    \n Status {selectedResult.status}\n
    \n\n {validate.valid ? (\n {\n handleReactJsonClipboard(copy);\n }}\n displayDataTypes={false}\n onSelect={(select) => {\n HandleJsonCopy(validate.result, select, selectedResult.action.label);\n }}\n name={\"Results for \" + selectedResult.action.label}\n />\n ) : (\n
    \n Result\n\t\t\t\t\t\t
    \n {\n console.log(\"IN HERE TO CLICK\");\n to_be_copied = selectedResult.result;\n var copyText = document.getElementById(\n \"copy_element_shuffle\"\n );\n console.log(\"PRECOPY: \", to_be_copied);\n if (copyText !== null && copyText !== undefined) {\n console.log(\"COPY: \", copyText);\n console.log(\"NAVIGATOR: \", navigator);\n const clipboard = navigator.clipboard;\n if (clipboard === undefined) {\n alert.error(\"Can only copy over HTTPS (port 3443)\");\n return;\n }\n\n navigator.clipboard.writeText(to_be_copied);\n\n copyText.select();\n copyText.setSelectionRange(\n 0,\n 99999\n ); /* For mobile devices */\n\n /* Copy the text inside the text field */\n document.execCommand(\"copy\");\n } else {\n console.log(\n \"Failed to copy. copy_element_shuffle is undefined\"\n );\n }\n }}\n >\n {selectedResult.result}\n \n
    \n )}\n
    \n {selectedResult.action.parameters !== null &&\n selectedResult.action.parameters !== undefined ? (\n
    \n \n \n Variables (click to expand)\n \n {selectedResult.action.parameters.map((data, index) => {\n if (data.value.length === 0) {\n return null;\n }\n\n if (\n data.example !== undefined &&\n data.example !== null &&\n data.example.includes(\"***\")\n ) {\n return null;\n }\n\n return (\n \n );\n })}\n
    \n ) : null}\n
    \n \n \n );\n\n const newView = (\n
    \n \n {/*isMobile ? null : leftView*/}\n {leftView}\n {workflow.id === undefined || workflow.id === null || appsLoaded === false ? (\n \n \n \n Loading Workflow\n \n
    \n ) : (\n \n {\n // FIXME: There's something specific loading when\n // you do the first hover of a node. Why is this different?\n //console.log(\"CY: \", incy)\n setCy(incy);\n }}\n />\n \n )}\n \n {executionModal}\n \n \n \n \n );\n\n const editWorkflowModal =\n {\n setEditWorkflowDetails(false)\n }}\n PaperProps={{\n style: {\n pointerEvents: \"auto\",\n backgroundColor: surfaceColor,\n color: \"white\",\n border: theme.palette.defaultBorder,\n maxWidth: \"100%\",\n padding: 50,\n },\n }}\n >\n Edit workflow!\n \n\n const ExecutionVariableModal = (props) => {\n const { variableInfo } = props\n\n const [newVariableName, setNewVariableName] = React.useState(variableInfo.name !== undefined ? variableInfo.name : \"\");\n const [newVariableDescription, setNewVariableDescription] = React.useState(variableInfo.description !== undefined ? variableInfo.description : \"\");\n const [newVariableValue, setNewVariableValue] = React.useState(variableInfo.value !== undefined ? variableInfo.value : \"\");\n\n if (!executionVariablesModalOpen) {\n return null\n }\n\n return (\n {\n setNewVariableName(\"\");\n setNewVariableValue(\"\");\n\n setExecutionVariablesModalOpen(false);\n }}\n PaperProps={{\n style: {\n pointerEvents: \"auto\",\n backgroundColor: surfaceColor,\n color: \"white\",\n border: theme.palette.defaultBorder,\n maxWidth: isMobile ? bodyWidth - 100 : 800,\n\t\t\t\t\t\tminWidth: isMobile ? bodyWidth - 100 : 800,\n },\n }}\n >\n \n \n Execution Variable\n \n \n Execution Variables are TEMPORARY variables that you can only be set\n and used during execution. Learn more{\" \"}\n \n here\n \n setNewVariableName(event.target.value)}\n color=\"primary\"\n placeholder=\"Name\"\n style={{ marginTop: 25 }}\n InputProps={{\n style: {\n color: \"white\",\n },\n }}\n margin=\"dense\"\n\t\t\t\t\t\t\tlabel=\"Name\"\n fullWidth\n defaultValue={newVariableName}\n />\n setNewVariableValue(event.target.value)}\n color=\"primary\"\n placeholder=\"Default Value (optional)\"\n style={{ marginTop: 25 }}\n InputProps={{\n style: {\n color: \"white\",\n },\n }}\n margin=\"dense\"\n\t\t\t\t\t\t\tlabel=\"Default Value (optional)\"\n fullWidth\n defaultValue={newVariableValue}\n />\n \n \n {\n setNewVariableName(\"\");\n setNewVariableValue(\"\");\n setExecutionVariablesModalOpen(false);\n }}\n color=\"primary\"\n >\n Cancel\n \n {\n console.log(\"VARIABLES! \", newVariableName);\n if (\n workflow.execution_variables === undefined ||\n workflow.execution_variables === null\n ) {\n workflow.execution_variables = [];\n }\n\n // try to find one with the same name\n const found = workflow.execution_variables.findIndex(\n (data) => data.name === newVariableName\n );\n //console.log(found)\n if (found !== -1) {\n if (newVariableName.length > 0) {\n workflow.execution_variables[found].name = newVariableName;\n }\n\n\t\t\t\t\t\t\t\t\tif (newVariableValue.length > 0) {\n\t\t\t\t\t\t\t\t\t\tworkflow.execution_variables[found].value = newVariableValue;\n\t\t\t\t\t\t\t\t\t}\n } else {\n workflow.execution_variables.push({\n name: newVariableName,\n value: newVariableValue,\n description: \"An execution variable\",\n id: uuidv4(),\n });\n }\n\n setExecutionVariablesModalOpen(false);\n setNewVariableName(\"\");\n setWorkflow(workflow);\n }}\n color=\"primary\"\n >\n Submit\n \n \n {workflowExecutions.length > 0 ? (\n \n \n Values from last 3 executions\n {workflowExecutions.slice(0, 3).map((execution, index) => {\n if (\n execution.execution_variables === undefined ||\n execution.execution_variables === null ||\n execution.execution_variables === 0\n ) {\n return null;\n }\n\n const variable = execution.execution_variables.find(\n (data) => data.name === newVariableName\n )\n if (variable === undefined || variable.value === undefined) {\n return null;\n }\n\n return (\n
    \n {index + 1}: {variable.value}\n
    \n );\n })}\n
    \n ) : null}\n
    \n \n )\n }\n\n const VariablesModal = (props) => {\n const { setVariableInfo, variableInfo } = props\n\n const [newVariableName, setNewVariableName] = React.useState(variableInfo.name !== undefined ? variableInfo.name : \"\");\n const [newVariableDescription, setNewVariableDescription] = React.useState(variableInfo.description !== undefined ? variableInfo.description : \"\");\n const [newVariableValue, setNewVariableValue] = React.useState(variableInfo.value !== undefined ? variableInfo.value : \"\");\n\n if (!variablesModalOpen) {\n return null\n }\n\n return (\n {\n setNewVariableName(\"\");\n setNewVariableDescription(\"\");\n setNewVariableValue(\"\");\n setVariablesModalOpen(false);\n }}\n PaperProps={{\n style: {\n pointerEvents: \"auto\",\n backgroundColor: surfaceColor,\n color: \"white\",\n border: theme.palette.defaultBorder,\n maxWidth: isMobile ? bodyWidth - 100 : \"100%\",\n },\n }}\n >\n \n \n Workflow Variable\n \n \n setNewVariableName(event.target.value)}\n color=\"primary\"\n placeholder=\"Name\"\n InputProps={{\n style: {\n color: \"white\",\n },\n }}\n margin=\"dense\"\n fullWidth\n defaultValue={newVariableName}\n />\n setNewVariableDescription(event.target.value)}\n color=\"primary\"\n placeholder=\"Description\"\n margin=\"dense\"\n fullWidth\n InputProps={{\n style: {\n color: \"white\",\n },\n }}\n defaultValue={newVariableDescription}\n />\n setNewVariableValue(event.target.value)}\n rows=\"6\"\n multiline\n color=\"primary\"\n placeholder=\"Value\"\n margin=\"dense\"\n InputProps={{\n style: {\n color: \"white\",\n },\n }}\n fullWidth\n defaultValue={newVariableValue}\n />\n \n \n {\n setNewVariableName(\"\");\n setNewVariableDescription(\"\");\n setNewVariableValue(\"\");\n setVariablesModalOpen(false);\n }}\n color=\"primary\"\n >\n Cancel\n \n {\n var handled = false\n if (\n workflow.workflow_variables === undefined ||\n workflow.workflow_variables === null\n ) {\n workflow.workflow_variables = [];\n } else {\n if (variableInfo.index !== undefined && variableInfo.index !== null && variableInfo.index >= 0) {\n if (newVariableName.length > 0) {\n workflow.workflow_variables[variableInfo.index].name = newVariableName;\n }\n if (newVariableDescription.length > 0) {\n workflow.workflow_variables[variableInfo.index].description =\n newVariableDescription;\n }\n if (newVariableValue.length > 0) {\n workflow.workflow_variables[variableInfo.index].value = newVariableValue;\n }\n\n handled = true\n }\n }\n\n if (!handled) {\n // try to find one with the same name\n const found = workflow.workflow_variables.findIndex(\n (data) => data.name === newVariableName\n );\n if (found !== -1) {\n if (newVariableName.length > 0) {\n workflow.workflow_variables[found].name = newVariableName;\n }\n if (newVariableDescription.length > 0) {\n workflow.workflow_variables[found].description =\n newVariableDescription;\n }\n if (newVariableValue.length > 0) {\n workflow.workflow_variables[found].value = newVariableValue;\n }\n } else {\n workflow.workflow_variables.push({\n name: newVariableName,\n description: newVariableDescription,\n value: newVariableValue,\n id: uuidv4(),\n });\n }\n }\n\n setVariableInfo({})\n setWorkflow(workflow);\n setVariablesModalOpen(false);\n setNewVariableName(\"\");\n setNewVariableDescription(\"\");\n setNewVariableValue(\"\");\n }}\n color=\"primary\"\n >\n Submit\n \n \n \n \n )\n }\n\n const AuthenticationData = (props) => {\n const selectedApp = props.app;\n\n const [authenticationOption, setAuthenticationOptions] = React.useState({\n app: JSON.parse(JSON.stringify(selectedApp)),\n fields: {},\n label: \"\",\n usage: [\n {\n workflow_id: workflow.id,\n },\n ],\n id: uuidv4(),\n active: true,\n });\n\n if (\n selectedApp.authentication === undefined ||\n selectedApp.authentication.parameters === null ||\n selectedApp.authentication.parameters === undefined ||\n selectedApp.authentication.parameters.length === 0\n ) {\n return (\n \n \n {selectedApp.name} does not require authentication\n \n \n );\n }\n\n authenticationOption.app.actions = [];\n\n for (let paramkey in selectedApp.authentication.parameters) {\n if (\n authenticationOption.fields[\n selectedApp.authentication.parameters[paramkey].name\n ] === undefined\n ) {\n authenticationOption.fields[\n selectedApp.authentication.parameters[paramkey].name\n ] = \"\";\n }\n }\n\n const handleSubmitCheck = () => {\n if (authenticationOption.label.length === 0) {\n authenticationOption.label = `Auth for ${selectedApp.name}`;\n }\n\n // Automatically mapping fields that already exist (predefined).\n // Warning if fields are NOT filled\n for (let paramkey in selectedApp.authentication.parameters) {\n if (\n authenticationOption.fields[\n selectedApp.authentication.parameters[paramkey].name\n ].length === 0\n ) {\n if (\n selectedApp.authentication.parameters[paramkey].value !== undefined &&\n selectedApp.authentication.parameters[paramkey].value !== null &&\n selectedApp.authentication.parameters[paramkey].value.length > 0\n ) {\n authenticationOption.fields[\n selectedApp.authentication.parameters[paramkey].name\n ] = selectedApp.authentication.parameters[paramkey].value;\n } else {\n if (\n selectedApp.authentication.parameters[paramkey].schema.type === \"bool\"\n ) {\n authenticationOption.fields[\n selectedApp.authentication.parameters[paramkey].name\n ] = \"false\";\n } else {\n alert.info(\n \"Field \" +\n selectedApp.authentication.parameters[paramkey].name +\n \" can't be empty\"\n );\n return;\n }\n }\n }\n }\n\n console.log(\"Action: \", selectedAction);\n selectedAction.authentication_id = authenticationOption.id;\n selectedAction.selectedAuthentication = authenticationOption;\n if (\n selectedAction.authentication === undefined ||\n selectedAction.authentication === null\n ) {\n selectedAction.authentication = [authenticationOption];\n } else {\n selectedAction.authentication.push(authenticationOption);\n }\n\n setSelectedAction(selectedAction);\n\n var newAuthOption = JSON.parse(JSON.stringify(authenticationOption));\n var newFields = [];\n\t\t\tconsole.log(\"Fields: \", newAuthOption.fields)\n for (let authkey in newAuthOption.fields) {\n const value = newAuthOption.fields[authkey];\n newFields.push({\n \"key\": authkey,\n \"value\": value,\n });\n }\n\n newAuthOption.fields = newFields;\n setNewAppAuth(newAuthOption);\n\n if (configureWorkflowModalOpen) {\n setSelectedAction({});\n }\n\n setUpdate(authenticationOption.id);\n };\n\n if (\n authenticationOption.label === null ||\n authenticationOption.label === undefined\n ) {\n authenticationOption.label = selectedApp.name + \" authentication\";\n }\n\n return (\n
    \n \n
    \n Authentication for {selectedApp.name}\n
    \n
    \n \n \n What is app authentication?\n \n
    \n These are required fields for authenticating with {selectedApp.name}\n
    \n Name - what is this used for?\n {\n authenticationOption.label = event.target.value;\n }}\n />\n \n
    \n {selectedApp.authentication.parameters.map((data, index) => {\n return (\n
    \n \n {data.name}\n\n {data.schema !== undefined &&\n data.schema !== null &&\n data.schema.type === \"bool\" ? (\n {\n console.log(\"Value: \", e.target.value);\n authenticationOption.fields[data.name] = e.target.value;\n }}\n style={{\n backgroundColor: theme.palette.surfaceColor,\n color: \"white\",\n height: 50,\n }}\n >\n \n false\n \n \n true\n \n \n ) : (\n {\n authenticationOption.fields[data.name] =\n event.target.value;\n }}\n />\n )}\n
    \n );\n })}\n \n \n {\n setAuthenticationModalOpen(false);\n }}\n color=\"primary\"\n >\n Cancel\n \n {\n setAuthenticationOptions(authenticationOption);\n handleSubmitCheck();\n }}\n color=\"primary\"\n >\n Submit\n \n \n
    \n );\n };\n\n const configureWorkflowModal =\n configureWorkflowModalOpen && apps.length !== 0 ? (\n \n {\n setConfigureWorkflowModalOpen(false);\n }}\n >\n \n \n \n \n ) : null;\n\n // This whole part is redundant. Made it part of Arguments instead.\n const authenticationModal = authenticationModalOpen ? (\n {\n //if (configureWorkflowModalOpen) {\n // setSelectedAction({});\n //}\n }}\n PaperProps={{\n style: {\n pointerEvents: \"auto\",\n backgroundColor: surfaceColor,\n color: \"white\",\n minWidth: 1100,\n minHeight: 700,\n maxHeight: 700,\n padding: 15,\n overflow: \"hidden\",\n zIndex: 10012,\n border: theme.palette.defaultBorder,\n },\n }}\n >\n \n {selectedApp.reference_info === undefined ||\n selectedApp.reference_info === null ||\n selectedApp.reference_info.github_url === undefined ||\n selectedApp.reference_info.github_url === null ||\n selectedApp.reference_info.github_url.length === 0 ? (\n \n \n \n ) : (\n \n \n \n )}\n
    \n {\n setAuthenticationModalOpen(false);\n if (configureWorkflowModalOpen) {\n setSelectedAction({});\n }\n }}\n >\n \n \n
    \n \n {authenticationType.type === \"oauth2\" ? (\n \n ) : (\n \n )}\n
    \n \n {selectedApp.documentation === undefined ||\n selectedApp.documentation === null ||\n selectedApp.documentation.length === 0 ? (\n \n \n {selectedApp.description}\n \n \n \n There is currently no extended documentation available for this\n app.\n \n \n Want help help making or using this app?{\" \"}\n \n Join the community on Discord!\n \n \n\n \n Want to help change this app directly?\n \n {selectedApp.reference_info === undefined ||\n selectedApp.reference_info === null ||\n selectedApp.reference_info.github_url === undefined ||\n selectedApp.reference_info.github_url === null ||\n selectedApp.reference_info.github_url.length === 0 ? (\n \n \n \n Check it out on Github!\n \n \n \n ) : (\n \n \n \n Check it out on Github!\n \n \n \n )}\n \n ) : (\n \n )}\n
    \n
    \n \n ) : null;\n\n\t// Should get AI autocompletes\n\tconst aiSubmit = (value, setResponseMsg, setSuggestionLoading, inputAction) => {\n\t\tif (setResponseMsg !== undefined) {\n\t\t\tsetResponseMsg(\"\")\n\t\t}\n\n\t\tif (value === undefined || value === \"\") {\n\t\t\tconsole.log(\"No value input!\")\n\t\t\treturn\n\t\t}\n\n\t\tif (setSuggestionLoading !== undefined) {\n\t\t\tsetSuggestionLoading(true)\n\t\t}\n\t\n\t\tconsole.log(\"Submit conversation with value: \", value);\n\n\t\t// This is to find sample response and parse it as string\n\t\t\n\t\tvar AppContext = []\n\t\tif (inputAction !== undefined && inputAction !== null) {\n\t\t\tconst parents = getParents(inputAction)\n\n\t\t\tconsole.log(\"Parents: \", parents)\n\t\t\tvar actionlist = []\n\t\t\tif (parents.length > 1) {\n\t\t\t\tfor (let [key,keyval] in Object.entries(parents)) {\n\t\t\t\t\tconst item = parents[key];\n\t\t\t\t\tif (item.label === \"Execution Argument\") {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar exampledata = item.example === undefined || item.example === null ? \"\" : item.example;\n\t\t\t\t\t// Find previous execution and their variables\n\t\t\t\t\t//exampledata === \"\" &&\n\t\t\t\t\tif (workflowExecutions.length > 0) {\n\t\t\t\t\t\t// Look for the ID\n\t\t\t\t\t\tconst found = false;\n\t\t\t\t\t\tfor (let [key,keyval] in Object.entries(workflowExecutions)) {\n\t\t\t\t\t\t\tif (workflowExecutions[key].results === undefined || workflowExecutions[key].results === null) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tvar foundResult = workflowExecutions[key].results.find((result) => result.action.id === item.id);\n\t\t\t\t\t\t\tif (foundResult === undefined || foundResult === null) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (foundResult.result !== undefined && foundResult.result !== null) {\n\t\t\t\t\t\t\t\tfoundResult = foundResult.result\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst valid = validateJson(foundResult, true)\n\t\t\t\t\t\t\tif (valid.valid) {\n\t\t\t\t\t\t\t\tif (valid.result.success === false) {\n\t\t\t\t\t\t\t\t\t//console.log(\"Skipping success false autocomplete\")\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\texampledata = valid.result;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\texampledata = foundResult;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// 1. Take\n\t\t\t\t\tconst itemlabelComplete = item.label === null || item.label === undefined ? \"\" : item.label.split(\" \").join(\"_\");\n\n\t\t\t\t\tconst actionvalue = {\n\t\t\t\t\t\tapp_name: item.app_name,\n\t\t\t\t\t\taction_name: item.name,\n\t\t\t\t\t\tlabel: item.label,\n\n\t\t\t\t\t\ttype: \"action\",\n\t\t\t\t\t\tid: item.id,\n\t\t\t\t\t\tname: item.label,\n\t\t\t\t\t\tautocomplete: itemlabelComplete,\n\t\t\t\t\t\texample: exampledata,\n\t\t\t\t\t};\n\n\t\t\t\t\tactionlist.push(actionvalue);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar fixedResults = []\n\t\t\tfor (var i = 0; i < actionlist.length; i++) {\n\t\t\t\tconst item = actionlist[i];\n\t\t\t\tconst responseFix = SetJsonDotnotation(item.example, \"\") \n\t\t\t\t\n\t\t\t\t// Check if json\n\t\t\t\tconst validated = validateJson(responseFix)\n\t\t\t\tvar exampledata = responseFix;\n\t\t\t\tif (validated.valid) {\n\t\t\t\t\texampledata = JSON.stringify(validated.result)\n\t\t\t\t}\n\n\t\t\t\tAppContext.push({\n\t\t\t\t\t\"app_name\": item.app_name,\n\t\t\t\t\t\"action_name\": item.action_name,\n\t\t\t\t\t\"label\": item.label,\n\t\t\t\t\t\"example\": exampledata,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\tvar conversationData = {\n\t\t\t\"query\": value,\n\t\t\t\"output_format\": \"action\",\n\t\t\t\"app_context\": AppContext,\n\n\t\t\t\"workflow_id\": workflow.id,\n\t\t}\n\n\t\tif (inputAction !== undefined) {\n\t\t\tconsole.log(\"Add app context! This should them get parameters directly\")\n\t\t\tconversationData.output_format = \"action_parameters\"\n\n\t\t\tconversationData.app_id = inputAction.app_id\n\t\t\tconversationData.app_name = inputAction.app_name\n\t\t\tconversationData.action_name = inputAction.name\n\t\t\tconversationData.parameters = inputAction.parameters\n\n\t\t\tif (!value.includes(inputAction.label)) {\n\t\t\t\tconversationData.query = inputAction.label.replace(\"_\", \" \", -1)\n\t\t\t}\n\t\t}\n\n\t\t// Onprem not available yet (April 2023)\n\t\t// Should: Make OpenAI work for them with their own key\n\t\t//fetch(\"https://shuffler.io/api/v1/conversation\", {\n\t\tfetch(`${globalUrl}/api/v1/conversation`, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: {\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\tAccept: \"application/json\",\n\t\t\t},\n\t\t\tbody: JSON.stringify(conversationData),\n\t\t\tcredentials: \"include\",\n\t\t})\n\t\t.then((response) => {\n\t\t\tif (setSuggestionLoading !== undefined) {\n\t\t\t\tsetSuggestionLoading(false)\n\t\t\t}\n\n\t\t\tif (response.status !== 200) {\n\t\t\t\tconsole.log(\"Status not 200 for stream results :O!\");\n\t\t\t}\n\n\t\t\treturn response.json();\n\t\t})\n\t\t.then((responseJson) => {\n\t\t\tconsole.log(\"Conversation response: \", responseJson)\n\t\t\tif (responseJson.success === false) {\n\t\t\t\tif (responseJson.reason !== undefined) {\n\t\t\t\t\tif (setResponseMsg !== undefined) {\n\t\t\t\t\t\tsetResponseMsg(responseJson.reason)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (inputAction !== undefined) {\n\t\t\t\tconsole.log(\"In input action! Should check params if they match, and add suggestions\")\n\n\t\t\t\tif (responseJson.parameters === undefined || responseJson.parameters.length === 0) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tvar changed = false\n\n\t\t\t\tfor (let paramkey in inputAction.parameters) {\n\t\t\t\t\tconst actionParam = inputAction.parameters[paramkey]\n\n\t\t\t\t\tif (actionParam.autocompleted === true) {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\n\t\t\t\t\tif (actionParam.configuration === true && actionParam.name !== \"url\") {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\n\t\t\t\t\tif (actionParam.value !== \"\" && actionParam.value !== actionParam.example) {\n\t\t\t\t\t\tconsole.log(\"Skipping: \", actionParam)\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (let respParam of responseJson.parameters) {\n\t\t\t\t\t\tif (respParam.name === actionParam.name) {\n\t\t\t\t\t\t\tconsole.log(\"Found match for param: \", respParam)\n\n\t\t\t\t\t\t\tif (respParam.value === \"\") {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tchanged = true\n\t\t\t\n\t\t\t\t\t\t\tinputAction.parameters[paramkey].autocompleted = true\n\t\t\t\t\t\t\tinputAction.parameters[paramkey].value = respParam.value\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (changed === true) {\n\t\t\t\t\tconsole.log(\"Setting action! Force update pls :)\")\n\t\t\t\t\tsetUpdate(Math.random())\n\t\t\t\t\tsetSelectedAction(inputAction)\n\t\t\t\t}\n\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconsole.log(\"Suggestionbox location: \", suggestionBox)\n\n\t\t\t// Add action\n\t\t\tif (responseJson.app_name !== undefined && responseJson.app_name !== null) {\n\t\t\t\t// Always added to 0, 0\n\t\t\t\t// Should use suggestionBox.position.x, suggestionBox.position.y\n\t\t\t\tvar newitem = {\n\t\t\t\t\t\"data\": responseJson,\n\t\t\t\t\t\"position\": {\n\t\t\t\t\t\t\"x\": suggestionBox.node_position.x !== undefined ? suggestionBox.node_position.x : 0,\n\t\t\t\t\t\t\"y\": suggestionBox.node_position.y !== undefined ? suggestionBox.node_position.y + 100 : 0,\n\t\t\t\t\t},\n\t\t\t\t\t\"group\": \"nodes\",\n\t\t\t\t}\n\n\t\t\t\tnewitem.type = \"ACTION\"\n\t\t\t\tnewitem.isStartNode = false\n\t\t\t\tnewitem.data.id = uuidv4()\n\t\t\t\tnewitem.data.type = \"ACTION\"\n\t\t\t\tnewitem.data.isStartNode = false\n\n\t\t\t\tnewitem.data.is_valid = true\n\t\t\t\tnewitem.data.isValid = true\n\n\t\t\t\tcy.add({\n\t\t\t\t\tgroup: \tnewitem.group,\n\t\t\t\t\tdata: \tnewitem.data,\n\t\t\t\t\tposition: newitem.position,\n\t\t\t\t});\n\n\t\t\t\t// Add edge\n\t\t\t\tconst newId = uuidv4()\n\t\t\t\tcy.add({\n\t\t\t\t\tgroup: \"edges\",\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tid: newId,\n\t\t\t\t\t\t_id: newId,\n\t\t\t\t\t\tsource: suggestionBox.attachedTo,\n\t\t\t\t\t\ttarget: newitem.data.id,\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t//label: \"Generated\",\n\t\t\n\t\t\t\tsetSuggestionBox({\n\t\t\t\t\t\"position\": {\n\t\t\t\t\t\t\"top\": 500,\n\t\t\t\t\t\t\"left\": 500,\n\t\t\t\t\t},\n\t\t\t\t\t\"open\": false,\n\t\t\t\t\t\"attachedTo\": \"\",\n\t\t\t\t});\n\t\t\t}\n\t\t})\n\t\t.catch((error) => {\n\t\t\tif (setSuggestionLoading !== undefined) {\n\t\t\t\tsetSuggestionLoading(false)\n\t\t\t}\n\n\t\t\tconsole.log(\"Conv response error: \", error);\n\t\t});\n\t}\n\n\tconst SuggestionBoxUi = () => {\n\t\tconst [suggestionValue, setSuggestionValue] = useState(\"\");\n\t\tconst [suggestionLoading, setSuggestionLoading] = useState(false);\n\t\tconst [responseMsg, setResponseMsg] = useState(\"\");\n\n\t\tif (suggestionBox === undefined || suggestionBox.open === false) {\n\t\t\treturn false\n\t\t}\n\n\t\treturn ( \n\t\t\t
    \n\t\t\t\t{/*\n\t\t\t\t\n\t\t\t\t*/}\n\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\tsetSuggestionBox({\n\t\t\t\t\t\t\t\t\"position\": {\n\t\t\t\t\t\t\t\t\t\"top\": 500,\n\t\t\t\t\t\t\t\t\t\"left\": 500,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"open\": false,\n\t\t\t\t\t\t\t\t\"value\": \"\",\n\t\t\t\t\t\t\t\t\"loading\": false,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t
    {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\taiSubmit(suggestionValue, setResponseMsg, setSuggestionLoading)\n\t\t\t\t}}>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tsetSuggestionValue(e.target.value)\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tInputProps={{\n\t\t\t\t\t\t\tendAdornment: (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\taiSubmit(suggestionValue, setResponseMsg, setSuggestionLoading)\n\t\t\t\t\t\t\t\t\t\t}} />\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\n\t\t\t\t{suggestionLoading === true ?\n\t\t\t\t\t\n\t\t\t\t: null}\n\t\t\t\t{responseMsg.length > 0 ?\t\n\t\t\t\t\t\n\t\t\t\t\t\t{responseMsg}\n\t\t\t\t\t\n\t\t\t\t: null}\n\t\t\t
    \n\t\t)\n\t}\n\n const loadedCheck =\n isLoaded && workflowDone ? (\n
    \n {newView}\n \n \n {conditionsModal}\n {authenticationModal}\n {codePopoutModal}\n {configureWorkflowModal}\n {editWorkflowModal}\n\n\t\t\t\t\n\n {editWorkflowModalOpen === true ?\n \n : null}\n \n {/*selectionOpen === true ?\n
    \n
    \n {\n setSelectionOpen(false)\n }}\n >\n \n \n
    \n
    \n \n
    \n
    \n : null*/}\n\n {showVideo !== undefined && showVideo.length > 0 ?\n
    \n {\n setShowVideo(\"\")\n }}\n >\n \n \n \n
    \n : null}\n\n \n
    \n ) : (\n
    \n );\n\n // Awful way of handling scroll\n if (\n scrollConfig !== undefined &&\n setScrollConfig !== undefined &&\n Object.getOwnPropertyNames(selectedAction).length !== 0\n ) {\n const rightSideActionView = document.getElementById(\"rightside_actions\");\n if (rightSideActionView !== undefined && rightSideActionView !== null) {\n if (\n scrollConfig.top !== 0 &&\n scrollConfig.top !== undefined &&\n scrollConfig.top !== 0\n ) {\n setTimeout(() => {\n if (\n scrollConfig.selected !== undefined &&\n scrollConfig.selected !== null\n ) {\n const selectedField = document.getElementById(\n scrollConfig.selected\n );\n if (selectedField !== undefined && selectedField !== null) {\n selectedField.focus();\n }\n }\n }, 5);\n } else {\n if (rightSideActionView.scrollTop !== scrollConfig.top) {\n setScrollConfig({\n top: rightSideActionView.scrollTop,\n left: 0,\n selected: \"\",\n });\n }\n }\n }\n }\n\n return (\n
    \n {/* Removed due to missing react router features\n\t\t\t\t\n\t\t\t*/}\n {loadedCheck}\n
    \n );\n};\n\nexport default AngularWorkflow;\n","// Move this to the backend to be loaded in?\nconst extraApps = [{\n\t\"name\": \"Cases\",\n\t\"description\": \"Allows use of other Case Management apps without knowing how to use them.\",\n\t\"app_version\": \"1.0.0\",\n\t\"app_name\": \"Cases\",\n\t\"type\": \"ACTION\", \n\t\"large_image\": encodeURI('data:image/svg+xml;utf-8,'),\n\t\"template\": true,\n\t\"actions\": [{\n\t\t\"name\": \"Create Alert\",\n\t\t\"description\": \"Create a ticket\",\n\t\t\"parameters\": [{\n\t\t\t\"name\": \"id\",\n\t\t},\n\t\t{\n\t\t\t\"name\": \"name\",\n\t\t},\n\t\t{\n\t\t\t\"name\": \"description\",\n\t\t\t\"multiline\": true,\n\t\t},\n\t\t],\n\t}],\n}]\n\nexport default extraApps \n","import React, {useState, useEffect, useRef} from 'react';\n\nimport { useNavigate, Link, useParams } from \"react-router-dom\";\nimport { useTheme } from '@material-ui/core/styles';\nimport SearchIcon from '@material-ui/icons/Search';\n\nimport {\n\tChip, \n\tIconButton, \n\tTextField, \n\tInputAdornment, \n\tList, \n\tCard, \n\tListItem, \n\tListItemAvatar, \n\tListItemText, \n\tAvatar, \n\tTypography,\n\tTooltip,\n} from '@material-ui/core';\n\nimport {\n AvatarGroup,\n} from \"@mui/material\"\n\nimport {Close as CloseIcon, Folder as FolderIcon, Polymer as PolymerIcon, LibraryBooks as LibraryBooksIcon} from '@material-ui/icons'\n\nimport algoliasearch from 'algoliasearch/lite';\nimport aa from 'search-insights'\nimport { InstantSearch, Configure, connectSearchBox, connectHits, Index } from 'react-instantsearch-dom';\n//import { InstantSearch, SearchBox, Hits, connectSearchBox, connectHits, Index } from 'react-instantsearch-dom';\n\n// https://www.algolia.com/doc/api-reference/widgets/search-box/react/\nconst chipStyle = {\n\tbackgroundColor: \"#3d3f43\", height: 30, marginRight: 5, paddingLeft: 5, paddingRight: 5, height: 28, cursor: \"pointer\", borderColor: \"#3d3f43\", color: \"white\",\n}\n\nconst searchClient = algoliasearch(\"JNSS5CFDZZ\", \"db08e40265e2941b9a7d8f644b6e5240\")\nconst SearchField = props => {\n\tconst { serverside, userdata } = props\n\n\tconst theme = useTheme();\n\tlet navigate = useNavigate();\n\tconst borderRadius = 3\n\tconst node = useRef()\n\tconst [searchOpen, setSearchOpen] = useState(false)\n\tconst [oldPath, setOldPath] = useState(\"\")\n\n\tif (serverside === true) {\n\t\treturn null\n\t}\n\n\tif (window !== undefined && window.location !== undefined && window.location.pathname === \"/search\") {\n\t\treturn null\n\t}\n\n const isCloud = window.location.host === \"localhost:3002\" || window.location.host === \"shuffler.io\";\n\n\tif (window.location.pathname !== oldPath) {\n\t\tsetSearchOpen(false)\n\t\tsetOldPath(window.location.pathname)\n\t}\n\n\t//useEffect(() => {\n\t//\tif (searchOpen) {\n\t//\t\tvar tarfield = document.getElementById(\"shuffle_search_field\")\n\t//\t\ttarfield.focus()\n\t//\t}\n\t//}, searchOpen)\n\n\tconst SearchBox = ({currentRefinement, refine, isSearchStalled, } ) => {\n\n\t\t\t/*\n\t\t\t\tendAdornment: (\n\t\t\t\t\t {\n\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t}}>\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\tsetSearchOpen(false)\t\n\t\t\t\t\t\t}} />\n\t\t\t\t\t\n\t\t\t\t),\n\t\t\t*/\n\n\t\treturn (\n\t\t
    {\n\t\t\t}}>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t),\n\t\t\t\t\t}}\n\t\t\t\t\tautoComplete='off'\n\t\t\t\t\ttype=\"search\"\n\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\tplaceholder=\"Find Public Apps, Workflows, Documentation...\"\n\t\t\t\t\tvalue={currentRefinement}\n\t\t\t\t\tid=\"shuffle_search_field\"\n\t\t\t\t\tonClick={(event) => {\n\t\t\t\t\t\tif (!searchOpen) {\n\t\t\t\t\t\t\tsetSearchOpen(true)\n\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\tvar tarfield = document.getElementById(\"shuffle_search_field\")\n\t\t\t\t\t\t\t\t//console.log(\"TARFIELD: \", tarfield)\n\t\t\t\t\t\t\t\ttarfield.focus()\n\t\t\t\t\t\t\t}, 100)\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\tonBlur={(event) => {\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\tsetSearchOpen(false)\n\t\t\t\t\t\t}, 500)\n\t\t\t\t\t}}\n\t\t\t\t\tonChange={(event) => {\n\t\t\t\t\t\t//if (event.currentTarget.value.length > 0 && !searchOpen) {\n\t\t\t\t\t\t//\tsetSearchOpen(true)\n\t\t\t\t\t\t//}\n\n\t\t\t\t\t\trefine(event.currentTarget.value)\n\t\t\t\t\t}}\n\t\t\t\t\tlimit={5}\n\t\t\t\t/>\n\t\t\t\t{/*isSearchStalled ? 'My search is stalled' : ''*/}\n\t\t\t\n\t\t)\n\t}\n\n\tconst WorkflowHits = ({ hits }) => {\n\t\tconst [mouseHoverIndex, setMouseHoverIndex] = useState(0) \n\n\t\tvar tmp = searchOpen\n\t\tif (!searchOpen) {\n\t\t\treturn null\n\t\t}\n\n\n\t\tconst positionInfo = document.activeElement.getBoundingClientRect()\n\t\tconst outerlistitemStyle = {\n\t\t\twidth: \"100%\",\n\t\t\toverflowX: \"hidden\",\n\t\t\toverflowY: \"hidden\",\n\t\t\tborderBottom: \"1px solid rgba(255,255,255,0.4)\",\n\t\t}\n\n\t\tif (hits.length > 4) {\n\t\t\thits = hits.slice(0, 4)\n\t\t}\n\t\t\n\t\tvar type = \"workflows\"\n\t\tconst baseImage = \n\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tWorkflows\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\t{hits.length === 0 ?\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t console.log(hits)}>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t:\n\t\t\t\t\t\thits.map((hit, index) => {\n\t\t\t\t\t\t\tconst innerlistitemStyle = {\n\t\t\t\t\t\t\t\twidth: positionInfo.width+35,\n\t\t\t\t\t\t\t\toverflowX: \"hidden\",\n\t\t\t\t\t\t\t\toverflowY: \"hidden\",\n\t\t\t\t\t\t\t\tborderBottom: \"1px solid rgba(255,255,255,0.4)\",\n\t\t\t\t\t\t\t\tbackgroundColor: mouseHoverIndex === index ? \"#1f2023\" : \"inherit\",\n\t\t\t\t\t\t\t\tcursor: \"pointer\",\n\t\t\t\t\t\t\t\tmarginLeft: 5, \n\t\t\t\t\t\t\t\tmarginRight: 5,\n\t\t\t\t\t\t\t\tmaxHeight: 75,\n\t\t\t\t\t\t\t\tminHeight: 75,\n\t\t\t\t\t\t\t\tmaxWidth: 420,\n\t\t\t\t\t\t\t\tminWidth: \"100%\", \n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst name = hit.name === undefined ? \n\t\t\t\t\t\t\t\thit.filename.charAt(0).toUpperCase() + hit.filename.slice(1).replaceAll(\"_\", \" \") + \" - \" + hit.title : \n\t\t\t\t\t\t\t\t(hit.name.charAt(0).toUpperCase()+hit.name.slice(1)).replaceAll(\"_\", \" \")\n\t\t\t\t\t\t\tconst secondaryText = hit.description !== undefined && hit.description !== null && hit.description.length > 3 ? hit.description.slice(0, 40)+\"...\" : \"\"\n\t\t\t\t\t\t\tconst appGroup = hit.action_references === undefined || hit.action_references === null ? [] : hit.action_references\n\t\t\t\t\t\t\tconst avatar = baseImage\n\n\t\t\t\t\t\t\tvar parsedUrl = isCloud ? `/workflows/${hit.objectID}` : `https://shuffler.io/workflows/${hit.objectID}`\n\t\t\t\t\t\t\tparsedUrl += `?queryID=${hit.__queryID}`\n\n\t\t\t\t\t\t\t// \n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t//console.log(\"CLICK\")\n\t\t\t\t\t\t\t\t\tsetSearchOpen(true)\n\n\t\t\t\t\t\t\t\t\taa('init', {\n\t\t\t\t\t\t\t\t\t\t\tappId: searchClient.appId,\n\t\t\t\t\t\t\t\t\t\t\tapiKey: searchClient.transporter.queryParameters[\"x-algolia-api-key\"]\n\t\t\t\t\t\t\t\t\t})\n\n\t\t\t\t\t\t\t\t\tconst timestamp = new Date().getTime()\n\t\t\t\t\t\t\t\t\taa('sendEvents', [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\teventType: 'click',\n\t\t\t\t\t\t\t\t\t\t\teventName: 'Workflow Clicked',\n\t\t\t\t\t\t\t\t\t\t\tindex: 'workflows',\n\t\t\t\t\t\t\t\t\t\t\tobjectIDs: [hit.objectID],\n\t\t\t\t\t\t\t\t\t\t\ttimestamp: timestamp,\n\t\t\t\t\t\t\t\t\t\t\tqueryID: hit.__queryID,\n\t\t\t\t\t\t\t\t\t\t\tpositions: [hit.__position],\n\t\t\t\t\t\t\t\t\t\t\tuserToken: userdata === undefined || userdata === null || userdata.id === undefined ? \"unauthenticated\" : userdata.id,\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t])\n\n\t\t\t\t\t\t\t\t\tif (!isCloud) {\n\t\t\t\t\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t\t\t\t\t\twindow.open(parsedUrl, '_blank');\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\tsetMouseHoverIndex(index)\t\n\t\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{avatar}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{appGroup.map((app, index) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t// Putting all this in secondary of ListItemText looked weird.\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnavigate(\"/apps/\"+app.id)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{/*\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t*/}\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t)})\n\t\t\t\t\t}\n\t\t\t\t
    \n\t\t\t\t{/*\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tSee all workflows \n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t*/}\n\t\t\t
    \n\t\t)\n\t}\n\n\tconst AppHits = ({ hits }) => {\n\t\tconst [mouseHoverIndex, setMouseHoverIndex] = useState(0) \n\n\t\tvar tmp = searchOpen\n\t\tif (!searchOpen) {\n\t\t\treturn null\n\t\t}\n\n\t\tconst positionInfo = document.activeElement.getBoundingClientRect()\n\t\tconst outerlistitemStyle = {\n\t\t\twidth: \"100%\",\n\t\t\toverflowX: \"hidden\",\n\t\t\toverflowY: \"hidden\",\n\t\t\tborderBottom: \"1px solid rgba(255,255,255,0.4)\",\n\t\t}\n\n\t\tif (hits.length > 4) {\n\t\t\thits = hits.slice(0, 4)\n\t\t}\n\t\t\n\t\tvar type = \"app\"\n\t\tconst baseImage = \n\n\t\treturn (\n\t\t\t\n\t\t\t\t {\n\t\t\t\t\tsetSearchOpen(false)\n\t\t\t\t}}>\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tApps\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\t{hits.length === 0 ?\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t console.log(hits)}>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t:\n\t\t\t\t\t\thits.map((hit, index) => {\n\t\t\t\t\t\t\tconst innerlistitemStyle = {\n\t\t\t\t\t\t\t\twidth: positionInfo.width+35,\n\t\t\t\t\t\t\t\toverflowX: \"hidden\",\n\t\t\t\t\t\t\t\toverflowY: \"hidden\",\n\t\t\t\t\t\t\t\tborderBottom: \"1px solid rgba(255,255,255,0.4)\",\n\t\t\t\t\t\t\t\tbackgroundColor: mouseHoverIndex === index ? \"#1f2023\" : \"inherit\",\n\t\t\t\t\t\t\t\tcursor: \"pointer\",\n\t\t\t\t\t\t\t\tmarginLeft: 5, \n\t\t\t\t\t\t\t\tmarginRight: 5,\n\t\t\t\t\t\t\t\tmaxHeight: 75,\n\t\t\t\t\t\t\t\tminHeight: 75,\n\t\t\t\t\t\t\t\tmaxWidth: 420,\n\t\t\t\t\t\t\t\tminWidth: \"100%\", \n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst name = hit.name === undefined ? \n\t\t\t\t\t\t\t\thit.filename.charAt(0).toUpperCase() + hit.filename.slice(1).replaceAll(\"_\", \" \") + \" - \" + hit.title : \n\t\t\t\t\t\t\t\t(hit.name.charAt(0).toUpperCase()+hit.name.slice(1)).replaceAll(\"_\", \" \")\n\n\t\t\t\t\t\t\tvar secondaryText = hit.data !== undefined ? hit.data.slice(0, 40)+\"...\" : \"\"\n\t\t\t\t\t\t\tconst avatar = hit.image_url === undefined ? \n\t\t\t\t\t\t\t\tbaseImage\n\t\t\t\t\t\t\t\t:\n\t\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t//console.log(hit)\n\t\t\t\t\t\t\tif (hit.categories !== undefined && hit.categories !== null && hit.categories.length > 0) {\n\t\t\t\t\t\t\t\tsecondaryText = hit.categories.slice(0,3).map((data, index) => {\n\t\t\t\t\t\t\t\t\tif (index === 0) {\n\t\t\t\t\t\t\t\t\t\treturn data\n\t\t\t\t\t\t\t\t\t} \n\n\t\t\t\t\t\t\t\t\treturn \", \"+data\n\n\t\t\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t//handleChipClick\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t*/\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tvar parsedUrl = isCloud ? `/apps/${hit.objectID}` : `https://shuffler.io/apps/${hit.objectID}`\n\t\t\t\t\t\t\tparsedUrl += `?queryID=${hit.__queryID}`\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tconsole.log(\"CLICK\")\n\t\t\t\t\t\t\t\t\tsetSearchOpen(true)\n\n\t\t\t\t\t\t\t\t\taa('init', {\n\t\t\t\t\t\t\t\t\t\t\tappId: searchClient.appId,\n\t\t\t\t\t\t\t\t\t\t\tapiKey: searchClient.transporter.queryParameters[\"x-algolia-api-key\"]\n\t\t\t\t\t\t\t\t\t})\n\n\t\t\t\t\t\t\t\t\tconst timestamp = new Date().getTime()\n\t\t\t\t\t\t\t\t\taa('sendEvents', [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\teventType: 'click',\n\t\t\t\t\t\t\t\t\t\t\teventName: 'App Clicked',\n\t\t\t\t\t\t\t\t\t\t\tindex: 'appsearch',\n\t\t\t\t\t\t\t\t\t\t\tobjectIDs: [hit.objectID],\n\t\t\t\t\t\t\t\t\t\t\ttimestamp: timestamp,\n\t\t\t\t\t\t\t\t\t\t\tqueryID: hit.__queryID,\n\t\t\t\t\t\t\t\t\t\t\tpositions: [hit.__position],\n\t\t\t\t\t\t\t\t\t\t\tuserToken: userdata === undefined || userdata === null || userdata.id === undefined ? \"unauthenticated\" : userdata.id,\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t])\n\n\t\t\t\t\t\t\t\t\tif (!isCloud) {\n\t\t\t\t\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t\t\t\t\t\twindow.open(parsedUrl, '_blank');\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\tsetMouseHoverIndex(index)\t\n\t\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{avatar}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{/*\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t*/}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t)})\n\t\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tSee more\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t)\n\t}\n\n\tconst DocHits = ({ hits }) => {\n\t\tconst [mouseHoverIndex, setMouseHoverIndex] = useState(0) \n\n\t\tvar tmp = searchOpen\n\t\tif (!searchOpen) {\n\t\t\treturn null\n\t\t}\n\n\n\t\tconst positionInfo = document.activeElement.getBoundingClientRect()\n\t\tconst outerlistitemStyle = {\n\t\t\twidth: \"100%\",\n\t\t\toverflowX: \"hidden\",\n\t\t\toverflowY: \"hidden\",\n\t\t\tborderBottom: \"1px solid rgba(255,255,255,0.4)\",\n\t\t}\n\n\t\tif (hits.length > 4) {\n\t\t\thits = hits.slice(0, 4)\n\t\t}\n\t\t\n\t\tconst type = \"documentation\"\n\t\tconst baseImage = \n\t\t\n\t\t//console.log(type, hits.length, hits)\n\n\t\treturn (\n\t\t\t\n\t\t\t\t {\n\t\t\t\t\tsetSearchOpen(false)\n\t\t\t\t}}>\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tDocumentation\n\t\t\t\t\n\t\t\t\t{/*\n\t\t\t\t {\n\t\t\t\t\tsetSearchOpen(false)\n\t\t\t\t}}>\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t*/}\n\t\t\t\t\n\t\t\t\t\t{hits.length === 0 ?\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t console.log(hits)}>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t:\n\t\t\t\t\thits.map((hit, index) => {\n\t\t\t\t\t\tconst innerlistitemStyle = {\n\t\t\t\t\t\t\twidth: positionInfo.width+35,\n\t\t\t\t\t\t\toverflowX: \"hidden\",\n\t\t\t\t\t\t\toverflowY: \"hidden\",\n\t\t\t\t\t\t\tborderBottom: \"1px solid rgba(255,255,255,0.4)\",\n\t\t\t\t\t\t\tbackgroundColor: mouseHoverIndex === index ? \"#1f2023\" : \"inherit\",\n\t\t\t\t\t\t\tcursor: \"pointer\",\n\t\t\t\t\t\t\tmarginLeft: 5, \n\t\t\t\t\t\t\tmarginRight: 5,\n\t\t\t\t\t\t\tmaxHeight: 75,\n\t\t\t\t\t\t\tminHeight: 75,\n\t\t\t\t\t\t\tmaxWidth: 420,\n\t\t\t\t\t\t\tminWidth: \"100%\", \n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar name = hit.name === undefined ? \n\t\t\t\t\t\t\thit.filename.charAt(0).toUpperCase() + hit.filename.slice(1).replaceAll(\"_\", \" \") + \" - \" + hit.title \n\t\t\t\t\t\t\t: \n\t\t\t\t\t\t\t(hit.name.charAt(0).toUpperCase()+hit.name.slice(1)).replaceAll(\"_\", \" \")\n\n\t\t\t\t\t\tif (name.length > 30) {\n\t\t\t\t\t\t\tname = name.slice(0, 30)+\"...\"\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst secondaryText = hit.data !== undefined ? hit.data.slice(0, 40)+\"...\" : \"\"\n\t\t\t\t\t\tconst avatar = hit.image_url === undefined ? \n\t\t\t\t\t\t\tbaseImage\n\t\t\t\t\t\t\t:\n\t\t\t\t\t\t\t\n\n\t\t\t\t\t\tvar parsedUrl = hit.urlpath !== undefined ? hit.urlpath : \"\"\n\t\t\t\t\t\tparsedUrl += `?queryID=${hit.__queryID}`\n\t\t\t\t\t\tif (parsedUrl.includes(\"/apps/\")) {\n\t\t\t\t\t\t\tconst extraHash = hit.url_hash === undefined ? \"\" : `#${hit.url_hash}`\n\n\t\t\t\t\t\t\tparsedUrl = `/apps/${hit.filename}?tab=docs&queryID=${hit.__queryID}${extraHash}`\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\taa('init', {\n\t\t\t\t\t\t\t\t\t\tappId: searchClient.appId,\n\t\t\t\t\t\t\t\t\t\tapiKey: searchClient.transporter.queryParameters[\"x-algolia-api-key\"]\n\t\t\t\t\t\t\t\t})\n\n\t\t\t\t\t\t\t\tconst timestamp = new Date().getTime()\n\t\t\t\t\t\t\t\taa('sendEvents', [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\teventType: 'click',\n\t\t\t\t\t\t\t\t\t\teventName: 'Document Clicked',\n\t\t\t\t\t\t\t\t\t\tindex: 'documentation',\n\t\t\t\t\t\t\t\t\t\tobjectIDs: [hit.objectID],\n\t\t\t\t\t\t\t\t\t\ttimestamp: timestamp,\n\t\t\t\t\t\t\t\t\t\tqueryID: hit.__queryID,\n\t\t\t\t\t\t\t\t\t\tpositions: [hit.__position],\n\t\t\t\t\t\t\t\t\t\tuserToken: userdata === undefined || userdata === null || userdata.id === undefined ? \"unauthenticated\" : userdata.id,\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t])\n\n\t\t\t\t\t\t\t\tconsole.log(\"CLICK\")\n\t\t\t\t\t\t\t\tsetSearchOpen(true)\n\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tsetMouseHoverIndex(index)\t\n\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{avatar}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{/*\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t*/}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t)})\n\t\t\t\t}\n\t\t\t\n\t\t\t\t{type === \"documentation\" ? \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tSearch by \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\"Algolia\n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t: null}\n\t\t\t\n\t\t)\n\t}\n\n\tconst CustomSearchBox = connectSearchBox(SearchBox)\n\tconst CustomAppHits = connectHits(AppHits)\n\tconst CustomWorkflowHits = connectHits(WorkflowHits)\n\tconst CustomDocHits = connectHits(DocHits)\n\n\treturn (\n\t\t
    \n\t\t\t {\n\t\t\t\tconsole.log(\"CLICKED\")\t\n\t\t\t}}>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
    \n\t)\n}\n\nexport default SearchField;\n","import React, {useState} from 'react';\nimport {BrowserView, MobileView} from \"react-device-detect\";\nimport { useTheme } from '@material-ui/core/styles';\n\nimport {Link} from 'react-router-dom';\nimport ReactGA from 'react-ga4';\n\nimport {\n\tPaper, \n\tTypography, \n\tBadge, \n\tTooltip, \n\tList, \n\tListItem, \n\tAvatar, \n\tMenu, \n\tMenuItem, \n\tSelect, \n\tButton, \n\tGrid, \n\tIconButton,\n\tDivider,\n\tLinearProgress, \n} from '@material-ui/core'\n\nimport { \n\tMeetingRoom as MeetingRoomIcon, \n\tHelpOutline as HelpOutlineIcon,\n\tSettings as SettingsIcon, \n\tNotifications as NotificationsIcon, \n\tHome as HomeIcon, \n\tPolymer as PolymerIcon, \n\tApps as AppsIcon, \n\tDescription as DescriptionIcon,\n\tEmojiObjects as EmojiObjectsIcon,\n Business as BusinessIcon,\n} from '@material-ui/icons';\n\nimport {\n\tAnalytics as AnalyticsIcon,\n\tLightbulb as LightbulbIcon,\n} from \"@mui/icons-material\";\n\nimport { useAlert } from \"react-alert\";\n\nimport SearchField from '../components/Searchfield.jsx'\nconst hoverColor = \"#f85a3e\"\nconst hoverOutColor = \"#e8eaf6\"\n\nconst Header = props => {\nconst { globalUrl, setNotifications, notifications, isLoggedIn, removeCookie, homePage, userdata, serverside, } = props;\n\tconst theme = useTheme();\n\tconst alert = useAlert()\n\n\n\tconst [HomeHoverColor, setHomeHoverColor] = useState(hoverOutColor);\n\tconst [SoarHoverColor, setSoarHoverColor] = useState(hoverOutColor);\n\tconst [LoginHoverColor, setLoginHoverColor] = useState(hoverOutColor);\n\tconst [DocsHoverColor, setDocsHoverColor] = useState(hoverOutColor);\n const [HelpHoverColor, setHelpHoverColor] = useState(hoverOutColor);\n const [anchorEl, setAnchorEl] = React.useState(null);\n const [anchorElAvatar, setAnchorElAvatar] = React.useState(null);\n const [subAnchorEl, setSubAnchorEl] = React.useState(null);\n\n\n const handleClick = (event) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n setAnchorElAvatar(null);\n };\n\n\tconst hrefStyle = {\n\t\tcolor: hoverOutColor,\n\t\ttextDecoration: \"none\",\n\t}\n\n const isCloud = serverside === true || typeof window === 'undefined' ? true : window.location.host === \"localhost:3002\" || window.location.host === \"shuffler.io\";\n\n\tconst clearNotifications = () => {\n\t\t// Don't really care about the logout\n fetch(`${globalUrl}/api/v1/notifications/clear`, {\n\t\t\tcredentials: \"include\",\n\t\t\tmethod: 'GET',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t},\n\t\t})\n\t\t.then(function(response) {\n\t\t\tif (response.status !== 200) {\n\t\t\t\tconsole.log(\"Error in response\")\n\t\t\t}\n\n\t\t\treturn response.json();\n\t\t}).then(function(responseJson) {\t\n\t\t\tif (responseJson.success === true) {\n\t\t\t\tsetNotifications([])\n\t\t\t\thandleClose()\n\t\t\t} else {\n\t\t\t\talert.error(\"Failed dismissing notifications. Please try again later.\")\n\t\t\t}\n\t\t})\n\t\t.catch(error => {\n\t\t\tconsole.log(\"error in notification dismissal: \", error)\n\t\t\t//removeCookie(\"session_token\", {path: \"/\"})\n\t\t})\n }\n\n\tconst dismissNotification = (alert_id) => {\n\t\t// Don't really care about the logout\n fetch(`${globalUrl}/api/v1/notifications/${alert_id}/markasread`, {\n\t\t\tcredentials: \"include\",\n\t\t\tmethod: 'GET',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t},\n\t\t})\n\t\t.then(function(response) {\n\t\t\tif (response.status !== 200) {\n\t\t\t\tconsole.log(\"Error in response\")\n\t\t\t}\n\n\t\t\treturn response.json();\n\t\t}).then(function(responseJson) {\t\n\t\t\tif (responseJson.success === true) {\n\t\t\t\tconst newNotifications = notifications.filter(data => data.id !== alert_id)\n\t\t\t\tconsole.log(\"NEW NOTIFICATIONS: \", newNotifications)\n\t\t\t\tsetNotifications(newNotifications)\n\t\t\t} else {\n\t\t\t\talert.error(\"Failed dismissing notification. Please try again later.\")\n\t\t\t}\n\t\t})\n\t\t.catch(error => {\n\t\t\tconsole.log(\"error in notification dismissal: \", error)\n\t\t\t//removeCookie(\"session_token\", {path: \"/\"})\n\t\t})\n }\n\n\t// DEBUG HERE \n\tconst handleClickLogout = () => {\n console.log(\"SHOULD LOG OUT\")\n\n\t\t// Don't really care about the logout\n\t\tfetch(globalUrl+\"/api/v1/logout\", {\n\t\tcredentials: \"include\",\n\t\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t},\n\t\t})\n\t\t.then(() => {\n\t\t\t// Log out anyway\n\t\t\tremoveCookie(\"session_token\", {path: \"/\"})\n\t\t\tremoveCookie(\"session_token\", {path: \"/\"})\n\t\t\tremoveCookie(\"session_token\", {path: \"/\"})\n\t\t\tremoveCookie(\"session_token\", {path: \"/\"})\n\t\t\twindow.location.pathname = \"/\"\n\t\t})\n\t\t.catch(error => {\n \t\tconsole.log(error)\n\t\t});\n \t}\n\n\t// Rofl this is weird\n\tconst handleDocsHover = () => {\n \tsetDocsHoverColor(hoverColor)\n }\n\n\tconst handleDocsHoverOut = () => {\n \tsetDocsHoverColor(hoverOutColor)\n }\n\n\tconst handleHomeHover = () => {\n \tsetHomeHoverColor(hoverColor)\n }\n\n\tconst handleHelpHover = () => {\n \tsetHelpHoverColor(hoverColor)\n }\n\n\tconst handleHelpHoverOut = () => {\n \tsetHelpHoverColor(hoverOutColor)\n \t}\n\t\n\tconst handleSoarHover = () => {\n \tsetSoarHoverColor(hoverColor)\n \t}\n\n\tconst handleSoarHoverOut = () => {\n \tsetSoarHoverColor(hoverOutColor)\n \t}\n\n\tconst handleHomeHoverOut = () => {\n \tsetHomeHoverColor(hoverOutColor)\n \t}\n\n\tconst handleLoginHover = () => {\n \tsetLoginHoverColor(hoverColor)\n \t}\n\n\tconst handleLoginHoverOut = () => {\n \tsetLoginHoverColor(hoverOutColor)\n \t}\n\n\t// Should be based on some path\n\tconst logoCheck = !homePage ? null : null\n\n\tconst notificationWidth = 300\n\tconst imagesize = 22;\n const boxColor = \"#86c142\";\n\tconst NotificationItem = (props) => {\n\t\tconst {data} = props\n\n var image = \"\";\n var orgName = \"\";\n var orgId = \"\";\n if (userdata.orgs !== undefined) {\n const foundOrg = userdata.orgs.find((org) => org.id === data[\"org_id\"]);\n if (foundOrg !== undefined && foundOrg !== null) {\n //position: \"absolute\", bottom: 5, right: -5,\n const imageStyle = {\n width: imagesize,\n height: imagesize,\n pointerEvents: \"none\",\n marginLeft: data.creator_org !== undefined && data.creator_org.length > 0 ? 20 : 0,\n borderRadius: 10,\n border: foundOrg.id === userdata.active_org.id ? `3px solid ${boxColor}` : null,\n cursor: \"pointer\",\n marginRight: 10,\n };\n\n image =\n foundOrg.image === \"\" ? (\n \n ) : (\n {}}\n />\n );\n\n orgName = foundOrg.name;\n orgId = foundOrg.id;\n }\n }\n\n\t\treturn (\n\t\t\t\n\t\t\t\t{/*\n\t\t\t\t\t{new Date(data.updated_at).toISOString()}\n\t\t\t\t*/}\n\t\t\t\t{data.reference_url !== undefined && data.reference_url !== null && data.reference_url.length > 0 ?\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{data.title}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t: \n\t\t\t\t\t\n\t\t\t\t\t\t{data.title}\n\t\t\t\t\t\n\t\t\t\t}\n\n\t\t\t\t{data.image !== undefined && data.image !== null && data.image.length > 0 ? \n\t\t\t\t\t{data.title}\n\t\t\t\t\t: \n\t\t\t\t\tnull\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\t{data.description}\n\t\t\t\t\n\t\t\t\t{/*data.tags !== undefined && data.tags !== null && data.tags.length > 0 ? \n\t\t\t\t\tdata.tags.map((tag, index) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)\n\t\t\t\t\t})\n\t\t\t\t: null */}\n\t\t\t\t
    \n\t\t\t\t\t{data.read === false ? \n\t\t\t\t\t\t\n\t\t\t\t\t: null}\n\t\t\t\t\t\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{image}\n\t\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
    \n\t\t)\n\t}\n\n\n\n\tconst notificationMenu = \n\t\t\n\t\t\t {\n\t\t\t\tsetAnchorEl(event.currentTarget);\n\t\t\t}}>\n\t\t\t \n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t {\n\t\t\t\t\thandleClose()\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t\tYour Notifications ({notifications.length})\n\t\t\t\t\t\t\n\t\t\t\t\t\t{notifications.length > 1 ? \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t: null}\n\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\tNotifications are made by Shuffle to help you discover issues or improvements.\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t{notifications.map((data, index) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t\n\t\t\t\t\t)\n\t\t\t\t})}\n\t\t\t\n\t\t
    \n\n\tconst handleClickChangeOrg = (orgId) => {\n\t\t// Don't really care about the logout\n\t\t//name: org.name,\n\t\t//orgId = \"asd\"\n\t\tconst data = {\n\t\t\torg_id: orgId,\n\t\t}\n\t\t\t\t\t\t\t\n\t\tlocalStorage.setItem(\"globalUrl\", \"\")\n\t\tlocalStorage.setItem(\"getting_started_sidebar\", \"open\");\n\n fetch(`${globalUrl}/api/v1/orgs/${orgId}/change`, {\n\t\t\tmode: 'cors',\n\t\t\tcredentials: 'include',\n\t\t\tcrossDomain: true,\n\t\t\tmethod: 'POST',\n\t\t\tbody: JSON.stringify(data),\n\t\t\twithCredentials: true,\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json; charset=utf-8',\n\t\t\t},\n\t\t})\n\t\t.then(function(response) {\n\t\t\tif (response.status !== 200) {\n\t\t\t\tconsole.log(\"Error in response\")\n\t\t\t}\n\n\t\t\treturn response.json();\n\t\t}).then(function(responseJson) {\t\n\t\t\tif (responseJson.success === true) {\n\t\t\t\tif (responseJson.region_url !== undefined && responseJson.region_url !== null && responseJson.region_url.length > 0) { \n\t\t\t\t\tconsole.log(\"Region Change: \", responseJson.region_url)\n\t\t\t\t\tlocalStorage.setItem(\"globalUrl\", responseJson.region_url)\n\t\t\t\t\t//globalUrl = responseJson.region_url\n\t\t\t\t}\n\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\twindow.location.reload()\n\t\t\t\t}, 2000)\n\t\t\t\talert.success(\"Successfully changed active organization - refreshing!\")\n\t\t\t} else {\n\t\t\t\talert.error(\"Failed changing org: \", responseJson.reason)\n\t\t\t}\n\t\t})\n\t\t.catch(error => {\n\t\t\tconsole.log(\"error changing: \", error)\n\t\t\t//removeCookie(\"session_token\", {path: \"/\"})\n\t\t})\n }\n\n\tconst supportMenu = \n\t\t\n \n\t\t\t\t\n\t\t\t\t\t {}}>\n\t\t\t\t\t\t\"Discord\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\n\t// Should be based on some path\n\tconst parsedAvatar = userdata.avatar !== undefined && userdata.avatar !== null && userdata.avatar.length > 0 ? userdata.avatar : \"\"\n\n\tconst avatarMenu = \n\t\t\n\t\t\t {\n\t\t\t\tsetAnchorElAvatar(event.currentTarget);\n\t\t\t}}>\n\t\t\t\t\n\t\t\t\n\t\t\t {\n\t\t\t\t\thandleClose()\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\thandleClose();\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t Admin \n \t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\thandleClose();\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n About \n \t\n\t\t\t\t\n\t\t\t\t{/*\n\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\thandleClose();\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n Get Started \n \t\n\t\t\t\t\n\t\t\t\t*/}\n\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\thandleClose();\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n Use Cases \n \t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\thandleClose() \n\t\t\t\t\t}}>\n\t\t\t\t\t\t Creator page \n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\thandleClose() \n\t\t\t\t\t}}>\n\t\t\t\t\t\t Settings\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t {\n\t\t\t\t\thandleClickLogout()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\thandleClose() \n\t\t\t\t}}>\n\t\t\t\t\t  Logout\n\t\t\t\t\n\t\t\t\n\t\t\n\t\n\tconst listItemStyle = {\n\t\ttextAlign: \"center\", \n\t\tmarginTop: \"auto\", \n\t\tmarginBottom: \"auto\",\n\t}\n\n\t// Handle top bar or something\n const loginTextBrowser = !isLoggedIn ? \n
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{/*\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t*/}\n\t\t\t\t\t{isCloud ? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t: null}\n\t\t\t\t\t{isCloud ?\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t: \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\n\t\t\t\t\n\t\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\n\n\t\t\t\t\t{isCloud ? \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\n\t\t\t\t\t: null}\n\n\t\t\t\t\t{/*\n\t\t\t\t\t\n\t\t\t\t\t\t{supportMenu}\n\t\t\t\t\t\n\t\t\t\t\t*/}\n\n\t\t\t\t\t{/*\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t*/}\n\t\t\t\t\n\t\t\t
    \n\t
    \n \t: \n\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\"logo\"\n\t\t\t\t\t\t\t\t\t\t\t{/*\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t*/}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n \t \t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t{/*\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t*/}\n\t\t\t\t\t\t\t\t\t\tWorkflows\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n \t \t\t\t
    \n \t \t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t{/*\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t*/}\n\t\t\t\t\t\t\t\t\t\t\tApps\n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n \t \t\t\t
    \n\t\t\t\t\t\t\t{/*\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
    Dashboard
    \n\t\t\t\t\t\t\t\t\n \t \t\t\t
    \n\t\t\t\t\t\t\t*/}\n \t \t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t{/*\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t*/}\n\t\t\t\t\t\t\t\t\t\t\tDocs\n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n \t \t\t\t
    \n\t\t\t\t\t\t\t{/*\n \t \t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\tPricing\n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n \t \t\t\t
    \n\t\t\t\t\t\t\t*/}\n\t\t\t\t\t\t{/*\n \t \t\t\t\t\n\t\t\t\t\t\t\t\n \t\t\t\t\t\t\t
    Configure
    \n\t\t\t\t\t\t\t\n \t \t\t\t\t
    \n\t\t\t\t\t\t*/}\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{avatarMenu}\n\t\t\t\t\t\t\t{notificationMenu}\n\t\t\t\t\t\t\t{/*supportMenu*/}\n\t\t\t\t\t\t\t{logoCheck}\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t{/*\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t*/}\n\n\t\t\t\t\t\t{/*\n \t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t*/}\n\n\t\t\t\t\t\t{/*userdata.app_execution_limit !== 5000 && userdata.app_execution_limit !== 10000 ?\n\t\t\t\t\t\t\tuserdata === undefined || userdata.orgs === undefined || userdata.orgs === null || userdata.orgs.length > 1 ? null : \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t: null*/}\n\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t{userdata === undefined || userdata.orgs === undefined || userdata.orgs === null || userdata.orgs.length <= 1 ? \n\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t:\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\thandleClickChangeOrg(e.target.value) \n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{userdata.orgs.map((data, index) => {\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\tdata.name === undefined ||\n\t\t\t\t\t\t\t\t\t\t\tdata.name === null ||\n\t\t\t\t\t\t\t\t\t\t\tdata.name.length === 0\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tconst imagesize = 22\n\t\t\t\t\t\t\t\t\t\tvar skipOrg = false \n\t\t\t\t\t\t\t\t\t\tif (data.creator_org !== undefined && data.creator_org !== null && data.creator_org.length > 0) {\n\t\t\t\t\t\t\t\t\t\t\t// Finds the parent org\n\t\t\t\t\t\t\t\t\t\t\tfor (var key in userdata.child_orgs) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (data.child_orgs[key].id === data.creator_org) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tskipOrg = true \n\t\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\tif (skipOrg) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn null\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tconst imageStyle = {\n\t\t\t\t\t\t\t\t\t\t\twidth: imagesize, \n\t\t\t\t\t\t\t\t\t\t\theight: imagesize, \n\t\t\t\t\t\t\t\t\t\t\tpointerEvents: \"none\", \n\t\t\t\t\t\t\t\t\t\t\tmarginRight: 10, \n\t\t\t\t\t\t\t\t\t\t\tmarginLeft: data.creator_org !== undefined && data.creator_org !== null && data.creator_org.length > 0 ? data.id === userdata.active_org.id ? 0 : 20 : 0,\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tconst parsedTitle = data.creator_org !== undefined && data.creator_org !== null && data.creator_org.length > 0 ? `Suborg of ${data.creator_org}` : \"\"\n\n\t\t\t\t\t\t\t\t\t\tconst image = data.image === \"\" ? \n\t\t\t\t\t\t\t\t\t\t\t{data.name}\n\t\t\t\t\t\t\t\t\t\t\t:\n\t\t\t\t\t\t\t\t\t\t\t{data.name}\n\n\n\t\t\t\t\t\t\t\t\t\tvar regiontag = \"eu\"\n\t\t\t\t\t\t\t\t\t\tif (data.region_url !== undefined && data.region_url !== null && data.region_url.length > 0) {\n\t\t\t\t\t\t\t\t\t\t\tconst regionsplit = data.region_url.split(\".\")\n\t\t\t\t\t\t\t\t\t\t\tif (regionsplit.length > 2 && !regionsplit[0].includes(\"shuffler\")) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst namesplit = regionsplit[0].split(\"/\")\n\n\t\t\t\t\t\t\t\t\t\t\t\tregiontag = namesplit[namesplit.length - 1]\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{regiontag} {image} {data.name} \n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t{userdata === undefined || userdata.app_execution_limit === undefined || userdata.app_execution_usage === undefined || userdata.app_execution_usage < 1000 ? \n\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t:\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    {\n\t\t\t\t\t\t\t\t\t\tif (window.drift !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\twindow.drift.api.startInteraction({ interactionId: 326905 })\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"Couldn't find drift in window.drift and not .drift-open-chat with querySelector: \", window.drift)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{(userdata.app_execution_usage/userdata.app_execution_limit*100).toFixed(0)}%\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t}\n\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\n\tconst loginTextMobile = !isLoggedIn ? \n
    \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\"logo\"\n\t\t\t\t\t\t\t\t\t{/**/}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\tAbout\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
    \n\t
    \n \t: \n\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t
    \n \t \tLogout\n \t \t
    \n \t\t
    \n\t\t\t\t\t\t{logoCheck}\t\t\n\t\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t
    \n\n\t// \n\tconst loadedCheck = \n\t\t
    \n\t\t\t\n \t{loginTextBrowser}\n\t\t\t\n\t\t\t\n \t{loginTextMobile}\n\t\t\t\n\t\t
    \n //
    \n \treturn (\n \t
    \n\t\t\t\t{loadedCheck}\n\t
    \n )\n}\n\nexport default Header;\n","import React from \"react\";\nimport { createMuiTheme } from \"@material-ui/core/styles\";\n\nconst theme = createMuiTheme({\n palette: {\n primary: {\n main: \"#f85a3e\",\n },\n secondary: {\n main: \"#e8eaf6\",\n },\n text: {\n secondary: \"rgba(255,255,255,0.7)\",\n },\n type: \"dark\",\n surfaceColor: \"#27292d\",\n inputColor: \"#383B40\",\n platformColor: \"#1F2023\",\n borderRadius: 5,\n defaultBorder: \"1px solid rgba(255,255,255,0.3)\",\n\t\tjsonTheme: \"brewer\",\n\t\treactJsonStyle: {\n\t\t\tborderRadius: 5,\n\t\t\tborder: \"1px solid rgba(255,255,255,0.7)\",\n\t\t\tpadding: 5, \n\t\t},\n textFieldStyle: {\n backgroundColor: \"#383B40\",\n borderRadius: 5,\n },\n innerTextfieldStyle: {\n color: \"white\",\n minHeight: 50,\n marginLeft: \"5px\",\n maxWidth: \"95%\",\n fontSize: \"1em\",\n borderRadius: 5,\n },\n tooltip: {\n backgroundColor: \"white\",\n color: \"rgba(0, 0, 0, 0.87)\",\n boxShadow: 1,\n fontSize: 11,\n },\n defaultImage:\n \"data:image/png;base64,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\",\n },\n typography: {\n fontFamily: `\"Roboto\", \"Helvetica\", \"Arial\", sans-serif`,\n useNextVariants: true,\n h1: {\n fontSize: 40,\n },\n h4: {\n fontSize: 30,\n fontWeight: 500,\n },\n h6: {\n fontSize: 22,\n },\n body1: {\n fontSize: 18,\n },\n },\n overrides: {\n MuiMenu: {\n list: {\n backgroundColor: \"#383B40\",\n },\n },\n MuiCssBaseline: {\n '@global': {\n\t\t\t\t/*\n scrollbarColor: \"#6b6b6b #2b2b2b\",\n \"&::-webkit-scrollbar, & *::-webkit-scrollbar\": {\n backgroundColor: \"#2b2b2b\",\n },\n \"&::-webkit-scrollbar-thumb, & *::-webkit-scrollbar-thumb\": {\n borderRadius: 8,\n backgroundColor: \"#6b6b6b\",\n minHeight: 24,\n border: \"3px solid #2b2b2b\",\n },\n \"&::-webkit-scrollbar-thumb:focus, & *::-webkit-scrollbar-thumb:focus\": {\n backgroundColor: \"#959595\",\n },\n \"&::-webkit-scrollbar-thumb:active, & *::-webkit-scrollbar-thumb:active\": {\n backgroundColor: \"#959595\",\n },\n \"&::-webkit-scrollbar-thumb:hover, & *::-webkit-scrollbar-thumb:hover\": {\n backgroundColor: \"#959595\",\n },\n \"&::-webkit-scrollbar-corner, & *::-webkit-scrollbar-corner\": {\n backgroundColor: \"#2b2b2b\",\n },\n\t\t\t\t*/\t\n }\n\t\t},\n },\n});\n\nexport default theme;\n","import React, { useState, useEffect } from \"react\";\nimport { makeStyles } from \"@material-ui/styles\";\nimport { useTheme } from \"@material-ui/core/styles\";\nimport { BrowserView, MobileView } from \"react-device-detect\";\n\nimport {\n Paper,\n Typography,\n FormControlLabel,\n Button,\n Divider,\n Select,\n MenuItem,\n FormControl,\n Switch,\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n TextField,\n Tooltip,\n Breadcrumbs,\n CircularProgress,\n Chip,\n} from \"@material-ui/core\";\n\nimport {\n LockOpen as LockOpenIcon,\n FileCopy as FileCopyIcon,\n Delete as DeleteIcon,\n Remove as RemoveIcon,\n Add as AddIcon,\n CheckCircle as CheckCircleIcon,\n AttachFile as AttachFileIcon,\n Apps as AppsIcon,\n ErrorOutline as ErrorOutlineIcon,\n\tAddAPhoto as AddAPhotoIcon, \n\tAddAPhotoOutlined as AddAPhotoOutlinedIcon, \n\tZoomInOutlined as ZoomInOutlinedIcon,\n\tZoomOutOutlined as ZoomOutOutlinedIcon,\n\tLoop as LoopIcon,\n} from \"@material-ui/icons\";\n\nimport {\n\tAddPhotoAlternate as AddPhotoAlternateIcon,\n} from '@mui/icons-material';\n\nimport { v4 as uuidv4 } from \"uuid\";\nimport { Link, useParams } from \"react-router-dom\";\nimport YAML from \"yaml\";\nimport ChipInput from \"material-ui-chip-input\";\nimport { useAlert } from \"react-alert\";\nimport words from \"shellwords\";\n\nimport AvatarEditor from \"react-avatar-editor\";\n\nconst surfaceColor = \"#27292D\";\nconst inputColor = \"#383B40\";\n\nconst bodyDivStyle = {\n margin: \"auto\",\n width: \"900px\",\n};\n\nconst actionListStyle = {\n paddingLeft: \"10px\",\n paddingRight: \"10px\",\n paddingBottom: \"10px\",\n paddingTop: \"10px\",\n marginTop: \"5px\",\n backgroundColor: inputColor,\n display: \"flex\",\n color: \"white\",\n\tposition: \"relative\",\n};\n\nconst boxStyle = {\n color: \"white\",\n flex: \"1\",\n marginLeft: \"10px\",\n marginRight: \"10px\",\n paddingLeft: \"30px\",\n paddingRight: \"30px\",\n paddingBottom: \"30px\",\n paddingTop: \"30px\",\n display: \"flex\",\n flexDirection: \"column\",\n backgroundColor: surfaceColor,\n};\n\nconst dividerStyle = {\n marginBottom: \"10px\",\n marginTop: \"10px\",\n height: \"1px\",\n width: \"100%\",\n backgroundColor: \"grey\",\n};\n\nconst appIconStyle = {\n marginLeft: \"5px\",\n};\n\nconst useStyles = makeStyles({\n notchedOutline: {\n borderColor: \"#f85a3e !important\",\n },\n});\n\nconst rewrite = (args) => {\n return args.reduce(function (args, a) {\n if (0 === a.indexOf(\"-X\")) {\n args.push(\"-X\");\n args.push(a.slice(2));\n } else {\n args.push(a);\n }\n\n return args;\n }, []);\n};\n\nconst parseField = (s) => {\n return s.split(/: (.+)/);\n};\n\nconst isURL = (s) => {\n return /^https?:\\/\\//.test(s);\n};\n\n// Parses CURL to a real request\nconst parseCurl = (s) => {\n //console.log(\"CURL: \", s)\n\n if (0 != s.indexOf(\"curl \")) {\n console.log(\"Not curl start\");\n return \"\";\n }\n\n try {\n var args = rewrite(words.split(s));\n } catch (e) {\n return s;\n }\n\n var out = { method: \"GET\", header: {} };\n var state = \"\";\n\n args.forEach(function (arg) {\n switch (true) {\n case isURL(arg):\n out.url = arg;\n break;\n\n case arg === \"-A\" || arg === \"--user-agent\":\n state = \"user-agent\";\n break;\n\n case arg === \"-H\" || arg === \"--header\":\n state = \"header\";\n break;\n\n case arg === \"-d\" || arg === \"--data\" || arg === \"--data-ascii\":\n state = \"data\";\n break;\n\n case arg === \"-u\" || arg === \"--user\":\n state = \"user\";\n break;\n\n case arg === \"-I\" || arg === \"--head\":\n out.method = \"HEAD\";\n break;\n\n case arg === \"-X\" || arg === \"--request\":\n state = \"method\";\n break;\n\n case arg === \"-b\" || arg === \"--cookie\":\n state = \"cookie\";\n break;\n\n case arg === \"--compressed\":\n out.header[\"Accept-Encoding\"] =\n out.header[\"Accept-Encoding\"] || \"deflate, gzip\";\n break;\n\n case !!arg:\n switch (state) {\n case \"header\":\n var field = parseField(arg);\n out.header[field[0]] = field[1];\n state = \"\";\n break;\n case \"user-agent\":\n out.header[\"User-Agent\"] = arg;\n state = \"\";\n break;\n case \"data\":\n if (out.method === \"GET\" || out.method === \"HEAD\")\n out.method = \"POST\";\n out.header[\"Content-Type\"] =\n out.header[\"Content-Type\"] || \"application/x-www-form-urlencoded\";\n out.body = out.body ? out.body + \"&\" + arg : arg;\n state = \"\";\n break;\n case \"user\":\n out.header[\"Authorization\"] = \"Basic \" + btoa(arg);\n state = \"\";\n break;\n case \"method\":\n out.method = arg;\n state = \"\";\n break;\n case \"cookie\":\n out.header[\"Set-Cookie\"] = arg;\n state = \"\";\n break;\n }\n break;\n }\n });\n\n return out;\n};\n\n// Basically CRUD for each category + special\nexport const appCategories = [\n\t\t{\n \t\"name\": \"Communication\",\n\t\t\t\"color\": \"#FFC107\",\n\t\t\t\"icon\": \"communication\",\n\t\t\t\"action_labels\": [\"List Messages\", \"Send Message\", \"Get Message\", \"Search messages\"],\n\t\t}, {\n\t\t\t\"name\": \"SIEM\",\n\t\t\t\"color\": \"#FFC107\",\n\t\t\t\"icon\": \"siem\",\n\t\t\t\"action_labels\": [\"Search\", \"List Alerts\", \"Close Alert\", \"Create detection\", \"Add to lookup list\",],\n\t\t}, {\n\t\t\t\"name\": \"Eradication\",\n\t\t\t\"color\": \"#FFC107\",\n\t\t\t\"icon\": \"eradication\",\n\t\t\t\"action_labels\": [\"List Alerts\", \"Close Alert\", \"Create detection\", \"Block hash\", \"Search Hosts\", \"Isolate host\", \"Unisolate host\"],\n\t\t}, {\n\t\t\t\"name\": \"Cases\",\n\t\t\t\"color\": \"#FFC107\",\n\t\t\t\"icon\": \"cases\",\n\t\t\t\"action_labels\": [\"List tickets\", \"Get ticket\", \"Create ticket\", \"Close ticket\", \"Add comment\", \"Update ticket\",],\n\t\t}, {\n\t\t\t\"name\": \"Assets\",\n\t\t\t\"color\": \"#FFC107\",\n\t\t\t\"icon\": \"assets\",\n\t\t\t\"action_labels\": [\"List Assets\", \"Get Asset\", \"Search Assets\", \"Search Users\", \"Search endpoints\", \"Search vulnerabilities\"],\n\t\t}, {\n\t\t\t\"name\": \"Intel\",\n\t\t\t\"color\": \"#FFC107\",\n\t\t\t\"icon\": \"intel\",\n\t\t\t\"action_labels\": [\"Get IOC\", \"Search IOC\", \"Create IOC\", \"Update IOC\", \"Delete IOC\",],\n\t\t}, {\n\t\t\t\"name\": \"IAM\",\n\t\t\t\"color\": \"#FFC107\",\n\t\t\t\"icon\": \"iam\",\n\t\t\t\"action_labels\": [\"Reset Password\", \"Enable user\", \"Disable user\", \"Get Identity\", \"Get Asset\", \"Search Identity\", ],\n\t\t}, {\n\t\t\t\"name\": \"Network\",\n\t\t\t\"color\": \"#FFC107\",\n\t\t\t\"icon\": \"network\",\n\t\t\t\"action_labels\": [\"Get Rules\", \"Allow IP\", \"Block IP\",],\n\t\t}, {\n\t\t\t\"name\": \"Other\",\n\t\t\t\"color\": \"#FFC107\",\n\t\t\t\"icon\": \"other\",\n\t\t\t\"action_labels\": [\"Update Info\", \"Get Info\", \"Get Status\", \"Get Version\", \"Get Health\", \"Get Config\", \"Get Configs\", \"Get Configs by type\", \"Get Configs by name\", \"Run script\"],\n\t\t},\n]\n\nexport const base64_decode = (str) => {\n\treturn decodeURIComponent(\n\t\tatob(str).split(\"\").map(function (c) {\n\t\t\treturn \"%\" + (\"00\" + c.charCodeAt(0).toString(16)).slice(-2);\n\t\t}).join(\"\")\n\t);\n};\n\n// Loops through properties to find the actual JSON output to use\nconst getJsonObject = (properties) => {\n\t// Loop inside the JSON object and get the value of each key\n\tlet jsonObject = {};\n\tfor (let key in properties) {\n\t\tconst property = properties[key];\n\n\t\tconst subloop = false\n\t\tif (property.hasOwnProperty(\"type\")) {\n\t\t\tif (property.type === \"object\" || property.type === \"array\") {\n\t\t\t\tsubloop = true\n\t\t\t}\n\t\t} \n\n\t\tif (subloop) {\n\t\t\tif (property.hasOwnProperty(\"items\") && property.items.hasOwnProperty(\"properties\")) {\n\n\t\t\t\tconst jsonret = getJsonObject(property.items.properties);\n\t\t\t\tif (property.type === \"array\") {\n\t\t\t\t\t//console.log(\"ARRAY!!\")\n\t\t\t\t\tjsonObject[key] = [jsonret];\n\t\t\t\t} else {\n\t\t\t\t\tjsonObject[key] = jsonret;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (property.hasOwnProperty(\"properties\")) {\n\t\t\t\t\tconst jsonret = getJsonObject(property.properties);\n\t\t\t\t\tif (property.type === \"array\") {\n\t\t\t\t\t\t//console.log(\"ARRAY2!!\")\n\t\t\t\t\t\tjsonObject[key] = [jsonret];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjsonObject[key] = jsonret;\n\t\t\t\t\t}\n\t\t\t\t} else { \n\t\t\t\t\t//console.log(\"No items or properties found: \", property);\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\t\t\tif (property.hasOwnProperty(\"example\")) {\n\t\t\t\tjsonObject[key] = property.example;\n\t\t\t} else if (property.hasOwnProperty(\"enum\") && property.enum.length > 0) {\n\t\t\t\tjsonObject[key] = property.enum[0];\n\t\t\t} else if (property.hasOwnProperty(\"default\")) {\n\t\t\t\tjsonObject[key] = property.default;\n\t\t\t} else if (property.hasOwnProperty(\"maximum\")) {\n\t\t\t\tjsonObject[key] = property.maximum;\n\t\t\t} else if (property.hasOwnProperty(\"minimum\")) {\n\t\t\t\tjsonObject[key] = property.minimum;\n\t\t\t} else if (property.hasOwnProperty(\"type\")) {\n\t\t\t\tif (property.type === \"integer\" || property.type === \"number\") {\n\t\t\t\t\tjsonObject[key] = 0;\n\t\t\t\t} else if (property.type === \"boolean\") {\n\t\t\t\t\tjsonObject[key] = false;\n\t\t\t\t} else if (property.type === \"string\") {\n\t\t\t\t\tjsonObject[key] = \"\";\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log(\"Unknown type: \", property);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconsole.log(\"No example or enum found: \", property);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn jsonObject\n}\n\n// Should be different if logged in :|\nconst AppCreator = (defaultprops) => {\n const { globalUrl, isLoaded } = defaultprops;\n const classes = useStyles();\n const alert = useAlert();\n const theme = useTheme();\n\n\tconst params = useParams();\n\tvar props = JSON.parse(JSON.stringify(defaultprops))\n\tprops.match = {}\n\tprops.match.params = params\n\n var upload = \"\";\n const increaseAmount = 50;\n const actionNonBodyRequest = [\"GET\", \"HEAD\", \"DELETE\", \"CONNECT\"];\n const actionBodyRequest = [\"POST\", \"PUT\", \"PATCH\"];\n const authenticationOptions = [\n \"No authentication\",\n \"API key\",\n \"Bearer auth\",\n \"Basic auth\",\n \"Oauth2\",\n \"JWT\",\n ];\n const apikeySelection = [\"Header\", \"Query\"];\n\n const [name, setName] = useState(\"\");\n const [contact, setContact] = useState(\"\");\n const [file, setFile] = useState(\"\");\n const [fileBase64, setFileBase64] = useState(\"\");\n const [isAppLoaded, setIsAppLoaded] = useState(false);\n const [isEditing, setIsEditing] = useState(false);\n const [description, setDescription] = useState(\"\");\n const [baseUrl, setBaseUrl] = useState(\"\");\n const [authenticationRequired, setAuthenticationRequired] = useState(false);\n const [authenticationOption, setAuthenticationOption] = useState(\n authenticationOptions[0]\n );\n const [newWorkflowTags, setNewWorkflowTags] = React.useState([]);\n const [newWorkflowCategories, setNewWorkflowCategories] = React.useState([]);\n const [parameterName, setParameterName] = useState(\"\");\n const [parameterLocation, setParameterLocation] = useState(\n apikeySelection.length > 0 ? apikeySelection[0] : \"\"\n );\n const [refreshUrl, setRefreshUrl] = useState(\"\");\n const [oauth2Scopes, setOauth2Scopes] = useState([]);\n const [projectCategories, setProjectCategories] = useState([]);\n const [selectedCategory, setSelectedCategory] = useState(\"\");\n\n const [update, setUpdate] = useState(\"\");\n const [urlPathParameters] = useState([]);\n const [basedata, setBasedata] = React.useState({});\n const [actions, setActions] = useState([]);\n const [filteredActions, setFilteredActions] = useState([]);\n const [errorCode, setErrorCode] = useState(\"\");\n const [appBuilding, setAppBuilding] = useState(false);\n const [fileDownloadEnabled, setFileDownloadEnabled] = useState(false);\n const [actionAmount, setActionAmount] = useState(increaseAmount);\n const defaultAuth = {\n name: \"\",\n type: \"header\",\n example: \"\",\n };\n\n const [extraAuth, setExtraAuth] = useState([]);\n const [app, setApp] = useState({});\n const [appAuthentication, setAppAuthentication] = React.useState([]);\n const [selectedAction, setSelectedAction] = useState({});\n const [authLoaded, setAuthLoaded] = useState(false);\n\n\t// From 2023: Example to handle action labels\n\t// Goal: Make this dynamically load from the backend\n\t// and make categories + labels modifyable.\n\t// Categories are the main categories in the App Framework\n const [categories, setCategories] = useState(appCategories)\n \n\n const isCloud = window.location.host === \"localhost:3002\" || window.location.host === \"shuffler.io\";\n\n useEffect(() => {\n\t\tif (window.location.pathname.includes(\"apps/edit\")) {\n\t\t\tsetIsEditing(true);\n\t\t\thandleEditApp(props.match.params.appid);\n\t\t} else {\n\t\t\tcheckQuery();\n\t\t}\n }, []);\n\n const handleEditApp = (appid) => {\n fetch(globalUrl + \"/api/v1/apps/\" + appid + \"/config\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n window.location.pathname = \"/apps\";\n }\n\n return response.json();\n })\n .then((responseJson) => {\n if (responseJson.success === false) {\n alert.error(\"Failed to get the app\");\n setIsAppLoaded(true);\n window.location.pathname = \"/search\";\n } else {\n parseIncomingOpenapiData(responseJson);\n }\n })\n .catch((error) => {\n alert.error(error.toString());\n });\n };\n\n // Checks if there is an ID in the query, and gets it if it doesn't exist.\n const checkQuery = () => {\n var urlParams = new URLSearchParams(window.location.search);\n if (!urlParams.has(\"id\")) {\n setActionAmount(0);\n\n setIsAppLoaded(true);\n return;\n }\n \n\t\t//handleEditApp(urlParams.get(\"id\")) \n\n\t\t// THIS has to stay due to ID may not exist as normal app yet\n fetch(globalUrl + \"/api/v1/get_openapi/\" + urlParams.get(\"id\"), {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n throw new Error(\"NOT 200 :O\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n setIsAppLoaded(true);\n if (!responseJson.success) {\n alert.error(\"Failed to get app config. Do you have access?\");\n } else {\n parseIncomingOpenapiData(responseJson);\n }\n })\n .catch((error) => {\n console.log(\"Error: \", error.toString());\n alert.error(error.toString());\n });\n };\n\n const setFileFromb64 = () => {\n //const img = document.getElementById('logo')\n //var canvas = document.createElement('canvas')\n //var ctx = canvas.getContext('2d')\n //img.onload = function() {\n //\tconsole.log(\"LOADED?\")\n //\tctx.drawImage(img, 0, 0)\n //\tconst canvasUrl = canvas.toDataURL()\n //\tconsole.log(canvasUrl)\n //\tsetFileBase64(canvasUrl)\n //}\n };\n\n const handleGetRef = (parameter, data) => {\n try {\n if (parameter === null || parameter[\"$ref\"] === undefined) {\n //console.log(\"$ref not found in getref for: \", parameter)\n return parameter;\n }\n } catch (e) {\n console.log(\"Failed getting $ref of \", parameter);\n return parameter;\n }\n\n const paramsplit = parameter[\"$ref\"].split(\"/\");\n if (paramsplit[0] !== \"#\") {\n console.log(\"Bad param: \", paramsplit);\n return parameter;\n }\n\n var newitem = data;\n for (let paramkey in paramsplit) {\n var tmpparam = paramsplit[paramkey];\n if (tmpparam === \"#\") {\n continue;\n }\n\n if (newitem[tmpparam] === undefined) {\n return parameter;\n }\n\n newitem = newitem[tmpparam];\n }\n\n return newitem;\n };\n\n\n\n // Sets the data up as it should be at later points\n // This is the data FROM the database, not what's being saved\n const parseIncomingOpenapiData = (data) => {\n\t\n\t\tvar parsedDecoded = \"\"\n\t\ttry { \n\t\t\tconst decoded = base64_decode(data.openapi)\n\t\t\tparsedDecoded = decoded\n } catch (e) {\n\t\t\tconsole.log(\"Failed JSON parsing: \", e)\n\t\t\tparsedDecoded = data\n\t\t}\n\n\t\tif (data.openapi === null) {\n\t\t\talert.info(\"Failed to load OpenAPI for app. Please contact support if this persists.\")\n \tsetIsAppLoaded(true);\n\t\t\treturn\n\t\t}\n\n\t\tconsole.log(\"Decoded: \", parsedDecoded)\n const parsedapp =\n data.openapi === undefined || data.openapi === null \n ? data\n : JSON.parse(parsedDecoded);\n\n data = parsedapp.body === undefined ? parsedapp : parsedapp.body;\n\n var jsonvalid = false;\n var tmpvalue = \"\";\n try {\n data = JSON.parse(data);\n jsonvalid = true;\n } catch (e) {\n console.log(\"Error JSON: \", e);\n }\n\n if (!jsonvalid) {\n try {\n data = YAML.parse(data);\n jsonvalid = true;\n } catch (e) {\n console.log(\"Error YAML: \", e);\n }\n }\n\n if (!jsonvalid) {\n alert.info(\"OpenAPI data is invalid.\");\n return;\n }\n\n setBasedata(data);\n\t\tconsole.log(\"Info: \", data)\n\n\t\ttry { \n\t\t\tif (data.info !== null && data.info !== undefined) {\n\t\t\t\tif (data.info.title !== undefined && data.info.title !== null) {\n\t\t\t\t\tif (data.info.title.endsWith(\" API\")) {\n\t\t\t\t\t\tdata.info.title = data.info.title.substring(0, data.info.title.length - 4)\n\t\t\t\t\t} else if (data.info.title.endsWith(\"API\")) {\n\t\t\t\t\t\tdata.info.title = data.info.title.substring(0, data.info.title.length - 3)\n\t\t\t\t\t}\n\n\t\t\t\t\tif (data.info.title.length > 29) {\n\t\t\t\t\t\tsetName(data.info.title.slice(0, 29));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetName(data.info.title);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tsetDescription(data.info.description);\n\t\t\t\tdocument.title = \"Apps - \" + data.info.title;\n\n\t\t\t\tif (data.info[\"x-logo\"] !== undefined) {\n\t\t\t\t\tif (data.info[\"x-logo\"].url !== undefined) {\n\t\t\t\t\t\t//console.log(\"PARSED LOGO: \", data.info[\"x-logo\"].url);\n\t\t\t\t\t\tsetFileBase64(data.info[\"x-logo\"].url);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetFileBase64(data.info[\"x-logo\"]);\n\t\t\t\t\t}\n\t\t\t\t\t//console.log(\"\");\n\t\t\t\t\t//console.log(\"\");\n\t\t\t\t\t//console.log(\"LOGO: \", data.info[\"x-logo\"]);\n\t\t\t\t\t//console.log(\"\");\n\t\t\t\t\t//console.log(\"\");\n\t\t\t\t}\n\n\t\t\t\tif (data.info.contact !== undefined) {\n\t\t\t\t\tsetContact(data.info.contact);\n\t\t\t\t}\n\n\t\t\t\tif (data.info[\"x-categories\"] !== undefined && data.info[\"x-categories\"].length > 0) {\n\t\t\t\t\tif (typeof data.info[\"x-categories\"] === \"array\") {\n\t\t\t\t\t} else {\n\t\t\t\t\t}\n\t\t\t\t\tsetNewWorkflowCategories(data.info[\"x-categories\"]);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.log(\"Failed setting info: \", e)\n\t\t}\n\n\t\tconsole.log(\"Tags: \", data.tags)\n\t\ttry {\n\t\t\tif (data.tags !== undefined && data.tags.length > 0) {\n\t\t\t\tvar newtags = [];\n\t\t\t\tfor (let tagkey in data.tags) {\n\t\t\t\t\tif (data.tags[tagkey].name.length > 50) {\n\t\t\t\t\t\tconsole.log(\"Skipping tag because it's too long: \",data.tags[tagkey].name.length);\n\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tnewtags.push(data.tags[tagkey].name);\n\t\t\t\t}\n\n\t\t\t\tif (newtags.length > 10) {\n\t\t\t\t\tnewtags = newtags.slice(0, 9);\n\t\t\t\t}\n\n\t\t\t\tsetNewWorkflowTags(newtags);\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.log(\"Failed to parse tags: \", e)\n\t\t}\n\n // This is annoying (:\n\t\tconsole.log(\"Security schemes 1: \", data.securitySchemes)\n\n\t\t// Weird generator problems to be handle\n\t\tvar securitySchemes = undefined\n\t\ttry { \n\t\t\tif (data.securitySchemes !== undefined) {\n\t\t\t\tsecuritySchemes = data.securitySchemes\n\t\t\t\tif (securitySchemes === undefined) {\n\t\t\t\t\tsecuritySchemes = data.securityDefinitions;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif (securitySchemes === undefined && data.components !== undefined) { \n\t\t\t\tsecuritySchemes = data.components.securitySchemes;\n\t\t\t\tif (securitySchemes === undefined) {\n\t\t\t\t\tsecuritySchemes = data.components.securityDefinitions;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.log(\"Failed to parse security schemes: \", e)\n\t\t}\n\n\t\tconsole.log(\"Security schemes 2: \", securitySchemes)\n\n const allowedfunctions = [\n \"GET\",\n \"CONNECT\",\n \"HEAD\",\n \"DELETE\",\n \"POST\",\n \"PATCH\",\n \"PUT\",\n ];\n\n\n var newActions = [];\n var wordlist = {};\n var all_categories = [];\n\t\tvar parentUrl = \"\"\n\n\t\tconsole.log(\"Paths: \", data.paths)\n if (data.paths !== null && data.paths !== undefined) {\n for (let [path, pathvalue] of Object.entries(data.paths)) {\n\n for (let [method, methodvalue] of Object.entries(pathvalue)) {\n if (methodvalue === null) {\n alert.info(\"Skipped method (null)\" + method);\n continue;\n }\n\n if (!allowedfunctions.includes(method.toUpperCase())) {\n // Typical YAML issue\n if (method !== \"parameters\") {\n console.log(\"Invalid method: \", method, \"data: \", methodvalue);\n //alert.info(\"Skipped method (not allowed): \" + method);\n }\n continue;\n }\n\n\t\t\t\t\t//console.log(\"METHOD: \", methodvalue)\n var tmpname = methodvalue.summary;\n if (\n methodvalue.operationId !== undefined &&\n methodvalue.operationId !== null &&\n methodvalue.operationId.length > 0 &&\n (tmpname === undefined || tmpname.length === 0)\n ) {\n tmpname = methodvalue.operationId;\n }\n\n\t\t\t\t\tif (tmpname !== undefined && tmpname !== null) {\n \ttmpname = tmpname.replaceAll(\".\", \" \");\n\t\t\t\t\t}\n\n\t\t\t\t\tif ((tmpname === undefined || tmpname === null) && methodvalue.description !== undefined && methodvalue.description !== null && methodvalue.description.length > 0) {\n\t\t\t\t\t\ttmpname = methodvalue.description.replaceAll(\".\", \" \").replaceAll(\"_\", \" \")\n\t\t\t\t\t}\n\n var newaction = {\n name: tmpname,\n description: methodvalue.description,\n url: path,\n file_field: \"\",\n method: method.toUpperCase(),\n headers: \"\",\n queries: [],\n paths: [],\n body: \"\",\n errors: [],\n example_response: \"\",\n\t\t\t\t\t\taction_label: \"No Label\",\n\t\t\t\t\t\trequired_bodyfields: [],\n };\n\n\t\t\t\t\tif (methodvalue[\"x-label\"] !== undefined && methodvalue[\"x-label\"] !== null) {\n\t\t\t\t\t\t// FIX: Map labels only if they're actually in the category list\n\t\t\t\t\t\tnewaction.action_label = methodvalue[\"x-label\"]\n\t\t\t\t\t}\n\n\t\t\t\t\tif (methodvalue[\"x-required-fields\"] !== undefined && methodvalue[\"x-required-fields\"] !== null) {\n\t\t\t\t\t\tnewaction.required_bodyfields = methodvalue[\"x-required-fields\"]\n\t\t\t\t\t}\n\n\t\t\t\t\tif (newaction.url !== undefined && newaction.url !== null && newaction.url.includes(\"_shuffle_replace_\")) {\n\t\t\t\t\t\tconst regex = /_shuffle_replace_\\d/i;\n\t\t\t\t\t\t//console.log(\"NEW: \", \n\t\t\t\t\t\tnewaction.url = newaction.url.replaceAll(new RegExp(regex, 'g'), \"\")\n\t\t\t\t\t\tconsole.log(\"Replaced: \", newaction.url) \n\t\t\t\t\t}\n\n // Finding category\n if (path.includes(\"/\")) {\n const pathsplit = path.split(\"/\");\n var categoryindex = -1;\n // Stupid way of finding a category/grouping\n for (let splitkey in pathsplit) {\n\t\t\t\t\t\t\tif (pathsplit[splitkey].includes(\"_shuffle_replace_\")) {\n\t\t\t\t\t\t\t\tconst regex = /_shuffle_replace_\\d/i;\n\t\t\t\t\t\t\t\t//console.log(\"NEW: \", \n\t\t\t\t\t\t\t\tpathsplit[splitkey] = pathsplit[splitkey].replaceAll(new RegExp(regex, 'g'), \"\")\n\t\t\t\t\t\t\t}\n\n if (\n pathsplit[splitkey].length > 0 &&\n pathsplit[splitkey] !== \"v1\" &&\n pathsplit[splitkey] !== \"v2\" &&\n pathsplit[splitkey] !== \"api\" &&\n pathsplit[splitkey] !== \"1.0\" &&\n pathsplit[splitkey] !== \"apis\"\n ) {\n newaction[\"category\"] = pathsplit[splitkey];\n if (!all_categories.includes(pathsplit[splitkey])) {\n all_categories.push(pathsplit[splitkey]);\n }\n break;\n }\n }\n }\n\t\t\t\t\t\n\t\t\t\t\tif (path === \"/files/{file_id}/content\") {\n\t\t\t\t\t\t//console.log(\"FILE DOWNLOAD Method: \", path, method, methodvalue)\n\t\t\t\t\t}\n\n\n // Typescript? I think not ;)\n if (methodvalue[\"requestBody\"] !== undefined) {\n if (methodvalue[\"requestBody\"][\"$ref\"] !== undefined && methodvalue[\"requestBody\"][\"$ref\"] !== null) {\n\t\t\t\t\t\t\t// Handle ref\n\t\t\t\t\t\t\t//\n\t\t\t\t\t\t\tconsole.log(\"Ref: \", methodvalue[\"requestBody\"][\"$ref\"])\n const parameter = handleGetRef({ $ref: methodvalue[\"requestBody\"][\"$ref\"]}, data);\n\t\t\t\t\t\t\tconsole.log(\"PARAM: \", parameter)\n\t\t\t\t\t\t\tif (parameter.content !== undefined && parameter.content !== null) {\n\t\t\t\t\t\t\t\tmethodvalue[\"requestBody\"][\"content\"] = parameter.content\n\t\t\t\t\t\t\t\tconsole.log(\"Set content!\")\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (methodvalue[\"requestBody\"][\"content\"] !== undefined) {\n\t\t\t\t\t\t\t// Handle content - XML or JSON\n\t\t\t\t\t\t\t//\n if (\n methodvalue[\"requestBody\"][\"content\"][\"application/json\"] !==\n undefined\n ) {\n //newaction[\"headers\"] = \"\"\n //\"Content-Type=application/json\\nAccept=application/json\";\n if (\n methodvalue[\"requestBody\"][\"content\"][\"application/json\"][\"schema\"] !== undefined && methodvalue[\"requestBody\"][\"content\"][\"application/json\"][\"schema\"] !== null\n ) {\n //console.log(\"Schema: \", methodvalue[\"requestBody\"][\"content\"][\"application/json\"][\"schema\"])\n\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tif (methodvalue[\"requestBody\"][\"content\"][\"application/json\"][\"schema\"][\"properties\"] !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\t// Read out properties from a JSON object\n\t\t\t\t\t\t\t\t\t\t\tconst jsonObject = getJsonObject(methodvalue[\"requestBody\"][\"content\"][\"application/json\"][\"schema\"][\"properties\"])\n\t\t\t\t\t\t\t\t\t\t\t//console.log(\"JSON OBJECT: \", jsonObject)\n\t\t\t\t\t\t\t\t\t\t\tif (jsonObject !== undefined && jsonObject !== null) {\n\t\t\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\t\t\tnewaction[\"body\"] = JSON.stringify(jsonObject, null, 2)\n\t\t\t\t\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"JSON object parse error: \", e)\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\t\t\t\t\t\t//newaction[\"body\"] = JSON.stringify(jsonObject, null, 2);\n\n\t\t\t\t\t\t\t\t\t\t\tvar tmpobject = {};\n\t\t\t\t\t\t\t\t\t\t\tfor (let prop of methodvalue[\"requestBody\"][\"content\"][\"application/json\"][\"schema\"][\"properties\"]) {\n\t\t\t\t\t\t\t\t\t\t\t\ttmpobject[prop] = `\\$\\{${prop}\\}`;\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t//console.log(\"Data: \", data)\n\t\t\t\t\t\t\t\t\t\t\tfor (let subkey in methodvalue[\"requestBody\"][\"content\"][\"application/json\"][\"schema\"][\"required\"]) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst tmpitem = methodvalue[\"requestBody\"][\"content\"][\"application/json\"][\"schema\"][\"required\"][subkey];\n\t\t\t\t\t\t\t\t\t\t\t\ttmpobject[tmpitem] = `\\$\\{${tmpitem}\\}`;\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\tnewaction[\"body\"] = JSON.stringify(tmpobject, null, 2);\n\n\t\t\t\t\t\t\t\t\t\t} else if (\n\n\t\t\t\t\t\t\t\t\t\t\tmethodvalue[\"requestBody\"][\"content\"][\"application/json\"][\"schema\"][\"$ref\"] !== undefined && methodvalue[\"requestBody\"][\"content\"][\"application/json\"][\"schema\"][\"$ref\"] !== null) {\n\t\t\t\t\t\t\t\t\t\t\tconst retRef = handleGetRef(methodvalue[\"requestBody\"][\"content\"][\"application/json\"][\"schema\"], data);\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\tvar newbody = {};\n\t\t\t\t\t\t\t\t\t\t\t// Can handle default, required, description and type\n\t\t\t\t\t\t\t\t\t\t\tfor (let propkey in retRef.properties) {\n\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"replace: \", propkey)\n\n\t\t\t\t\t\t\t\t\t\t\t\tconst parsedkey = propkey.replaceAll(\" \", \"_\").toLowerCase();\n\t\t\t\t\t\t\t\t\t\t\t\tnewbody[parsedkey] = \"${\" + parsedkey + \"}\";\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\tnewaction[\"body\"] = JSON.stringify(newbody, null, 2);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\t\tconsole.log(\"RequestBody json error: \", e, path)\n\t\t\t\t\t\t\t\t\t}\n }\n } else if (\n methodvalue[\"requestBody\"][\"content\"][\"application/xml\"] !==\n undefined\n ) {\n console.log(\"METHOD XML: \", methodvalue);\n //newaction[\"headers\"] = \"\"\n //\"Content-Type=application/xml\\nAccept=application/xml\";\n if (\n methodvalue[\"requestBody\"][\"content\"][\"application/xml\"][\n \"schema\"\n ] !== undefined &&\n methodvalue[\"requestBody\"][\"content\"][\"application/xml\"][\n \"schema\"\n ] !== null\n ) {\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\tmethodvalue[\"requestBody\"][\"content\"][\"application/xml\"][\n\t\t\t\t\t\t\t\t\t\t\t\t\"schema\"\n\t\t\t\t\t\t\t\t\t\t\t][\"properties\"] !== undefined\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\tvar tmpobject = {};\n\t\t\t\t\t\t\t\t\t\t\tfor (let [prop, propvalue] of Object.entries(methodvalue[\"requestBody\"][\"content\"][\"application/xml\"][\"schema\"][\"properties\"])) {\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\ttmpobject[prop] = `\\$\\{${prop}\\}`;\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\tfor (let [subkey,subkeyval] in Object.entries(methodvalue[\"requestBody\"][\"content\"][\"application/xml\"][\"schema\"][\"required\"])) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst tmpitem =\n\t\t\t\t\t\t\t\t\t\t\t\t\tmethodvalue[\"requestBody\"][\"content\"][\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"application/xml\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t][\"schema\"][\"required\"][subkey];\n\t\t\t\t\t\t\t\t\t\t\t\ttmpobject[tmpitem] = `\\$\\{${tmpitem}\\}`;\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t//console.log(\"OBJ XML: \", tmpobject)\n\t\t\t\t\t\t\t\t\t\t\t//newaction[\"body\"] = XML.stringify(tmpobject, null, 2)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\t\tconsole.log(\"RequestBody xml error: \", e, path)\n\t\t\t\t\t\t\t\t\t}\n }\n } else {\n if (\n methodvalue[\"requestBody\"][\"content\"][\"example\"] !== undefined\n ) {\n if (\n methodvalue[\"requestBody\"][\"content\"][\"example\"][\n \"example\"\n ] !== undefined\n ) {\n newaction[\"body\"] =\n methodvalue[\"requestBody\"][\"content\"][\"example\"][\n \"example\"\n ];\n //JSON.stringify(tmpobject, null, 2)\n }\n } \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif (\n methodvalue[\"requestBody\"][\"content\"][\n \"multipart/form-data\"\n ] !== undefined\n ) {\n if (\n methodvalue[\"requestBody\"][\"content\"][\n \"multipart/form-data\"\n ][\"schema\"] !== undefined &&\n methodvalue[\"requestBody\"][\"content\"][\n \"multipart/form-data\"\n ][\"schema\"] !== null\n ) {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tif (methodvalue[\"requestBody\"][\"content\"][\"multipart/form-data\"][\"schema\"][\"type\"] === \"object\") {\n\t\t\t\t\t\t\t\t\t\t\t\tconst fieldname =\n\t\t\t\t\t\t\t\t\t\t\t\t\tmethodvalue[\"requestBody\"][\"content\"][\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"multipart/form-data\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t][\"schema\"][\"properties\"][\"fieldname\"];\n\n\t\t\t\t\t\t\t\t\t\t\t\tif (fieldname !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t//console.log(\"FIELDNAME: \", fieldname);\n\t\t\t\t\t\t\t\t\t\t\t\t\tnewaction.file_field = fieldname[\"value\"];\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\tfor (const [subkey, subvalue] of Object.entries(methodvalue[\"requestBody\"][\"content\"][\"multipart/form-data\"][\"schema\"][\"properties\"])) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (subkey.includes(\"file\")) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"Found subkey field for file: \", path, method, methodvalue[\"requestBody\"][\"content\"][\"multipart/form-data\"][\"schema\"][\"properties\"])\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewaction.file_field = subkey\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (newaction.file_field === undefined || newaction.file_field === null || newaction.file_field.length === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"No file fieldname found: \", methodvalue[\"requestBody\"][\"content\"][\"multipart/form-data\"][\"schema\"][\"properties\"])\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"No type found: \", methodvalue[\"requestBody\"][\"content\"][\"multipart/form-data\"][\"schema\"])\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"Multipart/form error: \", e, path)\n\t\t\t\t\t\t\t\t\t\t}\n }\n } else {\n var schemas = [];\n const content = methodvalue[\"requestBody\"][\"content\"];\n if (content !== undefined && content !== null) {\n //console.log(\"CONTENT: \", content)\n for (const [subkey, subvalue] of Object.entries(content)) {\n if (subvalue[\"schema\"] !== undefined && subvalue[\"schema\"] !== null) {\n console.log(\"SCHEMA: \", subvalue[\"schema\"])\n if (subvalue[\"schema\"][\"$ref\"] !== undefined && subvalue[\"schema\"][\"$ref\"] !== null) {\n\n console.log(\"SCHEMA FOUND REF!\")\n if (!schemas.includes(subvalue[\"schema\"][\"$ref\"])) {\n schemas.push(subvalue[\"schema\"][\"$ref\"]);\n }\n }\n } else {\n\t\t\t\t\t\t\t\t\t\t\t\tif (subvalue[\"example\"] !== undefined && subvalue[\"example\"] !== null) {\n \t\t\tnewaction[\"body\"] = subvalue[\"example\"]\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n \tconsole.log(\"ERROR: couldn't find schema for \", subvalue, method, path);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n }\n }\n }\n\n\t\t\t\t\t\t\t\t\ttry {\n \tif (schemas.length === 1) {\n \t const parameter = handleGetRef({ $ref: schemas[0] }, data);\n\n\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"Reading type from parameter: \", parameter)\n \t if (parameter.properties !== undefined && parameter[\"type\"] === \"object\") {\n \t \n \t var newbody = {};\n \t for (let propkey in parameter.properties) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"propkey2: \", propkey)\n \t \tconst parsedkey = propkey.replaceAll(\" \", \"_\").toLowerCase();\n \t if (parameter.properties[propkey].type === undefined) {\n \t console.log(\n \t \"Skipping (4): \",\n \t parameter.properties[propkey]\n \t );\n \t continue;\n \t }\n\n \t if (parameter.properties[propkey].type === \"string\") {\n \t if (\n \t parameter.properties[propkey].description !==\n \t undefined\n \t ) {\n \t newbody[parsedkey] =\n \t parameter.properties[propkey].description;\n \t } else {\n \t newbody[parsedkey] = \"\";\n \t }\n \t } else if (\n \t parameter.properties[propkey].type.includes(\"int\") ||\n \t parameter.properties[propkey].type.includes(\"uint64\")\n \t ) {\n \t newbody[parsedkey] = 0;\n \t } else if (\n \t parameter.properties[propkey].type.includes(\"boolean\")\n \t ) {\n \t newbody[parsedkey] = false;\n \t } else if (\n \t parameter.properties[propkey].type.includes(\"array\")\n \t ) {\n \t newbody[parsedkey] = [];\n \t } else {\n \t console.log(\n \t \"CANT HANDLE JSON TYPE (4)\",\n \t parameter.properties[propkey].type,\n \t parameter.properties[propkey],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpath\n \t );\n \t newbody[parsedkey] = [];\n \t }\n \t }\n\n \t newaction[\"body\"] = JSON.stringify(newbody, null, 2);\n \t } else {\n \t console.log(\n \t \"CANT HANDLE PARAM: (4) \",\n \t parameter.properties,\n\t\t\t\t\t\t\t\t\t\t\t\t\tpath\n \t );\n \t }\n \t}\n\t\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\t\tconsole.log(\"Param Error: \", e, path)\n\t\t\t\t\t\t\t\t\t}\n }\n }\n }\n }\n\n if (\n methodvalue.responses !== undefined &&\n methodvalue.responses !== null\n ) {\n if (methodvalue.responses.default !== undefined) {\n if (methodvalue.responses.default.content !== undefined) {\n if (\n methodvalue.responses.default.content[\"text/plain\"] !==\n undefined\n ) {\n if (\n methodvalue.responses.default.content[\"text/plain\"][\n \"schema\"\n ] !== undefined\n ) {\n if (\n methodvalue.responses.default.content[\"text/plain\"][\n \"schema\"\n ][\"example\"] !== undefined\n ) {\n newaction.example_response =\n methodvalue.responses.default.content[\"text/plain\"][\n \"schema\"\n ][\"example\"]\n\n }\n\n if (methodvalue.responses.default.content[\"text/plain\"][\"schema\"][\"format\"] === \"binary\" && methodvalue.responses.default.content[\"text/plain\"][\"schema\"][\"type\"] === \"string\") {\n \t\tnewaction.example_response = \"shuffle_file_download\"\n\t\t\t\t\t\t\t\t\t\t}\n }\n }\n }\n } else {\n var selectedReturn = \"\";\n if (methodvalue.responses[\"200\"] !== undefined) {\n selectedReturn = \"200\";\n } else if (methodvalue.responses[\"201\"] !== undefined) {\n selectedReturn = \"201\";\n }\n\n // Parsing examples. This should be standardized lol\n if (methodvalue.responses[selectedReturn] !== undefined) {\n const selectedExample = methodvalue.responses[selectedReturn];\n if (selectedExample[\"content\"] !== undefined) {\n if (\n selectedExample[\"content\"][\"application/json\"] !== undefined\n ) {\n if (\n selectedExample[\"content\"][\"application/json\"][\"schema\"] !== undefined &&\n \tselectedExample[\"content\"][\"application/json\"][\"schema\"] !== null\n ) {\n\t\t\t\t\t\t\t\t\t\t\t//console.log(\"JSON Output: \", selectedExample[\"content\"][\"application/json\"][\"schema\"])\n\n\t\t\t\t\t\t\t\t\t\t\tif (selectedExample[\"content\"][\"application/json\"][\"schema\"][\"properties\"] !== undefined && selectedExample[\"content\"][\"application/json\"][\"schema\"][\"properties\"] !== null) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst jsonObject = getJsonObject(selectedExample[\"content\"][\"application/json\"][\"schema\"][\"properties\"]) \n\t\t\t\t\t\t\t\t\t\t\t\tif (jsonObject !== undefined && jsonObject !== null) {\n\t\t\t\t\t\t\t\t\t\t\t\t\ttry {\n \tnewaction.example_response = JSON.stringify(jsonObject, null, 2)\n\t\t\t\t\t\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"JSON object output parse error: \", e)\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\n if (selectedExample[\"content\"][\"application/json\"][\"schema\"][\"$ref\"] !== undefined) {\n //console.log(\"REF EXAMPLE: \", selectedExample[\"content\"][\"application/json\"][\"schema\"])\n const parameter = handleGetRef(\n selectedExample[\"content\"][\"application/json\"][\n \"schema\"\n ],\n data\n );\n\n //console.log(\"Reading parameter type 2\", parameter)\n if (parameter.properties !== undefined && parameter[\"type\"] === \"object\") {\n var newbody = {};\n for (let propkey in parameter.properties) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t//console.log(\"propkey3: \", propkey)\n\n const parsedkey = propkey.replaceAll(\" \", \"_\").toLowerCase();\n if (parameter.properties[propkey].type === undefined) {\n console.log(\n \"Skipping (1): \",\n parameter.properties[propkey]\n );\n continue;\n }\n\n if (\n parameter.properties[propkey].type === \"string\"\n ) {\n if (\n parameter.properties[propkey].description !==\n undefined\n ) {\n newbody[parsedkey] =\n parameter.properties[propkey].description;\n } else {\n newbody[parsedkey] = \"\";\n }\n } else if (\n parameter.properties[propkey].type.includes(\"int\")\n ) {\n newbody[parsedkey] = 0;\n } else if (\n parameter.properties[propkey].type.includes(\n \"boolean\"\n )\n ) {\n newbody[parsedkey] = false;\n } else if (\n parameter.properties[propkey].type.includes(\n \"array\"\n )\n ) {\n //console.log(\"Added empty array. Base is: \", parameter.properties[propkey].type)\n\n //const parameter = handleGetRef(selectedExample[\"content\"][\"application/json\"][\"schema\"], data)\n newbody[parsedkey] = [];\n } else {\n console.log(\"CANT HANDLE JSON TYPE \", parameter.properties[propkey].type,parameter.properties[propkey]\n );\n newbody[parsedkey] = [];\n }\n }\n newaction.example_response = JSON.stringify(\n newbody,\n null,\n 2\n );\n } else {\n console.log(\n \"CANT HANDLE PARAM: (1) \",\n parameter.properties\n );\n }\n } else {\n // Just selecting the first one. bleh.\n if (\n selectedExample[\"content\"][\"application/json\"][\n \"schema\"\n ][\"allOf\"] !== undefined\n ) {\n //console.log(\"ALLOF: \", selectedExample[\"content\"][\"application/json\"][\"schema\"][\"allOf\"])\n //console.log(\"BAD EXAMPLE: (SKIP ALLOF) \", selectedExample[\"content\"][\"application/json\"][\"schema\"][\"allOf\"])\n var selectedComponent =\n selectedExample[\"content\"][\"application/json\"][\n \"schema\"\n ][\"allOf\"];\n if (selectedComponent.length >= 1) {\n selectedComponent = selectedComponent[0];\n\n const parameter = handleGetRef(\n selectedComponent,\n data\n );\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"Reading parameter type 3!\")\n if (parameter.properties !== undefined && parameter[\"type\"] === \"object\") {\n var newbody = {};\n for (let propkey in parameter.properties) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"propkey4: \", propkey)\n const parsedkey = propkey.replaceAll(\" \", \"_\").toLowerCase();\n if (\n parameter.properties[propkey].type ===\n undefined\n ) {\n console.log(\n \"Skipping (2): \",\n parameter.properties[propkey]\n );\n continue;\n }\n\n if (\n parameter.properties[propkey].type ===\n \"string\"\n ) {\n if (\n parameter.properties[propkey]\n .description !== undefined\n ) {\n newbody[parsedkey] =\n parameter.properties[propkey].description;\n } else {\n newbody[parsedkey] = \"\";\n }\n } else if (\n parameter.properties[propkey].type.includes(\n \"int\"\n )\n ) {\n newbody[parsedkey] = 0;\n } else if (\n parameter.properties[propkey].type.includes(\n \"boolean\"\n )\n ) {\n newbody[parsedkey] = false;\n } else {\n console.log(\n \"CANT HANDLE JSON TYPE (2) \",\n parameter.properties[propkey].type\n );\n newbody[parsedkey] = [];\n }\n }\n\n newaction.example_response = JSON.stringify(\n newbody,\n null,\n 2\n );\n //newaction.example_response = JSON.stringify(parameter.properties, null, 2)\n } else {\n //newaction.example_response = parameter.properties\n console.log(\n \"CANT HANDLE PARAM: (3) \",\n parameter.properties\n );\n }\n } else {\n }\n } else if (\n selectedExample[\"content\"][\"application/json\"][\n \"schema\"\n ][\"properties\"] !== undefined\n ) {\n if (\n selectedExample[\"content\"][\"application/json\"][\n \"schema\"\n ][\"properties\"][\"data\"] !== undefined\n ) {\n const parameter = handleGetRef(\n selectedExample[\"content\"][\"application/json\"][\n \"schema\"\n ][\"properties\"][\"data\"],\n data\n );\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"Reading type 3: \", parameter)\n if (parameter.properties !== undefined && parameter[\"type\"] === \"object\") {\n var newbody = {};\n for (let propkey in parameter.properties) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"propkey5: \", propkey)\n const parsedkey = propkey\n .replaceAll(\" \", \"_\")\n .toLowerCase();\n if (\n parameter.properties[propkey].type ===\n undefined\n ) {\n console.log(\n \"Skipping (3): \",\n parameter.properties[propkey]\n );\n continue;\n }\n\n if (\n parameter.properties[propkey].type ===\n \"string\"\n ) {\n if (\n parameter.properties[propkey]\n .description !== undefined\n ) {\n newbody[parsedkey] =\n parameter.properties[propkey].description;\n } else {\n newbody[parsedkey] = \"\";\n }\n console.log(parameter.properties[propkey]);\n } else if (\n parameter.properties[propkey].type.includes(\n \"int\"\n )\n ) {\n newbody[parsedkey] = 0;\n } else {\n console.log(\n \"CANT HANDLE JSON TYPE (3) \",\n parameter.properties[propkey].type\n );\n newbody[parsedkey] = [];\n }\n }\n\n newaction.example_response = JSON.stringify(\n newbody,\n null,\n 2\n );\n //newaction.example_response = JSON.stringify(parameter.properties, null, 2)\n } else {\n //newaction.example_response = parameter.properties\n console.log(\n \"CANT HANDLE PARAM: (3) \",\n parameter.properties\n );\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n\n for (let paramkey in methodvalue.parameters) {\n const parameter = handleGetRef(methodvalue.parameters[paramkey], data);\n if (parameter.in === \"query\") {\n var tmpaction = {\n description: parameter.description,\n name: parameter.name,\n required: parameter.required,\n in: \"query\",\n };\n\n if (parameter.required === undefined) {\n tmpaction.required = false;\n }\n\n newaction.queries.push(tmpaction);\n } else if (parameter.in === \"path\") {\n // FIXME - parse this to the URL too\n newaction.paths.push(parameter.name);\n\n // FIXME: This doesn't follow OpenAPI3 exactly.\n // https://swagger.io/docs/specification/describing-request-body/\n // https://swagger.io/docs/specification/describing-parameters/\n // Need to split the data.\n } else if (parameter.in === \"body\") {\n // FIXME: Add tracking for components\n // E.G: https://raw.githubusercontent.com/owentl/Shuffle/master/gosecure.yaml\n if (parameter.example !== undefined) {\n newaction.body = parameter.example;\n }\n } else if (parameter.in === \"header\") {\n newaction.headers += `${parameter.name}=${parameter.example}\\n`;\n } else {\n console.log(\n \"WARNING: don't know how to handle this param: \",\n parameter\n );\n }\n }\n\n if (newaction.name === \"\" || newaction.name === undefined) {\n // Find a unique part of the string\n // FIXME: Looks for length between /, find the one where they differ\n // Should find others with the same START to their path\n // Make a list of reserved names? Aka things that show up only once\n if (Object.getOwnPropertyNames(wordlist).length === 0) {\n for (let [newpath, pathvalue] of Object.entries(data.paths)) {\n const newpathsplit = newpath.split(\"/\");\n\n for (let splitkey in newpathsplit) {\n const pathitem = newpathsplit[splitkey].toLowerCase();\n if (wordlist[pathitem] === undefined) {\n wordlist[pathitem] = 1;\n } else {\n wordlist[pathitem] += 1;\n }\n }\n }\n }\n\n //console.log(\"WORDLIST: \", wordlist)\n\n // Remove underscores and make it normal with upper case etc\n const urlsplit = path.split(\"/\");\n if (urlsplit.length > 0) {\n var curname = \"\";\n for (let urlkey in urlsplit) {\n var subpath = urlsplit[urlkey];\n if (wordlist[subpath] > 2 || subpath.length < 1) {\n continue;\n }\n\n curname = subpath;\n break;\n }\n\n // FIXME: If name exists,\n // FIXME: Check if first part of parsedname is verb, otherwise use method\n const parsedname = curname\n .split(\"_\")\n .join(\" \")\n .split(\"-\")\n .join(\" \")\n .split(\"{\")\n .join(\" \")\n .split(\"}\")\n .join(\" \")\n .trim();\n if (parsedname.length === 0) {\n newaction.errors.push(\"Missing name\");\n } else {\n const newname =\n method.charAt(0).toUpperCase() +\n method.slice(1) +\n \" \" +\n parsedname;\n const searchactions = newActions.find(\n (data) => data.name === newname\n );\n\n //console.log(\"SEARCH: \", searchactions);\n if (searchactions !== undefined) {\n newaction.errors.push(\"Missing name\");\n } else {\n newaction.name = newname;\n }\n }\n } else {\n newaction.errors.push(\"Missing name\");\n }\n }\n\n\t\t\t\t\t//newaction.action_label = \"No Label\"\n newActions.push(newaction);\n }\n }\n\n\n if (data.servers !== undefined && data.servers.length > 0) {\n var firstUrl = data.servers[0].url;\n if (\n firstUrl.includes(\"{\") &&\n firstUrl.includes(\"}\") &&\n data.servers[0].variables !== undefined\n ) {\n const regex = /{\\w+}/g;\n const found = firstUrl.match(regex);\n if (found !== null) {\n for (let foundkey in found) {\n const item = found[foundkey].slice(1, found[foundkey].length - 1);\n const foundVar = data.servers[0].variables[item];\n if (foundVar[\"default\"] !== undefined) {\n firstUrl = firstUrl.replace(found[foundkey], foundVar[\"default\"]);\n }\n }\n }\n }\n\n if (firstUrl.endsWith(\"/\")) {\n setBaseUrl(firstUrl.slice(0, firstUrl.length - 1));\n\t\t\t\t\tparentUrl = firstUrl.slice(0, firstUrl.length - 1)\n } else {\n setBaseUrl(firstUrl)\n\t\t\t\t\tparentUrl = firstUrl\n }\n }\n }\n\n if (securitySchemes !== undefined) {\n \n\t\t\tconsole.log(\"SECURITY: \", securitySchemes)\n var newauth = [];\n\t\t\ttry {\n\t\t\t\tvar optionset = false \n \tfor (const [key, value] of Object.entries(securitySchemes)) {\n \t console.log(\"AUTH: \", key, value);\n\n \t if (key === \"jwt\") {\n \t setAuthenticationOption(\"JWT\");\n \t setAuthenticationRequired(true);\n\n \t if (\n \t value.in !== undefined &&\n \t value.in !== null &&\n \t value.in.length > 0\n \t ) {\n \t setParameterName(value.in);\n\t\t\t\t\t\t\toptionset = true \n \t }\n\n \t } else if (value.scheme === \"bearer\") {\n \t setAuthenticationOption(\"Bearer auth\");\n \t setAuthenticationRequired(true);\n\t\t\t\t\t\toptionset = true \n\n \t } else if (key === \"ApiKeyAuth\" || key === \"Token\" || ((value.in === \"header\" || value.in === \"query\") && value.name !== undefined)) {\n\t\t\t\t\t\t//if (optionset === false) {\n\t\t\t\t\t\t//\toptionset = true \n\t\t\t\t\t\t//}\n\n\t\t\t\t\t\tif (optionset === false) {\n\t\t\t\t\t\t\toptionset = true \n \t \tvalue.in = value.in.charAt(0).toUpperCase() + value.in.slice(1)\n\n \t \tsetParameterLocation(value.in);\n \t \tif (!apikeySelection.includes(value.in)) {\n \t \t console.log(\"APIKEY SELECT: \", apikeySelection);\n \t \t alert.error(\"Might be error in setting up API key authentication\");\n \t \t}\n\n \t \tconsole.log(\"PARAM NAME: \", value.name);\n \t \tsetAuthenticationOption(\"API key\");\n \t \tsetParameterName(value.name);\n \t \tsetAuthenticationRequired(true);\n\n \t \tnewauth.push({\n \t \t\t\"name\": key,\n \t \t\t\"type\": value.in.toLowerCase(),\n\t\t\t\t\t\t\t\t\"in\": value.in.toLowerCase(),\n \t \t\t\"example\": \"\",\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t} else {\n \t \tnewauth.push({\n \t \t\t\"name\": key,\n \t \t\t\"type\": value.in.toLowerCase(),\n\t\t\t\t\t\t\t\t\"in\": value.in.toLowerCase(),\n \t \t\t\"example\": \"\",\n \t \t})\n\t\t\t\t\t\t}\n\n \t if (value.description !== undefined && value.description !== null && value.description.length > 0) {\n\t\t\t\t\t\t\t// Don't want a real description - just the ones we're replacing with\n\t\t\t\t\t\t\tif ((value.description.split(\" \").length - 1) <= 2) {\n \t\t\t\t\t\t\tsetRefreshUrl(value.description)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n \t } else if (value.scheme === \"basic\") {\n \t setAuthenticationOption(\"Basic auth\");\n \t setAuthenticationRequired(true);\n\t\t\t\t\t\toptionset = true \n\n \t } else if (value.scheme === \"oauth2\") {\n \t setAuthenticationOption(\"Oauth2\");\n \t setAuthenticationRequired(true);\n\t\t\t\t\t\toptionset = true \n\n \t } else if (value.type === \"oauth2\" || key === \"Oauth2\" || key === \"Oauth2c\" || (key !== undefined && key !== null && key.toLowerCase().includes(\"oauth2\"))) {\n \t //alert.info(\"Can't handle Oauth2 auth yet.\")\n \t setAuthenticationOption(\"Oauth2\");\n \t setAuthenticationRequired(true);\n\t\t\t\t\t\toptionset = true \n\n \t //console.log(\"FLOW-1: \", value)\n \t const flowkey = value.flow === undefined ? \"flows\" : \"flow\";\n \t //console.log(\"FLOW: \", value[flowkey])\n \t const basekey = value[flowkey].authorizationCode !== undefined\n \t ? \"authorizationCode\"\n \t : \"implicit\";\n\n \t //console.log(\"FLOW2: \", value[flowkey][basekey])\n \t if (value[flowkey] !== undefined && value[flowkey][basekey] !== undefined\n \t ) {\n \t if (\n \t value[flowkey][basekey].authorizationUrl !== undefined &&\n \t parameterName.length === 0\n \t ) {\n \t setParameterName(value[flowkey][basekey].authorizationUrl);\n \t }\n\n \t var tokenUrl = \"\";\n \t if (value[flowkey][basekey].tokenUrl !== undefined) {\n \t setParameterLocation(value[flowkey][basekey].tokenUrl);\n \t tokenUrl = value[flowkey][basekey].tokenUrl;\n \t } else {\n \t setParameterLocation(\"\");\n \t }\n\n \t if (value[flowkey][basekey].refreshUrl !== undefined) {\n \t setRefreshUrl(value[flowkey][basekey].refreshUrl);\n \t } else if (tokenUrl.length > 0) {\n \t setRefreshUrl(tokenUrl);\n \t }\n\n \t if (\n \t value[flowkey][basekey].scopes !== undefined &&\n \t value[flowkey][basekey].scopes !== null\n \t ) {\n \t if (value[flowkey][basekey].scopes.length > 0) {\n \t setOauth2Scopes(value[flowkey][basekey].scopes);\n \t } else {\n \t var newscopes = [];\n \t for (let [scopekey, scopevalue] of Object.entries(value[flowkey][basekey].scopes)) {\n \t if (scopekey.startsWith(\"http\")) {\n \t const scopekeysplit = scopekey.split(\"/\");\n \t if (scopekeysplit.length < 5) {\n \t console.log(\"Skipping scope: \", scopekey);\n \t alert.info(\"Skipping scope: \" + scopekey);\n \t continue;\n \t }\n\n \t //console.log(\"Checking scope for: \", scopekey, scopekeysplit.length)\n \t }\n\n \t newscopes.push(scopekey);\n \t }\n\n \t setOauth2Scopes(newscopes);\n \t }\n \t }\n \t } else {\n \t console.log(\n \t \"Bad flowkey and basekey for oauth2: \",\n \t flowkey,\n \t basekey\n \t );\n \t }\n \t } else {\n \t alert.error(\"Couldn't handle AUTH type: \", key);\n \t //newauth.push({\n \t //\t\"name\": key,\n \t //\t\"type\": value.in,\n \t //\t\"example\": \"\",\n \t //})\n \t }\n \t}\n\t\t\t} catch (e) {\n\t\t\t\talert.error(\"Failed to handle auth\")\n\t\t\t\tconsole.log(\"Error: \", e)\n\t\t\t}\n\n if (newauth.length > 0) {\n\t\t\t\tnewauth = newauth.filter(data => data.name != \"ApiKeyAuth\")\n setExtraAuth(newauth);\n }\n }\n\n\t\tconsole.log(\"PARent: \", parentUrl)\n\t\tvar prefixCheck = \"/v1\"\n\t\tif (parentUrl.includes(\"/\")) {\n\t\t\tconst urlsplit = parentUrl.split(\"/\")\n\t\t\tif (urlsplit.length > 2) {\n\t\t\t\t// Skip if http:// in it too\n\t\t\t\tprefixCheck = \"/\" + urlsplit.slice(3).join(\"/\")\n\t\t\t}\n\n\t\t\tconsole.log(\"Prefix: \", prefixCheck)\n\t\t\tif (prefixCheck.length > 0 && prefixCheck !== \"/\" && prefixCheck.startsWith(\"/\")) {\n\t\t\t\tfor (var actionKey in newActions) {\n\t\t\t\t\tconst action = newActions[actionKey]\n\n\t\t\t\t\tif (action.url !== undefined && action.url !== null && action.url.startsWith(prefixCheck)) {\n\t\t\t\t\t\tnewActions[actionKey].url = action.url.slice(prefixCheck.length, action.url.length)\n\t\t\t\t\t}\n\n\t\t\t\t\tconsole.log(\"Action: \", newActions[actionKey].url)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconsole.log(\"Actions: \", newActions.length, \" BaseURL: \", parentUrl)\n\t\n\t\tvar newActions2 = []\n\t\t// Remove with duplicate action URLs\n\t\tfor (var actionKey in newActions) {\n\t\t\tconst action = newActions[actionKey]\n\t\t\tif (action.url === undefined || action.url === null) {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tvar found = false\n\t\t\tfor (var actionKey2 in newActions2) {\n\t\t\t\tconst action2 = newActions2[actionKey2]\n\t\t\t\tif (action2.url === undefined || action2.url === null) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tif (action.url === action2.url) {\n\t\t\t\t\tfound = true\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!found) {\n\t\t\t\tnewActions2.push(action)\n\t\t\t} else {\n\t\t\t\tconsole.log(\"NOT skipping duplicate action: \", action.url, \". Should merge contents\")\n\t\t\t\tnewActions2.push(action)\n\t\t\t}\n\t\t}\n\n\t\tconsole.log(\"Actions: \", newActions.length, \" Actions2: \", newActions2.length)\n\t\tnewActions = newActions2\n if (newActions.length > increaseAmount - 1) {\n setActionAmount(increaseAmount);\n } else {\n setActionAmount(newActions.length);\n }\n\n //const isCloud = window.location.host === \"localhost:3002\" || window.location.host === \"shuffler.io\"\n if (newActions.length > 1000 && isCloud) {\n alert.error(\"Cut down actions from \" + newActions.length + \" to 999 because of limit\");\n newActions = newActions.slice(0, 999);\n }\n\n setProjectCategories(all_categories);\n\n\t\t// Rearrange them by which has action_label\n\t\tconst firstActions = newActions.filter(data => data.action_label !== undefined && data.action_label !== null && data.action_label !== \"No Label\")\n\t\tconsole.log(\"First actions: \", firstActions)\n\t\tconst secondActions = newActions.filter(data => data.action_label === undefined || data.action_label === null || data.action_label === \"No Label\")\n\t\tnewActions = firstActions.concat(secondActions)\n setActions(newActions);\n\t\t//data.paths[item.url][item.method.toLowerCase()][\"x-label\"] = item.action_label\n\n\n setFilteredActions(newActions);\n setIsAppLoaded(true);\n };\n\n // Saving the app that's been configured.\n\t// Save SAVE app\n const submitApp = () => {\n alert.info(\"Uploading and building app \" + name);\n setAppBuilding(true);\n setErrorCode(\"\");\n\n // Format the information\n const splitBase = baseUrl.split(\"/\");\n const host = splitBase[2];\n const schemes = [splitBase[0]];\n const basePath = \"/\" + splitBase.slice(3).join(\"/\");\n\n const data = {\n openapi: \"3.0.0\",\n info: {\n title: name,\n description: description,\n version: \"1.0\",\n \"x-logo\": fileBase64,\n },\n servers: [{ url: baseUrl }],\n host: host,\n basePath: basePath,\n schemes: schemes,\n paths: {},\n editing: isEditing,\n components: {\n securitySchemes: {},\n },\n id: props.match.params.appid,\n };\n\n\t\tif (isEditing === false) {\n\t\t\tvar urlParams = new URLSearchParams(window.location.search);\n\t\t\tif (urlParams !== undefined && urlParams !== null && urlParams.has(\"id\")) {\n\t\t\t\tdata.id = urlParams.get(\"id\")\n\t\t\t}\n\n //id: props.match.params.appid,\n\t\t}\n\n if (basedata.info !== undefined && basedata.info.contact !== undefined) {\n data.info[\"contact\"] = basedata.info.contact;\n } else if (contact === \"\") {\n data.info[\"contact\"] = {\n name: \"@Anonymous Shuffle User\",\n url: \"https://twitter.com/shuffleio\",\n email: \"support@shuffler.io\",\n };\n } else {\n data.info[\"contact\"] = contact;\n }\n\n if (newWorkflowTags.length > 0) {\n var newtags = [];\n for (let tagkey in newWorkflowTags) {\n newtags.push({ name: newWorkflowTags[tagkey] });\n }\n\n data[\"tags\"] = newtags;\n }\n\n if (newWorkflowCategories.length > 0) {\n data[\"info\"][\"x-categories\"] = newWorkflowCategories;\n }\n\n // Handles actions\n\t\tvar handledPaths = []\n for (let actionkey in actions) {\n var item = JSON.parse(JSON.stringify(actions[actionkey]))\n if (item.errors.length > 0) {\n alert.error(\"Saving with error in action \" + item.name);\n }\n\n if (item.name === undefined && item.description !== undefined) {\n item.name = item.description;\n }\n\n\n\t\t\t// Basic way to allow multiple of the same path \n\t\t\tvar pathjoin = item.url+\"_\"+item.method.toLowerCase()\n\t\t\tif (handledPaths.includes(pathjoin)) {\n\n\t\t\t\t// Max 100 of same lol\n\t\t\t\tfor (let i = 0; i < 100; i++) {\n\t\t\t\t\titem.url = item.url+\"_shuffle_replace_\"+i\n\n\t\t\t\t\tpathjoin = item.url+\"_\"+item.method.toLowerCase()\n\t\t\t\t\tif (handledPaths.includes(pathjoin)) {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\n\t\t\thandledPaths.push(pathjoin)\n\n if (data.paths[item.url] === null || data.paths[item.url] === undefined) {\n data.paths[item.url] = {};\n }\n\n const regex = /[A-Za-z0-9 _]/g;\n if (item.name === undefined) {\n console.log(\"Skipping action \", item);\n continue;\n }\n\n const found = item.name.match(regex);\n if (found !== null) {\n item.name = found.join(\"\");\n }\n\n\t\t\t// Workaround for proper responses. No default as JSON for now\n data.paths[item.url][item.method.toLowerCase()] = {\n responses: {\n default: {\n description: \"default\",\n content: {\n \"text/plain\": {\n schema: {\n type: \"string\",\n example: \"\",\n },\n },\n },\n },\n },\n summary: item.name,\n operationId: item.name.split(\" \").join(\"_\"),\n description: item.description,\n parameters: [],\n requestBody: {\n content: {},\n },\n };\n\n\t\t\tif (item.action_label !== undefined && item.action_label !== \"\" && item.action_label !== \"No Label\") {\n\t\t\t\tconsole.log(\"Action label: \", item.action_label)\n\t\t\t\tdata.paths[item.url][item.method.toLowerCase()][\"x-label\"] = item.action_label\n\t\t\t}\n\n\t\t\tif (item.required_bodyfields !== undefined && item.required_bodyfields !== null && item.required_bodyfields.length > 0) {\n\t\t\t\tconsole.log(\"Required bodyfields: \", item.required_bodyfields)\n\t\t\t\tdata.paths[item.url][item.method.toLowerCase()][\"x-required-fields\"] = item.required_bodyfields\n\t\t\t}\n\n //console.log(\"ACTION: \", item)\n\n if (item.example_response !== undefined && item.example_response !== null && item.example_response.length > 0) {\n\n\t\t\t\tif (item[\"example_response\"] === \"shuffle_file_download\") {\n\t\t\t\t\tdata.paths[item.url][item.method.toLowerCase()].responses[\"default\"][\"content\"][\"text/plain\"].schema.type = \"string\"\n\t\t\t\t\tdata.paths[item.url][item.method.toLowerCase()].responses[\"default\"][\"content\"][\"text/plain\"].schema.format = \"binary\"\n\n\t\t\t\t\t/*\n\t\t\t\t\tschema:\n\t\t\t\t\t\ttype: object\n\t\t\t\t\t\tproperties:\n\t\t\t\t\t\t\tusername:\n\t\t\t\t\t\t\t\ttype: string\n\t\t\t\t\t\t\tavatar: # <-- image embedded into JSON\n\t\t\t\t\t\t\t\ttype: string\n\t\t\t\t\t\t\t\tformat: byte\n\t\t\t\t\t\t\t\tdescription: Base64-encoded contents of the avatar image\n\t\t\t\t\t*/\n\n\t\t\t\t} else {\n\t\t\t\t\t// FIXME: Shallow copy of the string\n\t\t\t\t\tvar showResult = Object.assign(\"\", item.example_response).trim();\n\t\t\t\t\tshowResult = showResult.split(\" None\").join(' \"None\"');\n\t\t\t\t\tshowResult = showResult.split(\"'\").join('\"');\n\t\t\t\t\tshowResult = showResult.split(\" False\").join(\" false\");\n\t\t\t\t\tshowResult = showResult.split(\" True\").join(\" true\");\n\n\t\t\t\t\tvar jsonvalid = true;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst tmp = String(JSON.parse(showResult));\n\t\t\t\t\t\tif (!showResult.includes(\"{\") && !showResult.includes(\"[\")) {\n\t\t\t\t\t\t\tjsonvalid = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tjsonvalid = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tdata.paths[item.url][item.method.toLowerCase()].responses[\"default\"][\n\t\t\t\t\t\t\"content\"\n\t\t\t\t\t][\"text/plain\"].schema.type = \"string\";\n\t\t\t\t\tif (jsonvalid) {\n\t\t\t\t\t\t// FIXME: Add a JSON parser here - don't run it as a string.\n\t\t\t\t\t\tdata.paths[item.url][item.method.toLowerCase()].responses[\"default\"][\n\t\t\t\t\t\t\t\"content\"\n\t\t\t\t\t\t][\"text/plain\"].schema.example = showResult;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdata.paths[item.url][item.method.toLowerCase()].responses[\"default\"][\n\t\t\t\t\t\t\t\"content\"\n\t\t\t\t\t\t][\"text/plain\"].schema.example = item.example_response;\n\t\t\t\t\t}\n\t\t\t\t}\n }\n\n if (item.queries.length > 0) {\n var skipped = false;\n\t\t\t\tvar querynames = []\n for (let querykey in item.queries) {\n const queryitem = item.queries[querykey];\n\n\t\t\t\t\tif (queryitem === undefined || queryitem === null || queryitem.name === undefined || queryitem.name === null || queryitem.name === \"\") {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\n\t\t\t\t\t// A fix for duplicate items\n\t\t\t\t\tif (querynames.includes(queryitem.name.toLowerCase())) {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\n\t\t\t\t\tquerynames.push(queryitem.name.toLowerCase())\n if (queryitem.name.toLowerCase() == \"url\") {\n console.log(item.name + \" uses a bad query: url\");\n continue;\n //skipped = true\n //break\n }\n\n if (queryitem.name.toLowerCase() == \"file_id\") {\n\t\t\t\t\t\titem.queries[querykey].name = \"fileid\"\n continue;\n //skipped = true\n //break\n }\n\n if (\n queryitem.name.toLowerCase() == \"url\" ||\n queryitem.name.toLowerCase() == \"body\" ||\n queryitem.name.toLowerCase() == \"self\" ||\n queryitem.name.toLowerCase() == \"query\" ||\n queryitem.name.toLowerCase() == \"ssl_verify\" ||\n queryitem.name.toLowerCase() == \"queries\" ||\n queryitem.name.toLowerCase() == \"headers\" ||\n queryitem.name.toLowerCase() == \"access_token\") {\n\t\t\t\t\t\t/*\n\n queryitem.name.includes(\"[\") ||\n queryitem.name.includes(\"]\") ||\n queryitem.name.includes(\"{\") ||\n queryitem.name.includes(\"}\") ||\n queryitem.name.includes(\"(\") ||\n queryitem.name.includes(\")\") ||\n queryitem.name.includes(\"!\") ||\n queryitem.name.includes(\"@\") ||\n queryitem.name.includes(\"#\") ||\n queryitem.name.includes(\"$\") ||\n queryitem.name.includes(\"%\") ||\n queryitem.name.includes(\"^\") ||\n queryitem.name.includes(\"&\") ||\n queryitem.name.includes(\":\") ||\n queryitem.name.includes(\";\") ||\n queryitem.name.includes(\"<\") ||\n queryitem.name.includes(\">\") ||\n queryitem.name.includes('\"') ||\n queryitem.name.includes(\"'\")\n ) {\n\t\t\t\t\t\t\t*/\n console.log(item.name + \" error: uses a bad query - not adding: \",queryitem.name)\n \n\n\t\t\t\t\t\t// Find a replacement for the invalid ones first.\n\n continue;\n }\n\n var newitem = {\n in: \"query\",\n name: queryitem.name,\n description: \"Generated by shuffler.io OpenAPI\",\n required: queryitem.required,\n schema: {\n type: \"string\",\n },\n };\n\n\t\t\t\t\tif (queryitem.example !== undefined) {\n\t\t\t\t\t\tnewitem.example = queryitem.example\n\t\t\t\t\t}\n\n if (queryitem.description !== undefined) {\n newitem.description = queryitem.description;\n }\n\n data.paths[item.url][item.method.toLowerCase()].parameters.push(\n newitem\n );\n //console.log(queryitem)\n }\n\n // Bad code as it doesn't allow for \"anything\".\n if (skipped) {\n alert.info(\n \"Bad configuration of \" +\n item.name +\n \". Skipping because queries are invalid.\"\n );\n continue;\n }\n }\n //data.paths[item.url][item.method.toLowerCase()].parameters.push(newitem)\n\n if (item.paths.length > 0) {\n for (let querykey in item.paths) {\n const queryitem = item.paths[querykey];\n\n if (queryitem.toLowerCase() == \"url\") {\n queryitem = \"action_url\";\n }\n\n if (queryitem.toLowerCase() == \"apikey\") {\n queryitem = \"action_apikey\";\n }\n\n newitem = {\n in: \"path\",\n name: queryitem,\n description: \"Generated by shuffler.io OpenAPI\",\n required: true,\n schema: {\n type: \"string\",\n },\n };\n\n if (queryitem.description !== undefined) {\n newitem.description = queryitem.description;\n }\n\n data.paths[item.url][item.method.toLowerCase()].parameters.push(newitem);\n //console.log(queryitem)\n }\n } else {\n // Always goes here if they didn't click anything :/\n const values = getCurrentPaths(item.url);\n const paths = values[0];\n\n for (let querykey in paths) {\n const queryitem = paths[querykey];\n newitem = {\n in: \"path\",\n name: queryitem,\n description: \"Generated by shuffler.io OpenAPI\",\n required: false,\n schema: {\n type: \"string\",\n },\n };\n\n if (queryitem.description !== undefined) {\n newitem.description = queryitem.description;\n }\n\n data.paths[item.url][item.method.toLowerCase()].parameters.push(\n newitem\n );\n //console.log(queryitem)\n }\n }\n\n\t\t\tconst methodname = item.method.toLowerCase()\n\t\t\tif (methodname === \"post\" || methodname === \"put\" || methodname === \"patch\") {\n \tif (\n \t item.body !== undefined &&\n \t item.body !== null &&\n \t item.body.length > 0\n \t) {\n\t\t\t\t\t//console.log(\"GOT BODY: \", item.url, item.method, item.body)\n\n\t\t\t\t\t// Replacing dollarsign insertions that aren't escaped\n\t\t\t\t\t// This is to stop it from messing with systems in Shuffle.\n\t\t\t\t\t// This MAY cause it to be a little weird in other systems however,\n\t\t\t\t\t// but it's the only way we can properly support e.g. GraphQL\n\t\t\t\t\t// with good examples\n\t\t\t\t\tvar newbody = \"\"\n\t\t\t\t\tfor (let bodykey in item.body) {\n\t\t\t\t\t\tif (item.body[bodykey] === \"$\") {\n\t\t\t\t\t\t\tif (bodykey > 0) {\n\n\t\t\t\t\t\t\t\tconst newkey = parseInt(bodykey, 10)\n\t\t\t\t\t\t\t\tif (item.body[newkey-1] !== \"\\\\\") {\n\t\t\t\t\t\t\t\t\tif (item.body[newkey+1] !== \"\\{\") {\n\t\t\t\t\t\t\t\t\t\tnewbody += \"\\\\\"\n\t\t\t\t\t\t\t\t\t} \n\t\t\t\t\t\t\t\t} \n\n\t\t\t\t\t\t\t\tnewbody += item.body[bodykey]\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tnewbody += \"\\\\\"\n\t\t\t\t\t\t\t\tnewbody += item.body[bodykey]\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnewbody += item.body[bodykey]\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t//console.log(\"New body: \", newbody)\n\t\t\t\t\tif (newbody !== item.body) {\n\t\t\t\t\t\titem.body = newbody\n\t\t\t\t\t}\n\n\t\t\t\t\t//var pathjoin = item.url+\"_\"+item.method.toLowerCase()\n\n \t const required = false;\n \t newitem = {\n \t in: \"body\",\n \t name: \"body\",\n \t multiline: true,\n \t description: \"Generated by shuffler.io OpenAPI\",\n \t required: required,\n \t example: item.body,\n \t schema: {\n \t type: \"string\",\n \t },\n \t };\n\n \t // FIXME - add application/json if JSON example?\n \t data.paths[item.url][item.method.toLowerCase()][\"requestBody\"] = {\n \t description: \"Generated by Shuffler.io\",\n \t required: required,\n \t content: {\n \t example: {\n \t example: item.body,\n \t },\n \t },\n \t };\n\n \t data.paths[item.url][item.method.toLowerCase()].parameters.push(\n \t newitem\n \t );\n \t} else if (actionBodyRequest.includes(item.method.toUpperCase())) {\n \t // Appending an empty field\n \t const required = false;\n \t newitem = {\n \t in: \"body\",\n \t name: \"body\",\n \t multiline: true,\n \t description: \"Generated by shuffler.io OpenAPI\",\n \t required: required,\n \t example: \"\",\n \t schema: {\n \t type: \"string\",\n \t },\n \t };\n\n \t // FIXME - add application/json if JSON example?\n \t data.paths[item.url][item.method.toLowerCase()][\"requestBody\"] = {\n \t description: \"Generated by Shuffler.io\",\n \t required: required,\n \t content: {\n \t example: {\n \t example: \"\",\n \t },\n \t },\n \t };\n\n \t data.paths[item.url][item.method.toLowerCase()].parameters.push(\n \t newitem\n \t );\n \t} else {\n \t //console.log(\"Nothing to append?\")\n \t}\n\t\t\t}\n\n // https://swagger.io/docs/specification/describing-request-body/file-upload/\n if (item.file_field !== undefined && item.file_field !== null && item.file_field.length > 0) {\n data.paths[item.url][item.method.toLowerCase()][\"requestBody\"][\n \"content\"\n ][\"multipart/form-data\"] = {\n schema: {\n type: \"object\",\n properties: {\n fieldname: {\n type: \"string\",\n value: item.file_field,\n },\n },\n },\n };\n\n //console.log(data.paths[item.url][item.method.toLowerCase()][\"requestBody\"][\"content\"][\"multipart/form-data\"])\n }\n\n if (item.headers.length > 0) {\n const required = false;\n\n const headersSplit = item.headers.split(\"\\n\");\n for (let headerkey in headersSplit) {\n const header = headersSplit[headerkey];\n\n\t\t\t\t\tvar innerkey = \"\"\n var value = \"\";\n if (header.length > 0 && header.includes(\"= \")) {\n const headersplit = header.split(\"= \");\n innerkey = headersplit[0];\n value = headersplit[1];\n } else if (header.length > 0 && header.includes(\" =\")) {\n const headersplit = header.split(\" =\");\n innerkey = headersplit[0];\n value = headersplit[1];\n } else if (header.length > 0 && header.includes(\"=\")) {\n const headersplit = header.split(\"=\");\n innerkey = headersplit[0];\n value = headersplit[1];\n } else if (header.length > 0 && header.includes(\": \")) {\n const headersplit = header.split(\": \");\n innerkey = headersplit[0];\n value = headersplit[1];\n } else if (header.length > 0 && header.includes(\" :\")) {\n const headersplit = header.split(\" :\");\n innerkey = headersplit[0];\n value = headersplit[1];\n } else if (header.length > 0 && header.includes(\":\")) {\n const headersplit = header.split(\":\");\n innerkey = headersplit[0];\n value = headersplit[1];\n } else {\n continue;\n }\n\n if (innerkey.length > 0 && value.length > 0) {\n newitem = {\n in: \"header\",\n name: innerkey,\n multiline: false,\n description: \"Header generated by shuffler.io OpenAPI\",\n required: false,\n example: value,\n schema: {\n type: \"string\",\n },\n };\n\n data.paths[item.url][item.method.toLowerCase()].parameters.push(\n newitem\n );\n }\n }\n }\n }\n\n if (authenticationOption === \"API key\") {\n if (parameterName.length === 0) {\n alert.error(\"A field name for the APIkey must be defined\");\n setAppBuilding(false);\n return;\n }\n\n\t\t\tconsole.log(\"Paramname: \", parameterName)\n var newparamName = parameterName.replaceAll('\"', \"\");\n newparamName = newparamName.replaceAll(\"'\", \"\");\n\n data.components.securitySchemes[\"ApiKeyAuth\"] = {\n type: \"apiKey\",\n in: parameterLocation.toLowerCase(),\n name: newparamName,\n\t\t\t\tdescription: refreshUrl,\n }\n\n\t\t\tconsole.log(\"Full auth component: \", data.components.securitySchemes[\"ApiKeyAuth\"])\n\n } else if (authenticationOption === \"Bearer auth\") {\n data.components.securitySchemes[\"BearerAuth\"] = {\n type: \"http\",\n scheme: \"bearer\",\n bearerFormat: \"UUID\",\n };\n } else if (authenticationOption === \"JWT\") {\n data.components.securitySchemes[\"jwt\"] = {\n type: \"http\",\n scheme: \"bearer\",\n bearerFormat: \"JWT\",\n in: parameterName,\n };\n\n console.log(\"SECURITYSCHEMES: \", data.components);\n } else if (authenticationOption === \"Basic auth\") {\n data.components.securitySchemes[\"BasicAuth\"] = {\n type: \"http\",\n scheme: \"basic\",\n };\n } else if (authenticationOption === \"Oauth2\") {\n\t\t\tconsole.log(\"oauth2: \", parameterName)\n var newparamName = parameterName.replaceAll('\"', \"\");\n newparamName = newparamName.replaceAll(\"'\", \"\");\n\n //parameterName, parameterValue, revocationUrl\n data.components.securitySchemes[\"Oauth2\"] = {\n type: \"oauth2\",\n description: \"Oauth2.0 authorizationCode authentication\",\n flow: {\n authorizationCode: {\n authorizationUrl: newparamName,\n tokenUrl: parameterLocation,\n refreshUrl: refreshUrl,\n scopes:\n oauth2Scopes === undefined || oauth2Scopes === null\n ? []\n : oauth2Scopes,\n },\n },\n };\n }\n\n if (setExtraAuth.length > 0) {\n for (let authkey in extraAuth) {\n const curauth = extraAuth[authkey];\n\n if (curauth.name.toLowerCase() == \"url\") {\n alert.error(\"Can't add extra auth with Name URL\");\n setAppBuilding(false);\n return;\n }\n\n data.components.securitySchemes[curauth.name] = {\n type: \"apiKey\",\n in: curauth.type,\n name: curauth.name,\n };\n }\n }\n\n fetch(globalUrl + \"/api/v1/verify_openapi\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify(data, null, 4),\n credentials: \"include\",\n })\n .then((response) => {\n //if (response.status !== 200) {\n //\tsetErrorCode(\"An error occurred during validation\")\n //\tthrow new Error(\"NOT 200 :O\")\n //}\n\n setAppBuilding(false);\n return response.json();\n })\n .then((responseJson) => {\n if (!responseJson.success) {\n if (responseJson.reason !== undefined) {\n setErrorCode(responseJson.reason);\n alert.error(\"Failed to verify: \" + responseJson.reason);\n }\n } else {\n alert.success(\"Successfully uploaded openapi\");\n if (window.location.pathname.includes(\"/new\")) {\n if (responseJson.id !== undefined && responseJson.id !== null) {\n window.location = `/apps/edit/${responseJson.id}`;\n }\n }\n }\n })\n .catch((error) => {\n setAppBuilding(false);\n setErrorCode(error.toString());\n alert.error(error.toString());\n });\n };\n\n const bearerAuth =\n authenticationOption === \"Bearer auth\" ? (\n
    \n

    \n \n Bearer auth\n \n

    \n Users will be required to submit their API as the header \"Authorization:\n Bearer APIKEY\"\n
    \n ) : null;\n\n // Basicauth\n const basicAuth =\n authenticationOption === \"Basic auth\" ? (\n
    \n

    \n \n Basic authentication\n \n

    \n Users will be required to submit a valid username and password before\n using the API\n
    \n ) : null;\n\n const testAction = (index) => {\n console.log(\"Should test action at index \" + index);\n console.log(actions[index]);\n };\n\n \n\n const duplicateAction = (index) => {\n var newAction = JSON.parse(JSON.stringify(actions[index]));\n newAction.name = newAction.name + \"_copy\";\n newAction.errors.push(\"Can't have the same name\");\n\n actions.push(newAction);\n\n if (actions.length > actionAmount) {\n setActionAmount(actions.length);\n }\n\n setActions(actions);\n setFilteredActions(actions);\n setUpdate(Math.random());\n };\n\n const deleteAction = (index) => {\n actions.splice(index, 1);\n //setCurrentAction({\n // name: \"\",\n // description: \"\",\n // url: \"\",\n // file_field: \"\",\n // headers: \"\",\n // paths: [],\n // queries: [],\n // body: \"\",\n // errors: [],\n // method: actionNonBodyRequest[0],\n //});\n\n setActions(actions);\n setFilteredActions(actions);\n setActionAmount(actionAmount - 1);\n setUpdate(Math.random());\n };\n\n //console.log(\"Option: \", authenticationOption)\n //console.log(\"Location: \", parameterLocation)\n //console.log(\"Name: \", parameterName)\n\t//const extraKeys = \n const extraKeys = authenticationOption === \"Oauth2\" ? null : \n
    \n
    \n Extra authentication\n {extraAuth.length === 0 ? (\n {\n console.log(\"ADD NEW!\");\n extraAuth.push(defaultAuth);\n setExtraAuth(extraAuth);\n setUpdate(Math.random());\n }}\n >\n \n \n ) : (\n \n )}\n
    \n\n {extraAuth.map((value, index) => {\n return (\n \n {\n extraAuth[index].name = e.target.value;\n setExtraAuth(extraAuth);\n }}\n InputProps={{\n classes: {\n notchedOutline: classes.notchedOutline,\n },\n style: {\n color: \"white\",\n minHeight: 50,\n marginLeft: 5,\n maxWidth: \"95%\",\n fontSize: \"1em\",\n },\n }}\n />\n {\n extraAuth[index].example = e.target.value;\n setExtraAuth(extraAuth);\n }}\n InputProps={{\n style: {\n color: \"white\",\n minHeight: 50,\n marginLeft: 5,\n maxWidth: \"95%\",\n fontSize: \"1em\",\n },\n }}\n />\n {\n extraAuth[index].type = e.target.value;\n setUpdate(Math.random());\n setExtraAuth(extraAuth);\n }}\n value={extraAuth[index].type}\n style={{\n flex: 1,\n backgroundColor: inputColor,\n paddingLeft: \"10px\",\n color: \"white\",\n height: 50,\n borderRadius: 5,\n }}\n inputProps={{\n name: \"age\",\n id: \"outlined-age-simple\",\n }}\n >\n \n Header\n \n \n Query\n \n \n
    \n {index === extraAuth.length - 1 ? (\n {\n extraAuth.push(defaultAuth);\n setExtraAuth(extraAuth);\n setUpdate(Math.random());\n }}\n >\n \n \n ) : (\n \n )}\n {\n const tmpAuth = extraAuth.filter(\n (item) =>\n item.type === value.type && item.name !== value.name\n );\n setExtraAuth(tmpAuth);\n console.log(tmpAuth);\n setUpdate(Math.random());\n }}\n >\n \n \n
    \n \n );\n })}\n
    \n //);\n\n const jwtAuth =\n authenticationOption === \"JWT\" ? (\n
    \n JWT authentication\n \n Authentication path\n \n \n Must start with / and be a valid path\n \n }\n onBlur={(e) => setParameterName(e.target.value)}\n InputProps={{\n classes: {\n notchedOutline: classes.notchedOutline,\n },\n style: {\n color: \"white\",\n },\n }}\n />\n
    \n ) : null;\n\n const oauth2Auth =\n authenticationOption === \"Oauth2\" ? (\n
    \n Oauth2 authentication\n \n\t\t\t\t\tFind the Authorization URL, Token URL and scopes in question for the API. Ensure the app in question is pointed at https://shuffler.io/set_authentication\n \n\n \n Base Authorization URL for Oauth2\n \n setParameterName(e.target.value)}\n\t\t\t\t\tonBlur={(event) => {\n var tmpstring = event.target.value.trim();\n\n if (\n tmpstring.length > 4 &&\n !tmpstring.startsWith(\"http\") &&\n !tmpstring.startsWith(\"ftp\")\n ) {\n alert.error(\"Auth URL must start with http(s)://\");\n }\n\n\t\t\t\t\t\tif (tmpstring.includes(\"?\")) {\n\t\t\t\t\t\t\tvar newtmp = tmpstring.split(\"?\")\n\t\t\t\t\t\t\tif (tmpstring.length > 1) {\n\t\t\t\t\t\t\t\ttmpstring = newtmp[0]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tsetParameterName(tmpstring)\n\t\t\t\t\t}}\n InputProps={{\n classes: {\n notchedOutline: classes.notchedOutline,\n },\n style: {\n color: \"white\",\n },\n }}\n />\n \n Token URL for Oauth2\n \n {\n\t\t\t\t\t\tsetParameterLocation(e.target.value)\n\t\t\t\t\t}}\n\t\t\t\t\tonBlur={(event) => {\n var tmpstring = event.target.value.trim();\n\n if (\n tmpstring.length > 4 &&\n !tmpstring.startsWith(\"http\") &&\n !tmpstring.startsWith(\"ftp\")\n ) {\n alert.error(\"Token URL must start with http(s)://\");\n }\n\n\t\t\t\t\t\tif (tmpstring.includes(\"?\")) {\n\t\t\t\t\t\t\tvar newtmp = tmpstring.split(\"?\")\n\t\t\t\t\t\t\tif (tmpstring.length > 1) {\n\t\t\t\t\t\t\t\ttmpstring = newtmp[0]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tsetParameterLocation(tmpstring)\n\t\t\t\t\t}}\n InputProps={{\n classes: {\n notchedOutline: classes.notchedOutline,\n },\n style: {\n color: \"white\",\n },\n }}\n />\n \n Refresh-token URL for Oauth2 (Optional)\n \n setRefreshUrl(e.target.value)}\n\t\t\t\t\tonBlur={(event) => {\n var tmpstring = event.target.value.trim();\n\n if (\n tmpstring.length > 4 &&\n !tmpstring.startsWith(\"http\") &&\n !tmpstring.startsWith(\"ftp\")\n ) {\n alert.error(\"Refresh URL must start with http(s)://\");\n }\n\n\t\t\t\t\t\tif (tmpstring.includes(\"?\")) {\n\t\t\t\t\t\t\tvar newtmp = tmpstring.split(\"?\")\n\t\t\t\t\t\t\tif (tmpstring.length > 1) {\n\t\t\t\t\t\t\t\ttmpstring = newtmp[0]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tsetRefreshUrl(tmpstring)\n\t\t\t\t\t}}\n InputProps={{\n style: {\n color: \"white\",\n },\n }}\n />\n \n Scopes for Oauth2\n \n {\n oauth2Scopes.push(chip);\n console.log(oauth2Scopes);\n setOauth2Scopes(oauth2Scopes);\n setUpdate(Math.random());\n }}\n onDelete={(chip, index) => {\n oauth2Scopes.splice(index, 1);\n console.log(oauth2Scopes);\n setOauth2Scopes(oauth2Scopes);\n setUpdate(Math.random());\n }}\n />\n
    \n ) : null;\n\n const apiKey =\n authenticationOption === \"API key\" ? (\n
    \n API key authentication\n \n Add the name of the field used for authentication, e.g. \"X-APIKEY\". Should NOT be your actual API-key.\n \n\t\t\t\t
    \n\t\t\t\t\t
    \n \t\tKey\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tCan't be empty or contain any of the following: !#$%&'^\"+-._~|]+$\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonChange={(e) => {\n\t\t\t\t\t\t\t\tsetParameterName(e.target.value);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tInputProps={{\n\t\t\t\t\t\t\t\tclasses: {\n\t\t\t\t\t\t\t\t\tnotchedOutline: classes.notchedOutline,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\t\tcolor: \"white\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t
    \n\t\t\t\t\t
    \n \t\tField type\n \t\t {\n \t\t setParameterLocation(e.target.value);\n \t\t }}\n \t\t value={parameterLocation}\n \t\t style={{\n \t\t borderRadius: 5,\n \t\t backgroundColor: inputColor,\n \t\t paddingLeft: 10,\n \t\t color: \"white\",\n \t\t height: 57,\n \t\t }}\n \t\t inputProps={{\n \t\t name: \"age\",\n \t\t id: \"outlined-age-simple\",\n \t\t }}\n \t\t>\n \t\t {apikeySelection.map((data, index) => {\n \t\t if (data === undefined) {\n \t\t return null;\n \t\t }\n\n \t\t return (\n \t\t \n \t\t {data}\n \t\t \n \t\t );\n \t\t })}\n \t\t\n\t\t\t\t\t
    \n\t\t\t\t\t
    \n \t\tValue prefix\t\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t// Just reusing this state\n \t setRefreshUrl(e.target.value);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t
    \n\t\t\t\t
    \n
    \n ) : null;\n\n \n\n\t\tconst getCurrentPaths = (urlPath) => {\n \t var paths = [];\n \t var queries = [];\n\n \t if (urlPath.includes(\"{\") && urlPath.includes(\"}\")) {\n \t var tmpWord = \"\";\n \t var record = false;\n\n \t var query = false;\n \t for (var key in urlPath) {\n \t if (urlPath[key] === \"?\") {\n \t query = true;\n \t }\n\n \t if (urlPath[key] === \"}\") {\n \t if (tmpWord === parameterName) {\n \t tmpWord = \"\";\n \t record = false;\n \t continue;\n \t } else if (query) {\n \t queries.push(tmpWord);\n \t } else {\n \t paths.push(tmpWord);\n \t }\n\n \t tmpWord = \"\";\n \t record = false;\n \t }\n\n \t if (record) {\n \t tmpWord += urlPath[key];\n \t }\n\n \t //if (urlPath[key] === \"{\" && urlPath[key-1] === \"/\") {\n \t if (urlPath[key] === \"{\") {\n \t record = true;\n \t }\n \t }\n \t }\n\n \t if (urlPath.includes(\"<\") && urlPath.includes(\">\")) {\n \t var tmpWord = \"\";\n \t var record = false;\n\n \t var query = false;\n \t for (var key in urlPath) {\n \t if (urlPath[key] === \"?\") {\n \t query = true;\n \t }\n\n \t if (urlPath[key] === \">\") {\n \t if (tmpWord === parameterName) {\n \t tmpWord = \"\";\n \t record = false;\n \t continue;\n \t } else if (query) {\n \t queries.push(tmpWord);\n \t } else {\n \t paths.push(tmpWord);\n \t }\n\n \t tmpWord = \"\";\n \t record = false;\n \t }\n\n \t if (record) {\n \t tmpWord += urlPath[key];\n \t }\n\n \t //if (urlPath[key] === \"{\" && urlPath[key-1] === \"/\") {\n \t if (urlPath[key] === \"<\") {\n \t record = true;\n \t }\n \t }\n \t }\n\n \t return [paths, queries];\n \t};\n\n\tconst foundCategory = newWorkflowCategories !== undefined && newWorkflowCategories !== null && newWorkflowCategories.length > 0 ? categories.find((x) => x.name === newWorkflowCategories[0]) : undefined\n\tconst actionLabels = foundCategory !== undefined && foundCategory !== null && foundCategory.action_labels.length > 0 ? [\"No Label\"].concat(foundCategory.action_labels) : []\n\n\tconst ActionPaper = (props) => {\n\t\tconst { data, index } = props\n\n \tconst [updater, setUpdater] = useState(\"tmp\");\n \tconst [actionsModalOpen, setActionsModalOpen] = useState(false);\n \tconst [urlPath, setUrlPath] = useState(\"\");\n \tconst [fileUploadEnabled, setFileUploadEnabled] = useState(false);\n \tconst [currentActionMethod, setCurrentActionMethod] = useState(actionNonBodyRequest[0])\n \tconst [extraBodyFields, setExtraBodyFields] = useState([]);\n \tconst [urlPathQueries, setUrlPathQueries] = useState([]);\n\t\tconst [currentAction, setCurrentAction] = useState({\n\t\t\tname: \"\",\n\t\t\tfile_field: \"\",\n\t\t\tdescription: \"\",\n\t\t\turl: \"\",\n\t\t\theaders: \"\",\n\t\t\tpaths: [],\n\t\t\tqueries: [],\n\t\t\tbody: \"\",\n\t\t\terrors: [],\n\t\t\texample_response: \"\",\n\t\t\tmethod: actionNonBodyRequest[0],\n\t\t\taction_label: \"No Label\",\n\t\t\trequired_bodyfields: [],\n\t\t});\n\n\t\tconst findBodyParams = (body) => {\n\t\t\tconst regex = /\\${(\\w+)}/g;\n\t\t\tconst found = body.match(regex);\n\t\t\tif (found === null) {\n\t\t\t\tsetExtraBodyFields([]);\n\t\t\t} else {\n\t\t\t\tsetExtraBodyFields(found);\n\t\t\t}\n \t};\n\n\t\tconst UrlPathParameters = () => {\n\t\t\tconst values = getCurrentPaths(urlPath);\n\t\t\tconst paths = values[0];\n\t\t\tconst queries = values[1];\n\n\t\t\tif (currentAction.paths !== paths && urlPath.length > 0) {\n\t\t\t\t//console.log(\"IN PATHS SETTER: !\", paths)\n\t\t\t\tsetActionField(\"paths\", paths);\n\t\t\t}\n\n\t\t\tvar tmpQueries = [];\n\n\t\t\t// No overlapping of names\n\t\t\tfor (var key in queries) {\n\t\t\t\tconst tmpquery = queries[key];\n\t\t\t\tconst found = tmpQueries.find((query) => query.name === tmpquery);\n\t\t\t\tif (found === undefined) {\n\t\t\t\t\ttmpQueries.push({ name: queries[key], required: true });\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// FIXME: Frontend isn't updating..\n\t\t\tif (tmpQueries.length > 0 && JSON.stringify(tmpQueries) !== JSON.stringify(urlPathQueries)) {\n\t\t\t\tsetUrlPathQueries(tmpQueries);\n\t\t\t}\n\n\t\t\treturn paths.length > 0 ? (\n\t\t\t\t
    Required parameters: {paths.join(\", \")}
    \n\t\t\t) : null;\n\t\t};\n\n\n\t\tconst HandleIndividualChip = (props) => {\n \t\tconst { chipData, index } = props;\n \t\tconst [chipRequired, setChipRequired] = useState(currentAction.required_bodyfields !== undefined ? currentAction.required_bodyfields.includes(chipData) : false);\n\n\t\t\t\tconst parsedChip = chipData.startsWith(\"${\") && chipData.endsWith(\"}\") ? chipData.substring(2, chipData.length - 1) : chipData\n\n \t\treturn (\n \t\t \n \t\t {\n\t\t\t\t\t\t\t\tif (chipRequired) {\n\t\t\t\t\t\t\t\t\tcurrentAction[\"required_bodyfields\"].splice(currentAction[\"required_bodyfields\"].indexOf(chipData), 1)\n\t\t\t\t\t\t\t\t} else {\n \t\t\t\t\t\t\tcurrentAction[\"required_bodyfields\"].push(chipData) \n\t\t\t\t\t\t\t\t}\n\n \t\t\t\t\t\tsetCurrentAction(currentAction);\n \t\t setChipRequired(!chipRequired);\n \t\t }}\n \t\t />\n \t\t \n \t\t);\n \t};\n\n\t\tconst setActionField = (field, value) => {\n\t\t\tcurrentAction[field] = value\n\t\t\tsetCurrentAction(currentAction)\n\n\t\t\t//setUrlPathQueries(currentAction.queries)\n\t\t};\n\n\t\tconst addPathQuery = () => {\n \t urlPathQueries.push({ name: \"\", required: true, example: \"\", });\n \t if (updater === \"addupdater\") {\n \t setUpdater(\"updater\");\n \t } else {\n \t setUpdater(\"addupdater\");\n \t }\n \t setUrlPathQueries(urlPathQueries);\n \t};\n\n \tconst flipRequired = (index) => {\n \t urlPathQueries[index].required = !urlPathQueries[index].required;\n \t if (updater === \"flipupdater\") {\n \t setUpdater(\"updater\");\n \t } else {\n \t setUpdater(\"flipupdater\");\n \t }\n \t setUrlPathQueries(urlPathQueries);\n \t};\n\n \tconst deletePathQuery = (index) => {\n\t\t\tconsole.log(\"Should delete index: \", index)\n\t\t\tvar tmpqueries = JSON.parse(JSON.stringify(urlPathQueries))\n\t\t\ttmpqueries.splice(index, 1)\n\n\t\t\tconsole.log(\"Queries: \", tmpqueries)\n \t setUrlPathQueries(tmpqueries);\n\n \t if (updater === \"deleteupdater\") {\n \t setUpdater(\"updater\");\n \t } else {\n \t setUpdater(\"deleteupdater\");\n \t }\n \t};\n\n\t\tconst loopQueries = urlPathQueries.length === 0 ? null : (\n
    \n \n Queries\n {urlPathQueries.map((query, queryIndex) => {\n const requiredColor = query.required === true ? \"green\" : \"red\";\n //const required = data.required === true ?
    {data.required.toString()}
    :
    {flipRequired(index)}} style={{display: \"inline\", color: \"red\", cursor: \"pointer\"}}>{data.required.toString()}
    \n return (\n \n
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tClick required to flip \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tonBlur={(e) => {\n\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"IN BLUR: \", e.target.value);\n\t\t\t\t\t\t\t\t\t\t\turlPathQueries[queryIndex].name = e.target.value.replaceAll(\"=\", \"\");\n\t\t\t\t\t\t\t\t\t\t\tsetUrlPathQueries(urlPathQueries);\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tstyle={{flex: 3}}\n\t\t\t\t\t\t\t\t\t\tInputProps={{\n\t\t\t\t\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\t\t\t\t\tcolor: \"white\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\turlPathQueries[queryIndex].example = e.target.value.replaceAll(\n\t\t\t\t\t\t\t\t\t\t\t\t\"=\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t\t\t\t\t)\n\n\t\t\t\t\t\t\t\t\t\t\tsetUrlPathQueries(urlPathQueries)\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tstyle={{flex: 2}}\n\t\t\t\t\t\t\t\t\t\tInputProps={{\n\t\t\t\t\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\t\t\t\t\tcolor: \"white\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t
    \n {\n flipRequired(queryIndex);\n }}\n >\n Required:{\" \"}\n
    \n {query.required.toString()}\n
    \n
    \n
    \n {\n deletePathQuery(queryIndex);\n }}\n >\n \t\t\t\t\t\t\t\n
    \n \n );\n })}\n \n \n );\n\n \tconst SetExtraBodyField = (props) => {\n \t const { extraBodyFields } = props;\n\n \t if (extraBodyFields === undefined || extraBodyFields === null) {\n \t return null;\n \t }\n\n \t //const parsedlist = extraBodyFields.join(\", \")\n \t //console.log(\"LIST: \", parsedlist)\n\n \t return (\n \t \n \t {extraBodyFields.map((data, index) => {\n \t return ;\n \t })}\n \t \n \t );\n \t};\n\n \tconst bodyInfo = actionBodyRequest.includes(currentActionMethod) ? (\n \t
    \n \t Request Body:{\" \"}\n \t {extraBodyFields.length > 0 ? (\n \t \n \t \n \t \n \t ) : (\n \t \n \t {`Add variables with \\$\\{ variable_name }`}\n \t \n \t )}\n \t {\n \t setActionField(\"body\", e.target.value);\n \t findBodyParams(e.target.value);\n \t }}\n \t key={currentAction}\n \t helperText={\n \t \n \t Shows an example body to the user. ${} creates variables.\n \t \n \t }\n \t InputProps={{\n \t classes: {\n \t notchedOutline: classes.notchedOutline,\n \t },\n \t style: {\n \t color: \"white\",\n \t },\n \t }}\n \t />\n \t
    \n \t
    \n \t) : null;\n\n \tconst exampleResponse = fileDownloadEnabled ? null : (\n \t
    \n \t Example success response\n \t setActionField(\"example_response\", e.target.value)}\n \t helperText={\n \t \n \t Helps with autocompletion and understanding of the endpoint\n \t \n \t }\n \t key={currentAction}\n \t InputProps={{\n \t style: {\n \t color: \"white\",\n \t },\n \t }}\n \t />\n \t
    \n \t);\n\n \tconst addActionToView = (errors) => {\n \t currentAction.errors = errors;\n \t currentAction.queries = urlPathQueries;\n \t setUrlPathQueries([]);\n\n \t const actionIndex = actions.findIndex((data) => data.name === currentAction.name);\n \t \n \t if (actionIndex < 0) {\n \t actions.push(currentAction);\n \t } else {\n \t actions[actionIndex] = currentAction;\n \t }\n\n \t if (actions.length > actionAmount) {\n \t setActionAmount(actions.length);\n \t }\n\n \t setActions(actions);\n \t setFilteredActions(actions);\n \t};\n\n \tconst getActionErrors = () => {\n \t var errormessage = [];\n \t if (currentAction.name === undefined || currentAction.name.length === 0) {\n \t errormessage.push(\"Name can't be empty\");\n \t }\n\n \t // Url verification\n \t //if (currentAction.url.length === 0) {\n \t //\terrormessage.push(\"URL path can't be empty.\")\n \t if (!currentAction.url.startsWith(\"/\") && baseUrl.length > 0 && currentAction.url.length > 0) {\n \t errormessage.push(\"URL must start with /\");\n \t }\n\n \t const check = urlPathQueries.findIndex((data) => data.name.length === 0);\n \t if (check >= 0) {\n \t errormessage.push(\"All queries must have a value\");\n \t }\n\n \t return errormessage;\n \t};\n\n \t\n\n\t\tconst newActionModal = (\n \t\t {\n \t\t setUrlPath(\"\");\n \t\t setCurrentAction({\n \t\t name: \"\",\n \t\t description: \"\",\n \t\t url: \"\",\n \t\t file_field: \"\",\n \t\t headers: \"\",\n \t\t paths: [],\n \t\t queries: [],\n \t\t body: \"\",\n \t\t errors: [],\n \t\t method: actionNonBodyRequest[0],\n\t\t\t\t\t\t\taction_label: \"No Label\",\n\t\t\t\t\t\t\trequired_bodyfields: [],\n \t\t });\n \t\t setCurrentActionMethod(apikeySelection[0]);\n \t\t setUrlPathQueries([]);\n \t\t setActionsModalOpen(false);\n \t\t setFileUploadEnabled(false);\n \t\t }}\n \t\t>\n \t\t \n \t\t \n \t\t
    New action
    \n \t\t
    \n \t\t \n \t\t \n \t\t Learn more about actions\n \t\t \n \t\t
    \n \t\t Name\n \t\t {\n \t\t setActionField(\"name\", e.target.value);\n \t\t }}\n \t\t onBlur={(e) => {\n \t\t // Fix basic issues in frontend. Python functions run a-zA-Z0-9_\n \t\t const regex = /[A-Za-z0-9 _]/g;\n \t\t const found = e.target.value.match(regex);\n \t\t if (found !== null) {\n \t\t setActionField(\"name\", found.join(\"\"));\n \t\t }\n \t\t }}\n \t\t key={currentAction}\n \t\t InputProps={{\n \t\t classes: {\n \t\t notchedOutline: classes.notchedOutline,\n \t\t },\n \t\t style: {\n \t\t color: \"white\",\n \t\t },\n \t\t }}\n \t\t />\n \t\t
    \n \t\t Description\n \t\t setActionField(\"description\", e.target.value)}\n \t\t InputProps={{\n \t\t style: {\n \t\t color: \"white\",\n \t\t },\n \t\t }}\n \t\t />\n \t\t \n \t\t

    Request

    \n \t\t {\n \t\t setActionField(\"method\", e.target.value);\n \t\t setCurrentActionMethod(e.target.value);\n \t\t }}\n \t\t value={currentActionMethod}\n \t\t style={{\n \t\t backgroundColor: inputColor,\n \t\t paddingLeft: \"10px\",\n \t\t color: \"white\",\n \t\t height: \"50px\",\n \t\t }}\n \t\t inputProps={{\n \t\t name: \"Method\",\n \t\t id: \"method-option\",\n \t\t }}\n \t\t >\n \t\t {actionNonBodyRequest.map((data, index) => {\n \t\t return (\n \t\t \n \t\t {data}\n \t\t \n \t\t );\n \t\t })}\n \t\t {actionBodyRequest.map((data, index) => (\n \t\t \n \t\t {data}\n \t\t \n \t\t ))}\n \t\t \n \t\t
    \n \t\t URL path / Curl statement\n \t\t {\n \t\t setActionField(\"url\", e.target.value);\n \t\t setUrlPath(e.target.value);\n \t\t }}\n \t\t helperText={\n \t\t \n \t\t The path to use. Must start with /. Use {\"{variablename}\"} to\n \t\t have path variables\n \t\t \n \t\t }\n \t\t InputProps={{\n \t\t classes: {\n \t\t notchedOutline: classes.notchedOutline,\n \t\t input: classes.input,\n \t\t },\n \t\t style: {\n \t\t color: \"white\",\n \t\t },\n \t\t }}\n \t\t onBlur={(event) => {\n \t\t var parsedurl = event.target.value;\n \t\t //console.log(\"URL: \", parsedurl)\n \t\t if (parsedurl.includes(\" \")) {\n \t\t parsedurl = parsedurl.replaceAll(\" \", \" \");\n \t\t }\n\n \t\t if (parsedurl.includes(\" \")) {\n \t\t parsedurl = parsedurl.replaceAll(\" \", \" \");\n \t\t }\n\n \t\t if (parsedurl.includes(\"[\") && parsedurl.includes(\"]\")) {\n \t\t //console.log(\"REPLACE1\")\n \t\t parsedurl = parsedurl.replaceAll(\"[\", \"{\");\n \t\t parsedurl = parsedurl.replaceAll(\"]\", \"}\");\n \t\t }\n\n \t\t if (parsedurl.includes(\"<\") && parsedurl.includes(\">\")) {\n \t\t //console.log(\"REPLACE2\")\n \t\t parsedurl = parsedurl.replaceAll(\"<\", \"{\");\n \t\t parsedurl = parsedurl.replaceAll(\">\", \"}\");\n \t\t }\n\n \t\t //console.log(\"URL2: \", parsedurl)\n \t\t if (\n \t\t parsedurl.startsWith(\"PUT \") ||\n \t\t parsedurl.startsWith(\"GET \") ||\n \t\t parsedurl.startsWith(\"POST \") ||\n \t\t parsedurl.startsWith(\"DELETE \") ||\n \t\t parsedurl.startsWith(\"PATCH \") ||\n \t\t parsedurl.startsWith(\"CONNECT \")\n \t\t ) {\n \t\t const tmp = parsedurl.split(\" \");\n\n \t\t if (tmp.length > 1) {\n \t\t parsedurl = tmp[1].trim();\n \t\t setActionField(\"url\", parsedurl);\n\n \t\t setCurrentActionMethod(tmp[0].toUpperCase());\n \t\t setActionField(\"method\", tmp[0].toUpperCase());\n \t\t }\n\n \t\t console.log(\"URL3: \", parsedurl);\n\n \t\t //setUpdate(Math.random());\n \t\t } else if (parsedurl.startsWith(\"curl\")) {\n \t\t console.log(\"URL4: \", parsedurl);\n\n \t\t const request = parseCurl(event.target.value);\n \t\t if (\n \t\t request !== event.target.value &&\n \t\t request.method !== undefined &&\n \t\t request.method !== null\n \t\t ) {\n \t\t if (request.method.toUpperCase() !== currentAction.Method) {\n \t\t setCurrentActionMethod(request.method.toUpperCase());\n \t\t setActionField(\"method\", request.method.toUpperCase());\n \t\t }\n\n \t\t if (request.header !== undefined && request.header !== null) {\n \t\t var headers = [];\n \t\t for (let [key, value] of Object.entries(request.header)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (value === undefined) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (key.includes(\":\")) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst keysplit = key.split(\":\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey = keysplit[0].trim()\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue = keysplit[1].trim()\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else if (key.includes(\"=\")) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst keysplit = key.split(\"=\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey = keysplit[0].trim()\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue = keysplit[1].trim()\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\talert.error(\"Removed key: \", key)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n \t\t if (\n \t\t parameterName !== undefined &&\n \t\t key.toLowerCase() === parameterName.toLowerCase()\n \t\t ) {\n \t\t continue;\n \t\t }\n\n \t\t if (key === \"Authorization\") {\n \t\t continue;\n \t\t }\n\n \t\t headers += key + \"=\" + value + \"\\n\";\n \t\t }\n\n\t\t\t\t\t\t\t\t\t\t\t\ttry {\n \t\t \tsetActionField(\"headers\", headers.trim());\n\t\t\t\t\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"Failed to parse header: \", e)\n\t\t\t\t\t\t\t\t\t\t\t\t}\n \t\t }\n\n \t\t if (request.body !== undefined && request.body !== null) {\n \t\t setActionField(\"body\", request.body);\n \t\t }\n\n \t\t // Parse URL\n \t\t if (request.url !== undefined) {\n \t\t parsedurl = request.url;\n \t\t }\n \t\t }\n\n \t\t console.log(\"PARSED: \", parsedurl);\n \t\t if (parsedurl !== undefined) {\n \t\t if (parsedurl.includes(\"<\") && parsedurl.includes(\">\")) {\n \t\t parsedurl = parsedurl.split(\"<\").join(\"{\");\n \t\t parsedurl = parsedurl.split(\">\").join(\"}\");\n \t\t }\n\n \t\t if (\n \t\t parsedurl.startsWith(\"http\") ||\n \t\t parsedurl.startsWith(\"ftp\")\n \t\t ) {\n \t\t if (\n \t\t parsedurl !== undefined &&\n \t\t parsedurl.includes(parameterName)\n \t\t ) {\n \t\t // Remove <> etc.\n \t\t //\n\n \t\t console.log(\"IT HAS THE PARAM NAME!\");\n \t\t const newurl = new URL(encodeURI(parsedurl));\n \t\t newurl.searchParams.delete(parameterName);\n \t\t parsedurl = decodeURI(newurl.href);\n \t\t }\n\n \t\t // Remove the base URL itself\n \t\t if (\n \t\t parsedurl !== undefined &&\n \t\t baseUrl !== undefined &&\n \t\t baseUrl.length > 0 &&\n \t\t parsedurl.includes(baseUrl)\n \t\t ) {\n \t\t parsedurl = parsedurl.replace(baseUrl, \"\");\n \t\t }\n\n \t\t // Check URL query && headers\n \t\t //setActionField(\"url\", parsedurl)\n \t\t }\n \t\t }\n \t\t }\n\n\t\t\t\t\t\t\t\t\tif (baseUrl !== undefined && baseUrl !== null && parsedurl.startsWith(baseUrl)) {\n \t\t \t\t\t\t\tparsedurl = parsedurl.replaceAll(baseUrl, \"\");\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (parsedurl.includes(\"?\")) {\n\t\t\t\t\t\t\t\t\t\tconst parsedurlsplit = parsedurl.split(\"?\")\n\t\t\t\t\t\t\t\t\t\tparsedurl = parsedurlsplit[0]\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t//var newqueries = selectedAction.queries === undefined || selectedAction.queries === null ? [] : selectedAction.queries\n\n\t\t\t\t\t\t\t\t\t\tconst datasplit = parsedurlsplit[1].split(\"&\")\n\t\t\t\t\t\t\t\t\t\tfor (var key in datasplit) {\n\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"Data: \", datasplit[key])\n\t\t\t\t\t\t\t\t\t\t\tvar actualkey = datasplit[key]\n\t\t\t\t\t\t\t\t\t\t\tvar example = \"\"\n\t\t\t\t\t\t\t\t\t\t\tif (datasplit[key].includes(\"=\")) {\n\t\t\t\t\t\t\t\t\t\t\t\tactualkey = datasplit[key].split(\"=\")[0]\n\t\t\t\t\t\t\t\t\t\t\t\texample = datasplit[key].split(\"=\")[1]\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\tconst foundPath = urlPathQueries.find(data => data.name === actualkey)\n\t\t\t\t\t\t\t\t\t\t\tif (foundPath === null || foundPath === undefined) {\n\t\t\t\t\t\t\t\t\t\t\t\turlPathQueries.push({ name: actualkey, example: example, required: true })\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Found that dashes in the URL doesn't work\n\t\t\t\t\t\t\t\t\t//parsedurl = parsedurl.replace(\"-\", \"_\")\n\t\t\t\t\t\t\t\t\t//console.log(\"Actions: \", actions)\n\n\t\t\t\t\t\t\t\t\tif (baseUrl.length === 0 && parsedurl.includes(\"http\")) {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tconst newurl = new URL(encodeURI(parsedurl))\n\t\t\t\t\t\t\t\t\t\t\tnewurl.searchParams.delete(parameterName)\n\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"New url: \", newurl)\n\t\t\t\t\t\t\t\t\t\t\tparsedurl = newurl.pathname\n\t\t\t\t\t\t\t\t\t\t\tsetBaseUrl(newurl.origin)\n\t\t\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"Failed to parse URL: \", e)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\n \t\t if (event.target.value !== parsedurl) {\n \t\t setUrlPath(parsedurl);\n \t\t setActionField(\"url\", parsedurl);\n \t\t }\n \t\t //console.log(\"URL: \", request.url)\n \t\t }}\n \t\t />\n \t\t \n \t\t {loopQueries}\n \t\t {\n \t\t addPathQuery();\n \t\t }}\n \t\t >\n \t\t New query\n \t\t \n \t\t {currentActionMethod === \"POST\" ? (\n \t\t {\n \t\t setFileUploadEnabled(!fileUploadEnabled);\n \t\t if (\n \t\t fileUploadEnabled &&\n \t\t currentAction[\"file_field\"].length > 0\n \t\t ) {\n \t\t setActionField(\"file_field\", \"\");\n \t\t }\n \t\t //setUpdate(Math.random());\n \t\t }}\n \t\t >\n \t\t Enable Fileupload\n \t\t \n \t\t ) : null}\n \t\t {/*currentActionMethod === \"GET\" ? (\n \t\t {\n \t\t setFileDownloadEnabled(!fileDownloadEnabled);\n \t\t if (fileDownloadEnabled) {\n \t\t setActionField(\"example_response\", \"\");\n\t\t\t\t\t\t\t\t\t\t} else {\n \t\t setActionField(\"example_response\", \"shuffle_file_download\");\n\t\t\t\t\t\t\t\t\t\t}\n \t\t //setUpdate(Math.random());\n \t\t }}\n \t\t >\n\t\t\t\t\t\t\t\t\tDownload as file\n \t\t \n \t\t ) : null*/}\n \t\t {fileUploadEnabled ? (\n \t\t setActionField(\"file_field\", e.target.value)}\n \t\t helperText={\n \t\t \n \t\t The File field to interact with\n \t\t \n \t\t }\n \t\t InputProps={{\n \t\t classes: {\n \t\t notchedOutline: classes.notchedOutline,\n \t\t },\n \t\t style: {\n \t\t color: \"white\",\n \t\t },\n \t\t }}\n \t\t />\n \t\t ) : null}\n \t\t
    \n\t\t\t\t\t\t\t{fileUploadEnabled ? null :\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tHeaders\n\t\t\t\t\t\t\t\t\t setActionField(\"headers\", e.target.value)}\n\t\t\t\t\t\t\t\t\t\thelperText={\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tHeaders that are part of the request. Default: EMPTY\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tInputProps={{\n\t\t\t\t\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\t\t\t\t\tcolor: \"white\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t}\n \t\t {bodyInfo}\n \t\t \n \t\t {exampleResponse}\n \t\t \n \t\t \n \t\t {\n \t\t setActionsModalOpen(false);\n \t\t }}\n \t\t >\n \t\t Cancel\n \t\t \n \t\t 0 ? \"contained\" : \"outlined\"}\n \t\t style={{ borderRadius: \"0px\" }}\n \t\t onClick={() => {\n \t\t //console.log(urlPathQueries)\n \t\t //console.log(urlPath)\n \t\t console.log(currentAction);\n \t\t const errors = getActionErrors();\n \t\t addActionToView(errors);\n \t\t setActionsModalOpen(false);\n \t\t setUrlPathQueries([]);\n \t\t setUrlPath(\"\");\n \t\t setFileUploadEnabled(false);\n \t\t }}\n \t\t >\n \t\t Submit\n \t\t \n \t\t \n \t\t \n \t\t\n \t\t);\n\n\n\t\tvar error =\n\t\t\tdata.errors.length > 0 ? (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t) : (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t);\n\n\t\tvar bgColor = \"#61afee\";\n\t\tif (data.method === \"POST\") {\n\t\t\tbgColor = \"#49cc90\";\n\t\t} else if (data.method === \"PUT\") {\n\t\t\tbgColor = \"#fca130\";\n\t\t} else if (data.method === \"PATCH\") {\n\t\t\tbgColor = \"#50e3c2\";\n\t\t} else if (data.method === \"DELETE\") {\n\t\t\tbgColor = \"#f93e3e\";\n\t\t} else if (data.method === \"HEAD\") {\n\t\t\tbgColor = \"#9012fe\";\n\t\t}\n\n\t\tconst url = data.url;\n\t\tconst hasFile = (data[\"file_field\"] !== undefined && data[\"file_field\"] !== null && data[\"file_field\"].length > 0) || data[\"example_response\"] === \"shuffle_file_download\"\n\t\t\t\n\t\t\t\t\n\t\treturn (\n\t\t\t\n {newActionModal}\n\n\t\t\t\t{error}\n\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tconsole.log(\"Data: \", data)\n\t\t\t\t\t\t\tif (hasFile) {\n\t\t\t\t\t\t\t\t//setActionField(\"headers\", \"\")\n\t\t\t\t\t\t\t\t//console.log(\"It has a file: \", data[\"file_field\"])\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tsetFileUploadEnabled(true);\n\t\t\t\t\t\t\t\tdata.headers = \"\"\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconsole.log(\"No file\")\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tsetCurrentAction(data);\n\t\t\t\t\t\t\tsetCurrentActionMethod(data.method);\n\t\t\t\t\t\t\tsetUrlPathQueries(data.queries);\n\t\t\t\t\t\t\tsetUrlPath(data.url);\n\t\t\t\t\t\t\tsetActionsModalOpen(true);\n\n\t\t\t\t\t\t\tif (data[\"body\"] !== undefined && data[\"body\"] !== null && data[\"body\"].length > 0) {\n\t\t\t\t\t\t\t\tfindBodyParams(data[\"body\"]);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconsole.log(\"No body param\")\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{hasFile ? (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t) : null}{\" \"}\n\t\t\t\t\t\t\t\t{url} - {data.name}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\n\t\t\t\t{/*\n\t\t\t\n\t\t\t\t
    {testAction(index)}}>\n\t\t\t\t\tTest\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t*/}\n\n\t\t\t\t{/* From 2023: Example of handling action labels */}\n\t\t\t\t{actionLabels.length > 0 && newWorkflowCategories !== undefined && newWorkflowCategories !== null && newWorkflowCategories.length > 0 && categories.length > 0 ? \n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tconsole.log(\"Should change: \", e.target.value, \" Index: \", index)\n\n\t\t\t\t\t\t\t\tconst foundIndex = actions.findIndex((action) => action.name === data.name)\n\t\t\t\t\t\t\t\tconsole.log(\"Found index: \", foundIndex)\n\t\t\t\t\t\t\t\tif (foundIndex !== undefined && foundIndex !== null && foundIndex >= 0) {\n\t\t\t\t\t\t\t\t\tactions[foundIndex].action_label = e.target.value\n\t\t\t\t\t\t\t\t\tsetActions(actions)\n\t\t\t\t\t\t\t\t\tsetUpdate(Math.random())\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tvalue={data.action_label}\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tborder: data.action_label === undefined || data.action_label === \"No Label\" ? \"\" : `2px solid ${bgColor}`,\n\t\t\t\t\t\t\t\tborderRadius: theme.shape.borderRadius,\n\t\t\t\t\t\t\t\tbackgroundColor: inputColor,\n\t\t\t\t\t\t\t\tpaddingLeft: 10,\n\t\t\t\t\t\t\t\tcolor: \"white\",\n\t\t\t\t\t\t\t\theight: 30,\n\t\t\t\t\t\t\t\tmaxWidth: 35, \n\t\t\t\t\t\t\t\tmarginLeft: 10, \n\t\t\t\t\t\t\t\tmarginRight: 10, \n\t\t\t\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tinputProps={{\n\t\t\t\t\t\t\t\tname: \"Method\",\n\t\t\t\t\t\t\t\tid: \"method-option\",\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{actionLabels.map((label, labelindex) => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\n\t\t\t\t: null}\n\n\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tduplicateAction(index);\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tdeleteAction(index);\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\n\n\n\t\t\t\t{ index === filteredActions.length - 1 || index === actionAmount - 1 ?\n {\n\t\t\t\t\t\t\te.preventDefault();\n\n setCurrentActionMethod(actionNonBodyRequest[0]);\n setCurrentAction({\n name: \"\",\n description: \"\",\n url: \"\",\n file_field: \"\",\n headers: \"\",\n queries: [],\n paths: [],\n body: \"\",\n errors: [],\n method: actionNonBodyRequest[0],\n\t\t\t\t\t\t\t\taction_label: \"No Label\",\n\t\t\t\t\t\t\t\trequired_bodyfields: [],\n });\n setActionsModalOpen(true);\n }}\n >\n New action\n \n\t\t\t\t: null}\n\t\t\t\n\t\t)\n\t}\n\n const LoopActions = (props) => {\n\t\tconst { filteredActions } = props;\n\n\t\tconsole.log(\"Actions: \", filteredActions)\n if (filteredActions === null || filteredActions === undefined || filteredActions.length === 0) {\n\t\t\treturn null\n\t\t}\n\t\t\n\t\treturn (\n
    \n {filteredActions.slice(0, actionAmount).map((data, index) => {\n\t\t\t\t\t//console.log(\"Found action: \", data)\n return (\n\t\t\t\t\t\t\n\t\t\t\t\t)\n\t\t\t})}\n\t\t
    \n\t\t)\n\t}\n\n\n\n const tagView = (\n
    \n {/*\n\t\t\t {\n\t\t\t\t\tnewWorkflowCategories.push(chip)\n\t\t\t\t\tsetNewWorkflowCategories(newWorkflowCategories)\n\t\t\t\t\tsetUpdate(\"added \"+chip)\n\t\t\t\t}}\n\t\t\t\tonDelete={(chip, index) => {\n\t\t\t\t\tnewWorkflowCategories.splice(index, 1)\n\t\t\t\t\tsetNewWorkflowCategories(newWorkflowCategories)\n\t\t\t\t\tsetUpdate(\"delete \"+chip)\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t*/}\n

    Choose a Category

    \n {\n setNewWorkflowCategories([e.target.value]);\n setUpdate(\"added \" + e.target.value);\n }}\n value={newWorkflowCategories.length === 0 ? \"Select a category\" : newWorkflowCategories[0]}\n \n style={{ backgroundColor: inputColor, color: \"white\", height: \"50px\" }}\n >\n {categories.map((data, index) => {\n\t\t\t\t\tif (data === undefined || data === null || data === \"\" || data === undefined || data === null || data === \"\") {\n\t\t\t\t\t\treturn null\n\t\t\t\t\t}\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{data.name}\n\t\t\t\t\t\t\n \t)\n\t\t\t\t})}\n \n

    Tags

    \n {\n newWorkflowTags.push(chip);\n setNewWorkflowTags(newWorkflowTags);\n setUpdate(\"added\" + chip);\n }}\n onDelete={(chip, index) => {\n newWorkflowTags.splice(index, 1);\n setNewWorkflowTags(newWorkflowTags);\n setUpdate(\"delete \" + chip);\n }}\n />\n
    \n );\n\n const ParsedActionHandler = () => {\n const passedOrg = { id: \"\", name: \"\" };\n const owner = \"\";\n const passedTags = [\"single test\"];\n\n const [, setUpdate] = useState();\n const [authenticationModalOpen, setAuthenticationModalOpen] =\n useState(false);\n const [selectedApp, setSelectedApp] = useState({\n versions: [\n {\n id: selectedAction.app_id,\n version: selectedAction.app_version,\n },\n ],\n loop_versions: [selectedAction.app_version],\n id: selectedAction.app_id,\n name: selectedAction.app_name,\n version: selectedAction.app_version,\n });\n\n const [requiresAuthentication, setRequiresAuthentication] = useState(\n app.authentication !== null &&\n app.authentication !== undefined &&\n app.authentication.required &&\n app.authentication.parameters !== undefined &&\n app.authentication.parameters !== null\n ? true\n : false\n );\n const [workflow, setWorkflow] = useState({\n name: \"\",\n description: \"\",\n actions: [selectedAction],\n start: selectedAction.id,\n tags: passedTags,\n execution_org: passedOrg,\n org_id: passedOrg.id,\n id: uuidv4(),\n isValid: true,\n owner: owner,\n created: Date.now(),\n });\n\n const EndpointData = () => {\n const [tmpVar, setTmpVar] = React.useState(\"\");\n\n return (\n
    \n The API endpoint to use (URL) - predefined in the app\n {\n setTmpVar(event.target.value);\n }}\n onBlur={() => {\n selectedApp.link = tmpVar;\n console.log(\"LINK: \", selectedApp.link);\n setSelectedApp(selectedApp);\n }}\n />\n
    \n );\n };\n\n const setAppActionAuthentication = (newauth) => {\n if (app.authentication.required) {\n var findAuthId = \"\";\n if (\n selectedAction.authentication_id !== null &&\n selectedAction.authentication_id !== undefined &&\n selectedAction.authentication_id.length > 0\n ) {\n findAuthId = selectedAction.authentication_id;\n }\n\n var baseAuthOptions = [];\n for (var key in newauth) {\n var item = newauth[key];\n\n const newfields = {};\n for (var filterkey in item.fields) {\n newfields[item.fields[filterkey].key] =\n item.fields[filterkey].value;\n }\n\n item.fields = newfields;\n if (item.app.name === app.name) {\n baseAuthOptions.push(item);\n\n if (item.id === findAuthId) {\n selectedAction.selectedAuthentication = item;\n }\n }\n }\n\n selectedAction.authentication = baseAuthOptions;\n //console.log(\"Authentication: \", authenticationOptions)\n if (\n selectedAction.selectedAuthentication === null ||\n selectedAction.selectedAuthentication === undefined ||\n selectedAction.selectedAuthentication.length === \"\"\n ) {\n selectedAction.selectedAuthentication = {};\n }\n } else {\n selectedAction.authentication = [];\n selectedAction.authentication_id = \"\";\n selectedAction.selectedAuthentication = {};\n }\n\n setSelectedAction(selectedAction);\n console.log(selectedAction);\n };\n\n const getAppAuthentication = () => {\n fetch(globalUrl + \"/api/v1/apps/authentication\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for apps :O!\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n if (\n responseJson.success &&\n responseJson.data !== undefined &&\n responseJson.data !== null &&\n responseJson.data.length !== 0\n ) {\n var newauth = [];\n for (var key in responseJson.data) {\n if (responseJson.data[key].defined === false) {\n continue;\n }\n\n newauth.push(responseJson.data[key]);\n }\n\n setAppAuthentication(newauth);\n setAppActionAuthentication(newauth);\n } else {\n if (app.authentication.required) {\n const tmpParams = selectedAction.parameters;\n selectedAction.parameters = [];\n\n for (var paramkey in app.authentication.parameters) {\n var item = app.authentication.parameters[paramkey];\n item.configuration = true;\n\n const found = selectedAction.parameters.find(\n (param) => param.name === item.name\n );\n if (found === null || found === undefined) {\n selectedAction.parameters.push(item);\n }\n }\n\n for (var paramkey in tmpParams) {\n var item = tmpParams[paramkey];\n //item.configuration = true\n\n const found = selectedAction.parameters.find(\n (param) => param.name === item.name\n );\n if (found === null || found === undefined) {\n selectedAction.parameters.push(item);\n }\n }\n\n setSelectedAction(selectedAction);\n }\n\n //alert.error(\"Failed getting authentications\")\n }\n })\n .catch((error) => {\n alert.error(\"Auth loading error: \" + error.toString());\n });\n };\n\n if (!authLoaded && appAuthentication.length === 0 && selectedAction.id !== undefined) {\n setAuthLoaded(true);\n getAppAuthentication();\n } \n\n\t\t/*\n\t\telse if (selectedAction.id === undefined && currentAction.name !== undefined && currentAction.name !== null && currentAction.name.length > 0) {\n var methodName = `${currentAction.method}_${currentAction.name}`;\n if (currentAction.method.toLowerCase() === \"custom\" ||\n currentAction.name.toLowerCase().startsWith(currentAction.method.toLowerCase())) {\n methodName = currentAction.name;\n }\n\n methodName = methodName.toLowerCase().replaceAll(\" \", \"_\");\n if (app.actions !== null && app.actions !== undefined) {\n var newselectedaction = app.actions.find(\n (item) => item.name.toLowerCase().replaceAll(\" \", \"_\") === methodName\n );\n\n if (newselectedaction !== undefined && newselectedaction !== null) {\n newselectedaction.app_id = app.id;\n newselectedaction.app_name = app.name;\n newselectedaction.app_version = app.app_version;\n newselectedaction.authentication = [];\n newselectedaction.authentication_id = \"\";\n newselectedaction.selectedAuthentication = {};\n setSelectedAction(newselectedaction);\n }\n }\n }\n\t\t*/\n\n const setNewAppAuth = (appAuthData) => {\n //console.log(\"DAta: \", appAuthData)\n fetch(globalUrl + \"/api/v1/apps/authentication\", {\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify(appAuthData),\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for setting app auth :O!\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n if (!responseJson.success) {\n alert.error(\"Failed to set app auth: \" + responseJson.reason);\n } else {\n getAppAuthentication(true);\n setAuthenticationModalOpen(false);\n\n // Needs a refresh with the new authentication..\n //alert.success(\"Successfully saved new app auth\")\n }\n })\n .catch((error) => {\n alert.error(error.toString());\n });\n };\n\n const AuthenticationData = (props) => {\n const selectedApp = props.app;\n console.log(\"APP: \", selectedApp);\n\n const [authenticationOption, setAuthenticationOptions] = React.useState({\n app: JSON.parse(JSON.stringify(selectedApp)),\n fields: {},\n label: \"\",\n usage: [\n {\n workflow_id: workflow.id,\n },\n ],\n id: uuidv4(),\n active: true,\n });\n\n if (selectedApp.authentication === undefined) {\n return null;\n }\n\n if (\n selectedApp.authentication.parameters === null ||\n selectedApp.authentication.parameters === undefined ||\n selectedApp.authentication.parameters.length === 0\n ) {\n return null;\n }\n\n authenticationOption.app.actions = [];\n\n for (var key in selectedApp.authentication.parameters) {\n if (\n authenticationOption.fields[\n selectedApp.authentication.parameters[key].name\n ] === undefined\n ) {\n authenticationOption.fields[\n selectedApp.authentication.parameters[key].name\n ] = \"\";\n }\n }\n\n const handleSubmitCheck = () => {\n console.log(\"NEW AUTH: \", authenticationOption);\n if (authenticationOption.label.length === 0) {\n authenticationOption.label = `Auth for ${selectedApp.name}`;\n //alert.info(\"Label can't be empty\")\n //return\n }\n\n for (var key in selectedApp.authentication.parameters) {\n if (\n authenticationOption.fields[\n selectedApp.authentication.parameters[key].name\n ].length === 0\n ) {\n alert.info(\n \"Field \" +\n selectedApp.authentication.parameters[key].name +\n \" can't be empty\"\n );\n return null;\n }\n }\n\n console.log(\"Action: \", selectedAction);\n selectedAction.authentication_id = authenticationOption.id;\n selectedAction.selectedAuthentication = authenticationOption;\n if (\n selectedAction.authentication === undefined ||\n selectedAction.authentication === null\n ) {\n selectedAction.authentication = [authenticationOption];\n } else {\n selectedAction.authentication.push(authenticationOption);\n }\n\n setSelectedAction(selectedAction);\n\n var newAuthOption = JSON.parse(JSON.stringify(authenticationOption));\n var newFields = [];\n for (const key in newAuthOption.fields) {\n const value = newAuthOption.fields[key];\n newFields.push({\n key: key,\n value: value,\n });\n }\n\n console.log(\"FIELDS: \", newFields);\n newAuthOption.fields = newFields;\n setNewAppAuth(newAuthOption);\n //appAuthentication.push(newAuthOption)\n //setAppAuthentication(appAuthentication)\n //\n\n setUpdate(authenticationOption.id);\n\n /*\n\t\t\t\t\t{selectedAction.authentication.map(data => (\n\t\t\t\t\t\n\t\t\t\t*/\n };\n\n if (\n authenticationOption.label === null ||\n authenticationOption.label === undefined\n ) {\n authenticationOption.label = selectedApp.name + \" authentication\";\n }\n\n console.log(\"PRE RETURN\");\n return (\n
    \n \n \n What is this?\n \n
    \n These are required fields for authenticating with {selectedApp.name}\n
    \n Name - what is this used for?\n {\n authenticationOption.label = event.target.value;\n }}\n />\n {selectedApp.link.length > 0 ? (\n
    \n \n
    \n ) : null}\n \n
    \n {selectedApp.authentication.parameters.map((data, index) => {\n return (\n
    \n \n {data.name}\n {\n authenticationOption.fields[data.name] =\n event.target.value;\n }}\n />\n
    \n );\n })}\n \n \n {\n setAuthenticationModalOpen(false);\n }}\n color=\"primary\"\n >\n Cancel\n \n {\n handleSubmitCheck();\n }}\n color=\"primary\"\n >\n Submit\n \n \n
    \n );\n };\n };\n\n const actionView = (\n
    \n
    \n {actionAmount > 0 && actionAmount < filteredActions.length ? (\n {\n setActionAmount(filteredActions.length);\n /*\n\t\t\t\t\t\tif (actionAmount+increaseAmount > filteredActions.length) {\n\t\t\t\t\t\t\tsetActionAmount(filteredActions.length)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsetActionAmount(actionAmount+increaseAmount)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t*/\n }}\n >\n See all actions\n \n ) : null}\n
    \n \n Actions{\" \"}\n {actionAmount > 0 ? (\n \n ({actionAmount} / {filteredActions.length})\n \n ) : null}\n \n \n Actions are the tasks performed by an app - usually single URL paths for\n REST API's.\n \n\n {projectCategories !== undefined &&\n projectCategories !== null &&\n projectCategories.length > 1 ? (\n
    \n {projectCategories.map((tag, index) => {\n const newname = tag.charAt(0).toUpperCase() + tag.slice(1);\n\n\t\t\t\t\t\t//var regex = /_shuffle_replace_\\d/i;\n\t\t\t\t\t\t////console.log(\"NEW: \", \n\t\t\t\t\t\t//newname = newname.replaceAll(regex, \"\")\n\t\t\t\t\t\t//console.log(\"Replaced: \", newname) \n\n return (\n {\n if (selectedCategory === tag) {\n setFilteredActions(actions);\n setSelectedCategory(\"\");\n setActionAmount(50);\n return;\n }\n\n const foundActions = actions.filter(\n (data) => data.category === tag\n );\n setFilteredActions(foundActions);\n setSelectedCategory(tag);\n if (actionAmount > foundActions.length) {\n setActionAmount(foundActions.length);\n }\n\n //{filteredActions.slice(0,actionAmount).map((data, index) => {\n\n //console.log(\"Found: \", foundActions)\n //{filteredActions.slice(0,actionAmount).map((data, index) => {\n //{actions.slice(0,actionAmount).map((data, index) => {\n }}\n variant={selectedCategory === tag ? \"contained \" : \"outlined\"}\n color={selectedCategory === tag ? \"primary\" : \"secondary\"}\n />\n );\n })}\n
    \n ) : null}\n
    \n \n\t\t\t\t{ actions.length === 0 || filteredActions.length === 0 ? \n {\n actions.push({\n name: \"Change Me\",\n description: \"\",\n url: \"\",\n file_field: \"\",\n headers: \"\",\n queries: [],\n paths: [],\n body: \"\",\n errors: [],\n method: actionNonBodyRequest[0],\n\t\t\t\t\t\t\t\taction_label: \"No Label\",\n\t\t\t\t\t\t\t\trequired_bodyfields: [],\n });\n\n\t\t\t\t\t\t\tconsole.log(\"Added: \", actions)\n setActions(actions)\n\t\t\t\t\t\t\tsetFilteredActions(actions)\n setActionAmount(50);\n \t\t\t\t\tsetUpdate(Math.random());\n }}\n >\n New action\n \n\t\t\t\t\t: null}\n\t\t\t\t{/*\n
    \n {\n \t \t\t\t//actions.push({\n // name: \"Change name\",\n // description: \"\",\n // url: \"\",\n // file_field: \"\",\n // headers: \"\",\n // queries: [],\n // paths: [],\n // body: \"\",\n // errors: [],\n // method: actionNonBodyRequest[0],\n\t\t\t\t\t\t\t//\taction_label: \"No Label\",\n\t\t\t\t\t\t\t//\trequired_bodyfields: [],\n //})\n\t\t\t\t\t\t\t//setActions(actions)\n\t\t\t\t\t\t\t//setFilteredActions(actions)\n \t\t\t\t\t//setUpdate(Math.random());\n\n \t\t\t\t\t//const foundPaper = document.getElementById(\"Change name\");\n\t\t\t\t\t\t\t//if (foundPaper !== null) {\n\t\t\t\t\t\t\t//\tconsole.log(\"Found: \", foundPaper)\n\t\t\t\t\t\t\t//} else {\n\t\t\t\t\t\t\t//\tconsole.log(\"Not found\")\n\t\t\t\t\t\t\t//}\n\n\t\t\t\t\t\t\t// Find the item and click if possible\n\n //setCurrentActionMethod(actionNonBodyRequest[0]);\n //setCurrentAction({\n // name: \"\",\n // description: \"\",\n // url: \"\",\n // file_field: \"\",\n // headers: \"\",\n // queries: [],\n // paths: [],\n // body: \"\",\n // errors: [],\n // method: actionNonBodyRequest[0],\n //});\n //setActionsModalOpen(true);\n }}\n >\n New action\n \n\t\t\t\t\t\t{actionAmount} {actions.length}\n
    \n\t\t\t\t*/}\n
    \n
    \n );\n\n const testView = (\n
    \n

    Test

    \n Test an action to see whether it performs in an expected way.\n \n  TBD: Click here to learn more about testing\n \n .
    Test :)
    \n
    \n );\n\n var image = \"\";\n const editHeaderImage = (event) => {\n const file = event.target.value;\n const actualFile = event.target.files[0];\n const fileObject = URL.createObjectURL(actualFile);\n setFile(fileObject);\n };\n\n if (file !== \"\") {\n const img = document.getElementById(\"logo\");\n var canvas = document.createElement(\"canvas\");\n canvas.width = 174;\n canvas.height = 174;\n var ctx = canvas.getContext(\"2d\");\n\n if (img)\n img.onload = function () {\n // img, x, y, width, height\n //ctx.drawImage(img, 174, 174)\n //console.log(\"IMG natural: \", img.naturalWidth, img.naturalHeight)\n //ctx.drawImage(img, 0, 0, 174, 174)\n ctx.drawImage(\n img,\n 0,\n 0,\n img.width,\n img.height,\n 0,\n 0,\n canvas.width,\n canvas.height\n );\n\n try {\n const canvasUrl = canvas.toDataURL();\n if (canvasUrl !== fileBase64) {\n //console.log(\"SET URL TO: \", canvasUrl)\n setFileBase64(canvasUrl);\n }\n } catch (e) {\n alert.error(\"Failed to parse canvasurl!\");\n }\n };\n\n //console.log(img.width)\n //console.log(img.width)\n //canvas.width = img.width\n //canvas.height = img.height\n }\n\n const [imageUploadError, setImageUploadError] = useState(\"\");\n const [openImageModal, setOpenImageModal] = useState(\"\");\n const [scale, setScale] = useState(1);\n const [rotate, setRotatation] = useState(0);\n const [disableImageUpload, setDisableImageUpload] = useState(true);\n\n let imageData = fileBase64;\n let croppedData = file.length > 0 ? file : fileBase64;\n\n const imageInfo = (\n \n );\n\n const alternateImg = (\n {\n upload.click();\n }}\n />\n );\n\n const zoomIn = () => {\n console.log(\"ZOOOMING IN\");\n setScale(scale + 0.1);\n };\n\n const zoomOut = () => {\n setScale(scale - 0.1);\n };\n const rotatation = () => {\n setRotatation(rotate + 10);\n };\n\n const onPositionChange = () => {\n setDisableImageUpload(false);\n };\n\n const onCancelSaveAppIcon = () => {\n setFile(\"\");\n setOpenImageModal(false);\n setImageUploadError(\"\");\n };\n\n let editor;\n const setEditorRef = (imgEditor) => {\n editor = imgEditor;\n };\n\n const onSaveAppIcon = () => {\n if (editor) {\n try {\n setFile(\"\");\n const canvas = editor.getImageScaledToCanvas();\n setFileBase64(canvas.toDataURL());\n setOpenImageModal(false);\n setDisableImageUpload(true);\n } catch (e) {\n alert.error(\"Failed to set image. Replace it if this persists.\");\n }\n }\n };\n\n const errorText =\n imageUploadError.length > 0 ? (\n
    Error: {imageUploadError}
    \n ) : null;\n\n const imageUploadModalView = openImageModal ? (\n \n \n \n
    Upload App Icon
    \n
    \n {errorText}\n \n setRotatation(0)}\n />\n \n \n \n {\n upload.click();\n }}\n color=\"primary\"\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Cancel\n \n {\n onSaveAppIcon();\n }}\n color=\"primary\"\n >\n Continue\n \n \n {/**/}\n
    \n \n ) : null;\n\n // Random names for type & autoComplete. Didn't research :^)\n const landingpageDataBrowser = (\n
    \n \n \n

    \n \n Apps\n

    \n \n

    \n {name}{\" \"}\n {actions === null ||\n actions === undefined ||\n actions.length === 0 ? null : (\n ({actions.length})\n )}\n

    \n \n {imageUploadModalView}\n (upload = ref)}\n onChange={editHeaderImage}\n />\n \n

    \n General information\n

    \n \n Click here to learn more about app creation\n \n \n \n {\n /*\n\t\t\t\t\t\t\t\t\tif (fileBase64.length === 0) {\n\t\t\t\t\t\t\t\t\t\tupload.click()\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t*/\n\n setOpenImageModal(true);\n }}\n >\n {imageData ? imageInfo : alternateImg}\n (upload = ref)}\n onChange={editHeaderImage}\n />\n
    \n \n
    \n
    \n Name\n {\n const invalid = [\"#\", \":\", \".\"];\n for (var key in invalid) {\n if (e.target.value.includes(invalid[key])) {\n alert.error(\"Can't use \" + invalid[key] + \" in name\");\n\t\t\t\t\t\t\t\t\t\tsetName(e.target.value.replaceAll(\".\", \"\").replaceAll(\"#\", \"\").replaceAll(\":\", \"\").replaceAll(\",\", \"\"))\n\n return;\n }\n }\n\n if (e.target.value.length > 29) {\n alert.error(\"Choose a shorter name (max 29).\");\n\t\t\t\t\t\t\t\t\tsetName(e.target.value.slice(0,28))\n return;\n }\n\n //e.target.value.trim()\n\n setName(e.target.value);\n }}\n onBlur={(e) => {\n setName(e.target.value.trim());\n }}\n color=\"primary\"\n InputProps={{\n style: {\n color: \"white\",\n height: \"50px\",\n fontSize: \"1em\",\n },\n classes: {\n notchedOutline: classes.notchedOutline,\n },\n }}\n />\n
    \n Description\n setDescription(e.target.value)}\n InputProps={{\n classes: {\n notchedOutline: classes.notchedOutline,\n },\n style: {\n color: \"white\",\n },\n }}\n />\n
    \n
    \n \n \n API information\n \n \n Base URL - used as suggestion to the user\n \n \n Must start with http(s):// and CANT end with /.{\" \"}\n \n }\n placeholder=\"https://api.example.com\"\n onChange={(e) => setBaseUrl(e.target.value)}\n onBlur={(event) => {\n var tmpstring = event.target.value.trim();\n if (tmpstring.endsWith(\"/\")) {\n tmpstring = tmpstring.slice(0, -1);\n }\n\n if (\n tmpstring.length > 4 &&\n !tmpstring.startsWith(\"http\") &&\n !tmpstring.startsWith(\"ftp\")\n ) {\n alert.error(\"URL must start with http(s)://\");\n }\n\n\t\t\t\t\t\tif (tmpstring.includes(\"?\")) {\n\t\t\t\t\t\t\tvar newtmp = tmpstring.split(\"?\")\n\t\t\t\t\t\t\tif (tmpstring.length > 1) {\n\t\t\t\t\t\t\t\ttmpstring = newtmp[0]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n setBaseUrl(tmpstring);\n }}\n />\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\tAuthentication\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tLearn more about app authentication\n\t\t\t\t\t\t\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tsetAuthenticationOption(e.target.value);\n\t\t\t\t\t\t\t\tif (e.target.value === \"No authentication\") {\n\t\t\t\t\t\t\t\t\tsetAuthenticationRequired(false);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tsetAuthenticationRequired(true);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (e.target.value === \"Oauth2\") {\n\t\t\t\t\t\t\t\t\tif (parameterLocation === \"Header\") {\n\t\t\t\t\t\t\t\t\t\tsetParameterLocation(\"\")\n\t\t\t\t\t\t\t\t\t}\n\n \t\tsetExtraAuth([])\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tvalue={authenticationOption}\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tbackgroundColor: inputColor,\n\t\t\t\t\t\t\t\tcolor: \"white\",\n\t\t\t\t\t\t\t\theight: \"50px\",\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{authenticationOptions.map((data, index) => (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{data}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t{basicAuth}\n\t\t\t\t\t{bearerAuth}\n\t\t\t\t\t{apiKey}\n\t\t\t\t\t{oauth2Auth}\n\t\t\t\t\t{jwtAuth}\n\t\t\t\t\t{extraKeys}\n\t\t\t\t
    \n\n {/*authenticationOption === \"No authentication\" ? null :\n\t\t\t\t\t\tAuthentication required (default true)
    \n\t\t\t\t\t\t\tcontrol={ {\n\t\t\t\t\t\t\t\tsetAuthenticationRequired(!authenticationRequired)\n\t\t\t\t\t\t\t}} />}\n\t\t\t\t\t/>*/}\n \n
    {actionView}
    \n\n \n
    {tagView}
    \n {/*\n\t\t\t\t\t{/*\n\t\t\t\t\t\n\t\t\t\t\t\t{testView}\n\t\t\t\t\t*/}\n\n {\n submitApp();\n }}\n >\n {appBuilding ? : \"Save\"}\n \n \n {errorCode.length > 0 ? `Error: ${errorCode}` : null}\n \n \n
    \n );\n\n const loadedCheck =\n isLoaded && isAppLoaded ? (\n
    \n
    {landingpageDataBrowser}
    \n
    \n ) : (\n
    \n );\n\n return
    {loadedCheck}
    ;\n};\nexport default AppCreator;\n","import React, { useState, useEffect } from 'react';\n\nimport { useTheme } from '@material-ui/core/styles';\nimport {Link} from 'react-router-dom';\n\nimport { Search as SearchIcon, CloudQueue as CloudQueueIcon, Code as CodeIcon } from '@material-ui/icons';\n\n//import algoliasearch from 'algoliasearch/lite';\nimport algoliasearch from 'algoliasearch';\nimport { InstantSearch, connectSearchBox, connectHits } from 'react-instantsearch-dom';\nimport { Grid, Paper, TextField, ButtonBase, InputAdornment, Typography, Button, Tooltip} from '@material-ui/core';\n\nconst searchClient = algoliasearch(\"JNSS5CFDZZ\", \"db08e40265e2941b9a7d8f644b6e5240\")\nconst WorkflowSearch = props => {\n\tconst { maxRows, showName, showSuggestion, isMobile, globalUrl, parsedXs, newSelectedApp, setNewSelectedApp, defaultSearch, showSearch, ConfiguredHits, selectAble, } = props\n\tconst rowHandler = maxRows === undefined || maxRows === null ? 50 : maxRows\n\n\tconst xs = parsedXs === undefined || parsedXs === null ? 12 : parsedXs\n\tconst theme = useTheme();\n\t//const [apps, setApps] = React.useState([]);\n\t//const [filteredApps, setFilteredApps] = React.useState([]);\n\tconst [formMail, setFormMail] = React.useState(\"\");\n\tconst [message, setMessage] = React.useState(\"\");\n\tconst [formMessage, setFormMessage] = React.useState(\"\");\n\tconst [selectedApp, setSelectedApp] = React.useState({});\n\n\tconst buttonStyle = {borderRadius: 30, height: 50, width: 220, margin: isMobile ? \"15px auto 15px auto\" : 20, fontSize: 18,}\n\n\tconst innerColor = \"rgba(255,255,255,0.65)\"\n\tconst borderRadius = 3\n\twindow.title = \"Shuffle | Apps | Find and integration any app\"\n\n\tconst submitContact = (email, message) => {\n\t\tconst data = {\n\t\t\t\"firstname\": \"\",\n\t\t\t\"lastname\": \"\",\n\t\t\t\"title\": \"\",\n\t\t\t\"companyname\": \"\",\n\t\t\t\"email\": email,\n\t\t\t\"phone\": \"\",\n\t\t\t\"message\": message,\n\t\t}\n\t\n\t\tconst errorMessage = \"Something went wrong. Please contact frikky@shuffler.io directly.\"\n\n\t\tfetch(globalUrl+\"/api/v1/contact\", {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t},\n\t\t\tbody: JSON.stringify(data),\n\t\t})\n\t\t.then(response => response.json())\n\t\t.then(response => {\n\t\t\tif (response.success === true) {\n\t\t\t\tsetFormMessage(response.reason)\n\t\t\t\t//alert.info(\"Thanks for submitting!\")\n\t\t\t} else {\n\t\t\t\tsetFormMessage(errorMessage)\n\t\t\t}\n\n\t\t\tsetFormMail(\"\")\n\t\t\tsetMessage(\"\")\n })\n\t\t.catch(error => {\n\t\t\tsetFormMessage(errorMessage)\n \tconsole.log(error)\n\t\t});\n\t}\n\n\t// value={currentRefinement}\n\tconst SearchBox = ({currentRefinement, refine, isSearchStalled} ) => {\n\t\tuseEffect(() => {\n\t\t\t//console.log(\"FIRST LOAD ONLY? RUN REFINEMENT: !\", currentRefinement)\n\t\t\tif (defaultSearch !== undefined && defaultSearch !== null) {\n\t\t\t\trefine(defaultSearch)\n\t\t\t}\n\t\t}, [])\n\n\t\treturn (\n\t\t
    \n\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t),\n\t\t\t\t\t}}\n\t\t\t\t\tautoComplete='on'\n\t\t\t\t\ttype=\"search\"\n\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\tdefaultValue={defaultSearch}\n\t\t\t\t\tplaceholder={`Find ${defaultSearch} Workflows...`}\n\t\t\t\t\tid=\"shuffle_workflow_search_field\"\n\t\t\t\t\tonChange={(event) => {\n\t\t\t\t\t\trefine(event.currentTarget.value)\n\t\t\t\t\t}}\n\t\t\t\t\tlimit={5}\n\t\t\t\t/>\n\t\t\t\t{/*isSearchStalled ? 'My search is stalled' : ''*/}\n\t\t\t\n\t\t)\n\t\t//value={currentRefinement}\n\t}\n\n\tif (selectAble === true) {\n\t\tconsole.log(\"Make it possible to select a Workflow!!\")\n\t}\n\n\tconst Hits = ({ hits }) => {\n\t\tconst [mouseHoverIndex, setMouseHoverIndex] = useState(-1) \n\t\tvar counted = 0\n\n\t\treturn (\n\t\t\t\n\t\t\t\t{hits.map((data, index) => {\n\t\t\t\t\tconst paperStyle = {\n\t\t\t\t\t\tbackgroundColor: index === mouseHoverIndex ? \"rgba(255,255,255,0.8)\" : theme.palette.inputColor,\n\t\t\t\t\t\tcolor: index === mouseHoverIndex ? theme.palette.inputColor : \"rgba(255,255,255,0.8)\", \n\t\t\t\t\t\tborder: newSelectedApp.objectID !== data.objectID ? `1px solid rgba(255,255,255,0.2)` : \"2px solid #f86a3e\", \n\t\t\t\t\t\ttextAlign: \"left\",\n\t\t\t\t\t\tpadding: 10,\n\t\t\t\t\t\tcursor: \"pointer\",\n\t\t\t\t\t\tposition: \"relative\",\n\t\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t\t\twidth: \"100%\", \n\t\t\t\t\t}\n\t\n\t\t\t\t\tif (counted === 12/xs*rowHandler) {\n\t\t\t\t\t\treturn null\n\t\t\t\t\t}\n\n\t\t\t\t\tcounted += 1\n\t\t\t\t\tvar parsedname = \"\"\n\t\t\t\t\tfor (var key = 0; key < data.name.length; key++) {\n\t\t\t\t\t\tvar character = data.name.charAt(key)\n\t\t\t\t\t\tif (character === character.toUpperCase()) {\n\t\t\t\t\t\t\t//console.log(data.name[key], data.name[key+1])\n\t\t\t\t\t\t\tif (data.name.charAt(key+1) !== undefined && data.name.charAt(key+1) === data.name.charAt(key+1).toUpperCase()) {\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tparsedname += \" \"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tparsedname += character\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tparsedname = (parsedname.charAt(0).toUpperCase()+parsedname.substring(1)).replaceAll(\"_\", \" \")\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\tsetMouseHoverIndex(index)\n\t\t\t\t\t\t}} onMouseOut={() => {\n\t\t\t\t\t\t\tsetMouseHoverIndex(-1)\n\t\t\t\t\t\t}} onClick={() => {\n\t\t\t\t\t\t\tsetNewSelectedApp(data)\n\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t{/*{data.name}*/}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{parsedname}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t)\n\t\t\t\t})}\n\t\t\t
    \n\t\t)\n\t}\n\n\tconst InputHits = ConfiguredHits === undefined ? Hits : ConfiguredHits\n\tconst CustomSearchBox = connectSearchBox(SearchBox)\n\tconst CustomHits = connectHits(InputHits)\n\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\t{/* showSearch === false ? null : \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t*/}\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t
    \n\t)\n}\n\nexport default WorkflowSearch;\n","import React, { useState, useEffect, useLayoutEffect } from \"react\";\nimport theme from '../theme.jsx';\n\nimport {\n\tChip,\n\tTypography,\n\tPaper, \n\tAvatar,\n\tGrid,\n\tTooltip,\n} from \"@material-ui/core\";\n\nimport {\n AvatarGroup,\n} from \"@mui/material\"\n\nimport {\n\tRestore as RestoreIcon,\n\tEdit as EditIcon,\n\tBubbleChart as BubbleChartIcon,\n\tMoreVert as MoreVertIcon,\n} from '@material-ui/icons';\n\nimport { useNavigate, Link, useParams } from \"react-router-dom\";\n\nconst workflowActionStyle = {\n\tdisplay: \"flex\",\n\twidth: 160,\n\theight: 44,\n\tjustifyContent: \"space-between\",\n}\n\n\nconst chipStyle = {\n\tbackgroundColor: \"#3d3f43\",\n\tmarginRight: 5,\n\tpaddingLeft: 5,\n\tpaddingRight: 5,\n\theight: 28,\n\tcursor: \"pointer\",\n\tborderColor: \"#3d3f43\",\n\tcolor: \"white\",\n}\n\nconst WorkflowPaper = (props) => {\n const { data } = props;\n\t\tlet navigate = useNavigate();\n\n const [open, setOpen] = React.useState(false);\n const [anchorEl, setAnchorEl] = React.useState(null);\n\t\tconst appGroup = data.action_references === undefined || data.action_references === null ? [] : data.action_references\n\n \tconst isCloud =\n\t\t\twindow.location.host === \"localhost:3002\" ||\n\t\t\twindow.location.host === \"shuffler.io\";\n\n\t\t//console.log(\"Workflow: \", data)\n var boxColor = \"#86c142\";\n\n\t\tconst paperAppStyle = {\n\t\t\tminHeight: 130,\n\t\t\tmaxHeight: 130,\n\t\t\toverflow: \"hidden\",\n\t\t\twidth: \"100%\",\n\t\t\tcolor: \"white\",\n\t\t\tbackgroundColor: theme.palette.surfaceColor,\n\t\t\tpadding: \"12px 12px 0px 15px\",\n\t\t\tborderRadius: 5,\n\t\t\tdisplay: \"flex\",\n\t\t\tboxSizing: \"border-box\",\n\t\t\tposition: \"relative\",\n\t\t}\n\n var parsedName = data.name;\n if (\n parsedName !== undefined &&\n parsedName !== null &&\n parsedName.length > 20\n ) {\n parsedName = parsedName.slice(0, 21) + \"..\";\n }\n\n\t\t\n\t\tconst imageStyle = {\n\t\t\twidth: 24, \n\t\t\theight: 24,\n\t\t\tmarginRight: 10, \n\t\t\tborder: \"1px solid rgba(255,255,255,0.3)\",\n\t\t}\n var image = data.creator_info !== undefined && data.creator_info !== null && data.creator_info.image !== undefined && data.creator_info.image !== null && data.creator_info.image.length > 0 ? : \n\t\tconst creatorname = data.creator_info !== undefined && data.creator_info !== null && data.creator_info.username !== undefined && data.creator_info.username !== null && data.creator_info.username.length > 0 ? data.creator_info.username : \"\"\n var orgName = \"\";\n var orgId = \"\";\n\t\tif ((data.objectID === undefined || data.objectID === null) && data.id !== undefined && data.id !== null) {\n\t\t\tdata.objectID = data.id\n\t\t}\n\n\t\t//console.log(\"IMG: \", data)\n\t\tvar parsedUrl = `/workflows/${data.objectID}`\n\t\tif (data.__queryID !== undefined && data.__queryID !== null) {\n\t\t\tparsedUrl += `?queryID=${data.__queryID}`\n\t\t}\n\n\t\tif (!isCloud) {\n\t\t\tparsedUrl = `https://shuffler.io${parsedUrl}`\n\t\t}\n\n return (\n\t\t\t
    \n \n \n \n \n \n {\n\t\t\t\t\t\t\t\t\t\tif (data.creator_info !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\tnavigate(\"/creators/\"+data.creator_info.username)\n\t\t\t\t\t\t\t\t\t\t}\n }}\n >\n {image}\n
    \n \n \n \n \n {parsedName}\n \n \n \n \n \n\t\t\t\t\t\t\t{appGroup.length > 0 ? \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{appGroup.map((app, index) => {\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnavigate(\"/apps/\"+app.id)\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t: \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n \t{data.actions === undefined || data.actions === null ? 1 : data.actions.length}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t}\n \n \n \n \n {data.triggers === undefined || data.triggers === null ? 1 : data.triggers.length}\n \n \n \n \n {\n }}\n >\n \n \n \n \n {0}\n \n \n \n \n \n {data.tags !== undefined && data.tags !== null \n ? data.tags.map((tag, index) => {\n if (index >= 3) {\n return null;\n }\n\n return (\n \n );\n })\n : null}\n \n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
    \n\t\t)\n }\n\nexport default WorkflowPaper\n","import React, { useState, useEffect } from \"react\";\nimport ReactGA from 'react-ga4';\nimport Button from \"@material-ui/core/Button\";\nimport Checkbox from '@mui/material/Checkbox';\n\nimport AliceCarousel from 'react-alice-carousel';\nimport 'react-alice-carousel/lib/alice-carousel.css';\n\nimport SearchIcon from '@mui/icons-material/Search';\nimport EmailIcon from '@mui/icons-material/Email';\nimport NewReleasesIcon from '@mui/icons-material/NewReleases';\nimport ExtensionIcon from '@mui/icons-material/Extension';\nimport LightbulbIcon from '@mui/icons-material/Lightbulb';\nimport ArrowBackIosNewIcon from '@mui/icons-material/ArrowBackIosNew';\nimport ArrowForwardIosIcon from '@mui/icons-material/ArrowForwardIos';\n\nimport theme from '../theme.jsx';\nimport {\n \tFade,\n\t\tIconButton,\n FormGroup,\n FormControl,\n InputLabel,\n FormLabel,\n FormControlLabel,\n Select,\n MenuItem,\n Grid,\n\t\tPaper, \n\t\tTypography, \n\t\tTextField,\n\t\tZoom,\n\t\tList,\n\t\tListItem,\n\t\tListItemText,\n\t\tDivider,\n\t\tTooltip,\n\t\tChip,\n\t\tButtonGroup,\n} from \"@material-ui/core\";\nimport { useAlert } from \"react-alert\";\n\nimport { useNavigate, Link } from \"react-router-dom\";\nimport WorkflowSearch from '../components/Workflowsearch.jsx';\nimport AuthenticationItem from '../components/AuthenticationItem.jsx';\nimport WorkflowPaper from \"../components/WorkflowPaper.jsx\"\nimport UsecaseSearch from \"../components/UsecaseSearch.jsx\"\n\n\nconst responsive = {\n 0: { items: 1 },\n};\n\nconst WelcomeForm = (props) => {\n\t\tconst { userdata, globalUrl, discoveryWrapper, setDiscoveryWrapper, appFramework, getFramework, activeStep, setActiveStep, steps, skipped, setSkipped, getApps, apps, handleSetSearch, usecaseButtons, defaultSearch, setDefaultSearch, selectionOpen, setSelectionOpen, } = props\n\n const [usecaseItems, setUsecaseItems] = useState([\n\t\t\t{\n\t\t\t\t\"search\": \"Phishing\",\n\t\t\t\t\"usecase_search\": undefined,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"search\": \"Enrichment\",\n\t\t\t\t\"usecase_search\": undefined,\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"search\": \"Enrichment\",\n\t\t\t\t\"usecase_search\": \"SIEM alert enrichment\",\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"search\": \"Build your own\",\n\t\t\t\t\"usecase_search\": undefined,\n\t\t\t}])\n\n\t\t\t/*\n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t\t,\n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t\t,\n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t\t,\n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t])\n\t\t*/\n\n const [discoveryData, setDiscoveryData] = React.useState({})\n const [name, setName] = React.useState(\"\")\n const [orgName, setOrgName] = React.useState(\"\")\n const [role, setRole] = React.useState(\"\")\n const [orgType, setOrgType] = React.useState(\"\")\n const [finishedApps, setFinishedApps] = React.useState([])\n \tconst [authentication, setAuthentication] = React.useState([]);\n\t\tconst [newSelectedApp, setNewSelectedApp] = React.useState({})\n\t\tconst [thumbIndex, setThumbIndex] = useState(0);\n const [thumbAnimation, setThumbAnimation] = useState(false);\n const [clickdiff, setclickdiff] = useState(0);\n\n\t\tconst isCloud = window.location.host === \"localhost:3002\" || window.location.host === \"shuffler.io\";\n \n \tconst alert = useAlert();\n\t\tlet navigate = useNavigate();\n\n const onNodeSelect = (label) => {\n\t\t\tif (setDiscoveryWrapper !== undefined) {\n\t\t\t\tsetDiscoveryWrapper(\n\t\t\t\t\t{\"id\": label}\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tif (isCloud) {\n\t\t\t\t\tReactGA.event({\n\t\t\t\t\t\tcategory: \"welcome\",\n\t\t\t\t\t\taction: `click_${label}`,\n\t\t\t\t\t\tlabel: \"\",\n\t\t\t\t\t})\n\t\t\t}\n\n\t\t\tsetSelectionOpen(true)\n\t\t\tsetDefaultSearch(label)\n }\n\n useEffect(() => {\n\t\t\tif (userdata.id === undefined) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (userdata.name !== undefined && userdata.name !== null && userdata.name.length > 0) {\n\t\t\t\tsetName(userdata.name)\n\t\t\t}\n\n\t\t\tif (userdata.active_org !== undefined && userdata.active_org.name !== undefined && userdata.active_org.name !== null && userdata.active_org.name.length > 0) {\n\t\t\t\tsetOrgName(userdata.active_org.name)\n\t\t\t}\n\t\t}, [userdata])\n\n\t\tuseEffect(() => {\n\t\t\tif (discoveryWrapper === undefined || discoveryWrapper.id === undefined) {\n\t\t\t\tsetDefaultSearch(\"\")\n\t\t\t\tvar newfinishedApps = finishedApps\n\t\t\t\tnewfinishedApps.push(defaultSearch)\n\t\t\t\tsetFinishedApps(finishedApps)\n\t\t\t}\n\t\t}, [discoveryWrapper])\n\n\t\tuseEffect(() => {\n\t\t\tif (\n\t\t\t\twindow.location.search !== undefined &&\n\t\t\t\twindow.location.search !== null\n\t\t\t) {\n\t\t\t\tconst urlSearchParams = new URLSearchParams(window.location.search);\n\t\t\t\tconst params = Object.fromEntries(urlSearchParams.entries());\n\t\t\t\tconst foundTab = params[\"tab\"];\n\t\t\t\tif (foundTab !== null && foundTab !== undefined && !isNaN(foundTab)) {\n\t\t\t\t\tif (foundTab === 3 || foundTab === \"3\") {\n\t\t\t\t\t\t//console.log(\"Set search!\")\n\t\t\t\t\t}\n\t\t\t\t} else { \n \t\t\t//navigate(`/welcome?tab=1`)\n\t\t\t\t}\n\n\t\t\t\tconst foundTemplate = params[\"workflow_template\"];\n\t\t\t\tif (foundTemplate !== null && foundTemplate !== undefined) {\n\t\t\t\t\tconsole.log(\"Found workflow template: \", foundTemplate)\n\t\t\t\t\n\t\t\t\t\tvar sourceapp = undefined\n\t\t\t\t\tvar destinationapp = undefined\n\t\t\t\t\tvar action = undefined\n\t\t\t\t\tconst srcapp = params[\"source_app\"];\n\t\t\t\t\tif (srcapp !== null && srcapp !== undefined) {\n\t\t\t\t\t\tsourceapp = srcapp\n\t\t\t\t\t}\n\n\t\t\t\t\tconst dstapp = params[\"dest_app\"];\n\t\t\t\t\tif (dstapp !== null && dstapp !== undefined) {\n\t\t\t\t\t\tdestinationapp = dstapp\n\t\t\t\t\t}\n\n\t\t\t\t\tconst act = params[\"action\"];\n\t\t\t\t\tif (act !== null && act !== undefined) {\n\t\t\t\t\t\taction = act\n\t\t\t\t\t}\n \n\t\t\t\t\t//defaultSearch={foundTemplate}\n\t\t\t\t\t//\n\t\t\t\t\tusecaseItems[0] = {\n\t\t\t\t\t\t\"search\": \"enrichment\",\n\t\t\t\t\t\t\"usecase_search\": foundTemplate,\n\t\t\t\t\t\t\"sourceapp\": sourceapp,\n\t\t\t\t\t\t\"destinationapp\": destinationapp,\n\t\t\t\t\t\t\"autotry\": action === \"try\",\n\t\t\t\t\t}\n\n\t\t\t\t\tconsole.log(\"Adding: \", usecaseItems[0])\n\n\t\t\t\t\tsetUsecaseItems(usecaseItems)\n\t\t\t\t}\n\t\t\t}\n\t\t}, [])\n\n const isStepOptional = step => {\n return step === 1\n }\n\n\t\tconst sendUserUpdate = (name, role, userId) => {\n\t\t\tconst data = {\n\t\t\t\t\"tutorial\": \"welcome\",\n\t\t\t\t\"firstname\": name,\n\t\t\t\t\"company_role\": role,\n\t\t\t\t\"user_id\": userId,\n\t\t\t}\n\n\t\t\tconst url = `${globalUrl}/api/v1/users/updateuser`\n\t\t\tfetch(url, {\n\t\t\t\tmode: \"cors\",\n\t\t\t\tmethod: \"PUT\",\n\t\t\t\tbody: JSON.stringify(data),\n\t\t\t\tcredentials: \"include\",\n\t\t\t\tcrossDomain: true,\n\t\t\t\twithCredentials: true,\n\t\t\t\theaders: {\n\t\t\t\t\t\"Content-Type\": \"application/json; charset=utf-8\",\n\t\t\t\t},\n\t\t\t})\n\t\t\t.then((response) =>\n\t\t\t\tresponse.json().then((responseJson) => {\n\t\t\t\t\tif (responseJson[\"success\"] === false) {\n\t\t\t\t\t\tconsole.log(\"Update user success\")\n\t\t\t\t\t\t//alert.error(\"Failed updating org: \", responseJson.reason);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.log(\"Update success!\")\n\t\t\t\t\t\t//alert.success(\"Successfully edited org!\");\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t)\n\t\t\t.catch((error) => {\n\t\t\t\tconsole.log(\"Update err: \", error.toString())\n\t\t\t\t//alert.error(\"Err: \" + error.toString());\n\t\t\t});\n\t\t}\n\n\t\tconst sendOrgUpdate = (orgname, company_type, orgId, priority) => {\n\t\t\tvar data = {\n\t\t\t\torg_id: orgId,\n\t\t\t};\n\n\t\t\tif (orgname.length > 0) {\n\t\t\t\tdata.name = orgname\n\t\t\t}\n\n\t\t\tif (company_type.length > 0) {\n\t\t\t\tdata.company_type = company_type \n\t\t\t}\n\n\t\t\tif (priority.length > 0) {\n\t\t\t\tdata.priority = priority\n\t\t\t}\n\n\t\t\tconst url = globalUrl + `/api/v1/orgs/${orgId}`;\n\t\t\tfetch(url, {\n\t\t\t\tmode: \"cors\",\n\t\t\t\tmethod: \"POST\",\n\t\t\t\tbody: JSON.stringify(data),\n\t\t\t\tcredentials: \"include\",\n\t\t\t\tcrossDomain: true,\n\t\t\t\twithCredentials: true,\n\t\t\t\theaders: {\n\t\t\t\t\t\"Content-Type\": \"application/json; charset=utf-8\",\n\t\t\t\t},\n\t\t\t})\n\t\t\t.then((response) =>\n\t\t\t\tresponse.json().then((responseJson) => {\n\t\t\t\t\tif (responseJson[\"success\"] === false) {\n\t\t\t\t\t\tconsole.log(\"Update of org failed\")\n\t\t\t\t\t\t//alert.error(\"Failed updating org: \", responseJson.reason);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t//alert.success(\"Successfully edited org!\");\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t)\n\t\t\t.catch((error) => {\n\t\t\t\tconsole.log(\"Update err: \", error.toString())\n\t\t\t\t//alert.error(\"Err: \" + error.toString());\n\t\t\t});\n\t\t}\n\n\t\tvar workflowDelay = -50\n\t\tconst NewHits = ({ hits }) => {\n\t\t\tconst [mouseHoverIndex, setMouseHoverIndex] = useState(-1) \n\t\t\tvar counted = 0\n\n\t\t\tconst paperAppContainer = {\n\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\tflexWrap: \"wrap\",\n\t\t\t\t\talignContent: \"space-between\",\n\t\t\t\t\tmarginTop: 5,\n \t\t}\n\n\t\t\treturn (\n\t\t\t\t\n\t\t\t\t\t{hits.map((data, index) => {\n\t\t\t\t\t\tworkflowDelay += 50\n\n\t\t\t\t\t\tif (index > 3) {\n\t\t\t\t\t\t\treturn null\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)\n\t\t\t\t\t})}\n\t\t\t\t\n\t\t\t)\n\t\t}\n\n const isStepSkipped = step => {\n return skipped.has(step)\n }\n\n const handleNext = () => {\n\t\t\t\tsetDefaultSearch(\"\")\n\n\t\t\t\tif (activeStep === 0) {\n\t\t\t\t\tconsole.log(\"Should send basic information about org (fetch)\")\n\t\t\t\t\tsetclickdiff(240)\n\t\t\t\t\tnavigate(`/welcome?tab=2`)\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\tif (isCloud) {\n\t\t\t\t\t\tReactGA.event({\n\t\t\t\t\t\t\t\tcategory: \"welcome\",\n\t\t\t\t\t\t\t\taction: \"click_page_one_next\",\n\t\t\t\t\t\t\t\tlabel: \"\",\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\tif (userdata.active_org !== undefined && userdata.active_org.id !== undefined && userdata.active_org.id !== null && userdata.active_org.id.length > 0) {\n\t\t\t\t\t\tsendOrgUpdate(orgName, orgType, userdata.active_org.id, \"\") \n\t\t\t\t\t}\n\n\t\t\t\t\tif (userdata.id !== undefined && userdata.id !== null && userdata.id.length > 0) {\n\t\t\t\t\t\tsendUserUpdate(name, role, userdata.id) \n\t\t\t\t\t}\n\n\t\t\t\t} else if (activeStep === 1) {\n\t\t\t\t\tconsole.log(\"Should send secondary info about apps and other things\")\n\t\t\t\t\tsetDiscoveryWrapper({})\n \t\n\t\t\t\t\tnavigate(`/welcome?tab=3`)\n\t\t\t\t\t//handleSetSearch(\"Enrichment\", \"2. Enrich\")\n\t\t\t\t\thandleSetSearch(usecaseButtons[0].name, usecaseButtons[0].usecase)\n\t\t\t\t\tgetApps()\n\n\t\t\t\t\t// Make sure it's up to date\n\t\t\t\t\tif (getFramework !== undefined) {\n\t\t\t\t\t\tgetFramework()\n\t\t\t\t\t}\n\t\t\t\t} else if (activeStep === 2) {\n\t\t\t\t\tconsole.log(\"Should send third page with workflows activated and the like\")\n\t\t\t\t}\n\n\n let newSkipped = skipped;\n if (isStepSkipped(activeStep)) {\n newSkipped = new Set(newSkipped.values());\n newSkipped.delete(activeStep);\n }\n\n setActiveStep(prevActiveStep => prevActiveStep + 1);\n setSkipped(newSkipped);\n }\n\n const handleBack = () => {\n setActiveStep(prevActiveStep => prevActiveStep - 1);\n\n\t\t\t\tif (activeStep === 2) {\n\t\t\t\t\tsetDiscoveryWrapper({})\n\n\t\t\t\t\tif (getFramework !== undefined) {\n\t\t\t\t\t\tgetFramework()\n\t\t\t\t\t}\n\t\t\t\t\tnavigate(\"/welcome?tab=2\")\n\t\t\t\t} else if (activeStep === 1) {\n\t\t\t\t\tnavigate(\"/welcome?tab=1\")\n\t\t\t\t}\n };\n\n const handleSkip = () => {\n \t\tsetclickdiff(240)\n if (!isStepOptional(activeStep)) {\n throw new Error(\"You can't skip a step that isn't optional.\");\n }\n setActiveStep(prevActiveStep => prevActiveStep + 1);\n setSkipped(prevSkipped => {\n const newSkipped = new Set(prevSkipped.values());\n newSkipped.add(activeStep);\n return newSkipped;\n });\n };\n\n const handleReset = () => {\n setActiveStep(0);\n };\n\n useEffect(() => {\n console.log(\"Selected app changed (effect)\")\n }, [newSelectedApp])\n\n\t\t//const buttonWidth = 145 \n\t\tconst buttonWidth = 450 \n\t\tconst buttonMargin = 10\n\t\tconst sizing = 475\n\t\tconst buttonStyle = {\n\t\t\tflex: 1,\n\t\t\twidth: \"100%\", \n\t\t\tpadding: 25,\n\t\t\tmargin: buttonMargin,\n\t\t\tfontSize: 18,\n\t\t}\n\n\t\tconst slideNext = () => {\n\t\t\tif (!thumbAnimation && thumbIndex < usecaseItems.length - 1) {\n\t\t\t\t//handleSetSearch(usecaseButtons[0].name, usecaseButtons[0].usecase)\n\t\t\t\tsetThumbIndex(thumbIndex + 1);\n\t\t\t} else if (!thumbAnimation && thumbIndex === usecaseItems.length - 1) {\n\t\t\t\tsetThumbIndex(0)\n\t\t\t}\n };\n\n const slidePrev = () => {\n\t\t\tif (!thumbAnimation && thumbIndex > 0) {\n\t\t\t\tsetThumbIndex(thumbIndex - 1);\n\t\t\t} else if (!thumbAnimation && thumbIndex === 0) {\n\t\t\t\tsetThumbIndex(usecaseItems.length-1)\n\t\t\t}\n };\n\n\t\tconst newButtonStyle = {\n\t\t\tpadding: 22, \n\t\t\tflex: 1, \n\t\t\tmargin: buttonMargin,\n\t\t\tminWidth: buttonWidth, \n\t\t\tmaxWidth: buttonWidth, \n\t\t}\n\n\n\t\tconst formattedCarousel = appFramework === undefined || appFramework === null ? [] : usecaseItems.map((item, index) => {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t)\n\t\t})\n\n const getStepContent = (step) => {\n switch (step) {\n case 0:\n return (\n\t\t\t\t\t\t\t\t\t\n \n\t\t\t\t\t\t\t\t\t\t\t{/*isCloud ? null :\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tThis data will be used within the product and NOT be shared unless cloud synchronization is configured.\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t*/}\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tIn order to understand how we best can help you find relevant Usecases, please provide the information below. This is optional, but highly encouraged.\n\t\t\t\t\t\t\t\t\t\t\t \n \n {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetName(e.target.value)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\n \n {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetOrgName(e.target.value)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\n \n \n Your Role\n {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetRole(e.target.value)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n >\n Student\n Security Analyst/Engineer\n SOC Manager\n C-Level\n Other\n \n \n \n \n \n Company Type\n {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetOrgType(e.target.value)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n >\n Education\n MSSP\n Security Product Company\n Other\n \n \n \n \n\t\t\t\t\t\t\t\t\t\n )\n case 1:\n return (\n\t\t\t\t\t\t\t\t\t\n
    \n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\tApps for each category are shown based on your activity and can be changed by clicking their icon. We will help you connect them later.\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{/*The app framework helps us access and authenticate the most important APIs for you. */}\n\n\t\t\t\t\t\t\t\t\t\t\t\t{/*\n \n \n What is your development experience?\n \n Beginner\n Intermediate\n Automation Ninja\n \n \n \n\t\t\t\t\t\t\t\t\t\t\t\t*/}\n \n {/*Find your integrations!*/}\n
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n
    \n
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n
    \n
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n
    \n {/* \n What do you want to automate first ?\n \n { onNodeSelect(\"Email\") }} />}\n label=\"Email\"\n labelPlacement=\"Email\"\n />\n { onNodeSelect(\"SIEM\") }} />}\n label=\"SIEM\"\n labelPlacement=\"SIEM\"\n />\n { onNodeSelect(\"EDR\") }} />}\n label=\"EDR\"\n labelPlacement=\"EDR\"\n />\n \n */}\n
    \n\t\t\t\t\t\t\t\t\t\t\t\t{/*\n \n \n What tools do you use?\n \n Email\n SIEM\n EDR\n Chat System\n \n \n \n\t\t\t\t\t\t\t\t\t\t\t\t*/}\n\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n )\n case 2:\n return (\n\t\t\t\t\t\t\t\t\t\n
    \n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\tThese are some of our Workflow templates, used to start new Workflows. Use the right and left buttons to find new Usecases, and click the orange button to build it.\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{/**/}\n\t\t\t\t\t\t\t\t\t\t\t\t{/*\n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t{usecaseButtons.map((usecase, index) => {\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"Clicked: \", usecase.name)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (defaultSearch === usecase.name) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//setSelectedUsecaseCategory(\"\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleSetSearch(usecase.name, usecase.usecase)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//addFilter(usecase.name.slice(3,usecase.name.length))\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t*/}\n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t{/*\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t*/}\n\n\t\t \t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tslidePrev() \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tslideNext() \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n \t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n )\n default:\n return \"unknown step\"\n }\n }\n\n\t\tconst extraHeight = isCloud ? -7 : 0\n return (\n
    \n {/*selectionOpen ?\n\t\t\t\t\t\t\t\n : null*/}\n\t\t\t\t\t\t
    \n {activeStep === steps.length ? (\n
    \n You Will be Redirected to getting Start Page Wait for 5-sec.\n \n \n \n
    \n ) : (\n
    \n {getStepContent(activeStep)}\n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t{activeStep === 2 || activeStep === 1 ? \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{/*isStepOptional(activeStep) && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tSkip\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)*/}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{activeStep === 0 ? \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: null}\n \t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t}\n
    \n )}\n
    \n
    \n );\n}\n\nexport default WelcomeForm \n","import React, { useState, useEffect } from 'react';\nimport ReactGA from 'react-ga4';\nimport WelcomeForm2 from \"../components/WelcomeForm2.jsx\";\nimport Stepper from \"@material-ui/core/Stepper\";\nimport Step from \"@material-ui/core/Step\";\nimport StepLabel from \"@material-ui/core/StepLabel\";\nimport AppFramework from \"../components/AppFramework.jsx\";\nimport ArrowBackIosIcon from '@mui/icons-material/ArrowBackIos';\nimport { \n\tGrid, \n\tContainer,\n Fade,\n\tTypography, \n\tPaper,\n\tButton,\n\tCard,\n\tCardContent,\n\tCardActionArea,\n} from '@mui/material';\nimport theme from '../theme.jsx';\nimport { useNavigate, Link } from \"react-router-dom\";\nimport Drift from \"react-driftjs\";\n\nconst Welcome = (props) => {\n const { globalUrl, surfaceColor, newColor, mini, inputColor, userdata, isLoggedIn, isLoaded, serverside } = props;\n const [skipped, setSkipped] = React.useState(new Set());\n const [inputUsecase, setInputUsecase] = useState({});\n \tconst [frameworkData, setFrameworkData] = useState(undefined);\n \tconst [discoveryWrapper, setDiscoveryWrapper] = useState(undefined);\n const [activeStep, setActiveStep] = React.useState(1);\n \tconst [apps, setApps] = React.useState([]);\n\t\tconst [defaultSearch, setDefaultSearch] = React.useState(\"\")\n\t\tconst [selectionOpen, setSelectionOpen] = React.useState(false)\n\t\tconst [showWelcome, setShowWelcome] = React.useState(false)\n \tconst [usecases, setUsecases] = React.useState([]);\n \tconst [workflows, setWorkflows] = React.useState([]);\n\n\t\tlet navigate = useNavigate();\n //if (serverside === false && isLoaded === true && isLoggedIn === false) {\n\t\t//\tconsole.log(\"Redirecting to login?\")\n\t\t//\tconsole.log(window.location.pathname)\n\t\t//\tconsole.log(window.location)\n\t\t//\tnavigate(`/login?view=${window.location.pathname}${window.location.search}`)\n\t\t//}\n\n \tconst isCloud =\n\t\t\twindow.location.host === \"localhost:3002\" ||\n\t\t\twindow.location.host === \"shuffler.io\";\n\n\t\tconst [steps, setSteps] = useState([\n\t\t\t\"Help us get to know you\", \n\t\t\t\"Find your Apps\", \n\t\t\t\"Discover Usecases\",\n\t\t])\n\n\n\t\tconst handleKeysetting = (categorydata, workflows) => {\n\t\t\t//workflows[0].category = [\"detect\"]\n\t\t\t//workflows[0].usecase_ids = [\"Correlate tickets\"]\n\n\t\t\tif (workflows !== undefined && workflows !== null) {\n\t\t\t\tvar newcategories = []\n\t\t\t\tfor (var key in categorydata) {\n\t\t\t\t\tvar category = categorydata[key]\n\t\t\t\t\tcategory.matches = []\n\n\t\t\t\t\tfor (var subcategorykey in category.list) {\n\t\t\t\t\t\tvar subcategory = category.list[subcategorykey]\n\t\t\t\t\t\tsubcategory.matches = []\n\n\t\t\t\t\t\tfor (var workflowkey in workflows) {\n\t\t\t\t\t\t\tconst workflow = workflows[workflowkey]\n\n\t\t\t\t\t\t\tif (workflow.usecase_ids !== undefined && workflow.usecase_ids !== null) {\n\t\t\t\t\t\t\t\tfor (var usecasekey in workflow.usecase_ids) {\n\n\t\t\t\t\t\t\t\t\tif (workflow.usecase_ids[usecasekey].toLowerCase() === subcategory.name.toLowerCase()) {\n\t\t\t\t\t\t\t\t\t\t//console.log(\"Got match: \", workflow.usecase_ids[usecasekey])\n\n\t\t\t\t\t\t\t\t\t\tcategory.matches.push({\n\t\t\t\t\t\t\t\t\t\t\t\"workflow\": workflow.id,\n\t\t\t\t\t\t\t\t\t\t\t\"category\": subcategory.name,\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\tsubcategory.matches.push(workflow.id)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (subcategory.matches.length > 0) {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tnewcategories.push(category)\n\t\t\t\t} \n\n\t\t\t\tsetUsecases(newcategories)\n\t\t\t} else {\n\t\t\t\tsetUsecases(categorydata)\n\t\t\t}\n\n\t\t\tsetWorkflows(workflows)\n\t\t}\n \n\t\tconst fetchUsecases = (workflows) => {\n\t\t\tfetch(globalUrl + \"/api/v1/workflows/usecases\", {\n\t\t\t\tmethod: \"GET\",\n\t\t\t\theaders: {\n\t\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t\tAccept: \"application/json\",\n\t\t\t\t},\n\t\t\t\tcredentials: \"include\",\n\t\t\t})\n\t\t\t.then((response) => {\n\t\t\t\tif (response.status !== 200) {\n\t\t\t\t\tconsole.log(\"Status not 200 for usecases\");\n\t\t\t\t}\n\n\t\t\t\treturn response.json()\n\t\t\t})\n\t\t\t.then((responseJson) => {\n\t\t\t\tif (responseJson.success !== false) {\n\t\t\t\t\thandleKeysetting(responseJson, workflows)\n\t\t\t\t} else {\n\t\t\t\t\t//setWorkflows(workflows);\n\t\t\t\t\t//setWorkflowDone(true);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tconsole.log(\"Usecase error: \" + error.toString())\n\t\t\t});\n\t\t}\n\n\t\tconst getAvailableWorkflows = () => {\n\t\t\tfetch(globalUrl + \"/api/v1/workflows\", {\n\t\t\t\tmethod: \"GET\",\n\t\t\t\theaders: {\n\t\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t\tAccept: \"application/json\",\n\t\t\t\t},\n\t\t\t\tcredentials: \"include\",\n\t\t\t})\n\t\t\t.then((response) => {\n\t\t\t\tif (response.status !== 200) {\n\t\t\t\t\tconsole.log(\"Status not 200 for workflows :O!: \", response.status);\n\t\t\t\t}\n\n\t\t\t\treturn response.json();\n\t\t\t})\n\t\t\t.then((responseJson) => {\n\t\t\t\tif (responseJson !== undefined) {\n\t\t\t\t\tvar newarray = []\n\t\t\t\t\tfor (var key in responseJson) {\n\t\t\t\t\t\tconst wf = responseJson[key]\n\t\t\t\t\t\tif (wf.public === true) {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tnewarray.push(wf)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Workflows are set in here\n\t\t\t\t\tfetchUsecases(newarray)\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tconsole.log(\"err in get workflows: \", error.toString());\n\t\t\t})\n\t\t}\n\n\t\tconst getFramework = () => {\n\t\t\tfetch(globalUrl + \"/api/v1/apps/frameworkConfiguration\", {\n\t\t\t\tmethod: \"GET\",\n\t\t\t\theaders: {\n\t\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t\tAccept: \"application/json\",\n\t\t\t\t},\n\t\t\t\tcredentials: \"include\",\n\t\t\t})\n\t\t\t.then((response) => {\n\t\t\t\tif (response.status !== 200) {\n\t\t\t\t\tconsole.log(\"Status not 200 for framework!\");\n\t\t\t\t}\n\n\t\t\t\treturn response.json();\n\t\t\t})\n\t\t\t.then((responseJson) => {\n\t\t\t\tif (responseJson.success === false) {\n\t\t\t\t\tsetFrameworkData({})\n\n\t\t\t\t\tif (responseJson.reason !== undefined) {\n\t\t\t\t\t\t//alert.error(\"Failed loading: \" + responseJson.reason)\n\t\t\t\t\t} else {\n\t\t\t\t\t\t//alert.error(\"Failed to load framework for your org.\")\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tsetFrameworkData(responseJson)\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tconsole.log(\"err in framework: \", error.toString());\n\t\t\t})\n\t\t}\n\n\t\tconst getApps = () => {\n\t\t\tfetch(globalUrl + \"/api/v1/apps\", {\n\t\t\t\tmethod: \"GET\",\n\t\t\t\theaders: {\n\t\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t\tAccept: \"application/json\",\n\t\t\t\t},\n\t\t\t\tcredentials: \"include\",\n\t\t\t})\n\t\t\t.then((response) => {\n\t\t\t\tif (response.status !== 200) {\n\t\t\t\t\tconsole.log(\"Status not 200 for apps :O!\");\n\t\t\t\t}\n\n\t\t\t\treturn response.json();\n\t\t\t})\n\t\t\t.then((responseJson) => {\n\t\t\t\tsetApps(responseJson);\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tconsole.log(\"App loading error: \"+error.toString());\n\t\t\t});\n\t\t}\n\n\t\tconst usecaseButtons = [{\n\t\t\t\"name\": \"Phishing\",\n\t\t\t\"usecase\": \"Email management\",\n\t\t\t\"color\": \"#C51152\",\n\t\t}, {\n\t\t\t\"name\": \"Enrichment\", \n\t\t\t\"usecase\": \"2. Enrich\",\n\t\t\t\"color\": \"#F4C20D\",\n\t\t}, {\n\t\t\t\"name\": \"Detection\",\n\t\t\t\"usecase\": \"3. Detect\",\n\t\t\t\"color\": \"#3CBA54\",\n\t\t}, {\n\t\t\t\"name\": \"Response\",\n\t\t\t\"usecase\": \"4. Respond\",\n\t\t\t\"color\": \"#4885ED\",\n\t\t}]\n\n\t\tconst handleSetSearch = (input, orgupdate) => {\n\t\t\tif (input !== defaultSearch) {\n\t\t\t\tsetDefaultSearch(input)\n\t\t\t\tsetSelectionOpen(false)\n\t\t\t\tsetTimeout(function(){\n\t\t\t\t\tsetSelectionOpen(true)\n\t\t\t\t}, 150);\n\n\t\t\t\t//if (userdata !== undefined && userdata.active_org !== undefined && userdata.active_org.id !== undefined) {\n\t\t\t\t//\tsendOrgUpdate(\"\", \"\", userdata.active_org.id, orgupdate) \n\t\t\t\t//}\n\t\t\t} else {\n\t\t\t\tsetDefaultSearch(\"\")\n\t\t\t\tsetSelectionOpen(false)\n\t\t\t}\n\t\t}\n\n\t\tuseEffect(() => {\n\t\t\tgetFramework() \n\t\t\tgetApps()\n\t\t\tgetAvailableWorkflows() \n\n\t\t\tif (\n\t\t\t\twindow.location.search !== undefined &&\n\t\t\t\twindow.location.search !== null\n\t\t\t) {\n\t\t\t\tconst urlSearchParams = new URLSearchParams(window.location.search);\n\t\t\t\tconst params = Object.fromEntries(urlSearchParams.entries());\n\t\t\t\tconst foundTab = params[\"tab\"];\n\t\t\t\tif (foundTab !== null && foundTab !== undefined && !isNaN(foundTab)) {\n\t\t\t\t\tsetShowWelcome(true)\n\t\t\t\t\tif (foundTab === 3 || foundTab === \"3\") {\n\t\t\t\t\t\thandleSetSearch(usecaseButtons[0].name, usecaseButtons[0].usecase)\n\t\t\t\t\t}\n\n\t\t\t\t\tsetActiveStep(foundTab-1)\n\t\t\t\t} else { \n \t\t\t//navigate(`/welcome?tab=1`)\n \t\t\tnavigate(`/welcome?tab=2`)\n\t\t\t\t}\n\t\t\t}\n\t\t}, [])\n\n const isStepSkipped = step => {\n return skipped.has(step)\n }\n\n\t\tconst paperObject = {\n\t\t\tflex: 1, \n\t\t\tpadding: 0, \n\t\t\ttextAlign: \"center\",\n\t\t\tmaxWidth: 300,\n\t\t\tminWidth: 300,\n\t\t\tbackgroundColor: theme.palette.surfaceColor,\n\t\t\tcolor: \"white\",\n\t\t\tborderRadius: theme.palette.borderRadius,\n\t\t}\n\n\t\tconst actionObject = {\n\t\t\tpadding: \"35px\", \n\t\t\tmaxHeight: 300,\n\t\t\tminHeight: 300,\n\t\t\tborderRadius: theme.palette.borderRadius,\n\t\t}\n\n\t\tconst imageStyle = {\n\t\t\twidth: 150, \n\t\t\t// height: 150, \n\t\t\t// margin: \"auto\", \n\t\t\t// marginTop: 10, \n\t\t\tborderRadius: 75, \n\t\t\tobjectFit: \"scale-down\",\n\t\t}\n\t\tconst buttonStyle = { \n\t\t\tborderRadius: 8, \n\t\t\theight: 51, \n\t\t\twidth: 464, \n\t\t\tfontSize: 16, \n\t\t\tbackground: \"linear-gradient(89.83deg, #FF8444 0.13%, #F2643B 99.84%)\", \n\t\t\tpadding: \"16px 24px\", \n\t\t\ttop: 75, \n\t\t\tmargin: \"auto\",\n\t\t\titemAlign: \"center\",\n\t\t}\n\n\t\tconst defaultImage = \"/images/experienced.png\"\n\t\tconst experienced_image = userdata !== undefined && userdata !== null && userdata.active_org !== undefined && userdata.active_org.image !== undefined && userdata.active_org.image !== null && userdata.active_org.image !== \"\" ? userdata.active_org.image : defaultImage\n return (\n\t\t\t\t
    \n\t\t\t\t\t{/*\n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t*/}\n\t\t\t\t\t{showWelcome === true ? \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{steps.map((label, index) => {\n\t\t\t\t\t\t\t\t\t\t\t\tconst stepProps = {}\n\t\t\t\t\t\t\t\t\t\t\t\tconst labelProps = {}\n\t\t\t\t\t\t\t\t\t\t\t\t//if (isStepOptional(index)) {\n\t\t\t\t\t\t\t\t\t\t\t\t// labelProps.optional = \"optional\"\n\t\t\t\t\t\t\t\t\t\t\t\t//}\n\n\t\t\t\t\t\t\t\t\t\t\t\tif (isStepSkipped(index)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstepProps.completed = false;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n \t\t\t\n \t\t \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t{/*\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t*/}\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
    \n \t\t
    \n\t\t\t\t\t\t\t\t{frameworkData === undefined || window.location.href.includes(\"tab=1\") || window.location.href.includes(\"tab=3\") ? null :\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\tApp Framework\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t: \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t{/*\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\tnavigate(\"/login\")\n\t\t\t\t\t\t\t\t\t}}/>\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\tnavigate(\"/login\")\n\t\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\tBack\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t*/}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tHelp us get to know you\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tWe will use this information to personalize your automation\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\tif (isCloud) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tReactGA.event({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcategory: \"welcome\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\taction: \"click_welcome_continue\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: \"\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t//setActiveStep(1)\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\tsetShowWelcome(true)\n\t\t\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\tNew to Shuffle \n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tLet us guide you for an easier experience\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t{/* \n\t\t\t\t\t\t\t\t\t\t\tOR\n\t\t\t\t\t\t\t\t\t\t */}\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\tif (isCloud) {\n\t\t\t\t\t\t\t\t\t\t\t\tReactGA.event({\n\t\t\t\t\t\t\t\t\t\t\t\t\tcategory: \"welcome\",\n\t\t\t\t\t\t\t\t\t\t\t\t\taction: \"click_getting_started\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: \"\",\n\t\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tnavigate(\"/workflows?message=Skipped intro\")\n\t\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\tExperienced \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tHead to Shuffle right away\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\n\t\t\t\t\t\t\t\t{/*\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t*/}\n\n\t\t\t\t\t\t\t\t
    {\n\t\t\t\t\t\t\t\t\tif (window.drift !== undefined) {\n\t\t\t\t\t\t\t\t\t\twindow.drift.api.startInteraction({ interactionId: 340045 })\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconsole.log(\"Couldn't find drift in window.drift and not .drift-open-chat with querySelector: \", window.drift)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tWant a demo instead?\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t}\n\t\t\t
    \n ) \n}\n\nexport default Welcome; \n","import React, { useState, useEffect } from \"react\";\nimport { useInterval } from \"react-powerhooks\";\nimport AppFramework from \"../components/AppFramework.jsx\";\nimport { makeStyles, useTheme } from \"@material-ui/core/styles\";\n// nodejs library that concatenates classes\nimport classNames from \"classnames\";\nimport theme from '../theme.jsx';\nimport { useNavigate, Link, useParams } from \"react-router-dom\";\n\n// react plugin used to create charts\n//import { Line, Bar } from \"react-chartjs-2\";\nimport { useAlert } from \"react-alert\";\nimport Autocomplete from \"@material-ui/lab/Autocomplete\";\n\nimport {\n\tTooltip,\n\tTextField,\n\tIconButton,\n\tButton,\n\tTypography,\n\tGrid,\n\tPaper,\n\tChip,\n\tCheckbox,\n} from \"@material-ui/core\";\n\nimport {\n Close as CloseIcon,\n\tDoneAll as DoneAllIcon,\n\tDescription as DescriptionIcon,\n\tPlayArrow as PlayArrowIcon,\n\tEdit as EditIcon,\n\tCheckBox as CheckBoxIcon,\n\tCheckBoxOutlineBlank as CheckBoxOutlineBlankIcon,\n\tOpenInNew as OpenInNewIcon,\n} from \"@material-ui/icons\";\n\nimport WorkflowPaper from \"../components/WorkflowPaper.jsx\"\nimport { removeParam } from \"../views/AngularWorkflow.jsx\"\n\n// core components\n//import {\n// chartExample1,\n// chartExample2,\n// chartExample3,\n// chartExample4,\n//} from \"../charts.js\";\n\nimport { \n\tRadialBarChart, \n\tRadialAreaChart, \n\tRadialAxis,\n\tStackedBarSeries,\n\tTooltipArea,\n\tChartTooltip,\n\tTooltipTemplate,\n\tRadialAreaSeries,\n\tRadialPointSeries,\n\tRadialArea,\n\tRadialLine,\n\tTreeMap,\n\tTreeMapSeries,\n\tTreeMapLabel,\n\tTreeMapRect,\n} from 'reaviz';\n\nconst useStyles = makeStyles({\n notchedOutline: {\n borderColor: \"#f85a3e !important\",\n },\n root: {\n \"& .MuiAutocomplete-listbox\": {\n border: \"2px solid #f85a3e\",\n color: \"white\",\n fontSize: 18,\n \"& li:nth-child(even)\": {\n backgroundColor: \"#CCC\",\n },\n \"& li:nth-child(odd)\": {\n backgroundColor: \"#FFF\",\n },\n },\n },\n inputRoot: {\n color: \"white\",\n // This matches the specificity of the default styles at https://github.com/mui-org/material-ui/blob/v4.11.3/packages/material-ui-lab/src/Autocomplete/Autocomplete.js#L90\n \"&:hover .MuiOutlinedInput-notchedOutline\": {\n borderColor: \"#f86a3e\",\n },\n },\n});\n\nconst UsecaseListComponent = ({keys, isCloud, globalUrl, frameworkData, isLoggedIn, workflows, setWorkflows}) => {\n\tconst [expandedIndex, setExpandedIndex] = useState(-1);\n\tconst [expandedItem, setExpandedItem] = useState(-1);\n\tconst [inputUsecase, setInputUsecase] = useState({});\n\n\tconst [editing, setEditing] = useState(false);\n\tconst [description, setDescription] = useState(\"\");\n\tconst [video, setVideo] = useState(\"\");\n\tconst [blogpost, setBlogpost] = useState(\"\");\n\tconst [workflowOutline, setWorkflowOutline] = useState(\"\");\n\n\tconst [selectedWorkflows, setSelectedWorkflows] = useState([])\n\tconst [firstLoad, setFirstLoad] = useState(true)\n\n const classes = useStyles();\n\tlet navigate = useNavigate();\n\n\tconst [mitreTags, setMitreTags] = useState([]);\n\tif (keys === undefined || keys === null || keys.length === 0) {\n\t\treturn null\n\t}\n\n\tconst getUsecase = (name, index, subindex) => {\n fetch(`${globalUrl}/api/v1/workflows/usecases/${escape(name.replaceAll(\" \", \"_\"))}`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n\t\t.then((response) => {\n\t\t\tif (response.status !== 200) {\n\t\t\t\tconsole.log(\"Status not 200 for framework!\");\n\t\t\t}\n\n\t\t\treturn response.json();\n\t\t})\n\t\t.then((responseJson) => {\n\t\t\tif (responseJson.success === false) {\n\t\t\t\tsetInputUsecase({\n\t\t\t\t\t\"name\": name,\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tsetInputUsecase(responseJson)\n\t\t\t}\n\n\t\t\tsetExpandedIndex(index)\n\t\t\tsetExpandedItem(subindex)\n\n\t\t\tsetTimeout(() => {\n\t\t\t\t//console.log(\"Scroll!\")\n\t\t\t\tconst found = document.getElementById(\"selected_box\");\n\t\t\t\tif (found !== undefined && found !== null) {\n\t\t\t\t\t//console.log(\"FOUND!!\")\n\t\t\t\t\tfound.scrollTo({\n\t\t\t\t\t\ttop: 100,\n\t\t\t\t\t\tbehavior: \"smooth\",\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tsetFirstLoad(true)\n\t\t\t\tsetSelectedWorkflows([])\n\t\t\t}, 100);\n})\n\t\t.catch((error) => {\n\t\t\t//alert.error(error.toString());\n\t\t\tsetInputUsecase({})\n\t\t\tsetExpandedIndex(index)\n\t\t\tsetExpandedItem(subindex)\n\n\t\t\tsetFirstLoad(true)\n\t\t\tsetSelectedWorkflows([])\n\t\t})\n\t}\n\n\tconst setUsecaseItem = (inputUsecase) => {\n\t\tvar parsedUsecase = inputUsecase\n\n\t\tif (blogpost !== inputUsecase.blogpost) {\n\t\t\tinputUsecase.blogpost = blogpost\n\t\t\tparsedUsecase.blogpost = blogpost \n\t\t}\n\n\t\tif (video !== inputUsecase.video) {\n\t\t\tinputUsecase.video = video \n\t\t\tparsedUsecase.video = video \n\t\t}\n\n\t\tif (description !== inputUsecase.description) {\n\t\t\tinputUsecase.description = description \n\t\t\tparsedUsecase.description = description\n\t\t}\n\n\t\tif (mitreTags !== inputUsecase.mitre) {\n\t\t\tinputUsecase.mitre = mitreTags\n\t\t\tparsedUsecase.mitre = mitreTags \n\t\t}\n\n\t\tif (workflowOutline !== inputUsecase.workflow_outline) {\n\t\t\tinputUsecase.workflow_outline = workflowOutline \n\t\t\tparsedUsecase.workflow_outline = workflowOutline\n\t\t}\n\n fetch(globalUrl + \"/api/v1/workflows/usecases\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify(parsedUsecase),\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for framework!\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n\t\t\t\tif (responseJson.success === false) {\n\t\t\t\t\tif (responseJson.reason !== undefined) {\n\t\t\t\t\t\t//alert.error(\"Failed updating: \" + responseJson.reason)\n\t\t\t\t\t} else {\n\t\t\t\t\t\t//alert.error(\"Failed to update framework for your org.\")\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t//alert.info(\"Updated usecase.\")\n\t\t\t\t}\n\t\t\t})\n .catch((error) => {\n //alert.error(error.toString());\n\t\t\t\t//setFrameworkLoaded(true)\n })\n\t\t}\n\n const setWorkflow = (workflowdata) => {\n\t\tconst new_url = `${globalUrl}/api/v1/workflows/${workflowdata.id}`\n\n fetch(new_url, {\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify(workflowdata),\n credentials: \"include\",\n })\n\t\t.then((response) => {\n\t\t\tif (response.status !== 200) {\n\t\t\t\tconsole.log(\"Status not 200 for workflows :O!\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treturn response.json();\n\t\t})\n\t\t.then((responseJson) => {\n\t\t\tif (responseJson.success === false) {\n\t\t\t\tif (responseJson.reason !== undefined) {\n\t\t\t\t\talert.error(\"Error updating workflow: \", responseJson.reason)\n\t\t\t\t} else {\n\t\t\t\t\talert.error(\"Error updating workflow.\")\n\t\t\t\t}\n\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\treturn responseJson;\n\t\t})\n\t\t.catch((error) => {\n\t\t\talert.error(\"Problem setting workflow: \", error.toString());\n\t\t});\n };\n\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\tShuffle usecases\n\t\t\t\n\t\t\t\n\t\t\t\tUsecases in Shuffle are divided into {keys.length} type{keys.length === 1 ? \"\" : \"s\"}. \n\t\t\t\n\t\t\t{keys.map((usecase, index) => {\n\t\t\t\treturn (\n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{usecase.name}\n\t\t\t\t\t\t\n \t\t\t\n\t\t\t\t\t\t\t{usecase.list.map((subcase, subindex) => {\n\t\t\t\t\t\t\t\tconst selectedItem = subindex === expandedItem && index === expandedIndex\n\n\t\t\t\t\t\t\t\tif (subcase.matches === undefined || subcase.matches === null) {\n\t\t\t\t\t\t\t\t\tsubcase.matches = []\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (selectedItem && subcase.matches.length > 0 && selectedWorkflows.length === 0 && firstLoad === true) {\n\t\t\t\t\t\t\t\t\t\tsetFirstLoad(false)\n\t\t\t\t\t\t\t\t\t\tsetSelectedWorkflows(subcase.matches)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (selectedItem && subcase.name !== undefined && inputUsecase.name !== undefined) { \n\t\t\t\t\t\t\t\t\tif (subcase.name.toLowerCase().replaceAll(\" \", \"_\") === inputUsecase.name.toLowerCase().replaceAll(\" \", \"_\")) {\n\t\t\t\t\t\t\t\t\t\tif (inputUsecase.description !== undefined && inputUsecase.description !== null) {\n\t\t\t\t\t\t\t\t\t\t\tsubcase.description = inputUsecase.description\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif (inputUsecase.blogpost !== undefined && inputUsecase.blogpost !== null) {\n\t\t\t\t\t\t\t\t\t\t\tsubcase.blogpost = inputUsecase.blogpost\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif (inputUsecase.video !== undefined && inputUsecase.video !== null) {\n\t\t\t\t\t\t\t\t\t\t\tsubcase.video = inputUsecase.video\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif (inputUsecase.extra_buttons !== undefined && inputUsecase.extra_buttons !== null) {\n\t\t\t\t\t\t\t\t\t\t\tsubcase.extra_buttons = inputUsecase.extra_buttons\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif (inputUsecase.workflow_outline !== undefined && inputUsecase.workflow_outline !== null) {\n\t\t\t\t\t\t\t\t\t\t\tsubcase.workflow_outline = inputUsecase.workflow_outline\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t//const backgroundColor = selectedItem ? \"inherit\" : finished ? \"inherit\" : usecase.color\n\t\t\t\t\t\t\t\tconst finished = subcase.matches.length > 0\n\t\t\t\t\t\t\t\tconst backgroundColor = theme.palette.surfaceColor\n\t\t\t\t\t\t\t\t//\"inherit\"\n\t\t\t\t\t\t\t\tconst itemBorder = `${selectedItem ? \"3px\" : expandedItem >= 0 ? \"0px\" : \"1px\"} solid ${usecase.color}`\n\n\t\t\t\t\t\t\t\tconst fixedName = subcase.name.toLowerCase().replace(\"_\", \" \")\n\n\t\t\t\t\t\t\t\treturn (\n \t\t\t\t\t\t {\n\n\t\t\t\t\t\t\t\t\t\t//setSelectedWorkflows([])\n\t\t\t\t\t\t\t\t\t\tif (selectedItem) {\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tgetUsecase(subcase.name, index, subindex) \n\t\t\t\t\t\t\t\t\t\t\tnavigate(`/usecases?selected_object=${fixedName}`)\n\n\t\t\t\t\t\t\t\t\t\t\t//const newitem = removeParam(\"selected_object\", cursearch);\n\t\t\t\t\t\t\t\t\t\t\t//navigate(curpath + newitem)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t\t\t\t{!selectedItem ? \n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{subcase.name}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{finished ? \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: null}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{subcase.blogpost !== null && subcase.blogpost !== undefined && subcase.blogpost.length > 0 ? \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: null}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{subcase.video !== null && subcase.video !== undefined && subcase.video.length > 0 ? \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: null}\n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t: \n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{subcase.name}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{isLoggedIn === true ? \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetEditing(true)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (subcase.description !== undefined && subcase.description !== null) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetDescription(subcase.description)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (subcase.blogpost !== undefined && subcase.blogpost !== null) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetBlogpost(subcase.blogpost)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (subcase.video !== undefined && subcase.video !== null) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetVideo(subcase.video)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (subcase.mitre !== undefined && subcase.mitre !== null) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetMitreTags(subcase.mitre)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (subcase.workflow_outline !== undefined && subcase.workflow_outline !== null) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetWorkflowOutline(subcase.workflow_outline)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetWorkflowOutline(\"\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: null}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{subcase.blogpost !== null && subcase.blogpost !== undefined && subcase.blogpost.length > 0 ? \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: null}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{subcase.video !== null && subcase.video !== undefined && subcase.video.length > 0 ? \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n \t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: null}\n \t\t\t\t\t\t\t\t\t\n \t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetExpandedItem(-1)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetExpandedIndex(-1)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetEditing(false)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetInputUsecase({})\n \t\t\t\t\t\t\t\t\t }}\n \t\t\t\t\t\t\t\t\t >\n \t\t\t\t\t\t\t\t\t \n \t\t\t\t\t\t\t\t\t \n \t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{editing ? \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetDescription(event.target.value)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n \t\t\t\t\t\t\t\t\t\t\t id=\"descriptionEditng\"\n \t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetBlogpost(event.target.value)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n \t\t\t\t\t\t\t\t\t\t\t id=\"blogpostEditing\"\n \t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetVideo(event.target.value)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n \t\t\t\t\t\t\t\t\t\t\t id=\"videoEditing\"\n \t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetWorkflowOutline(event.target.value)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n \t\t\t\t\t\t\t\t\t\t\t id=\"workflowOutline\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttabIndex=\"-1\"\n \t\t\t\t\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetDescription(\"\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetVideo(\"\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetBlogpost(\"\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetWorkflowOutline(\"\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetEditing(false)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tCancel\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetUsecaseItem(inputUsecase) \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetEditing(false)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetDescription(\"\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetVideo(\"\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetWorkflowOutline(\"\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetBlogpost(\"\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tSave\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{subcase.description}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{workflows !== undefined && workflows !== null && workflows.length > 0 ?\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tSelect relevant workflows\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: null}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{workflows !== undefined && workflows !== null && workflows.length > 0 ?\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t option.id === value.id}\n \t\t\t\t\t\t\t\t\t\t\t\t\t getOptionLabel={(option) => {\n\n \t\t\t\t\t\t\t\t\t\t\t\t\t if (\n \t\t\t\t\t\t\t\t\t\t\t\t\t option === undefined ||\n \t\t\t\t\t\t\t\t\t\t\t\t\t option === null ||\n \t\t\t\t\t\t\t\t\t\t\t\t\t option.name === undefined ||\n \t\t\t\t\t\t\t\t\t\t\t\t\t option.name === null \n \t\t\t\t\t\t\t\t\t\t\t\t\t ) {\n \t\t\t\t\t\t\t\t\t\t\t\t\t return \"No Workflow Selected\";\n \t\t\t\t\t\t\t\t\t\t\t\t\t }\n\n \t\t\t\t\t\t\t\t\t\t\t\t\t const newname = (option.name.charAt(0).toUpperCase() + option.name.substring(1)).replaceAll(\"_\", \" \");\n\n \t\t\t\t\t\t\t\t\t\t\t\t\t return newname;\n \t\t\t\t\t\t\t\t\t\t\t\t\t }}\n \t\t\t\t\t\t\t\t\t\t\t\t\t fullWidth\n \t\t\t\t\t\t\t\t\t\t\t\t\t style={{\n \t\t\t\t\t\t\t\t\t\t\t\t\t backgroundColor: theme.palette.inputColor,\n \t\t\t\t\t\t\t\t\t\t\t\t\t height: 50,\n \t\t\t\t\t\t\t\t\t\t\t\t\t borderRadius: theme.palette.borderRadius,\n \t\t\t\t\t\t\t\t\t\t\t\t\t }}\n \t\t\t\t\t\t\t\t\t\t\t\t\t onChange={(event, newValue) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"CLICK: \", newValue)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//handleWorkflowSelectionUpdate({ target: { value: newValue} })\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//setSelectedWorkflows=\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//var newvalue = []\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//for (var key in newValue) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//\tif (newValue[key].id !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//\t\tnewvalue.push(newValue[key].id)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Doing this way as you may want to remove some too\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor (var key in workflows) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (!newValue.find(data => data.id === workflows[key].id)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Check if it has the one in it\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (workflows[key][\"usecase_ids\"] !== undefined && workflows[key][\"usecase_ids\"] !== null && workflows[key][\"usecase_ids\"].includes(subcase.name)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst filtered = workflows[key][\"usecase_ids\"].filter(data => data !== subcase.name)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (filtered !== undefined && filtered !== null) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//console.log(\"Removing: \", workflows[key].name, workflows[key])\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tworkflows[key][\"usecase_ids\"] = filtered\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetWorkflow(workflows[key]) \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (workflows[key][\"usecase_ids\"] === undefined || workflows[key][\"usecase_ids\"] === null) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tworkflows[key][\"usecase_ids\"] = [subcase.name]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"Setting: \", workflows[key].name)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetWorkflow(workflows[key]) \n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else if (!workflows[key][\"usecase_ids\"].includes(subcase.name)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tworkflows[key][\"usecase_ids\"].push(subcase.name)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"Adding: \", workflows[key].name)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetWorkflow(workflows[key]) \n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetWorkflows(workflows)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"New: \", newValue)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetSelectedWorkflows(newValue)\n \t\t\t\t\t\t\t\t\t\t\t\t//setUpdate(Math.random())\n \t\t\t\t\t\t\t\t\t\t\t\t\t }}\n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trenderOption={(props, option) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//console.log(\"In options?: \", props, option)\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar newname = props.name\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (newname === undefined || newname === null) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewname = \"placeholder\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (newname.length > 2) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewname = newname.charAt(0).toUpperCase() + newname.substring(1)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
  • \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{props.image !== undefined && props.image !== null && props.image.length > 0 ? \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{newname}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: null}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tChoose {newname}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} placement=\"bottom\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcheckedIcon={}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={{ marginRight: 8 }}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tchecked={option.selected}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{newname}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
  • \n \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n \t\t\t\t\t\t\t\t\t\t\t\t\t renderInput={(params) => {\n \t\t\t\t\t\t\t\t\t\t\t\t\t return (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n \t\t\t\t\t\t\t\t\t\t\t\t\t );\n \t\t\t\t\t\t\t\t\t\t\t\t\t }}\n \t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: null}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{/*subcase.matches.length > 0 ? \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{subcase.matches.map((workflow, workflowindex) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tNo workflow selected yet.\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*/}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{subcase.extra_buttons !== undefined && subcase.extra_buttons !== null && subcase.extra_buttons.length > 0 ?\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t {}}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tExamples\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{subcase.extra_buttons.map((subdata, index) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar highlight = false\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar baseTypeInfo = subcase.type !== undefined ? subcase.type : \"communication\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (frameworkData !== undefined && frameworkData !== null) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (frameworkData[baseTypeInfo] !== undefined && frameworkData[baseTypeInfo] !== null && subdata.app !== undefined && subdata.app !== null) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (frameworkData[baseTypeInfo].name !== undefined && frameworkData[baseTypeInfo].name.toLowerCase().replaceAll(\"_\", \" \") === subdata.app.toLowerCase().replaceAll(\"_\", \" \")) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thighlight = true\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar marginTop = 6\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (subdata.name.includes(\" \") && subdata.name.length > 10) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmarginTop = 0\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{subdata.name}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: null}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t {}}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tSee other Public Workflows for {} \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{/*\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tNo workflows yet.\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*/}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\n \t\t\t\t\t\t\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t})}\n \t\t\t\n\t\t\t\t\t
    \n\t\t\t\t)\n\t\t\t})}\n\t\t
    \n\t)\n}\n\nconst TreeChart = ({keys}) => {\n const [hovered, setHovered] = useState(\"\");\n\n\treturn (\n\t\t
    {\n\t\t\tconsole.log(\"Click: \", hovered)\t\n\t\t}}>\n\t\t\t {\n\t\t\t\t\t\t\treturn info.color\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t\trect={\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tconsole.log(\"Click: \", event)\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t/>\n\t\t
    \n\t)\n //axis={}\n}\n \n\nconst RadialChart = ({keys, setSelectedCategory}) => {\n const [hovered, setHovered] = useState(\"\");\n\n\treturn (\n\t\t
    {\n\t\t\tconsole.log(\"Click: \", hovered)\t\n\t\t\tif (setSelectedCategory !== undefined) {\n\t\t\t\tsetSelectedCategory(hovered)\n\t\t\t}\n\t\t}}>\n\t\t\t}\n\t\t\t\tseries={\n\t\t\t\t\t {\n\t\t\t\t\t\t\treturn '#f86a3e'\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tanimated={false}\n\t\t\t\t\t\tid=\"workflow_series_id\"\n\t\t\t\t\t\tstyle={{cursor: \"pointer\",}}\n\t\t\t\t\t\tline={\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tconsole.log(\"INFO: \", data, color)\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttooltip={\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tif (hovered !== event.value.x) {\n\t\t\t\t\t\t\t\t\t\tsetHovered(event.value.x)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\ttooltip={\n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{data.x}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t*/\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t/>\n\t\t
    \n\t)\n //axis={}\n}\n\n// This is the start of a dashboard that can be used.\n// What data do we fill in here? Idk\nconst Dashboard = (props) => {\n const { globalUrl, isLoggedIn } = props;\n const alert = useAlert();\n const [bigChartData, setBgChartData] = useState(\"data1\");\n const [dayAmount, setDayAmount] = useState(7);\n const [firstRequest, setFirstRequest] = useState(true);\n const [stats, setStats] = useState({});\n const [changeme, setChangeme] = useState(\"\");\n const [statsRan, setStatsRan] = useState(false);\n\tconst [keys, setKeys] = useState([])\n\tconst [treeKeys, setTreeKeys] = useState([])\n\n const [selectedUsecaseCategory, setSelectedUsecaseCategory] = useState(\"\");\n const [selectedUsecases, setSelectedUsecases] = useState([]);\n const [usecases, setUsecases] = useState([]);\n const [workflows, setWorkflows] = useState([]);\n const [frameworkData, setFrameworkData] = useState(undefined);\n\n\tlet navigate = useNavigate();\n const isCloud =\n window.location.host === \"localhost:3002\" ||\n window.location.host === \"shuffler.io\";\n\n\n\tuseEffect(() => {\n\t\tif (selectedUsecaseCategory.length === 0) {\n\t\t\tsetSelectedUsecases(usecases)\n\t\t} else {\n\t\t\tconst foundUsecase = usecases.find(data => data.name === selectedUsecaseCategory)\n\t\t\tif (foundUsecase !== undefined && foundUsecase !== null) {\n\t\t\t\tsetSelectedUsecases([foundUsecase])\n\t\t\t}\n\t\t}\n\t}, [selectedUsecaseCategory])\n\n\tconst checkSelectedParams = () => {\n\t\tconst urlSearchParams = new URLSearchParams(window.location.search)\n\t\tconst params = Object.fromEntries(urlSearchParams.entries())\n\n\t\tconst curpath = typeof window === \"undefined\" || window.location === undefined ? \"\" : window.location.pathname;\n\t\tconst cursearch = typeof window === \"undefined\" || window.location === undefined ? \"\" : window.location.search;\n\n\t\tconst foundQuery = params[\"selected\"]\n\t\tif (foundQuery !== null && foundQuery !== undefined) {\n\t\t\tsetSelectedUsecaseCategory(foundQuery)\n\n const newitem = removeParam(\"selected\", cursearch);\n\t\t\tnavigate(curpath + newitem)\n\t\t}\n\n\t\tconst foundQuery2 = params[\"selected_object\"]\n\t\tif (foundQuery2 !== null && foundQuery2 !== undefined) {\n\t\t\tconsole.log(\"Got selected_object: \", foundQuery2)\n\n\t\t\tconst queryName = foundQuery2.toLowerCase().replaceAll(\"_\", \" \")\n\t\t\t// Waiting a bit for it to render\n\t\t\tsetTimeout(() => {\n\t\t\t\tconst foundItem = document.getElementById(queryName)\n\t\t\t\tif (foundItem !== undefined && foundItem !== null) { \n\t\t\t\t\tfoundItem.click()\n\t\t\t\t} else { \n\t\t\t\t\t//console.log(\"Couldn't find item with name \", queryName)\n\t\t\t\t}\n\t\t\t}, 100);\n\t\t}\n\n\t}\n\n\tuseEffect(() => {\n\t\tif (usecases.length > 0) {\n\t\t\tconsole.log(usecases)\n\t\t\tcheckSelectedParams()\n\t\t}\n\t}, [usecases])\n\n\tconst getFramework = () => {\n fetch(globalUrl + \"/api/v1/apps/frameworkConfiguration\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for framework!\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n\t\t\t\tif (responseJson.success === false) {\n\t\t\t\t\tif (responseJson.reason !== undefined) {\n\t\t\t\t\t\t//alert.error(\"Failed loading: \" + responseJson.reason)\n\t\t\t\t\t} else {\n\t\t\t\t\t\t//alert.error(\"Failed to load framework for your org.\")\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tsetFrameworkData(responseJson)\n\t\t\t\t}\n\t\t\t})\n .catch((error) => {\n alert.error(error.toString());\n })\n\t\t}\n\n const getAvailableWorkflows = () => {\n fetch(globalUrl + \"/api/v1/workflows\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n\t\t.then((response) => {\n\t\t\tif (response.status !== 200) {\n\t\t\t\tfetchUsecases()\n\t\t\t\tconsole.log(\"Status not 200 for workflows :O!: \", response.status);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treturn response.json();\n\t\t})\n\t\t.then((responseJson) => {\n\t\t\tfetchUsecases(responseJson)\n\n\t\t\tif (responseJson !== undefined) {\n\t\t\t\tsetWorkflows(responseJson);\n\t\t\t}\n\t\t})\n\t\t.catch((error) => {\n\t\t\tfetchUsecases()\n\t\t\t//alert.error(error.toString());\n\t\t});\n\t}\n\n\n document.title = \"Shuffle - usecases\";\n var dayGraphLabels = [60, 80, 65, 130, 80, 105, 90, 130, 70, 115, 60, 130];\n var dayGraphData = [60, 80, 65, 130, 80, 105, 90, 130, 70, 115, 60, 130];\n\n\tconst handleKeysetting = (categorydata) => {\n\t\tvar allCategories = []\n\t\tvar treeCategories = []\n\t\tfor (key in categorydata) {\n\t\t\tconst category = categorydata[key]\n\t\t\tallCategories.push({\"key\": category.name, \"data\": category.list.length, \"color\": category.color})\n\t\t\ttreeCategories.push({\"key\": category.name, \"data\": 100, \"color\": category.color,})\n\t\t\tfor (var subkey in category.list) {\n\t\t\t\ttreeCategories.push({\"key\": category.list[subkey].name, \"data\": 20, \"color\": category.color})\n\t\t\t}\n\t\t} \n\n\t\tsetKeys(allCategories)\n\t\tsetTreeKeys(treeCategories)\n\t}\n\n const fetchUsecases = (workflows) => {\n fetch(globalUrl + \"/api/v1/workflows/usecases\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for usecases\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n\t\t\t\t// Matching workflows with usecases\n\t\t\t\tif (responseJson.success !== false) {\n\t\t\t\t\tif (workflows !== undefined && workflows !== null && workflows.length > 0) {\n\t\t\t\t\t\tvar categorydata = responseJson\n\n\t\t\t\t\t\tvar newcategories = []\n\t\t\t\t\t\tfor (var key in categorydata) {\n\t\t\t\t\t\t\tvar category = categorydata[key]\n\t\t\t\t\t\t\tcategory.matches = []\n\n\t\t\t\t\t\t\tfor (var subcategorykey in category.list) {\n\t\t\t\t\t\t\t\tvar subcategory = category.list[subcategorykey]\n\t\t\t\t\t\t\t\tsubcategory.matches = []\n\n\t\t\t\t\t\t\t\tfor (var workflowkey in workflows) {\n\t\t\t\t\t\t\t\t\tconst workflow = workflows[workflowkey]\n\n\t\t\t\t\t\t\t\t\tif (workflow.usecase_ids !== undefined && workflow.usecase_ids !== null) {\n\t\t\t\t\t\t\t\t\t\tfor (var usecasekey in workflow.usecase_ids) {\n\t\t\t\t\t\t\t\t\t\t\tif (workflow.usecase_ids[usecasekey].toLowerCase() === subcategory.name.toLowerCase()) {\n\n\t\t\t\t\t\t\t\t\t\t\t\tcategory.matches.push({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"workflow\": workflow.id,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"category\": subcategory.name,\n\t\t\t\t\t\t\t\t\t\t\t\t})\n\n\t\t\t\t\t\t\t\t\t\t\t\tsubcategory.matches.push(workflow)\n\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (subcategory.matches.length > 0) {\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tnewcategories.push(category)\n\t\t\t\t\t\t} \n\n\t\t\t\t\t\tif (newcategories !== undefined && newcategories !== null && newcategories.length > 0) {\n\t\t\t\t\t\t\thandleKeysetting(newcategories)\n\t\t\t\t\t\t\tsetUsecases(newcategories)\n\t\t\t\t\t\t\tsetSelectedUsecases(newcategories)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\thandleKeysetting(responseJson)\n\t\t\t\t\t\t\tsetUsecases(responseJson)\n\t\t\t\t\t\t\tsetSelectedUsecases(responseJson)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\thandleKeysetting(responseJson)\n\t\t\t\t\t\tsetUsecases(responseJson)\n\t\t\t\t\t\tsetSelectedUsecases(responseJson)\n\t\t\t\t\t}\n\t\t\t\t}\n })\n .catch((error) => {\n //alert.error(\"ERROR: \" + error.toString());\n console.log(\"ERROR: \" + error.toString());\n });\n };\n\n useEffect(() => {\n \tgetAvailableWorkflows() \n\t\tgetFramework() \n\t\t//fetchUsecases()\n }, []);\n\n const fetchdata = (stats_id) => {\n fetch(globalUrl + \"/api/v1/stats/\" + stats_id, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for \" + stats_id);\n }\n\n return response.json();\n })\n .then((responseJson) => {\n stats[stats_id] = responseJson;\n setStats(stats);\n // Used to force updates\n setChangeme(stats_id);\n })\n .catch((error) => {\n //alert.error(\"ERROR: \" + error.toString());\n console.log(\"ERROR: \" + error.toString());\n });\n };\n\n let chart1_2_options = {\n maintainAspectRatio: false,\n legend: {\n display: false,\n },\n tooltips: {\n backgroundColor: \"#f5f5f5\",\n titleFontColor: \"#333\",\n bodyFontColor: \"#666\",\n bodySpacing: 4,\n xPadding: 12,\n mode: \"nearest\",\n intersect: 0,\n position: \"nearest\",\n },\n responsive: true,\n scales: {\n yAxes: [\n {\n barPercentage: 1.6,\n gridLines: {\n drawBorder: false,\n color: \"rgba(29,140,248,0.0)\",\n zeroLineColor: \"transparent\",\n },\n ticks: {\n suggestedMin: 60,\n suggestedMax: 125,\n padding: 20,\n fontColor: \"#9a9a9a\",\n },\n },\n ],\n xAxes: [\n {\n barPercentage: 1.6,\n gridLines: {\n drawBorder: false,\n color: \"rgba(29,140,248,0.1)\",\n zeroLineColor: \"transparent\",\n },\n ticks: {\n padding: 20,\n fontColor: \"#9a9a9a\",\n },\n },\n ],\n },\n };\n\n const dayGraph = {\n data: (canvas) => {\n let ctx = canvas.getContext(\"2d\");\n\n let gradientStroke = ctx.createLinearGradient(0, 230, 0, 50);\n\n gradientStroke.addColorStop(1, \"rgba(29,140,248,0.2)\");\n gradientStroke.addColorStop(0.4, \"rgba(29,140,248,0.0)\");\n gradientStroke.addColorStop(0, \"rgba(29,140,248,0)\"); //blue colors\n\n return {\n labels: dayGraphLabels,\n datasets: [\n {\n label: \"My First dataset\",\n fill: true,\n backgroundColor: gradientStroke,\n borderColor: \"#1f8ef1\",\n borderWidth: 2,\n borderDash: [],\n borderDashOffset: 0.0,\n pointBackgroundColor: \"#1f8ef1\",\n pointBorderColor: \"rgba(255,255,255,0)\",\n pointHoverBackgroundColor: \"#1f8ef1\",\n pointBorderWidth: 20,\n pointHoverRadius: 4,\n pointHoverBorderWidth: 15,\n pointRadius: 4,\n data: dayGraphData,\n },\n ],\n };\n },\n options: chart1_2_options,\n };\n\n // All these are currently tracked.\n const variables = [\n \"backend_executions\",\n \"workflow_executions\",\n \"workflow_executions_aborted\",\n \"workflow_executions_success\",\n \"total_apps_created\",\n \"total_apps_loaded\",\n \"openapi_apps_created\",\n \"total_apps_deleted\",\n \"total_webhooks_ran\",\n \"total_workflows\",\n \"total_workflow_actions\",\n \"total_workflow_triggers\",\n ];\n\n const runUpdate = () => {\n for (var key in variables) {\n fetchdata(variables[key]);\n }\n };\n\n // Refresh every 60 seconds\n const autoUpdate = 60000;\n const { start, stop } = useInterval({\n duration: autoUpdate,\n startImmediate: false,\n callback: () => {\n runUpdate();\n },\n });\n\n if (firstRequest) {\n setFirstRequest(false);\n //start();\n //runUpdate();\n } else if (!statsRan) {\n // FIXME: Run this under runUpdate schedule?\n // 1. Fix labels in dayGraphy.data\n // 2. Add data to the daygraph\n\n // Every time there's an update :)\n\n // This should probably be done in the backend.. bleh\n if (\n stats[\"workflow_executions\"] !== undefined &&\n stats[\"workflow_executions\"] !== null &&\n stats[\"workflow_executions\"].data !== undefined\n ) {\n setStatsRan(true);\n //console.log(\"NEW DATA?: \", stats)\n console.log(\"SET WORKFLOW: \", stats[\"workflow_executions\"]);\n //var curday = startDate.getDate()\n\n // Index = what day are we on\n\n // 0 = today\n var newDayGraphLabels = [];\n var newDayGraphData = [];\n for (var i = dayAmount; i > 0; i--) {\n var enddate = new Date();\n enddate.setDate(-i);\n enddate.setHours(23, 59, 59, 999);\n\n var startdate = new Date();\n startdate.setDate(-i);\n startdate.setHours(0, 0, 0, 0);\n\n var endtime = enddate.getTime() / 1000;\n var starttime = startdate.getTime() / 1000;\n\n console.log(\n \"START: \",\n starttime,\n \"END: \",\n endtime,\n \"Data: \",\n stats[\"workflow_executions\"]\n );\n for (var key in stats[\"workflow_executions\"].data) {\n const item = stats[\"workflow_executions\"][\"data\"][key];\n console.log(\"ITEM: \", item.timestamp, endtime);\n console.log(endtime - starttime);\n if (\n endtime - starttime > endtime - item.timestamp &&\n endtime.timestamp >= 0\n ) {\n console.log(\"HIT? \");\n }\n console.log(item.timestamp - endtime);\n //console.log(item.timestamp-endtime)\n break;\n if (item.timestamp > endtime && item.timestamp < starttime) {\n if (newDayGraphData[i - 1] === undefined) {\n newDayGraphData[i - 1] = 1;\n } else {\n newDayGraphData[i - 1] += 1;\n }\n\n //break\n }\n }\n\n newDayGraphLabels.push(i);\n }\n\n console.log(newDayGraphLabels);\n console.log(newDayGraphData);\n }\n }\n\n const newdata =\n Object.getOwnPropertyNames(stats).length > 0 ? (\n
    \n Autoupdate every {autoUpdate / 1000} seconds\n {variables.map((data) => {\n if (stats[data] === undefined || stats[data] === null) {\n return null;\n }\n\n if (stats[data].total === undefined) {\n return null;\n }\n\n return (\n
    \n {data}: {stats[data].total}\n
    \n );\n })}\n
    \n ) : null;\n\n const data = (\n
    \n\t\t\t
    \n\t\t\t\t{keys.length > 0 ?\n\t\t\t\t\t\n\t\t\t\t: null}\n\t\t\t
    \n\n\t\t\t{usecases !== null && usecases !== undefined && usecases.length > 0 ? \n\t\t\t\t
    \n\t\t\t\t\t{usecases.map((usecase, index) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tconsole.log(\"Clicked: \", usecase.name)\n\t\t\t\t\t\t\t\t\tif (selectedUsecaseCategory === usecase.name) {\n\t\t\t\t\t\t\t\t\t\tsetSelectedUsecaseCategory(\"\")\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tsetSelectedUsecaseCategory(usecase.name)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t//addFilter(usecase.name.slice(3,usecase.name.length))\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)\n\t\t\t\t\t})}\n\t\t\t\t
    \n\t\t\t: null}\n\n\t\t\t\n\n\t\t\t{treeKeys.length > 0 ? \n\t\t\t\t\n\t\t\t: null}\n\n {newdata}\n
    \n );\n\n const dataWrapper = (\n
    {data}
    \n );\n\n return dataWrapper;\n};\n\nexport default Dashboard;\n","import React, { useState, useEffect } from \"react\";\nimport { useInterval } from \"react-powerhooks\";\nimport { makeStyles, useTheme } from \"@material-ui/core/styles\";\n// nodejs library that concatenates classes\nimport classNames from \"classnames\";\nimport theme from '../theme.jsx';\nimport { useNavigate, Link, useParams } from \"react-router-dom\";\n\n// react plugin used to create charts\n//import { Line, Bar } from \"react-chartjs-2\";\nimport { useAlert } from \"react-alert\";\nimport Autocomplete from \"@material-ui/lab/Autocomplete\";\nimport Draggable from \"react-draggable\";\n\nimport {\n\tTooltip,\n\tTextField,\n\tIconButton,\n\tButton,\n\tTypography,\n\tGrid,\n\tPaper,\n\tChip,\n\tCheckbox,\n} from \"@material-ui/core\";\n\nimport {\n Close as CloseIcon,\n\tDoneAll as DoneAllIcon,\n\tDescription as DescriptionIcon,\n\tPlayArrow as PlayArrowIcon,\n\tEdit as EditIcon,\n\tCheckBox as CheckBoxIcon,\n\tCheckBoxOutlineBlank as CheckBoxOutlineBlankIcon,\n\tOpenInNew as OpenInNewIcon,\n} from \"@material-ui/icons\";\n\nimport WorkflowPaper from \"../components/WorkflowPaper.jsx\"\nimport { removeParam } from \"../views/AngularWorkflow.jsx\"\n\n// core components\n//import {\n// chartExample1,\n// chartExample2,\n// chartExample3,\n// chartExample4,\n//} from \"../charts.js\";\n\nimport { \n\tRadialBarChart, \n\tRadialAreaChart, \n\tRadialAxis,\n\tStackedBarSeries,\n\tTooltipArea,\n\tChartTooltip,\n\tTooltipTemplate,\n\tRadialAreaSeries,\n\tRadialPointSeries,\n\tRadialArea,\n\tRadialLine,\n\tTreeMap,\n\tTreeMapSeries,\n\tTreeMapLabel,\n\tTreeMapRect,\n\tLine,\n\tLineChart,\n\tLineSeries,\n\tLinearYAxis,\n\tLinearXAxis,\n\tLinearYAxisTickSeries,\n\tLinearXAxisTickSeries,\n\tAreaChart,\n\tAreaSeries,\n\tPointSeries,\n} from 'reaviz';\n\nconst useStyles = makeStyles({\n notchedOutline: {\n borderColor: \"#f85a3e !important\",\n },\n root: {\n \"& .MuiAutocomplete-listbox\": {\n border: \"2px solid #f85a3e\",\n color: \"white\",\n fontSize: 18,\n \"& li:nth-child(even)\": {\n backgroundColor: \"#CCC\",\n },\n \"& li:nth-child(odd)\": {\n backgroundColor: \"#FFF\",\n },\n },\n },\n inputRoot: {\n color: \"white\",\n // This matches the specificity of the default styles at https://github.com/mui-org/material-ui/blob/v4.11.3/packages/material-ui-lab/src/Autocomplete/Autocomplete.js#L90\n \"&:hover .MuiOutlinedInput-notchedOutline\": {\n borderColor: \"#f86a3e\",\n },\n },\n});\n\nconst inputdata = [\n {\n \"key\": \"Threat Intel\",\n \"value\": 18,\n \"x\": \"2020-02-17T08:00:00.000Z\",\n \"x0\": \"2020-02-17T08:00:00.000Z\",\n \"x1\": \"2020-02-17T08:00:00.000Z\",\n \"y\": 18,\n \"y0\": 0,\n \"y1\": 18\n },\n {\n \"key\": \"Threat Intel\",\n \"value\": 3,\n \"x\": \"2020-02-21T08:00:00.000Z\",\n \"x0\": \"2020-02-21T08:00:00.000Z\",\n \"x1\": \"2020-02-21T08:00:00.000Z\",\n \"y\": 3,\n \"y0\": 0,\n \"y1\": 3\n },\n {\n \"key\": \"Threat Intel\",\n \"value\": 14,\n \"x\": \"2020-02-26T08:00:00.000Z\",\n \"x0\": \"2020-02-26T08:00:00.000Z\",\n \"x1\": \"2020-02-26T08:00:00.000Z\",\n \"y\": 14,\n \"y0\": 0,\n \"y1\": 14\n },\n {\n \"key\": \"Threat Intel\",\n \"value\": 18,\n \"x\": \"2020-02-29T08:00:00.000Z\",\n \"x0\": \"2020-02-29T08:00:00.000Z\",\n \"x1\": \"\",\n \"y\": 18,\n \"y0\": 0,\n \"y1\": 18\n }\n]\n\nconst LineChartWrapper = ({keys, height, width}) => {\n const [hovered, setHovered] = useState(\"\");\n\n\t//console.log(\"Date: \", new Date(\"2019-11-14T08:00:00.000Z\"))\n\tconsole.log(\"Keys: \", keys)\n\tvar inputdata = keys.data\n\n\t/*\n\tconst inputdata = [{\n\t\t\"key\": \"Intel\",\n\t\t\"data\": [\n\t\t\t\t{ key: new Date('11/22/2019'), data: 3, metadata: {color: \"orange\", \"name\": \"Intel\"}},\n\t\t\t\t{ key: new Date('11/24/2019'), data: 8, metadata: {color: \"orange\", \"name\": \"Intel\"}},\n\t\t\t\t{ key: new Date('11/29/2019'), data: 2, metadata: {color: \"orange\", \"name\": \"Intel\"}},\n\t\t]},\n\t\t{\n\t\t\t\"key\": \"Popper\",\n\t\t\t\"data\": [\n\t\t\t\t{ key: new Date('11/24/2019'), data: 9, },\n\t\t\t\t{ key: new Date('11/29/2019'), data: 3, },\n\t\t\t]\n\t\t}\n\t]\n\t*/\n\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\t{keys.title}\n\t\t\t\n\t\t\t\n\t\t\t\t\t\t} \n\t\t\t\t\t\tcolorScheme={(colorInput) => {\n\t\t\t\t\t\t\tvar color = \"cybertron\"\n\t\t\t\t\t\t\tif (colorInput !== undefined && colorInput.length > 0) {\n\t\t\t\t\t\t\t\tcolor = colorInput[0].metadata !== undefined && colorInput[0].metadata.color !== undefined ? colorInput[0].metadata.color : color\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn color\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ttooltip={\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tif (hovered !== event.value.x) {\n\t\t\t\t\t\t\t\t\t\t//setHovered(event.value.x)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\ttooltip={\n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"DATA: \", data)\n\t\t\t\t\t\t\t\t\t\t\tconst name = data.metadata !== undefined && data.metadata.name !== undefined ? data.metadata.name : \"No\"\n\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{name}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t*/\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t/>\n\t\t
    \n\t)\n}\n\nconst RadialChart = ({keys, setSelectedCategory}) => {\n const [hovered, setHovered] = useState(\"\");\n\n\treturn (\n\t\t
    {\n\t\t\tconsole.log(\"Click: \", hovered)\t\n\t\t\tif (setSelectedCategory !== undefined) {\n\t\t\t\tsetSelectedCategory(hovered)\n\t\t\t}\n\t\t}}>\n\t\t\t}\n\t\t\t\tseries={\n\t\t\t\t\t {\n\t\t\t\t\t\t\treturn '#f86a3e'\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tanimated={false}\n\t\t\t\t\t\tid=\"workflow_series_id\"\n\t\t\t\t\t\tstyle={{cursor: \"pointer\",}}\n\t\t\t\t\t\tline={\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tconsole.log(\"INFO: \", data, color)\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttooltip={\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tif (hovered !== event.value.x) {\n\t\t\t\t\t\t\t\t\t\tsetHovered(event.value.x)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\ttooltip={\n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{data.x}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t*/\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t/>\n\t\t
    \n\t)\n //axis={}\n}\n\n// This is the start of a dashboard that can be used.\n// What data do we fill in here? Idk\nconst Dashboard = (props) => {\n const { globalUrl, isLoggedIn } = props;\n const alert = useAlert();\n const [bigChartData, setBgChartData] = useState(\"data1\");\n const [dayAmount, setDayAmount] = useState(7);\n const [firstRequest, setFirstRequest] = useState(true);\n const [stats, setStats] = useState({});\n const [changeme, setChangeme] = useState(\"\");\n const [statsRan, setStatsRan] = useState(false);\n\tconst [keys, setKeys] = useState([])\n\tconst [treeKeys, setTreeKeys] = useState([])\n\n const [selectedUsecaseCategory, setSelectedUsecaseCategory] = useState(\"\");\n const [selectedUsecases, setSelectedUsecases] = useState([]);\n const [usecases, setUsecases] = useState([]);\n const [workflows, setWorkflows] = useState([]);\n const [frameworkData, setFrameworkData] = useState(undefined);\n\n const [widgetData, setWidgetData] = useState([]);\n\n\tlet navigate = useNavigate();\n const isCloud =\n window.location.host === \"localhost:3002\" ||\n window.location.host === \"shuffler.io\";\n\n\n\tuseEffect(() => {\n\t\tif (selectedUsecaseCategory.length === 0) {\n\t\t\tsetSelectedUsecases(usecases)\n\t\t} else {\n\t\t\tconst foundUsecase = usecases.find(data => data.name === selectedUsecaseCategory)\n\t\t\tif (foundUsecase !== undefined && foundUsecase !== null) {\n\t\t\t\tsetSelectedUsecases([foundUsecase])\n\t\t\t}\n\t\t}\n\t}, [selectedUsecaseCategory])\n\n\tconst checkSelectedParams = () => {\n\t\tconst urlSearchParams = new URLSearchParams(window.location.search)\n\t\tconst params = Object.fromEntries(urlSearchParams.entries())\n\n\t\tconst curpath = typeof window === \"undefined\" || window.location === undefined ? \"\" : window.location.pathname;\n\t\tconst cursearch = typeof window === \"undefined\" || window.location === undefined ? \"\" : window.location.search;\n\n\t\tconst foundQuery = params[\"selected\"]\n\t\tif (foundQuery !== null && foundQuery !== undefined) {\n\t\t\tsetSelectedUsecaseCategory(foundQuery)\n\n const newitem = removeParam(\"selected\", cursearch);\n\t\t\tnavigate(curpath + newitem)\n\t\t}\n\n\t\tconst foundQuery2 = params[\"selected_object\"]\n\t\tif (foundQuery2 !== null && foundQuery2 !== undefined) {\n\t\t\tconsole.log(\"Got selected_object: \", foundQuery2)\n\n\t\t\tconst queryName = foundQuery2.toLowerCase().replaceAll(\"_\", \" \")\n\t\t\t// Waiting a bit for it to render\n\t\t\tsetTimeout(() => {\n\t\t\t\tconst foundItem = document.getElementById(queryName)\n\t\t\t\tif (foundItem !== undefined && foundItem !== null) { \n\t\t\t\t\tfoundItem.click()\n\t\t\t\t} else { \n\t\t\t\t\t//console.log(\"Couldn't find item with name \", queryName)\n\t\t\t\t}\n\t\t\t}, 100);\n\t\t}\n\n\t}\n\n\tuseEffect(() => {\n\t\tif (usecases.length > 0) {\n\t\t\tconsole.log(usecases)\n\t\t\tcheckSelectedParams()\n\t\t}\n\t}, [usecases])\n\n\tconst getWidget = (dashboard, widget) => {\n fetch(`${globalUrl}/api/v1/dashboards/${dashboard}/widgets/${widget}`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for framework!\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n\t\t\t\tconsole.log(\"Resp: \", responseJson)\n\t\t\t\tif (responseJson.success === false) {\n\t\t\t\t\tif (responseJson.reason !== undefined) {\n\t\t\t\t\t\t//alert.error(\"Failed loading: \" + responseJson.reason)\n\t\t\t\t\t} else {\n\t\t\t\t\t\t//alert.error(\"Failed to load framework for your org.\")\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvar tmpdata = responseJson\n\t\t\t\t\tfor (var key in tmpdata.data) {\n\t\t\t\t\t\tfor (var subkey in tmpdata.data[key].data) {\n\t\t\t\t\t\t\ttmpdata.data[key].data[subkey].key = new Date(tmpdata.data[key].data[subkey].key)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst foundWidget = widgetData.findIndex(data => data.title === widget)\n\t\t\t\t\tconsole.log(\"Found: \", foundWidget)\n\t\t\t\t\tif (foundWidget !== undefined && foundWidget !== null && foundWidget >= 0) {\n\t\t\t\t\t\twidgetData[foundWidget] = tmpdata\n\t\t\t\t\t} else { \n\t\t\t\t\t\twidgetData.push(tmpdata)\n\t\t\t\t\t}\n\n\t\t\t\t\tconsole.log(\"Data: \", widgetData)\n\t\t\t\t\tsetWidgetData(widgetData)\n\t\t\t\t}\n\t\t\t})\n .catch((error) => {\n //alert.error(error.toString());\n })\n\t\t}\n\n document.title = \"Shuffle - Dashboard\";\n var dayGraphLabels = [60, 80, 65, 130, 80, 105, 90, 130, 70, 115, 60, 130];\n var dayGraphData = [60, 80, 65, 130, 80, 105, 90, 130, 70, 115, 60, 130];\n\n\tconst handleKeysetting = (categorydata) => {\n\t\tvar allCategories = []\n\t\tvar treeCategories = []\n\t\tfor (key in categorydata) {\n\t\t\tconst category = categorydata[key]\n\t\t\tallCategories.push({\"key\": category.name, \"data\": category.list.length, \"color\": category.color})\n\t\t\ttreeCategories.push({\"key\": category.name, \"data\": 100, \"color\": category.color,})\n\t\t\tfor (var subkey in category.list) {\n\t\t\t\ttreeCategories.push({\"key\": category.list[subkey].name, \"data\": 20, \"color\": category.color})\n\t\t\t}\n\t\t} \n\n\t\tsetKeys(allCategories)\n\t\tsetTreeKeys(treeCategories)\n\t}\n\n useEffect(() => {\n\t\tgetWidget(\"main\", \"Overall\") \n\t\tgetWidget(\"main\", \"Overall2\") \n }, []);\n\n const fetchdata = (stats_id) => {\n fetch(globalUrl + \"/api/v1/stats/\" + stats_id, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for \" + stats_id);\n }\n\n return response.json();\n })\n .then((responseJson) => {\n stats[stats_id] = responseJson;\n setStats(stats);\n // Used to force updates\n setChangeme(stats_id);\n })\n .catch((error) => {\n //alert.error(\"ERROR: \" + error.toString());\n console.log(\"ERROR: \" + error.toString());\n });\n };\n\n let chart1_2_options = {\n maintainAspectRatio: false,\n legend: {\n display: false,\n },\n tooltips: {\n backgroundColor: \"#f5f5f5\",\n titleFontColor: \"#333\",\n bodyFontColor: \"#666\",\n bodySpacing: 4,\n xPadding: 12,\n mode: \"nearest\",\n intersect: 0,\n position: \"nearest\",\n },\n responsive: true,\n scales: {\n yAxes: [\n {\n barPercentage: 1.6,\n gridLines: {\n drawBorder: false,\n color: \"rgba(29,140,248,0.0)\",\n zeroLineColor: \"transparent\",\n },\n ticks: {\n suggestedMin: 60,\n suggestedMax: 125,\n padding: 20,\n fontColor: \"#9a9a9a\",\n },\n },\n ],\n xAxes: [\n {\n barPercentage: 1.6,\n gridLines: {\n drawBorder: false,\n color: \"rgba(29,140,248,0.1)\",\n zeroLineColor: \"transparent\",\n },\n ticks: {\n padding: 20,\n fontColor: \"#9a9a9a\",\n },\n },\n ],\n },\n };\n\n const dayGraph = {\n data: (canvas) => {\n let ctx = canvas.getContext(\"2d\");\n\n let gradientStroke = ctx.createLinearGradient(0, 230, 0, 50);\n\n gradientStroke.addColorStop(1, \"rgba(29,140,248,0.2)\");\n gradientStroke.addColorStop(0.4, \"rgba(29,140,248,0.0)\");\n gradientStroke.addColorStop(0, \"rgba(29,140,248,0)\"); //blue colors\n\n return {\n labels: dayGraphLabels,\n datasets: [\n {\n label: \"My First dataset\",\n fill: true,\n backgroundColor: gradientStroke,\n borderColor: \"#1f8ef1\",\n borderWidth: 2,\n borderDash: [],\n borderDashOffset: 0.0,\n pointBackgroundColor: \"#1f8ef1\",\n pointBorderColor: \"rgba(255,255,255,0)\",\n pointHoverBackgroundColor: \"#1f8ef1\",\n pointBorderWidth: 20,\n pointHoverRadius: 4,\n pointHoverBorderWidth: 15,\n pointRadius: 4,\n data: dayGraphData,\n },\n ],\n };\n },\n options: chart1_2_options,\n };\n\n // All these are currently tracked.\n const variables = [\n \"backend_executions\",\n \"workflow_executions\",\n \"workflow_executions_aborted\",\n \"workflow_executions_success\",\n \"total_apps_created\",\n \"total_apps_loaded\",\n \"openapi_apps_created\",\n \"total_apps_deleted\",\n \"total_webhooks_ran\",\n \"total_workflows\",\n \"total_workflow_actions\",\n \"total_workflow_triggers\",\n ];\n\n const runUpdate = () => {\n for (var key in variables) {\n fetchdata(variables[key]);\n }\n };\n\n // Refresh every 60 seconds\n const autoUpdate = 60000;\n const { start, stop } = useInterval({\n duration: autoUpdate,\n startImmediate: false,\n callback: () => {\n runUpdate();\n },\n });\n\n if (firstRequest) {\n setFirstRequest(false);\n //start();\n //runUpdate();\n } else if (!statsRan) {\n // FIXME: Run this under runUpdate schedule?\n // 1. Fix labels in dayGraphy.data\n // 2. Add data to the daygraph\n\n // Every time there's an update :)\n\n // This should probably be done in the backend.. bleh\n if (\n stats[\"workflow_executions\"] !== undefined &&\n stats[\"workflow_executions\"] !== null &&\n stats[\"workflow_executions\"].data !== undefined\n ) {\n setStatsRan(true);\n //console.log(\"NEW DATA?: \", stats)\n console.log(\"SET WORKFLOW: \", stats[\"workflow_executions\"]);\n //var curday = startDate.getDate()\n\n // Index = what day are we on\n\n // 0 = today\n var newDayGraphLabels = [];\n var newDayGraphData = [];\n for (var i = dayAmount; i > 0; i--) {\n var enddate = new Date();\n enddate.setDate(-i);\n enddate.setHours(23, 59, 59, 999);\n\n var startdate = new Date();\n startdate.setDate(-i);\n startdate.setHours(0, 0, 0, 0);\n\n var endtime = enddate.getTime() / 1000;\n var starttime = startdate.getTime() / 1000;\n\n console.log(\n \"START: \",\n starttime,\n \"END: \",\n endtime,\n \"Data: \",\n stats[\"workflow_executions\"]\n );\n for (var key in stats[\"workflow_executions\"].data) {\n const item = stats[\"workflow_executions\"][\"data\"][key];\n console.log(\"ITEM: \", item.timestamp, endtime);\n console.log(endtime - starttime);\n if (\n endtime - starttime > endtime - item.timestamp &&\n endtime.timestamp >= 0\n ) {\n console.log(\"HIT? \");\n }\n console.log(item.timestamp - endtime);\n //console.log(item.timestamp-endtime)\n break;\n if (item.timestamp > endtime && item.timestamp < starttime) {\n if (newDayGraphData[i - 1] === undefined) {\n newDayGraphData[i - 1] = 1;\n } else {\n newDayGraphData[i - 1] += 1;\n }\n\n //break\n }\n }\n\n newDayGraphLabels.push(i);\n }\n\n console.log(newDayGraphLabels);\n console.log(newDayGraphData);\n }\n }\n\n const newdata =\n Object.getOwnPropertyNames(stats).length > 0 ? (\n
    \n Autoupdate every {autoUpdate / 1000} seconds\n {variables.map((data) => {\n if (stats[data] === undefined || stats[data] === null) {\n return null;\n }\n\n if (stats[data].total === undefined) {\n return null;\n }\n\n return (\n
    \n {data}: {stats[data].total}\n
    \n );\n })}\n
    \n ) : null;\n\n const data = (\n
    \n\t\t\t
    \n\t\t\t\t{keys.length > 0 ?\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t: null}\n\t\t\t
    \n\n\t\t\t{widgetData === undefined || widgetData === null || widgetData === [] || widgetData.length === 0 ? null : \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t}\n
    \n );\n\n const dataWrapper = (\n
    {data}
    \n );\n\n return dataWrapper;\n};\n\nexport default Dashboard;\n","/* eslint-disable react/no-multi-comp */\nimport React, { useState } from \"react\";\nimport { makeStyles } from \"@material-ui/styles\";\n\nimport {\n CircularProgress,\n TextField,\n Button,\n Paper,\n Typography,\n} from \"@material-ui/core\";\n\nconst bodyDivStyle = {\n margin: \"auto\",\n marginTop: \"100px\",\n width: \"500px\",\n};\n\nconst surfaceColor = \"#27292D\";\nconst inputColor = \"#383B40\";\n\nconst boxStyle = {\n paddingLeft: \"30px\",\n paddingRight: \"30px\",\n paddingBottom: \"30px\",\n paddingTop: \"30px\",\n backgroundColor: surfaceColor,\n};\n\nconst useStyles = makeStyles({\n notchedOutline: {\n borderColor: \"#f85a3e !important\",\n },\n});\n\nconst AdminAccount = (props) => {\n const { globalUrl, isLoaded, isLoggedIn } = props;\n\n const [username, setUsername] = useState(\"\");\n const [password, setPassword] = useState(\"\");\n const [firstRequest, setFirstRequest] = useState(true);\n const [loginLoading, setLoginLoading] = useState(false);\n\n // Used to swap from login to register. True = login, false = register\n const register = true;\n\n const classes = useStyles();\n // Error messages etc\n const [loginInfo, setLoginInfo] = useState(\"\");\n\n const handleValidateForm = () => {\n return username.length > 1 && password.length > 1;\n };\n\n if (isLoggedIn === true) {\n window.location.pathname = \"/workflows\";\n }\n\n const checkAdmin = () => {\n const url = globalUrl + \"/api/v1/checkusers\";\n fetch(url, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n })\n .then((response) =>\n response.json().then((responseJson) => {\n if (responseJson[\"success\"] === false) {\n setLoginInfo(responseJson[\"reason\"]);\n } else {\n if (responseJson.reason === \"redirect\") {\n window.location.pathname = \"/login\";\n }\n }\n })\n )\n .catch((error) => {\n setLoginInfo(\"Error in userdata: \", error);\n });\n };\n\n if (firstRequest) {\n setFirstRequest(false);\n checkAdmin();\n }\n\n const onSubmit = (e) => {\n setLoginLoading(true);\n e.preventDefault();\n // FIXME - add some check here ROFL\n\n // Just use this one?\n var data = { username: username, password: password };\n var baseurl = globalUrl;\n const url = baseurl + \"/api/v1/register\";\n fetch(url, {\n method: \"POST\",\n body: JSON.stringify(data),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n })\n .then((response) =>\n response.json().then((responseJson) => {\n setLoginLoading(false);\n if (responseJson[\"success\"] === false) {\n setLoginInfo(responseJson[\"reason\"]);\n } else {\n setLoginInfo(\"Successful register :)\");\n window.location.pathname = \"/login\";\n }\n })\n )\n .catch((error) => {\n setLoginLoading(false);\n setLoginInfo(\"Error in userdata: \", error);\n });\n };\n\n const onChangeUser = (e) => {\n setUsername(e.target.value);\n };\n\n const onChangePass = (e) => {\n setPassword(e.target.value);\n };\n\n //const onClickRegister = () => {\n //\tif (props.location.pathname === \"/login\") {\n //\t\twindow.location.pathname = \"/register\"\n //\t} else {\n //\t\twindow.location.pathname = \"/login\"\n //\t}\n\n //\tsetLoginCheck(!register)\n //}\n\n //var loginChange = register ? (

    Want to register? Click here.

    ) : (

    Go back to login? Click here.

    );\n var formtitle = register ?
    Login
    :
    Register
    ;\n\n formtitle = \"Create administrator account\";\n\n const basedata = (\n
    \n \n \n

    {formtitle}

    \n Username\n
    \n \n
    \n Password\n
    \n \n
    \n
    \n \n {loginLoading ? (\n \n ) : (\n \"SUBMIT\"\n )}\n \n
    \n
    {loginInfo}
    \n \n
    \n
    \n );\n\n const loadedCheck = isLoaded ?
    {basedata}
    :
    ;\n\n return
    {loadedCheck}
    ;\n};\n\nexport default AdminAccount;\n","import React, { useState, useEffect } from \"react\";\r\nimport theme from \"../theme.jsx\";\r\nimport {\r\n Tooltip,\r\n Divider,\r\n TextField,\r\n Button,\r\n Tabs,\r\n Tab,\r\n Grid,\r\n List,\r\n ListItem,\r\n ListItemText,\r\n IconButton,\r\n Dialog,\r\n DialogTitle,\r\n DialogActions,\r\n} from \"@material-ui/core\";\r\nimport { useAlert } from \"react-alert\";\r\n\r\nimport {\r\n Edit as EditIcon,\r\n FileCopy as FileCopyIcon,\r\n SelectAll as SelectAllIcon,\r\n OpenInNew as OpenInNewIcon,\r\n CloudDownload as CloudDownloadIcon,\r\n Description as DescriptionIcon,\r\n Polymer as PolymerIcon,\r\n CheckCircle as CheckCircleIcon,\r\n Close as CloseIcon,\r\n Apps as AppsIcon,\r\n Image as ImageIcon,\r\n Delete as DeleteIcon,\r\n Cached as CachedIcon,\r\n AccessibilityNew as AccessibilityNewIcon,\r\n Lock as LockIcon,\r\n Eco as EcoIcon,\r\n Schedule as ScheduleIcon,\r\n Cloud as CloudIcon,\r\n Business as BusinessIcon,\r\n Visibility as VisibilityIcon,\r\n VisibilityOff as VisibilityOffIcon,\r\n} from \"@material-ui/icons\";\r\n\r\nconst CacheView = (props) => {\r\n const { globalUrl, userdata, serverside, orgId } = props;\r\n const [orgCache, setOrgCache] = React.useState(\"\");\r\n const [listCache, setListCache] = React.useState([]);\r\n const [addCache, setAddCache] = React.useState(\"\");\r\n const [modalOpen, setModalOpen] = React.useState(false);\r\n const [key, setKey]= React.useState(\"\"); \r\n const [value, setValue]= React.useState(\"\"); \r\n const [cacheInput, setCacheInput]= React.useState(\"\");\r\n const [cacheCursor, setCacheCursor]= React.useState(\"\");\r\n\r\n const alert = useAlert();\r\n useEffect(() => {\r\n listOrgCache(orgId);\r\n console.log(\"orgid\", orgId);\r\n }, []);\r\n\r\n const listOrgCache = (orgId) => {\r\n fetch(globalUrl + `/api/v1/orgs/${orgId}/list_cache`, {\r\n method: \"GET\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n Accept: \"application/json\",\r\n },\r\n credentials: \"include\",\r\n })\r\n\t\t\t\t.then((response) => {\r\n\t\t\t\t\t\tif (response.status !== 200) {\r\n\t\t\t\t\t\t\t\tconsole.log(\"Status not 200 for apps :O!\");\r\n\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn response.json();\r\n\t\t\t\t})\r\n\t\t\t\t.then((responseJson) => {\r\n\t\t\t\t\tif (responseJson.success === true) {\r\n\t\t\t\t\t\tsetListCache(responseJson.keys);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (responseJson.cursor !== undefined && responseJson.cursor !== null && responseJson.cursor !== \"\") {\r\n\t\t\t\t\t\tsetCacheCursor(responseJson.cursor);\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.catch((error) => {\r\n\t\t\t\t\t\talert.error(error.toString());\r\n\t\t\t\t});\r\n };\r\n\r\n // const getCacheList = (orgId) => {\r\n // fetch(`${globalUrl}/api/v1/orgs/${orgId}/get_cache`, {\r\n // method: \"GET\",\r\n // headers: {\r\n // \"Content-Type\": \"application/json\",\r\n // Accept: \"application/json\",\r\n // },\r\n // credentials: \"include\",\r\n // })\r\n // .then((response) => {\r\n // if (response.status !== 200) {\r\n // console.log(\"Status not 200 for WORKFLOW EXECUTION :O!\");\r\n // }\r\n \r\n \r\n // return response.json();\r\n // })\r\n // .then((responseJson) => {\r\n // if (responseJson.success !== false) {\r\n // console.log(\"Found cache: \", responseJson)\r\n // setListCache(responseJson)\r\n // } else {\r\n // console.log(\"Couldn't find the creator profile (rerun?): \", responseJson)\r\n // // If the current user is any of the Shuffle Creators \r\n // // AND the workflow doesn't have an owner: allow editing.\r\n // // else: Allow suggestions?\r\n // //console.log(\"User: \", userdata)\r\n // //if (rerun !== true) {\r\n // //\tgetUserProfile(userdata.id, true)\r\n // //}\r\n // }\r\n // })\r\n // .catch((error) => {\r\n // console.log(\"Get userprofile error: \", error);\r\n // })\r\n // }\r\n \r\n\r\n const deleteCache = (orgId, key) => {\r\n alert.info(\"Attempting to delete Cache\");\r\n fetch(globalUrl + `/api/v1/orgs/${orgId}/cache/${key}`, {\r\n method: \"DELETE\",\r\n headers: {\r\n Accept: \"application/json\",\r\n },\r\n credentials: \"include\",\r\n })\r\n .then((response) => {\r\n if (response.status === 200) {\r\n alert.success(\"Successfully deleted Cache\");\r\n setTimeout(() => {\r\n listOrgCache(orgId);\r\n }, 1000);\r\n } else {\r\n alert.error(\"Failed deleting Cache. Does it still exist?\");\r\n }\r\n })\r\n .catch((error) => {\r\n alert.error(error.toString());\r\n });\r\n };\r\n\r\n const addOrgCache = (orgId) => {\r\n const cache={key:key,value:value}; \r\n\t setCacheInput([cache]);\r\n console.log(\"cache input:\",cacheInput)\r\n \r\n fetch(globalUrl + `/api/v1/orgs/${orgId}/set_cache`, {\r\n\r\n method: \"POST\",\r\n body: JSON.stringify(cache),\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n Accept: \"application/json\",\r\n },\r\n credentials: \"include\",\r\n })\r\n .then((response) => {\r\n if (response.status !== 200) {\r\n console.log(\"Status not 200 for apps :O!\");\r\n return;\r\n }\r\n\r\n return response.json();\r\n })\r\n .then((responseJson) => {\r\n setAddCache(responseJson);\r\n alert.success(\"New Cache Added Successfully!\");\r\n listOrgCache(orgId);\r\n setModalOpen(false);\r\n })\r\n .catch((error) => {\r\n alert.error(error.toString());\r\n });\r\n };\r\n\r\n const modalView = (\r\n {\r\n setModalOpen(false);\r\n }}\r\n PaperProps={{\r\n style: {\r\n backgroundColor: theme.palette.surfaceColor,\r\n color: \"white\",\r\n minWidth: \"800px\",\r\n minHeight: \"320px\",\r\n },\r\n }}\r\n >\r\n \r\n \r\n Add Cache\r\n \r\n \r\n
    \r\n Key\r\n setKey(e.target.value)}\r\n />\r\n
    \r\n
    \r\n Value\r\n setValue(e.target.value)}\r\n />\r\n
    \r\n \r\n setModalOpen(false)}\r\n color=\"primary\"\r\n >\r\n Cancel\r\n \r\n {\r\n addOrgCache(orgId)\r\n }}\r\n color=\"primary\"\r\n >\r\n Submit\r\n \r\n \r\n \r\n );\r\n\r\n return (\r\n\r\n
    \r\n {modalView}\r\n
    \r\n

    Shuffle Datastore

    \r\n \r\n\t\t\t\t\t\t\t\t\t\tDatastore is a key-value store for storing data that can be used cross-workflow.  \r\n \r\n Learn more\r\n \r\n \r\n
    \r\n setModalOpen(true)}\r\n >\r\n Add Cache\r\n \r\n listOrgCache(orgId)}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {listCache === undefined || listCache === null\r\n ? null\r\n : listCache.map((data, index) => {\r\n var bgColor = \"#27292d\";\r\n if (index % 2 === 0) {\r\n bgColor = \"#1f2023\";\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {/* \r\n \r\n {\r\n\r\n }}\r\n >\r\n \r\n \r\n \r\n */}\r\n \r\n \r\n {\r\n deleteCache(orgId, data.key);\r\n //deleteFile(orgId);\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n />\r\n \r\n );\r\n })}\r\n \r\n
    \r\n\r\n );\r\n}\r\nexport default CacheView;\r\n","import React, { useState, useEffect } from 'react';\r\n\r\nimport ReactGA from 'react-ga4';\r\nimport { useNavigate, Link } from \"react-router-dom\";\r\nimport {isMobile} from \"react-device-detect\";\r\n\r\nimport {\r\n\tDone as DoneIcon, \r\n\tClear as ClearIcon,\r\n\tAddTask as AddTaskIcon,\r\n\t} from '@mui/icons-material';\r\n\r\nimport {\r\n\tSlider, \r\n\tDivider, \r\n\tList, \r\n\tListItem, \r\n\tListItemText, \r\n\tCard, \r\n\tCardContent, \r\n\tGrid, \r\n\tTypography, \r\n\tButton, \r\n\tButtonGroup, \r\n\tFormControl, \r\n\tDialog, \r\n\tDialogTitle, \r\n\tDialogActions, \r\n\tDialogContent, \r\n\tTooltip\r\n} from '@material-ui/core';\r\nimport FAQ from \"./Faq.jsx\";\r\nimport Newsletter from \"../components/Newsletter.jsx\";\r\nimport Services from \"./Services.jsx\";\r\n\r\nexport const typecost = 0.0018\r\nexport const typecost_single = (typecost * 1.33).toFixed(4)\r\n\r\n// 1. Create 2-3 payment tiers (slider?)\r\n// 2. Create a way to show them anywhere\r\n//\r\n// Site references:\r\n// https://logz.io/pricing/\r\n// https://www.avanan.com/pricing\r\nconst PaymentField = (props) => {\r\n\tconst { maxFields, theme, removeAdditions, isLoggedIn } = props\r\n\r\n const isCloud =\r\n window.location.host === \"localhost:3002\" ||\r\n window.location.host === \"shuffler.io\";\r\n\r\n\t// Multiple unused variables here\r\n let navigate = useNavigate();\r\n\tconst parsedFields = maxFields === undefined ? 300 : maxFields\r\n\tconst [variant, setVariant] = useState(0)\r\n\tconst [shuffleVariant, setShuffleVariant] = useState(isCloud ? 0 : 1)\r\n\tconst [paymentType, setPaymentType] = useState(0)\r\n\tconst [modalOpen, setModalOpen] = useState(false)\r\n const [showPricing, ] = useState(true)\r\n\tconst [currentPrice, setCurrentPrice] = useState(129)\r\n\tconst [isLoaded, setIsLoaded] = useState(false)\r\n\tconst [errorMessage, setErrorMessage] = useState(\"\")\r\n\r\n\t// Cloud\r\n\tconst [calculatedApps, setCalculatedApps] = useState(600)\r\n\tconst [calculatedCost, setCalculatedCost] = useState(\"$600\")\r\n\tconst [selectedValue, setSelectedValue] = useState(100)\r\n\r\n\t// Onprem\r\n\tconst [calculatedCores, setCalculatedCores] = useState(600)\r\n\tconst [onpremSelectedValue, setOnpremSelectedValue] = useState(8)\r\n\r\n useEffect(() => {\r\n\t\tconsole.log(\"New variant: \", shuffleVariant)\r\n\r\n\t\tif (shuffleVariant === 1) {\r\n\t\t\tsetCalculatedCost(\"$600\")\r\n\t\t\tsetSelectedValue(8)\r\n\t\t} else {\r\n\t\t\tsetCalculatedCost(\"$180\")\r\n\t\t\tsetSelectedValue(100)\r\n\t\t}\r\n\t}, [shuffleVariant])\r\n\r\n\tif (typeof window === 'undefined' || window.location === undefined) {\r\n\t\treturn null\r\n\t}\r\n\r\n\r\n\t/*\r\n\tconst valuetext = (value, variant) => {\r\n\t\tconsole.log(\"Valuetext: \", value, variant)\r\n\t\tif (value === 32 || value === 1000) {\r\n\t\t\tif (variant === 1) {\r\n\t\t\t\tsetCalculatedCores(\"Get A Quote\")\r\n\t\t\t\tsetOnpremSelectedValue(value)\r\n\t\t\t} else {\r\n\t\t\t\tsetCalculatedApps(`Get A Quote`)\r\n\t\t\t\tsetSelectedValue(value)\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (variant === 1) {\r\n\t\t\t\tsetCalculatedCores(`$${value*75}`)\r\n\t\t\t\tsetOnpremSelectedValue(value)\r\n\t\t\t} else {\r\n\t\t\t\tsetCalculatedApps(`$${value*1000*0.0018}`)\r\n\t\t\t\tsetSelectedValue(value)\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t*/\r\n\r\n\r\n\tconst handleChange = (event, newValue) => {\r\n\t\tconsole.log(\"Event, value: \", event.target, newValue)\r\n\t\r\n\t\tif (shuffleVariant === 1) {\r\n\t\t\tsetSelectedValue(newValue)\r\n\t\t\tif (newValue === 32) {\r\n\t\t\t\tsetCalculatedCost(`Get A Quote`)\r\n\t\t\t} else {\r\n\t\t\t\tsetCalculatedCost(`$${newValue*75}`)\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tsetSelectedValue(newValue)\r\n\t\t\tif (newValue === 1000) {\r\n\t\t\t\tsetCalculatedCost(`Get A Quote`)\r\n\t\t\t} else {\r\n\t\t\t\tsetCalculatedCost(`$${newValue*1000*typecost}`)\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//\treturn `${value}`;\r\n\t//}\r\n\r\n\tif (!isLoaded) {\r\n\t\tsetIsLoaded(true)\r\n\r\n\t\tconst tmpsearch = typeof window === 'undefined' || window.location === undefined ? \"\" : window.location.search\r\n\t\tconst tmpVar = new URLSearchParams(tmpsearch).get(\"variant\")\r\n\t\tif (tmpVar !== undefined && tmpVar !== null && tmpVar < 3) {\r\n\t\t\tsetVariant(parseInt(tmpVar))\r\n\t\t}\r\n\r\n\t\tconst tmpType = new URLSearchParams(tmpsearch).get(\"payment_type\")\r\n\t\tif (tmpType !== undefined && tmpType !== null && tmpType < 2) {\r\n\t\t\tsetPaymentType(parseInt(tmpType))\r\n\t\t}\r\n\r\n\t\tconst modal = new URLSearchParams(tmpsearch).get(\"payment_modal\")\r\n\t\tif (modal !== undefined && modal !== null && modal === \"open\") {\r\n\t\t\tsetModalOpen(true)\r\n\t\t}\r\n\r\n\t\tconst tmpView = new URLSearchParams(tmpsearch).get(\"view\")\r\n\t\tif (tmpView !== undefined && tmpView !== null && tmpView === \"failure\") {\r\n\t\t\tsetErrorMessage(\"Something went wrong with your payment. Please try again.\")\r\n\t\t}\r\n\r\n\t\tconst urlSearchParams = new URLSearchParams(window.location.search);\r\n\t\tconst params = Object.fromEntries(urlSearchParams.entries());\r\n\t\tconst foundTab = params[\"tab\"];\r\n\t\tif (foundTab !== null && foundTab !== undefined) {\r\n\t\t\tif (foundTab === \"onprem\") {\r\n\t\t\t\t//valuetext(8, 1) \r\n\t\t\t\tsetShuffleVariant(1)\r\n\t\t\t\t//setCalculatedCores(`$${8*75}`)\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tconst billingInfo = Billed anually or monthly at 1.2x the cost\r\n\t//const skipFreemode = window.location.pathname.startsWith(\"/admin\") \r\n\tconst skipFreemode = false\r\n\tconst maxwidth = isMobile ? \"91%\" : skipFreemode ? 1100 : 1200 \r\n\tconst activeIcon = \r\n\tconst inActiveIcon = \r\n\r\n\t// All triggers\r\n\tconst features = [\r\n\r\n\t{\r\n\t\t\"name\": \"Users\",\r\n\t\t\"basic\": \"No limit\",\r\n\t\t\"community\": \"No limit\",\r\n\t\t\"pro\": \"No limit\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"Apps\",\r\n\t\t\"basic\": \"No limit\",\r\n\t\t\"community\": \"No limit\",\r\n\t\t\"pro\": \"No limit\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"Workflows\",\r\n\t\t\"basic\": \"No limit\",\r\n\t\t\"community\": \"No limit\",\r\n\t\t\"pro\": \"No limit\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"Workflow App Runs\",\r\n\t\t\"basic\": \"10.000 / month\",\r\n\t\t\"community\": \"10.000 / month\",\r\n\t\t\"pro\": \"Pay as you go\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t\t\"onprem\": false,\r\n\t},\r\n\t{\r\n\t\t\"name\": \"Workflow App Runs\",\r\n\t\t\"basic\": \"No limit\",\r\n\t\t\"community\": \"No limit\",\r\n\t\t\"pro\": \"No limit\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t\t\"cloud\": false,\r\n\t},\r\n\t{\r\n\t\t\"name\": \"Shuffle Datastore (cache)\",\r\n\t\t\"basic\": \"Max 1GB\",\r\n\t\t\"community\": \"Yes\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t\t\"onprem\": false,\r\n\t},\r\n\t{\r\n\t\t\"name\": \"Shuffle Datastore (cache)\",\r\n\t\t\"basic\": \"Yes\",\r\n\t\t\"community\": \"Yes\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t\t\"cloud\": false,\r\n\t},\r\n\t{\r\n\t\t\"name\": \"File Storage\",\r\n\t\t\"basic\": \"Max 1GB\",\r\n\t\t\"community\": \"Yes\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t\t\"onprem\": false,\r\n\t},\r\n\t{\r\n\t\t\"name\": \"File Storage\",\r\n\t\t\"basic\": \"Yes\",\r\n\t\t\"community\": \"Yes\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t\t\"cloud\": false,\r\n\t},\r\n\t{\r\n\t\t\"name\": \"Multi-Tenant\",\r\n\t\t\"basic\": \"No\",\r\n\t\t\"community\": \"Yes\",\r\n\t\t\"pro\": \"Add-on\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t\t\"onprem\": false,\r\n\t},\r\n\t{\r\n\t\t\"name\": \"Multi-Tenant\",\r\n\t\t\"basic\": \"Yes\",\r\n\t\t\"community\": \"Yes\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t\t\"cloud\": false,\r\n\t},\r\n\t{\r\n\t\t\"name\": \"Region Control\",\r\n\t\t\"basic\": \"No\",\r\n\t\t\"community\": \"Yes\",\r\n\t\t\"pro\": \"Add-on\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t\t\"onprem\": false,\r\n\t},\r\n\t{\r\n\t\t\"name\": \"Per-CPU-core support\",\r\n\t\t\"basic\": \"0 / month\",\r\n\t\t\"community\": \"0 / month\",\r\n\t\t\"pro\": \"Pay as you go\",\r\n\t\t\"enterprise\": \"8 / month\",\r\n\t\t\"active\": true, \r\n\t\t\"cloud\": false,\r\n\t},\r\n\t{\r\n\t\t\"name\": \"Shuffle SMS alerting\",\r\n\t\t\"basic\": \"30 / month\",\r\n\t\t\"community\": \"Yes\",\r\n\t\t\"pro\": \"300 / month\",\r\n\t\t\"enterprise\": \"300 / month\",\r\n\t\t\"active\": true, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"Shuffle Email alerting\",\r\n\t\t\"basic\": \"100 / month\",\r\n\t\t\"community\": \"Yes\",\r\n\t\t\"pro\": \"10.000 / month\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"Priority Support\",\r\n\t\t\"basic\": \"No\",\r\n\t\t\"community\": \"No\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t\t\"title\": \"Support & Success\",\r\n\t},\r\n\t{\r\n\t\t\"name\": \"Maintenance & Updates\",\r\n\t\t\"basic\": \"No\",\r\n\t\t\"community\": \"\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t\t\"cloud\": false,\r\n\t},\r\n\t{\r\n\t\t\"name\": \"Documentation & Community Support\",\r\n\t\t\"basic\": \"Yes\",\r\n\t\t\"community\": \"Yes\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"Email & Chat Support\",\r\n\t\t\"basic\": \"support@shuffler.io\",\r\n\t\t\"community\": \"No\",\r\n\t\t\"pro\": \"Prioritized + Critical issue SLA\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"Personal onboarding\",\r\n\t\t\"basic\": \"No\",\r\n\t\t\"community\": \"\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"Shuffle Academy\",\r\n\t\t\"basic\": \"Yes\",\r\n\t\t\"community\": \"No\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": false, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"Workflow editor\",\r\n\t\t\"basic\": \"Yes\",\r\n\t\t\"community\": \"Yes\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t\t\"title\": \"Basic features\",\r\n\t},\r\n\t{\r\n\t\t\"name\": \"App editor\",\r\n\t\t\"basic\": \"Yes\",\r\n\t\t\"community\": \"Yes\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"Private Apps\",\r\n\t\t\"basic\": \"Yes\",\r\n\t\t\"community\": \"Yes\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"Default & Shared playbooks\",\r\n\t\t\"basic\": \"Yes\",\r\n\t\t\"community\": \"Yes\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"Organization control\",\r\n\t\t\"basic\": \"Yes\",\r\n\t\t\"community\": \"Yes\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"Autocomplete features\",\r\n\t\t\"basic\": \"Yes\",\r\n\t\t\"community\": \"Yes\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true,\r\n\t},\r\n\t{\r\n\t\t\"name\": \"Hybrid Webhook trigger\",\r\n\t\t\"basic\": \"Yes\",\r\n\t\t\"community\": \"Yes\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"Hybrid User Input trigger\",\r\n\t\t\"basic\": \"Yes\",\r\n\t\t\"community\": \"Yes\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"Hybrid Email trigger\",\r\n\t\t\"basic\": \"Yes\",\r\n\t\t\"community\": \"Yes\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"Hybrid Schedule\",\r\n\t\t\"basic\": \"Yes\",\r\n\t\t\"community\": \"Yes\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"Failure Notifications\",\r\n\t\t\"basic\": \"Yes\",\r\n\t\t\"community\": \"No\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"Hybrid Executions\",\r\n\t\t\"basic\": \"Yes\",\r\n\t\t\"community\": \"Yes\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"Use of Public Workflows\",\r\n\t\t\"basic\": \"Yes\",\r\n\t\t\"community\": \"Yes\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"Multiple Environments\",\r\n\t\t\"basic\": \"Yes\",\r\n\t\t\"community\": \"Yes\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t},\r\n\r\n\t{\r\n\t\t\"name\": \"Shuffle creates integration\",\r\n\t\t\"basic\": \"No\",\r\n\t\t\"community\": \"Yes\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"Uptime SLA\",\r\n\t\t\"basic\": \"No\",\r\n\t\t\"community\": \"No\",\r\n\t\t\"pro\": \"99.9%\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t\t\"onprem\": false,\r\n\t},\r\n\t{\r\n\t\t\"name\": \"Automated backups\",\r\n\t\t\"basic\": \"No\",\r\n\t\t\"community\": \"Yes\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t\t\"onprem\": false,\r\n\t},\r\n\t{\r\n\t\t\"name\": \"MSSP org overview\",\r\n\t\t\"basic\": \"No\",\r\n\t\t\"community\": \"No\",\r\n\t\t\"pro\": \"Add-on\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"MSSP org control\",\r\n\t\t\"basic\": \"No\",\r\n\t\t\"community\": \"No\",\r\n\t\t\"pro\": \"Add-on\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"Automatic Platform updates\",\r\n\t\t\"basic\": \"Yes\",\r\n\t\t\"community\": \"Yes\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t\t\"onprem\": false,\r\n\t},\r\n\t{\r\n\t\t\"name\": \"Audit logging\",\r\n\t\t\"basic\": \"No\",\r\n\t\t\"community\": \"No\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": false, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"2-factor authentication\",\r\n\t\t\"basic\": \"Yes\",\r\n\t\t\"community\": \"Yes\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t\t\"title\": \"Security & Development\",\r\n\t},\t\r\n\t{\r\n\t\t\"name\": \"SAML / SSO\",\r\n\t\t\"basic\": \"Yes\",\r\n\t\t\"community\": \"Yes\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"API-key management\",\r\n\t\t\"basic\": \"yes\",\r\n\t\t\"community\": \"Yes\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": false, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"Role-based access control (RBAC)\",\r\n\t\t\"basic\": \"Yes\",\r\n\t\t\"community\": \"Yes\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": false, \r\n\t},\r\n\r\n\t{\r\n\t\t\"name\": \"Workflow recommendations\",\r\n\t\t\"basic\": \"Yes\",\r\n\t\t\"community\": \"Yes\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t\t\"title\": \"Additional Features\",\r\n\t},\r\n\t{\r\n\t\t\"name\": \"Standardized app categories\",\r\n\t\t\"basic\": \"Yes\",\r\n\t\t\"community\": \"Yes\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"App Framework\",\r\n\t\t\"basic\": \"Yes\",\r\n\t\t\"community\": \"Yes\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"Hybrid search engine\",\r\n\t\t\"basic\": \"Yes\",\r\n\t\t\"community\": \"Yes\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t},\r\n\r\n\t{\r\n\t\t\"name\": \"Hybrid App syncronization\",\r\n\t\t\"basic\": \"Yes\",\r\n\t\t\"community\": \"Yes\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"Execution Retention\",\r\n\t\t\"basic\": \"1 Month\",\r\n\t\t\"community\": \"Yes\",\r\n\t\t\"pro\": \"1 Year default\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t\t\"onprem\": false,\r\n\t},\r\n\t{\r\n\t\t\"name\": \"Detection Management\",\r\n\t\t\"basic\": \"Yes\",\r\n\t\t\"community\": \"Yes\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": false, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"Mitre Att&ck integrations\",\r\n\t\t\"basic\": \"No\",\r\n\t\t\"community\": \"Yes\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": false, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"Open Source account rollback\",\r\n\t\t\"basic\": \"No\",\r\n\t\t\"community\": \"Yes\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": false, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"Data LOCATION control\",\r\n\t\t\"basic\": \"No\",\r\n\t\t\"community\": \"No\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": false, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"Data RETENTION control\",\r\n\t\t\"basic\": \"No\",\r\n\t\t\"community\": \"No\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": false, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"Shuffle IoC search\",\r\n\t\t\"basic\": \"No\",\r\n\t\t\"community\": \"No\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": false, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"Controllable Reporting\",\r\n\t\t\"basic\": \"No\",\r\n\t\t\"community\": \"No\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": false, \r\n\t},\t\r\n\t{\r\n\t\t\"name\": \"Management dashboard\",\r\n\t\t\"basic\": \"No\",\r\n\t\t\"community\": \"No\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": false, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"Risk based overview\",\r\n\t\t\"basic\": \"No\",\r\n\t\t\"community\": \"No\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": false, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"Compliance dashboard\",\r\n\t\t\"basic\": \"No\",\r\n\t\t\"community\": \"No\",\r\n\t\t\"pro\": \"Yes\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": false, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"App & Workflow Training\", \r\n\t\t\"basic\": \"$4999 / 5 people\",\r\n\t\t\"community\": \"No\",\r\n\t\t\"pro\": \"$1499 / 5 people\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t\t\"title\": \"Professional Services\",\r\n\t},\r\n\t{\r\n\t\t\"name\": \"Developer Training\", \r\n\t\t\"basic\": \"$4999 / 5 people\",\r\n\t\t\"community\": \"No\",\r\n\t\t\"pro\": \"$1499 / 5 people\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"Custom App Development\",\r\n\t\t\"basic\": \"Contact us\",\r\n\t\t\"community\": \"No\",\r\n\t\t\"pro\": \"Contact us\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"Custom Workflow Development\",\r\n\t\t\"basic\": \"Contact us\",\r\n\t\t\"community\": \"No\",\r\n\t\t\"pro\": \"Contact us\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t},\r\n\t{\r\n\t\t\"name\": \"Shuffle Custom Modifications\",\r\n\t\t\"basic\": \"Contact us\",\r\n\t\t\"community\": \"No\",\r\n\t\t\"pro\": \"Contact us\",\r\n\t\t\"enterprise\": \"\",\r\n\t\t\"active\": true, \r\n\t},\r\n\r\n\t]\r\n\r\n\tconst defaultTaskIcon = \r\n\tconst stripe = typeof window === 'undefined' || window.location === undefined ? \"\" : props.stripeKey === undefined ? \"\" : window.Stripe ? window.Stripe(props.stripeKey) : \"\"\r\n\tconst handleStripeRedirect = (payment_type, recurrence) => {\r\n\t\tconsole.log(\"REDIRECT: \", payment_type, recurrence)\r\n\r\n\t\t// FIXME: Proper redirect cycle here\r\n\t\tif (props.userdata === undefined || props.userdata.username === undefined || props.userdata.active_org === undefined || props.userdata.active_org.id === undefined) {\r\n\t\t\tconsole.log(\"User must sign in and have an organization first. Current: \", props.userdata)\r\n\t\t\t// 1. Add query parameters: Yearly / monthly, Community / pro\r\n\t\t\tnavigate(`/register?view=pricing&variant=${variant}&payment_type=${paymentType}&payment_modal=open&message=You need to create a user to continue`)\r\n\t\t\treturn\r\n\t\t} else {\r\n\t\t\tconsole.log(\"Username is \", props.userdata.username)\r\n\t\t}\r\n\r\n\t\t//payment_type = community(0), pro(1)\r\n\t\t//recurrence = yearly(0), monthly(1)\r\n\t\tvar priceItem = \"price_1Hh8ecDzMUgUjxHSPEdeueyu\"\r\n\t\tvar text = \"enterprise_yearly_pay_click\"\r\n\t\t// recurrence = 0 = yearly\r\n\t\t// recurrence = 1 = monthly \r\n\t\t//\r\n\t\tif (payment_type === 0) {\r\n\t\t\tconsole.log(\"Handling payment type 0: hybrid\")\r\n\t\t\tpriceItem = recurrence === 0 ? isCloud ? \"price_1HhAOgDzMUgUjxHSmesUZkNU\" : \"price_1HhAOgDzMUgUjxHSmesUZkNU\" : isCloud ? \"price_1HhAOgDzMUgUjxHSfU8XzQ84\" : \"price_1HhAOgDzMUgUjxHSfU8XzQ84\" \r\n\r\n\t\t\tReactGA.event({\r\n\t\t\t\tcategory: \"pricing\",\r\n\t\t\t\taction: `hybrid_pay_click`,\r\n\t\t\t\tlabel: \"\",\r\n\t\t\t})\r\n\t\t} else if (payment_type === 1) {\r\n\t\t\tconsole.log(\"Handling payment type 1: enterprise\")\r\n\t\t\tpriceItem = recurrence === 0 ? isCloud ? \"price_1HhAdrDzMUgUjxHSsIDOCYgm\" : \"price_1HhAdrDzMUgUjxHSsIDOCYgm\" : isCloud ? \"price_1HhAdrDzMUgUjxHS7Cu5vF95\" : \"price_1HhAdrDzMUgUjxHS7Cu5vF95\"\r\n\r\n\t\t\tif (recurrence === 1) {\r\n\t\t\t\ttext = \"enterprise_monthly_pay_click\"\r\n\t\t\t}\r\n\r\n\t\t\tReactGA.event({\r\n\t\t\t\tcategory: \"pricing\",\r\n\t\t\t\taction: text,\r\n\t\t\t\tlabel: \"\",\r\n\t\t\t})\r\n\t\t} else if (payment_type === 2) {\r\n\t\t\tconsole.log(\"Handling payment type 2: basic\")\r\n\t\t\tpriceItem = recurrence === 0 ? isCloud ? \"price_1HnPmWDzMUgUjxHSzEHV5e6t\" : \"price_1HlvuPDzMUgUjxHS1pvtPONJ\" : isCloud ? \"price_1HnPmWDzMUgUjxHSGC3Yiact\" : \"price_1HlvuPDzMUgUjxHSrp7Ws8iu\" \r\n\r\n\t\t\tReactGA.event({\r\n\t\t\t\tcategory: \"pricing\",\r\n\t\t\t\taction: `mssp_pay_click`,\r\n\t\t\t\tlabel: \"\",\r\n\t\t\t})\r\n\t\t} else {\r\n\t\t\tconsole.log(`No handler for redirect ${payment_type} yet`)\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\t// Current URL + status = Success/fail\r\n\t\tconst successUrl = `${window.location.origin}/admin?payment=success`\r\n\t\tconst failUrl = `${window.location.origin}/pricing?view=failure&variant=${variant}&payment_type=${paymentType}`\r\n\r\n\t\tvar checkoutObject = {\r\n\t\t\tlineItems: [\r\n\t\t\t\t{price: priceItem, quantity: 1},\r\n\t\t\t],\r\n\t\t\tmode: \"subscription\",\r\n\t\t\tbillingAddressCollection: \"auto\",\r\n\t \tsuccessUrl: successUrl,\r\n\t \tcancelUrl: failUrl,\r\n\t\t\tsubmitType: \"donate\",\r\n\t\t\tclientReferenceId: props.userdata.active_org.id,\r\n\t\t}\r\n\r\n\t\tstripe.redirectToCheckout(checkoutObject)\r\n\t\t.then(function (result) {\r\n\t\t\tconsole.log(\"SUCCESS STRIPE?: \", result)\r\n\r\n\t\t\ttext += \"_success\"\r\n\t\t\tReactGA.event({\r\n\t\t\t\tcategory: \"pricing\",\r\n\t\t\t\taction: text,\r\n\t\t\t\tlabel: \"\",\r\n\t\t\t})\r\n\t\t})\r\n\t\t.catch(function(error) {\r\n\t\t\tconsole.error(\"STRIPE ERROR: \", error)\r\n\t\t\ttext += \"_fail\"\r\n\t\t\tReactGA.event({\r\n\t\t\t\tcategory: \"pricing\",\r\n\t\t\t\taction: text,\r\n\t\t\t\tlabel: \"\",\r\n\t\t\t})\r\n\t\t});\r\n\r\n\t\tconsole.log(\"Done with payment!\")\r\n\t}\r\n\r\n\tconst buttonBackground = \"linear-gradient(to right, #f86a3e, #f34079)\"\r\n\tconst level1Button = \r\n\t\t\t\r\n\r\n\tconst level2Button = \r\n\t\t\r\n\r\n\tconst level3Button = skipFreemode ? null : \r\n\t\t\t\r\n\r\n\r\n\tconst cardStyle = {\r\n\t\theight: \"100%\", \r\n\t\twidth: \"100%\", \r\n\t\ttextAlign: \"center\", \r\n\t\tbackgroundColor: theme.palette.surfaceColor,\r\n\t\tcolor: \"white\",\r\n\t}\r\n\r\n\r\n\tvar indexskip = 0\r\n\tconst topRet = \r\n\t\t
    \r\n\t\t\tPricing\t\r\n\t\t\t{/*Find pricing, focused on shuffler.io and self-hosted*/}\r\n\t\t\t{/*These prices are likely to change*/}\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t{errorMessage.length > 0 ? Error: {errorMessage} : null}\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t{skipFreemode ? null : \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tFree\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{shuffleVariant === 0 ? \r\n\t\t\t\t\t\t\t\t\t\t\"shuffler.io / Cloud\"\r\n\t\t\t\t\t\t\t\t\t: \r\n\t\t\t\t\t\t\t\t\t\tOpen Source \r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{paymentType === 0 ? \"Free\" : \"Free\"}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{shuffleVariant === 0 ? \r\n\t\t\t\t\t\t\t\t\t\t\"Includes 10k App Executions. Refreshes every month.\"\r\n\t\t\t\t\t\t\t\t\t\t: \r\n\t\t\t\t\t\t\t\t\t\t\"Unlimited use, self-hosted.\"\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{defaultTaskIcon} Use any app \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{defaultTaskIcon} Unlimited users\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{defaultTaskIcon} Unlimited workflows \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{defaultTaskIcon} {\r\n\t\t\t\t\t\t\t\t\t\t\tif (window.drift !== undefined) {\r\n\t\t\t\t\t\t\t\t\t\t\t\twindow.drift.api.startInteraction({ interactionId: 340043, })\r\n\t\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"Couldn't find drift in window.drift and not .drift-open-chat with querySelector: \", window.drift)\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}}>Free Support & Discord access\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{level3Button}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{shuffleVariant === 1 ? \"Scale\" : \"Enterprise\"}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{shuffleVariant === 0 ? \r\n\t\t\t\t\t\t\t\t\t\t\"SaaS / Cloud\"\r\n\t\t\t\t\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\t\t\t\t\"Open Source + Scale License\"\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tif (calculatedCores === \"Get A Quote\") {\r\n\t\t\t\t\t\t\t\t\t\tconsole.log(\"Clicked on get a quote\")\r\n\t\t\t\t\t\t\t\t\t\tif (window.drift !== undefined) {\r\n\t\t\t\t\t\t\t\t\t\t\twindow.drift.api.startInteraction({ interactionId: 340785 })\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}}>{calculatedCost}\r\n\t\t\t\t\t\t\t\tPer month for {shuffleVariant === 1 ? `${selectedValue} CPU cores` : `${selectedValue}k App Executions`}: \r\n\t\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\thandleChange(event, newValue)\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\tmarks\r\n\t\t\t\t\t\t\t\t\t\tvalue={selectedValue}\r\n\t\t\t\t\t\t\t\t\t\tstep={shuffleVariant === 0 ? 100 : 4}\r\n\t\t\t\t\t\t\t\t\t\tmin={shuffleVariant === 0 ? 100 : 8}\r\n\t\t\t\t\t\t\t\t\t\tmax={shuffleVariant === 0 ? 1000 : 32}\r\n\t\t\t\t\t\t\t\t\t\tvalueLabelDisplay=\"auto\"\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{defaultTaskIcon} Priority Support\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{defaultTaskIcon} {shuffleVariant === 0 ? \r\n\t\t\t\t\t\t\t\t\t\t\t\"Multi-Tenant\"\r\n\t\t\t\t\t\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\t\t\t\t\t\"Scalable Orborus\"\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{shuffleVariant === 0 ?\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{defaultTaskIcon} Multi-Region Tenants\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{defaultTaskIcon} High Availability\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{defaultTaskIcon} Help with Workflow and App development\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{/*billingInfo*/}\r\n\r\n\r\n\t\t\t\t\t\t\t\t{level2Button}\r\n\t\t\t\t\t\t\t\t{shuffleVariant === 0 ?\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\t\tnull}\r\n\r\n\t\t\t\t\t\t\t\t{/*\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tif (window.drift !== undefined) {\r\n\t\t\t\t\t\t\t\t\t\t\twindow.drift.api.startInteraction({ interactionId: 340785 })\r\n\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"Couldn't find drift in window.drift and not .drift-open-chat with querySelector: \", window.drift)\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\t\t\tOr get a quote\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t*/}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t{/*shuffleVariant === 1 ? null : \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tMSSP\r\n\t\t\t\t\t\t\t\t\tCross-Customer automation\r\n\t\t\t\t\t\t\t\t\t${paymentType === 0 ? 1999 : 2399}\r\n\t\t\t\t\t\t\t\t\tPer month{paymentType === 0 ? \", billed yearly\" : null}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t- All previous tiers \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t- Extra Customer control\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t- Sub-organization access\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t- Build Shuffle into your product\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t*/}\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t{shuffleVariant === 0 ?\r\n\t\t\t\t\t\t\"- 100k Executions per month can handle about 500 Assets, and scales linearly.\"\r\n\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\"- 8 CPU-cores (default) can handle about 1500 Assets and scales linearly.\" \r\n\t\t\t\t\t}\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t- All prices are in USD and exclude VAT\r\n\t\t\t\t\r\n\t\t\t\t{/*\r\n\t\t\t\t\r\n\t\t\t\t\tShuffle is an Open Source project. Gives access to support, development and features not otherwise available. This applies to both Open Source & Cloud/SaaS. After the transaction is finished, you will immediately have full access to our support team, and you organization will automatically get upgraded resources assigned. \r\n\t\t\t\t\r\n\t\t\t\t*/}\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tPay-as-you-go-pricing\r\n\t\t\t\t\t\tSimple usage based pricing with no long-term commitments\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tVolume Discounts\r\n\t\t\t\t\t\tDiscounts trigger as your usage grows, so you always get a fair price.\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tCommitted-use discounts\r\n\t\t\t\t\t\tGet additional discounts for annual or multi-year commitments\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t{!showPricing ? \r\n\t\t\t\tnull :\r\n\t\t\t\t
    \r\n\t\t\t\t\tFeatures ({shuffleVariant === 0 ? \"Cloud\" : \"Self-Hosted\"})\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{isMobile ? \"F\" : \"Free\"}\r\n\t\t\t\t\t\t\t\tstyle={{ textAlign: \"left\", flex: 2}}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t{/*{isMobile ? \"H\" : \"Hybrid\"}\r\n\t\t\t\t\t\t\t\tstyle={{ textAlign: \"left\", flex: 2}}\r\n\t\t\t\t\t\t\t/>*/}\r\n\t\t\t\t\t\t\t{isMobile ? \"E\" : \"Enterprise / Scale\"}\r\n\t\t\t\t\t\t\t\tstyle={{ textAlign: \"left\", flex: 2}}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{features.slice(0, parsedFields).map((data, index) => {\r\n\r\n\t\t\t\t\t\t\t//const activeData = data.active ? activeIcon : data.basic === \"No\" || data.basic === false ? inActiveIcon : data.basic\r\n\t\t\t\t\t\t\tconst basicData = data.basic === \"Yes\" || data.basic === true ? activeIcon : data.basic === \"No\" || data.basic === false ? inActiveIcon : data.basic\r\n\t\t\t\t\t\t\tconst communityData = data.community === \"Yes\" || data.community === true ? activeIcon : data.community === \"No\" || data.community === false ? inActiveIcon : data.community\r\n\t\t\t\t\t\t\tconst proData = data.pro === \"Yes\" || data.pro === true ? activeIcon : data.pro === \"No\" || data.pro === false ? inActiveIcon : data.pro\r\n\r\n\t\t\t\t\t\t\tif (shuffleVariant === 0 && data.cloud === false) {\r\n\t\t\t\t\t\t\t\tindexskip += 1\r\n\t\t\t\t\t\t\t\treturn null\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (shuffleVariant === 1 && data.onprem === false) {\r\n\t\t\t\t\t\t\t\tindexskip += 1\r\n\t\t\t\t\t\t\t\treturn null\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tconst newindex = index-indexskip\r\n\r\n\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{data.title !== undefined ? \r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t{data.title}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t: null}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{data.active === true ? \r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t: \r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{/*\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t*/}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t{features.length > parsedFields ? \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t: null\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t{/*isMobile ? null : \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{level3Button}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{level1Button}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{level2Button}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t*/}\r\n\t\t\t\t\t\t{/*\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t*/}\r\n\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t}\r\n\t\t\t
    \r\n\t\t\tScalable models for MSSPs\t\r\n\t\t\t\r\n\t\t\t\tNeed support and automation help for diverse and scalable environments? Our Enterprise and MSSP offerings can help you whether Onprem or in our cloud. \r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tOpen Source\r\n\t\t\t\t\t\t\tCPU-core-based\r\n\t\t\t\t\t\t\t8 cores included in sub\r\n\t\t\t\t\t\t\t$75 / \r\n\t\t\t\t\t\t\tCPU-core\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tPer month\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tCloud\r\n\t\t\t\t\t\t\tApp-Execution based\r\n\t\t\t\t\t\t\tPay-as-you-go\r\n\t\t\t\t\t\t\t${typecost_single} / \r\n\t\t\t\t\t\t\tapp-runs\r\n\t\t\t\t\t\t\tPer month\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\r\n\t\t\tCloud, Hybrid & Onprem\t\r\n\t\t\t\r\n\t\t\t\tOur support model is built for both the Cloud and Onpremises version of Shuffle, and can be managed between both. Contact us for more info, or to get a quote from one of our verified resellers.\r\n\t\t\t\r\n \"Shuffle\r\n\r\n\t\t\t
    \r\n\t\t\t{removeAdditions === true ? null :\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tGot other questions?\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tIf you got more questions about our pricing and plans, please contact us so we can help\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t}\r\n\r\n\t\t
    \r\n\r\n\tconst setMonthlyCost = (variant, paymentType) => {\r\n\t\tsetErrorMessage(\"\")\r\n\t\tif (variant === 0 && paymentType === 0) {\r\n\t\t\tsetCurrentPrice(129)\r\n\t\t} else if (variant === 0 && paymentType === 1) {\r\n\t\t\tsetCurrentPrice(155)\r\n\t\t} else if (variant === 1 && paymentType === 0) {\r\n\t\t\tsetCurrentPrice(999)\r\n\t\t} else if (variant === 1 && paymentType === 1) {\r\n\t\t\tsetCurrentPrice(1199)\r\n\t\t} else if (variant === 2 && paymentType === 0) {\r\n\t\t\tsetCurrentPrice(15)\r\n\t\t} else if (variant === 2 && paymentType === 1) {\r\n\t\t\tsetCurrentPrice(18)\r\n\t\t}\r\n\t}\r\n\r\n\tconst modalView = modalOpen ? \r\n\t\t {\r\n\t\t\t\tsetModalOpen(false)\r\n\t\t\t\tReactGA.event({\r\n\t\t\t\t\tcategory: \"pricing\",\r\n\t\t\t\t\taction: `close_window_outside_click`,\r\n\t\t\t\t\tlabel: \"\",\r\n\t\t\t\t})\r\n\t\t\t}}\r\n\t\t\tPaperProps={{\r\n\t\t\t\tstyle: {\r\n\t\t\t\t\tbackgroundColor: \"#1f2023\",\r\n\t\t\t\t\tcolor: \"white\",\r\n\t\t\t\t\tminWidth: isMobile ? \"100%\" :500,\r\n\t\t\t\t\tpadding: 30,\r\n\t\t\t\t},\r\n\t\t\t}}\r\n\t\t>\r\n\t\t\t\r\n\t\t\t\t
    Shuffle payments
    \r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tChoose recurrence\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t \r\n\t\t\t\t\t \r\n\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tYour plan:\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tShuffle {variant === 0 ? \"Community\" : variant === 2 ? \"Free\" : \"Pro\"} Edition\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tMonthly subtotal: \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t${currentPrice}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tDiscount:\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{paymentType === 0 ? \"20%\" : \"0%\"}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tBeta opt-in:\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tExtra features\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tWhat you'll pay now: \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t${paymentType === 0 ? currentPrice*12 : currentPrice}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\r\n\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tYour plan will renew each {paymentType === 0 ? \"year\" : \"month\"}.\r\n\t\t\t\t\t\r\n\t\t\t\t\t{/**/}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t\t: null\r\n\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t{topRet}\r\n\t\t\t\t{modalView} \r\n\t\t\t
    \r\n\t\t)\r\n}\r\n\r\nexport default PaymentField;\r\n","import React, { useEffect } from \"react\";\nimport { makeStyles } from \"@material-ui/styles\";\nimport { useTheme } from \"@material-ui/core/styles\";\n\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport Grid from \"@material-ui/core/Grid\";\nimport Button from \"@material-ui/core/Button\";\nimport TextField from \"@material-ui/core/TextField\";\nimport Typography from \"@material-ui/core/Typography\";\nimport { useAlert } from \"react-alert\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport ExpandLessIcon from \"@material-ui/icons/ExpandLess\";\nimport ExpandMoreIcon from \"@material-ui/icons/ExpandMore\";\nimport SaveIcon from \"@material-ui/icons/Save\";\n\nconst useStyles = makeStyles({\n notchedOutline: {\n borderColor: \"#f85a3e !important\",\n },\n});\n\nconst defaultImage =\n \"data:image/png;base64,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\";\n\nconst OrgHeader = (props) => {\n const {\n userdata,\n selectedOrganization,\n setSelectedOrganization,\n globalUrl,\n isCloud,\n\t\tadminTab,\n \thandleEditOrg, \n } = props;\n\n const theme = useTheme();\n const alert = useAlert();\n const classes = useStyles();\n\n var upload = \"\";\n const defaultBranch = \"master\";\n const [orgName, setOrgName] = React.useState(selectedOrganization.name);\n const [orgDescription, setOrgDescription] = React.useState(\n selectedOrganization.description\n );\n\n\n const [file, setFile] = React.useState(\"\");\n const [fileBase64, setFileBase64] = React.useState(\n selectedOrganization.image\n );\n const [expanded, setExpanded] = React.useState(false);\n\n if (file !== \"\") {\n const img = document.getElementById(\"logo\");\n var canvas = document.createElement(\"canvas\");\n canvas.width = 174;\n canvas.height = 174;\n var ctx = canvas.getContext(\"2d\");\n\n img.onload = function () {\n // img, x, y, width, height\n //ctx.drawImage(img, 174, 174)\n //console.log(\"IMG natural: \", img.naturalWidth, img.naturalHeight)\n //ctx.drawImage(img, 0, 0, 174, 174)\n ctx.drawImage(\n img,\n 0,\n 0,\n img.width,\n img.height,\n 0,\n 0,\n canvas.width,\n canvas.height\n );\n\n const canvasUrl = canvas.toDataURL();\n if (canvasUrl !== fileBase64) {\n setFileBase64(canvasUrl);\n selectedOrganization.image = canvasUrl;\n setSelectedOrganization(selectedOrganization);\n }\n };\n }\n\n\n var image = \"\";\n const editHeaderImage = (event) => {\n const file = event.target.value;\n const actualFile = event.target.files[0];\n const fileObject = URL.createObjectURL(actualFile);\n setFile(fileObject);\n };\n\n //console.log(\"USER: \", userdata)\n const orgSaveButton = (\n \n \n handleEditOrg(\n orgName,\n orgDescription,\n selectedOrganization.id,\n selectedOrganization.image,\n {},\n {},\n\t\t\t\t\t\t[],\n )\n }\n >\n \n \n \n );\n\n var imageData = file.length > 0 ? file : fileBase64;\n imageData =\n imageData === undefined || imageData.length === 0\n ? defaultImage\n : imageData;\n const imageInfo = (\n \n );\n\n return (\n
    \n \n \n 0\n ? null\n : \"1px solid #f85a3e\",\n cursor: \"pointer\",\n backgroundColor:\n imageData !== undefined && imageData.length > 0\n ? null\n : theme.palette.inputColor,\n maxWidth: 174,\n maxHeight: 174,\n }}\n onClick={() => {\n upload.click();\n }}\n >\n (upload = ref)}\n onChange={editHeaderImage}\n />\n {imageInfo}\n
    \n \n
    \n
    \n Name\n {\n const invalid = [\"#\", \":\", \".\"];\n for (var key in invalid) {\n if (e.target.value.includes(invalid[key])) {\n alert.error(\"Can't use \" + invalid[key] + \" in name\");\n return;\n }\n }\n\n if (e.target.value.length > 100) {\n alert.error(\"Choose a shorter name.\");\n return;\n }\n\n setOrgName(e.target.value);\n }}\n color=\"primary\"\n InputProps={{\n style: {\n color: \"white\",\n height: \"50px\",\n fontSize: \"1em\",\n },\n classes: {\n notchedOutline: classes.notchedOutline,\n },\n }}\n />\n
    \n Description\n
    \n {\n setOrgDescription(e.target.value);\n }}\n InputProps={{\n classes: {\n notchedOutline: classes.notchedOutline,\n },\n style: {\n color: \"white\",\n },\n }}\n />\n
    \n {orgSaveButton}\n
    \n
    \n
    \n
    \n
    \n );\n};\n\nexport default OrgHeader;\n","import React, { useEffect } from \"react\";\r\n\r\nimport { makeStyles } from \"@material-ui/styles\";\r\nimport { useTheme } from \"@material-ui/core/styles\";\r\nimport { useAlert } from \"react-alert\";\r\n\r\nimport {\r\n FormControl,\r\n InputLabel,\r\n Paper,\r\n OutlinedInput,\r\n Checkbox,\r\n Card,\r\n Tooltip,\r\n FormControlLabel,\r\n Typography,\r\n Switch,\r\n Select,\r\n MenuItem,\r\n Divider,\r\n TextField,\r\n Button,\r\n Tabs,\r\n Tab,\r\n Grid,\r\n} from \"@material-ui/core\";\r\n\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport ExpandLessIcon from \"@material-ui/icons/ExpandLess\";\r\nimport ExpandMoreIcon from \"@material-ui/icons/ExpandMore\";\r\nimport SaveIcon from \"@material-ui/icons/Save\";\r\n\r\nconst useStyles = makeStyles({\r\n notchedOutline: {\r\n borderColor: \"#f85a3e !important\",\r\n },\r\n});\r\n\r\nconst OrgHeaderexpanded = (props) => {\r\n const {\r\n userdata,\r\n selectedOrganization,\r\n setSelectedOrganization,\r\n globalUrl,\r\n isCloud,\r\n\t\tadminTab,\r\n } = props;\r\n\r\n const theme = useTheme();\r\n const alert = useAlert();\r\n const classes = useStyles();\r\n const defaultBranch = \"master\";\r\n\r\n const [orgName, setOrgName] = React.useState(selectedOrganization.name);\r\n const [orgDescription, setOrgDescription] = React.useState(\r\n selectedOrganization.description\r\n );\r\n\r\n const [appDownloadUrl, setAppDownloadUrl] = React.useState(\r\n selectedOrganization.defaults === undefined\r\n ? \"https://github.com/frikky/shuffle-apps\"\r\n : selectedOrganization.defaults.app_download_repo === undefined ||\r\n selectedOrganization.defaults.app_download_repo.length === 0\r\n ? \"https://github.com/frikky/shuffle-apps\"\r\n : selectedOrganization.defaults.app_download_repo\r\n );\r\n const [appDownloadBranch, setAppDownloadBranch] = React.useState(\r\n selectedOrganization.defaults === undefined\r\n ? defaultBranch\r\n : selectedOrganization.defaults.app_download_branch === undefined ||\r\n selectedOrganization.defaults.app_download_branch.length === 0\r\n ? defaultBranch\r\n : selectedOrganization.defaults.app_download_branch\r\n );\r\n const [workflowDownloadUrl, setWorkflowDownloadUrl] = React.useState(\r\n selectedOrganization.defaults === undefined\r\n ? \"https://github.com/frikky/shuffle-apps\"\r\n : selectedOrganization.defaults.workflow_download_repo === undefined ||\r\n selectedOrganization.defaults.workflow_download_repo.length === 0\r\n ? \"https://github.com/frikky/shuffle-workflows\"\r\n : selectedOrganization.defaults.workflow_download_repo\r\n );\r\n const [workflowDownloadBranch, setWorkflowDownloadBranch] = React.useState(\r\n selectedOrganization.defaults === undefined\r\n ? defaultBranch\r\n : selectedOrganization.defaults.workflow_download_branch === undefined ||\r\n selectedOrganization.defaults.workflow_download_branch.length === 0\r\n ? defaultBranch\r\n : selectedOrganization.defaults.workflow_download_branch\r\n );\r\n const [ssoEntrypoint, setSsoEntrypoint] = React.useState(\r\n selectedOrganization.sso_config === undefined\r\n ? \"\"\r\n : selectedOrganization.sso_config.sso_entrypoint === undefined ||\r\n selectedOrganization.sso_config.sso_entrypoint.length === 0\r\n ? \"\"\r\n : selectedOrganization.sso_config.sso_entrypoint\r\n );\r\n const [ssoCertificate, setSsoCertificate] = React.useState(\r\n selectedOrganization.sso_config === undefined\r\n ? \"\"\r\n : selectedOrganization.sso_config.sso_certificate === undefined ||\r\n selectedOrganization.sso_config.sso_certificate.length === 0\r\n ? \"\"\r\n : selectedOrganization.sso_config.sso_certificate\r\n );\r\n const [notificationWorkflow, setNotificationWorkflow] = React.useState(\r\n selectedOrganization.defaults === undefined\r\n ? \"\"\r\n : selectedOrganization.defaults.notification_workflow === undefined ||\r\n selectedOrganization.defaults.notification_workflow.length === 0\r\n ? \"\"\r\n : selectedOrganization.defaults.notification_workflow\r\n );\r\n\r\n const [documentationReference, setDocumentationReference] = React.useState(\r\n selectedOrganization.defaults === undefined\r\n ? \"\"\r\n : selectedOrganization.defaults.documentation_reference === undefined ||\r\n selectedOrganization.defaults.documentation_reference.length === 0\r\n ? \"\"\r\n : selectedOrganization.defaults.documentation_reference\r\n );\r\n const [openidClientId, setOpenidClientId] = React.useState(\r\n selectedOrganization.sso_config === undefined\r\n ? \"\"\r\n : selectedOrganization.sso_config.client_id === undefined ||\r\n selectedOrganization.sso_config.client_id.length === 0\r\n ? \"\"\r\n : selectedOrganization.sso_config.client_id\r\n );\r\n const [openidClientSecret, setOpenidClientSecret] = React.useState(\r\n selectedOrganization.sso_config === undefined\r\n ? \"\"\r\n : selectedOrganization.sso_config.client_secret === undefined ||\r\n selectedOrganization.sso_config.client_secret.length === 0\r\n ? \"\"\r\n : selectedOrganization.sso_config.client_secret\r\n );\r\n const [openidAuthorization, setOpenidAuthorization] = React.useState(\r\n selectedOrganization.sso_config === undefined\r\n ? \"\"\r\n : selectedOrganization.sso_config.openid_authorization === undefined ||\r\n selectedOrganization.sso_config.openid_authorization.length === 0\r\n ? \"\"\r\n : selectedOrganization.sso_config.openid_authorization\r\n );\r\n const [openidToken, setOpenidToken] = React.useState(\r\n selectedOrganization.sso_config === undefined\r\n ? \"\"\r\n : selectedOrganization.sso_config.openid_token === undefined ||\r\n selectedOrganization.sso_config.openid_token.length === 0\r\n ? \"\"\r\n : selectedOrganization.sso_config.openid_token\r\n\t)\r\n\r\n const handleEditOrg = (\r\n name,\r\n description,\r\n orgId,\r\n image,\r\n defaults,\r\n sso_config\r\n ) => {\r\n\r\n const data = {\r\n name: name,\r\n description: description,\r\n org_id: orgId,\r\n image: image,\r\n defaults: defaults,\r\n sso_config: sso_config,\r\n };\r\n\r\n const url = globalUrl + `/api/v1/orgs/${selectedOrganization.id}`;\r\n fetch(url, {\r\n mode: \"cors\",\r\n method: \"POST\",\r\n body: JSON.stringify(data),\r\n credentials: \"include\",\r\n crossDomain: true,\r\n withCredentials: true,\r\n headers: {\r\n \"Content-Type\": \"application/json; charset=utf-8\",\r\n },\r\n })\r\n .then((response) =>\r\n response.json().then((responseJson) => {\r\n if (responseJson[\"success\"] === false) {\r\n alert.error(\"Failed updating org: \", responseJson.reason);\r\n } else {\r\n alert.success(\"Successfully edited org!\");\r\n }\r\n })\r\n )\r\n .catch((error) => {\r\n alert.error(\"Err: \" + error.toString());\r\n });\r\n };\r\n\r\n const orgSaveButton = (\r\n \r\n \r\n handleEditOrg(\r\n orgName,\r\n orgDescription,\r\n selectedOrganization.id,\r\n selectedOrganization.image,\r\n {\r\n app_download_repo: appDownloadUrl,\r\n app_download_branch: appDownloadBranch,\r\n workflow_download_repo: workflowDownloadUrl,\r\n workflow_download_branch: workflowDownloadBranch,\r\n notification_workflow: notificationWorkflow,\r\n documentation_reference: documentationReference,\r\n },\r\n {\r\n sso_entrypoint: ssoEntrypoint,\r\n sso_certificate: ssoCertificate,\r\n client_id: openidClientId,\r\n client_secret: openidClientSecret,\r\n openid_authorization: openidAuthorization,\r\n openid_token: openidToken,\r\n }\r\n )\r\n }\r\n >\r\n \r\n \r\n \r\n );\r\n\r\n\treturn (\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNotification Workflow ID\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tsetNotificationWorkflow(e.target.value);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tInputProps={{\r\n\t\t\t\t\t\t\t\tclasses: {\r\n\t\t\t\t\t\t\t\t\tnotchedOutline: classes.notchedOutline,\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tstyle: {\r\n\t\t\t\t\t\t\t\t\tcolor: \"white\",\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\r\n\t\t\t\t \r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tOrg Documentation reference\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tsetDocumentationReference(e.target.value);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tInputProps={{\r\n\t\t\t\t\t\t\t\tclasses: {\r\n\t\t\t\t\t\t\t\t\tnotchedOutline: classes.notchedOutline,\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tstyle: {\r\n\t\t\t\t\t\t\t\t\tcolor: \"white\",\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t{isCloud ? null : \r\n\t\t\t\t\r\n\t\t\t\t\tOpenID connect\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tClient ID\r\n\t\t\t\t\t\t\t\t 0\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tid=\"outlined-with-placeholder\"\r\n\t\t\t\t\t\t\t\t\tmargin=\"normal\"\r\n\t\t\t\t\t\t\t\t\tvariant=\"outlined\"\r\n\t\t\t\t\t\t\t\t\tplaceholder=\"The OpenID client ID from the identity provider\"\r\n\t\t\t\t\t\t\t\t\tvalue={openidClientId}\r\n\t\t\t\t\t\t\t\t\tonChange={(e) => {\r\n\t\t\t\t\t\t\t\t\t\tsetOpenidClientId(e.target.value);\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tInputProps={{\r\n\t\t\t\t\t\t\t\t\t\tclasses: {\r\n\t\t\t\t\t\t\t\t\t\t\tnotchedOutline: classes.notchedOutline,\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\tstyle: {\r\n\t\t\t\t\t\t\t\t\t\t\tcolor: \"white\",\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tClient Secret (optional)\r\n\t\t\t\t\t\t\t\t 0\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tid=\"outlined-with-placeholder\"\r\n\t\t\t\t\t\t\t\t\tmargin=\"normal\"\r\n\t\t\t\t\t\t\t\t\tvariant=\"outlined\"\r\n\t\t\t\t\t\t\t\t\tplaceholder=\"The OpenID client secret - DONT use this if dealing with implicit auth / PKCE\"\r\n\t\t\t\t\t\t\t\t\tvalue={openidClientSecret}\r\n\t\t\t\t\t\t\t\t\tonChange={(e) => {\r\n\t\t\t\t\t\t\t\t\t\tsetOpenidClientSecret(e.target.value);\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tInputProps={{\r\n\t\t\t\t\t\t\t\t\t\tclasses: {\r\n\t\t\t\t\t\t\t\t\t\t\tnotchedOutline: classes.notchedOutline,\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\tstyle: {\r\n\t\t\t\t\t\t\t\t\t\t\tcolor: \"white\",\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tAuthorization URL\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tsetOpenidAuthorization(e.target.value)\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tInputProps={{\r\n\t\t\t\t\t\t\t\t\t\tclasses: {\r\n\t\t\t\t\t\t\t\t\t\t\tnotchedOutline: classes.notchedOutline,\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\tstyle: {\r\n\t\t\t\t\t\t\t\t\t\t\tcolor: \"white\",\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tToken URL\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tsetOpenidToken(e.target.value)\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tInputProps={{\r\n\t\t\t\t\t\t\t\t\t\tclasses: {\r\n\t\t\t\t\t\t\t\t\t\t\tnotchedOutline: classes.notchedOutline,\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\tstyle: {\r\n\t\t\t\t\t\t\t\t\t\t\tcolor: \"white\",\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t\t{/*isCloud ? null : */}\r\n\t\t\t\t\r\n\t\t\t\t\tSAML SSO (v1.1)\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tSSO Entrypoint (IdP)\r\n\t\t\t\t\t\t\t\t 0\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tid=\"outlined-with-placeholder\"\r\n\t\t\t\t\t\t\t\t\tmargin=\"normal\"\r\n\t\t\t\t\t\t\t\t\tvariant=\"outlined\"\r\n\t\t\t\t\t\t\t\t\tplaceholder=\"The entrypoint URL from your provider\"\r\n\t\t\t\t\t\t\t\t\tvalue={ssoEntrypoint}\r\n\t\t\t\t\t\t\t\t\tonChange={(e) => {\r\n\t\t\t\t\t\t\t\t\t\tsetSsoEntrypoint(e.target.value);\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tInputProps={{\r\n\t\t\t\t\t\t\t\t\t\tclasses: {\r\n\t\t\t\t\t\t\t\t\t\t\tnotchedOutline: classes.notchedOutline,\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\tstyle: {\r\n\t\t\t\t\t\t\t\t\t\t\tcolor: \"white\",\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tSSO Certificate (X509)\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tsetSsoCertificate(e.target.value);\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tInputProps={{\r\n\t\t\t\t\t\t\t\t\t\tclasses: {\r\n\t\t\t\t\t\t\t\t\t\t\tnotchedOutline: classes.notchedOutline,\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\tstyle: {\r\n\t\t\t\t\t\t\t\t\t\t\tcolor: \"white\",\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t{isCloud ? \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tIdP URL for Shuffle: https://shuffler.io/api/v1/login_sso\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t: null}\r\n\t\t\t\t\r\n\t\t\t\t{isCloud ? null : (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tApp Download URL\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tsetAppDownloadUrl(e.target.value);\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tInputProps={{\r\n\t\t\t\t\t\t\t\t\tclasses: {\r\n\t\t\t\t\t\t\t\t\t\tnotchedOutline: classes.notchedOutline,\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\tstyle: {\r\n\t\t\t\t\t\t\t\t\t\tcolor: \"white\",\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\t{isCloud ? null : (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tApp Download Branch\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tsetAppDownloadBranch(e.target.value);\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tInputProps={{\r\n\t\t\t\t\t\t\t\t\tclasses: {\r\n\t\t\t\t\t\t\t\t\t\tnotchedOutline: classes.notchedOutline,\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\tstyle: {\r\n\t\t\t\t\t\t\t\t\t\tcolor: \"white\",\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\t{isCloud ? null : (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tWorkflow Download URL\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tsetWorkflowDownloadUrl(e.target.value);\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tInputProps={{\r\n\t\t\t\t\t\t\t\t\tclasses: {\r\n\t\t\t\t\t\t\t\t\t\tnotchedOutline: classes.notchedOutline,\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\tstyle: {\r\n\t\t\t\t\t\t\t\t\t\tcolor: \"white\",\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\t{isCloud ? null : (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tWorkflow Download Branch\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tsetWorkflowDownloadBranch(e.target.value);\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tInputProps={{\r\n\t\t\t\t\t\t\t\t\tclasses: {\r\n\t\t\t\t\t\t\t\t\t\tnotchedOutline: classes.notchedOutline,\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\tstyle: {\r\n\t\t\t\t\t\t\t\t\t\tcolor: \"white\",\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t
    \r\n\t\t\t\t\t{orgSaveButton}\r\n\t\t\t\t
    \r\n\t\t\t\t{/*\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{expanded ? \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\t*/}\r\n\t\t\t
    \r\n\t\t
    \r\n\t)\r\n}\r\n\r\nexport default OrgHeaderexpanded;","import React, { useState, useEffect } from \"react\";\r\nimport ReactGA from 'react-ga4';\r\n\r\nimport { useTheme } from \"@material-ui/core/styles\";\r\nimport {\r\n\tPaper,\r\n Typography,\r\n\tDivider,\r\n\tButton,\r\n\tGrid,\r\n\tCard,\r\n} from \"@material-ui/core\";\r\n\r\nimport { useAlert } from \"react-alert\";\r\nimport { typecost, typecost_single, } from \"../views/HandlePaymentNew.jsx\";\r\n\r\nconst Billing = (props) => {\r\n const { globalUrl, userdata, serverside, billingInfo, stripeKey, selectedOrganization, handleGetOrg, } = props;\r\n\tconsole.log(\"Billing: \", billingInfo);\r\n const theme = useTheme();\r\n const alert = useAlert();\r\n\r\n\tconst stripe = typeof window === 'undefined' || window.location === undefined ? \"\" : props.stripeKey === undefined ? \"\" : window.Stripe ? window.Stripe(props.stripeKey) : \"\"\r\n\tconsole.log(\"Stripe: \", stripe)\r\n\r\n\tconst paperStyle = {\r\n\t\tpadding: 20,\r\n\t\theight: \"100%\",\r\n\t\twidth: \"100%\",\r\n\t\tbackgroundColor: theme.palette.surfaceColor,\r\n\t\tborder: \"1px solid rgba(255,255,255,0.3)\",\r\n\t\tmarginRight: 10, \r\n\t}\r\n\r\n const isCloud =\r\n window.location.host === \"localhost:3002\" ||\r\n window.location.host === \"shuffler.io\";\r\n\r\n\tbillingInfo.subscription = {\r\n\t\t\"active\": true,\r\n\t\t\"name\": \"Pay as you go\",\r\n\t\t\"price\": typecost_single,\r\n\t\t\"currency\": \"USD\",\r\n\t\t\"currency_text\": \"$\",\r\n\t\t\"interval\": \"app run / month\",\r\n\t\t\"description\": \"Pay as you go\",\r\n\t\t\"features\": [\r\n\t\t\t\"Includes 10.000 app run/month for free. \",\r\n\t\t\t\"Pay for what you use with no minimum commitment and cancel anytime.\",\r\n\t\t],\r\n\t\t\"limit\": 10000,\r\n\t}\r\n\r\n\r\n\tconst handleStripeRedirect = () => {\r\n\t\t//var priceItem = \"price_1MRNF1DzMUgUjxHSfFTUb2Xh\"\r\n\t\tif (stripe == \"\") {\r\n\t\t\tconsole.log(\"Stripe not loaded\")\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tvar priceItem = \"price_1MROFrDzMUgUjxHShcSxgHO1\"\r\n\r\n\t\tconst successUrl = `${window.location.origin}/admin?admin_tab=billing&payment=success`\r\n\t\tconst failUrl = `${window.location.origin}/admin?admin_tab=billing&payment=failure`\r\n\t\tvar checkoutObject = {\r\n\t\t\tlineItems: [\r\n\t\t\t\t{\r\n\t\t\t\t\tprice: priceItem, \r\n\t\t\t\t\tquantity: 1\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t\tmode: \"subscription\",\r\n\t\t\tbillingAddressCollection: \"auto\",\r\n\t \tsuccessUrl: successUrl,\r\n\t \tcancelUrl: failUrl,\r\n\t\t\tclientReferenceId: props.userdata.active_org.id,\r\n\t\t}\r\n\t\t//submitType: \"donate\",\r\n\r\n\t\tstripe.redirectToCheckout(checkoutObject)\r\n\t\t.then(function (result) {\r\n\t\t\tconsole.log(\"SUCCESS STRIPE?: \", result)\r\n\r\n\t\t\tReactGA.event({\r\n\t\t\t\tcategory: \"pricing\",\r\n\t\t\t\taction: \"add_card_success\",\r\n\t\t\t\tlabel: \"\",\r\n\t\t\t})\r\n\t\t})\r\n\t\t.catch(function(error) {\r\n\t\t\tconsole.error(\"STRIPE ERROR: \", error)\r\n\r\n\t\t\tReactGA.event({\r\n\t\t\t\tcategory: \"pricing\",\r\n\t\t\t\taction: \"add_card_error\",\r\n\t\t\t\tlabel: \"\",\r\n\t\t\t})\r\n\t\t});\r\n\t}\r\n\r\n\tconst cancelSubscriptions = (subscription_id) => {\r\n const orgId = selectedOrganization.id;\r\n const data = {\r\n subscription_id: subscription_id,\r\n action: \"cancel\",\r\n org_id: selectedOrganization.id,\r\n };\r\n\r\n const url = globalUrl + `/api/v1/orgs/${orgId}/cancel`;\r\n fetch(url, {\r\n mode: \"cors\",\r\n method: \"POST\",\r\n body: JSON.stringify(data),\r\n credentials: \"include\",\r\n crossDomain: true,\r\n withCredentials: true,\r\n headers: {\r\n \"Content-Type\": \"application/json; charset=utf-8\",\r\n },\r\n })\r\n .then(function (response) {\r\n if (response.status !== 200) {\r\n console.log(\"Error in response\");\r\n }\r\n\r\n\t\t\t\tif (handleGetOrg != undefined) {\r\n \thandleGetOrg(selectedOrganization.id);\r\n\t\t\t\t}\r\n\r\n return response.json();\r\n })\r\n .then(function (responseJson) {\r\n if (responseJson.success !== undefined && responseJson.success) {\r\n alert.success(\"Successfully stopped subscription!\");\r\n } else {\r\n alert.error(\"Failed stopping subscription. Please contact us.\");\r\n }\r\n })\r\n .catch(function (error) {\r\n console.log(\"Error: \", error);\r\n alert.error(\"Failed stopping subscription. Please contact us.\");\r\n });\r\n };\r\n\r\n\tconst SubscriptionObject = (props) => {\r\n \tconst { globalUrl, userdata, serverside, billingInfo, stripeKey, selectedOrganization, handleGetOrg, subscription, } = props;\r\n\r\n\t\tconsole.log(\"Sub: \", subscription)\r\n\t\tvar top_text = \"Base Access\"\r\n\t\tif (subscription.limit === undefined && subscription.level !== undefined) {\r\n\r\n\t\t\tsubscription.name = \"Enterprise\"\r\n\t\t\tsubscription.currency_text = \"$\"\r\n\t\t\tsubscription.price = subscription.level*180\r\n\t\t\tsubscription.limit = subscription.level*100000\r\n\t\t\tsubscription.interval = subscription.recurrence\r\n\t\t\tsubscription.features = [\r\n\t\t\t\t\"Includes \" + subscription.limit + \" app runs/month. \",\r\n\t\t\t\t\"Multi-Tenancy and Region-Selection\", \r\n\t\t\t\t\"And all other features from /pricing\",\r\n\t\t\t]\r\n\t\t}\r\n\r\n\t\tif (subscription.name === \"Enterprise\" && subscription.active === true) {\r\n\t\t\ttop_text = \"Current Plan\"\r\n\t\t}\r\n\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{top_text}\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{subscription.name}\r\n\t\t\t\t\t\t \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{subscription.currency_text}{subscription.price} \r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t/ {subscription.interval}\r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tFeatures\r\n\t\t\t\t\t\t \r\n\t\t\t\t\t\t
      \r\n\t\t\t\t\t\t{subscription.features !== undefined && subscription.features !== null ?\r\n\t\t\t\t\t\t\tsubscription.features.map((feature, index) => {\r\n\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{feature}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t: null}\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t{/*subscription.name === \"Pay as you go\" && subscription.limit <= 10000 ?\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tYou are not subscribed to any plan and are using the free plan with max 10,000 apps per month. Activate billing to de-activate this limit.\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t: null*/}\r\n\t\t
    \r\n\t\t)\r\n\t}\r\n\r\n\r\n\treturn (\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\tBilling\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\tWe use Stripe to manage subscriptions and do not store any of your billing information. You can manage your subscription and billing information below.\r\n\t\t\t\r\n\t\t\t
    \r\n\t\t\t\t{billingInfo.subscription !== undefined && billingInfo.subscription !== null ?\r\n\t\t\t\t\t\r\n\t\t\t\t: null}\r\n\t\t\t\t{isCloud &&\r\n\t\t\t\t\tselectedOrganization.subscriptions !== undefined &&\r\n\t\t\t\t\tselectedOrganization.subscriptions !== null &&\r\n\t\t\t\t\tselectedOrganization.subscriptions.length > 0 ? \r\n\r\n\t\t\t\t\t\tselectedOrganization.subscriptions\r\n\t\t\t\t\t\t\t.reverse()\r\n\t\t\t\t\t\t\t.map((sub, index) => {\r\n\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t: null}\r\n\t\t\t\t\t\t\t\t\t{/*\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\tQuantity: {sub.level}\r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\tRecurrence: {sub.recurrence}\r\n\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t{sub.active ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\tStarted:{\" \"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{new Date(sub.startdate * 1000).toISOString()}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcancelSubscriptions(sub.reference);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tCancel subscription\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\tCancelled:{\" \"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{new Date(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsub.cancellationdate * 1000\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t).toISOString()}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tStatus: Deactivated\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t*/}\r\n\t
    \r\n\t\t
    \r\n\t)\r\n}\r\n\r\nexport default Billing;\r\n","import React, { useState, useEffect } from \"react\";\nimport ReactGA from 'react-ga4';\nimport theme from \"../theme.jsx\";\n\nimport { useTheme } from \"@material-ui/core/styles\";\nimport {\n\tPaper,\n Typography,\n\tDivider,\n\tButton,\n\tGrid,\n\tCard,\n} from \"@material-ui/core\";\n\nimport { useAlert } from \"react-alert\";\n\nconst Branding = (props) => {\n const { globalUrl, userdata, serverside, billingInfo, stripeKey, selectedOrganization, handleGetOrg, } = props;\n const alert = useAlert();\n\tconst [publishingInfo, setPublishingInfo] = useState(\"\");\n\n\t// Should enable / disable org branding\n const handleChangePublishing = () => {\n\t\tconsole.log(\"Handle change publishing\");\n\t}\n\n\tconst isOrganizationReady = () => {\n\t\t// A simple checklist to ensure the button shows up properly\n\t\tif (selectedOrganization.name === selectedOrganization.org) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (selectedOrganization.large_image === \"\" || selectedOrganization.large_image === theme.palette.defaultImage) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true\n\t}\n\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\tBranding\t\n\t\t\t\n\t\t\t\n\t\t\t\tYou can customize your organization's branding by uploading a logo, changing the color scheme and a lot more. \n\t\t\t\n\n\t\t\t\n\t\t\t

    \n\t\t\t\tCreator Network \n\t\t\t

    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tBy changing publishing settings, you agree to our Terms of Service, and acknowledge that your organization's non-sensitive data will be turned into a creator account. Support: support@shuffler.io\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\treturn isOrganizationReady()\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\thandleChangePublishing();\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tJoin Creator Network \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{publishingInfo}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t)\n}\n\nexport default Branding;\n","import React, { useState, useEffect } from \"react\";\n\nimport {\n IconButton,\n List,\n ListItem,\n ListItemText,\n ListItemAvatar,\n ListItemSecondaryAction,\n Tooltip,\n\tButton,\n\tFormControl,\n\tInputLabel,\n\tTextField,\n\tDivider,\n\tSelect,\n\tMenuItem,\n} from \"@material-ui/core\";\n\nimport {\n OpenInNew as OpenInNewIcon,\n Edit as EditIcon,\n CloudDownload as CloudDownloadIcon,\n Delete as DeleteIcon,\n FileCopy as FileCopyIcon,\n\tCached as CachedIcon,\n Publish as PublishIcon,\n\tClear as ClearIcon,\n\tAdd as AddIcon,\n} from \"@material-ui/icons\";\n\nimport { useAlert } from \"react-alert\";\nimport Dropzone from \"../components/Dropzone.jsx\";\nimport CodeEditor from \"../components/ShuffleCodeEditor.jsx\";\nimport theme from \"../theme.jsx\";\n\nconst Files = (props) => {\n const { globalUrl, userdata, serverside, selectedOrganization, isCloud, } = props;\n\n const [files, setFiles] = React.useState([]);\n const [selectedNamespace, setSelectedNamespace] = React.useState(\"default\");\n const [openFileId, setOpenFileId] = React.useState(false);\n const [fileNamespaces, setFileNamespaces] = React.useState([]);\n const [fileContent, setFileContent] = React.useState(\"\");\n const [openEditor, setOpenEditor] = React.useState(false);\n const [renderTextBox, setRenderTextBox] = React.useState(false);\n\n const alert = useAlert();\n const allowedFileTypes = [\"txt\", \"py\", \"yaml\", \"yml\",\"json\", \"html\", \"js\", \"csv\", \"log\"]\n var upload = \"\";\n\n const handleKeyDown = (event) => {\n if (event.key === 'Enter') {\n\n console.log('do validate')\n console.log(\"new namespace name->\",event.target.value); \n fileNamespaces.push(event.target.value);\n setSelectedNamespace(event.target.value);\n setRenderTextBox(false);\n }\n\n if (event.key === 'Escape'){ // not working for some reasons\n console.log('escape pressed')\n setRenderTextBox(false); \n }\n\n }\n\n\tconst runUpdateText = (text) =>{\n fetch(`${globalUrl}/api/v1/files/${openFileId}/edit`, {\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body:text,\n credentials: \"include\",\n }).then((response) => {\n if (response.status !== 200) {\n console.log(\"Can't update file\");\n }\n return response.json();\n })\n //console.log(text);\n }\n\n\tconst getFiles = () => {\n fetch(globalUrl + \"/api/v1/files\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for apps :O!\");\n return;\n }\n\n return response.json();\n })\n .then((responseJson) => {\n if (responseJson.files !== undefined && responseJson.files !== null) {\n setFiles(responseJson.files);\n } else {\n setFiles([]);\n }\n\n if (responseJson.namespaces !== undefined && responseJson.namespaces !== null) {\n setFileNamespaces(responseJson.namespaces);\n }\n })\n .catch((error) => {\n alert.error(error.toString());\n });\n };\n\n\tuseEffect(() => {\n\t\tgetFiles();\n\t}, []);\n\n const deleteFile = (file) => {\n fetch(globalUrl + \"/api/v1/files/\" + file.id, {\n method: \"DELETE\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for file delete :O!\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n if (responseJson.success) {\n alert.info(\"Successfully deleted file \" + file.name);\n } else if (\n responseJson.reason !== undefined &&\n responseJson.reason !== null\n ) {\n alert.error(\"Failed to delete file: \" + responseJson.reason);\n }\n setTimeout(() => {\n getFiles();\n }, 1500);\n\n console.log(responseJson);\n })\n .catch((error) => {\n alert.error(error.toString());\n });\n };\n\n const readFileData = (file) => {\n fetch(globalUrl + \"/api/v1/files/\" + file.id + \"/content\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for file :O!\");\n return \"\";\n }\n return response.text();\n })\n .then((respdata) => {\n // console.log(\"respdata ->\", respdata);\n // console.log(\"respdata type ->\", typeof(respdata));\n \n if (respdata.length === 0) {\n alert.error(\"Failed getting file. Is it deleted?\");\n return;\n }\n return respdata\n })\n .then((responseData) => {\n \n setFileContent(responseData);\n //console.log(\"filecontent state \",fileContent);\n })\n .catch((error) => {\n alert.error(error.toString());\n });\n };\n\n\tconst downloadFile = (file) => {\n fetch(globalUrl + \"/api/v1/files/\" + file.id + \"/content\", {\n method: \"GET\",\n credentials: \"include\",\n })\n\t\t.then((response) => {\n\t\t\tif (response.status !== 200) {\n\t\t\t\tconsole.log(\"Status not 200 for apps :O!\");\n\t\t\t\treturn \"\";\n\t\t\t}\n\n\t\t\tconsole.log(\"Resp: \", response)\n\n\t\t\treturn response.blob()\n\t\t})\n .then((respdata) => {\n if (respdata.length === 0) {\n alert.error(\"Failed getting file. Is it deleted?\");\n return;\n }\n\n var blob = new Blob([respdata], {\n type: \"application/octet-stream\",\n });\n\n var url = URL.createObjectURL(blob);\n var link = document.createElement(\"a\");\n link.setAttribute(\"href\", url);\n link.setAttribute(\"download\", `${file.filename}`);\n var event = document.createEvent(\"MouseEvents\");\n event.initMouseEvent(\n \"click\",\n true,\n true,\n window,\n 1,\n 0,\n 0,\n 0,\n 0,\n false,\n false,\n false,\n false,\n 0,\n null\n );\n link.dispatchEvent(event);\n\n //return response.json()\n })\n .then((responseJson) => {\n //console.log(responseJson)\n //setSchedules(responseJson)\n })\n .catch((error) => {\n alert.error(error.toString());\n });\n };\n\n\tconst handleCreateFile = (filename, file) => {\n var data = {\n filename: filename,\n org_id: selectedOrganization.id,\n workflow_id: \"global\",\n };\n\n if (\n selectedNamespace !== undefined &&\n selectedNamespace !== null &&\n selectedNamespace.length > 0 &&\n selectedNamespace !== \"default\"\n ) {\n data.namespace = selectedNamespace;\n }\n\n fetch(globalUrl + \"/api/v1/files/create\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n body: JSON.stringify(data),\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for apps :O!\");\n return;\n }\n\n return response.json();\n })\n .then((responseJson) => {\n //console.log(\"RESP: \", responseJson)\n if (responseJson.success === true) {\n handleFileUpload(responseJson.id, file);\n } else {\n alert.error(\"Failed to upload file \", filename);\n }\n })\n .catch((error) => {\n alert.error(\"Failed to upload file \", filename);\n console.log(error.toString());\n });\n };\n\n\n\n\tconst handleFileUpload = (file_id, file) => {\n //console.log(\"FILE: \", file_id, file)\n fetch(`${globalUrl}/api/v1/files/${file_id}/upload`, {\n method: \"POST\",\n credentials: \"include\",\n body: file,\n })\n .then((response) => {\n if (response.status !== 200 && response.status !== 201) {\n console.log(\"Status not 200 for apps :O!\");\n alert.error(\"File was created, but failed to upload.\");\n return;\n }\n\n return response.json();\n })\n .then((responseJson) => {\n //console.log(\"RESPONSE: \", responseJson)\n //setFiles(responseJson)\n })\n .catch((error) => {\n alert.error(error.toString());\n });\n };\n\n const uploadFiles = (files) => {\n for (var key in files) {\n try {\n const filename = files[key].name;\n var filedata = new FormData();\n filedata.append(\"shuffle_file\", files[key]);\n\n if (typeof files[key] === \"object\") {\n handleCreateFile(filename, filedata);\n }\n\n /*\n\t\t\t\treader.addEventListener('load', (e) => {\n\t\t\t\t\tvar data = e.target.result;\n\t\t\t\t\tsetIsDropzone(false)\n\t\t\t\t\tconsole.log(filename)\t\n\t\t\t\t\tconsole.log(data)\n\t\t\t\t\tconsole.log(files[key])\n\t\t\t\t})\n\t\t\t\treader.readAsText(files[key])\n\t\t\t\t*/\n } catch (e) {\n console.log(\"Error in dropzone: \", e);\n }\n }\n\n setTimeout(() => {\n getFiles();\n }, 2500);\n };\n\n const uploadFile = (e) => {\n const isDropzone =\n e.dataTransfer === undefined ? false : e.dataTransfer.files.length > 0;\n const files = isDropzone ? e.dataTransfer.files : e.target.files;\n\n //const reader = new FileReader();\n //alert.info(\"Starting fileupload\")\n uploadFiles(files);\n };\n\n\treturn (\n\t\t 1366 ? 1366 : 1200,\n\t\t\t\tmargin: \"auto\",\n\t\t\t\tpadding: 20,\n\t\t\t}}\n\t\t\tonDrop={uploadFile}\n\t\t>\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t

    Files

    \n\t\t\t\t\t\n\t\t\t\t\t\tFiles from Workflows.{\" \"}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tLearn more\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t {\n\t\t\t\t\t\tupload.click();\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t Upload files\n\t\t\t\t\n\t\t\t\t{/* */}\n\t\t\t\t (upload = ref)}\n\t\t\t\t\tonChange={(event) => {\n\t\t\t\t\t\t//const file = event.target.value\n\t\t\t\t\t\t//const fileObject = URL.createObjectURL(actualFile)\n\t\t\t\t\t\t//setFile(fileObject)\n\t\t\t\t\t\t//const files = event.target.files[0]\n\t\t\t\t\t\tuploadFiles(event.target.files);\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\t getFiles()}\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t{fileNamespaces !== undefined &&\n\t\t\t\tfileNamespaces !== null &&\n\t\t\t\tfileNamespaces.length > 1 ? (\n\t\t\t\t\t\n\t\t\t\t\t\tFile Category\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tconsole.log(\"CHANGE NAMESPACE: \", event.target);\n\t\t\t\t\t\t\t\tsetSelectedNamespace(event.target.value);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{fileNamespaces.map((data, index) => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{data}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t) : null}\n\t\t\t\t
    \n\t\t\t\t{renderTextBox ? \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tsetRenderTextBox(false);\n\t\t\t\t\t\t\tconsole.log(\" close clicked\")\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t:\n\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tsetRenderTextBox(true);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t }\n\t\t\t\t{renderTextBox && {\n\t\t\t\t\t\t\t\thandleKeyDown(event);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tInputProps={{\n\t\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\t\tcolor: \"white\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\t\tplaceholder=\"File category name\"\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\tmargin=\"dense\"\n\t\t\t\t\t\t\tdefaultValue={\"\"}\n\t\t\t\t\t\t\tautoFocus\n\t\t\t\t\t\t/>}
    \n\n\t\t\t\t\n\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{files === undefined || files === null || files.length === 0 ? null :\n\t\t\t\t\t\tfiles.map((file, index) => {\n\t\t\t\t\t\t\tif (file.namespace === \"\") {\n\t\t\t\t\t\t\t\tfile.namespace = \"default\";\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (file.namespace !== selectedNamespace) {\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tvar bgColor = \"#27292d\";\n\t\t\t\t\t\t\tif (index % 2 === 0) {\n\t\t\t\t\t\t\t\tbgColor = \"#1f2023\";\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst filenamesplit = file.filename.split(\".\")\n\t\t\t\t\t\t\tconst iseditable = file.filesize < 2000000 && file.status === \"active\" && allowedFileTypes.includes(filenamesplit[filenamesplit.length-1])\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\tminWidth: 100,\n\t\t\t\t\t\t\t\t\t\t\tmaxWidth: 100,\n\t\t\t\t\t\t\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetOpenEditor(true)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetOpenFileId(file.id)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treadFileData(file)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdownloadFile(file);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst elementName = \"copy_element_shuffle\";\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar copyText =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdocument.getElementById(elementName);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcopyText !== null &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcopyText !== undefined\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst clipboard = navigator.clipboard;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (clipboard === undefined) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\talert.error(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Can only copy over HTTPS (port 3443)\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnavigator.clipboard.writeText(file.id);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcopyText.select();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcopyText.setSelectionRange(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t99999\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t); /* For mobile devices */\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t/* Copy the text inside the text field */\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdocument.execCommand(\"copy\");\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\talert.info(file.id + \" copied to clipboard\");\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdeleteFile(file);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\tminWidth: 250,\n\t\t\t\t\t\t\t\t\t\t\tmaxWidth: 250,\n\t\t\t\t\t\t\t\t\t\t\t// overflow: \"hidden\",\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\n\t\t\t
    \n\t\t\n\t)\n}\n\nexport default Files;\n","import React, { useState, useEffect } from \"react\";\n\nimport { makeStyles } from \"@material-ui/styles\";\nimport { useNavigate, Link } from \"react-router-dom\";\nimport countries from \"../components/Countries.jsx\";\nimport CodeEditor from \"../components/ShuffleCodeEditor.jsx\";\nimport getLocalCodeData from \"../components/ShuffleCodeEditor.jsx\";\nimport CacheView from \"../components/CacheView.jsx\";\nimport theme from \"../theme.jsx\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport ClearIcon from '@mui/icons-material/Clear';\nimport StorageIcon from '@mui/icons-material/Storage';\n//import ToggleButton from '@mui/material/ToggleButton';\nimport {\n FormControl,\n InputLabel,\n Paper,\n OutlinedInput,\n Checkbox,\n Card,\n Tooltip,\n FormControlLabel,\n Typography,\n Switch,\n Select,\n MenuItem,\n Divider,\n TextField,\n Button,\n ButtonGroup,\n Tabs,\n Tab,\n Grid,\n List,\n ListItem,\n ListItemText,\n ListItemAvatar,\n ListItemSecondaryAction,\n IconButton,\n Avatar,\n Zoom,\n Dialog,\n DialogTitle,\n DialogActions,\n DialogContent,\n CircularProgress,\n Box,\n\tInputAdornment,\n} from \"@material-ui/core\";\n\nimport { Autocomplete } from \"@mui/material\";\n\nimport {\n Edit as EditIcon,\n FileCopy as FileCopyIcon,\n SelectAll as SelectAllIcon,\n OpenInNew as OpenInNewIcon,\n CloudDownload as CloudDownloadIcon,\n Description as DescriptionIcon,\n Polymer as PolymerIcon,\n CheckCircle as CheckCircleIcon,\n Close as CloseIcon,\n Apps as AppsIcon,\n Image as ImageIcon,\n Delete as DeleteIcon,\n Cached as CachedIcon,\n AccessibilityNew as AccessibilityNewIcon,\n Lock as LockIcon,\n Eco as EcoIcon,\n Schedule as ScheduleIcon,\n Cloud as CloudIcon,\n Business as BusinessIcon,\n\tVisibility as VisibilityIcon,\n\tVisibilityOff as VisibilityOffIcon,\n} from \"@material-ui/icons\";\n\nimport { useAlert } from \"react-alert\";\nimport Dropzone from \"../components/Dropzone.jsx\";\nimport HandlePaymentNew from \"../views/HandlePaymentNew.jsx\";\nimport OrgHeader from \"../components/OrgHeader.jsx\";\nimport OrgHeaderexpanded from \"../components/OrgHeaderexpanded.jsx\";\nimport Billing from \"../components/Billing.jsx\";\nimport Branding from \"../components/Branding.jsx\";\nimport Files from \"../components/Files.jsx\";\nimport { display, style } from \"@mui/system\";\n//import EnvironmentStats from \"../components/EnvironmentStats.jsx\";\n\nconst useStyles = makeStyles({\n notchedOutline: {\n borderColor: \"#f85a3e !important\",\n },\n});\n\nconst ITEM_HEIGHT = 48;\nconst ITEM_PADDING_TOP = 8;\nconst MenuProps = {\n PaperProps: {\n style: {\n maxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP,\n width: 500,\n },\n },\n getContentAnchorEl: () => null,\n};\n\n\nconst FileCategoryInput = (props) => {\n const isSet = props.isSet;\n console.log(\"inside filecategoryinput\"); \n console.log(\"isset value\" , isSet);\n if (isSet){\n return (\n \n )}\n }\n\n\nconst Admin = (props) => {\n const { globalUrl, userdata, serverside, checkLogin } = props;\n\n var to_be_copied = \"\";\n const classes = useStyles();\n let navigate = useNavigate();\n\n const [firstRequest, setFirstRequest] = React.useState(true);\n const [orgRequest, setOrgRequest] = React.useState(true);\n const [modalUser, setModalUser] = React.useState({});\n const [orgName, setOrgName] = React.useState(\"\");\n const [modalOpen, setModalOpen] = React.useState(false);\n\n const [cloudSyncModalOpen, setCloudSyncModalOpen] = React.useState(false);\n const [cloudSyncApikey, setCloudSyncApikey] = React.useState(\"\");\n const [loading, setLoading] = React.useState(false);\n\n const [selectedOrganization, setSelectedOrganization] = React.useState({});\n \n //console.log(\"Selected: \", selectedOrganization)\n const [organizationFeatures, setOrganizationFeatures] = React.useState({});\n const [loginInfo, setLoginInfo] = React.useState(\"\");\n const [curTab, setCurTab] = React.useState(0);\n const [users, setUsers] = React.useState([]);\n const [organizations, setOrganizations] = React.useState([]);\n const [orgSyncResponse, setOrgSyncResponse] = React.useState(\"\");\n const [userSettings, setUserSettings] = React.useState({});\n const [matchingOrganizations, setMatchingOrganizations] = React.useState([]);\n\n const [environments, setEnvironments] = React.useState([]);\n const [authentication, setAuthentication] = React.useState([]);\n const [schedules, setSchedules] = React.useState([]);\n const [selectedUser, setSelectedUser] = React.useState({});\n const [newUsername, setNewUsername] = React.useState(\"\");\n const [newPassword, setNewPassword] = React.useState(\"\");\n const [selectedUserModalOpen, setSelectedUserModalOpen] = React.useState(false);\n const [selectedAuthentication, setSelectedAuthentication] = React.useState({});\n const [selectedAuthenticationModalOpen, setSelectedAuthenticationModalOpen] = React.useState(false);\n const [authenticationFields, setAuthenticationFields] = React.useState([]);\n const [showArchived, setShowArchived] = React.useState(false);\n const [isDropzone, setIsDropzone] = React.useState(false);\n\n const [image2FA, setImage2FA] = React.useState(\"\");\n const [value2FA, setValue2FA] = React.useState(\"\");\n const [secret2FA, setSecret2FA] = React.useState(\"\");\n const [show2faSetup, setShow2faSetup] = useState(false);\n\n const [adminTab, setAdminTab] = React.useState(1);\n\tconst [showApiKey, setShowApiKey] = useState(false);\n const [billingInfo, setBillingInfo] = React.useState({});\n\tconst [selectedStatus, setSelectedStatus] = React.useState([]);\n\n useEffect(() => {\n if (isDropzone) {\n //redirectOpenApi();\n setIsDropzone(false);\n }\n }, [isDropzone]);\n\n\n\n const isCloud = window.location.host === \"localhost:3002\" || window.location.host === \"shuffler.io\";\n\n const get2faCode = (userId) => {\n fetch(`${globalUrl}/api/v1/users/${userId}/get2fa`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for apps :O!\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n //console.log(\"RESPONSE: \", responseJson)\n if (responseJson.success === true) {\n //alert.info(responseJson.reason)\n setImage2FA(responseJson.reason);\n setSecret2FA(responseJson.extra);\n }\n })\n .catch((error) => {\n alert.error(error.toString());\n });\n };\n\n const getApps = () => {\n fetch(globalUrl + \"/api/v1/apps\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for apps :O!\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n console.log(\"apps: \", responseJson);\n //setApps(responseJson)\n //setFilteredApps(responseJson)\n //if (responseJson.length > 0) {\n //\tsetSelectedApp(responseJson[0])\n //\tif (responseJson[0].actions !== null && responseJson[0].actions.length > 0) {\n //\t\tsetSelectedAction(responseJson[0].actions[0])\n //\t} else {\n //\t\tsetSelectedAction({})\n //\t}\n //}\n })\n .catch((error) => {\n alert.error(error.toString());\n });\n };\n\n const categories = [\n {\n name: \"Ticketing\",\n apps: [\"TheHive\", \"Service-Now\", \"SecureWorks\"],\n categories: [\"tickets\", \"ticket\", \"ticketing\"],\n },\n ];\n /*\n\t\t\"SIEM\",\n\t\t\"Active Directory\",\n\t\t\"Firewalls\", \n\t\t\"Proxies web\",\n\t\t\"SIEM\", \n\t\t\"SOAR\",\n\t\t\"Mail\",\n\t\t\"EDR\",\n\t\t\"AV\", \n\t\t\"MDM/MAM\",\n\t\t\"DNS\",\n\t\t\"Ticketing platform\",\n\t\t\"TIP\",\n\t\t\"Communication\", \n\t\t\"DDOS protection\",\n\t\t\"VMS\",\n\t]\n\t*/\n\n const alert = useAlert();\n\tconst handleStatusChange = (event) => {\n\t\tconst { value } = event.target;\n\n\t\tsetSelectedStatus(value);\n \thandleEditOrg(\n\t\t\t\"\",\n\t\t\t\"\",\n\t\t\tselectedOrganization.id,\n\t\t\t\"\",\n\t\t\t{},\n\t\t\t{},\n\t\t\tvalue,\n\t\t)\t\n\t}\n\n const deleteAuthentication = (data) => {\n alert.info(\"Deleting auth \" + data.label);\n\n // Just use this one?\n const url = globalUrl + \"/api/v1/apps/authentication/\" + data.id;\n console.log(\"URL: \", url);\n fetch(url, {\n method: \"DELETE\",\n credentials: \"include\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n })\n .then((response) =>\n response.json().then((responseJson) => {\n if (responseJson[\"success\"] === false) {\n alert.error(\"Failed deleting auth\");\n } else {\n // Need to wait because query in ES is too fast\n setTimeout(() => {\n getAppAuthentication();\n }, 1000);\n //alert.success(\"Successfully deleted authentication!\")\n }\n })\n )\n .catch((error) => {\n console.log(\"Error in userdata: \", error);\n });\n };\n\n const deleteSchedule = (data) => {\n // FIXME - add some check here ROFL\n console.log(\"INPUT: \", data);\n\n // Just use this one?\n const url =\n globalUrl +\n \"/api/v1/workflows/\" +\n data[\"workflow_id\"] +\n \"/schedule/\" +\n data.id;\n console.log(\"URL: \", url);\n fetch(url, {\n method: \"DELETE\",\n credentials: \"include\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n })\n .then((response) =>\n response.json().then((responseJson) => {\n console.log(\"RESP: \", responseJson);\n if (responseJson[\"success\"] === false) {\n alert.error(\"Failed stopping schedule\");\n } else {\n setTimeout(() => {\n getSchedules();\n }, 1500);\n //alert.success(\"Successfully stopped schedule!\")\n }\n })\n )\n .catch((error) => {\n console.log(\"Error in userdata: \", error);\n });\n };\n\n const handleVerify2FA = (userId, code) => {\n const data = {\n code: code,\n user_id: userId,\n };\n\n fetch(`${globalUrl}/api/v1/users/${userId}/set2fa`, {\n mode: \"cors\",\n method: \"POST\",\n body: JSON.stringify(data),\n credentials: \"include\",\n crossDomain: true,\n withCredentials: true,\n headers: {\n \"Content-Type\": \"application/json; charset=utf-8\",\n },\n })\n .then((response) => {\n if (response.status === 200) {\n } else {\n //alert.info(\"Wrong code sent.\")\n //alert.info(\"Wrong code sent. Please try again.\")\n }\n\n return response.json();\n })\n .then((responseJson) => {\n if (responseJson.success === true) {\n alert.info(\"Successfully enabled 2fa\");\n\n setTimeout(() => {\n getUsers();\n\n setImage2FA(\"\");\n setValue2FA(\"\");\n setSecret2FA(\"\");\n setShow2faSetup(false);\n setSelectedUserModalOpen(false);\n }, 1000);\n } else {\n alert.info(\"Wrong code sent. Please try again.\");\n //alert.error(\"Failed setting 2fa: \", responseJson.reason)\n }\n })\n .catch((error) => {\n alert.info(\"Wrong code sent. Please try again.\");\n //alert.error(\"Err: \" + error.toString())\n });\n };\n\n const handleStopOrgSync = (org_id) => {\n if (org_id === undefined || org_id === null) {\n alert.error(\"Couldn't get org \" + org_id);\n return;\n }\n\n const data = {};\n\n const url = globalUrl + \"/api/v1/orgs/\" + org_id + \"/stop_sync\";\n fetch(url, {\n mode: \"cors\",\n method: \"POST\",\n body: JSON.stringify(data),\n credentials: \"include\",\n crossDomain: true,\n withCredentials: true,\n headers: {\n \"Content-Type\": \"application/json; charset=utf-8\",\n },\n })\n .then((response) => {\n if (response.status === 200) {\n console.log(\"Cloud sync success?\");\n alert.success(\"Successfully stopped cloud sync\");\n } else {\n console.log(\"Cloud sync fail?\");\n alert.error(\n \"Failed stopping sync. Try again, and contact support if this persists.\"\n );\n }\n\n return response.json();\n })\n .then((responseJson) => {\n setTimeout(() => {\n handleGetOrg(org_id);\n }, 1000);\n })\n .catch((error) => {\n alert.error(\"Err: \" + error.toString());\n });\n };\n\n const enableCloudSync = (apikey, organization, disableSync) => {\n setOrgSyncResponse(\"\");\n\n const data = {\n apikey: apikey,\n organization: organization,\n disable: disableSync,\n };\n\n const url = globalUrl + \"/api/v1/cloud/setup\";\n fetch(url, {\n mode: \"cors\",\n method: \"POST\",\n body: JSON.stringify(data),\n credentials: \"include\",\n crossDomain: true,\n withCredentials: true,\n headers: {\n \"Content-Type\": \"application/json; charset=utf-8\",\n },\n })\n .then((response) => {\n setLoading(false);\n if (response.status === 200) {\n console.log(\"Cloud sync success?\");\n } else {\n console.log(\"Cloud sync fail?\");\n }\n\n return response.json();\n //setTimeout(() => {\n //}, 1000)\n })\n .then((responseJson) => {\n console.log(\"RESP: \", responseJson);\n if (\n responseJson.success === false &&\n responseJson.reason !== undefined\n ) {\n setOrgSyncResponse(responseJson.reason);\n alert.error(\"Failed to handle sync: \" + responseJson.reason);\n } else if (!responseJson.success) {\n alert.error(\"Failed to handle sync.\");\n } else {\n getOrgs();\n if (disableSync) {\n alert.success(\"Successfully disabled sync!\");\n setOrgSyncResponse(\"Successfully disabled syncronization\");\n } else {\n alert.success(\"Cloud Syncronization successfully set up!\");\n setOrgSyncResponse(\n \"Successfully started syncronization. Cloud features you now have access to can be seen below.\"\n );\n }\n\n selectedOrganization.cloud_sync = !selectedOrganization.cloud_sync;\n setSelectedOrganization(selectedOrganization);\n setCloudSyncApikey(\"\");\n\n handleGetOrg(userdata.active_org.id);\n }\n })\n .catch((error) => {\n setLoading(false);\n alert.error(\"Err: \" + error.toString());\n });\n };\n\n const saveAuthentication = (authentication) => {\n const data = authentication;\n const url = globalUrl + \"/api/v1/apps/authentication\";\n\n fetch(url, {\n mode: \"cors\",\n method: \"PUT\",\n body: JSON.stringify(data),\n credentials: \"include\",\n crossDomain: true,\n withCredentials: true,\n headers: {\n \"Content-Type\": \"application/json; charset=utf-8\",\n },\n })\n .then((response) =>\n response.json().then((responseJson) => {\n if (responseJson[\"success\"] === false) {\n alert.error(\"Failed changing authentication\");\n } else {\n //alert.success(\"Successfully password!\")\n setSelectedUserModalOpen(false);\n getAppAuthentication();\n }\n })\n )\n .catch((error) => {\n alert.error(\"Err: \" + error.toString());\n });\n };\n\n const handleEditOrg = (\n name,\n description,\n orgId,\n image,\n defaults,\n sso_config,\n\t\tlead_info,\n ) => {\n\n const data = {\n name: name,\n description: description,\n org_id: orgId,\n image: image,\n defaults: defaults,\n sso_config: sso_config,\n\t\t\tlead_info: lead_info,\n };\n\n const url = globalUrl + `/api/v1/orgs/${selectedOrganization.id}`;\n fetch(url, {\n mode: \"cors\",\n method: \"POST\",\n body: JSON.stringify(data),\n credentials: \"include\",\n crossDomain: true,\n withCredentials: true,\n headers: {\n \"Content-Type\": \"application/json; charset=utf-8\",\n },\n })\n .then((response) =>\n response.json().then((responseJson) => {\n if (responseJson[\"success\"] === false) {\n alert.error(\"Failed updating org: \", responseJson.reason);\n } else {\n\t\t\t\t\t\tif (lead_info === undefined || lead_info === null || lead_info === []) {\n \talert.success(\"Successfully edited org!\");\n\t\t\t\t\t\t}\n }\n })\n )\n .catch((error) => {\n alert.error(\"Err: \" + error.toString());\n });\n };\n\n const editAuthenticationConfig = (id) => {\n const data = {\n id: id,\n action: \"assign_everywhere\",\n };\n const url = globalUrl + \"/api/v1/apps/authentication/\" + id + \"/config\";\n\n fetch(url, {\n mode: \"cors\",\n method: \"POST\",\n body: JSON.stringify(data),\n credentials: \"include\",\n crossDomain: true,\n withCredentials: true,\n headers: {\n \"Content-Type\": \"application/json; charset=utf-8\",\n },\n })\n .then((response) =>\n response.json().then((responseJson) => {\n if (responseJson[\"success\"] === false) {\n alert.error(\"Failed overwriting appauth in workflows\");\n } else {\n alert.success(\"Successfully updated auth everywhere!\");\n setSelectedUserModalOpen(false);\n setTimeout(() => {\n getAppAuthentication();\n }, 1000);\n }\n })\n )\n .catch((error) => {\n alert.error(\"Err: \" + error.toString());\n });\n };\n\n const createSubOrg = (currentOrgId, name) => {\n const data = { name: name, org_id: currentOrgId };\n console.log(data);\n const url = globalUrl + `/api/v1/orgs/${currentOrgId}/create_sub_org`;\n\n fetch(url, {\n mode: \"cors\",\n method: \"POST\",\n body: JSON.stringify(data),\n credentials: \"include\",\n crossDomain: true,\n withCredentials: true,\n headers: {\n \"Content-Type\": \"application/json; charset=utf-8\",\n },\n })\n .then((response) =>\n response.json().then((responseJson) => {\n if (responseJson[\"success\"] === false) {\n if (responseJson.reason !== undefined) {\n alert.error(responseJson.reason);\n } else {\n alert.error(\"Failed creating suborg. Please try again\");\n }\n } else {\n alert.success(\n \"Successfully created suborg. Reloading in 3 seconds!\"\n );\n setSelectedUserModalOpen(false);\n\n setTimeout(() => {\n window.location.reload();\n }, 2500);\n }\n\n setOrgName(\"\");\n setModalOpen(false);\n })\n )\n .catch((error) => {\n alert.error(\"Err: \" + error.toString());\n });\n };\n\n const onPasswordChange = () => {\n const data = { username: selectedUser.username, newpassword: newPassword };\n const url = globalUrl + \"/api/v1/users/passwordchange\";\n\n fetch(url, {\n mode: \"cors\",\n method: \"POST\",\n body: JSON.stringify(data),\n credentials: \"include\",\n crossDomain: true,\n withCredentials: true,\n headers: {\n \"Content-Type\": \"application/json; charset=utf-8\",\n },\n })\n .then((response) =>\n response.json().then((responseJson) => {\n if (responseJson[\"success\"] === false) {\n if (responseJson.reason !== undefined) {\n alert.error(responseJson.reason);\n } else {\n alert.error(\"Failed setting new password\");\n }\n } else {\n alert.success(\"Successfully updated password!\");\n setSelectedUserModalOpen(false);\n }\n })\n )\n .catch((error) => {\n alert.error(\"Err: \" + error.toString());\n });\n };\n\n const deleteUser = (data) => {\n // Just use this one?\n const userId = data.id;\n\n const url = globalUrl + \"/api/v1/users/\" + userId;\n fetch(url, {\n method: \"DELETE\",\n credentials: \"include\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n })\n .then((response) => {\n if (response.status === 200) {\n getUsers();\n }\n\n return response.json();\n })\n .then((responseJson) => {\n if (!responseJson.success && responseJson.reason !== undefined) {\n alert.error(\"Failed to deactivate user: \" + responseJson.reason);\n } else {\n alert.success(\"Changed activation for user \" + data.id);\n }\n })\n\n .catch((error) => {\n console.log(\"Error in userdata: \", error);\n });\n };\n\n \n\n const handleGetOrg = (orgId) => {\n\n if (serverside !== true && window.location.search !== undefined && window.location.search !== null) {\n\t\t\tconst urlSearchParams = new URLSearchParams(window.location.search);\n\t\t\tconst params = Object.fromEntries(urlSearchParams.entries());\n\t\t\tconst foundorgid = params[\"org_id\"];\n\t\t\tif (foundorgid !== undefined && foundorgid !== null) {\n\t\t\t\torgId = foundorgid;\n\t\t\t}\n\t\t}\n\n if (orgId.length === 0) {\n alert.error(\"Organization ID not defined. Please contact us on https://shuffler.io if this persists logout.\");\n return;\n }\n\n // Just use this one?\n \n fetch(`${globalUrl}/api/v1/orgs/${orgId}`, {\n method: \"GET\",\n credentials: \"include\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n })\n .then((response) => {\n if (response.status === 401) {\n }\n\n return response.json();\n })\n .then((responseJson) => {\n if (responseJson[\"success\"] === false) {\n alert.error(\"Failed getting your org. If this persists, please contact support.\");\n } else {\n if (\n responseJson.sync_features === undefined ||\n responseJson.sync_features === null\n ) {\n responseJson.sync_features = {};\n }\n\n\t\t\t\t\tif (responseJson.lead_info !== undefined && responseJson.lead_info !== null) {\n\t\t\t\t\t\tvar leads = []\n\t\t\t\t\t\tif (responseJson.lead_info.customer) {\n\t\t\t\t\t\t\tleads.push(\"customer\")\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (responseJson.lead_info.demo_done) {\n\t\t\t\t\t\t\tleads.push(\"demo done\")\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (responseJson.lead_info.pov) {\n\t\t\t\t\t\t\tleads.push(\"pov\")\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (responseJson.lead_info.lead) {\n\t\t\t\t\t\t\tleads.push(\"lead\")\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (responseJson.lead_info.student) {\n\t\t\t\t\t\t\tleads.push(\"student\")\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tsetSelectedStatus(leads)\n\t\t\t\t\t}\n\n setSelectedOrganization(responseJson)\n var lists = {\n active: {\n triggers: [],\n features: [],\n sync: [],\n },\n inactive: {\n triggers: [],\n features: [],\n sync: [],\n },\n };\n\n // FIXME: Set up features\n //Object.keys(responseJson.sync_features).map(function(key, index) {\n //\t//console.log(responseJson.sync_features[key])\n //})\n\n //setOrgName(responseJson.name)\n //setOrgDescription(responseJson.description)\n setOrganizationFeatures(lists);\n }\n })\n .catch((error) => {\n console.log(\"Error getting org: \", error);\n alert.error(\"Error getting current organization\");\n });\n };\n\n const inviteUser = (data) => {\n //console.log(\"INPUT: \", data);\n setLoginInfo(\"\");\n\n // Just use this one?\n var data = {\n username: data.Username,\n type: \"invite\",\n org_id: selectedOrganization.id,\n };\n var baseurl = globalUrl;\n const url = baseurl + \"/api/v1/users/register_org\";\n\n fetch(url, {\n method: \"POST\",\n credentials: \"include\",\n body: JSON.stringify(data),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n })\n .then((response) =>\n response.json().then((responseJson) => {\n if (responseJson[\"success\"] === false) {\n setLoginInfo(\"Error: \" + responseJson.reason);\n \t\t\t\talert.error(\"Failed to send email (2). Please try again and contact support if this persists.\")\n } else {\n setLoginInfo(\"\");\n setModalOpen(false);\n setTimeout(() => {\n getUsers();\n }, 1000);\n \t\t\t\t\n\t\t\t\t\t\talert.info(\"Invite sent! They will show up in the list when they have accepted the invite.\")\n }\n })\n )\n .catch((error) => {\n console.log(\"Error in userdata: \", error);\n \t\talert.error(\"Failed to send email. Please try again and contact support if this persists.\")\n });\n };\n\n const submitUser = (data) => {\n console.log(\"INPUT: \", data);\n setLoginInfo(\"\");\n\n // Just use this one?\n var data = { username: data.Username, password: data.Password };\n var baseurl = globalUrl;\n const url = baseurl + \"/api/v1/users/register\";\n\n fetch(url, {\n method: \"POST\",\n credentials: \"include\",\n body: JSON.stringify(data),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n })\n .then((response) =>\n response.json().then((responseJson) => {\n if (responseJson[\"success\"] === false) {\n setLoginInfo(\"Error: \" + responseJson.reason);\n } else {\n setLoginInfo(\"\");\n setModalOpen(false);\n setTimeout(() => {\n getUsers();\n }, 1000);\n }\n })\n )\n .catch((error) => {\n console.log(\"Error in userdata: \", error);\n });\n };\n\n // Horrible frontend fix for environments\n const setDefaultEnvironment = (environment) => {\n // FIXME - add more checks to this\n alert.info(\"Setting default env to \" + environment.name);\n var newEnv = [];\n for (var key in environments) {\n if (environments[key].id == environment.id) {\n if (environments[key].archived) {\n alert.error(\"Can't set archived to default\");\n return;\n }\n\n environments[key].default = true;\n } else if (\n environments[key].default == true &&\n environments[key].id !== environment.id\n ) {\n environments[key].default = false;\n }\n\n newEnv.push(environments[key]);\n }\n\n // Just use this one?\n const url = globalUrl + \"/api/v1/setenvironments\";\n fetch(url, {\n method: \"PUT\",\n credentials: \"include\",\n body: JSON.stringify(newEnv),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n })\n .then((response) =>\n response.json().then((responseJson) => {\n if (responseJson[\"success\"] === false) {\n alert.error(responseJson.reason);\n setTimeout(() => {\n getEnvironments();\n }, 1500);\n } else {\n setLoginInfo(\"\");\n setModalOpen(false);\n setTimeout(() => {\n getEnvironments();\n }, 1500);\n }\n })\n )\n .catch((error) => {\n console.log(\"Error in backend data: \", error);\n });\n };\n\n const flushQueue = (name) => {\n // Just use this one?\n const url = globalUrl + \"/api/v1/flush_queue\";\n fetch(url, {\n method: \"DELETE\",\n credentials: \"include\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n })\n .then((response) =>\n response.json().then((responseJson) => {\n if (responseJson[\"success\"] === false) {\n alert.error(responseJson.reason);\n getEnvironments();\n } else {\n setLoginInfo(\"\");\n setModalOpen(false);\n getEnvironments();\n }\n })\n )\n .catch((error) => {\n console.log(\"Error when deleting: \", error);\n });\n };\n\n const rerunCloudWorkflows = (environment) => {\n\t\talert.info(\"Starting execution reruns. This can run in the background.\") \n fetch(\n `${globalUrl}/api/v1/environments/${environment.id}/rerun`,\n {\n method: \"GET\",\n credentials: \"include\",\n }\n )\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for apps :O!\");\n return;\n } else {\n alert.error(response.reason);\n //alert.info(\"Aborted all dangling workflows\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n console.log(\"Got response for execution: \", responseJson);\n //console.log(\"RESPONSE: \", responseJson)\n //setFiles(responseJson)\n })\n .catch((error) => {\n //alert.error(error.toString())\n });\n };\n\n const abortEnvironmentWorkflows = (environment) => {\n //console.log(\"Aborting all workflows started >10 minutes ago, not finished\");\n\n fetch(\n `${globalUrl}/api/v1/environments/${environment.id}/stop?deleteall=true`,\n {\n method: \"GET\",\n credentials: \"include\",\n }\n )\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for apps :O!\");\n alert.error(\"Failed aborting dangling workflows\");\n return;\n } else {\n alert.info(\"Aborted all dangling workflows\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n console.log(\"Got response for execution: \", responseJson);\n //console.log(\"RESPONSE: \", responseJson)\n //setFiles(responseJson)\n })\n .catch((error) => {\n //alert.error(error.toString())\n });\n };\n\n const deleteEnvironment = (environment) => {\n // FIXME - add some check here ROFL\n //const name = environment.name\n\n //alert.info(\"Modifying environment \" + name)\n //var newEnv = []\n //for (var key in environments) {\n //\tif (environments[key].Name == name) {\n //\t\tif (environments[key].default) {\n //\t\t\talert.error(\"Can't modify the default environment\")\n //\t\t\treturn\n //\t\t}\n\n //\t\tif (environments[key].type === \"cloud\" && !environments[key].archived) {\n //\t\t\talert.error(\"Can't modify cloud environments\")\n //\t\t\treturn\n //\t\t}\n\n //\t\tenvironments[key].archived = !environments[key].archived\n //\t}\n\n //\tnewEnv.push(environments[key])\n //}\n const id = environment.id;\n\n //alert.info(\"Modifying environment \" + environment.Name)\n var newEnv = [];\n for (var key in environments) {\n if (environments[key].id == id) {\n if (environments[key].default) {\n alert.error(\"Can't modify the default environment\");\n return;\n }\n\n if (environments[key].type === \"cloud\" && !environments[key].archived) {\n alert.error(\"Can't modify cloud environments\");\n return;\n }\n\n environments[key].archived = !environments[key].archived;\n }\n\n newEnv.push(environments[key]);\n }\n\n // Just use this one?\n const url = globalUrl + \"/api/v1/setenvironments\";\n fetch(url, {\n method: \"PUT\",\n credentials: \"include\",\n body: JSON.stringify(newEnv),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n })\n .then((response) =>\n response.json().then((responseJson) => {\n if (responseJson[\"success\"] === false) {\n alert.error(responseJson.reason);\n getEnvironments();\n } else {\n setLoginInfo(\"\");\n setModalOpen(false);\n getEnvironments();\n }\n })\n )\n .catch((error) => {\n console.log(\"Error when deleting: \", error);\n });\n };\n\n const submitEnvironment = (data) => {\n // FIXME - add some check here ROFL\n environments.push({\n name: data.environment,\n type: \"onprem\",\n });\n\n // Just use this one?\n var baseurl = globalUrl;\n const url = baseurl + \"/api/v1/setenvironments\";\n fetch(url, {\n method: \"PUT\",\n credentials: \"include\",\n body: JSON.stringify(environments),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n })\n .then((response) =>\n response.json().then((responseJson) => {\n if (responseJson[\"success\"] === false) {\n setLoginInfo(\"Error in input: \" + responseJson.reason);\n getEnvironments();\n } else {\n setLoginInfo(\"\");\n setModalOpen(false);\n getEnvironments();\n }\n })\n )\n .catch((error) => {\n console.log(\"Error in userdata: \", error);\n });\n };\n\n var localData = \"\";\n\n // useEffect(() => {\n // console.log('confirm', fileContent);\n // }, [fileContent])\n\n \n\n const getSchedules = () => {\n fetch(globalUrl + \"/api/v1/workflows/schedules\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for apps :O!\");\n return;\n }\n\n return response.json();\n })\n .then((responseJson) => {\n setSchedules(responseJson);\n })\n .catch((error) => {\n alert.error(error.toString());\n });\n };\n\n const getAppAuthentication = () => {\n fetch(globalUrl + \"/api/v1/apps/authentication\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for apps :O!\");\n return;\n }\n\n return response.json();\n })\n .then((responseJson) => {\n if (responseJson.success) {\n //console.log(responseJson.data)\n //console.log(responseJson)\n setAuthentication(responseJson.data);\n } else {\n alert.error(\"Failed getting authentications\");\n }\n })\n .catch((error) => {\n alert.error(error.toString());\n });\n };\n\n const getEnvironments = () => {\n fetch(globalUrl + \"/api/v1/getenvironments\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for apps :O!\");\n return;\n }\n\n return response.json();\n })\n .then((responseJson) => {\n setEnvironments(responseJson);\n })\n .catch((error) => {\n alert.error(error.toString());\n });\n };\n\n const getOrgs = () => {\n // API no longer in use, as it's in handleInfo request\n return;\n\n fetch(globalUrl + \"/api/v1/orgs\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for apps :O!\");\n return;\n }\n\n return response.json();\n })\n .then((responseJson) => {\n setOrganizations(responseJson);\n })\n .catch((error) => {\n alert.error(error.toString());\n });\n };\n\n const getUsers = () => {\n fetch(globalUrl + \"/api/v1/getusers\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n // Ahh, this happens because they're not admin\n // window.location.pathname = \"/workflows\"\n return;\n }\n\n return response.json();\n })\n .then((responseJson) => {\n setUsers(responseJson);\n })\n .catch((error) => {\n alert.error(error.toString());\n });\n };\n\n const getSettings = () => {\n fetch(globalUrl + \"/api/v1/getsettings\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 when getting settings :O!\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n setUserSettings(responseJson);\n })\n .catch((error) => {\n console.log(error);\n });\n };\n\n const views = {\n 0: \"organization\",\n 1: \"users\",\n 2: \"app_auth\",\n 3: \"files\",\n 4: \"cache\",\n 5: \"schedules\",\n 6: \"environments\",\n 7: \"suborgs\",\n };\n\n const admin_views = {\n 0: \"organization\",\n 1: \"cloud_sync\",\n 2: \"billing\",\n 3: \"branding\",\n 4: \"cache\",\n };\n\n const setConfig = (event, inputValue) => {\n const newValue = parseInt(inputValue);\n\n setCurTab(newValue);\n if (newValue === 1) {\n document.title = \"Shuffle - admin - users\";\n getUsers();\n } else if (newValue === 2) {\n document.title = \"Shuffle - admin - app authentication\";\n getAppAuthentication();\n } else if (newValue === 3) {\n document.title = \"Shuffle - admin - Files\";\n } else if (newValue === 4) {\n document.title = \"Shuffle - admin - Datastore\";\n\n //listOrgCache(\"3fd181b9-fb29-41b7-b2f5-15292265d420\");\n } else if (newValue === 5) {\n document.title = \"Shuffle - admin - schedules\";\n getSchedules();\n } else if (newValue === 6) {\n document.title = \"Shuffle - admin - environments\";\n getEnvironments();\n } else if (newValue === 7) {\n document.title = \"Shuffle - admin - orgs\";\n getOrgs();\n } else {\n document.title = \"Shuffle - admin\";\n }\n\n if (newValue === 8) {\n console.log(\"Should get apps for categories.\");\n }\n\n navigate(`/admin?tab=${views[newValue]}`);\n setModalUser({});\n }\n\n if (firstRequest) {\n setFirstRequest(false);\n document.title = \"Shuffle - admin\";\n if (!isCloud) {\n getUsers();\n } else {\n getSettings();\n }\n\n if (\n serverside !== true &&\n window.location.search !== undefined &&\n window.location.search !== null\n ) {\n const urlSearchParams = new URLSearchParams(window.location.search);\n const params = Object.fromEntries(urlSearchParams.entries());\n\n const adminTab = params[\"admin_tab\"];\n if (adminTab !== null && adminTab !== undefined) {\n\t\t\t\tfor (var key in Object.keys(admin_views)) {\n const value = admin_views[key];\n if (value === adminTab) {\n\t\t\t\t\t\tsetAdminTab(parseInt(key));\n setConfig(\"\", 0);\n break;\n }\n }\n\t\t\t} else { \n\t\t\t\tconst foundTab = params[\"tab\"];\n\t\t\t\tif (foundTab !== null && foundTab !== undefined) {\n\t\t\t\t\tfor (var key in Object.keys(views)) {\n\t\t\t\t\t\tconst value = views[key];\n\t\t\t\t\t\tif (value === foundTab) {\n\t\t\t\t\t\t\tsetConfig(\"\", key);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n }\n }\n\n if (\n selectedOrganization.id === undefined &&\n userdata !== undefined &&\n userdata.active_org !== undefined &&\n orgRequest\n ) {\n setOrgRequest(false);\n handleGetOrg(userdata.active_org.id);\n }\n\n const paperStyle = {\n maxWidth: 1250,\n margin: \"auto\",\n color: \"white\",\n backgroundColor: theme.palette.surfaceColor,\n marginBottom: 10,\n padding: 20,\n };\n\n const changeModalData = (field, value) => {\n modalUser[field] = value;\n };\n\n const setUser = (userId, field, value) => {\n const data = { user_id: userId };\n data[field] = value;\n\n fetch(globalUrl + \"/api/v1/users/updateuser\", {\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify(data),\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for WORKFLOW EXECUTION :O!\");\n } else {\n getUsers();\n }\n\n return response.json();\n })\n .then((responseJson) => {\n if (!responseJson.success && responseJson.reason !== undefined) {\n alert.error(\"Failed setting user: \" + responseJson.reason);\n } else {\n //alert.success(\"Set the user field \" + field + \" to \" + value);\n alert.success(\"Successfully updated user field \" + field)\n\n if (field !== \"suborgs\") {\n setSelectedUserModalOpen(false);\n }\n }\n })\n .catch((error) => {\n console.log(error);\n });\n };\n\n const generateApikey = (user) => {\n const userId = user.id;\n const data = { user_id: userId };\n\n fetch(globalUrl + \"/api/v1/generateapikey\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify(data),\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for WORKFLOW EXECUTION :O!\");\n } else {\n getUsers();\n }\n\n return response.json();\n })\n .then((responseJson) => {\n console.log(\"RESP: \", responseJson);\n if (!responseJson.success && responseJson.reason !== undefined) {\n alert.error(\"Failed getting new: \" + responseJson.reason);\n } else {\n alert.success(\"Got new API key\");\n }\n })\n .catch((error) => {\n console.log(error);\n });\n };\n\n const editAuthenticationModal = selectedAuthenticationModalOpen ? (\n {\n setSelectedAuthenticationModalOpen(false);\n }}\n PaperProps={{\n style: {\n backgroundColor: theme.palette.surfaceColor,\n color: \"white\",\n minWidth: \"800px\",\n minHeight: \"320px\",\n },\n }}\n >\n \n \n Edit authentication for {selectedAuthentication.app.name} (\n {selectedAuthentication.label})\n \n \n \n {selectedAuthentication.fields.map((data, index) => {\n //console.log(\"DATA: \", data, selectedAuthentication)\n return (\n
    \n \n {data.key}\n \n {\n authenticationFields[index].value = e.target.value;\n setAuthenticationFields(authenticationFields);\n }}\n />\n
    \n );\n })}\n
    \n \n setSelectedAuthenticationModalOpen(false)}\n color=\"primary\"\n >\n Cancel\n \n {\n var error = false;\n for (var key in authenticationFields) {\n const item = authenticationFields[key];\n if (item.value.length === 0) {\n console.log(\"ITEM: \", item);\n //var currentnode = cy.getElementById(data.id)\n var textfield = document.getElementById(\n `authentication-${key}`\n );\n if (textfield !== null && textfield !== undefined) {\n console.log(\"HANDLE ERROR FOR KEY \", key);\n }\n error = true;\n }\n }\n\n if (error) {\n alert.error(\"All fields must have a new value\");\n } else {\n alert.success(\"Saving new version of this authentication\");\n selectedAuthentication.fields = authenticationFields;\n saveAuthentication(selectedAuthentication);\n setSelectedAuthentication({});\n setSelectedAuthenticationModalOpen(false);\n }\n }}\n color=\"primary\"\n >\n Submit\n \n \n \n ) : null;\n\n const handleOrgEditChange = (event) => {\n if (userdata.id === selectedUser.id) {\n alert.info(\"Can't remove orgs from yourself\");\n return;\n }\n\n console.log(\"event: \", event.target.value);\n setMatchingOrganizations(event.target.value);\n // Workaround for empty orgs\n if (event.target.value.length === 0) {\n event.target.value.push(\"REMOVE\");\n }\n\n setUser(selectedUser.id, \"suborgs\", event.target.value);\n //setUser(selectedUser.id, \"suborgs\", matchingOrganizations)\n };\n\n const userOrgEdit =\n selectedUser.id !== undefined &&\n selectedUser.orgs !== undefined &&\n selectedUser.orgs !== null &&\n selectedOrganization.child_orgs !== undefined &&\n selectedOrganization.child_orgs !== null &&\n selectedOrganization.child_orgs.length > 0 ? (\n \n \n Accessible Sub-Organizations (\n {selectedUser.orgs ? selectedUser.orgs.length - 1 : 0})\n \n }\n renderValue={(selected) => {\n return selected.join(\", \");\n }}\n MenuProps={MenuProps}\n >\n {selectedOrganization.child_orgs.map((org, index) => (\n \n -1} />\n \n \n ))}\n \n \n ) : null;\n\n \n\n \n\n const editUserModal = (\n {\n setSelectedUserModalOpen(false);\n setImage2FA(\"\");\n setSecret2FA(\"\");\n }}\n PaperProps={{\n style: {\n backgroundColor: theme.palette.surfaceColor,\n color: \"white\",\n minWidth: \"800px\",\n minHeight: \"320px\",\n },\n }}\n >\n \n \n Editing {selectedUser.username}\n \n \n \n {isCloud ? null : (\n
    \n {\n setNewUsername(e.target.value);\n }}\n />\n {\n setUser(selectedUser.id, \"username\", newUsername);\n }}\n >\n Submit\n \n
    \n )}\n\n {isCloud ? null : (\n
    \n setNewPassword(e.target.value)}\n />\n onPasswordChange()}\n >\n Submit\n \n
    \n )}\n\n {userOrgEdit}\n \n
    \n {\n deleteUser(selectedUser);\n setSelectedUserModalOpen(false);\n }}\n >\n {selectedUser.active ? \"Delete from org\" : \"Delete from org\"}\n \n generateApikey(selectedUser)}\n >\n Renew API-key\n \n {\n run2FASetup(userdata);\n }}\n disabled={\n selectedUser.role === \"admin\" &&\n selectedUser.username !== userdata.username\n }\n variant=\"outlined\"\n color=\"primary\"\n >\n {selectedUser.mfa_info !== undefined &&\n selectedUser.mfa_info !== null &&\n selectedUser.mfa_info.active === true\n ? \"Disable 2FA\"\n : \"Enable 2FA\"}\n \n
    \n {show2faSetup ? (\n \n {/**/}\n\n {secret2FA !== undefined &&\n secret2FA !== null &&\n secret2FA.length > 0 ? (\n \n \n Scan the image below with the two-factor authentication app on\n your phone. If you can’t use a QR code, use the code{\" \"}\n {secret2FA} instead.\n \n \n ) : null}\n {image2FA !== undefined &&\n image2FA !== null &&\n image2FA.length > 0 ? (\n \n ) : (\n \n )}\n\n \n After scanning the QR code image, the app will display a code that\n you can enter below.\n \n
    \n {\n if (event.target.value.length > 6) {\n return;\n }\n\n setValue2FA(event.target.value);\n }}\n />\n {\n handleVerify2FA(userdata.id, value2FA);\n }}\n color=\"primary\"\n >\n Submit\n \n
    \n
    \n ) : null}\n \n \n );\n\n const GridItem = (props) => {\n const [expanded, setExpanded] = React.useState(false);\n\n const primary = props.data.primary;\n const secondary = props.data.secondary;\n const primaryIcon = props.data.icon;\n const secondaryIcon = props.data.active ? (\n \n ) : (\n \n )\n\n return (\n {\n setExpanded(!expanded);\n }}\n >\n \n \n \n {primaryIcon}\n \n \n {secondaryIcon}\n \n {expanded ? (\n
    \n \n Usage: \n {props.data.limit === 0 ? (\n \"Unlimited\"\n ) : (\n \n {props.data.usage} / {props.data.limit === \"\" ? \"Unlimited\" : props.data.limit}\n \n )}\n \n {/*\n Data sharing: {props.data.data_collection}\n */}\n Description: {secondary}\n
    \n ) : null}\n \n \n );\n };\n\n const itemColor = \"black\";\n var syncList = [\n {\n primary: \"Workflows\",\n secondary: \"\",\n active: true,\n icon: ,\n },\n {\n primary: \"Apps\",\n secondary: \"\",\n active: true,\n icon: ,\n },\n {\n primary: \"Organization\",\n secondary: \"\",\n active: true,\n icon: ,\n },\n ];\n\n const cloudSyncModal = (\n {\n setCloudSyncModalOpen(false);\n }}\n PaperProps={{\n style: {\n backgroundColor: theme.palette.surfaceColor,\n color: \"white\",\n minWidth: \"800px\",\n minHeight: \"320px\",\n },\n }}\n >\n \n Enable cloud features\n \n \n What does{\" \"}\n \n cloud sync\n {\" \"}\n do?\n
    \n {\n setCloudSyncApikey(event.target.value);\n }}\n />\n {\n setLoading(true);\n enableCloudSync(\n cloudSyncApikey,\n selectedOrganization,\n selectedOrganization.cloud_sync\n );\n }}\n color=\"primary\"\n variant={\n selectedOrganization.cloud_sync === true\n ? \"outlined\"\n : \"contained\"\n }\n >\n {selectedOrganization.cloud_sync ? \"Stop sync\" : \"Start sync\"}\n \n
    \n {orgSyncResponse.length > 0 ? (\n \n Error: {orgSyncResponse}\n \n ) : null}\n \n {syncList.map((data, index) => {\n return ;\n })}\n \n * New triggers (userinput, hotmail realtime)\n
    \n * Execute in the cloud rather than onprem\n
    \n * Apps can be built in the cloud\n
    \n * Easily share apps and workflows\n
    * Access to powerful cloud search\n \n \n );\n\n\n \n const organizationView =\n curTab === 0 && selectedOrganization.id !== undefined ? (\n
    \n
    \n

    Organization overview

    \n \n On this page you can configure individual parts of your\n organization.{\" \"}\n \n Learn more\n \n \n
    \n {selectedOrganization.id === undefined ? (\n \n \n Loading Organization\n
    \n ) : (\n
    \n\t\t\t\t\t\t{/*\n\t\t\t\t\t\t\n {\n\t\t\t\t\t\t\t\t\tconsole.log(\"Should go to icon\")\n }}\n >\n \n \n \n\t\t\t\t\t\t*/}\n\n\t\t\t\t\t\t{userdata.support === true ? \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tStatus\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\trenderValue={(selected) => selected.join(', ')}\n\t\t\t\t\t\t\t\t\tMenuProps={MenuProps}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{[\"lead\", \"pov\", \"demo done\", \"customer\", \"student\", ].map((name) => (\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t -1} />\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t: null}\n\n \n {\n const elementName = \"copy_element_shuffle\";\n const org_id = selectedOrganization.id;\n var copyText = document.getElementById(elementName);\n if (copyText !== null && copyText !== undefined) {\n const clipboard = navigator.clipboard;\n if (clipboard === undefined) {\n alert.error(\"Can only copy over HTTPS (port 3443)\");\n return;\n }\n\n navigator.clipboard.writeText(org_id);\n copyText.select();\n copyText.setSelectionRange(\n 0,\n 99999\n ); /* For mobile devices */\n\n /* Copy the text inside the text field */\n document.execCommand(\"copy\");\n\n alert.info(org_id + \" copied to clipboard\");\n }\n }}\n >\n \n \n \n\t\t\t\t\t\t{selectedOrganization.defaults !== undefined && selectedOrganization.defaults.documentation_reference !== undefined && selectedOrganization.defaults.documentation_reference !== null && selectedOrganization.defaults.documentation_reference.includes(\"http\") ?\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t: null}\n {selectedOrganization.name.length > 0 ? (\n \n ) : (\n \n \n Loading Organization\n
    \n )}\n\n\t\t\t\t\t\t {\n \t\t\t\t\t\tconst newValue = parseInt(inputValue);\n\t\t\t\t\t\t\t\tsetAdminTab(newValue);\n\n \t\t\t\t\t\t\t//const setConfig = (event, inputValue) => {\n \t\t\t\t\t\tnavigate(`/admin?admin_tab=${admin_views[newValue]}`);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\taria-label=\"disabled tabs example\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tEdit Details\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tCloud Synchronization\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tBilling\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tBranding\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tUsage\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{/*\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tNotifications\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t*/}\n\t\t\t\t\t\t\n\n \n\n\t\t\t\t\t\t{adminTab === 0 ? (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)\n\t\t\t\t\t\t: adminTab === 1 ? (\n\t\t\t\t\t\t\t
    \n \t\t\n \t\t Cloud syncronization\n \t\t\n \t\tWhat does{\" \"}\n \t\t\n \t\t cloud sync\n \t\t{\" \"}\n \t\tdo? Cloud syncronization is a way of getting more out of Shuffle.\n \t\tShuffle will ALWAYS make every option open source, but\n \t\tfeatures relying on other users can't be done without a\n \t\tcollaborative approach.\n \t\t{isCloud ? (\n \t\t
    \n \t\t
    \n \t\t \n \t\t Currently syncronizing:{\" \"}\n \t\t {selectedOrganization.cloud_sync_active === true\n \t\t ? \"True\"\n \t\t : \"False\"}\n \t\t \n \t\t {selectedOrganization.cloud_sync_active ? (\n \t\t \n \t\t Syncronization interval:{\" \"}\n \t\t {selectedOrganization.sync_config.interval === 0\n \t\t ? \"60\"\n \t\t : selectedOrganization.sync_config.interval}\n \t\t \n \t\t ) : null}\n \t\t \n \t\t Your Apikey\n \t\t \n \t\t
    \n \t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetShowApiKey(!showApiKey)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{showApiKey ? : }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n \t\t }}\n \t\t required\n \t\t fullWidth={true}\n \t\t disabled={true}\n \t\t autoComplete=\"cloud apikey\"\n \t\t id=\"apikey_field\"\n \t\t margin=\"normal\"\n \t\t placeholder=\"Cloud Apikey\"\n \t\t variant=\"outlined\"\n \t\t defaultValue={userSettings.apikey}\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype={!isCloud || showApiKey ? \"text\" : \"password\"}\n \t\t />\n \t\t {selectedOrganization.cloud_sync_active ? (\n \t\t {\n \t\t handleStopOrgSync(selectedOrganization.id);\n \t\t }}\n \t\t >\n \t\t Stop Sync\n \t\t \n \t\t ) : null}\n \t\t
    \n \t\t
    \n \t\t
    \n \t\t) : (\n \t\t
    \n \t\t
    \n \t\t {\n \t\t setCloudSyncApikey(event.target.value);\n \t\t }}\n \t\t />\n \t\t {\n \t\t setLoading(true);\n \t\t enableCloudSync(\n \t\t cloudSyncApikey,\n \t\t selectedOrganization,\n \t\t selectedOrganization.cloud_sync\n \t\t );\n \t\t }}\n \t\t color=\"primary\"\n \t\t variant={\n \t\t selectedOrganization.cloud_sync === true\n \t\t ? \"outlined\"\n \t\t : \"contained\"\n \t\t }\n \t\t >\n \t\t {selectedOrganization.cloud_sync\n \t\t ? \"Stop sync\"\n \t\t : \"Start sync\"}\n \t\t \n \t\t
    \n \t\t {orgSyncResponse.length > 0 ? (\n \t\t \n \t\t Message from Shuffle Cloud: {orgSyncResponse}\n \t\t \n \t\t ) : null}\n \t\t
    \n \t\t)}\n \t\t\n \t\t Cloud sync features \n \t\t\n \t\t\n\t\t\t\t\t\t\t\t\tIf not otherwise specified, Usage will reset monthly\n \t\t\n \t\t\n\n \t\t {selectedOrganization.sync_features === undefined ||\n \t\t selectedOrganization.sync_features === null\n \t\t ? null\n \t\t : Object.keys(selectedOrganization.sync_features).map(function (\n \t\t key,\n \t\t index\n \t\t ) {\n\t\t\t\t\t\t\t\t\t\t\t\t// unnecessary parts\n \t\t if (key === \"schedule\" || key === \"apps\" || key === \"updates\") {\n \t\t return null;\n \t\t }\n\n \t\t const item = selectedOrganization.sync_features[key];\n\t\t\t\t\t\t\t\t\t\t\t\tif (item === null) {\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn null\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n \t\t const newkey = key.replaceAll(\"_\", \" \");\n \t\t const griditem = {\n \t\t primary: newkey,\n \t\t secondary:\n \t\t item.description === undefined ||\n \t\t item.description === null ||\n \t\t item.description.length === 0\n \t\t ? \"Not defined yet\"\n \t\t : item.description,\n \t\t limit: item.limit,\n \t\t usage: item.usage === undefined ||\n \t\t item.usage === null ? 0 : item.usage,\n \t\t data_collection: \"None\",\n \t\t active: item.active,\n \t\t icon: ,\n \t\t };\n\n \t\t return (\n \t\t \n \t\t \n \t\t \n \t\t );\n \t\t })}\n \t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t: adminTab === 2 ? \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t: adminTab === 3 ? \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t: null\n\t\t\t\t\t\t}\n \n \n \n
    \n )}\n
    \n ) : null;\n\n const modalView = (\n {\n setModalOpen(false);\n }}\n PaperProps={{\n style: {\n backgroundColor: theme.palette.surfaceColor,\n color: \"white\",\n minWidth: \"800px\",\n minHeight: \"320px\",\n },\n }}\n >\n \n \n {curTab === 1 ? \"Add user\" : curTab === 7 ? \"Add Sub-Organization\" : \"Add environment\"}\n \n \n \n {curTab === 1 && isCloud ? (\n \n We will send an email to invite them to your organization.\n \n ) : curTab === 7 ? (\n \n The organization created will become a child of your current\n organization, and be available to you.\n \n ) : null}\n {curTab === 1 ? (\n
    \n Username\n \n changeModalData(\"Username\", event.target.value)\n }\n />\n {isCloud ? null : (\n \n Password\n \n changeModalData(\"Password\", event.target.value)\n }\n />\n \n )}\n
    \n ) : curTab === 7 ? (\n
    \n Name\n {\n setOrgName(event.target.value);\n }}\n />\n
    \n ) : curTab === 6 ? (\n
    \n Environment Name\n \n changeModalData(\"environment\", event.target.value)\n }\n />\n
    \n ) : null}\n {loginInfo}\n
    \n \n setModalOpen(false)}\n color=\"primary\"\n >\n Cancel\n \n {\n if (curTab === 1) {\n if (isCloud) {\n inviteUser(modalUser);\n } else {\n submitUser(modalUser);\n }\n } else if (curTab === 7) {\n createSubOrg(selectedOrganization.id, orgName);\n } else if (curTab === 6) {\n submitEnvironment(modalUser);\n }\n }}\n color=\"primary\"\n >\n Submit\n \n \n \n );\n\n const usersView =\n curTab === 1 ? (\n
    \n
    \n

    User management

    \n \n Add, edit, block or change passwords.{\" \"}\n \n Learn more\n \n \n
    \n
    \n setModalOpen(true)}\n >\n Add user\n \n getUsers()}\n >\n \n \n \n \n \n \n\n \n\n \n \n \n \n {selectedOrganization.child_orgs !== undefined &&\n selectedOrganization.child_orgs !== null &&\n selectedOrganization.child_orgs.length > 0 ? (\n \n ) : null}\n \n \n {users === undefined || users === null\n ? null\n : users.map((data, index) => {\n var bgColor = \"#27292d\";\n if (index % 2 === 0) {\n bgColor = \"#1f2023\";\n }\n\n return (\n \n \n\n \n {\n const elementName = \"copy_element_shuffle\";\n var copyText =\n document.getElementById(elementName);\n if (\n copyText !== null &&\n copyText !== undefined\n ) {\n const clipboard = navigator.clipboard;\n if (clipboard === undefined) {\n alert.error(\n \"Can only copy over HTTPS (port 3443)\"\n );\n return;\n }\n\n navigator.clipboard.writeText(data.apikey);\n copyText.select();\n copyText.setSelectionRange(\n 0,\n 99999\n ); /* For mobile devices */\n\n /* Copy the text inside the text field */\n document.execCommand(\"copy\");\n\n alert.info(\"Apikey copied to clipboard\");\n }\n }}\n >\n \n \n \n )\n }\n />\n\n {\n console.log(\"VALUE: \", e.target.value);\n setUser(data.id, \"role\", e.target.value);\n }}\n style={{\n backgroundColor: theme.palette.surfaceColor,\n color: \"white\",\n height: \"50px\",\n }}\n >\n \n Org Admin\n \n \n Org User\n \n \n Org Reader\n \n \n }\n style={{ minWidth: 135, maxWidth: 135, marginRight: 15 }}\n />\n \n \n \n {selectedOrganization.child_orgs !== undefined &&\n selectedOrganization.child_orgs !== null &&\n selectedOrganization.child_orgs.length > 0 ? (\n \n ) : null}\n \n {\n setSelectedUserModalOpen(true);\n setSelectedUser(data);\n\n // Find matching orgs between current org and current user's access to those orgs\n if (\n userdata.orgs !== undefined &&\n userdata.orgs !== null &&\n userdata.orgs.length > 0 &&\n selectedOrganization.child_orgs !== undefined &&\n selectedOrganization.child_orgs !== null &&\n selectedOrganization.child_orgs.length > 0\n ) {\n console.log(\"In here?\");\n var active = [];\n for (var key in userdata.orgs) {\n console.log(\"ORG: \", userdata.orgs[key]);\n const found =\n selectedOrganization.child_orgs.find(\n (item) => item.id === userdata.orgs[key].id\n );\n if (found !== null && found !== undefined) {\n if (\n data.orgs === undefined ||\n data.orgs === null\n ) {\n continue;\n }\n\n const subfound = data.orgs.find(\n (item) => item === found.id\n );\n if (\n subfound !== null &&\n subfound !== undefined\n ) {\n active.push(subfound);\n }\n }\n }\n\n setMatchingOrganizations(active);\n }\n }}\n >\n \n \n {/* {\n\t\t\t\t\t\t\tgenerateApikey(data)\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tdisabled={data.role === \"admin\" && data.username !== userdata.username}\n\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t>\n\t\t\t\t\t\tNew apikey \n\t\t\t\t\t*/}\n \n \n );\n })}\n \n
    \n ) : null;\n\n const run2FASetup = (data) => {\n console.log(\"2fa: \", data, show2faSetup);\n if (!show2faSetup) {\n get2faCode(data.id);\n } else {\n // Should remove?\n setImage2FA(\"\");\n setSecret2FA(\"\");\n }\n\n setShow2faSetup(!show2faSetup);\n //setShow2faSetup(true);\n };\n\n\n\n const filesView = curTab !== 3 ? null : \n\t\t\n\n const schedulesView =\n curTab === 5 ? (\n
    \n
    \n

    Schedules

    \n \n Schedules used in Workflows. Makes locating and control easier.{\" \"}\n \n Learn more\n \n \n
    \n \n \n \n \n \n \n \n \n \n {schedules === undefined || schedules === null\n ? null\n : schedules.map((schedule, index) => {\n var bgColor = \"#27292d\";\n if (index % 2 === 0) {\n bgColor = \"#1f2023\";\n }\n\n return (\n \n {schedule.seconds} seconds\n )\n }\n />\n \n \n {schedule.workflow_id}\n \n }\n />\n \n \n deleteSchedule(schedule)}\n >\n Stop schedule\n \n \n \n );\n })}\n \n
    \n ) : null;\n\n const appCategoryView =\n curTab === 8 ? (\n
    \n
    \n

    Categories

    \n \n Categories are the categories supported by Shuffle, which are mapped\n to apps and workflows\n \n
    \n \n \n \n \n \n \n \n \n \n {categories.map((data, index) => {\n if (data.apps.length === 0) {\n return null;\n }\n\n return (\n \n \n \n \n \n \n {\n console.log(\"Show apps with this category\");\n }}\n >\n Find app ({data.apps === null ? 0 : data.apps.length})\n \n \n \n );\n })}\n \n
    \n ) : null;\n\n const updateAppAuthentication = (field) => {\n setSelectedAuthenticationModalOpen(true);\n setSelectedAuthentication(field);\n //{selectedAuthentication.fields.map((data, index) => {\n var newfields = [];\n for (var key in field.fields) {\n newfields.push({\n key: field.fields[key].key,\n value: \"\",\n });\n }\n setAuthenticationFields(newfields);\n };\n\n const authenticationView =\n curTab === 2 ? (\n
    \n
    \n

    App Authentication

    \n \n Control the authentication options for individual apps. PS: Actions\n performed here can be destructive!\n \n  \n \n Learn more about authentication\n \n
    \n \n \n \n \n \n \n {/**/}\n \n {/*\n \n\t\t\t\t\t\t*/}\n \n \n \n \n {authentication === undefined || authentication === null\n ? null\n : authentication.map((data, index) => {\n var bgColor = \"#27292d\";\n if (index % 2 === 0) {\n bgColor = \"#1f2023\";\n }\n\n //console.log(\"Auth data: \", data)\n if (data.type === \"oauth2\") {\n data.fields = [\n {\n key: \"url\",\n value: \"Secret. Replaced during app execution!\",\n },\n {\n key: \"client_id\",\n value: \"Secret. Replaced during app execution!\",\n },\n {\n key: \"client_secret\",\n value: \"Secret. Replaced during app execution!\",\n },\n {\n key: \"scope\",\n value: \"Secret. Replaced during app execution!\",\n },\n ];\n }\n\n return (\n \n \n style={{ minWidth: 75, maxWidth: 75 }}\n />\n \n \n {/*\n \n\t\t\t\t\t\t\t\t\t\t*/}\n \n {/*\n \n\t\t\t\t\t\t\t\t\t\t*/}\n {\n return data.key;\n })\n .join(\", \")\n }\n style={{\n minWidth: 125,\n maxWidth: 125,\n overflow: \"hidden\",\n }}\n />\n \n \n {\n updateAppAuthentication(data);\n }}\n >\n \n \n {data.defined ? (\n \n {\n editAuthenticationConfig(data.id);\n }}\n >\n \n \n \n ) : (\n \n {}}\n >\n \n \n \n )}\n {\n deleteAuthentication(data);\n }}\n >\n \n \n \n \n );\n })}\n \n
    \n ) : null;\n\n\tconst changeRecommendation = (recommendation, action) => {\n const data = {\n action: action,\n name: recommendation.name,\n };\n\n fetch(`${globalUrl}/api/v1/recommendations/modify`, {\n mode: \"cors\",\n method: \"POST\",\n body: JSON.stringify(data),\n credentials: \"include\",\n crossDomain: true,\n withCredentials: true,\n headers: {\n \"Content-Type\": \"application/json; charset=utf-8\",\n },\n })\n .then((response) => {\n if (response.status === 200) {\n } else {\n }\n\n return response.json();\n })\n .then((responseJson) => {\n if (responseJson.success === true) {\n\t\t\t\t\tif (checkLogin !== undefined) {\n\t\t\t\t\t\tcheckLogin()\n \t\t\t\t\tgetEnvironments()\n\t\t\t\t\t}\n } else {\n \tif (responseJson.success === false && responseJson.reason !== undefined) {\n \talert.error(\"Failed change recommendation: \", responseJson.reason)\n \t} else {\n \talert.error(\"Failed change recommendation\");\n\t\t\t\t\t}\n }\n })\n .catch((error) => {\n alert.info(\"Failed dismissing alert. Please contact support@shuffler.io if this persists.\");\n });\n\t}\n\n const environmentView =\n curTab === 6 ? (\n
    \n
    \n

    Environments

    \n \n Decides what Orborus environment to execute an action in a workflow\n in.{\" \"}\n \n Learn more\n \n \n
    \n setModalOpen(true)}\n >\n Add environment\n \n getEnvironments()}\n >\n \n \n {\n setShowArchived(!showArchived);\n }}\n />{\" \"}\n Show disabled\n \n \n \n \n \n \n \n \n \n \n \n \n {environments === undefined || environments === null\n ? null\n : environments.map((environment, index) => {\n if (!showArchived && environment.archived) {\n return null;\n }\n\n if (environment.archived === undefined) {\n return null;\n }\n\n var bgColor = \"#27292d\";\n if (index % 2 === 0) {\n bgColor = \"#1f2023\";\n }\n\n\t\t\t\t\t\t\t\t// Check if there's a notification for it in userdata.priorities\n\t\t\t\t\t\t\t\tvar showCPUAlert = false\t\n\t\t\t\t\t\t\t\tvar foundIndex = -1\n\t\t\t\t\t\t\t\tif (userdata !== undefined && userdata !== null && userdata.priorities !== undefined && userdata.priorities !== null && userdata.priorities.length > 0) {\n\t\t\t\t\t\t\t\t\tfoundIndex = userdata.priorities.findIndex(prio => prio.name.includes(\"CPU\") && prio.active === true)\n\n\t\t\t\t\t\t\t\t\tif (foundIndex >= 0 && userdata.priorities[foundIndex].name.endsWith(environment.Name)) {\n\t\t\t\t\t\t\t\t\t\t\tshowCPUAlert = true\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tconsole.log(\"Show CPU alert: \", showCPUAlert)\n\n return (\n\t\t\t\t\t\t\t\t\t\n \t\n \t \n \t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tNot running\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n \t : environment.running_ip.split(\":\")[0] \n \t : \"N/A\"\n \t }\n \t style={{\n \t minWidth: 200,\n \t maxWidth: 200,\n \t overflow: \"hidden\",\n \t }}\n \t />\n\n \t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (environment.Type === \"cloud\") {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\talert.info(\"No Orborus necessary for environment cloud. Create and use a different environment to run executions on-premises.\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst elementName = \"copy_element_shuffle\";\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst auth = environment.auth === \"\" ? 'cb5st3d3Z!3X3zaJ*Pc' : environment.auth\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst commandData = `docker run --volume \"/var/run/docker.sock:/var/run/docker.sock\" -e ENVIRONMENT_NAME=\"${environment.Name}\" -e 'AUTH=${auth}' -e ORG=\"${props.userdata.active_org.id}\" -e DOCKER_API_VERSION=1.40 -e BASE_URL=\"${globalUrl}\" --name=\"shuffle-orborus\" -d ghcr.io/shuffle/shuffle-orborus:latest`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar copyText = document.getElementById(elementName);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (copyText !== null && copyText !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst clipboard = navigator.clipboard;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (clipboard === undefined) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\talert.error(\"Can only copy over HTTPS (port 3443)\");\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnavigator.clipboard.writeText(commandData);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcopyText.select();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcopyText.setSelectionRange(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t99999\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t); /* For mobile devices */\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t/* Copy the text inside the text field */\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdocument.execCommand(\"copy\");\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\talert.info(\"Orborus command copied to clipboard\");\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t}\n \t />\n\n \t \n \t \n \t {environment.default ? null : (\n \t setDefaultEnvironment(environment)}\n \t color=\"primary\"\n \t >\n \t Make default\n \t \n \t )}\n \t \n \t \n \t \n \t \n \t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t deleteEnvironment(environment)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{environment.archived ? \"Activate\" : \"Disable\"}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"Should clear executions for: \", environment);\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (isCloud && environment.Name.toLowerCase() === \"cloud\") {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trerunCloudWorkflows(environment);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else { \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tabortEnvironmentWorkflows(environment);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{isCloud && environment.Name.toLowerCase() === \"cloud\" ? \"Rerun\" : \"Clear\"}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n \t
    \n \t \n \t\n\t\t\t\t\t\t\t\t\t\t{showCPUAlert === false ? null : \n \t\t\n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t90% CPU the server(s) hosting the Shuffle App Runner (Orborus) was found. \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tNeed help with High Availability and Scale? Read documentation and Get in touch. \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\n );\n })}\n \n\t\t\t\t{/**/}\n
    \n ) : null;\n\n const organizationsTab =\n curTab === 7 ? (\n
    \n
    \n

    Organizations

    \n \n Global admin: control organizations\n \n
    \n {\n setModalOpen(true);\n }}\n >\n Add suborganization\n \n \n \n \n \n \n \n \n \n \n \n {userdata.orgs !== undefined &&\n userdata.orgs !== null &&\n userdata.orgs.length > 0 ? (\n \n {userdata.orgs.map((data, index) => {\n const isSelected =\n props.userdata.active_org.id === undefined\n ? \"False\"\n : props.userdata.active_org.id === data.id\n ? \"True\"\n : \"False\";\n\n const imagesize = 40;\n const imageStyle = {\n width: imagesize,\n height: imagesize,\n pointerEvents: \"none\",\n };\n const image =\n data.image === \"\" ? (\n \n ) : (\n {data.name}\n );\n\n var bgColor = \"#27292d\";\n if (index % 2 === 0) {\n bgColor = \"#1f2023\";\n }\n\n return (\n \n \n \n \n \n \n {\n setCloudSyncModalOpen(true);\n setSelectedOrganization(data);\n console.log(\"INVERT CLOUD SYNC\");\n }}\n />\n style={{ minWidth: 150, maxWidth: 150 }}\n />\n \n );\n })}\n \n ) : null}\n \n
    \n ) : null;\n\n const hybridTab =\n curTab === 8 ? (\n
    \n
    \n

    Hybrid

    \n \n
    \n \n \n \n \n \n \n \n \n \n \n {\n console.log(\"INVERT\");\n }}\n />\n style={{ minWidth: 150, maxWidth: 150 }}\n />\n \n \n
    \n ) : null;\n\n const cacheOrgView =\n curTab === 4 ? (\n
    \n \n
    \n ) : null;\n\n // primary={environment.Registered ? \"true\" : \"false\"}\n\n const iconStyle = { marginRight: 10 };\n const data = (\n \n \n \n \n Organization\n \n />\n \n \n Users\n \n />\n \n \n App Authentication\n \n />\n \n \n Files\n \n />\n \n Datastore \n \n />\n \n \n Schedules\n \n />\n \n \n Environments\n \n />\n \n Tenants\n \n />\n\n {/*window.location.protocol == \"http:\" && window.location.port === \"3000\" ? Hybrid/> : null*/}\n {/*window.location.protocol === \"http:\" && window.location.port === \"3000\" ? Categories/> : null*/}\n \n \n
    \n {organizationView}\n {authenticationView}\n {usersView}\n {environmentView}\n {schedulesView}\n {filesView}\n {hybridTab}\n {organizationsTab}\n {appCategoryView}\n {cacheOrgView}\n
    \n
    \n
    \n );\n\n return (\n
    \n {modalView}\n {cloudSyncModal}\n {editUserModal}\n {editAuthenticationModal}\n {data}\n \n
    \n );\n};\n\nexport default Admin;\n","import React, { useEffect, useState } from \"react\";\n\nimport { useTheme } from \"@material-ui/core/styles\";\nimport ReactMarkdown from \"react-markdown\";\nimport { BrowserView, MobileView } from \"react-device-detect\";\nimport { useParams, useNavigate, Link } from \"react-router-dom\";\nimport { isMobile } from \"react-device-detect\";\n\nimport {\n\tGrid,\n\tTextField, \n\tIconButton,\n Tooltip,\n Divider,\n Button,\n Menu,\n MenuItem,\n Typography,\n Paper,\n List,\n} from \"@material-ui/core\";\n\nimport { \n\tLink as LinkIcon, \n\tEdit as EditIcon,\n} from \"@material-ui/icons\";\n\nconst Body = {\n //maxWidth: 1000,\n //minWidth: 768,\n maxWidth: \"100%\",\n minWidth: \"100%\",\n display: \"flex\",\n height: \"100%\",\n color: \"white\",\n\tposition: \"relative\",\n //textAlign: \"center\",\n};\n\nconst dividerColor = \"rgb(225, 228, 232)\";\nconst hrefStyle = {\n color: \"rgba(255, 255, 255, 0.40)\",\n textDecoration: \"none\",\n};\n\nconst hrefStyle2 = {\n color: \"#f86a3e\",\n textDecoration: \"none\",\n};\n\nconst innerHrefStyle = {\n color: \"rgba(255, 255, 255, 0.75)\",\n textDecoration: \"none\",\n};\n\nconst Docs = (defaultprops) => {\n const { globalUrl, selectedDoc, serverside, serverMobile } = defaultprops;\n\n\tlet navigate = useNavigate();\n const theme = useTheme();\n\n\t// Quickfix for react router 5 -> 6 \n\tconst params = useParams();\n\t//var props = JSON.parse(JSON.stringify(defaultprops))\n\tvar props = Object.assign({selected: false}, defaultprops);\n\tprops.match = {}\n\tprops.match.params = params\n\n\tuseEffect(() => {\n\t\t//if (params[\"key\"] === undefined) {\n\t\t//\tnavigate(\"/docs/about\")\n\t\t//\treturn\n\t\t//}\n\t}, [])\n\t//console.log(\"PARAMS: \", params)\n\n const [mobile, setMobile] = useState(serverMobile === true || isMobile === true ? true : false);\n const [data, setData] = useState(\"\");\n const [firstrequest, setFirstrequest] = useState(true);\n const [list, setList] = useState([]);\n const [, setListLoaded] = useState(false);\n const [anchorEl, setAnchorEl] = React.useState(null);\n const [headingSet, setHeadingSet] = React.useState(false);\n const [selectedMeta, setSelectedMeta] = React.useState({\n link: \"hello\",\n read_time: 2,\n });\n const [tocLines, setTocLines] = React.useState([]);\n const [baseUrl, setBaseUrl] = React.useState(\n serverside === true ? \"\" : window.location.href\n );\n\n function handleClick(event) {\n setAnchorEl(event.currentTarget);\n }\n\n function handleClose() {\n setAnchorEl(null);\n }\n\n const SidebarPaperStyle = {\n backgroundColor: theme.palette.surfaceColor,\n overflowX: \"hidden\",\n position: \"relative\",\n padding: 30,\n paddingTop: 15,\n marginTop: 15,\n\t\tminHeight: \"80vh\",\n //height: \"50vh\",\n };\n\n const SideBar = {\n minWidth: 250,\n maxWidth: 300,\n\t\tleft: 0,\n\t\tposition: \"sticky\",\n\t\ttop: 50,\n\t\tminHeight: \"90vh\",\n\t\tmaxHeight: \"90vh\",\n\t\toverflowX: \"hidden\",\n\t\toverflowY: \"auto\",\n\t\tzIndex: 1000,\n\t\t//borderRight: \"1px solid rgba(255,255,255,0.3)\",\n };\n\n const fetchDocList = () => {\n fetch(globalUrl + \"/api/v1/docs\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n })\n .then((response) => response.json())\n .then((responseJson) => {\n if (responseJson.success) {\n setList(responseJson.list);\n } else {\n setList([\n \"# Error loading documentation. Please contact us if this persists.\",\n ]);\n }\n setListLoaded(true);\n })\n .catch((error) => {});\n };\n\n const fetchDocs = (docId) => {\n fetch(globalUrl + \"/api/v1/docs/\" + docId, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n })\n .then((response) => response.json())\n .then((responseJson) => {\n if (responseJson.success) {\n setData(responseJson.reason);\n\t\t\t\t\tif (docId === undefined) {\n \tdocument.title = \"Shuffle documentation introduction\";\n\t\t\t\t\t} else {\n \tdocument.title = \"Shuffle \" + docId + \" documentation\";\n\t\t\t\t\t}\n\n\t\t\t\t\tif (responseJson.reason !== undefined && responseJson.reason !== null && responseJson.reason.includes(\"404: Not Found\")) {\n\t\t\t\t\t\tnavigate(\"/docs\")\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\n if (responseJson.meta !== undefined) {\n setSelectedMeta(responseJson.meta);\n }\n\n //console.log(\"TOC list: \", responseJson.reason)\n if (\n responseJson.reason !== undefined &&\n responseJson.reason !== null\n ) {\n const splitkey = responseJson.reason.split(\"\\n\");\n var innerTocLines = [];\n var record = false;\n for (var key in splitkey) {\n const line = splitkey[key];\n //console.log(\"Line: \", line)\n if (line.toLowerCase().includes(\"table of contents\")) {\n record = true;\n continue;\n }\n\n if (record && line.length < 3) {\n record = false;\n }\n\n if (record) {\n const parsedline = line.split(\"](\");\n if (parsedline.length > 1) {\n parsedline[0] = parsedline[0].replaceAll(\"*\", \"\");\n parsedline[0] = parsedline[0].replaceAll(\"[\", \"\");\n parsedline[0] = parsedline[0].replaceAll(\"]\", \"\");\n parsedline[0] = parsedline[0].replaceAll(\"(\", \"\");\n parsedline[0] = parsedline[0].replaceAll(\")\", \"\");\n parsedline[0] = parsedline[0].trim();\n\n parsedline[1] = parsedline[1].replaceAll(\"*\", \"\");\n parsedline[1] = parsedline[1].replaceAll(\"[\", \"\");\n parsedline[1] = parsedline[1].replaceAll(\"]\", \"\");\n parsedline[1] = parsedline[1].replaceAll(\")\", \"\");\n parsedline[1] = parsedline[1].replaceAll(\"(\", \"\");\n parsedline[1] = parsedline[1].trim();\n //console.log(parsedline[0], parsedline[1])\n\n innerTocLines.push({\n text: parsedline[0],\n link: parsedline[1],\n });\n } else {\n console.log(\"Bad line for parsing: \", line);\n }\n }\n }\n\n setTocLines(innerTocLines);\n }\n } else {\n setData(\"# Error\\nThis page doesn't exist.\");\n }\n })\n .catch((error) => {});\n };\n\n if (firstrequest) {\n setFirstrequest(false);\n if (!serverside) {\n if (window.innerWidth < 768) {\n setMobile(true);\n }\n }\n\n if (selectedDoc !== undefined) {\n setData(selectedDoc.reason);\n setList(selectedDoc.list);\n setListLoaded(true);\n } else {\n if (!serverside) {\n fetchDocList();\n\n\t\t\t\t//const propkey = props.match.params.key\n\t\t\t\t//if (propkey === undefined) {\n\t\t\t\t//\tnavigate(\"/docs/about\")\n\t\t\t\t//\treturn null\n\t\t\t\t//}\n\t\t\t\t//\n\t\t\t\tif (props.match.params.key === undefined) {\n\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log(\"DOCID: \", props.match.params.key)\n \tfetchDocs(props.match.params.key)\n\t\t\t\t}\n }\n }\n }\n\n // Handles search-based changes that origin from outside this file\n if (serverside !== true && window.location.href !== baseUrl) {\n setBaseUrl(window.location.href);\n fetchDocs(props.match.params.key);\n }\n\n const parseElementScroll = () => {\n const offset = 45;\n var parent = document.getElementById(\"markdown_wrapper_outer\");\n if (parent !== null) {\n //console.log(\"IN PARENT\")\n var elements = parent.getElementsByTagName(\"h2\");\n\n const name = window.location.hash\n .slice(1, window.location.hash.lenth)\n .toLowerCase()\n .split(\"%20\")\n .join(\" \")\n .split(\"_\")\n .join(\" \")\n .split(\"-\")\n .join(\" \")\n\t\t\t\t.split(\"?\")[0]\n\n //console.log(name)\n var found = false;\n for (var key in elements) {\n const element = elements[key];\n if (element.innerHTML === undefined) {\n continue;\n }\n\n // Fix location..\n if (element.innerHTML.toLowerCase() === name) {\n //console.log(element.offsetTop)\n element.scrollIntoView({ behavior: \"smooth\" });\n //element.scrollTo({\n //\ttop: element.offsetTop+offset,\n //\tbehavior: \"smooth\"\n //})\n found = true;\n //element.scrollTo({\n //\ttop: element.offsetTop-100,\n //\tbehavior: \"smooth\"\n //})\n }\n }\n\n // H#\n if (!found) {\n elements = parent.getElementsByTagName(\"h3\");\n //console.log(\"NAMe: \", name)\n found = false;\n for (key in elements) {\n const element = elements[key];\n if (element.innerHTML === undefined) {\n continue;\n }\n\n // Fix location..\n if (element.innerHTML.toLowerCase() === name) {\n element.scrollIntoView({ behavior: \"smooth\" });\n //element.scrollTo({\n //\ttop: element.offsetTop-offset,\n //\tbehavior: \"smooth\"\n //})\n found = true;\n //element.scrollTo({\n //\ttop: element.offsetTop-100,\n //\tbehavior: \"smooth\"\n //})\n }\n }\n }\n }\n //console.log(element)\n\n //console.log(\"NAME: \", name)\n //console.log(document.body.innerHTML)\n // parent = document.getElementById(parent);\n\n //var descendants = parent.getElementsByTagName(tagname);\n\n // this.scrollDiv.current.scrollIntoView({ behavior: 'smooth' });\n\n //$(\".parent\").find(\"h2:contains('Statistics')\").parent();\n };\n\n if (serverside !== true && window.location.hash.length > 0) {\n parseElementScroll();\n }\n\n const markdownStyle = {\n color: \"rgba(255, 255, 255, 0.65)\",\n overflow: \"hidden\",\n paddingBottom: 100,\n\t\tmargin: \"auto\",\n\t\tmaxWidth: \"100%\",\n\t\tminWidth: \"100%\",\n\t\toverflow: \"hidden\",\n\t\tfontSize: isMobile ? \"1.3rem\" : \"1.0rem\",\n };\n\n function OuterLink(props) {\n if (props.href.includes(\"http\") || props.href.includes(\"mailto\")) {\n return (\n \n {props.children}\n \n );\n }\n return (\n \n {props.children}\n \n );\n }\n\n function Img(props) {\n return {props.alt};\n }\n\n function CodeHandler(props) {\n return (\n \n {props.value}\n \n );\n }\n\n const Heading = (props) => {\n const element = React.createElement(\n `h${props.level}`,\n { style: { marginTop: props.level === 1 ? 20 : 50 } },\n props.children\n );\n const [hover, setHover] = useState(false);\n\n var extraInfo = \"\";\n if (props.level === 1) {\n extraInfo = (\n \n
    \n {mobile ? null : (\n \n \n \n \n \n )}\n {mobile ? null : (\n \n )}\n \n {selectedMeta.read_time} minute\n {selectedMeta.read_time === 1 ? \"\" : \"s\"} to read\n \n
    \n
    \n {mobile ||\n selectedMeta.contributors === undefined ||\n selectedMeta.contributors === null ? (\n \"\"\n ) : (\n
    \n {selectedMeta.contributors.slice(0, 7).map((data, index) => {\n return (\n \n \n \n \n \n );\n })}\n
    \n )}\n
    \n
    \n );\n }\n\n return (\n {\n setHover(true);\n }}\n >\n {props.level !== 1 ? (\n \n ) : null}\n {element}\n {/*hover ? {setHover(true)}} style={{cursor: \"pointer\", display: \"inline\", }} onClick={() => {\n\t\t\t\t\twindow.location.href += \"#hello\"\n\t\t\t\t\tconsole.log(window.location)\n\t\t\t\t\t//window.history.pushState('page2', 'Title', '/page2.php');\n\t\t\t\t\t//window.history.replaceState('page2', 'Title', '/page2.php');\n\t\t\t\t}} /> \n\t\t\t\t: \"\"\n\t\t\t\t*/}\n {extraInfo}\n \n );\n };\n //React.createElement(\"p\", {style: {color: \"red\", backgroundColor: \"blue\"}}, this.props.paragraph)\n\n //function unicodeToChar(text) {\n //\treturn text.replace(/\\\\u[\\dA-F]{4}/gi,\n // \t\tfunction (match) {\n // \treturn String.fromCharCode(parseInt(match.replace(/\\\\u/g, ''), 16));\n // }\n //\t);\n //}\n\n\n\tconst CustomButton = (props) => {\n\t\tconst {title, icon, link} = props\n\n\t\tconst [hover, setHover] = useState(false)\n\n\t\treturn (\n\t\t\t\n\t\t\t\t
    {\n\t\t\t\t\t\tif (link === \"\" || link === undefined) { \n\t\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t\t\tconsole.log(\"IN CLICK!\")\n\t\t\t\t\t\t\tif (window.drift !== undefined) {\n\t\t\t\t\t\t\t\twindow.drift.api.startInteraction({ interactionId: 340043 })\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconsole.log(\"Couldn't find drift in window.drift and not .drift-open-chat with querySelector: \", window.drift)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log(\"Link defined: \", link)\n\t\t\t\t\t\t}\n\t\t\t\t\t}} onMouseOver={() => {\n\t\t\t\t\t\tsetHover(true)\n\t\t\t\t\t}}\n\t\t\t\t\tonMouseOut={() => {\n\t\t\t\t\t\tsetHover(false);\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{icon}\n\t\t\t\t\t\n\t\t\t\t\t\t{title}\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t)\n\t}\n\n\n\tconst DocumentationButton = (props) => {\n\t\tconst {item, link} = props\n\n\t\tconst [hover, setHover] = useState(false);\n\n\t\tconsole.log(\"Link: \", link)\n\t\tif (link === undefined || link === null) {\n\t\t\treturn null\n\t\t}\n\n\t\treturn (\n\t\t\t\n\t\t\t\t
    {\n\t\t\t\t\tsetHover(true)\n\t\t\t\t}}\n\t\t\t\tonMouseOut={() => {\n\t\t\t\t\tsetHover(false);\n\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t\t\t\t{item}\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\n\t\t)\n\t}\n\n\tconst headerStyle = {\n\t\tmarginTop: 25,\n\t}\n\n\tconst mainpageInfo = \n\t\t
    \n\t\t\t\t\n\t\t\t\t\tDocumentation\n\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t />\n\t\t\t\t\t link=\"https://discord.gg/B2CBzUm\" />\n\t\t\t\t
    \n\n\t\t\t\t
    \n\t\t\t\t\tTutorial\n\t\t\t\t\t\n\t\t\t\t\t\tDive in. Hands-on is the best approach to see how Shuffle can transform your security operations. Our set of tutorials and videos teach you how to build your skills. Check out the getting started section to give it a go!\n\t\t\t\t\t\n\n\t\t\t\t\tWhy Shuffle?\n\t\t\t\t\t\n\t\t\t\t\t\tSecurity first. We incentivize trying before buying, and give you the full set of tools you need to automate your operations. What's more is we also help you find usecases that fit your your unique needs. Accessibility is key, and we intend to help every SOC globally use and share their usecases.\n\t\t\t\t\t\n\n\t\t\t\t\tGet help\n\t\t\t\t\t\n\t\t\t\t\t\tOur promise is to make it easier and easier to automate your operations. In some cases however, it may be good with a helping hand. That's where Shuffle's consultancy and support services come in handy. We help you build and automate your operational processes to a level you haven't seen before with the help of our usecases.\n\t\t\t\t\t\n\n\t\t\t\t\tAPIs\n\t\t\t\t\t\n\t\t\t\t\t\tLearn. We're all about learning, and are continuously creating documentation and video tutorials to better understand how to get started. APIs are an extremely important part of how the internet works today, and our goal is helping every security professional learn about them.\n\t\t\t\t\t\n\n\t\t\t\t\tWorkflow building\n\t\t\t\t\t\n\t\t\t\t\t\tBuild. Creating workflows has never been easier. Jump into things with our getting Started section and build to your hearts content. Workflows make it all come together, with an easy to use area.\n\t\t\t\t\t\n\n\t\t\t\t\tManaging Shuffle\n\t\t\t\t\t\n\t\t\t\t\t\tOrganize. Whether an organization of 1000 or 1, management tools are necessary. In Shuffle we offer full user management, MFA and single-signon options, multi-tenancy and a lot more - for free!\n\t\t\t\t\t\n\t\t\t\t
    \n\n\t\t\t\t{/*\n\t\t\t\t\n\t\t\t\t\t{list.map((data, index) => {\n\t\t\t\t\t\tconst item = data.name;\n\t\t\t\t\t\tif (item === undefined) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst path = \"/docs/\" + item;\n\t\t\t\t\t\tconst newname =\n\t\t\t\t\t\t\titem.charAt(0).toUpperCase() +\n\t\t\t\t\t\t\titem.substring(1).split(\"_\").join(\" \").split(\"-\").join(\" \");\n\n\t\t\t\t\t\tconst itemMatching = props.match.params.key === undefined ? false : \n\t\t\t\t\t\t\tprops.match.params.key.toLowerCase() === item.toLowerCase();\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)\n\t\t\t\t\t})}\n\t\t\t\t\n\t\t\t\t*/}\n\n\t\t\t\t{/*\n\t\t\t\t {\n\t\t\t\t\t\tconsole.log(\"Change: \", event.target.value)\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\t*/}\n\t\t
    \n\n const postDataBrowser =\n list === undefined || list === null ? null : (\n
    \n
    \n \n \n {list.map((data, index) => {\n const item = data.name;\n if (item === undefined) {\n return null;\n }\n\n const path = \"/docs/\" + item;\n const newname =\n item.charAt(0).toUpperCase() +\n item.substring(1).split(\"_\").join(\" \").split(\"-\").join(\" \");\n\n const itemMatching = props.match.params.key === undefined ? false : \n props.match.params.key.toLowerCase() === item.toLowerCase();\n //const [tocLines, setTocLines] = React.useState([]);\n return (\n
  • \n {\n setTocLines([]);\n fetchDocs(item);\n }}\n >\n \n > {newname}\n \n \n {itemMatching &&\n tocLines !== null &&\n tocLines !== undefined &&\n tocLines.length > 0 ? (\n
    \n {tocLines.map((data, index) => {\n //console.log(data)\n\n return (\n {}}\n >\n \n - {data.text}\n \n \n );\n })}\n
    \n ) : null}\n
  • \n );\n })}\n
    \n
    \n
    \n\t\t\t\t
    \n\t\t\t\t\t{props.match.params.key === undefined ?\n\t\t\t\t\t\tmainpageInfo\n\t\t\t\t\t:\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t}\n\t\t\t\t
    \n
    \n );\n\n const mobileStyle = {\n color: \"white\",\n marginLeft: 25,\n marginRight: 25,\n paddingBottom: 50,\n backgroundColor: \"inherit\",\n display: \"flex\",\n flexDirection: \"column\",\n };\n\n const postDataMobile =\n list === undefined || list === null ? null : (\n
    \n
    \n \n
    More docs
    \n \n \n {list.map((data, index) => {\n const item = data.name;\n if (item === undefined) {\n return null;\n }\n\n const path = \"/docs/\" + item;\n const newname =\n item.charAt(0).toUpperCase() +\n item.substring(1).split(\"_\").join(\" \").split(\"-\").join(\" \");\n return (\n {\n window.location.pathname = path;\n }}\n >\n {newname}\n \n );\n })}\n \n
    \n\t\t\t\t{props.match.params.key === undefined ?\n\t\t\t\t\tmainpageInfo\n\t\t\t\t:\n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t}\n \n \n
    More docs
    \n \n
    \n );\n\n //const imageModal =\n //\t\n // {imageModal}\n\n\t// Padding and zIndex etc set because of footer in cloud.\n const loadedCheck = (\n
    \n {postDataBrowser}\n {postDataMobile}\n
    \n );\n\n return
    {loadedCheck}
    ;\n};\n\nexport default Docs;\n","import React, { useEffect, useState } from \"react\";\nimport { useTheme } from \"@material-ui/core/styles\";\nimport { Link, useParams } from \"react-router-dom\";\n\nimport Grid from \"@material-ui/core/Grid\";\nimport Card from \"@material-ui/core/Card\";\nimport CardActionArea from \"@material-ui/core/CardActionArea\";\nimport CardContent from \"@material-ui/core/CardContent\";\nimport CardHeader from \"@material-ui/core/CardHeader\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Button from \"@material-ui/core/Button\";\n\nconst Workflows = (defaultprops) => {\n const { globalUrl, isLoggedIn, isLoaded } = defaultprops;\n\n const theme = useTheme();\n\tconst params = useParams();\n\tvar props = JSON.parse(JSON.stringify(defaultprops))\n\tprops.match = {}\n\tprops.match.params = params\n\n const [curView, setCurView] = useState(0);\n const [firstrequest, setFirstrequest] = useState(true);\n const [selectedItems, setSelectedItems] = useState([]);\n\n const viewdata1 = [\n {\n title: \"General\",\n content: \"Learn about our ticketing solutions\",\n subitems: [\n {\n name: \"Search\",\n subtitle: \"Search for anything, anywhere\",\n },\n {\n name: \"Message\",\n subtitle: \"Read and send messages\",\n },\n {\n name: \"Parse emails\",\n subtitle: \"what\",\n },\n ],\n },\n {\n title: \"Ticketing\",\n subitems: [\n {\n name: \"Search\",\n subtitle: \"Search for anything, anywhere\",\n },\n {\n name: \"Message\",\n subtitle: \"Read and send messages\",\n },\n {\n name: \"Parse emails\",\n subtitle: \"what\",\n },\n ],\n },\n {\n title: \"Threat intel\",\n subitems: [\n {\n name: \"Search\",\n subtitle: \"Search for anything, anywhere\",\n },\n {\n name: \"Message\",\n subtitle: \"Read and send messages\",\n },\n {\n name: \"Parse emails\",\n subtitle: \"what\",\n },\n ],\n },\n ];\n\n if (firstrequest) {\n setFirstrequest(false);\n if (props.match.params.key) {\n console.log(\"PROPS: \", props.match.params.key);\n const viewitem = viewdata1.find(\n (item) =>\n item.title.toLowerCase() === props.match.params.key.toLowerCase()\n );\n if (viewitem !== undefined && viewitem !== null) {\n setCurView(1);\n //setSelectedItem(viewitem)\n }\n }\n }\n\n const cardContentStyle = {\n height: \"100%\",\n width: \"100%\",\n padding: 40,\n };\n\n const outerGridView = {\n width: \"100%\",\n marginTop: 15,\n };\n\n const paperStyle = {\n height: 300,\n color: \"white\",\n backgroundColor: theme.palette.surfaceColor,\n color: \"white\",\n cursor: \"pointer\",\n display: \"flex\",\n textAlign: \"center\",\n };\n\n const HandleSelection = (data) => {\n const [selected, setSelected] = useState(false);\n\n var baseStyle = JSON.parse(JSON.stringify(paperStyle));\n if (selected) {\n baseStyle.backgroundColor = \"white\";\n baseStyle.color = \"black\";\n }\n\n return (\n {\n console.log(selectedItems);\n if (selected) {\n const index = selectedItems.findIndex(\n (item) => item.title === data.title\n );\n if (index >= 0) {\n selectedItems.splice(index, 1);\n setSelectedItems(selectedItems);\n }\n } else {\n selectedItems.push(data);\n setSelectedItems(selectedItems);\n }\n\n setSelected(!selected);\n\n //setCurView(1)\n //setSelectedItem(data)\n //window.location.pathname += \"/\"+data.title.toLowerCase()\n }}\n >\n \n \n \n {data.title}\n \n \n \n \n );\n };\n\n const view1 =\n curView === 0 ? (\n
    \n What are you interested in?\n \n {viewdata1.map((data) => {\n return HandleSelection(data);\n })}\n \n {/*\n\t\t\t\n\t\t\t*/}\n
    \n ) : null;\n\n const view2 =\n curView === 1 ? (\n
    \n Step 2.\n {/*\n\t\t\t\n\t\t\t\t{selectedItem.subitems === undefined ? null : \n\t\t\t\t\tselectedItem.subitems.map(data => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{data.name}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{data.subtitle}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t)\n\t\t\t\t})}\n\t\t\t\n\t\t\t*/}\n
    \n ) : null;\n\n const baseView = (\n
    \n {view1}\n {view2}\n
    \n );\n\n return
    {baseView}
    ;\n};\n\nexport default Workflows;\n","import React, { useState } from \"react\";\n\nimport { Typography, CircularProgress } from \"@material-ui/core\";\nimport theme from '../theme.jsx';\n\nconst SetAuthentication = (props) => {\n const { globalUrl } = props;\n\n const [firstRequest, setFirstRequest] = useState(true);\n const [finished, setFinished] = useState(false);\n const [response, setResponse] = useState(\"\");\n const [failed, setFailed] = useState(false);\n\n if (firstRequest) {\n setFirstRequest(false);\n\n //code\n //session_state\n const urlSearchParams = new URLSearchParams(window.location.search);\n const params = Object.fromEntries(urlSearchParams.entries());\n\t\tconsole.log(\"PARAMS: \", params)\n\n //const authenticationStore = [];\n var appAuthData = {\n label: \"\",\n app: {\n name: \"\",\n id: \"\",\n app_version: \"\",\n },\n fields: [],\n type: \"oauth2\",\n }\n\n if (window !== undefined && window !== null) {\n //console.log(window.location);\n appAuthData.fields.push({\n key: \"redirect_uri\",\n value: window.location.origin + window.location.pathname,\n });\n }\n\n\n if (params.session_state !== undefined && params.session_state !== null) {\n appAuthData.fields.push({\n key: \"session_state\",\n value: params.session_state,\n });\n }\n\n\t\tvar externalData = {\n\t\t\thandleExternal: false,\n\t\t\tuser: \"\",\n\t\t\ttype: \"\",\n\t\t\tcode: \"\",\n\t\t}\n\n if (params.code !== undefined && params.code !== null) {\n appAuthData.fields.push({ key: \"code\", value: params.code });\n\t\t\texternalData.code = params.code\n }\n\n\t\tvar foundScope = \"\"\n if (params.state !== undefined && params.state !== null) {\n const paramsplit = params.state.split(\"&\");\n console.log(paramsplit);\n for (var key in paramsplit) {\n const query = paramsplit[key].split(\"=\");\n console.log(\"K:V: \", key, query);\n\t\t\t\tif (query.length > 1) {\n\t\t\t\t\tif (query[0] === \"type\" && query[1] === \"github\"){ \n\t\t\t\t\t\texternalData.handleExternal = true \n\t\t\t\t\t\texternalData.type = \"github\" \n\t\t\t\t\t}\n\n\t\t\t\t\tif (query[0] === \"username\" || query[0] === \"user\"){ \n\t\t\t\t\t\texternalData.user = query[1] \n\t\t\t\t\t}\n\t\t\t\t}\n\n if (query.length !== 2) {\n console.log(\"INVALID QUERY: \", query);\n continue;\n }\n\n if (query[0] === \"workflow_id\") {\n appAuthData.reference_workflow = query[1];\n }\n\n if (query[0] === \"reference_action_id\") {\n //appAuthData.ReferenceWorkflow = query[1]\n }\n\n if (query[0] === \"app_name\") {\n appAuthData.app.name = query[1];\n appAuthData.label = \"Oauth2 for \" + query[1];\n }\n\n if (query[0] === \"app_id\") {\n appAuthData.app.id = query[1];\n }\n\n if (query[0] === \"app_version\") {\n appAuthData.app.app_version = query[1];\n }\n\n if (query[0] === \"authentication_url\") {\n appAuthData.fields.push({\n key: \"authentication_url\",\n value: query[1],\n });\n }\n\n if (query[0] === \"scope\") {\n appAuthData.fields.push({ key: \"scope\", value: query[1] });\n\t\t\t\t\tfoundScope = query[1]\n }\n\n if (query[0] === \"client_id\") {\n appAuthData.fields.push({ key: \"client_id\", value: query[1] });\n }\n\n if (query[0] === \"client_secret\") {\n appAuthData.fields.push({ key: \"client_secret\", value: query[1] });\n }\n\n if (query[0] === \"oauth_url\") {\n appAuthData.fields.push({ key: \"oauth_url\", value: query[1] });\n }\n\n if (query[0] === \"refresh_uri\") {\n appAuthData.fields.push({ key: \"refresh_uri\", value: query[1] });\n }\n\n if (query[0] === \"refresh_url\") {\n appAuthData.fields.push({ key: \"refresh_url\", value: query[1] });\n }\n }\n }\n\n\t\tif (foundScope !== undefined && foundScope !== null && foundScope.length > 0) {\n\t\t\tappAuthData.label = `${foundScope}`\n\t\t}\n\n\t\tvar foundTab = params[\"error\"];\n\t\tif (foundTab !== null && foundTab !== undefined && foundTab.length > 0) {\n\t\t\tconsole.log(\"Found error: \", foundTab, \"! Skipping Shuffle requests to validate Oauth2\")\n\t\t\tvar errorDesc = params[\"error_description\"]\n\t\t\tif (errorDesc !== null && errorDesc !== undefined && errorDesc.length > 0) {\n\t\t\t\tfoundTab += \"\\n\\n\"+errorDesc\n\t\t\t}\n\n\t\t\tsetFailed(true)\n\t\t\tsetResponse(`${foundTab}`)\n\t\t} else {\n\t\t\tif (externalData.handleExternal) {\n\t\t\t\t\tconsole.log(\"RUN EXTERNAL!!: \", externalData)\n\t\t\t\t\t\n\t\t\t\t\tfetch(globalUrl + \"/api/v1/triggers/github/register\", {\n\t\t\t\t\t\tmethod: \"PUT\",\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t\t\t\tAccept: \"application/json\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcredentials: \"include\",\n\t\t\t\t\t\tbody: JSON.stringify(externalData),\n\t\t\t\t\t})\n\t\t\t\t\t.then((response) => {\n\t\t\t\t\t\t\tconst cursearch = typeof window === \"undefined\" || window.location === undefined ? \"\" : window.location.search;\n\t\t\t\t\t\t\tconst tmpView = new URLSearchParams(cursearch).get(\"state\");\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\ttmpView !== undefined &&\n\t\t\t\t\t\t\t\ttmpView !== null &&\n\t\t\t\t\t\t\t\ttmpView.length > 0\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tconsole.log(\"State to find app name from: \", tmpView)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (response.status !== 200) {\n\t\t\t\t\t\t\tconsole.log(\"Status not 200 for oauth2 authentication\");\n\t\t\t\t\t\t\tsetFailed(true);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsetFinished(true);\n\t\t\t\t\t\t\t//setTimeout(() => {\n\t\t\t\t\t\t\t//\twindow.close();\n\t\t\t\t\t\t\t//}, 2500);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn response.json();\n\t\t\t\t\t})\n\t\t\t\t\t.then((responseJson) => {\n\t\t\t\t\t\t//setUserSettings(responseJson)\n\t\t\t\t\t\tconsole.log(\"Resp: \", responseJson);\n\n\t\t\t\t\t\tif (responseJson.reason !== undefined) {\n\t\t\t\t\t\t\tsetResponse(responseJson.reason);\n\t\t\t\t\t\t\tsetFinished(true);\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst cursearch = typeof window === \"undefined\" || window.location === undefined ? \"\" : window.location.search;\n\t\t\t\t\t\t\tvar tmpView = new URLSearchParams(cursearch).get(\"error_description\");\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\ttmpView !== undefined &&\n\t\t\t\t\t\t\t\ttmpView !== null &&\n\t\t\t\t\t\t\t\ttmpView.length > 0\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tsetResponse(tmpView)\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ttmpView = new URLSearchParams(cursearch).get(\"error\");\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\ttmpView !== undefined &&\n\t\t\t\t\t\t\t\t\ttmpView !== null &&\n\t\t\t\t\t\t\t\t\ttmpView.length > 0\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\tsetResponse(tmpView)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t})\n\t\t\t\t\t.catch((error) => {\n\t\t\t\t\t\tconsole.log(error);\n\t\t\t\t\t});\n\n\t\t\t\treturn\n\t\t\t}\n\n \tfetch(globalUrl + \"/api/v1/apps/authentication\", {\n \t method: \"PUT\",\n \t headers: {\n \t \"Content-Type\": \"application/json\",\n \t Accept: \"application/json\",\n \t },\n \t credentials: \"include\",\n \t body: JSON.stringify(appAuthData),\n \t})\n \t .then((response) => {\n \t const cursearch = typeof window === \"undefined\" || window.location === undefined ? \"\" : window.location.search;\n\t\t\t\t\t\tconst tmpView = new URLSearchParams(cursearch).get(\"state\");\n \t \t\tif (\n \t \t\t tmpView !== undefined &&\n \t \t\t tmpView !== null &&\n \t \t\t tmpView.length > 0\n \t \t\t) {\n\t\t\t\t\t\t\tconsole.log(\"State to find app name from: \", tmpView)\n \t \t\t}\n\n \t if (response.status !== 200) {\n \t console.log(\"Status not 200 for oauth2 authentication\");\n \t setFailed(true);\n \t } else {\n \t \tsetFinished(true);\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\twindow.close();\n\t\t\t\t\t\t}, 2500);\n\t\t\t\t\t}\n\n \t return response.json();\n \t })\n \t .then((responseJson) => {\n \t //setUserSettings(responseJson)\n\t\t\t\t\tif (responseJson.reason !== undefined) {\n \t \tsetResponse(responseJson.reason);\n \t \tsetFinished(true);\n\n\t\t\t\t\t} else {\n \t const cursearch = typeof window === \"undefined\" || window.location === undefined ? \"\" : window.location.search;\n\t\t\t\t\t\tvar tmpView = new URLSearchParams(cursearch).get(\"error_description\");\n \t \t\tif (\n \t \t\t tmpView !== undefined &&\n \t \t\t tmpView !== null &&\n \t \t\t tmpView.length > 0\n \t \t\t) {\n\t\t\t\t\t\t\tsetResponse(tmpView)\n \t \t\t} else {\n\t\t\t\t\t\t\ttmpView = new URLSearchParams(cursearch).get(\"error\");\n \t \t\t\tif (\n \t \t\t\t tmpView !== undefined &&\n \t \t\t\t tmpView !== null &&\n \t \t\t\t tmpView.length > 0\n \t \t\t\t) {\n\t\t\t\t\t\t\t\tsetResponse(tmpView)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n \t })\n \t .catch((error) => {\n \t console.log(error);\n \t });\n\t\t\t}\n }\n\n return (\n
    \n \n\t\t\t\tOauth2 setup\n \n \n {!finished ? (\n\t\t\t\t\tfailed ? \n\t\t\t\t\t\tnull :\n \t\n ) : (\n \"Done - this window should close within 3 seconds.\"\n )}\n
    \n {failed ? \"Failed setup. Error: \" : \"\"} {response}\n\t\t\t\t
    \n\t\t\t\t
    \n {failed ? \"If the error persists, try to use fewer scopes. Contact our support at support@shuffler.io if you need further assistance. You may close this window.\" : \"\"}\n \n
    \n );\n};\n\nexport default SetAuthentication;\n","import React, { useState } from \"react\";\n\nimport { Typography, CircularProgress } from \"@material-ui/core\";\n\nconst SetAuthentication = (props) => {\n const { globalUrl } = props;\n\n const [firstRequest, setFirstRequest] = useState(true);\n const [finished, setFinished] = useState(false);\n const [response, setResponse] = useState(\"\");\n const [failed, setFailed] = useState(false);\n\n if (firstRequest) {\n setFirstRequest(false);\n\n //code\n //session_state\n const urlSearchParams = new URLSearchParams(window.location.search);\n const params = Object.fromEntries(urlSearchParams.entries());\n\n // const authenticationStore = [];\n var appAuthData = {\n label: \"\",\n app: {\n name: \"\",\n id: \"\",\n app_version: \"\",\n },\n fields: [],\n type: \"oauth2\",\n };\n\n if (window !== undefined && window !== null) {\n console.log(window.location);\n appAuthData.fields.push({\n key: \"redirect_uri\",\n value: window.location.origin + window.location.pathname,\n });\n }\n\n if (params.code !== undefined && params.code !== null) {\n appAuthData.fields.push({ key: \"code\", value: params.code });\n }\n\n if (params.session_state !== undefined && params.session_state !== null) {\n appAuthData.fields.push({\n key: \"session_state\",\n value: params.session_state,\n });\n }\n\n if (params.state !== undefined && params.state !== null) {\n const paramsplit = params.state.split(\"&\");\n console.log(paramsplit);\n for (var key in paramsplit) {\n const query = paramsplit[key].split(\"=\");\n console.log(query);\n\n if (query.length !== 2) {\n console.log(\"INVALID QUERY: \", query);\n continue;\n }\n\n if (query[0] === \"workflow_id\") {\n appAuthData.reference_workflow = query[1];\n }\n\n if (query[0] === \"reference_action_id\") {\n //appAuthData.ReferenceWorkflow = query[1]\n }\n\n if (query[0] === \"app_name\") {\n appAuthData.app.name = query[1];\n appAuthData.label = \"Oauth2 for \" + query[1];\n }\n\n if (query[0] === \"app_id\") {\n appAuthData.app.id = query[1];\n }\n\n if (query[0] === \"app_version\") {\n appAuthData.app.app_version = query[1];\n }\n\n if (query[0] === \"authentication_url\") {\n appAuthData.fields.push({\n key: \"authentication_url\",\n value: query[1],\n });\n }\n\n if (query[0] === \"scope\") {\n appAuthData.fields.push({ key: \"scope\", value: query[1] });\n }\n\n if (query[0] === \"client_id\") {\n appAuthData.fields.push({ key: \"client_id\", value: query[1] });\n }\n\n if (query[0] === \"client_secret\") {\n appAuthData.fields.push({ key: \"client_secret\", value: query[1] });\n }\n }\n }\n\n console.log(appAuthData);\n\n fetch(globalUrl + \"/api/v1/apps/authentication\", {\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n body: JSON.stringify(appAuthData),\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for oauth2 authentication\");\n setFailed(true);\n }\n\n return response.json();\n })\n .then((responseJson) => {\n //setUserSettings(responseJson)\n console.log(\"Resp: \", responseJson);\n setFinished(true);\n setResponse(responseJson.reason);\n\n setTimeout(() => {\n window.close();\n }, 1000);\n })\n .catch((error) => {\n console.log(error);\n });\n }\n\n return (\n
    \n \n {!finished ? (\n \n ) : (\n \"DONE WITH AUTH - this will close soon!!\"\n )}\n
    \n {failed ? \"Failed setup. Error: \" : \"\"} {response}\n \n
    \n );\n};\n\nexport default SetAuthentication;\n","import React, {useEffect, useState} from 'react';\n\nimport ReactGA from 'react-ga4';\nimport { useTheme } from '@material-ui/core/styles';\nimport {Link} from 'react-router-dom';\n\nimport { Search as SearchIcon, CloudQueue as CloudQueueIcon, Code as CodeIcon } from '@material-ui/icons';\n\nimport algoliasearch from 'algoliasearch/lite';\nimport { InstantSearch, Configure, connectSearchBox, connectHits, connectHitInsights } from 'react-instantsearch-dom';\n\nimport aa from 'search-insights'\n\nimport { \n\tZoom, \n\tGrid, \n\tPaper, \n\tTextField, \n\tButtonBase, \n\tInputAdornment, \n\tTypography, \n\tButton, \n\tTooltip\n} from '@material-ui/core';\n\nconst searchClient = algoliasearch(\"JNSS5CFDZZ\", \"db08e40265e2941b9a7d8f644b6e5240\")\n//const searchClient = algoliasearch(\"L55H18ZINA\", \"a19be455e7e75ee8f20a93d26b9fc6d6\")\nconst AppGrid = props => {\n\tconst { maxRows, showName, showSuggestion, isMobile, globalUrl, parsedXs, userdata } = props\n\n const isCloud =\n window.location.host === \"localhost:3002\" ||\n window.location.host === \"shuffler.io\";\n\n\tconst rowHandler = maxRows === undefined || maxRows === null ? 50 : maxRows\n\tconst xs = parsedXs === undefined || parsedXs === null ? isMobile ? 6 : 2 : parsedXs\n\tconst theme = useTheme();\n\t//const [apps, setApps] = React.useState([]);\n\t//const [filteredApps, setFilteredApps] = React.useState([]);\n\tconst [formMail, setFormMail] = React.useState(\"\");\n\tconst [message, setMessage] = React.useState(\"\");\n\tconst [formMessage, setFormMessage] = React.useState(\"\");\n\n\tconst buttonStyle = {borderRadius: 30, height: 50, width: 220, margin: isMobile ? \"15px auto 15px auto\" : 20, fontSize: 18,}\n\n\tconst innerColor = \"rgba(255,255,255,0.65)\"\n\tconst borderRadius = 3\n\twindow.title = \"Shuffle | Apps | Find and integrate any app\"\n\n\tconst submitContact = (email, message) => {\n\t\tconst data = {\n\t\t\t\"firstname\": \"\",\n\t\t\t\"lastname\": \"\",\n\t\t\t\"title\": \"\",\n\t\t\t\"companyname\": \"\",\n\t\t\t\"email\": email,\n\t\t\t\"phone\": \"\",\n\t\t\t\"message\": message,\n\t\t}\n\t\n\t\tconst errorMessage = \"Something went wrong. Please contact frikky@shuffler.io directly.\"\n\n\t\tfetch(globalUrl+\"/api/v1/contact\", {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t},\n\t\t\tbody: JSON.stringify(data),\n\t\t})\n\t\t.then(response => response.json())\n\t\t.then(response => {\n\t\t\tif (response.success === true) {\n\t\t\t\tsetFormMessage(response.reason)\n\t\t\t\t//alert.info(\"Thanks for submitting!\")\n\t\t\t} else {\n\t\t\t\tsetFormMessage(errorMessage)\n\t\t\t}\n\n\t\t\tsetFormMail(\"\")\n\t\t\tsetMessage(\"\")\n })\n\t\t.catch(error => {\n\t\t\tsetFormMessage(errorMessage)\n \tconsole.log(error)\n\t\t});\n\t}\n\n\tconst SearchBox = ({currentRefinement, refine, isSearchStalled} ) => {\n\t\tuseEffect(() => {\n\t\t\tif (window !== undefined && window.location !== undefined && window.location.search !== undefined && window.location.search !== null) {\n\t\t\t\tconst urlSearchParams = new URLSearchParams(window.location.search)\n\t\t\t\tconst params = Object.fromEntries(urlSearchParams.entries())\n\t\t\t\tconst foundQuery = params[\"q\"]\n\t\t\t\tif (foundQuery !== null && foundQuery !== undefined) {\n\t\t\t\t\tconsole.log(\"Got query: \", foundQuery)\n\t\t\t\t\trefine(foundQuery)\n\t\t\t\t}\n\t\t\t}\n\t\t}, [])\n\n\t\treturn (\n\t\t
    \n\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t),\n\t\t\t\t\t}}\n\t\t\t\t\tautoComplete='off'\n\t\t\t\t\ttype=\"search\"\n\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\tdefaultValue={currentRefinement}\n\t\t\t\t\tplaceholder=\"Find Apps...\"\n\t\t\t\t\tid=\"shuffle_search_field\"\n\t\t\t\t\tonChange={(event) => {\n\t\t\t\t\t\trefine(event.currentTarget.value)\n\t\t\t\t\t}}\n\t\t\t\t\tlimit={5}\n\t\t\t\t/>\n\t\t\t\t{/*isSearchStalled ? 'My search is stalled' : ''*/}\n\t\t\t\n\t\t)\n\t}\n\n\tvar workflowDelay = -50\n\tconst Hits = ({ hits, insights }) => {\n\t\tconst [mouseHoverIndex, setMouseHoverIndex] = useState(-1) \n\t\tvar counted = 0\n\n\t\t//console.log(hits)\n\t\t//var curhits = hits\n\t\t//if (hits.length > 0 && defaultApps.length === 0) {\n\t\t//\tsetDefaultApps(hits)\n\t\t//}\n\n\t\t//const [defaultApps, setDefaultApps] = React.useState([])\n\t\t//console.log(hits)\n\t\t//if (hits.length > 0 && hits.length !== innerHits.length) {\n\t\t//\tsetInnerHits(hits)\n\t\t//}\n\n\t\tconsole.log(\"In appgrid\")\n\n\t\treturn (\n\t\t\t\n\t\t\t\t{hits.map((data, index) => {\n\n\t\t\t\t\tworkflowDelay += 50\n\n\t\t\t\t\tconst paperStyle = {\n\t\t\t\t\t\tbackgroundColor: index === mouseHoverIndex ? \"rgba(255,255,255,0.8)\" : theme.palette.inputColor,\n\t\t\t\t\t\tcolor: index === mouseHoverIndex ? theme.palette.inputColor : \"rgba(255,255,255,0.8)\", \n\t\t\t\t\t\tborder: `1px solid ${innerColor}`, \n\t\t\t\t\t\tpadding: 15,\n\t\t\t\t\t\tcursor: \"pointer\",\n\t\t\t\t\t\tposition: \"relative\",\n\t\t\t\t\t\tminHeight: 116,\n\t\t\t\t\t}\n\t\n\t\t\t\t\tif (counted === 12/xs*rowHandler) {\n\t\t\t\t\t\treturn null\n\t\t\t\t\t}\n\n\t\t\t\t\tcounted += 1\n\t\t\t\t\tvar parsedname = \"\"\n\t\t\t\t\tfor (var key = 0; key < data.name.length; key++) {\n\t\t\t\t\t\tvar character = data.name.charAt(key)\n\t\t\t\t\t\tif (character === character.toUpperCase()) {\n\t\t\t\t\t\t\t//console.log(data.name[key], data.name[key+1])\n\t\t\t\t\t\t\tif (data.name.charAt(key+1) !== undefined && data.name.charAt(key+1) === data.name.charAt(key+1).toUpperCase()) {\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tparsedname += \" \"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tparsedname += character\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tparsedname = (parsedname.charAt(0).toUpperCase()+parsedname.substring(1)).replaceAll(\"_\", \" \")\n\t\t\t\t\tconst appUrl = isCloud ? `/apps/${data.objectID}?queryID=${data.__queryID}` : `https://shuffler.io/apps/${data.objectID}?queryID=${data.__queryID}`\n\t\t\t\t\treturn (\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\tsetMouseHoverIndex(index)\n\t\t\t\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t\t\t\tReactGA.event({\n\t\t\t\t\t\t\t\t\t\t\tcategory: \"app_grid_view\",\n\t\t\t\t\t\t\t\t\t\t\taction: `search_bar_click`,\n\t\t\t\t\t\t\t\t\t\t\tlabel: \"\",\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t*/\n\t\t\t\t\t\t\t\t\t}} onMouseOut={() => {\n\t\t\t\t\t\t\t\t\t\tsetMouseHoverIndex(-1)\n\t\t\t\t\t\t\t\t\t}} onClick={() => {\n\t\t\t\t\t\t\t\t\t\tif (isCloud) {\n\t\t\t\t\t\t\t\t\t\t\tReactGA.event({\n\t\t\t\t\t\t\t\t\t\t\t\tcategory: \"app_grid_view\",\n\t\t\t\t\t\t\t\t\t\t\t\taction: `app_${parsedname}_${data.id}_click`,\n\t\t\t\t\t\t\t\t\t\t\t\tlabel: \"\",\n\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t//const searchClient = algoliasearch(\"L55H18ZINA\", \"a19be455e7e75ee8f20a93d26b9fc6d6\")\n\t\t\t\t\t\t\t\t\t\tconsole.log(searchClient)\n\t\t\t\t\t\t\t\t\t\taa('init', {\n\t\t\t\t\t\t\t\t\t\t\tappId: searchClient.appId,\n\t\t\t\t\t\t\t\t\t\t\tapiKey: searchClient.transporter.queryParameters[\"x-algolia-api-key\"]\n\t\t\t\t\t\t\t\t\t\t})\n\n\t\t\t\t\t\t\t\t\t\tconst timestamp = new Date().getTime()\n\t\t\t\t\t\t\t\t\t\taa('sendEvents', [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\teventType: 'click',\n\t\t\t\t\t\t\t\t\t\t\t\teventName: 'Product Clicked',\n\t\t\t\t\t\t\t\t\t\t\t\tindex: 'appsearch',\n\t\t\t\t\t\t\t\t\t\t\t\tobjectIDs: [data.objectID],\n\t\t\t\t\t\t\t\t\t\t\t\ttimestamp: timestamp,\n\t\t\t\t\t\t\t\t\t\t\t\tqueryID: data.__queryID,\n\t\t\t\t\t\t\t\t\t\t\t\tpositions: [data.__position],\n\t\t\t\t\t\t\t\t\t\t\t\tuserToken: userdata === undefined || userdata === null || userdata.id === undefined ? \"unauthenticated\" : userdata.id,\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t])\n\n\t\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{data.name}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t{index === mouseHoverIndex || showName === true ? \n\t\t\t\t\t\t\t\t\t\t\tparsedname\n\t\t\t\t\t\t\t\t\t\t\t: \n\t\t\t\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t{data.generated ?\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{data.invalid ? \n\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t:\n\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t: \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t)\n\t\t\t\t})}\n\t\t\t\n\t\t)\n\t}\n\n\tconst CustomSearchBox = connectSearchBox(SearchBox)\n\tconst CustomHits = connectHits(Hits)\n\t//const CustomHits = connectHitInsights(aa)(Hits)\n\tconst selectButtonStyle = {\n\t\tminWidth: 150,\n\t\tmaxWidth: 150,\n\t\tminHeight: 50, \n\t}\n\n\treturn (\n\t\t
    \n\t\t\t{/*\n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t\t*/}\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t \n\t\t\t\t
    \n\t\t\t\t{showSuggestion === true ? \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t\tCan't find what you're looking for? \n\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t setFormMail(e.target.value)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t setMessage(e.target.value)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tsubmitContact(formMail, message)\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tSubmit\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t{formMessage}\n\t\t\t\t\t
    \n\t\t\t\t\t: null\n\t\t\t\t}\n\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tSearch by \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\"Algolia\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
    \n\t\t
    \n\t)\n}\n\nexport default AppGrid;\n","import React, { useState, useEffect, useLayoutEffect } from \"react\";\nimport theme from '../theme.jsx';\n\nimport {\n\tChip,\n\tTypography,\n\tPaper, \n\tAvatar,\n\tGrid,\n\tTooltip,\n\tButton,\n} from \"@material-ui/core\";\n\nimport {\n AvatarGroup,\n} from \"@mui/material\"\n\nimport {\n\tRestore as RestoreIcon,\n\tEdit as EditIcon,\n\tBubbleChart as BubbleChartIcon,\n\tMoreVert as MoreVertIcon,\n} from '@material-ui/icons';\n\nimport { useNavigate, Link, useParams } from \"react-router-dom\";\n\nconst workflowActionStyle = {\n\tdisplay: \"flex\",\n\twidth: 160,\n\theight: 44,\n\tjustifyContent: \"space-between\",\n}\n\nconst paperAppStyle = {\n\tminHeight: 130,\n\tmaxHeight: 130,\n\toverflow: \"hidden\",\n\twidth: \"100%\",\n\tcolor: \"white\",\n\tbackgroundColor: theme.palette.surfaceColor,\n\tpadding: \"12px 12px 0px 15px\",\n\tborderRadius: 5,\n\tdisplay: \"flex\",\n\tboxSizing: \"border-box\",\n\tposition: \"relative\",\n}\n\nconst chipStyle = {\n\tbackgroundColor: \"#3d3f43\",\n\tmarginRight: 5,\n\tpaddingLeft: 5,\n\tpaddingRight: 5,\n\theight: 28,\n\tcursor: \"pointer\",\n\tborderColor: \"#3d3f43\",\n\tcolor: \"white\",\n}\n\nconst WorkflowPaper = (props) => {\n const { data } = props;\n\t\tlet navigate = useNavigate();\n\n const [open, setOpen] = React.useState(false);\n const [anchorEl, setAnchorEl] = React.useState(null);\n\t\tconst appGroup = data.action_references === undefined || data.action_references === null ? [] : data.action_references\n\n\t\tconst activateWorkflow = (workflow) => {\n\t\t\tconsole.log(\"Should activate: \", workflow)\n\n\t\t}\n\n\t\t//console.log(\"Workflow: \", data)\n var boxColor = \"#86c142\";\n\n var parsedName = data.name;\n if (\n parsedName !== undefined &&\n parsedName !== null &&\n parsedName.length > 35\n ) {\n parsedName = parsedName.slice(0, 36) + \"..\";\n }\n\t\t\n\t\tconst imageStyle = {\n\t\t\twidth: 28, \n\t\t\theight: 28,\n\t\t\tmarginRight: 10, \n\t\t\tborder: \"1px solid rgba(255,255,255,0.3)\",\n\t\t}\n\n var image = data.creator_info !== undefined && data.creator_info !== null && data.creator_info.image !== undefined && data.creator_info.image !== null && data.creator_info.image.length > 0 ? : \n\t\tconst creatorname = data.creator_info !== undefined && data.creator_info !== null && data.creator_info.username !== undefined && data.creator_info.username !== null && data.creator_info.username.length > 0 ? data.creator_info.username : \"Shuffle\"\n var orgName = \"\";\n var orgId = \"\";\n\t\tif ((data.objectID === undefined || data.objectID === null) && data.id !== undefined && data.id !== null) {\n\t\t\tdata.objectID = data.id\n\t\t}\n\n\t\t//console.log(\"IMG: \", data)\n\t\tvar parsedUrl = `/workflows/${data.objectID}`\n\t\tif (data.__queryID !== undefined && data.__queryID !== null) {\n\t\t\tparsedUrl += `?queryID=${data.__queryID}`\n\t\t}\n\t\t\n\t\tconst paperImgStyle = {\n\t\t\theight: 150, \n\t\t\twidth: \"100%\",\n\t\t\tbackgroundImage: \"linear-gradient(to right, #f86a3e, #f34079)\",\n\t\t\tcolor: \"white\",\n\t\t\tposition: \"relative\",\n\t\t\tborderRadius: \"10px 10px 0% 0%\",\n\t\t}\n\n\t\tconst bgImage1 = \"https://avatars.githubusercontent.com/u/5719530?v=4\"\n\t\tconst bgImage2 = \"https://avatars.githubusercontent.com/u/5719530?v=4\"\n\t\tconst itemSize = 70\n\n return (\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\"Image\n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\"Image\n\t\t\t\t\t
    \n\t\t\t\t
    \n \n \n \n \n \n {\n\t\t\t\t\t\t\t\t\t\tif (data.creator_info !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\tnavigate(\"/creators/\"+data.creator_info.username)\n\t\t\t\t\t\t\t\t\t\t}\n }}\n >\n {image}\n
    \n \n \n \n \n {parsedName}\n \n \n \n \n \n\t\t\t\t\t\t\t{/*\n\t\t\t\t\t\t\t{appGroup.length > 0 ? \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{appGroup.map((app, index) => {\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnavigate(\"/apps/\"+app.id)\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t: \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n \t{data.actions === undefined || data.actions === null ? 1 : data.actions.length}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t*/}\n\t\t\t\t\t\t\t{/*\n \n \n \n \n {data.triggers === undefined || data.triggers === null ? 1 : data.triggers.length}\n \n \n \n \n {\n }}\n >\n \n \n \n \n {0}\n \n \n \n\t\t\t\t\t\t\t*/}\n
    \n\t\t\t\t\t\t{/*\n \n {data.tags !== undefined && data.tags !== null \n ? data.tags.map((tag, index) => {\n if (index >= 3) {\n return null;\n }\n\n return (\n \n );\n })\n : null}\n
    \n\t\t\t\t\t\t*/}\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
    \n\t\t)\n }\n\nexport default WorkflowPaper\n","import React, { useEffect, useState } from 'react';\n\nimport { useTheme } from '@material-ui/core/styles';\nimport {Link} from 'react-router-dom';\n\nimport { Search as SearchIcon, CloudQueue as CloudQueueIcon, Code as CodeIcon } from '@material-ui/icons';\n\nimport algoliasearch from 'algoliasearch/lite';\nimport { InstantSearch, Configure, connectSearchBox, connectHits } from 'react-instantsearch-dom';\nimport { \n\tGrid, \n\tPaper, \n\tTextField, \n\tButtonBase, \n\tInputAdornment, \n\tTypography, \n\tButton, \n\tTooltip, \n\tZoom,\n\tChip,\n} from '@material-ui/core';\n\nimport WorkflowPaper from \"../components/WorkflowPaper.jsx\"\nimport WorkflowPaperNew from \"../components/WorkflowPaperNew.jsx\"\n\nconst searchClient = algoliasearch(\"JNSS5CFDZZ\", \"db08e40265e2941b9a7d8f644b6e5240\")\nconst AppGrid = props => {\n\tconst { maxRows, showName, showSuggestion, isMobile, globalUrl, parsedXs, alternativeView, } = props\n\n const isCloud =\n window.location.host === \"localhost:3002\" ||\n window.location.host === \"shuffler.io\";\n\n\tconst rowHandler = maxRows === undefined || maxRows === null ? 50 : maxRows\n\tconst xs = parsedXs === undefined || parsedXs === null ? isMobile ? 6 : 4 : parsedXs\n\tconst theme = useTheme();\n\t//const [apps, setApps] = React.useState([]);\n\t//const [filteredApps, setFilteredApps] = React.useState([]);\n\tconst [formMail, setFormMail] = React.useState(\"\");\n\tconst [message, setMessage] = React.useState(\"\");\n\tconst [formMessage, setFormMessage] = React.useState(\"\");\n const [usecases, setUsecases] = React.useState([]);\n\n\tconst buttonStyle = {borderRadius: 30, height: 50, width: 220, margin: isMobile ? \"15px auto 15px auto\" : 20, fontSize: 18,}\n\n\tconst innerColor = \"rgba(255,255,255,0.65)\"\n\tconst borderRadius = 3\n\twindow.title = \"Shuffle | Workflows | Discover your use-case\"\n\n\tconst submitContact = (email, message) => {\n\t\tconst data = {\n\t\t\t\"firstname\": \"\",\n\t\t\t\"lastname\": \"\",\n\t\t\t\"title\": \"\",\n\t\t\t\"companyname\": \"\",\n\t\t\t\"email\": email,\n\t\t\t\"phone\": \"\",\n\t\t\t\"message\": message,\n\t\t}\n\t\n\t\tconst errorMessage = \"Something went wrong. Please contact frikky@shuffler.io directly.\"\n\n\t\tfetch(globalUrl+\"/api/v1/contact\", {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t},\n\t\t\tbody: JSON.stringify(data),\n\t\t})\n\t\t.then(response => response.json())\n\t\t.then(response => {\n\t\t\tif (response.success === true) {\n\t\t\t\tsetFormMessage(response.reason)\n\t\t\t\t//alert.info(\"Thanks for submitting!\")\n\t\t\t} else {\n\t\t\t\tsetFormMessage(errorMessage)\n\t\t\t}\n\n\t\t\tsetFormMail(\"\")\n\t\t\tsetMessage(\"\")\n })\n\t\t.catch(error => {\n\t\t\tsetFormMessage(errorMessage)\n \tconsole.log(error)\n\t\t});\n\t}\n\n\tconst handleKeysetting = (categorydata, workflows) => {\n\t\tconsole.log(\"Workflows: \", workflows)\n\t\t//workflows[0].category = [\"detect\"]\n\t\t//workflows[0].usecase_ids = [\"Correlate tickets\"]\n\n\t\tif (workflows !== undefined && workflows !== null) {\n\t\t\tconst newcategories = []\n\t\t\tfor (var key in categorydata) {\n\t\t\t\tvar category = categorydata[key]\n\t\t\t\tcategory.matches = []\n\n\t\t\t\tfor (var subcategorykey in category.list) {\n\t\t\t\t\tvar subcategory = category.list[subcategorykey]\n\t\t\t\t\tsubcategory.matches = []\n\n\t\t\t\t\tfor (var workflowkey in workflows) {\n\t\t\t\t\t\tconst workflow = workflows[workflowkey]\n\n\t\t\t\t\t\tif (workflow.usecase_ids !== undefined && workflow.usecase_ids !== null) {\n\t\t\t\t\t\t\tfor (var usecasekey in workflow.usecase_ids) {\n\t\t\t\t\t\t\t\tif (workflow.usecase_ids[usecasekey].toLowerCase() === subcategory.name.toLowerCase()) {\n\t\t\t\t\t\t\t\t\tconsole.log(\"Got match: \", workflow.usecase_ids[usecasekey])\n\n\t\t\t\t\t\t\t\t\tcategory.matches.push({\n\t\t\t\t\t\t\t\t\t\t\"workflow\": workflow.id,\n\t\t\t\t\t\t\t\t\t\t\"category\": subcategory.name,\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\tsubcategory.matches.push(workflow.id)\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (subcategory.matches.length > 0) {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tnewcategories.push(category)\n\t\t\t} \n\n\t\t\tconsole.log(\"Categories: \", newcategories)\n\t\t\tsetUsecases(newcategories)\n\t\t} else {\n\t\t\tfor (var key in categorydata) {\n\t\t\t\tcategorydata[key].matches = []\n\t\t\t}\n \t\tsetUsecases(categorydata)\n\t\t}\n\t}\n\n const fetchUsecases = (workflows) => {\n fetch(globalUrl + \"/api/v1/workflows/usecases\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for usecases\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n\t\t\t\tif (responseJson.success !== false) {\n\t\t\t\t\tconsole.log(\"Usecases: \", responseJson)\n\t\t\t\t\t//handleKeysetting(responseJson, workflows)\n\t\t\t\t}\n })\n .catch((error) => {\n //alert.error(\"ERROR: \" + error.toString());\n console.log(\"ERROR: \" + error.toString());\n });\n };\n\n\tuseEffect(() => {\n\t\tfetchUsecases()\n\t}, [])\n\n\t// value={currentRefinement}\n\tconst SearchBox = ({currentRefinement, refine, isSearchStalled} ) => {\n\t\tuseEffect(() => {\n\t\t\tif (window !== undefined && window.location !== undefined && window.location.search !== undefined && window.location.search !== null) {\n\t\t\t\tconst urlSearchParams = new URLSearchParams(window.location.search)\n\t\t\t\tconst params = Object.fromEntries(urlSearchParams.entries())\n\t\t\t\tconst foundQuery = params[\"q\"]\n\t\t\t\tif (foundQuery !== null && foundQuery !== undefined) {\n\t\t\t\t\tconsole.log(\"Got query: \", foundQuery)\n\t\t\t\t\trefine(foundQuery)\n\t\t\t\t}\n\t\t\t}\n\t\t}, [])\n\n\t\treturn (\n\t\t
    \n\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t),\n\t\t\t\t\t}}\n\t\t\t\t\tautoComplete='off'\n\t\t\t\t\ttype=\"search\"\n\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\tvalue={currentRefinement}\n\t\t\t\t\tplaceholder=\"Find Workflows...\"\n\t\t\t\t\tid=\"shuffle_search_field\"\n\t\t\t\t\tonChange={(event) => {\n\t\t\t\t\t\trefine(event.currentTarget.value)\n\t\t\t\t\t}}\n\t\t\t\t\tlimit={5}\n\t\t\t\t/>\n\t\t\t\t{/*isSearchStalled ? 'My search is stalled' : ''*/}\n\t\t\t\n\t\t)\n\t}\n\n\tconst paperAppContainer = {\n display: \"flex\",\n flexWrap: \"wrap\",\n alignContent: \"space-between\",\n marginTop: 5,\n }\n\t\n\tvar workflowDelay = -50\n\tconst Hits = ({ hits }) => {\n\t\tconst [mouseHoverIndex, setMouseHoverIndex] = useState(-1) \n\t\tvar counted = 0\n\n\t\treturn (\n \n\t\t\t\t{hits.map((data, index) => {\n\t\t\t\t\tworkflowDelay += 50\n\n\t\t\t\t\tif (counted === 12/xs*rowHandler) {\n\t\t\t\t\t\treturn null\n\t\t\t\t\t}\n\n\t\t\t\t\tcounted += 1\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{alternativeView === true ? \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t: \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t)\n\t\t\t\t})}\n\t\t\t\n\t\t)\n\t}\n\n\tconst CustomSearchBox = connectSearchBox(SearchBox)\n\tconst CustomHits = connectHits(Hits)\n\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t{usecases !== null && usecases !== undefined && usecases.length > 0 ? \n\t\t\t\t\t
    \n\t\t\t\t\t\t{usecases.map((usecase, index) => {\n\t\t\t\t\t\t\tconsole.log(usecase)\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\tconsole.log(\"Clicked!\")\n\t\t\t\t\t\t\t\t\t\t//addFilter(usecase.name.slice(3,usecase.name.length))\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t})}\n\t\t\t\t\t
    \n\t\t\t\t: null}\n\t\t\t\t\n\t\t\t
    \n\t\t\t{showSuggestion === true ? \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\tCan't find what you're looking for? \n\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\t setFormMail(e.target.value)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t setMessage(e.target.value)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tsubmitContact(formMail, message)\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\tSubmit\t\n\t\t\t\t\t\n\t\t\t\t\t{formMessage}\n\t\t\t\t
    \n\t\t\t\t: null\n\t\t\t}\n\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tSearch by \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\"Algolia\n\t\t\t\t\n\t\t\t\n\t\t
    \n\t)\n}\n\nexport default AppGrid;\n","import React, { useEffect, useState } from 'react';\n\nimport ReactGA from 'react-ga4';\nimport { useTheme } from '@material-ui/core/styles';\nimport {Link} from 'react-router-dom';\n\nimport { Search as SearchIcon, CloudQueue as CloudQueueIcon, Code as CodeIcon } from '@material-ui/icons';\n\nimport algoliasearch from 'algoliasearch/lite';\nimport { InstantSearch, Configure, connectSearchBox, connectHits } from 'react-instantsearch-dom';\nimport { \n\tGrid, \n\tPaper, \n\tTextField, \n\tButtonBase, \n\tInputAdornment, \n\tTypography, \n\tButton, \n\tTooltip, \n\tCard,\n\tBox,\n\tCardContent,\n\tIconButton,\n\tZoom,\n\tCardMedia,\n\tCardActionArea,\n} from '@material-ui/core';\n\nimport {\n\tAvatar,\n AvatarGroup,\n} from \"@mui/material\"\n\nimport {\n\tSkipNext as SkipNextIcon,\n\tSkipPrevious as SkipPreviousIcon,\n\tPlayArrow as PlayArrowIcon,\n\tVerifiedUser as VerifiedUserIcon, \n} from \"@material-ui/icons\";\n\n\nconst searchClient = algoliasearch(\"JNSS5CFDZZ\", \"db08e40265e2941b9a7d8f644b6e5240\")\nconst CreatorGrid = props => {\n\tconst { maxRows, showName, showSuggestion, isMobile, globalUrl, parsedXs } = props\n\tconst rowHandler = maxRows === undefined || maxRows === null ? 50 : maxRows\n\tconst xs = parsedXs === undefined || parsedXs === null ? isMobile ? 6 : 4 : parsedXs\n\tconst theme = useTheme();\n\t//const [apps, setApps] = React.useState([]);\n\t//const [filteredApps, setFilteredApps] = React.useState([]);\n\tconst [formMail, setFormMail] = React.useState(\"\");\n\tconst [message, setMessage] = React.useState(\"\");\n\tconst [formMessage, setFormMessage] = React.useState(\"\");\n\n\tconst buttonStyle = {borderRadius: 30, height: 50, width: 220, margin: isMobile ? \"15px auto 15px auto\" : 20, fontSize: 18,}\n\n\tconst isCloud =\n\t\twindow.location.host === \"localhost:3002\" ||\n\t\twindow.location.host === \"shuffler.io\";\n\n\tconst innerColor = \"rgba(255,255,255,0.65)\"\n\tconst borderRadius = 3\n\twindow.title = \"Shuffle | Workflows | Discover your use-case\"\n\n\tconst submitContact = (email, message) => {\n\t\tconst data = {\n\t\t\t\"firstname\": \"\",\n\t\t\t\"lastname\": \"\",\n\t\t\t\"title\": \"\",\n\t\t\t\"companyname\": \"\",\n\t\t\t\"email\": email,\n\t\t\t\"phone\": \"\",\n\t\t\t\"message\": message,\n\t\t}\n\t\n\t\tconst errorMessage = \"Something went wrong. Please contact frikky@shuffler.io directly.\"\n\n\t\tfetch(globalUrl+\"/api/v1/contact\", {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t},\n\t\t\tbody: JSON.stringify(data),\n\t\t})\n\t\t.then(response => response.json())\n\t\t.then(response => {\n\t\t\tif (response.success === true) {\n\t\t\t\tsetFormMessage(response.reason)\n\t\t\t\t//alert.info(\"Thanks for submitting!\")\n\t\t\t} else {\n\t\t\t\tsetFormMessage(errorMessage)\n\t\t\t}\n\n\t\t\tsetFormMail(\"\")\n\t\t\tsetMessage(\"\")\n })\n\t\t.catch(error => {\n\t\t\tsetFormMessage(errorMessage)\n \tconsole.log(error)\n\t\t});\n\t}\n\n\t// value={currentRefinement}\n\tconst SearchBox = ({currentRefinement, refine, isSearchStalled} ) => {\n\t\tuseEffect(() => {\n\t\t\tif (window !== undefined && window.location !== undefined && window.location.search !== undefined && window.location.search !== null) {\n\t\t\t\tconst urlSearchParams = new URLSearchParams(window.location.search)\n\t\t\t\tconst params = Object.fromEntries(urlSearchParams.entries())\n\t\t\t\tconst foundQuery = params[\"q\"]\n\t\t\t\tif (foundQuery !== null && foundQuery !== undefined) {\n\t\t\t\t\trefine(foundQuery)\n\t\t\t\t}\n\t\t\t}\n\t\t}, [])\n\n\t\treturn (\n\t\t
    \n\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t),\n\t\t\t\t\t}}\n\t\t\t\t\tautoComplete='off'\n\t\t\t\t\ttype=\"search\"\n\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\tvalue={currentRefinement}\n\t\t\t\t\tplaceholder=\"Find Creators...\"\n\t\t\t\t\tid=\"shuffle_search_field\"\n\t\t\t\t\tonChange={(event) => {\n\t\t\t\t\t\trefine(event.currentTarget.value)\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\t{/*isSearchStalled ? 'My search is stalled' : ''*/}\n\t\t\t\n\t\t)\n\t}\n\n\tconst paperAppContainer = {\n display: \"flex\",\n flexWrap: \"wrap\",\n alignContent: \"space-between\",\n marginTop: 5,\n }\n\t\n\tconst Hits = ({ hits }) => {\n\t\tconst [mouseHoverIndex, setMouseHoverIndex] = useState(-1) \n\t\tvar counted = 0\n\n\t\treturn (\n \n\t\t\t\t{hits.map((data, index) => {\n\t\t\t\t\tif (counted === 12/xs*rowHandler) {\n\t\t\t\t\t\treturn null\n\t\t\t\t\t}\n\n\t\t\t\t\tcounted += 1\n\t\t\t\t\tconst creatorUrl = !isCloud ? `https://shuffler.io/creators/${data.username}` : `/creators/${data.username}`\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t \t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t{\"Creator\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t@{data.username}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{data.verified === true ? \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: \n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{data.apps === undefined || data.apps === null ? 0 : data.apps} apps {data.workflows === null || data.workflows === undefined ? 0 : data.workflows} workflows\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t{data.specialized_apps !== undefined && data.specialized_apps !== null && data.specialized_apps.length > 0 ? \n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t{data.specialized_apps.map((app, index) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Putting all this in secondary of ListItemText looked weird.\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"Click\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//navigate(\"/apps/\"+app.id)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t: \n\t\t\t\t\t\t\t\t\t\t\t\tnull}\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t)\n\t\t\t\t})}\n\t\t\t\n\t\t)\n\t}\n\n\tconst CustomSearchBox = connectSearchBox(SearchBox)\n\tconst CustomHits = connectHits(Hits)\n\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t\t{showSuggestion === true ? \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\tCan't find what you're looking for? \n\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\t setFormMail(e.target.value)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t setMessage(e.target.value)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tsubmitContact(formMail, message)\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\tSubmit\t\n\t\t\t\t\t\n\t\t\t\t\t{formMessage}\n\t\t\t\t
    \n\t\t\t\t: null\n\t\t\t}\n\t\t
    \n\t)\n}\n\nexport default CreatorGrid;\n","import React, {useEffect, useState} from 'react';\n\nimport ReactGA from 'react-ga4';\nimport { useTheme } from '@material-ui/core/styles';\nimport {Link} from 'react-router-dom';\n\nimport { Search as SearchIcon, CloudQueue as CloudQueueIcon, Code as CodeIcon } from '@material-ui/icons';\nimport aa from 'search-insights'\n\nimport algoliasearch from 'algoliasearch/lite';\nimport { InstantSearch, Configure, connectSearchBox, connectHits } from 'react-instantsearch-dom';\nimport { \n\tZoom, \n\tGrid, \n\tPaper, \n\tTextField, \n\tAvatar, \n\tButtonBase, \n\tInputAdornment, \n\tTypography, \n\tButton, \n\tTooltip,\n\tList,\n\tListItem,\n\tListItemAvatar,\n\tListItemText,\n} from '@material-ui/core';\n\nimport {Close as CloseIcon, Folder as FolderIcon, Polymer as PolymerIcon, LibraryBooks as LibraryBooksIcon} from '@material-ui/icons'\n\nconst searchClient = algoliasearch(\"JNSS5CFDZZ\", \"db08e40265e2941b9a7d8f644b6e5240\")\nconst DocsGrid = props => {\n\tconst { maxRows, showName, showSuggestion, isMobile, globalUrl, parsedXs, userdata, } = props\n\tconst rowHandler = maxRows === undefined || maxRows === null ? 50 : maxRows\n\tconst xs = parsedXs === undefined || parsedXs === null ? isMobile ? 6 : 2 : parsedXs\n\tconst theme = useTheme();\n\t//const [apps, setApps] = React.useState([]);\n\t//const [filteredApps, setFilteredApps] = React.useState([]);\n\tconst [formMail, setFormMail] = React.useState(\"\");\n\tconst [message, setMessage] = React.useState(\"\");\n\tconst [formMessage, setFormMessage] = React.useState(\"\");\n\n\tconst buttonStyle = {borderRadius: 30, height: 50, width: 220, margin: isMobile ? \"15px auto 15px auto\" : 20, fontSize: 18,}\n\n\tconst innerColor = \"rgba(255,255,255,0.65)\"\n\tconst borderRadius = 3\n\twindow.title = \"Shuffle | Apps | Find and integrate any app\"\n\n\tconst submitContact = (email, message) => {\n\t\tconst data = {\n\t\t\t\"firstname\": \"\",\n\t\t\t\"lastname\": \"\",\n\t\t\t\"title\": \"\",\n\t\t\t\"companyname\": \"\",\n\t\t\t\"email\": email,\n\t\t\t\"phone\": \"\",\n\t\t\t\"message\": message,\n\t\t}\n\t\n\t\tconst errorMessage = \"Something went wrong. Please contact frikky@shuffler.io directly.\"\n\n\t\tfetch(globalUrl+\"/api/v1/contact\", {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json',\n\t\t\t},\n\t\t\tbody: JSON.stringify(data),\n\t\t})\n\t\t.then(response => response.json())\n\t\t.then(response => {\n\t\t\tif (response.success === true) {\n\t\t\t\tsetFormMessage(response.reason)\n\t\t\t\t//alert.info(\"Thanks for submitting!\")\n\t\t\t} else {\n\t\t\t\tsetFormMessage(errorMessage)\n\t\t\t}\n\n\t\t\tsetFormMail(\"\")\n\t\t\tsetMessage(\"\")\n })\n\t\t.catch(error => {\n\t\t\tsetFormMessage(errorMessage)\n \tconsole.log(error)\n\t\t});\n\t}\n\n\tconst SearchBox = ({currentRefinement, refine, isSearchStalled} ) => {\n\t\tuseEffect(() => {\n\t\t\tif (window !== undefined && window.location !== undefined && window.location.search !== undefined && window.location.search !== null) {\n\t\t\t\tconst urlSearchParams = new URLSearchParams(window.location.search)\n\t\t\t\tconst params = Object.fromEntries(urlSearchParams.entries())\n\t\t\t\tconst foundQuery = params[\"q\"]\n\t\t\t\tif (foundQuery !== null && foundQuery !== undefined) {\n\t\t\t\t\tconsole.log(\"Got query: \", foundQuery)\n\t\t\t\t\trefine(foundQuery)\n\t\t\t\t}\n\t\t\t}\n\t\t}, [])\n\n\t\treturn (\n\t\t
    \n\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t),\n\t\t\t\t\t}}\n\t\t\t\t\tautoComplete='off'\n\t\t\t\t\ttype=\"search\"\n\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\tdefaultValue={currentRefinement}\n\t\t\t\t\tplaceholder=\"Search our Documentation...\"\n\t\t\t\t\tid=\"shuffle_search_field\"\n\t\t\t\t\tonChange={(event) => {\n\t\t\t\t\t\trefine(event.currentTarget.value)\n\t\t\t\t\t}}\n\t\t\t\t\tlimit={5}\n\t\t\t\t/>\n\t\t\t\t{/*isSearchStalled ? 'My search is stalled' : ''*/}\n\t\t\t\n\t\t)\n\t}\n\n\tvar workflowDelay = -50\n\tconst Hits = ({ hits }) => {\n\t\tconst [mouseHoverIndex, setMouseHoverIndex] = useState(-1) \n\t\t//console.log(hits)\n\t\t//var curhits = hits\n\t\t//if (hits.length > 0 && defaultApps.length === 0) {\n\t\t//\tsetDefaultApps(hits)\n\t\t//}\n\n\t\t//const [defaultApps, setDefaultApps] = React.useState([])\n\t\t//console.log(hits)\n\t\t//if (hits.length > 0 && hits.length !== innerHits.length) {\n\t\t//\tsetInnerHits(hits)\n\t\t//}\n\n\t\tvar counted = 0\n\t\treturn (\n\t\t\t\n\t\t\t\t{hits.map((data, index) => {\n\t\t\t\t\tworkflowDelay += 50\n\t\t\t\t\n\t\t\t\t\tconst innerlistitemStyle = {\n\t\t\t\t\t\twidth: \"100%\",\n\t\t\t\t\t\toverflowX: \"hidden\",\n\t\t\t\t\t\toverflowY: \"hidden\",\n\t\t\t\t\t\tborderBottom: \"1px solid rgba(255,255,255,0.4)\",\n\t\t\t\t\t\tbackgroundColor: mouseHoverIndex === index ? \"#1f2023\" : \"inherit\",\n\t\t\t\t\t\tcursor: \"pointer\",\n\t\t\t\t\t\tmarginLeft: 5, \n\t\t\t\t\t\tmarginRight: 5,\n\t\t\t\t\t\tmaxHeight: 75,\n\t\t\t\t\t\tminHeight: 75,\n\t\t\t\t\t\tmaxWidth: 420,\n\t\t\t\t\t\tminWidth: \"100%\", \n\t\t\t\t\t}\n\n\t\t\t\t\tif (counted >= 12/xs*rowHandler) {\n\t\t\t\t\t\treturn null\n\t\t\t\t\t}\n\n\t\t\t\t\tcounted += 1\n\n\t\t\t\t\tvar name = data.name === undefined ? \n\t\t\t\t\t\t\tdata.filename.charAt(0).toUpperCase() + data.filename.slice(1).replaceAll(\"_\", \" \") + \" - \" + data.title : \n\t\t\t\t\t\t\t(data.name.charAt(0).toUpperCase()+data.name.slice(1)).replaceAll(\"_\", \" \")\n\n\t\t\t\t\tif (name.length > 96) {\n\t\t\t\t\t\tname = name.slice(0, 96)+\"...\"\n\t\t\t\t\t}\n\n\t\t\t\t\t//const secondaryText = data.data !== undefined ? data.data.slice(0, 100)+\"...\" : \"\"\n\t\t\t\t\tconst secondaryText = data.data !== undefined ? data.data.slice(0, 100)+\"...\" : \"\"\n\t\t\t\t\tconst baseImage = \n\t\t\t\t\tconst avatar = data.image_url === undefined ? \n\t\t\t\t\t\tbaseImage\n\t\t\t\t\t\t:\n\t\t\t\t\t\t\n\n\t\t\t\t\tvar parsedUrl = data.urlpath !== undefined ? data.urlpath : \"\"\n\t\t\t\t\tparsedUrl += `?queryID=${data.__queryID}`\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\taa('init', {\n\t\t\t\t\t\t\t\t\t\tappId: searchClient.appId,\n\t\t\t\t\t\t\t\t\t\tapiKey: searchClient.transporter.queryParameters[\"x-algolia-api-key\"]\n\t\t\t\t\t\t\t\t})\n\n\t\t\t\t\t\t\t\tconst timestamp = new Date().getTime()\n\t\t\t\t\t\t\t\taa('sendEvents', [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\teventType: 'click',\n\t\t\t\t\t\t\t\t\t\teventName: 'Product Clicked Appgrid',\n\t\t\t\t\t\t\t\t\t\tindex: 'documentation',\n\t\t\t\t\t\t\t\t\t\tobjectIDs: [data.objectID],\n\t\t\t\t\t\t\t\t\t\ttimestamp: timestamp,\n\t\t\t\t\t\t\t\t\t\tqueryID: data.__queryID,\n\t\t\t\t\t\t\t\t\t\tpositions: [data.__position],\n\t\t\t\t\t\t\t\t\t\tuserToken: userdata === undefined || userdata === null || userdata.id === undefined ? \"unauthenticated\" : userdata.id,\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t])\n\n\t\t\t\t\t\t\t\tconsole.log(\"CLICK\")\n\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tsetMouseHoverIndex(index)\t\n\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{avatar}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{/*\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t*/}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t)\n\t\t\t\t})}\n\t\t\t\n\t\t)\n\t}\n\n\tconst CustomSearchBox = connectSearchBox(SearchBox)\n\tconst CustomHits = connectHits(Hits)\n\tconst selectButtonStyle = {\n\t\tminWidth: 150,\n\t\tmaxWidth: 150,\n\t\tminHeight: 50, \n\t}\n\n\treturn (\n\t\t
    \n\t\t\t{/*\n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t\t*/}\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t{showSuggestion === true ? \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t\tCan't find what you're looking for? \n\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t setFormMail(e.target.value)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t setMessage(e.target.value)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tsubmitContact(formMail, message)\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tSubmit\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t{formMessage}\n\t\t\t\t\t
    \n\t\t\t\t\t: null\n\t\t\t\t}\n\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tSearch by \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\"Algolia\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
    \n\t\t
    \n\t)\n}\n\nexport default DocsGrid;\n","import React, { useState, useEffect } from \"react\";\n\nimport theme from '../theme.jsx';\nimport {isMobile} from \"react-device-detect\";\nimport AppGrid from \"../components/AppGrid.jsx\"\nimport WorkflowGrid from \"../components/WorkflowGrid.jsx\"\nimport CreatorGrid from \"../components/CreatorGrid.jsx\"\nimport DocsGrid from \"../components/DocsGrid.jsx\"\nimport { useNavigate } from \"react-router-dom\";\n\nimport { \n Tabs,\n Tab,\n} from \"@material-ui/core\";\n\nimport {\n\tApps as AppsIcon,\n\tPolymer as PolymerIcon,\n\tEmojiObjects as EmojiObjectsIcon,\n Description as DescriptionIcon,\n} from \"@material-ui/icons\";\n\n\nconst bodyDivStyle = {\n\tmargin: \"auto\",\n\tmaxWidth: 1024,\n\tscrollX: \"hidden\",\n\toverflowX: \"hidden\",\n}\n\n// Should be different if logged in :|\nconst Search = (props) => {\n const { globalUrl, isLoaded, serverside, userdata, hidemargins, } = props;\n\tlet navigate = useNavigate();\n\n const [curTab, setCurTab] = useState(0);\n const iconStyle = { marginRight: 10 };\n\n\tuseEffect(() => {\n\t\tif (serverside !== true && window.location.search !== undefined && window.location.search !== null) {\n\t\t\tconst urlSearchParams = new URLSearchParams(window.location.search)\n\t\t\tconst params = Object.fromEntries(urlSearchParams.entries())\n\t\t\tconst foundTab = params[\"tab\"]\n\t\t\tif (foundTab !== null && foundTab !== undefined) {\n\t\t\t\tfor (var key in Object.keys(views)) {\n\t\t\t\t\tconst value = views[key]\n\t\t\t\t\tconsole.log(key, value)\n\t\t\t\t\tif (value === foundTab) {\n\t\t\t\t\t\tsetConfig(\"\", key)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}, [])\n\n\tif (serverside === true) {\n\t\treturn null\n\t}\n\n\tconst boxStyle = {\n\t\tcolor: \"white\",\n\t\tflex: \"1\",\n\t\tmarginLeft: 10,\n\t\tmarginRight: 10,\n\t\tpaddingLeft: 30,\n\t\tpaddingRight: 30,\n\t\tpaddingBottom: 30,\n\t\tpaddingTop: hidemargins === true ? 0 : 30,\n\t\tdisplay: \"flex\", \n\t\tflexDirection: \"column\",\n\t\toverflowX: \"hidden\",\n\t\tminHeight: 400,\n\t}\n\n\tconst views = {\n 0: \"apps\",\n 1: \"workflows\",\n 2: \"docs\",\n 3: \"creators\",\n }\n\n\tconst setConfig = (event, inputValue) => {\n\t\tconst newValue = parseInt(inputValue)\n\n setCurTab(newValue)\n if (newValue === 0) {\n document.title = \"Shuffle - search - apps\";\n } else if (newValue === 1) {\n document.title = \"Shuffle - search - workflows\";\n } else if (newValue === 2) {\n document.title = \"Shuffle - search - documentation\";\n } else if (newValue === 3) {\n document.title = \"Shuffle - search - creators\";\n } else {\n document.title = \"Shuffle - search\";\n }\n\n\t\t\n\t\tconst urlSearchParams = new URLSearchParams(window.location.search)\n\t\tconst params = Object.fromEntries(urlSearchParams.entries())\n\t\tconst foundQuery = params[\"q\"]\n\t\tvar extraQ = \"\"\n\t\tif (foundQuery !== null && foundQuery !== undefined) {\n\t\t\textraQ = \"&q=\"+foundQuery\n\t\t}\n\n\t\n\t\tif ((serverside === false || serverside === undefined) && window.location.pathname.includes(\"/search\")) {\n\t\t\tnavigate(`/search?tab=${views[newValue]}`+extraQ)\n\t\t}\n }\n\n\tif (isLoaded === false) {\n\t\treturn null\n\t}\n\n\n\t// Random names for type & autoComplete. Didn't research :^)\n\tconst landingpageDataBrowser = \n\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\t Apps\n\t\t\t\t\t\t\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t\t\t Workflows\n\t\t\t\t\t\t\n\t\t\t\t\t/>\n\t\t\t\t\t\n \t\t\t\t\t\t Docs \n\t\t\t\t\t\t\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t\t\t Creators \n\t\t\t\t\t\t\n\t\t\t\t\t/>\n\t\t\t\t\n\t\t\t\t{curTab === 0 ? \n\t\t\t\t\t\n\t\t\t\t: \n\t\t\t\tcurTab === 1 ?\n \t\t\twindow.location.pathname === \"/search\" ? \n\t\t\t\t\t\t \n\t\t\t\t\t\t:\n\t\t\t\t\t\t\n\t\t\t\t:\n\t\t\t\tcurTab === 2 ?\n\t\t\t\t\t\n\t\t\t\t: \n\t\t\t\tcurTab === 3 ?\n\t\t\t\t\t\n\t\t\t\t: \n\t\t\t\tnull}\n\t\t\t
    \n\t\t
    \n\t//{/*alternativeView={true} />*/}\n\n\tconst loadedCheck = isLoaded ? \n\t\t
    \n\t\t\t
    {landingpageDataBrowser}
    \n\t\t
    \n\t\t:\n\t\t
    \n\t\t
    \n\n\t// #1f2023?\n\treturn(\n\t\t
    \n\t\t\t{loadedCheck}\n\t\t
    \n\t)\n}\n\nexport default Search;\n","/* eslint-disable react/no-multi-comp */\nimport React, {useState, useEffect} from 'react';\nimport ReactDOM from \"react-dom\"\n\nimport { useInterval } from \"react-powerhooks\";\nimport { makeStyles } from '@material-ui/styles';\nimport { useNavigate, Link, useParams } from \"react-router-dom\";\nimport {isMobile} from \"react-device-detect\";\nimport theme from '../theme.jsx';\nimport { validateJson, GetIconInfo } from \"./Workflows.jsx\";\nimport { green, yellow } from \"./AngularWorkflow.jsx\";\n\nimport {\n Tooltip,\n\tIconButton,\n\tCircularProgress, \n\tTextField, \n\tButton, \n\tButtonGroup, \n\tPaper, \n\tTypography,\n\tDivider,\n} from '@material-ui/core';\n\nimport {\n Preview as PreviewIcon,\n ContentCopy as ContentCopyIcon,\n} from '@mui/icons-material';\n\nconst hrefStyle = {\n\tcolor: \"white\", \n\ttextDecoration: \"none\"\n}\n\nconst bodyDivStyle = {\n\tmargin: \"auto\",\n\tmarginTop: 100,\n\twidth: isMobile? \"100%\":\"500px\",\n\tposition: \"relative\", \n}\n\n\nconst RunWorkflow = (defaultprops) => {\n const { globalUrl, isLoaded, isLoggedIn, setIsLoggedIn, setCookie, register, serverside } = defaultprops;\n\n\tlet navigate = useNavigate();\n const [message, setMessage] = useState(\"\");\n const [workflow, setWorkflow] = React.useState({});\n const [executionRequest, setExecutionRequest] = React.useState({});\n const [executionArgument, setExecutionArgument] = useState(\"\");\n const [executionLoading, setExecutionLoading] = useState(false);\n const [executionData, setExecutionData] = React.useState({});\n const [executionRunning, setExecutionRunning] = useState(false);\n const [workflowQuestion, setWorkflowQuestion] = useState(\"\");\n const [selectedOrganization, setSelectedOrganization] = React.useState(undefined);\n const [apps, setApps] = React.useState([]);\n const [buttonClicked, setButtonClicked] = React.useState(\"\");\n\n\tconst boxStyle = {\n\t\tcolor: \"white\",\n\t\tpaddingLeft: \"30px\",\n\t\tpaddingRight: \"30px\",\n\t\tpaddingBottom: \"30px\",\n\t\tpaddingTop: \"30px\",\n\t\tbackgroundColor: theme.palette.surfaceColor,\n\t\tmarginBottom: 150, \n\t}\n\n const params = useParams();\n var props = JSON.parse(JSON.stringify(defaultprops))\n props.match = {}\n props.match.params = params\n\n\tconst defaultTitle = \"Run Workflow\"\n\tif (document != undefined && document.title != defaultTitle) {\n\t\tdocument.title = defaultTitle\n\t}\n\n\tconst parsedsearch = serverside === true ? \"\" : window.location.search\n\tif (serverside !== true) {\n\t\tconst tmpMessage = new URLSearchParams(window.location.search).get(\"message\")\n\t\tif (tmpMessage !== undefined && tmpMessage !== null && message !== tmpMessage) {\n\t\t\tsetMessage(tmpMessage)\n\t\t}\n\t}\n\n // Used to swap from login to register. True = login, false = register\n\n\t// Error messages etc\n\tconst [executionInfo, setExecutionInfo] = useState(\"\");\n\n\tconst handleValidateForm = (executionArgument) => {\n\t\treturn true\n\t}\n\n\n\tconst getApps = () => {\n fetch(globalUrl + \"/api/v1/apps\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n\t\t.then((response) => {\n\t\t\tif (response.status !== 200) {\n\t\t\t\tconsole.log(\"Status not 200 for apps :O!\");\n\t\t\t}\n\n\t\t\treturn response.json();\n\t\t})\n\t\t.then((responseJson) => {\n\t\t\tsetApps(responseJson)\n\t\t})\n\t\t.catch(error => {\n\t\t\tconsole.log(\"App error: \", error);\n\t\t})\n\t}\n\n\tconst ShowExecutionResults = (props) => {\n\t\tconst { executionData } = props;\n\n\t\tif (executionData === undefined || executionData === null || executionData === {}) {\n\t\t\treturn null\n\t\t}\n\n\t\tconst executionMargin = 20 \n\t\tconst defaultReturn = \n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\tNo results yet\n\t\t\t\t\n\t\t\t
    \n\n\t\tif (executionData.results === undefined || executionData.results === null) {\n\t\t\treturn defaultReturn\n\t\t}\n\n\t\treturn (\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\tResults\n\t\t\t\t\n\n\t\t\t\t{executionData.results.map((data, index) => {\n\t\t\t\t\tif (executionData.results.length !== 1 && (data.status === \"SKIPPED\")) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// FIXME: The latter replace doens't really work if ' is used in a string\n\t\t\t\t\tvar showResult = data.result.trim();\n\t\t\t\t\tconst validate = validateJson(showResult);\n\n\t\t\t\t\tconst curapp = apps.find((a) => a.name === data.action.app_name && a.app_version === data.action.app_version);\n\t\t\t\t\tconst imgsize = 50;\n\t\t\t\t\tconst statusColor = data.status === \"FINISHED\" || data.status === \"SUCCESS\" ? green : data.status === \"ABORTED\" || data.status === \"FAILURE\" ? \"red\" : yellow;\n\n\t\t\t\t\tvar imgSrc = curapp === undefined ? \"\" : curapp.large_image;\n\t\t\t\t\tif (\n\t\t\t\t\t\timgSrc.length === 0 &&\n\t\t\t\t\t\tworkflow.actions !== undefined &&\n\t\t\t\t\t\tworkflow.actions !== null\n\t\t\t\t\t) {\n\t\t\t\t\t\t// Look for the node in the workflow\n\t\t\t\t\t\tconst action = workflow.actions.find(\n\t\t\t\t\t\t\t(action) => action.id === data.action.id\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (action !== undefined && action !== null) {\n\t\t\t\t\t\t\timgSrc = action.large_image;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tvar actionimg =\n\t\t\t\t\t\tcurapp === null ? null : (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t);\n\n\t\t\t\t\tif (data.action.app_name === \"shuffle-subflow\") {\n\t\t\t\t\t\t//const parsedImage = triggers[2].large_image;\n\t\t\t\t\t\t//actionimg = (\n\t\t\t\t\t\t//\t\n\t\t\t\t\t\t//);\n\t\t\t\t\t} else if (data.action.app_name === \"User Input\") {\n\t\t\t\t\t\t//actionimg = (\n\t\t\t\t\t\t//\t\n\t\t\t\t\t\t//);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (validate.valid && typeof validate.result === \"string\") {\n\t\t\t\t\t\tvalidate.result = JSON.parse(validate.result);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (validate.valid && typeof validate.result === \"object\") {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tvalidate.result.result !== undefined &&\n\t\t\t\t\t\t\tvalidate.result.result !== null\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tvalidate.result.result = JSON.parse(validate.result.result);\n\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t//console.log(\"ERROR PARSING: \", e)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\n\t\t\t\t\tvar similarActionsView = null\n\t\t\t\t\tif (data.similar_actions !== undefined && data.similar_actions !== null) {\n\t\t\t\t\t\tvar minimumMatch = 85\n\t\t\t\t\t\tvar matching_executions = []\n\t\t\t\t\t\tif (data.similar_actions !== undefined && data.similar_actions !== null) {\n\t\t\t\t\t\t\tfor (let [k,kval] in Object.entries(data.similar_actions)){\n\t\t\t\t\t\t\t\tif (data.similar_actions.hasOwnProperty(k)) {\n\t\t\t\t\t\t\t\t\tif (data.similar_actions[k].similarity > minimumMatch) {\n\t\t\t\t\t\t\t\t\t\tmatching_executions.push(data.similar_actions[k].execution_id)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (matching_executions.length !== 0) {\n\t\t\t\t\t\t\tvar parsed_url = matching_executions.join(\",\")\n\n\t\t\t\t\t\t\tsimilarActionsView =\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\tnavigate(`?execution_highlight=${parsed_url}`)\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonMouseOut={() => {\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tStatus \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{data.status}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t)\n\t\t\t\t})}\n\t\t\t
    \n\t\t)\n\t}\n\n\tconst onSubmit = (execution_id, authorization, answer) => {\n\t\tstop()\n \tsetMessage(\"\")\n \tsetExecutionLoading(true)\n\t\tsetExecutionData({})\n\t\tsetExecutionInfo(\"\")\n\n\t\tvar data = {\n\t\t\t\"execution_argument\": executionArgument\n\t\t}\n\n\t\tvar url = `${globalUrl}/api/v1/workflows/${props.match.params.key}/execute`\n\t\tvar fetchBody = {\n\t\t\tmode: 'cors',\n\t\t\tcredentials: 'include',\n\t\t\tcrossDomain: true,\n\t\t\twithCredentials: true,\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json; charset=utf-8',\n\t\t\t},\n\t\t}\n\n\t\tif (answer !== undefined && execution_id !== undefined && authorization !== undefined) {\n\t\t\turl += `?reference_execution=${execution_id}&authorization=${authorization}&answer=${answer}`\n\t\t\tdata = {}\n\t\t\tfetchBody.method = \"GET\"\n\t\t} else {\n\t\t\tfetchBody.method = \"POST\"\n\t\t\tfetchBody.body = JSON.stringify(data)\n\t\t}\n\n\t\tfetch(url, fetchBody)\n\t\t.then((response) => {\n\t\t\tif (response.status !== 200 && response.status !== 201) {\n\n\t\t\t\tif (answer !== undefined && execution_id !== undefined && authorization !== undefined) {\n\t\t\t\t\tsetExecutionLoading(false)\n\t\t\t\t\tsetExecutionRunning(true);\n\t\t\t\t\tsetExecutionRequest({\n\t\t\t\t\t\t\"execution_id\": execution_id,\n\t\t\t\t\t\t\"authorization\": authorization,\n\t\t\t\t\t})\n\n\t\t\t\t\tstart();\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn response.json();\n\t\t})\n\t\t.then(responseJson => {\n\t\t\tsetExecutionLoading(false)\n\t\t\tif (responseJson[\"success\"] === false) {\n\t\t\t\tconsole.log(\"Failed sending execution request\")\n\t\t\t} else {\n\t\t\t\tconsole.log(\"Started execution\")\n\n\t\t\t\tif (answer !== undefined && answer !== null) {\n\t\t\t\t\tconsole.log(\"Skipping start\")\n\t\t\t\t} else {\n\t\t\t\t\tsetExecutionRunning(true);\n\t\t\t\t\tsetExecutionRequest(responseJson)\n\t\t\t\t\tstart();\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t\t.catch(error => {\n\t\t\t//setExecutionInfo(\"Error in workflow startup: \" + error)\n\t\t\tsetExecutionLoading(false)\n\t\t})\n\t}\n\n\tconst getWorkflow = (workflow_id) => {\n fetch(globalUrl + \"/api/v1/workflows/\" + workflow_id, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for workflows :O!\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n // Not sure why this is necessary.\n if (responseJson.isValid === undefined) {\n responseJson.isValid = true;\n }\n\n if (responseJson.errors === undefined) {\n responseJson.errors = [];\n }\n\n if (responseJson.actions === undefined || responseJson.actions === null) {\n responseJson.actions = [];\n }\n\n if (responseJson.triggers === undefined || responseJson.triggers === null) {\n responseJson.triggers = [];\n }\n\n\t\t\t\thandleGetOrg(responseJson.org_id)\n\t\t\t\tsetWorkflow(responseJson);\n })\n .catch((error) => {\n console.log(\"Get workflow error: \", error.toString());\n });\n };\n\n const { start, stop } = useInterval({\n duration: 3000,\n startImmediate: true,\n callback: () => {\n fetchUpdates(executionRequest.execution_id, executionRequest.authorization)\n },\n });\n\n const handleUpdateResults = (responseJson, executionRequest) => {\n\t\tif (responseJson === undefined || responseJson === null || responseJson.success === false) {\n\t\t\treturn\n\t\t}\n\n\t\tconsole.log(\"Got response: \", responseJson)\n\n ReactDOM.unstable_batchedUpdates(() => {\n if (JSON.stringify(responseJson) !== JSON.stringify(executionData)) {\n // FIXME: If another is selected, don't edit..\n // Doesn't work because this is some async garbage\n if (executionData.execution_id === undefined || (responseJson.execution_id === executionData.execution_id && responseJson.results !== undefined && responseJson.results !== null)) {\n if (executionData.status !== responseJson.status || executionData.result !== responseJson.result || (executionData.results !== undefined && responseJson.results !== null && executionData.results.length !== responseJson.results.length)) {\n\t\t\t\t\t\tconsole.log(\"Updating data!\")\n setExecutionData(responseJson)\n\n\t\t\t\t\t\tfor (var key in responseJson.results) {\n\t\t\t\t\t\t\tif (responseJson.results[key].status === \"WAITING\") {\n\t\t\t\t\t\t\t\tconsole.log(\"Found: \", responseJson.results[key])\n\t\t\t\t\t\n\t\t\t\t\t\t\t\tconst validate = validateJson(responseJson.results[key].result)\n\t\t\t\t\t\t\t\tconsole.log(\"Validate: \", validate)\n\t\t\t\t\t\t\t\tif (validate.valid && typeof validate.result === \"string\") {\n\t\t\t\t\t\t\t\t\tvalidate.result = JSON.parse(validate.result)\n\t\t\t\t\t\t\t\t} \n\n\t\t\t\t\t\t\t\tconsole.log(\"Newresult: \", validate.result)\n\t\t\t\t\t\t\t\tif (validate.result[\"information\"] !== undefined && validate.result[\"information\"] !== null) {\n\t\t\t\t\t\t\t\t\tsetWorkflowQuestion(validate.result[\"information\"])\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n } else {\n console.log(\"NOT updating executiondata state.\");\n }\n }\n }\n\n if (responseJson.status === \"ABORTED\" || responseJson.status === \"STOPPED\" || responseJson.status === \"FAILURE\" || responseJson.status === \"WAITING\") {\n stop();\n\n if (executionRunning) {\n setExecutionRunning(false);\n }\n\n //getWorkflowExecution(props.match.params.key, \"\");\n } else if (responseJson.status === \"FINISHED\") {\n setExecutionRunning(false)\n stop();\n //getWorkflowExecution(props.match.params.key, \"\");\n }\n\t\t})\n\t}\n\n\tconst handleGetOrg = (orgId, execution_id, authorization) => {\n if (orgId.length === 0) {\n return;\n }\n\n // Just use this one?\n var url = execution_id !== undefined && authorization !== undefined ? `${globalUrl}/api/v1/orgs/${orgId}?reference_execution=${execution_id}&authorization=${authorization}` : `${globalUrl}/api/v1/orgs/${orgId}`;\n fetch(url, {\n method: \"GET\",\n credentials: \"include\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n })\n .then((response) => {\n if (response.status === 401) {\n }\n\n return response.json();\n })\n .then((responseJson) => {\n if (responseJson[\"success\"] === false) {\n } else {\n if (responseJson.sync_features === undefined || responseJson.sync_features === null) {\n }\n\n\t\t\t\t\tif (document != undefined && document.title != defaultTitle) {\n\t\t\t\t\t\tdocument.title = responseJson.name + \" - \" + defaultTitle\n\t\t\t\t\t}\n setSelectedOrganization(responseJson)\n }\n })\n .catch((error) => {\n console.log(\"Error getting org: \", error);\n });\n };\n\n\tconst fetchUpdates = (execution_id, authorization, getorg) => {\n\t\tconst innerRequest = {\n\t\t\t\"execution_id\": execution_id,\n\t\t\t\"authorization\": authorization\n\t\t}\n\n\t\tif (executionRequest.execution_id !== innerRequest.execution_id) {\n\t\t\tsetExecutionRequest(innerRequest)\n\t\t}\n\n\t\tif (execution_id === \"\" || authorization === \"\") {\n \t\tsetExecutionLoading(false)\n\t\t\tsetExecutionRunning(false)\n\t\t\tstop()\n\t\t\treturn\n\t\t}\n\n fetch(globalUrl + \"/api/v1/streams/results\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify(innerRequest),\n credentials: \"include\",\n })\n\t\t.then((response) => {\n\t\t\tif (response.status !== 200) {\n\t\t\t\tconsole.log(\"Status not 200 for stream results :O!\");\n\t\t\t}\n\t\t\n\t\t\treturn response.json();\n\t\t})\n\t\t.then((responseJson) => {\n\t\t\tif (getorg === true) {\n\t\t\t\thandleGetOrg(responseJson.org_id, execution_id, authorization)\n\t\t\t}\n\n\t\t\thandleUpdateResults(responseJson, executionRequest);\n\t\t})\n\t\t.catch((error) => {\n\t\t\tconsole.log(\"Execution result Error: \", error);\n\t\t});\n };\n\n\tconst answer = new URLSearchParams(window.location.search).get(\"answer\")\n\tconst execution_id = new URLSearchParams(window.location.search).get(\"reference_execution\")\n\tconst authorization = new URLSearchParams(window.location.search).get(\"authorization\")\n\tuseEffect(() => {\n\t\tgetWorkflow(props.match.params.key) \n\t\tif (execution_id !== undefined && execution_id !== null && authorization !== undefined && authorization !== null) {\n\t\t\tconsole.log(\"Get execution: \", execution_id)\n\t\t\tfetchUpdates(execution_id, authorization, true)\n\t\t}\n\n\t\tif (answer !== undefined && answer !== null) {\n\t\t\tconsole.log(\"Got answer: \", answer)\n\t\t}\n\t}, [])\n\n\n\n\tconst buttonBackground = \"linear-gradient(to right, #f86a3e, #f34079)\"\n\tconst buttonStyle = {borderRadius: 25, height: 50, fontSize: 18, backgroundImage: handleValidateForm(executionArgument) || executionLoading ? buttonBackground : \"grey\", color: \"white\"}\n\t\n\tconsole.log(\"execdata: \", executionData)\n\tconst disabledButtons = message.length > 0 || executionData.status === \"FINISHED\" || executionData.status === \"ABORTED\"\n\n\tconst organization = selectedOrganization !== undefined && selectedOrganization !== null ? selectedOrganization.name : \"Unknown\"\n\tconst contact = selectedOrganization !== undefined && selectedOrganization !== null && selectedOrganization.org !== undefined && selectedOrganization.org !== null? selectedOrganization.org : \"support@shuffler.io\"\n\t//const contact = selectedOrganization !== undefined && selectedOrganization !== null && selectedOrganization.contact !== undefined && selectedOrganization.contact !== null? selectedOrganization.contact : \"support@shuffler.io\"\n\t\n\tconst image = selectedOrganization !== undefined && selectedOrganization !== null && selectedOrganization.image !== undefined && selectedOrganization.image !== null && selectedOrganization.image !== \"\" ? selectedOrganization.image : theme.palette.defaultImage\n\n\tconsole.log(\"IMG: \", image, \"ORG: \", selectedOrganization)\n\n\tif (!disabledButtons && answer !== undefined && answer !== null && organization !== \"Unknown\" && buttonClicked.length === 0) {\n\t\tconsole.log(\"Finding button!\")\n\t\t// Find the button\n\t\tvar buttonid = \"\"\n\t\tif (answer === \"false\") {\n\t\t\tbuttonid = \"abort_execution\"\n\t\t} else if (answer === \"true\") {\n\t\t\tbuttonid = \"continue_execution\"\n\t\t}\n\n\t\tif (buttonid !== \"\") {\n\t\t\tconst foundButton = document.getElementById(buttonid)\n\t\t\tconsole.log(\"Button: \", foundButton)\n\t\t\tif (foundButton !== undefined && foundButton !== null) {\n\t\t\t\tfoundButton.click()\n\t\t\t}\n\t\t}\n\t}\n\n\tconst basedata = \n\t\t
    \n\t\t\t\n \t
    {onSubmit()}} style={{margin: \"15px 15px 15px 15px\"}}>\n\t\t\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\t\t{organization}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{contact}\n\t\t\t\t\t\n\t\t\t\t\t\n \t\t\t\t{message}\n\n\t\t\t\t\t{answer !== undefined && answer !== null ? null :\n\t\t\t\t\t\tWorkflow:\t{workflow.name}\n\t\t\t\t\t}\n\n\t\t\t\t\t{executionData !== undefined && executionData !== null && executionData !== {} && executionData.status !== undefined && (answer === undefined || answer === null) ? \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tStatus \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{executionData.status}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t: null}\n\n\t\t\t\t\t{workflowQuestion.length > 0 ?\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{workflowQuestion}\n\t\t\t\t\t\t\n\t\t\t\t\t: null}\n\t\t\t\t\t\n\t\t\t\t\t{answer !== undefined && answer !== null ? null :\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tExecution Argument\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\tsetExecutionArgument(e.target.value)\t\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t}\n\t\t\t\t\t{executionRunning ?\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tStatus: {executionData.status}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t:\n\t\t\t\t\t\tanswer !== undefined && answer !== null ? \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{disabledButtons ? \"Already answered. Nothing to do.\" : \"\"}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{disabledButtons ? null :\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tWhat do you want to do?\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t or \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t:\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t \t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t}\n\n \t\t\t\t{buttonClicked !== undefined && buttonClicked !== null && buttonClicked !== \"finished\" && buttonClicked.length > 0 ?\n\t\t\t\t\t\t\"finalize {\n\t\t\t\t\t\t\t\tconsole.log(\"Img loaded.\")\n\t\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\t\tconsole.log(\"Img closing.\")\n\t\t\t\t\t\t\t\t\tsetButtonClicked(\"finished\")\n\n\t\t\t\t\t\t\t\t}, 1250)\n\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t: null}\n\n\t\t\t\t\t
    \n\t\t\t\t\t\t{executionInfo}\n\t\t\t\t\t
    \n\t\n\t\t\t\t\t{answer !== undefined && answer !== null ? null :\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t\n\t\t\t
    \n\t\t
    \n\n\tconst loadedCheck = isLoaded ? \n\t\t
    \n \t\t{basedata}\n\t\t
    \n\t\t:\n\t\t
    \n\t\t
    \n\n\treturn (\n\t\t
    \n\t\t\t{loadedCheck}\n\t\t
    \n\t)\n}\n\nexport default RunWorkflow;\n","import React, { useState } from \"react\";\n\nimport Paper from \"@material-ui/core/Paper\";\nimport Card from \"@material-ui/core/Card\";\nimport CardActionArea from \"@material-ui/core/CardActionArea\";\nimport CardMedia from \"@material-ui/core/CardMedia\";\nimport CardContent from \"@material-ui/core/CardContent\";\nimport CardActions from \"@material-ui/core/CardActions\";\nimport Button from \"@material-ui/core/Button\";\nimport Divider from \"@material-ui/core/Divider\";\nimport Grid from \"@material-ui/core/Grid\";\nimport { BrowserView, MobileView } from \"react-device-detect\";\n\nimport ScheduleIcon from \"@material-ui/icons/Schedule\";\nimport Web from \"@material-ui/icons/Web\";\nimport AccountTree from \"@material-ui/icons/AccountTree\";\nimport InfoIcon from \"@material-ui/icons/Info\";\nimport ArrowForwardIcon from \"@material-ui/icons/ArrowForward\";\nimport CreateIcon from \"@material-ui/icons/Create\";\n\nconst bodyDivStyle = {\n margin: \"auto\",\n};\n\nconst surfaceColor = \"#27292D\";\nconst boxStyle = {\n flex: \"1\",\n marginLeft: \"10px\",\n marginRight: \"10px\",\n height: \"400px\",\n //backgroundColor: \"#e8eaf6\",\n backgroundColor: surfaceColor,\n textAlign: \"center\",\n display: \"flex\",\n flexDirection: \"column\",\n};\n\nconst bodyTextStyle = {\n color: \"#ffffff\",\n};\n\nconst hrefStyle = {\n color: \"inherit\",\n textDecoration: \"none\",\n};\n\n// Should be different if logged in :|\nconst LandingPage = (props) => {\n const { isLoaded } = props;\n\n const textColor = \"#8899A6\";\n const iconColor = \"#1DA1F2\";\n const iconSize = \"8em\";\n\n const GridLayout = (header, description, link, icon) => {\n return (\n \n \n
    \n

    {header}

    \n
    \n \n \n {description}\n
    \n
    {icon}
    \n \n
    \n
    Learn more
    \n
    \n
    \n \n );\n };\n\n const listitems = [\n GridLayout(\n \"Simple integrations\",\n \"Easily use others' or create your own integration\",\n \"/docs/features\",\n \n ),\n GridLayout(\n \"Workflows\",\n \"Access the power of automation within minutes, whether its on premise or in the cloud\",\n \"/docs/features\",\n \n ),\n GridLayout(\n \"Realtime actions\",\n \"Beat the clock by leveraging our realtime triggers\",\n \"/docs/features\",\n \n ),\n ];\n\n // The actual landing page\n // {\"logo\"}\n //We start by understanding your unique environment to help identify the right thing to automate.\n const secondaryColor = \"rgba(167,46,87,1)\";\n const primaryColor = \"rgba(25, 35, 94, 1)\";\n\n const paperStyle = {\n flex: 1,\n backgroundColor: \"inherit\",\n cursor: \"pointer\",\n };\n\n const secondaryItemList = [\n {\n primaryText: \"No time to waste\",\n secondaryText:\n \"Bring all your applications into a single view, and make them all work together flawlessly!\",\n image: \"/images/time.jpg\",\n },\n {\n primaryText: \"Get a better overview\",\n secondaryText:\n \"Don't know what's happening? We'll help you track and act on your most valuable KPI's!\",\n image: \"/images/overview.jpg\",\n },\n {\n primaryText: \"Conquer your tasks\",\n secondaryText:\n \"Get access to powerful tools and pre-made workflows to help you crush your teams daily tasks!\",\n image: \"/images/burnout.jpg\",\n },\n ];\n const [image, setImage] = useState(secondaryItemList[0].image);\n\n const landingpageDataBrowser = (\n \n \n
    Shuffle
    \n
    \n INFORMATION
    OVERLOAD
    \n
    \n \n Everyone run into the same fundamental operational problems. Mailbox\n chaos, tickets getting out of hand and a constant feeling of being\n overwhelmed. The good news?{\" \"}\n
    \n Shuffle solves them.\n
    \n
    \n \n \n Learn how\n \n \n
    \n
    \n \n \n \n Automation is just the beginning \n
    \n
    \n \n {secondaryItemList.map((data, index) => {\n const color =\n image === data.image\n ? \"rgba(255,255,255,1)\"\n : \"rgba(255,255,255,0.4)\";\n return (\n setImage(data.image)}\n >\n {data.primaryText}\n
    \n {data.secondaryText}\n
    \n
    \n );\n })}\n
    \n
    \n
    \n \n
    \n
    \n
    \n \n \n \n
    \n Learn more about the benefits of Shuffle\n
    \n \n
    \n
    \n \n \n
    \n Focus on the work that matters to you\n
    \n \n Menial tasks, scattered content, constant copy pasting, waste of\n talent - there's a smarter way to work.\n \n
    \n {\n window.location.pathname = \"/docs/features\";\n }}\n style={{ flex: 1, margin: 10, textAlign: \"center\" }}\n >\n \n \n \n

    Premade playbooks

    \n

    Get your automation done with minimal effort

    \n
    \n
    \n \n \n {\n window.location.pathname = \"/docs/features\";\n }}\n style={{ flex: 1, margin: 10, textAlign: \"center\" }}\n >\n \n \n \n

    Open frameworks

    \n

    Mitre Att&ck, OpenAPI and more!

    \n
    \n
    \n \n \n {\n window.location.pathname = \"/docs/features\";\n }}\n style={{ flex: 1, margin: 10, textAlign: \"center\" }}\n >\n \n \n \n

    Hundreds of integrations

    \n

    Quickly integrate your software applications

    \n
    \n
    \n \n \n {\n window.location.pathname = \"/docs/features\";\n }}\n >\n \n \n \n

    Automated compliance

    \n

    Stuck with compliance needs you can't meet?

    \n
    \n
    \n \n \n
    \n \n \n );\n\n const landingpageDataMobile = (\n
    \n \n

    Shuffle

    \n

    A general automation solution for Infosec and IT Professionals

    \n \n \n Contact\n \n \n
    \n \n
    {listitems[0]}
    \n
    {listitems[1]}
    \n
    \n {listitems[2]}\n
    \n \n \n \n Contact\n \n \n \n \n \n );\n\n // Reroute if the user is logged in\n // const landingSite = isLoggedIn ? :
    {landingpageData}
    \n const landingSite =
    {landingpageDataBrowser}
    ;\n\n const loadedCheck = isLoaded ? (\n
    \n {landingSite}\n {landingpageDataMobile}\n
    \n ) : (\n
    \n );\n\n return
    {loadedCheck}
    ;\n};\nexport default LandingPage;\n","/* eslint-disable react/no-multi-comp */\nimport React, { useState, useEffect } from \"react\";\nimport { makeStyles } from \"@material-ui/styles\";\nimport { useInterval } from \"react-powerhooks\";\n\nimport {\n CircularProgress,\n TextField,\n Button,\n Paper,\n Typography,\n} from \"@material-ui/core\";\n\nimport { useTheme } from \"@material-ui/core/styles\";\nimport { useNavigate } from \"react-router-dom\";\n\nconst hrefStyle = {\n color: \"white\",\n textDecoration: \"none\",\n};\n\nconst bodyDivStyle = {\n margin: \"auto\",\n marginTop: 150,\n width: \"500px\",\n};\n\nconst useStyles = makeStyles({\n notchedOutline: {\n borderColor: \"#f85a3e !important\",\n },\n});\n\nconst LoginDialog = (props) => {\n const {\n globalUrl,\n isLoaded,\n isLoggedIn,\n setIsLoggedIn,\n setCookie,\n register,\n checkLogin,\n } = props;\n\n const theme = useTheme();\n\tlet navigate = useNavigate();\n const classes = useStyles();\n\n const [username, setUsername] = useState(\"\");\n const [password, setPassword] = useState(\"\");\n const [firstRequest, setFirstRequest] = useState(true);\n const [loginLoading, setLoginLoading] = useState(false);\n const [loginViewLoading, setLoginViewLoading] = useState(false);\n const [ssoUrl, setSSOUrl] = useState(\"\");\n\n const [MFAField, setMFAField] = useState(false);\n const [MFAValue, setMFAValue] = useState(\"\");\n\n\n // Used to swap from login to register. True = login, false = register\n\n\tuseEffect(() => {\n\t\tcheckAdmin() \n\t}, [loginViewLoading])\n\n // Error messages etc\n const [loginInfo, setLoginInfo] = useState(\"\");\n\n const handleValidateForm = () => {\n return username.length > 1 && password.length > 1;\n };\n\n if (isLoggedIn === true) {\n //window.location.pathname = \"/workflows\";\n navigate(\"/workflows\")\n }\n\n const checkAdmin = () => {\n const url = globalUrl + \"/api/v1/checkusers\";\n fetch(url, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n })\n .then((response) =>\n response.json().then((responseJson) => {\n if (responseJson[\"success\"] === false) {\n setLoginInfo(responseJson[\"reason\"]);\n } else {\n\n if (responseJson.sso_url !== undefined && responseJson.sso_url !== null) {\n setSSOUrl(responseJson.sso_url);\n }\n\n if (loginViewLoading) {\n setLoginViewLoading(false);\n checkLogin();\n stop();\n\n if (\n responseJson.reason !== undefined &&\n responseJson.reason !== null\n ) {\n setLoginInfo(responseJson.reason);\n }\n }\n\n if (responseJson.reason === \"stay\") {\n navigate(\"/adminsetup\")\n }\n }\n })\n )\n .catch((error) => {\n if (!loginViewLoading) {\n setLoginViewLoading(true);\n start();\n }\n });\n };\n\n const { start, stop } = useInterval({\n duration: 3000,\n startImmediate: false,\n callback: () => {\n checkAdmin();\n },\n });\n\n if (firstRequest) {\n setFirstRequest(false);\n checkAdmin();\n }\n\n const onSubmit = (e) => {\n setLoginLoading(true);\n e.preventDefault();\n setLoginInfo(\"\");\n // FIXME - add some check here ROFL\n\n // Just use this one?\n var data = { username: username, password: password };\n if (MFAValue !== undefined && MFAValue !== null && MFAValue.length > 0) {\n data[\"mfa_code\"] = MFAValue;\n }\n\n var baseurl = globalUrl;\n if (register) {\n var url = baseurl + \"/api/v1/login\";\n fetch(url, {\n mode: \"cors\",\n method: \"POST\",\n body: JSON.stringify(data),\n credentials: \"include\",\n crossDomain: true,\n withCredentials: true,\n headers: {\n \"Content-Type\": \"application/json; charset=utf-8\",\n },\n })\n .then((response) =>\n response.json().then((responseJson) => {\n setLoginLoading(false);\n if (responseJson[\"success\"] === false) {\n setLoginInfo(responseJson[\"reason\"]);\n } else {\n if (responseJson[\"reason\"] === \"MFA_REDIRECT\") {\n setLoginInfo(\n \"MFA required. Please the 6-digit code from your authenticator\"\n );\n setMFAField(true);\n return;\n }\n\n setLoginInfo(\"Successful login, rerouting\");\n for (var key in responseJson[\"cookies\"]) {\n setCookie(\n responseJson[\"cookies\"][key].key,\n responseJson[\"cookies\"][key].value,\n { path: \"/\" }\n );\n }\n\n\t\t\t\t\t\t\tif (responseJson.tutorials === undefined || responseJson.tutorials === null || !responseJson.tutorials.includes(\"welcome\")) {\n\t\t\t\t\t\t\t\tconsole.log(\"RUN Welcome!!\")\n\t\t\t\t\t\t\t\twindow.location.pathname = \"/welcome\" \n\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst tmpView = new URLSearchParams(window.location.search).get(\"view\")\n\t\t\t\t\t\t\tif (tmpView !== undefined && tmpView !== null) {\n\t\t\t\t\t\t\t\t//const newUrl = `/${tmpView}${decodeURIComponent(window.location.search)}`\n\t\t\t\t\t\t\t\tconst newUrl = `/${tmpView}`\n\t\t\t\t\t\t\t\twindow.location.pathname = newUrl\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\twindow.location.pathname = \"/workflows\"\t\t\n\t\t\t\t\t\t\t}\n\n setIsLoggedIn(true);\n }\n })\n )\n .catch((error) => {\n setLoginLoading(false);\n setLoginInfo(\"Error logging in: \" + error);\n });\n } else {\n url = baseurl + \"/api/v1/users/register\";\n fetch(url, {\n method: \"POST\",\n body: JSON.stringify(data),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n })\n .then((response) =>\n response.json().then((responseJson) => {\n if (responseJson[\"success\"] === false) {\n setLoginInfo(responseJson[\"reason\"]);\n } else {\n setLoginInfo(\"Successful register!\");\n }\n })\n )\n .catch((error) => {\n setLoginInfo(\"Error in from backend: \", error);\n });\n }\n };\n\n const onChangeUser = (e) => {\n setUsername(e.target.value);\n };\n\n const onChangePass = (e) => {\n setPassword(e.target.value);\n };\n\n //const onClickRegister = () => {\n //\tif (props.location.pathname === \"/login\") {\n //\t\twindow.location.pathname = \"/register\"\n //\t} else {\n //\t\twindow.location.pathname = \"/login\"\n //\t}\n\n //\tsetLoginCheck(!register)\n //}\n\n //var loginChange = register ? (

    Want to register? Click here.

    ) : (

    Go back to login? Click here.

    );\n var formtitle = register ?
    Login
    :
    Register
    ;\n const imgsize = 100;\n const basedata = (\n
    \n \n \n \n
    \n\n {loginViewLoading ? (\n
    \n \n Waiting for the Shuffle database to become available. This may\n take up to a minute.\n \n\n {loginInfo === undefined ||\n loginInfo === null ||\n loginInfo.length === 0 ? null : (\n
    Database Response: {loginInfo}
    \n )}\n \n\n \n \n \n Are you sure Shuffle is{\" \"}\n \n installed correctly\n \n ?\n \n \n \n 1. Make sure shuffle-database folder has correct access:{\" \"}\n
    \n
    \n sudo chown 1000:1000 -R shuffle-database\n \n\n \n 2. Restart docker-compose:\n
    \n
    \n sudo docker-compose restart\n \n \n \n Need help?{\" \"}\n \n Join the Discord!\n \n \n
    \n ) : (\n \n

    {formtitle}

    \n Username\n
    \n \n
    \n Password\n
    \n \n
    \n {MFAField === true ? (\n
    \n 2-factor code\n {\n setMFAValue(event.target.value);\n }}\n />\n
    \n ) : null}\n
    \n \n {loginLoading ? (\n \n ) : (\n \"SUBMIT\"\n )}\n \n
    \n
    {loginInfo}
    \n {ssoUrl !== undefined && ssoUrl !== null && ssoUrl.length > 0 ? (\n
    \n Or\n
    \n {\n //console.log(\"CLICK SSO\");\n\t\t\t\t\t\t\t\t\t\t\twindow.location.href = ssoUrl\n //navigate(ssoUrl)\n }}\n >\n Use SSO\n \n
    \n
    \n ) : null}\n \n )}\n \n \n );\n\n const loadedCheck = isLoaded ?
    {basedata}
    :
    ;\n\n\tuseEffect(() => {\n\t\tsetTimeout(() => {\n\t\t\tif (ssoUrl !== undefined && ssoUrl !== null && ssoUrl.length > 0) {\n\t\t\t\t//id=\"sso_button\"\n \t\tconst ssoBtn = document.getElementById(\"sso_button\");\n\t\t\t\tif (ssoBtn !== undefined && ssoBtn !== null) {\n\t\t\t\t\tconsole.log(\"SSO BTN: \", ssoBtn)\n\t\t\t\t\tconst cursearch = typeof window === \"undefined\" || window.location === undefined ? \"\" : window.location.search;\n\t\t\t\t\tvar tmpView = new URLSearchParams(cursearch).get(\"autologin\");\n\t\t\t\t\tif (tmpView !== undefined && tmpView !== null) {\n\t\t\t\t\t\tif (tmpView === \"true\") {\n\t\t\t\t\t\t\tconsole.log(\"Tmp: \", tmpView)\n\t\t\t\t\t\t\tssoBtn.click()\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}, 200);\n\t}, [ssoUrl])\n\n return
    {loadedCheck}
    ;\n};\n\nexport default LoginDialog;\n","import React, { useState, useEffect } from \"react\";\n\nimport { useNavigate } from \"react-router-dom\";\nimport {\n Grid,\n Typography,\n Paper,\n Button,\n Divider,\n TextField,\n} from \"@material-ui/core\";\nimport { useAlert } from \"react-alert\";\nimport { useTheme } from \"@material-ui/core/styles\";\n\nimport detectEthereumProvider from \"@metamask/detect-provider\";\n\nconst Settings = (props) => {\n const { globalUrl, isLoaded, userdata, setUserData } = props;\n const theme = useTheme();\n const alert = useAlert();\n\tlet navigate = useNavigate();\n\n const [username, setUsername] = useState(\"\");\n const [firstname, setFirstname] = useState(\"\");\n const [lastname, setLastname] = useState(\"\");\n const [email, setEmail] = useState(\"\");\n const [currentPassword, setCurrentPassword] = useState(\"\");\n const [newPassword, setNewPassword] = useState(\"\");\n const [newPassword2, setNewPassword2] = useState(\"\");\n // const [file, setFile] = React.useState(\"\");\n // const [fileBase64, setFileBase64] = React.useState(\n // userdata.image === undefined || userdata.image === null\n // ? theme.palette.defaultImage\n // : userdata.image\n // );\n const [loadedValidationWorkflows, setLoadedValidationWorkflows] =\n React.useState([]);\n const [selfOwnedWorkflows, setSelfOwnedWorkflows] = React.useState([]);\n const [loadedWorkflowCollections, setLoadedWorkflowCollections] =\n React.useState([]);\n\n // Used for error messages etc\n const [passwordFormMessage, setPasswordFormMessage] = useState(\"\");\n\n const [firstrequest, setFirstRequest] = useState(true);\n\n const [userSettings, setUserSettings] = useState({});\n\n /*\n\tconst [userdata.eth_info, setEthInfo] = useState(userdata.eth_info !== undefined && userdata.eth_info.account !== undefined && userdata.eth_info.account.length > 0 ? userdata.eth_info : {\n\t\t\"account\": \"\",\n\t\t\"balance\": \"\", \n\t})\n\t*/\n\n /*\n\tconsole.log(userdata.eth_info)\n\tif (userdata.eth_info.account.length === 0 && userdata.eth_info !== undefined && userdata.eth_info.account !== undefined && userdata.eth_info.account.length > 0) {\n\t\tsetEthInfo(userdata.eth_info)\n\t} else if (userdata.eth_info.balance.length > 0 && userdata.eth_info.parsed_balance === undefined) {\n\t\t//console.log(window.ethereum)\n\t\t//console.log(window.ethereum.utils.formatEther(userdata.eth_info.balance))\n\t\tconst parsed_balance = parseInt(userdata.eth_info.balance, 16)/1000000000000000000\n\t\tconsole.log(\"Parsed balance: \", parsed_balance)\n\t\tuserdata.eth_info.parsed_balance = parsed_balance\n\t\tuserdata.eth_info.parsed_balance = parsed_balance\n\t\tsetEthInfo(userdata.eth_info)\n\t} else if (userdata.eth_info !== undefined && userdata.eth_info.balance !== userdata.eth_info.balance) {\n\t\tconsole.log(\"Updating balance: \", userdata.eth_info)\n\t\tsetEthInfo(userdata.eth_info)\n\t}\n\t*/\n\n //Returns the value from a storage position at a given address.\n const isCloud =\n window.location.host === \"localhost:3002\" ||\n window.location.host === \"shuffler.io\"\n\n const bodyDivStyle = {\n margin: \"auto\",\n textAlign: \"center\",\n width: \"1100px\",\n };\n\n const boxStyle = {\n flex: \"1\",\n color: \"white\",\n position: \"relative\",\n marginLeft: \"10px\",\n marginRight: \"10px\",\n paddingLeft: \"30px\",\n paddingRight: \"30px\",\n paddingBottom: \"30px\",\n paddingTop: \"30px\",\n backgroundColor: theme.palette.surfaceColor,\n display: \"flex\",\n flexDirection: \"column\",\n };\n\n const checkOwner = (data, userdata) => {\n var currentOwner = false;\n if (data.owner.address === userdata.eth_info.account) {\n currentOwner = true;\n } else {\n if (\n data.top_ownerships !== undefined &&\n data.top_ownerships !== null &&\n data.top_ownerships.length === 1\n ) {\n for (var key in data.top_ownerships) {\n if (\n data.top_ownerships[key].owner.address === userdata.eth_info.account\n ) {\n currentOwner = true;\n break;\n }\n }\n }\n }\n\n return currentOwner;\n };\n\n const onPasswordChange = () => {\n const data = {\n username: userSettings.username,\n currentpassword: currentPassword,\n newpassword: newPassword,\n newpassword2: newPassword2,\n };\n const url = globalUrl + \"/api/v1/passwordchange\";\n fetch(url, {\n mode: \"cors\",\n method: \"POST\",\n body: JSON.stringify(data),\n credentials: \"include\",\n crossDomain: true,\n withCredentials: true,\n headers: {\n \"Content-Type\": \"application/json; charset=utf-8\",\n },\n })\n .then((response) =>\n response.json().then((responseJson) => {\n if (responseJson[\"success\"] === false) {\n setPasswordFormMessage(responseJson[\"reason\"]);\n } else {\n alert.success(\"Changed password!\");\n setPasswordFormMessage(\"\");\n }\n })\n )\n .catch((error) => {\n setPasswordFormMessage(\"Something went wrong.\");\n });\n };\n\n const loadWorkflowOwnership = () => {\n fetch(\n globalUrl + \"/api/v1/workflows/collections/untitled-collection-103712081\",\n {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n }\n )\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for WORKFLOW EXECUTION :O!\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n //console.log(\"Values: \", responseJson)\n\n //\tconst [selfOwnedWorkflows, setSelfOwnedWorkflows] = React.useState([])\n if (responseJson !== undefined && responseJson !== null) {\n const filteredOwnerships = responseJson.filter(\n (data) => checkOwner(data, userdata) === true\n );\n if (\n filteredOwnerships !== undefined &&\n filteredOwnerships !== null &&\n filteredOwnerships.length > 0\n ) {\n setSelfOwnedWorkflows(filteredOwnerships);\n }\n\n var collections = [];\n for (var key in responseJson) {\n var collectionname = responseJson[key].collection.name;\n if (!collections.includes(collectionname)) {\n collections.push(collectionname);\n }\n }\n\n console.log(collections);\n setLoadedWorkflowCollections(collections);\n setLoadedValidationWorkflows(responseJson);\n\n setTimeout(() => {\n window.scrollTo({\n top: document.body.scrollHeight,\n left: 0,\n behavior: \"smooth\",\n });\n }, 250);\n }\n })\n .catch((error) => {\n console.log(error);\n });\n };\n\n const generateApikey = () => {\n fetch(globalUrl + \"/api/v1/generateapikey\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for WORKFLOW EXECUTION :O!\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n setUserSettings(responseJson);\n })\n .catch((error) => {\n console.log(error);\n });\n };\n\n const getSettings = () => {\n fetch(globalUrl + \"/api/v1/getsettings\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for WORKFLOW EXECUTION :O!\");\n }\n\n\n return response.json();\n })\n .then((responseJson) => {\n setUserSettings(responseJson);\n })\n .catch((error) => {\n console.log(error);\n });\n };\n\n // Gotta be a better way of doing this rofl\n const setFields = () => {\n if (userdata.username !== undefined) {\n if (userdata.username.length > 0) {\n setUsername(userdata.username);\n }\n //if (userdata.firstname.length > 0) {\n //\tsetFirstname(userdata.firstname)\n //}\n //if (userdata.lastname.length > 0) {\n //\tsetLastname(userdata.lastname)\n //}\n //if (userdata.title.length > 0) {\n //\tsetTitle(userdata.title)\n //}\n //if (userdata.companyname.length > 0) {\n //\tsetCompanyname(userdata.companyname)\n //}\n //if (userdata.phone.length > 0) {\n //\tsetPhone(userdata.phone)\n //}\n //if (userdata.email.length > 0) {\n //\tsetEmail(userdata.email)\n //}\n }\n };\n\n // const registerProviders = (userdata) => {\n // // Register hooks here\n // detectEthereumProvider().then((provider) => {\n // if (provider) {\n // if (!provider.isMetaMask) {\n // alert.error(\"Only MetaMask is supported as of now.\");\n // return;\n // }\n\n // // Find the ethereum network\n // // Get the users' account(s)\n // //alert.info(\"Connecting to MetaMask\")\n // //console.log(\"Connected: \", provider.isConnected())\n\n // if (!provider.isConnected()) {\n // alert.error(\"Metamask is not connected.\");\n // return;\n // }\n\n // provider.on(\"message\", (event) => {\n // alert.info(\"Ethereum message: \", event);\n // });\n\n // provider.on(\"chainChanged\", (chainId) => {\n // console.log(\"Changed chain to: \", chainId);\n\n // const method = \"eth_getBalance\";\n // const params = [userdata.eth_info.account, \"latest\"];\n // provider\n // .request({\n // method: method,\n // params,\n // })\n // .then((result) => {\n // console.log(\"Got result: \", result);\n // if (result !== undefined && result !== null) {\n // userdata.eth_info.balance = result;\n // userdata.eth_info.parsed_balance = result / 1000000000000000000;\n // console.log(\"INFO: \", userdata);\n // setUserData(userdata);\n // } else {\n // alert.error(\"Couldn't find balance: \", result);\n // }\n // })\n // .catch((error) => {\n // // If the request fails, the Promise will reject with an error.\n // alert.error(\"Failed getting info from ethereum API: \" + error);\n // });\n // });\n // }\n // });\n // };\n\n // This should \"always\" have data\n useEffect(() => {\n if (firstrequest) {\n setFirstRequest(false);\n getSettings();\n //registerProviders(userdata)\n }\n\n if (\n Object.getOwnPropertyNames(userdata).length > 0 &&\n username === \"\" &&\n email === \"\"\n ) {\n setFields();\n }\n });\n\n const ParsedWorkflowView = (props) => {\n const { data } = props;\n\n var innerPaperStyle = {\n backgroundColor: theme.palette.inputColor,\n display: \"flex\",\n flexDirection: \"column\",\n padding: \"0px 0px 12px 0px\",\n borderRadius: theme.palette.borderRadius,\n };\n\n const currentOwner = checkOwner(data, userdata);\n if (currentOwner === true) {\n innerPaperStyle.border = \"3px solid #f86a3e\";\n }\n\n return (\n \n \n \n \n {data.collection}\n \n {data.name}\n \n \n );\n };\n\n\n\tconst runFlex = userdata.eth_info !== undefined && userdata.eth_info.account !== undefined &&\n\t\tuserdata.eth_info.account.length > 0 && userdata.eth_info.parsed_balance !== undefined \n\n // Random names for type & autoComplete. Didn't research :^)\n //var imageData = file.length > 0 ? file : fileBase64;\n //imageData = imageData === undefined || imageData.length === 0\n // ? theme.palette.defaultImage\n // : imageData;\n\n\tconst imageData = userSettings.image === undefined || userSettings.image == null || userSettings.image.length === 0 ? theme.palette.defaultImage : userSettings.image\n const imageInfo = (\n {\n\t\t\t\tif (imageData !== theme.palette.defaultImage) {\n\t\t\t\t\tnavigate(`/creators/${userdata.public_username}`)\n\t\t\t\t} else {\n\t\t\t\t\tnavigate(`/creators`)\n\t\t\t\t}\n\t\t\t}}\n style={{\n\t\t\t\tcursor: \"pointer\",\n maxWidth: 100,\n maxHeight: 100,\n minWidth: 100,\n minHeight: 100,\n position: \"absolute\",\n top: -80,\n left: 1020 / 2 - 25,\n borderRadius: 50,\n objectFit: \"contain\",\n border: \"2px solid rgba(255,255,255,0.7)\",\n }}\n />\n );\n\n const landingpageData = (\n
    \n \n {imageInfo}\n

    Settings

    \n
    \n setUsername(e.target.value)}\n />\n
    \n
    \n setFirstname(e.target.value)}\n />\n setLastname(e.target.value)}\n />\n
    \n

    APIKEY

    \n \n What is the API key used for?\n \n \n generateApikey()}\n >\n Re-Generate APIKEY\n \n \n {/*\n\t\t\t\t\t\t setTitle(e.target.value)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t setCompanyname(e.target.value)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t setEmail(e.target.value)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t setPhone(e.target.value)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t
    \n\t\t\t\t\t console.log(\"SUBMIT NORMAL INFO!!\")}\n\t\t\t\t\t>\n\t\t\t\t\tSubmit\t\n\t\t\t\t\t\n\t\t\t\t\t

    {formMessage}

    \n\t\t\t\t\t\n\t\t\t\t\t*/}\n

    Password

    \n
    \n setCurrentPassword(e.target.value)}\n />\n
    \n
    \n setNewPassword(e.target.value)}\n />\n setNewPassword2(e.target.value)}\n />\n
    \n onPasswordChange()}\n >\n Submit password change\n \n

    {passwordFormMessage}

    \n \n

    Platform Earnings

    \n
    \n\t\t\t\t\t
    \n \t\t\t\t\t{isCloud ?\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tBy connecting your Github account, you agree to our Terms of Service, and acknowledge that your non-sensitive data will be turned into a creator account. This enables you to earn a passive income from Shuffle. This IS reversible. Support: support@shuffler.io\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\thandleGithubConnection();\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tConnect to Github\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t: null}\n\t\t\t\t\t
    \n
    \n
    \n {userdata.eth_info !== undefined &&\n userdata.eth_info.account !== undefined &&\n userdata.eth_info.account.length > 0 &&\n userdata.eth_info.parsed_balance !== undefined ? (\n \n \n \n \n \n \n {/*window.ethereum.fromWei(userdata.eth_info.balance, \"ether\")*/}\n {userdata.eth_info.parsed_balance.toFixed(4)} ETH\n \n \n
    \n ) : null}\n
    \n\t\t\t\t\t\t{userdata.eth_info !== undefined &&\n\t\t\t\t\t\tuserdata.eth_info.account !== undefined &&\n\t\t\t\t\t\tuserdata.eth_info.account.length > 0 &&\n\t\t\t\t\t\tuserdata.eth_info.parsed_balance !== undefined ? (\n \n \n Owned Workflows\n \n {selfOwnedWorkflows.length}\n \n \n
    \n\t\t\t\t\t\t) : null}\n \n
    \n {/*userdata !== undefined &&\n userdata.eth_info !== undefined &&\n userdata.eth_info.account !== undefined &&\n userdata.eth_info.account.length > 0 ? (\n
    \n Network: TBD\n \n Address: {userdata.eth_info.account}\n \n {loadedWorkflowCollections.length > 0 ? (\n \n Collections: \n {loadedWorkflowCollections.map((data, index) => {\n var collectionname = data.toLowerCase();\n collectionname = collectionname.replaceAll(\"#\", \"\");\n collectionname = collectionname.replaceAll(\" \", \"-\");\n\n return (\n \n \n {data}\n \n  \n \n );\n })}\n \n ) : null}\n {\n //handleEthereumTokenCreation()\n loadWorkflowOwnership();\n }}\n >\n Validate ownership\n \n
    \n ) : (\n {\n handleEthereumConnection();\n }}\n >\n Authenticate Metamask Wallet\n \n )*/}\n
    \n \n\n {loadedValidationWorkflows !== undefined &&\n loadedValidationWorkflows !== null\n ? loadedValidationWorkflows.map((data, index) => {\n return (\n \n \n \n );\n })\n : null}\n \n \n );\n\n /*\n\t\t0x1\t1\tEthereum Main Network (Mainnet)\n\t\t0x3\t3\tRopsten Test Network\n\t\t0x4\t4\tRinkeby Test Network\n\t\t0x5\t5\tGoerli Test Network\n\t\t0x2a\t42\tKovan Test Network\n\t*/\n const setUser = (userId, field, value) => {\n const data = { user_id: userId };\n data[field] = value;\n\n fetch(globalUrl + \"/api/v1/users/updateuser\", {\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify(data),\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for WORKFLOW EXECUTION :O!\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n if (!responseJson.success && responseJson.reason !== undefined) {\n alert.error(\"Failed updating user: \" + responseJson.reason);\n }\n })\n .catch((error) => {\n console.log(error);\n });\n };\n\n const handleGithubConnection = () => {\n\t\tconsole.log(\"GITHUB CONNECT WOO: \", isCloud)\n \t//result = RestClient.post('https://github.com/login/oauth/access_token',\n\n\t\tconsole.log(\"HOST: \", window.location.host);\n\t\tconsole.log(\"Location: \", window.location);\n\t\tconst redirectUri = isCloud\n\t\t\t? window.location.host === \"localhost:3002\"\n\t\t\t\t? \"http%3A%2F%2Flocalhost:3002%2Fset_authentication\"\n\t\t\t\t: \"https%3A%2F%2Fshuffler.io%2Fset_authentication\"\n\t\t\t: window.location.protocol === \"http:\" ? \n\t\t\t\t`http%3A%2F%2F${window.location.host}%2Fset_authentication`\n\t\t\t\t:\n\t\t\t\t`https%3A%2F%2F${window.location.host}%2Fset_authentication`\n\n\t\tconsole.log(\"redirect: \", redirectUri)\n\n\t\tconst client_id = \"3d272b1b782b100b1e61\"\n\t\tconst username = userdata.id;\n\t\tconst scopes = \"read:user\";\n\n\t\tconst url = `https://github.com/login/oauth/authorize?access_type=offline&prompt=consent&client_id=${client_id}&redirect_uri=${redirectUri}&response_type=code&scope=${scopes}&state=username%3D${username}%26type%3Dgithub`\n\n\t\tconsole.log(\"URL: \", url);\n\n\t\tvar newwin = window.open(url, \"\", \"width=800,height=600\");\n\n\t\t// Check whether we got a callback somewhere\n\t\t//var id = setInterval(function () {\n\t\t//\tfetch(\n\t\t//\t\tglobalUrl + \"/api/v1/triggers/gmail/\" + selectedTrigger.id,\n\t\t//\t\t{\n\t\t//\t\t\tmethod: \"GET\",\n\t\t//\t\t\theaders: { \"content-type\": \"application/json\" },\n\t\t//\t\t\tcredentials: \"include\",\n\t\t//\t\t}\n\t\t//\t)\n\t\t//\t\t.then((response) => {\n\t\t//\t\t\tif (response.status !== 200) {\n\t\t//\t\t\t\tthrow new Error(\"No trigger info :o!\");\n\t\t//\t\t\t}\n\n\t\t//\t\t\treturn response.json();\n\t\t//\t\t})\n\t\t//\t\t.then((responseJson) => {\n\t\t//\t\t\tconsole.log(\"RESPONSE: \");\n\t\t//\t\t\tsetTriggerAuthentication(responseJson);\n\t\t//\t\t\tclearInterval(id);\n\t\t//\t\t\tnewwin.close();\n\t\t//\t\t\tsetGmailFolders();\n\t\t//\t\t})\n\t\t//\t\t.catch((error) => {\n\t\t//\t\t\tconsole.log(error.toString());\n\t\t//\t\t});\n\t\t//}, 2500);\n\n\t\t//saveWorkflow(workflow);\n\t}\n\n const handleEthereumTokenCreation = async () => {\n const provider = await detectEthereumProvider();\n if (!provider) {\n console.log(\"Please install MetaMask!\");\n alert.error(\n \"Please download the MetaMask browser extension to authenticate fully!\"\n );\n return;\n }\n\n if (!provider.isMetaMask) {\n alert.error(\"Only MetaMask is supported as of now.\");\n return;\n }\n\n if (!provider.isConnected()) {\n alert.error(\"Metamask is not connected.\");\n return;\n }\n\n console.log(\"Should make a token\");\n };\n\n const handleEthereumConnection = async () => {\n const provider = await detectEthereumProvider();\n if (!provider) {\n console.log(\"Please install MetaMask!\");\n alert.error(\n \"Please download the MetaMask browser extension to authenticate fully!\"\n );\n return;\n }\n\n if (!provider.isMetaMask) {\n alert.error(\"Only MetaMask is supported as of now.\");\n return;\n }\n\n // Find the ethereum network\n // Get the users' account(s)\n //alert.info(\"Connecting to MetaMask\")\n //console.log(\"Connected: \", provider.isConnected())\n\n if (!provider.isConnected()) {\n alert.error(\"Metamask is not connected.\");\n return;\n }\n\n provider.on(\"message\", (event) => {\n alert.info(\"Ethereum message: \", event);\n });\n\n /*\n\t\tparams: [\n\t\t\t{\n\t\t\t\tfrom: '0xb60e8dd61c5d32be8058bb8eb970870f07233155',\n\t\t\t\tto: '0xd46e8dd67c5d32be8058bb8eb970870f07244567',\n\t\t\t\tgas: '0x76c0', // 30400\n\t\t\t\tgasPrice: '0x9184e72a000', // 10000000000000\n\t\t\t\tvalue: '0x9184e72a', // 2441406250\n\t\t\t\tdata:\n\t\t\t\t\t'0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675',\n\t\t\t},\n\t\t]\n\t\t*/\n\n // https://docs.metamask.io/guide/rpc-api.html\n // Gets accounts - requires previous permissions\n //const method = \"eth_accounts\"\n //const params = []\n //\n // Asks for permission, and gets the accounts\n var method = \"eth_requestAccounts\";\n var params = [];\n provider\n .request({\n method: method,\n params,\n })\n .then((result) => {\n if (result !== undefined && result !== null && result.length > 0) {\n userdata.eth_info.account = result[0];\n\n // Getting and setting balance for the current user\n method = \"eth_getBalance\";\n params = [userdata.eth_info.account, \"latest\"];\n provider\n .request({\n method: method,\n params,\n })\n .then((result) => {\n if (\n result !== undefined &&\n result !== null &&\n result.length > 0\n ) {\n userdata.eth_info.balance = result;\n userdata.eth_info.parsed_balance = result / 1000000000000000000;\n console.log(userdata.eth_info);\n setUserData(userdata.eth_info);\n\n // Updating\n //if (userdata.eth_info !== userdata.userdata.eth_info) {\n //}\n\n setUser(userdata.id, \"eth_info\", userdata.eth_info);\n userdata.userdata.eth_info = userdata.eth_info;\n } else {\n alert.error(\"Couldn't find balance: \", result);\n }\n // The result varies by RPC method.\n // For example, this method will return a transaction hash hexadecimal string on success.\n })\n .catch((error) => {\n // If the request fails, the Promise will reject with an error.\n //setEthInfo(userdata.eth_info)\n alert.error(\"Failed getting info from ethereum API: \" + error);\n });\n } else {\n alert.error(\"Couldn't find any user: \", result);\n }\n })\n .catch((error) => {\n // If the request fails, the Promise will reject with an error.\n alert.error(\"Failed getting info from ethereum API: \" + error);\n });\n\n // Gets the users' balance in WEI (one quintilionth ETH)\n };\n\n const loadedCheck =\n isLoaded && !firstrequest ? (\n
    {landingpageData}
    \n ) : (\n
    \n );\n\n return
    {loadedCheck}
    ;\n};\nexport default Settings;\n","import React, { useState, useEffect, useLayoutEffect } from \"react\";\n\n\nconst KeepAlive = (defaultprops) => {\n const { globalUrl, isLoggedIn, isLoaded, userdata } = defaultprops;\n\n const [data, setData] = React.useState([]);\n const [update, setUpdate] = React.useState(0);\n\n\tconst onChunkedResponseComplete = (result) => {\n\t\t console.log('all done!', result)\n\t}\n\n\tconst onChunkedResponseError = (err) => {\n\t\t console.error(err)\n\t}\n\n\tconst processChunkedResponse = async (response) => {\n\t\tvar text = '';\n\t\tvar reader = response.body.getReader()\n\t\tvar decoder = new TextDecoder();\n\t\t\n\t\tconst appendChunks = (result) => {\n\t\t\tvar chunk = decoder.decode(result.value || new Uint8Array, {stream: !result.done});\n\t\t\tdata.push(chunk)\n\t\t\tsetData(data)\n \tsetUpdate(Math.random());\n\n\t\t\tconsole.log('got chunk of', chunk.length, 'bytes. Value: ', chunk)\n\t\t\ttext += chunk;\n\t\t\t//console.log('text so far is', text.length, 'bytes\\n');\n\t\t\tif (result.done) {\n\t\t\t\tconsole.log('returning')\n\t\t\t\treturn text;\n\t\t\t} else {\n\t\t\t\treturn readChunk()\n\t\t\t}\n\t\t}\n\n\t\tconst readChunk = () => {\n\t\t\treturn reader.read().then(appendChunks);\n\t\t}\n\n\t\treturn readChunk();\n\t}\n\n\n\n\tconst getWorkflowStream = async () => {\n await fetch(globalUrl + \"/api/v1/workflows/a843fe90-585a-4693-8b7c-0b4dbce3347d/stream\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n\t\t.then(processChunkedResponse)\n\t\t.then(onChunkedResponseComplete)\n\t\t.catch(onChunkedResponseError)\n }\n\n useEffect(() => {\n\t\tconsole.log(\"FIRST REQUEST\")\n\t\tgetWorkflowStream()\n\t}, [])\n\n\treturn (\n\t\t
    \n\t\t\tDONE\n\t\t\t{data.map((innerdata, index) => { \n\t\t\t\treturn (\n\t\t\t\t\t
    \n\t\t\t\t\t\t{innerdata}\n\t\t\t\t\t
    \n\t\t\t\t)\n\t\t\t})}\n\t\t
    \n\t)\n}\n\nexport default KeepAlive;\n","export default __webpack_public_path__ + \"static/media/mobile.820f61d7.svg\";","export default __webpack_public_path__ + \"static/media/bag.7726285f.svg\";","export default __webpack_public_path__ + \"static/media/book.8c7f8c1e.svg\";","import React, { useEffect, useState } from 'react';\nimport ReactDOM from \"react-dom\"\n\nimport AppFramework from \"../components/AppFramework.jsx\";\nimport { useAlert } from \"react-alert\";\nimport { Link, useParams } from \"react-router-dom\";\nimport theme from '../theme.jsx';\n\nimport {\n\tButton,\n} from \"@material-ui/core\";\n\nconst Framework = (props) => {\n const {globalUrl, isLoaded, isLoggedIn, showOptions, selectedOption, rolling, } = props;\n\n const alert = useAlert()\n const [frameworkLoaded, setFrameworkLoaded] = useState(false)\n const [frameworkData, setFrameworkData] = useState()\n\n const getFramework = () => {\n fetch(globalUrl + \"/api/v1/apps/frameworkConfiguration\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n credentials: \"include\",\n })\n .then((response) => {\n if (response.status !== 200) {\n console.log(\"Status not 200 for framework!\");\n }\n\n return response.json();\n })\n .then((responseJson) => {\n\t\t\t\tif (responseJson.success === false) {\n\t\t\t\t\tif (responseJson.reason !== undefined) {\n\t\t\t\t\t\talert.error(\"Failed loading: \" + responseJson.reason)\n\t\t\t\t\t} else {\n\t\t\t\t\t\talert.error(\"Failed to load framework for your org.\")\n\t\t\t\t\t}\n\n\t\t\t\t\tsetFrameworkLoaded(true)\n\t\t\t\t} else {\n\t\t\t\t\tReactDOM.unstable_batchedUpdates(() => {\n\t\t\t\t\t\tsetFrameworkData(responseJson)\n\t\t\t\t\t\tsetFrameworkLoaded(true)\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t})\n .catch((error) => {\n\t\t\t\tsetFrameworkLoaded(true)\n alert.error(error.toString());\n })\n\t\t}\n\n useEffect(() => {\n\t\tgetFramework()\n }, [])\n\n\treturn (\n\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
    \n\t\t\t{frameworkLoaded === true && isLoaded ? \n\t\t\t\t\n\t\t\t: null}\n\t\t
    \n\t)\n}\n\nexport default Framework;\n","import { useEffect } from \"react\";\n//import { withRouter } from \"react-router-dom\";\nimport { useLocation } from \"react-router-dom\";\n\n// ensures scrolling happens in the right way on different pages and when changing\nfunction ScrollToTop({ getUserNotifications, curpath, setCurpath, history }) {\n\tlet location = useLocation();\n\n useEffect(() => {\n\t\t// Custom handler for certain scroll mechanics\n\t\t//\n\t\tconsole.log(\"OLD: \", curpath, \"NeW: \", window.location.pathname)\n\t\tif (curpath === window.location.pathname && curpath === \"/usecases\") {\n\t\t} else { \n\n\t\t\twindow.scroll({\n\t\t\t\ttop: 0,\n\t\t\t\tleft: 0,\n\t\t\t\tbehavior: \"smooth\",\n\t\t\t});\n\n\t\t\tsetCurpath(window.location.pathname);\n\t\t\tgetUserNotifications();\n\t\t}\n }, [location]);\n\n return null;\n}\n\n// https://stackoverflow.com/questions/36904185/react-router-scroll-to-top-on-every-transition\n//export default withRouter(ScrollToTop);\n// https://v5.reactrouter.com/web/api/Hooks/uselocation\nexport default ScrollToTop;\n","import React from \"react\";\nimport InfoIcon from \"@material-ui/icons/Info\";\nimport CheckIcon from \"@material-ui/icons/Check\";\nimport ErrorOutlineIcon from \"@material-ui/icons/ErrorOutline\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport Typography from \"@material-ui/core/Typography\";\n\nconst alertStyle = {\n backgroundColor: \"rgba(0,0,0,0.9)\",\n color: \"white\",\n padding: 15,\n textTransform: \"uppercase\",\n borderRadius: \"3px\",\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n boxShadow: \"0px 2px 2px 2px rgba(0, 0, 0, 0.03)\",\n width: 300,\n boxSizing: \"border-box\",\n zIndex: 100001,\n overflow: \"hidden\",\n};\n\nconst buttonStyle = {\n marginLeft: \"20px\",\n border: \"none\",\n backgroundColor: \"transparent\",\n cursor: \"pointer\",\n color: \"#FFFFFF\",\n};\n\nconst AlertTemplate = ({ message, options, style, close }) => {\n return (\n
    \n {options.type === \"info\" && }\n {options.type === \"success\" && }\n {options.type === \"error\" && (\n \n )}\n {message}\n \n
    \n );\n};\n\nexport default AlertTemplate;\n","import React from \"react\";\nimport { Grid, Container, Divider } from \"@mui/material\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Card from \"@material-ui/core/Card\";\nimport CardContent from \"@material-ui/core/CardContent\";\nimport Typography from \"@material-ui/core/Typography\";\n\nimport Table from \"@material-ui/core/Table\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableContainer from \"@material-ui/core/TableContainer\";\nimport TableHead from \"@material-ui/core/TableHead\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport Paper from \"@material-ui/core/Paper\";\n\nimport { LineChart, LineSeries, BarChart } from \"reaviz\";\nimport { GridStripe } from \"reaviz\";\n//import { GridlineSeries } from \"reaviz\";\n\nimport InputLabel from '@material-ui/core/InputLabel';\nimport FormControl from '@material-ui/core/FormControl';\nimport Select from '@material-ui/core/Select';\nimport MenuItem from '@material-ui/core/MenuItem';\n\nconst data = [\n {\n key: new Date(\"11/29/2019\"),\n data: 10,\n },\n {\n key: new Date(\"11/30/2019\"),\n data: 14,\n },\n {\n key: new Date(\"12/01/2019\"),\n data: 5,\n },\n {\n key: new Date(\"12/02/2019\"),\n data: 18,\n },\n];\n\nconst useStyles1 = makeStyles((theme) => ({\n formControl: {\n margin: theme.spacing(1),\n minWidth: 120,\n },\n selectEmpty: {\n marginTop: theme.spacing(2),\n },\n}));\n\n\nconst useStyles = makeStyles({\n table: {\n minWidth: 650,\n },\n root: {\n minWidth: 275,\n },\n bullet: {\n display: \"inline-block\",\n margin: \"0 2px\",\n transform: \"scale(0.8)\",\n },\n title: {\n fontSize: 14,\n },\n pos: {\n marginBottom: 12,\n },\n});\n\nfunction createData(name, calories, fat, carbs, protein) {\n return { name, calories, fat, carbs, protein };\n}\n\nconst rows = [\n createData(\"Frozen yoghurt\", 159, 6.0, 24, 4.0),\n createData(\"Ice cream sandwich\", 237, 9.0, 37, 4.3),\n createData(\"Eclair\", 262, 16.0, 24, 6.0),\n createData(\"Cupcake\", 305, 3.7, 67, 4.3),\n createData(\"Gingerbread\", 356, 16.0, 49, 3.9),\n];\n\nconst DashboardPage = () => {\n const classes = useStyles();\n const classes1 = useStyles1();\n\n const [age, setAge] = React.useState(0);\n\n const handleChange = (event) => {\n setAge(event.target.value);\n\n };\n\n return (\n \n \n \n
    \n \n Dashboard\n \n
    \n \n Organization\n \n Ten\n Twenty\n Thirty\n \n \n
    \n
    \n
    \n \n
    \n \n \n \n \n \n Total workflows executions\n \n \n 456\n \n \n \n \n \n \n \n \n Total Apps executions\n \n \n 587\n \n \n \n \n \n \n \n \n Total failed executions\n \n \n 999\n \n \n \n \n \n \n \n \n \n \n }\n series={}\n />\n \n \n \n \n \n \n \n \n Dessert (100g serving)\n Calories\n Fat (g)\n Carbs (g)\n Protein (g)\n \n \n \n {rows.map((row) => (\n \n \n {row.name}\n \n {row.calories}\n {row.fat}\n {row.carbs}\n {row.protein}\n \n ))}\n \n \n \n \n \n
    \n );\n};\n\nexport default DashboardPage;\n","import React, { useState, useEffect } from \"react\";\n\n//import { Route, Routes } from \"react-router\";\nimport { Route, Routes, BrowserRouter } from \"react-router-dom\";\nimport { CookiesProvider } from \"react-cookie\";\nimport { removeCookies, useCookies } from \"react-cookie\";\n\nimport Workflows from \"./views/Workflows\";\nimport GettingStarted from \"./views/GettingStarted\";\nimport EditWebhook from \"./views/EditWebhook\";\nimport AngularWorkflow from \"./views/AngularWorkflow\";\n\nimport Header from \"./components/Header.jsx\";\nimport theme from \"./theme\";\nimport Apps from \"./views/Apps\";\nimport AppCreator from \"./views/AppCreator\";\n\nimport Welcome from \"./views/Welcome.jsx\";\nimport Dashboard from \"./views/Dashboard.jsx\";\nimport DashboardView from \"./views/DashboardViews.jsx\";\nimport AdminSetup from \"./views/AdminSetup\";\nimport Admin from \"./views/Admin\";\nimport Docs from \"./views/Docs\";\nimport Introduction from \"./views/Introduction\";\nimport SetAuthentication from \"./views/SetAuthentication\";\nimport SetAuthenticationSSO from \"./views/SetAuthenticationSSO\";\nimport Search from \"./views/Search.jsx\";\nimport RunWorkflow from \"./views/RunWorkflow.jsx\";\n\nimport LandingPageNew from \"./views/LandingpageNew\";\nimport LoginPage from \"./views/LoginPage\";\nimport SettingsPage from \"./views/SettingsPage\";\nimport KeepAlive from \"./views/KeepAlive.jsx\";\n\nimport MyView from \"./views/MyView\";\n\nimport { createMuiTheme, MuiThemeProvider } from \"@material-ui/core/styles\";\n\nimport FrameworkWrapper from \"./views/FrameworkWrapper.jsx\";\nimport ScrollToTop from \"./components/ScrollToTop\";\nimport AlertTemplate from \"./components/AlertTemplate\";\nimport { useAlert, positions, Provider } from \"react-alert\";\nimport { isMobile } from \"react-device-detect\";\n\nimport detectEthereumProvider from \"@metamask/detect-provider\";\nimport Drift from \"react-driftjs\";\nimport DashboardPage from \"./views/TempDashboard.jsx\";\n\n// Production - backend proxy forwarding in nginx\nvar globalUrl = window.location.origin;\n\n// CORS used for testing purposes. Should only happen with specific port and http\nif (window.location.port === \"3000\") {\n globalUrl = \"http://localhost:5001\";\n //globalUrl = \"http://localhost:5002\"\n}\n\n// Development on Github Codespaces\nif (globalUrl.includes(\"app.github.dev\")) {\n\t//globalUrl = globalUrl.replace(\"3000\", \"5001\")\n\tglobalUrl = \"https://frikky-shuffle-5gvr4xx62w64-5001.preview.app.github.dev\"\n}\n//console.log(\"global: \", globalUrl)\n\nconst App = (message, props) => {\n\n const [userdata, setUserData] = useState({});\n const [notifications, setNotifications] = useState([])\n const [cookies, setCookie, removeCookie] = useCookies([])\n const [isLoggedIn, setIsLoggedIn] = useState(false)\n const [dataset, setDataset] = useState(false)\n const [isLoaded, setIsLoaded] = useState(false)\n const [curpath, setCurpath] = useState(typeof window === \"undefined\" || window.location === undefined ? \"\" : window.location.pathname)\n\n\n useEffect(() => {\n if (dataset === false) {\n getUserNotifications();\n checkLogin();\n setDataset(true);\n }\n }, []);\n\n if (\n isLoaded &&\n !isLoggedIn &&\n !window.location.pathname.startsWith(\"/login\") &&\n !window.location.pathname.startsWith(\"/docs\") &&\n !window.location.pathname.startsWith(\"/support\") &&\n !window.location.pathname.startsWith(\"/detectionframework\") &&\n !window.location.pathname.startsWith(\"/appframework\") &&\n !window.location.pathname.startsWith(\"/adminsetup\") &&\n !window.location.pathname.startsWith(\"/usecases\")\n ) {\n window.location = \"/login\";\n }\n\n const getUserNotifications = () => {\n fetch(`${globalUrl}/api/v1/users/notifications`, {\n credentials: \"include\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n\t\t\tcors: \"cors\",\n })\n .then((response) => response.json())\n .then((responseJson) => {\n if (\n responseJson.success === true &&\n responseJson.notifications !== null &&\n responseJson.notifications !== undefined &&\n responseJson.notifications.length > 0\n ) {\n //console.log(\"RESP: \", responseJson)\n setNotifications(responseJson.notifications);\n }\n })\n .catch((error) => {\n console.log(\"Failed getting notifications for user: \", error);\n });\n };\n\n const checkLogin = () => {\n var baseurl = globalUrl;\n fetch(`${globalUrl}/api/v1/getinfo`, {\n credentials: \"include\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n })\n .then((response) => response.json())\n .then((responseJson) => {\n var userInfo = {};\n if (responseJson.success === true) {\n //console.log(\"USER: \", responseJson);\n\n userInfo = responseJson;\n setIsLoggedIn(true);\n //console.log(\"Cookies: \", cookies)\n // Updating cookie every request\n for (var key in responseJson[\"cookies\"]) {\n setCookie(\n responseJson[\"cookies\"][key].key,\n responseJson[\"cookies\"][key].value,\n { path: \"/\" }\n );\n }\n }\n\n // Handling Ethereum update\n\t\t\t\t{/*\n detectEthereumProvider().then((provider) => {\n if (\n provider &&\n userInfo.eth_info !== undefined &&\n userInfo.eth_info !== null\n ) {\n if (\n userInfo.eth_info.account !== undefined &&\n userInfo.eth_info.account !== null &&\n userInfo.eth_info.account.length === 0\n ) {\n userInfo.eth_info = {};\n var method = \"eth_requestAccounts\";\n var params = [];\n provider\n .request({\n method: method,\n params,\n })\n .then((result) => {\n if (\n result !== undefined &&\n result !== null &&\n result.length > 0\n ) {\n userInfo.eth_info.account = result[0];\n\n // Getting and setting balance for the current user\n method = \"eth_getBalance\";\n params = [userInfo.eth_info.account, \"latest\"];\n provider\n .request({\n method: method,\n params,\n })\n .then((result) => {\n if (\n result !== undefined &&\n result !== null &&\n result.length > 0\n ) {\n userInfo.parsed_balance =\n result / 1000000000000000000;\n } else {\n alert.error(\"Couldn't find balance: \", result);\n }\n // The result varies by RPC method.\n // For example, this method will return a transaction hash hexadecimal string on success.\n })\n .catch((error) => {\n // If the request fails, the Promise will reject with an error.\n alert.error(\n \"Failed getting info from ethereum API: \" + error\n );\n });\n } else {\n alert.error(\"Couldn't find any user: \", result);\n }\n })\n .catch((error) => {\n // If the request fails, the Promise will reject with an error.\n alert.error(\n \"Failed getting info from ethereum API: \" + error\n );\n });\n }\n\n // Register hooks here\n provider.on(\"message\", (event) => {\n alert.info(\"Message from MetaMask: \", event);\n });\n\n provider.on(\"chainChanged\", (chainId) => {\n console.log(\"Changed chain to: \", chainId);\n\n method = \"eth_getBalance\";\n params = [userInfo.eth_info.account, \"latest\"];\n provider\n .request({\n method: method,\n params,\n })\n .then((result) => {\n console.log(\"Got result: \", result);\n if (result !== undefined && result !== null) {\n userInfo.eth_info.balance = result;\n userInfo.eth_info.parsed_balance =\n result / 1000000000000000000;\n console.log(\"INFO: \", userInfo);\n setUserData(userInfo);\n } else {\n alert.error(\"Couldn't find balance: \", result);\n }\n })\n .catch((error) => {\n // If the request fails, the Promise will reject with an error.\n alert.error(\n \"Failed getting info from ethereum API: \" + error\n );\n });\n });\n }\n });\n\n if (\n userInfo.eth_info !== undefined &&\n userInfo.eth_info.balance !== undefined\n ) {\n //console.log(userInfo.eth_info.balance)\n userInfo.eth_info.parsed_balance =\n userInfo.eth_info.balance / 1000000000000000000;\n }\n\t\t\t\t*/}\n\n //console.log(\"USER: \", userInfo)\n setUserData(userInfo);\n setIsLoaded(true);\n })\n .catch((error) => {\n setIsLoaded(true);\n });\n };\n\n // Dumb for content load (per now), but good for making the site not suddenly reload parts (ajax thingies)\n\n const options = {\n timeout: 9000,\n position: positions.BOTTOM_LEFT,\n };\n\n\tconst handleFirstInteraction = (event) => {\n\t\tconsole.log(\"First interaction: \", event)\n\t}\n\n const includedData =\n window.location.pathname === \"/home\" ||\n window.location.pathname === \"/features\" ? (\n
    \n\t\t\t\t\n\t\t\t\t\t }\n\t\t\t\t\t/>\n\t\t\t\t\n
    \n ) : (\n \n \n\t\t\t\t{!isLoaded ? null : \n\t\t\t\t\tuserdata.chat_disabled === true ? null : \n\t\t\t\t\t\t\n\t\t\t\t}\n \n\t\t\t\t{/*\n
    \n\t\t\t\t*/}\n\t\t\t\t\n \t\n \t }\n \t/>\n \t\n \t }\n \t/>\n\t\t\t\t\t } />\n \t\n \t }\n \t/>\n \t{userdata.id !== undefined ? (\n \t \n \t }\n \t />\n \t) : null}\n \t\n \t }\n \t/>\n \t\n \t }\n \t/>\n \t\n \t }\n \t/>\n \t\n \t }\n \t/>\n \t\n \t }\n \t/>\n \t\n \t }\n \t/>\n \t\n \t }\n \t/>\n \t\n \t }\n \t/>\n \t\n \t }\n \t/>\n \t\n \t }\n \t/>\n\t\t\t\t\t } />\n\t\t\t\t\t } />\n \t\n \t }\n \t/>\n \t\n \t }\n \t/>\n \t\n \t }\n \t/>\n \t\n \t }\n \t/>\n \t\n \t }\n \t/>\n \t\n \t }\n \t/>\n \t\n \t }\n \t/>\n \t\n \t }\n \t/>\n\t\t\t\n \t }\n \t/>\n \t\n \t }\n \t/>\n\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n \t\n \t }\n \t/>\n\t\t\t\t\n
    \n );\n\n //
    \n // backgroundColor: \"#213243\",\n // This is a mess hahahah\n return (\n \n \n \n \n {includedData}\n \n \n \n \n );\n};\n\nexport default App;\n","// In production, we register a service worker to serve assets from local cache.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\n// cached resources are updated in the background.\n\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\n// This link also includes instructions on opting out of this behavior.\n\nconst isLocalhost = Boolean(\n window.location.hostname === \"localhost\" ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === \"[::1]\" ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === \"production\" && \"serviceWorker\" in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener(\"load\", () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n \"This web app is being served cache-first by a service \" +\n \"worker. To learn more, visit https://goo.gl/SC7cgQ\"\n );\n });\n } else {\n // Is not local host. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n installingWorker.onstatechange = () => {\n if (installingWorker.state === \"installed\") {\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and\n // the fresh content will have been added to the cache.\n // It's the perfect time to display a \"New content is\n // available; please refresh.\" message in your web app.\n console.log(\"New content is available; please refresh.\");\n\n // Execute callback\n if (config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log(\"Content is cached for offline use.\");\n\n // Execute callback\n if (config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error(\"Error during service worker registration:\", error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n if (\n response.status === 404 ||\n response.headers.get(\"content-type\").indexOf(\"javascript\") === -1\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n \"No internet connection found. App is running in offline mode.\"\n );\n });\n}\n\nexport function unregister() {\n if (\"serviceWorker\" in navigator) {\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister();\n });\n }\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport \"./index.css\";\nimport App from \"./App\";\nimport * as serviceWorker from \"./serviceWorker\";\n\nReactDOM.render(, document.getElementById(\"root\"));\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: http://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}