gitextract_9m71ul2v/ ├── .babelrc ├── .editorconfig ├── .eslintrc.js ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ └── feature_request.md │ └── dependabot.yml ├── .gitignore ├── .prettierrc ├── .vscode/ │ └── settings.json ├── LICENSE.txt ├── README.md ├── business/ │ └── dev/ │ ├── blocks/ │ │ ├── backgroundHandler/ │ │ │ └── index.js │ │ ├── contentHandler/ │ │ │ └── index.js │ │ ├── editComponents/ │ │ │ └── index.js │ │ └── index.js │ ├── index.js │ └── parameters/ │ └── index.js ├── jsconfig.json ├── package.json ├── postcss.config.js ├── secrets.blank.js ├── src/ │ ├── assets/ │ │ └── css/ │ │ ├── drawflow.css │ │ ├── flow.css │ │ ├── fonts.css │ │ ├── style.css │ │ └── tailwind.css │ ├── background/ │ │ ├── BackgroundEventsListeners.js │ │ ├── BackgroundOffscreen.js │ │ ├── BackgroundUtils.js │ │ ├── BackgroundWorkflowTriggers.js │ │ ├── BackgroundWorkflowUtils.js │ │ └── index.js │ ├── common/ │ │ └── utils/ │ │ └── constant.js │ ├── components/ │ │ ├── block/ │ │ │ ├── BlockBase.vue │ │ │ ├── BlockBasic.vue │ │ │ ├── BlockBasicWithFallback.vue │ │ │ ├── BlockConditions.vue │ │ │ ├── BlockDelay.vue │ │ │ ├── BlockElementExists.vue │ │ │ ├── BlockGroup.vue │ │ │ ├── BlockGroup2.vue │ │ │ ├── BlockLoopBreakpoint.vue │ │ │ ├── BlockNote.vue │ │ │ ├── BlockPackage.vue │ │ │ └── BlockRepeatTask.vue │ │ ├── content/ │ │ │ ├── selector/ │ │ │ │ ├── SelectorBlocks.vue │ │ │ │ ├── SelectorElementList.vue │ │ │ │ ├── SelectorElementsDetail.vue │ │ │ │ └── SelectorQuery.vue │ │ │ └── shared/ │ │ │ ├── SharedElementHighlighter.vue │ │ │ └── SharedElementSelector.vue │ │ ├── newtab/ │ │ │ ├── app/ │ │ │ │ ├── AppLogs.vue │ │ │ │ ├── AppLogsItem.vue │ │ │ │ ├── AppLogsItemRunning.vue │ │ │ │ ├── AppLogsItems.vue │ │ │ │ ├── AppSidebar.vue │ │ │ │ └── AppSurvey.vue │ │ │ ├── logs/ │ │ │ │ ├── LogsDataViewer.vue │ │ │ │ ├── LogsFilters.vue │ │ │ │ ├── LogsHistory.vue │ │ │ │ ├── LogsTable.vue │ │ │ │ └── LogsVariables.vue │ │ │ ├── package/ │ │ │ │ ├── PackageDetails.vue │ │ │ │ ├── PackageSettingIOSelect.vue │ │ │ │ └── PackageSettings.vue │ │ │ ├── settings/ │ │ │ │ ├── SettingsBackupItems.vue │ │ │ │ ├── SettingsCloudBackup.vue │ │ │ │ └── jsBlockWrap.js │ │ │ ├── shared/ │ │ │ │ ├── SharedCard.vue │ │ │ │ ├── SharedCodemirror.vue │ │ │ │ ├── SharedConditionBuilder/ │ │ │ │ │ ├── ConditionBuilderInputs.vue │ │ │ │ │ └── index.vue │ │ │ │ ├── SharedElSelectorActions.vue │ │ │ │ ├── SharedLogsTable.vue │ │ │ │ ├── SharedPermissionsModal.vue │ │ │ │ ├── SharedWorkflowState.vue │ │ │ │ ├── SharedWorkflowTriggers.vue │ │ │ │ └── SharedWysiwyg.vue │ │ │ ├── storage/ │ │ │ │ ├── StorageCredentials.vue │ │ │ │ ├── StorageEditTable.vue │ │ │ │ ├── StorageTables.vue │ │ │ │ └── StorageVariables.vue │ │ │ ├── workflow/ │ │ │ │ ├── WorkflowBlockList.vue │ │ │ │ ├── WorkflowDataTable.vue │ │ │ │ ├── WorkflowDetailsCard.vue │ │ │ │ ├── WorkflowEditBlock.vue │ │ │ │ ├── WorkflowEditor.vue │ │ │ │ ├── WorkflowGlobalData.vue │ │ │ │ ├── WorkflowProtect.vue │ │ │ │ ├── WorkflowRunning.vue │ │ │ │ ├── WorkflowSettings.vue │ │ │ │ ├── WorkflowShare.vue │ │ │ │ ├── WorkflowShareTeam.vue │ │ │ │ ├── WorkflowSharedActions.vue │ │ │ │ ├── edit/ │ │ │ │ │ ├── BlockSetting/ │ │ │ │ │ │ ├── BlockSettingGeneral.vue │ │ │ │ │ │ ├── BlockSettingLines.vue │ │ │ │ │ │ └── BlockSettingOnError.vue │ │ │ │ │ ├── EditAiWorkflow.vue │ │ │ │ │ ├── EditAttributeValue.vue │ │ │ │ │ ├── EditAutocomplete.vue │ │ │ │ │ ├── EditBlockSettings.vue │ │ │ │ │ ├── EditBrowserEvent.vue │ │ │ │ │ ├── EditClipboard.vue │ │ │ │ │ ├── EditCloseTab.vue │ │ │ │ │ ├── EditConditions.vue │ │ │ │ │ ├── EditCookie.vue │ │ │ │ │ ├── EditCreateElement.vue │ │ │ │ │ ├── EditDataMapping.vue │ │ │ │ │ ├── EditDelay.vue │ │ │ │ │ ├── EditDeleteData.vue │ │ │ │ │ ├── EditElementExists.vue │ │ │ │ │ ├── EditExecuteWorkflow.vue │ │ │ │ │ ├── EditExportData.vue │ │ │ │ │ ├── EditForms.vue │ │ │ │ │ ├── EditGetText.vue │ │ │ │ │ ├── EditGoogleDrive.vue │ │ │ │ │ ├── EditGoogleSheets.vue │ │ │ │ │ ├── EditGoogleSheetsDrive.vue │ │ │ │ │ ├── EditHandleDialog.vue │ │ │ │ │ ├── EditHandleDownload.vue │ │ │ │ │ ├── EditIncreaseVariable.vue │ │ │ │ │ ├── EditInsertData.vue │ │ │ │ │ ├── EditInteractionBase.vue │ │ │ │ │ ├── EditJavascriptCode.vue │ │ │ │ │ ├── EditLink.vue │ │ │ │ │ ├── EditLogData.vue │ │ │ │ │ ├── EditLoopData.vue │ │ │ │ │ ├── EditLoopElements.vue │ │ │ │ │ ├── EditNewTab.vue │ │ │ │ │ ├── EditNewWindow.vue │ │ │ │ │ ├── EditNotification.vue │ │ │ │ │ ├── EditParameterPrompt.vue │ │ │ │ │ ├── EditPressKey.vue │ │ │ │ │ ├── EditProxy.vue │ │ │ │ │ ├── EditRegexVariable.vue │ │ │ │ │ ├── EditSaveAssets.vue │ │ │ │ │ ├── EditScrollElement.vue │ │ │ │ │ ├── EditSliceVariable.vue │ │ │ │ │ ├── EditSortData.vue │ │ │ │ │ ├── EditSwitchTab.vue │ │ │ │ │ ├── EditSwitchTo.vue │ │ │ │ │ ├── EditTabURL.vue │ │ │ │ │ ├── EditTakeScreenshot.vue │ │ │ │ │ ├── EditTrigger.vue │ │ │ │ │ ├── EditTriggerEvent.vue │ │ │ │ │ ├── EditUploadFile.vue │ │ │ │ │ ├── EditWaitConnections.vue │ │ │ │ │ ├── EditWebhook.vue │ │ │ │ │ ├── EditWhileLoop.vue │ │ │ │ │ ├── EditWorkflowParameters.vue │ │ │ │ │ ├── EditWorkflowState.vue │ │ │ │ │ ├── InsertWorkflowData.vue │ │ │ │ │ ├── Parameter/ │ │ │ │ │ │ ├── ParameterCheckboxValue.vue │ │ │ │ │ │ ├── ParameterInputOptions.vue │ │ │ │ │ │ ├── ParameterInputValue.vue │ │ │ │ │ │ └── ParameterJsonValue.vue │ │ │ │ │ ├── Trigger/ │ │ │ │ │ │ ├── TriggerContextMenu.vue │ │ │ │ │ │ ├── TriggerCronJob.vue │ │ │ │ │ │ ├── TriggerDate.vue │ │ │ │ │ │ ├── TriggerElementChange.vue │ │ │ │ │ │ ├── TriggerElementOptions.vue │ │ │ │ │ │ ├── TriggerInterval.vue │ │ │ │ │ │ ├── TriggerKeyboardShortcut.vue │ │ │ │ │ │ ├── TriggerSpecificDay.vue │ │ │ │ │ │ └── TriggerVisitWeb.vue │ │ │ │ │ └── TriggerEvent/ │ │ │ │ │ ├── TriggerEventInput.vue │ │ │ │ │ ├── TriggerEventKeyboard.vue │ │ │ │ │ ├── TriggerEventMouse.vue │ │ │ │ │ ├── TriggerEventTouch.vue │ │ │ │ │ └── TriggerEventWheel.vue │ │ │ │ ├── editor/ │ │ │ │ │ ├── EditorAddPackage.vue │ │ │ │ │ ├── EditorCustomEdge.vue │ │ │ │ │ ├── EditorDebugging.vue │ │ │ │ │ ├── EditorLocalActions.vue │ │ │ │ │ ├── EditorLocalCtxMenu.vue │ │ │ │ │ ├── EditorLocalSavedBlocks.vue │ │ │ │ │ ├── EditorLogs.vue │ │ │ │ │ ├── EditorPkgActions.vue │ │ │ │ │ ├── EditorSearchBlocks.vue │ │ │ │ │ └── EditorUsedCredentials.vue │ │ │ │ └── settings/ │ │ │ │ ├── SettingsBlocks.vue │ │ │ │ ├── SettingsEvents.vue │ │ │ │ ├── SettingsGeneral.vue │ │ │ │ ├── SettingsTable.vue │ │ │ │ └── event/ │ │ │ │ ├── EventCodeAction.vue │ │ │ │ └── EventCodeHTTP.vue │ │ │ └── workflows/ │ │ │ ├── WorkflowsFolder.vue │ │ │ ├── WorkflowsHosted.vue │ │ │ ├── WorkflowsLocal.vue │ │ │ ├── WorkflowsLocalCard.vue │ │ │ ├── WorkflowsShared.vue │ │ │ └── WorkflowsUserTeam.vue │ │ ├── popup/ │ │ │ └── home/ │ │ │ ├── HomeSelectBlock.vue │ │ │ ├── HomeStartRecording.vue │ │ │ ├── HomeTeamWorkflows.vue │ │ │ └── HomeWorkflowCard.vue │ │ ├── transitions/ │ │ │ ├── TransitionExpand.vue │ │ │ └── TransitionSlide.vue │ │ └── ui/ │ │ ├── UiAutocomplete.vue │ │ ├── UiButton.vue │ │ ├── UiCard.vue │ │ ├── UiCheckbox.vue │ │ ├── UiDialog.vue │ │ ├── UiExpand.vue │ │ ├── UiFileInput.vue │ │ ├── UiImg.vue │ │ ├── UiInput.vue │ │ ├── UiList.vue │ │ ├── UiListItem.vue │ │ ├── UiModal.vue │ │ ├── UiPaginatedSelect.vue │ │ ├── UiPagination.vue │ │ ├── UiPopover.vue │ │ ├── UiRadio.vue │ │ ├── UiSelect.vue │ │ ├── UiSpinner.vue │ │ ├── UiSwitch.vue │ │ ├── UiTab.vue │ │ ├── UiTabPanel.vue │ │ ├── UiTabPanels.vue │ │ ├── UiTable.vue │ │ ├── UiTabs.vue │ │ └── UiTextarea.vue │ ├── composable/ │ │ ├── blockValidation.js │ │ ├── commandManager.js │ │ ├── componentId.js │ │ ├── dialog.js │ │ ├── editorBlock.js │ │ ├── groupTooltip.js │ │ ├── hasPermissions.js │ │ ├── liveQuery.js │ │ ├── shortcut.js │ │ └── theme.js │ ├── content/ │ │ ├── blocksHandler/ │ │ │ ├── handlerAttributeValue.js │ │ │ ├── handlerClipboard.js │ │ │ ├── handlerConditions.js │ │ │ ├── handlerCreateElement.js │ │ │ ├── handlerElementExists.js │ │ │ ├── handlerElementScroll.js │ │ │ ├── handlerEventClick.js │ │ │ ├── handlerForms.js │ │ │ ├── handlerGetText.js │ │ │ ├── handlerHoverElement.js │ │ │ ├── handlerJavascriptCode.js │ │ │ ├── handlerLink.js │ │ │ ├── handlerLoopData.js │ │ │ ├── handlerLoopElements.js │ │ │ ├── handlerPressKey.js │ │ │ ├── handlerSaveAssets.js │ │ │ ├── handlerSwitchTo.js │ │ │ ├── handlerTakeScreenshot.js │ │ │ ├── handlerTriggerEvent.js │ │ │ ├── handlerUploadFile.js │ │ │ └── handlerVerifySelector.js │ │ ├── blocksHandler.js │ │ ├── commandPalette/ │ │ │ ├── App.vue │ │ │ ├── compsUi.js │ │ │ ├── icons.js │ │ │ ├── index.js │ │ │ └── main.js │ │ ├── elementObserver.js │ │ ├── elementSelector/ │ │ │ ├── App.vue │ │ │ ├── compsUi.js │ │ │ ├── generateElementsSelector.js │ │ │ ├── getSelectorOptions.js │ │ │ ├── icons.js │ │ │ ├── index.js │ │ │ ├── listSelector.js │ │ │ ├── main.js │ │ │ ├── selectorFrameContext.js │ │ │ └── vueI18n.js │ │ ├── handleSelector.js │ │ ├── index.js │ │ ├── injectAppStyles.js │ │ ├── services/ │ │ │ ├── recordWorkflow/ │ │ │ │ ├── App.vue │ │ │ │ ├── addBlock.js │ │ │ │ ├── icons.js │ │ │ │ ├── index.js │ │ │ │ ├── main.js │ │ │ │ └── recordEvents.js │ │ │ ├── shortcutListener.js │ │ │ └── webService.js │ │ ├── showExecutedBlock.js │ │ ├── synchronizedLock.js │ │ └── utils.js │ ├── db/ │ │ ├── logs.js │ │ └── storage.js │ ├── directives/ │ │ ├── VAutofocus.js │ │ ├── VClosePopover.js │ │ └── VTooltip.js │ ├── execute/ │ │ ├── index.html │ │ └── index.js │ ├── lib/ │ │ ├── compsUi.js │ │ ├── cronstrue.js │ │ ├── dayjs.js │ │ ├── findSelector.js │ │ ├── mitt.js │ │ ├── pinia.js │ │ ├── query-selector-shadow-dom/ │ │ │ ├── index.js │ │ │ └── normalize.js │ │ ├── tippy.js │ │ ├── tmpl.js │ │ ├── vRemixicon.js │ │ ├── vue-toastification.js │ │ └── vueI18n.js │ ├── locales/ │ │ ├── en/ │ │ │ ├── blocks.json │ │ │ ├── common.json │ │ │ ├── newtab.json │ │ │ └── popup.json │ │ ├── es/ │ │ │ ├── blocks.json │ │ │ ├── common.json │ │ │ ├── newtab.json │ │ │ └── popup.json │ │ ├── fr/ │ │ │ ├── blocks.json │ │ │ ├── common.json │ │ │ ├── newtab.json │ │ │ └── popup.json │ │ ├── it/ │ │ │ ├── blocks.json │ │ │ ├── common.json │ │ │ ├── newtab.json │ │ │ └── popup.json │ │ ├── pt-BR/ │ │ │ ├── blocks.json │ │ │ ├── common.json │ │ │ ├── newtab.json │ │ │ └── popup.json │ │ ├── tr/ │ │ │ ├── blocks.json │ │ │ ├── common.json │ │ │ ├── newtab.json │ │ │ └── popup.json │ │ ├── uk/ │ │ │ ├── blocks.json │ │ │ ├── common.json │ │ │ ├── newtab.json │ │ │ └── popup.json │ │ ├── vi/ │ │ │ ├── blocks.json │ │ │ ├── common.json │ │ │ ├── newtab.json │ │ │ └── popup.json │ │ ├── zh/ │ │ │ ├── blocks.json │ │ │ ├── common.json │ │ │ ├── newtab.json │ │ │ └── popup.json │ │ └── zh-TW/ │ │ ├── blocks.json │ │ ├── common.json │ │ ├── newtab.json │ │ └── popup.json │ ├── manifest.chrome.dev.json │ ├── manifest.chrome.json │ ├── manifest.firefox.json │ ├── newtab/ │ │ ├── App.vue │ │ ├── index.html │ │ ├── index.js │ │ ├── pages/ │ │ │ ├── Packages.vue │ │ │ ├── Recording.vue │ │ │ ├── ScheduledWorkflow.vue │ │ │ ├── Settings.vue │ │ │ ├── Storage.vue │ │ │ ├── Welcome.vue │ │ │ ├── Workflows.vue │ │ │ ├── logs/ │ │ │ │ └── [id].vue │ │ │ ├── settings/ │ │ │ │ ├── SettingsAbout.vue │ │ │ │ ├── SettingsBackup.vue │ │ │ │ ├── SettingsEditor.vue │ │ │ │ ├── SettingsIndex.vue │ │ │ │ ├── SettingsProfile.vue │ │ │ │ └── SettingsShortcuts.vue │ │ │ ├── storage/ │ │ │ │ └── Tables.vue │ │ │ └── workflows/ │ │ │ ├── Host.vue │ │ │ ├── Shared.vue │ │ │ ├── [id].vue │ │ │ └── index.vue │ │ ├── router.js │ │ └── utils/ │ │ ├── RecordWorkflowUtils.js │ │ ├── blocksValidation.js │ │ ├── elementSelector.js │ │ └── startRecordWorkflow.js │ ├── offscreen/ │ │ ├── index.html │ │ ├── index.js │ │ └── message-listener.js │ ├── params/ │ │ ├── App.vue │ │ ├── index.html │ │ └── index.js │ ├── popup/ │ │ ├── App.vue │ │ ├── index.html │ │ ├── index.js │ │ ├── pages/ │ │ │ └── Home.vue │ │ └── router.js │ ├── sandbox/ │ │ ├── index.html │ │ ├── index.js │ │ └── utils/ │ │ ├── handleBlockExpression.js │ │ ├── handleConditionCode.js │ │ └── handleJavascriptBlock.js │ ├── service/ │ │ ├── browser-api/ │ │ │ ├── BrowserAPIEventHandler.js │ │ │ ├── BrowserAPIService.js │ │ │ └── browser-api-map.js │ │ └── renderer/ │ │ └── RendererWorkflowService.js │ ├── stores/ │ │ ├── folder.js │ │ ├── hostedWorkflow.js │ │ ├── main.js │ │ ├── package.js │ │ ├── sharedWorkflow.js │ │ ├── teamWorkflow.js │ │ ├── user.js │ │ └── workflow.js │ ├── utils/ │ │ ├── FindElement.js │ │ ├── USKeyboardLayout.js │ │ ├── api.js │ │ ├── callbackBridge.js │ │ ├── codeEditorAutocomplete.js │ │ ├── compareBlockValue.js │ │ ├── constants/ │ │ │ └── table.js │ │ ├── convertWorkflowData.js │ │ ├── credentialUtil.js │ │ ├── dataExporter.js │ │ ├── dataMigration.js │ │ ├── decryptFlow.js │ │ ├── editor/ │ │ │ ├── DroppedNode.js │ │ │ ├── EditorCommands.js │ │ │ └── editorAutocomplete.js │ │ ├── firstWorkflows.js │ │ ├── getAIPoweredInfo.js │ │ ├── getBlockMessage.js │ │ ├── getFile.js │ │ ├── getSharedData.js │ │ ├── getTranslateLog.js │ │ ├── googleSheetsApi.js │ │ ├── handleFormElement.js │ │ ├── helper.js │ │ ├── message.js │ │ ├── openGDriveFilePicker.js │ │ ├── recordKeys.js │ │ ├── serialization.js │ │ ├── shared.js │ │ ├── simulateEvent/ │ │ │ ├── index.js │ │ │ └── mouseEvent.js │ │ ├── triggerText.js │ │ ├── workflowData.js │ │ └── workflowTrigger.js │ └── workflowEngine/ │ ├── WorkflowEngine.js │ ├── WorkflowLogger.js │ ├── WorkflowManager.js │ ├── WorkflowState.js │ ├── WorkflowWorker.js │ ├── blocksHandler/ │ │ ├── handlerActiveTab.js │ │ ├── handlerAiWorkflow.js │ │ ├── handlerBlockPackage.js │ │ ├── handlerBlocksGroup.js │ │ ├── handlerBrowserEvent.js │ │ ├── handlerClipboard.js │ │ ├── handlerCloseTab.js │ │ ├── handlerConditions.js │ │ ├── handlerCookie.js │ │ ├── handlerCreateElement.js │ │ ├── handlerDataMapping.js │ │ ├── handlerDelay.js │ │ ├── handlerDeleteData.js │ │ ├── handlerElementExists.js │ │ ├── handlerExecuteWorkflow.js │ │ ├── handlerExportData.js │ │ ├── handlerForwardPage.js │ │ ├── handlerGoBack.js │ │ ├── handlerGoogleDrive.js │ │ ├── handlerGoogleSheets.js │ │ ├── handlerGoogleSheetsDrive.js │ │ ├── handlerHandleDialog.js │ │ ├── handlerHandleDownload.js │ │ ├── handlerHoverElement.js │ │ ├── handlerIncreaseVariable.js │ │ ├── handlerInsertData.js │ │ ├── handlerInteractionBlock.js │ │ ├── handlerJavascriptCode.js │ │ ├── handlerLink.js │ │ ├── handlerLogData.js │ │ ├── handlerLoopBreakpoint.js │ │ ├── handlerLoopData.js │ │ ├── handlerLoopElements.js │ │ ├── handlerNewTab.js │ │ ├── handlerNewWindow.js │ │ ├── handlerNotification.js │ │ ├── handlerParameterPrompt.js │ │ ├── handlerProxy.js │ │ ├── handlerRegexVariable.js │ │ ├── handlerReloadTab.js │ │ ├── handlerRepeatTask.js │ │ ├── handlerSaveAssets.js │ │ ├── handlerSliceVariable.js │ │ ├── handlerSortData.js │ │ ├── handlerSwitchTab.js │ │ ├── handlerSwitchTo.js │ │ ├── handlerTabUrl.js │ │ ├── handlerTakeScreenshot.js │ │ ├── handlerTrigger.js │ │ ├── handlerWaitConnections.js │ │ ├── handlerWebhook.js │ │ ├── handlerWhileLoop.js │ │ └── handlerWorkflowState.js │ ├── blocksHandler.js │ ├── helper.js │ ├── injectContentScript.js │ ├── templating/ │ │ ├── index.js │ │ ├── mustacheReplacer.js │ │ ├── renderString.js │ │ └── templatingFunctions.js │ ├── utils/ │ │ ├── conditionCode.js │ │ ├── javascriptBlockUtil.js │ │ ├── testConditions.js │ │ └── webhookUtil.js │ └── workflowEvent.js ├── tailwind.config.js ├── utils/ │ ├── build-zip.js │ ├── build.js │ ├── clean-build-cache.js │ ├── env.js │ └── webserver.js └── webpack.config.js