n8n-editor-ui 1.44.0 → 1.44.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/.turbo/turbo-build.log +77 -77
  2. package/dist/assets/{AuthView-1FRMwQ3r.js → AuthView-DfyvaM6i.js} +2 -2
  3. package/dist/assets/{AuthView-1FRMwQ3r.js.map → AuthView-DfyvaM6i.js.map} +1 -1
  4. package/dist/assets/{CanvasControls-FCzUEVOQ.js → CanvasControls-DFdnF5qb.js} +2 -2
  5. package/dist/assets/{CanvasControls-FCzUEVOQ.js.map → CanvasControls-DFdnF5qb.js.map} +1 -1
  6. package/dist/assets/{ChangePasswordView-DdWHauKg.js → ChangePasswordView-B4v8DwW9.js} +2 -2
  7. package/dist/assets/{ChangePasswordView-DdWHauKg.js.map → ChangePasswordView-B4v8DwW9.js.map} +1 -1
  8. package/dist/assets/{CollectionParameter-CiMzJaXg.js → CollectionParameter-5V5xJsjs.js} +2 -2
  9. package/dist/assets/CollectionParameter-5V5xJsjs.js.map +1 -0
  10. package/dist/assets/{CredentialsView-Bn6PVi9E.js → CredentialsView-tyjXlz4Z.js} +2 -2
  11. package/dist/assets/{CredentialsView-Bn6PVi9E.js.map → CredentialsView-tyjXlz4Z.js.map} +1 -1
  12. package/dist/assets/{ExecutionsFilter-nFboBzV2.js → ExecutionsFilter-0t_omffh.js} +2 -2
  13. package/dist/assets/{ExecutionsFilter-nFboBzV2.js.map → ExecutionsFilter-0t_omffh.js.map} +1 -1
  14. package/dist/assets/{ExecutionsView-CbkLSsSW.js → ExecutionsView-DzCvkqXG.js} +2 -2
  15. package/dist/assets/{ExecutionsView-CbkLSsSW.js.map → ExecutionsView-DzCvkqXG.js.map} +1 -1
  16. package/dist/assets/{ForgotMyPasswordView-vPMSx22g.js → ForgotMyPasswordView-D_90K80j.js} +2 -2
  17. package/dist/assets/{ForgotMyPasswordView-vPMSx22g.js.map → ForgotMyPasswordView-D_90K80j.js.map} +1 -1
  18. package/dist/assets/{MainHeader-DedFNVir.js → MainHeader-BYoa1H_e.js} +2 -2
  19. package/dist/assets/{MainHeader-DedFNVir.js.map → MainHeader-BYoa1H_e.js.map} +1 -1
  20. package/dist/assets/{MainSidebar-BNq07OnD.js → MainSidebar-BNsdraIv.js} +2 -2
  21. package/dist/assets/{MainSidebar-BNq07OnD.js.map → MainSidebar-BNsdraIv.js.map} +1 -1
  22. package/dist/assets/{NodeCreation-C0AAIhNs.js → NodeCreation-R9yLdNU1.js} +3 -3
  23. package/dist/assets/{NodeCreation-C0AAIhNs.js.map → NodeCreation-R9yLdNU1.js.map} +1 -1
  24. package/dist/assets/{NodeCreator-ESjCn1LZ.js → NodeCreator-CLzfNOJ5.js} +2 -2
  25. package/dist/assets/{NodeCreator-ESjCn1LZ.js.map → NodeCreator-CLzfNOJ5.js.map} +1 -1
  26. package/dist/assets/{NodeList-baCRAzNs.js → NodeList-B4yRfzDq.js} +2 -2
  27. package/dist/assets/{NodeList-baCRAzNs.js.map → NodeList-B4yRfzDq.js.map} +1 -1
  28. package/dist/assets/{NodeView-BucVYztm.js → NodeView-BGtpd_Bb.js} +4 -4
  29. package/dist/assets/{NodeView-BucVYztm.js.map → NodeView-BGtpd_Bb.js.map} +1 -1
  30. package/dist/assets/{NodeView.v2-Oz2vwdfG.js → NodeView.v2-DnTCsiDE.js} +3 -3
  31. package/dist/assets/{NodeView.v2-Oz2vwdfG.js.map → NodeView.v2-DnTCsiDE.js.map} +1 -1
  32. package/dist/assets/{ProjectCardBadge.vue_vue_type_script_setup_true_lang-BRGRmswR.js → ProjectCardBadge.vue_vue_type_script_setup_true_lang-CYFr8_zj.js} +2 -2
  33. package/dist/assets/{ProjectCardBadge.vue_vue_type_script_setup_true_lang-BRGRmswR.js.map → ProjectCardBadge.vue_vue_type_script_setup_true_lang-CYFr8_zj.js.map} +1 -1
  34. package/dist/assets/{ProjectSettings-D3FAGvAm.js → ProjectSettings-kayD4yS7.js} +2 -2
  35. package/dist/assets/{ProjectSettings-D3FAGvAm.js.map → ProjectSettings-kayD4yS7.js.map} +1 -1
  36. package/dist/assets/{ProjectTabs-B_U7Q16t.js → ProjectTabs-1jmisSQb.js} +2 -2
  37. package/dist/assets/{ProjectTabs-B_U7Q16t.js.map → ProjectTabs-1jmisSQb.js.map} +1 -1
  38. package/dist/assets/{PushConnectionTracker-DQVvJ6kh.js → PushConnectionTracker-Dfvjg1ts.js} +2 -2
  39. package/dist/assets/{PushConnectionTracker-DQVvJ6kh.js.map → PushConnectionTracker-Dfvjg1ts.js.map} +1 -1
  40. package/dist/assets/{ResourcesListLayout-CfzMCzp5.js → ResourcesListLayout-BOYOLez8.js} +2 -2
  41. package/dist/assets/{ResourcesListLayout-CfzMCzp5.js.map → ResourcesListLayout-BOYOLez8.js.map} +1 -1
  42. package/dist/assets/{RunDataAi-CwnKkFZ1.js → RunDataAi-CFKU0i2R.js} +2 -2
  43. package/dist/assets/{RunDataAi-CwnKkFZ1.js.map → RunDataAi-CFKU0i2R.js.map} +1 -1
  44. package/dist/assets/{RunDataJson-DTMT_R5P.js → RunDataJson-DHI409Ix.js} +3 -3
  45. package/dist/assets/{RunDataJson-DTMT_R5P.js.map → RunDataJson-DHI409Ix.js.map} +1 -1
  46. package/dist/assets/{RunDataJsonActions-dNlM_YO3.js → RunDataJsonActions-LAsoJBBD.js} +2 -2
  47. package/dist/assets/{RunDataJsonActions-dNlM_YO3.js.map → RunDataJsonActions-LAsoJBBD.js.map} +1 -1
  48. package/dist/assets/{RunDataSchema-D7rSFQ4v.js → RunDataSchema-CgYDgOLN.js} +2 -2
  49. package/dist/assets/{RunDataSchema-D7rSFQ4v.js.map → RunDataSchema-CgYDgOLN.js.map} +1 -1
  50. package/dist/assets/{RunDataSearch-BLxgvPWc.js → RunDataSearch-ZJd98FoH.js} +2 -2
  51. package/dist/assets/{RunDataSearch-BLxgvPWc.js.map → RunDataSearch-ZJd98FoH.js.map} +1 -1
  52. package/dist/assets/{RunDataTable-CTYOMGVf.js → RunDataTable-IMqti3UV.js} +2 -2
  53. package/dist/assets/{RunDataTable-CTYOMGVf.js.map → RunDataTable-IMqti3UV.js.map} +1 -1
  54. package/dist/assets/{SamlOnboarding-B0SKUJ7w.js → SamlOnboarding-6S1cZAZQ.js} +2 -2
  55. package/dist/assets/{SamlOnboarding-B0SKUJ7w.js.map → SamlOnboarding-6S1cZAZQ.js.map} +1 -1
  56. package/dist/assets/{SettingsApiView-04CpGWS3.js → SettingsApiView-DzACRdqO.js} +2 -2
  57. package/dist/assets/{SettingsApiView-04CpGWS3.js.map → SettingsApiView-DzACRdqO.js.map} +1 -1
  58. package/dist/assets/{SettingsCommunityNodesView-CNryAAn3.js → SettingsCommunityNodesView-DI8tm65K.js} +2 -2
  59. package/dist/assets/{SettingsCommunityNodesView-CNryAAn3.js.map → SettingsCommunityNodesView-DI8tm65K.js.map} +1 -1
  60. package/dist/assets/{SettingsExternalSecrets-B39P4p2-.js → SettingsExternalSecrets-DFb1WNlI.js} +2 -2
  61. package/dist/assets/{SettingsExternalSecrets-B39P4p2-.js.map → SettingsExternalSecrets-DFb1WNlI.js.map} +1 -1
  62. package/dist/assets/{SettingsFakeDoorView-BOQAY92v.js → SettingsFakeDoorView-CDAZibIu.js} +2 -2
  63. package/dist/assets/{SettingsFakeDoorView-BOQAY92v.js.map → SettingsFakeDoorView-CDAZibIu.js.map} +1 -1
  64. package/dist/assets/{SettingsLdapView-VTF-EB0a.js → SettingsLdapView-yXjpScE1.js} +2 -2
  65. package/dist/assets/{SettingsLdapView-VTF-EB0a.js.map → SettingsLdapView-yXjpScE1.js.map} +1 -1
  66. package/dist/assets/{SettingsLogStreamingView-JsodKkoJ.js → SettingsLogStreamingView-DQTUJczt.js} +2 -2
  67. package/dist/assets/{SettingsLogStreamingView-JsodKkoJ.js.map → SettingsLogStreamingView-DQTUJczt.js.map} +1 -1
  68. package/dist/assets/{SettingsPersonalView-DxQ-hHrk.js → SettingsPersonalView-CYfSdpu7.js} +2 -2
  69. package/dist/assets/{SettingsPersonalView-DxQ-hHrk.js.map → SettingsPersonalView-CYfSdpu7.js.map} +1 -1
  70. package/dist/assets/{SettingsSourceControl-aqaWVYCl.js → SettingsSourceControl-SrxQOR5H.js} +2 -2
  71. package/dist/assets/{SettingsSourceControl-aqaWVYCl.js.map → SettingsSourceControl-SrxQOR5H.js.map} +1 -1
  72. package/dist/assets/{SettingsSso-Chwn0xrx.js → SettingsSso-DrB162SI.js} +2 -2
  73. package/dist/assets/{SettingsSso-Chwn0xrx.js.map → SettingsSso-DrB162SI.js.map} +1 -1
  74. package/dist/assets/{SettingsUsageAndPlan-CIj5SQKn.js → SettingsUsageAndPlan-vOGNFMVq.js} +2 -2
  75. package/dist/assets/{SettingsUsageAndPlan-CIj5SQKn.js.map → SettingsUsageAndPlan-vOGNFMVq.js.map} +1 -1
  76. package/dist/assets/{SettingsUsersView-CY4kSRaG.js → SettingsUsersView-Tx1-g18F.js} +2 -2
  77. package/dist/assets/{SettingsUsersView-CY4kSRaG.js.map → SettingsUsersView-Tx1-g18F.js.map} +1 -1
  78. package/dist/assets/{SettingsView-jgK3_oOB.js → SettingsView-BOZ2SBsQ.js} +2 -2
  79. package/dist/assets/{SettingsView-jgK3_oOB.js.map → SettingsView-BOZ2SBsQ.js.map} +1 -1
  80. package/dist/assets/{SetupView-O6xv77jO.js → SetupView-DY7tVzgF.js} +2 -2
  81. package/dist/assets/{SetupView-O6xv77jO.js.map → SetupView-DY7tVzgF.js.map} +1 -1
  82. package/dist/assets/{SetupWorkflowCredentialsButton-oGzzXD7H.js → SetupWorkflowCredentialsButton-B9Acgowu.js} +2 -2
  83. package/dist/assets/{SetupWorkflowCredentialsButton-oGzzXD7H.js.map → SetupWorkflowCredentialsButton-B9Acgowu.js.map} +1 -1
  84. package/dist/assets/{SetupWorkflowFromTemplateView-BDUp9JWx.js → SetupWorkflowFromTemplateView-C2E8A8g4.js} +2 -2
  85. package/dist/assets/{SetupWorkflowFromTemplateView-BDUp9JWx.js.map → SetupWorkflowFromTemplateView-C2E8A8g4.js.map} +1 -1
  86. package/dist/assets/{SigninView-BLgTm7p4.js → SigninView-DlT1Bv9l.js} +2 -2
  87. package/dist/assets/{SigninView-BLgTm7p4.js.map → SigninView-DlT1Bv9l.js.map} +1 -1
  88. package/dist/assets/{SignoutView-DFSKFmE2.js → SignoutView-DisgJoQS.js} +2 -2
  89. package/dist/assets/{SignoutView-DFSKFmE2.js.map → SignoutView-DisgJoQS.js.map} +1 -1
  90. package/dist/assets/{SignupView-DSmDdbRA.js → SignupView-CQZSGNCi.js} +2 -2
  91. package/dist/assets/{SignupView-DSmDdbRA.js.map → SignupView-CQZSGNCi.js.map} +1 -1
  92. package/dist/assets/{TemplateDetails-DW6dTHAk.js → TemplateDetails-DZzMxROe.js} +2 -2
  93. package/dist/assets/{TemplateDetails-DW6dTHAk.js.map → TemplateDetails-DZzMxROe.js.map} +1 -1
  94. package/dist/assets/{TemplateList-DHLgDv5f.js → TemplateList-DS0lnbxA.js} +2 -2
  95. package/dist/assets/{TemplateList-DHLgDv5f.js.map → TemplateList-DS0lnbxA.js.map} +1 -1
  96. package/dist/assets/{TemplatesCollectionView-Bix3khnw.js → TemplatesCollectionView-BMck3jn9.js} +2 -2
  97. package/dist/assets/{TemplatesCollectionView-Bix3khnw.js.map → TemplatesCollectionView-BMck3jn9.js.map} +1 -1
  98. package/dist/assets/{TemplatesInfoCarousel-B3u16wII.js → TemplatesInfoCarousel-BYIB7MKZ.js} +2 -2
  99. package/dist/assets/{TemplatesInfoCarousel-B3u16wII.js.map → TemplatesInfoCarousel-BYIB7MKZ.js.map} +1 -1
  100. package/dist/assets/{TemplatesSearchView-CvtrqPXg.js → TemplatesSearchView-aVpZ2G9F.js} +2 -2
  101. package/dist/assets/{TemplatesSearchView-CvtrqPXg.js.map → TemplatesSearchView-aVpZ2G9F.js.map} +1 -1
  102. package/dist/assets/{TemplatesView-DuT3R1EI.js → TemplatesView-CuyRlzAM.js} +2 -2
  103. package/dist/assets/{TemplatesView-DuT3R1EI.js.map → TemplatesView-CuyRlzAM.js.map} +1 -1
  104. package/dist/assets/{TemplatesWorkflowView-C_-zPrQW.js → TemplatesWorkflowView-DAa2SCYE.js} +2 -2
  105. package/dist/assets/{TemplatesWorkflowView-C_-zPrQW.js.map → TemplatesWorkflowView-DAa2SCYE.js.map} +1 -1
  106. package/dist/assets/{VariablesView-CMrDg4Fx.js → VariablesView-57BdyEmO.js} +2 -2
  107. package/dist/assets/{VariablesView-CMrDg4Fx.js.map → VariablesView-57BdyEmO.js.map} +1 -1
  108. package/dist/assets/{WorkerView-BcfdfxOO.js → WorkerView-BLv_CYeM.js} +2 -2
  109. package/dist/assets/{WorkerView-BcfdfxOO.js.map → WorkerView-BLv_CYeM.js.map} +1 -1
  110. package/dist/assets/{WorkflowActivator-BiqeeeBc.js → WorkflowActivator-WjfZFpnK.js} +2 -2
  111. package/dist/assets/{WorkflowActivator-BiqeeeBc.js.map → WorkflowActivator-WjfZFpnK.js.map} +1 -1
  112. package/dist/assets/{WorkflowExecutionsInfoAccordion-CITQoihQ.js → WorkflowExecutionsInfoAccordion-Dv9rbNek.js} +2 -2
  113. package/dist/assets/{WorkflowExecutionsInfoAccordion-CITQoihQ.js.map → WorkflowExecutionsInfoAccordion-Dv9rbNek.js.map} +1 -1
  114. package/dist/assets/{WorkflowExecutionsLandingPage-CnHdLYgR.js → WorkflowExecutionsLandingPage-CsbJPayv.js} +2 -2
  115. package/dist/assets/{WorkflowExecutionsLandingPage-CnHdLYgR.js.map → WorkflowExecutionsLandingPage-CsbJPayv.js.map} +1 -1
  116. package/dist/assets/{WorkflowExecutionsPreview-By0_k6NX.js → WorkflowExecutionsPreview-xxP83pWI.js} +2 -2
  117. package/dist/assets/{WorkflowExecutionsPreview-By0_k6NX.js.map → WorkflowExecutionsPreview-xxP83pWI.js.map} +1 -1
  118. package/dist/assets/WorkflowExecutionsView-c7NCTwks.js +2 -0
  119. package/dist/assets/WorkflowExecutionsView-c7NCTwks.js.map +1 -0
  120. package/dist/assets/{WorkflowHistory-C5ALmvoB.js → WorkflowHistory-DI6sDGlZ.js} +2 -2
  121. package/dist/assets/{WorkflowHistory-C5ALmvoB.js.map → WorkflowHistory-DI6sDGlZ.js.map} +1 -1
  122. package/dist/assets/{WorkflowOnboardingView-hQxsQlm1.js → WorkflowOnboardingView-DVqrTjM4.js} +2 -2
  123. package/dist/assets/{WorkflowOnboardingView-hQxsQlm1.js.map → WorkflowOnboardingView-DVqrTjM4.js.map} +1 -1
  124. package/dist/assets/{WorkflowsView-TF6zcpi6.js → WorkflowsView-DpB66gWH.js} +2 -2
  125. package/dist/assets/{WorkflowsView-TF6zcpi6.js.map → WorkflowsView-DpB66gWH.js.map} +1 -1
  126. package/dist/assets/{cloud-CZc2nauc.js → cloud-bM1gshor.js} +2 -2
  127. package/dist/assets/{cloud-CZc2nauc.js.map → cloud-bM1gshor.js.map} +1 -1
  128. package/dist/assets/{collaboration.store-BkSXOsR4.js → collaboration.store-Ct7EpGqG.js} +2 -2
  129. package/dist/assets/{collaboration.store-BkSXOsR4.js.map → collaboration.store-Ct7EpGqG.js.map} +1 -1
  130. package/dist/assets/{index-CY2ZfL2U.js → index-BQ6Z7VRj.js} +4 -4
  131. package/dist/assets/{index-CY2ZfL2U.js.map → index-BQ6Z7VRj.js.map} +1 -1
  132. package/dist/assets/{nodeCreator.store-CmYeJsEL.js → nodeCreator.store-DAcGJEHy.js} +2 -2
  133. package/dist/assets/{nodeCreator.store-CmYeJsEL.js.map → nodeCreator.store-DAcGJEHy.js.map} +1 -1
  134. package/dist/assets/{templateActions-DvpFnju7.js → templateActions-F64sfZ3n.js} +2 -2
  135. package/dist/assets/{templateActions-DvpFnju7.js.map → templateActions-F64sfZ3n.js.map} +1 -1
  136. package/dist/assets/{useExecutionDebugging-6-sjTvWS.js → useExecutionDebugging-DuMp5DdQ.js} +2 -2
  137. package/dist/assets/{useExecutionDebugging-6-sjTvWS.js.map → useExecutionDebugging-DuMp5DdQ.js.map} +1 -1
  138. package/dist/assets/{useExecutionHelpers-BZpwMJs_.js → useExecutionHelpers-Dt-UJW97.js} +2 -2
  139. package/dist/assets/{useExecutionHelpers-BZpwMJs_.js.map → useExecutionHelpers-Dt-UJW97.js.map} +1 -1
  140. package/dist/assets/{usePushConnection-DI_JaC-X.js → usePushConnection-Kek6sJ0j.js} +2 -2
  141. package/dist/assets/{usePushConnection-DI_JaC-X.js.map → usePushConnection-Kek6sJ0j.js.map} +1 -1
  142. package/dist/assets/{useViewStacks-D-hnVv3F.js → useViewStacks-CSn_e3gA.js} +2 -2
  143. package/dist/assets/{useViewStacks-D-hnVv3F.js.map → useViewStacks-CSn_e3gA.js.map} +1 -1
  144. package/dist/assets/{useWorkflowActivate-lrYalAwm.js → useWorkflowActivate-Bl43vPgP.js} +2 -2
  145. package/dist/assets/{useWorkflowActivate-lrYalAwm.js.map → useWorkflowActivate-Bl43vPgP.js.map} +1 -1
  146. package/dist/index.html +1 -1
  147. package/package.json +1 -1
  148. package/dist/assets/CollectionParameter-CiMzJaXg.js.map +0 -1
  149. package/dist/assets/WorkflowExecutionsView-fiAM1R-f.js +0 -2
  150. package/dist/assets/WorkflowExecutionsView-fiAM1R-f.js.map +0 -1
@@ -1,2 +1,2 @@
1
- import{a4 as x,$ as ye,c7 as ue,dc as w,dd as L,de as H,df as M,dg as U,dh as B,di as V,dj as F,dk as K,dl as W,dm as $,bA as Y,cp as G,an as R,dn as ge,dp as j,co as T,ah as q,am as X,dq as z,dr as Q,ch as _e,ds as me,dt as fe,du as Z,dv as Ne,dw as J,dx as be,dy as ee,dz as Ae,dA as Ie,dB as ve,dC as Oe,dD as Ce,dE as te,aG as Re,dF as De,dG as Pe,dH as Se,dI as oe,dJ as re,dK as he,dL as ke,dM as ae,dN as xe,dO as we,dP as se,dQ as ie,dR as Ye,cq as Ee,w as I,dS as Ge,dT as Le,dU as He}from"./index-CY2ZfL2U.js";import{d as Te}from"./pinia-Dh4cxKZ0.js";import{u as Me,f as ne,s as ce,t as k,a as Ue,g as Be,b as Ve}from"./nodeCreator.store-CmYeJsEL.js";import{N as y}from"./n8n-DT_bOwuZ.js";import{r as D,e as f,n as Fe}from"./vendor-CUQSof8H.js";import{v as le}from"./uuid-SoommWqA.js";function pe(a,r){return a.filter(t=>{var l,p,d;return!t.hidden&&((d=(p=(l=t.codex)==null?void 0:l.subcategories)==null?void 0:p[Ee])==null?void 0:d.includes(r))}).map(t=>({key:t.name,type:"node",properties:{group:[],name:t.name,displayName:t.displayName,title:t.displayName,description:t.description,icon:t.icon,iconData:t.name.toLowerCase().includes("openai")?{type:"file",icon:"openai",fileBuffer:"/static/open-ai.svg"}:void 0}})).sort((t,l)=>t.properties.displayName.localeCompare(l.properties.displayName))}function Je(a){const r=I(),t=x(),l=ye(),p=pe(t.allLatestNodeTypes,Ge),d=pe(t.allLatestNodeTypes,Le);return{value:ue,title:r.baseText("nodeCreator.aiPanel.aiNodes"),subtitle:r.baseText("nodeCreator.aiPanel.selectAiNode"),info:r.baseText("nodeCreator.aiPanel.infoBox",{interpolate:{link:l.getWebsiteCategoryURL("ai")}}),items:[...p,...d,{key:w,type:"view",properties:{title:r.baseText("nodeCreator.aiPanel.aiOtherNodes"),icon:"robot",description:r.baseText("nodeCreator.aiPanel.aiOtherNodesDescription")}}]}}function Ke(a){const r=I();function t(l){return{connectionType:l,iconProps:{color:`var(--node-type-${l}-color)`},panelClass:`nodes-list-panel-${l}`}}return{value:w,title:r.baseText("nodeCreator.aiPanel.aiOtherNodes"),subtitle:r.baseText("nodeCreator.aiPanel.selectAiNode"),items:[{key:L,type:"subcategory",properties:{title:L,icon:"file-import",...t(y.AiDocument)}},{key:H,type:"subcategory",properties:{title:H,icon:"language",...t(y.AiLanguageModel)}},{key:M,type:"subcategory",properties:{title:M,icon:"brain",...t(y.AiMemory)}},{key:U,type:"subcategory",properties:{title:U,icon:"list",...t(y.AiOutputParser)}},{key:B,type:"subcategory",properties:{title:B,icon:"search",...t(y.AiRetriever)}},{key:V,type:"subcategory",properties:{title:V,icon:"grip-lines-vertical",...t(y.AiTextSplitter)}},{key:F,type:"subcategory",properties:{title:F,icon:"tools",...t(y.AiTool)}},{key:K,type:"subcategory",properties:{title:K,icon:"vector-square",...t(y.AiEmbedding)}},{key:W,type:"subcategory",properties:{title:W,icon:"project-diagram",...t(y.AiVectorStore)}},{key:$,type:"subcategory",properties:{title:$,icon:"code"}}]}}function et(){const a=I();return{value:Y,title:a.baseText("nodeCreator.triggerHelperPanel.selectATrigger"),subtitle:a.baseText("nodeCreator.triggerHelperPanel.selectATriggerDescription"),items:[{key:G,type:"subcategory",properties:{forceIncludeNodes:[R,ge],title:"App Trigger Nodes",icon:"satellite-dish"}},{key:j,type:"node",category:[T],properties:{group:[],name:j,displayName:a.baseText("nodeCreator.triggerHelperPanel.scheduleTriggerDisplayName"),description:a.baseText("nodeCreator.triggerHelperPanel.scheduleTriggerDescription"),icon:"fa:clock"}},{key:R,type:"node",category:[T],properties:{group:[],name:R,displayName:a.baseText("nodeCreator.triggerHelperPanel.webhookTriggerDisplayName"),description:a.baseText("nodeCreator.triggerHelperPanel.webhookTriggerDescription"),iconData:{type:"file",icon:"webhook",fileBuffer:"/static/webhook-icon.svg"}}},{key:q,type:"node",category:[T],properties:{group:[],name:q,displayName:a.baseText("nodeCreator.triggerHelperPanel.formTriggerDisplayName"),description:a.baseText("nodeCreator.triggerHelperPanel.formTriggerDescription"),iconData:{type:"file",icon:"form",fileBuffer:"/static/form-grey.svg"}}},{key:X,type:"node",category:[T],properties:{group:[],name:X,displayName:a.baseText("nodeCreator.triggerHelperPanel.manualTriggerDisplayName"),description:a.baseText("nodeCreator.triggerHelperPanel.manualTriggerDescription"),icon:"fa:mouse-pointer"}},{key:z,type:"node",category:[T],properties:{group:[],name:z,displayName:a.baseText("nodeCreator.triggerHelperPanel.workflowTriggerDisplayName"),description:a.baseText("nodeCreator.triggerHelperPanel.workflowTriggerDescription"),icon:"fa:sign-out-alt"}},{type:"subcategory",key:Q,category:T,properties:{title:Q,icon:"folder-open"}}]}}function tt(a){const r=I(),t={value:_e,title:r.baseText("nodeCreator.triggerHelperPanel.whatHappensNext"),items:[{key:G,type:"subcategory",properties:{title:"App Regular Nodes",icon:"globe",forceIncludeNodes:[me,fe]}},{type:"subcategory",key:Z,category:T,properties:{title:Z,icon:"pen",sections:[{key:"popular",title:r.baseText("nodeCreator.sectionNames.popular"),items:[Ne,J,be]},{key:"addOrRemove",title:r.baseText("nodeCreator.sectionNames.transform.addOrRemove"),items:[ee,Ae,Ie,ve]},{key:"combine",title:r.baseText("nodeCreator.sectionNames.transform.combine"),items:[Oe,Ce,te]},{key:"convert",title:r.baseText("nodeCreator.sectionNames.transform.convert"),items:[Re,De,Pe,Se,oe,re,he,ke]}]}},{type:"subcategory",key:ae,category:T,properties:{title:ae,icon:"code-branch",sections:[{key:"popular",title:r.baseText("nodeCreator.sectionNames.popular"),items:[ee,xe,we,te]}]}},{type:"subcategory",key:se,category:T,properties:{title:se,icon:"file-alt",sections:[{key:"popular",title:r.baseText("nodeCreator.sectionNames.popular"),items:[re,oe]}]}},{type:"subcategory",key:ie,category:T,properties:{title:ie,icon:"toolbox",sections:[{key:"popular",title:r.baseText("nodeCreator.sectionNames.popular"),items:[Ye,R,J]}]}}]};return(a??[]).some(p=>{var d,g;return(g=(d=p.codex)==null?void 0:d.categories)==null?void 0:g.includes(Ee)})&&t.items.push({key:ue,type:"view",properties:{title:r.baseText("nodeCreator.aiPanel.langchainAiNodes"),icon:"robot",description:r.baseText("nodeCreator.aiPanel.nodesForAi"),tag:r.baseText("nodeCreator.aiPanel.newTag")}}),t.items.push({key:Y,type:"view",properties:{title:r.baseText("nodeCreator.triggerHelperPanel.addAnotherTrigger"),icon:"bolt",description:r.baseText("nodeCreator.triggerHelperPanel.addAnotherTriggerDescription")}}),t}const We="data-keyboard-nav-id",de=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Enter","Escape","Tab"],$e=Te("nodeCreatorKeyboardNavigation",()=>{const a=D([]),r=D(null),t=D({});function l(e){return e==null?void 0:e.getAttribute("data-keyboard-nav-type")}function p(e){return(e==null?void 0:e.getAttribute(We))||void 0}async function d(){return await new Promise(e=>{_(),setTimeout(()=>{a.value=Array.from(document.querySelectorAll("[data-keyboard-nav-type]")).map(o=>new WeakRef(o)),e()},0)})}function g(e,o){Object.values(t.value).filter(n=>n.keyboardKeys.includes(e)).forEach(n=>{if(!r.value)return;(n.condition===void 0||n.condition(l(o)||"",r.value))&&r.value&&n.handler(r.value,e)})}async function v(e){var b,u,A;const o=e.key;if(!de.includes(o))return;e.preventDefault(),e.stopPropagation(),await d();const s=a.value.findIndex(E=>p(E==null?void 0:E.deref())===r.value),i=(b=a.value[s])==null?void 0:b.deref(),n=o==="ArrowDown",c=o==="ArrowUp";if(i){if(n){const E=s<a.value.length-1?s+1:0;N((u=a.value[E])==null?void 0:u.deref())}if(c){const E=s>0?s-1:a.value.length-1;N((A=a.value[E])==null?void 0:A.deref())}g(o,i)}}function O(e){r.value=e}function N(e){const o=p(e);o&&(O(o),e!=null&&e.scrollIntoView&&(e==null||e.scrollIntoView({block:"center"})))}async function P(e){var o;await d(),N((o=a.value[e])==null?void 0:o.deref())}function m(){document.addEventListener("keydown",v,{capture:!0})}function C(){_(),document.removeEventListener("keydown",v,{capture:!0})}function S(e,o){o.keyboardKeys.forEach(s=>{if(de.includes(s))t.value={...t.value,[e]:o};else throw new Error(`Key ${s} is not supported`)})}function _(){a.value=[]}function h(){return a.value.findIndex(e=>p(e==null?void 0:e.deref())===r.value)}return{activeItemId:r,attachKeydownEvent:m,refreshSelectableItems:d,detachKeydownEvent:C,registerKeyHook:S,getActiveItemIndex:h,setActiveItemId:O,setActiveItemIndex:P}}),ot=Te("nodeCreatorViewStacks",()=>{const a=Me(),{getActiveItemIndex:r}=$e(),t=D([]),l=f(()=>{const e=t.value[t.value.length-1];if(!(e!=null&&e.baselineItems))return e.items?m(e.items):[];if(e.search&&g.value){const o=g.value.length>0?g.value:ne(e.baselineItems??[]);return m(ce(e.search||"",o))}return m(e.baselineItems)}),p=f(()=>{const e=t.value[t.value.length-1];if(!e)return{};const o=ne(e.baselineItems??[]);return{...e,items:l.value,hasSearch:o.length>8||(e==null?void 0:e.hasSearch)}}),d=f(()=>p.value.mode||Y),g=f(()=>{const e=t.value[t.value.length-1];return e!=null&&e.searchItems?e.searchItems.map(o=>k(o,e.subcategory)):[]}),v=f(()=>{const e=t.value[t.value.length-1];if(!(e!=null&&e.search))return[];const o=a.mergedNodes.map(i=>k(i));return m(ce(e.search||"",o)).filter(i=>!l.value.find(n=>n.key===i.key))}),O=f(()=>Ue(a.mergedNodes));async function N(e,o,s){var b;const i=I();let n,c;o===!0?(n=x().visibleNodeTypesByInputConnectionTypeNames,c={properties:{title:i.baseText("nodeCreator.aiPanel.aiNodes"),icon:"robot"}}):(n=x().visibleNodeTypesByOutputConnectionTypeNames,c=Ke().items.find(u=>u.properties.connectionType===e)),await Fe(),C({title:c==null?void 0:c.properties.title,rootView:w,mode:"nodes",items:a.allNodeCreatorNodes,nodeIcon:{iconType:"icon",icon:c==null?void 0:c.properties.icon,color:(b=c==null?void 0:c.properties.iconProps)==null?void 0:b.color},panelClass:c==null?void 0:c.properties.panelClass,baseFilter:u=>{var E;if(u.key===He)return!1;const A=n[e].includes(u.key);return A&&((E=s==null?void 0:s.nodes)!=null&&E.length)?s.nodes.includes(u.key):A},itemsMapper(u){return{...u,subcategory:e}},preventBack:!0})}function P(){const e=t.value[t.value.length-1];if(!e||!p.value.uuid)return;let o=(e==null?void 0:e.items)??[];if(!(e!=null&&e.items)){const s=(e==null?void 0:e.subcategory)??G,i=O.value[s],n=e.sections;n?o=Be(i,n):o=i}if((e.forceIncludeNodes??[]).length>0){const s=a.mergedNodes.filter(i=>{var n;return(n=e.forceIncludeNodes)==null?void 0:n.includes(i.name)}).map(i=>k(i,e.subcategory));o.push(...s)}e.baseFilter&&(o=o.filter(e.baseFilter)),e.itemsMapper&&(o=o.map(e.itemsMapper)),e.items||(o=Ve(o)),_({baselineItems:o})}function m(e){return e.map(o=>({...o,uuid:`${o.key}-${le()}`}))}function C(e){p.value.uuid&&_({activeIndex:r()});const o=le();t.value.push({...e,uuid:o,transitionDirection:"in",activeIndex:0}),P()}function S(){p.value.uuid&&(t.value.pop(),_({transitionDirection:"out"}))}function _(e){const o=t.value[t.value.length-1],s=t.value.findIndex(i=>i.uuid===o.uuid);o&&Object.keys(e).forEach(i=>{const n=i;t.value[s]={...t.value[s],[i]:e[n]}})}function h(){t.value=[]}return{viewStacks:t,activeViewStack:p,activeViewStackMode:d,globalSearchItemsDiff:v,gotoCompatibleConnectionView:N,resetViewStacks:h,updateCurrentViewStack:_,pushViewStack:C,popViewStack:S}});export{Je as A,tt as R,et as T,$e as a,Ke as b,ot as u};
2
- //# sourceMappingURL=useViewStacks-D-hnVv3F.js.map
1
+ import{a4 as x,$ as ye,c7 as ue,dc as w,dd as L,de as H,df as M,dg as U,dh as B,di as V,dj as F,dk as K,dl as W,dm as $,bA as Y,cp as G,an as R,dn as ge,dp as j,co as T,ah as q,am as X,dq as z,dr as Q,ch as _e,ds as me,dt as fe,du as Z,dv as Ne,dw as J,dx as be,dy as ee,dz as Ae,dA as Ie,dB as ve,dC as Oe,dD as Ce,dE as te,aG as Re,dF as De,dG as Pe,dH as Se,dI as oe,dJ as re,dK as he,dL as ke,dM as ae,dN as xe,dO as we,dP as se,dQ as ie,dR as Ye,cq as Ee,w as I,dS as Ge,dT as Le,dU as He}from"./index-BQ6Z7VRj.js";import{d as Te}from"./pinia-Dh4cxKZ0.js";import{u as Me,f as ne,s as ce,t as k,a as Ue,g as Be,b as Ve}from"./nodeCreator.store-DAcGJEHy.js";import{N as y}from"./n8n-DT_bOwuZ.js";import{r as D,e as f,n as Fe}from"./vendor-CUQSof8H.js";import{v as le}from"./uuid-SoommWqA.js";function pe(a,r){return a.filter(t=>{var l,p,d;return!t.hidden&&((d=(p=(l=t.codex)==null?void 0:l.subcategories)==null?void 0:p[Ee])==null?void 0:d.includes(r))}).map(t=>({key:t.name,type:"node",properties:{group:[],name:t.name,displayName:t.displayName,title:t.displayName,description:t.description,icon:t.icon,iconData:t.name.toLowerCase().includes("openai")?{type:"file",icon:"openai",fileBuffer:"/static/open-ai.svg"}:void 0}})).sort((t,l)=>t.properties.displayName.localeCompare(l.properties.displayName))}function Je(a){const r=I(),t=x(),l=ye(),p=pe(t.allLatestNodeTypes,Ge),d=pe(t.allLatestNodeTypes,Le);return{value:ue,title:r.baseText("nodeCreator.aiPanel.aiNodes"),subtitle:r.baseText("nodeCreator.aiPanel.selectAiNode"),info:r.baseText("nodeCreator.aiPanel.infoBox",{interpolate:{link:l.getWebsiteCategoryURL("ai")}}),items:[...p,...d,{key:w,type:"view",properties:{title:r.baseText("nodeCreator.aiPanel.aiOtherNodes"),icon:"robot",description:r.baseText("nodeCreator.aiPanel.aiOtherNodesDescription")}}]}}function Ke(a){const r=I();function t(l){return{connectionType:l,iconProps:{color:`var(--node-type-${l}-color)`},panelClass:`nodes-list-panel-${l}`}}return{value:w,title:r.baseText("nodeCreator.aiPanel.aiOtherNodes"),subtitle:r.baseText("nodeCreator.aiPanel.selectAiNode"),items:[{key:L,type:"subcategory",properties:{title:L,icon:"file-import",...t(y.AiDocument)}},{key:H,type:"subcategory",properties:{title:H,icon:"language",...t(y.AiLanguageModel)}},{key:M,type:"subcategory",properties:{title:M,icon:"brain",...t(y.AiMemory)}},{key:U,type:"subcategory",properties:{title:U,icon:"list",...t(y.AiOutputParser)}},{key:B,type:"subcategory",properties:{title:B,icon:"search",...t(y.AiRetriever)}},{key:V,type:"subcategory",properties:{title:V,icon:"grip-lines-vertical",...t(y.AiTextSplitter)}},{key:F,type:"subcategory",properties:{title:F,icon:"tools",...t(y.AiTool)}},{key:K,type:"subcategory",properties:{title:K,icon:"vector-square",...t(y.AiEmbedding)}},{key:W,type:"subcategory",properties:{title:W,icon:"project-diagram",...t(y.AiVectorStore)}},{key:$,type:"subcategory",properties:{title:$,icon:"code"}}]}}function et(){const a=I();return{value:Y,title:a.baseText("nodeCreator.triggerHelperPanel.selectATrigger"),subtitle:a.baseText("nodeCreator.triggerHelperPanel.selectATriggerDescription"),items:[{key:G,type:"subcategory",properties:{forceIncludeNodes:[R,ge],title:"App Trigger Nodes",icon:"satellite-dish"}},{key:j,type:"node",category:[T],properties:{group:[],name:j,displayName:a.baseText("nodeCreator.triggerHelperPanel.scheduleTriggerDisplayName"),description:a.baseText("nodeCreator.triggerHelperPanel.scheduleTriggerDescription"),icon:"fa:clock"}},{key:R,type:"node",category:[T],properties:{group:[],name:R,displayName:a.baseText("nodeCreator.triggerHelperPanel.webhookTriggerDisplayName"),description:a.baseText("nodeCreator.triggerHelperPanel.webhookTriggerDescription"),iconData:{type:"file",icon:"webhook",fileBuffer:"/static/webhook-icon.svg"}}},{key:q,type:"node",category:[T],properties:{group:[],name:q,displayName:a.baseText("nodeCreator.triggerHelperPanel.formTriggerDisplayName"),description:a.baseText("nodeCreator.triggerHelperPanel.formTriggerDescription"),iconData:{type:"file",icon:"form",fileBuffer:"/static/form-grey.svg"}}},{key:X,type:"node",category:[T],properties:{group:[],name:X,displayName:a.baseText("nodeCreator.triggerHelperPanel.manualTriggerDisplayName"),description:a.baseText("nodeCreator.triggerHelperPanel.manualTriggerDescription"),icon:"fa:mouse-pointer"}},{key:z,type:"node",category:[T],properties:{group:[],name:z,displayName:a.baseText("nodeCreator.triggerHelperPanel.workflowTriggerDisplayName"),description:a.baseText("nodeCreator.triggerHelperPanel.workflowTriggerDescription"),icon:"fa:sign-out-alt"}},{type:"subcategory",key:Q,category:T,properties:{title:Q,icon:"folder-open"}}]}}function tt(a){const r=I(),t={value:_e,title:r.baseText("nodeCreator.triggerHelperPanel.whatHappensNext"),items:[{key:G,type:"subcategory",properties:{title:"App Regular Nodes",icon:"globe",forceIncludeNodes:[me,fe]}},{type:"subcategory",key:Z,category:T,properties:{title:Z,icon:"pen",sections:[{key:"popular",title:r.baseText("nodeCreator.sectionNames.popular"),items:[Ne,J,be]},{key:"addOrRemove",title:r.baseText("nodeCreator.sectionNames.transform.addOrRemove"),items:[ee,Ae,Ie,ve]},{key:"combine",title:r.baseText("nodeCreator.sectionNames.transform.combine"),items:[Oe,Ce,te]},{key:"convert",title:r.baseText("nodeCreator.sectionNames.transform.convert"),items:[Re,De,Pe,Se,oe,re,he,ke]}]}},{type:"subcategory",key:ae,category:T,properties:{title:ae,icon:"code-branch",sections:[{key:"popular",title:r.baseText("nodeCreator.sectionNames.popular"),items:[ee,xe,we,te]}]}},{type:"subcategory",key:se,category:T,properties:{title:se,icon:"file-alt",sections:[{key:"popular",title:r.baseText("nodeCreator.sectionNames.popular"),items:[re,oe]}]}},{type:"subcategory",key:ie,category:T,properties:{title:ie,icon:"toolbox",sections:[{key:"popular",title:r.baseText("nodeCreator.sectionNames.popular"),items:[Ye,R,J]}]}}]};return(a??[]).some(p=>{var d,g;return(g=(d=p.codex)==null?void 0:d.categories)==null?void 0:g.includes(Ee)})&&t.items.push({key:ue,type:"view",properties:{title:r.baseText("nodeCreator.aiPanel.langchainAiNodes"),icon:"robot",description:r.baseText("nodeCreator.aiPanel.nodesForAi"),tag:r.baseText("nodeCreator.aiPanel.newTag")}}),t.items.push({key:Y,type:"view",properties:{title:r.baseText("nodeCreator.triggerHelperPanel.addAnotherTrigger"),icon:"bolt",description:r.baseText("nodeCreator.triggerHelperPanel.addAnotherTriggerDescription")}}),t}const We="data-keyboard-nav-id",de=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Enter","Escape","Tab"],$e=Te("nodeCreatorKeyboardNavigation",()=>{const a=D([]),r=D(null),t=D({});function l(e){return e==null?void 0:e.getAttribute("data-keyboard-nav-type")}function p(e){return(e==null?void 0:e.getAttribute(We))||void 0}async function d(){return await new Promise(e=>{_(),setTimeout(()=>{a.value=Array.from(document.querySelectorAll("[data-keyboard-nav-type]")).map(o=>new WeakRef(o)),e()},0)})}function g(e,o){Object.values(t.value).filter(n=>n.keyboardKeys.includes(e)).forEach(n=>{if(!r.value)return;(n.condition===void 0||n.condition(l(o)||"",r.value))&&r.value&&n.handler(r.value,e)})}async function v(e){var b,u,A;const o=e.key;if(!de.includes(o))return;e.preventDefault(),e.stopPropagation(),await d();const s=a.value.findIndex(E=>p(E==null?void 0:E.deref())===r.value),i=(b=a.value[s])==null?void 0:b.deref(),n=o==="ArrowDown",c=o==="ArrowUp";if(i){if(n){const E=s<a.value.length-1?s+1:0;N((u=a.value[E])==null?void 0:u.deref())}if(c){const E=s>0?s-1:a.value.length-1;N((A=a.value[E])==null?void 0:A.deref())}g(o,i)}}function O(e){r.value=e}function N(e){const o=p(e);o&&(O(o),e!=null&&e.scrollIntoView&&(e==null||e.scrollIntoView({block:"center"})))}async function P(e){var o;await d(),N((o=a.value[e])==null?void 0:o.deref())}function m(){document.addEventListener("keydown",v,{capture:!0})}function C(){_(),document.removeEventListener("keydown",v,{capture:!0})}function S(e,o){o.keyboardKeys.forEach(s=>{if(de.includes(s))t.value={...t.value,[e]:o};else throw new Error(`Key ${s} is not supported`)})}function _(){a.value=[]}function h(){return a.value.findIndex(e=>p(e==null?void 0:e.deref())===r.value)}return{activeItemId:r,attachKeydownEvent:m,refreshSelectableItems:d,detachKeydownEvent:C,registerKeyHook:S,getActiveItemIndex:h,setActiveItemId:O,setActiveItemIndex:P}}),ot=Te("nodeCreatorViewStacks",()=>{const a=Me(),{getActiveItemIndex:r}=$e(),t=D([]),l=f(()=>{const e=t.value[t.value.length-1];if(!(e!=null&&e.baselineItems))return e.items?m(e.items):[];if(e.search&&g.value){const o=g.value.length>0?g.value:ne(e.baselineItems??[]);return m(ce(e.search||"",o))}return m(e.baselineItems)}),p=f(()=>{const e=t.value[t.value.length-1];if(!e)return{};const o=ne(e.baselineItems??[]);return{...e,items:l.value,hasSearch:o.length>8||(e==null?void 0:e.hasSearch)}}),d=f(()=>p.value.mode||Y),g=f(()=>{const e=t.value[t.value.length-1];return e!=null&&e.searchItems?e.searchItems.map(o=>k(o,e.subcategory)):[]}),v=f(()=>{const e=t.value[t.value.length-1];if(!(e!=null&&e.search))return[];const o=a.mergedNodes.map(i=>k(i));return m(ce(e.search||"",o)).filter(i=>!l.value.find(n=>n.key===i.key))}),O=f(()=>Ue(a.mergedNodes));async function N(e,o,s){var b;const i=I();let n,c;o===!0?(n=x().visibleNodeTypesByInputConnectionTypeNames,c={properties:{title:i.baseText("nodeCreator.aiPanel.aiNodes"),icon:"robot"}}):(n=x().visibleNodeTypesByOutputConnectionTypeNames,c=Ke().items.find(u=>u.properties.connectionType===e)),await Fe(),C({title:c==null?void 0:c.properties.title,rootView:w,mode:"nodes",items:a.allNodeCreatorNodes,nodeIcon:{iconType:"icon",icon:c==null?void 0:c.properties.icon,color:(b=c==null?void 0:c.properties.iconProps)==null?void 0:b.color},panelClass:c==null?void 0:c.properties.panelClass,baseFilter:u=>{var E;if(u.key===He)return!1;const A=n[e].includes(u.key);return A&&((E=s==null?void 0:s.nodes)!=null&&E.length)?s.nodes.includes(u.key):A},itemsMapper(u){return{...u,subcategory:e}},preventBack:!0})}function P(){const e=t.value[t.value.length-1];if(!e||!p.value.uuid)return;let o=(e==null?void 0:e.items)??[];if(!(e!=null&&e.items)){const s=(e==null?void 0:e.subcategory)??G,i=O.value[s],n=e.sections;n?o=Be(i,n):o=i}if((e.forceIncludeNodes??[]).length>0){const s=a.mergedNodes.filter(i=>{var n;return(n=e.forceIncludeNodes)==null?void 0:n.includes(i.name)}).map(i=>k(i,e.subcategory));o.push(...s)}e.baseFilter&&(o=o.filter(e.baseFilter)),e.itemsMapper&&(o=o.map(e.itemsMapper)),e.items||(o=Ve(o)),_({baselineItems:o})}function m(e){return e.map(o=>({...o,uuid:`${o.key}-${le()}`}))}function C(e){p.value.uuid&&_({activeIndex:r()});const o=le();t.value.push({...e,uuid:o,transitionDirection:"in",activeIndex:0}),P()}function S(){p.value.uuid&&(t.value.pop(),_({transitionDirection:"out"}))}function _(e){const o=t.value[t.value.length-1],s=t.value.findIndex(i=>i.uuid===o.uuid);o&&Object.keys(e).forEach(i=>{const n=i;t.value[s]={...t.value[s],[i]:e[n]}})}function h(){t.value=[]}return{viewStacks:t,activeViewStack:p,activeViewStackMode:d,globalSearchItemsDiff:v,gotoCompatibleConnectionView:N,resetViewStacks:h,updateCurrentViewStack:_,pushViewStack:C,popViewStack:S}});export{Je as A,tt as R,et as T,$e as a,Ke as b,ot as u};
2
+ //# sourceMappingURL=useViewStacks-CSn_e3gA.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useViewStacks-D-hnVv3F.js","sources":["../../src/components/Node/NodeCreator/viewsData.ts","../../src/components/Node/NodeCreator/composables/useKeyboardNavigation.ts","../../src/components/Node/NodeCreator/composables/useViewStacks.ts"],"sourcesContent":["import {\n\tCORE_NODES_CATEGORY,\n\tWEBHOOK_NODE_TYPE,\n\tOTHER_TRIGGER_NODES_SUBCATEGORY,\n\tEXECUTE_WORKFLOW_TRIGGER_NODE_TYPE,\n\tFORM_TRIGGER_NODE_TYPE,\n\tMANUAL_TRIGGER_NODE_TYPE,\n\tSCHEDULE_TRIGGER_NODE_TYPE,\n\tREGULAR_NODE_CREATOR_VIEW,\n\tTRANSFORM_DATA_SUBCATEGORY,\n\tFILES_SUBCATEGORY,\n\tFLOWS_CONTROL_SUBCATEGORY,\n\tTRIGGER_NODE_CREATOR_VIEW,\n\tEMAIL_IMAP_NODE_TYPE,\n\tDEFAULT_SUBCATEGORY,\n\tAI_NODE_CREATOR_VIEW,\n\tAI_CATEGORY_AGENTS,\n\tAI_CATEGORY_CHAINS,\n\tAI_CATEGORY_DOCUMENT_LOADERS,\n\tAI_CATEGORY_LANGUAGE_MODELS,\n\tAI_CATEGORY_MEMORY,\n\tAI_CATEGORY_OUTPUTPARSER,\n\tAI_CATEGORY_RETRIEVERS,\n\tAI_CATEGORY_TEXT_SPLITTERS,\n\tAI_CATEGORY_TOOLS,\n\tAI_CATEGORY_VECTOR_STORES,\n\tAI_SUBCATEGORY,\n\tAI_CATEGORY_EMBEDDING,\n\tAI_OTHERS_NODE_CREATOR_VIEW,\n\tAI_UNCATEGORIZED_CATEGORY,\n\tCONVERT_TO_FILE_NODE_TYPE,\n\tEXTRACT_FROM_FILE_NODE_TYPE,\n\tSET_NODE_TYPE,\n\tCODE_NODE_TYPE,\n\tDATETIME_NODE_TYPE,\n\tFILTER_NODE_TYPE,\n\tREMOVE_DUPLICATES_NODE_TYPE,\n\tSPLIT_OUT_NODE_TYPE,\n\tLIMIT_NODE_TYPE,\n\tSUMMARIZE_NODE_TYPE,\n\tAGGREGATE_NODE_TYPE,\n\tMERGE_NODE_TYPE,\n\tHTML_NODE_TYPE,\n\tMARKDOWN_NODE_TYPE,\n\tXML_NODE_TYPE,\n\tCRYPTO_NODE_TYPE,\n\tIF_NODE_TYPE,\n\tSPLIT_IN_BATCHES_NODE_TYPE,\n\tHTTP_REQUEST_NODE_TYPE,\n\tHELPERS_SUBCATEGORY,\n\tRSS_READ_NODE_TYPE,\n\tEMAIL_SEND_NODE_TYPE,\n\tEDIT_IMAGE_NODE_TYPE,\n\tCOMPRESSION_NODE_TYPE,\n} from '@/constants';\nimport { useI18n } from '@/composables/useI18n';\nimport { useNodeTypesStore } from '@/stores/nodeTypes.store';\nimport type { SimplifiedNodeType } from '@/Interface';\nimport type { INodeTypeDescription } from 'n8n-workflow';\nimport { NodeConnectionType } from 'n8n-workflow';\nimport { useTemplatesStore } from '@/stores/templates.store';\n\nexport interface NodeViewItemSection {\n\tkey: string;\n\ttitle: string;\n\titems: string[];\n}\n\nexport interface NodeViewItem {\n\tkey: string;\n\ttype: string;\n\tproperties: {\n\t\tname?: string;\n\t\ttitle?: string;\n\t\ticon?: string;\n\t\ticonProps?: {\n\t\t\tcolor?: string;\n\t\t};\n\t\tconnectionType?: NodeConnectionType;\n\t\tpanelClass?: string;\n\t\tgroup?: string[];\n\t\tsections?: NodeViewItemSection[];\n\t\tdescription?: string;\n\t\tdisplayName?: string;\n\t\ttag?: string;\n\t\tforceIncludeNodes?: string[];\n\t\ticonData?: {\n\t\t\ttype: string;\n\t\t\ticon?: string;\n\t\t\tfileBuffer?: string;\n\t\t};\n\t};\n\tcategory?: string | string[];\n}\n\ninterface NodeView {\n\tvalue: string;\n\ttitle: string;\n\tinfo?: string;\n\tsubtitle?: string;\n\titems: NodeViewItem[];\n}\n\nfunction getAiNodesBySubcategory(nodes: INodeTypeDescription[], subcategory: string) {\n\treturn nodes\n\t\t.filter(\n\t\t\t(node) => !node.hidden && node.codex?.subcategories?.[AI_SUBCATEGORY]?.includes(subcategory),\n\t\t)\n\t\t.map((node) => ({\n\t\t\tkey: node.name,\n\t\t\ttype: 'node',\n\t\t\tproperties: {\n\t\t\t\tgroup: [],\n\t\t\t\tname: node.name,\n\t\t\t\tdisplayName: node.displayName,\n\t\t\t\ttitle: node.displayName,\n\t\t\t\tdescription: node.description,\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\ticon: node.icon!,\n\t\t\t\ticonData: node.name.toLowerCase().includes('openai')\n\t\t\t\t\t? {\n\t\t\t\t\t\t\ttype: 'file',\n\t\t\t\t\t\t\ticon: 'openai',\n\t\t\t\t\t\t\tfileBuffer: '/static/open-ai.svg',\n\t\t\t\t\t\t}\n\t\t\t\t\t: undefined,\n\t\t\t},\n\t\t}))\n\t\t.sort((a, b) => a.properties.displayName.localeCompare(b.properties.displayName));\n}\n\nexport function AIView(_nodes: SimplifiedNodeType[]): NodeView {\n\tconst i18n = useI18n();\n\tconst nodeTypesStore = useNodeTypesStore();\n\tconst templatesStore = useTemplatesStore();\n\n\tconst chainNodes = getAiNodesBySubcategory(nodeTypesStore.allLatestNodeTypes, AI_CATEGORY_CHAINS);\n\tconst agentNodes = getAiNodesBySubcategory(nodeTypesStore.allLatestNodeTypes, AI_CATEGORY_AGENTS);\n\n\treturn {\n\t\tvalue: AI_NODE_CREATOR_VIEW,\n\t\ttitle: i18n.baseText('nodeCreator.aiPanel.aiNodes'),\n\t\tsubtitle: i18n.baseText('nodeCreator.aiPanel.selectAiNode'),\n\t\tinfo: i18n.baseText('nodeCreator.aiPanel.infoBox', {\n\t\t\tinterpolate: { link: templatesStore.getWebsiteCategoryURL('ai') },\n\t\t}),\n\t\titems: [\n\t\t\t...chainNodes,\n\t\t\t...agentNodes,\n\t\t\t{\n\t\t\t\tkey: AI_OTHERS_NODE_CREATOR_VIEW,\n\t\t\t\ttype: 'view',\n\t\t\t\tproperties: {\n\t\t\t\t\ttitle: i18n.baseText('nodeCreator.aiPanel.aiOtherNodes'),\n\t\t\t\t\ticon: 'robot',\n\t\t\t\t\tdescription: i18n.baseText('nodeCreator.aiPanel.aiOtherNodesDescription'),\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t};\n}\nexport function AINodesView(_nodes: SimplifiedNodeType[]): NodeView {\n\tconst i18n = useI18n();\n\n\tfunction getAISubcategoryProperties(nodeConnectionType: NodeConnectionType) {\n\t\treturn {\n\t\t\tconnectionType: nodeConnectionType,\n\t\t\ticonProps: {\n\t\t\t\tcolor: `var(--node-type-${nodeConnectionType}-color)`,\n\t\t\t},\n\t\t\tpanelClass: `nodes-list-panel-${nodeConnectionType}`,\n\t\t};\n\t}\n\n\treturn {\n\t\tvalue: AI_OTHERS_NODE_CREATOR_VIEW,\n\t\ttitle: i18n.baseText('nodeCreator.aiPanel.aiOtherNodes'),\n\t\tsubtitle: i18n.baseText('nodeCreator.aiPanel.selectAiNode'),\n\t\titems: [\n\t\t\t{\n\t\t\t\tkey: AI_CATEGORY_DOCUMENT_LOADERS,\n\t\t\t\ttype: 'subcategory',\n\t\t\t\tproperties: {\n\t\t\t\t\ttitle: AI_CATEGORY_DOCUMENT_LOADERS,\n\t\t\t\t\ticon: 'file-import',\n\t\t\t\t\t...getAISubcategoryProperties(NodeConnectionType.AiDocument),\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: AI_CATEGORY_LANGUAGE_MODELS,\n\t\t\t\ttype: 'subcategory',\n\t\t\t\tproperties: {\n\t\t\t\t\ttitle: AI_CATEGORY_LANGUAGE_MODELS,\n\t\t\t\t\ticon: 'language',\n\t\t\t\t\t...getAISubcategoryProperties(NodeConnectionType.AiLanguageModel),\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: AI_CATEGORY_MEMORY,\n\t\t\t\ttype: 'subcategory',\n\t\t\t\tproperties: {\n\t\t\t\t\ttitle: AI_CATEGORY_MEMORY,\n\t\t\t\t\ticon: 'brain',\n\t\t\t\t\t...getAISubcategoryProperties(NodeConnectionType.AiMemory),\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: AI_CATEGORY_OUTPUTPARSER,\n\t\t\t\ttype: 'subcategory',\n\t\t\t\tproperties: {\n\t\t\t\t\ttitle: AI_CATEGORY_OUTPUTPARSER,\n\t\t\t\t\ticon: 'list',\n\t\t\t\t\t...getAISubcategoryProperties(NodeConnectionType.AiOutputParser),\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: AI_CATEGORY_RETRIEVERS,\n\t\t\t\ttype: 'subcategory',\n\t\t\t\tproperties: {\n\t\t\t\t\ttitle: AI_CATEGORY_RETRIEVERS,\n\t\t\t\t\ticon: 'search',\n\t\t\t\t\t...getAISubcategoryProperties(NodeConnectionType.AiRetriever),\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: AI_CATEGORY_TEXT_SPLITTERS,\n\t\t\t\ttype: 'subcategory',\n\t\t\t\tproperties: {\n\t\t\t\t\ttitle: AI_CATEGORY_TEXT_SPLITTERS,\n\t\t\t\t\ticon: 'grip-lines-vertical',\n\t\t\t\t\t...getAISubcategoryProperties(NodeConnectionType.AiTextSplitter),\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: AI_CATEGORY_TOOLS,\n\t\t\t\ttype: 'subcategory',\n\t\t\t\tproperties: {\n\t\t\t\t\ttitle: AI_CATEGORY_TOOLS,\n\t\t\t\t\ticon: 'tools',\n\t\t\t\t\t...getAISubcategoryProperties(NodeConnectionType.AiTool),\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: AI_CATEGORY_EMBEDDING,\n\t\t\t\ttype: 'subcategory',\n\t\t\t\tproperties: {\n\t\t\t\t\ttitle: AI_CATEGORY_EMBEDDING,\n\t\t\t\t\ticon: 'vector-square',\n\t\t\t\t\t...getAISubcategoryProperties(NodeConnectionType.AiEmbedding),\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: AI_CATEGORY_VECTOR_STORES,\n\t\t\t\ttype: 'subcategory',\n\t\t\t\tproperties: {\n\t\t\t\t\ttitle: AI_CATEGORY_VECTOR_STORES,\n\t\t\t\t\ticon: 'project-diagram',\n\t\t\t\t\t...getAISubcategoryProperties(NodeConnectionType.AiVectorStore),\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: AI_UNCATEGORIZED_CATEGORY,\n\t\t\t\ttype: 'subcategory',\n\t\t\t\tproperties: {\n\t\t\t\t\ttitle: AI_UNCATEGORIZED_CATEGORY,\n\t\t\t\t\ticon: 'code',\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t};\n}\n\nexport function TriggerView() {\n\tconst i18n = useI18n();\n\n\tconst view: NodeView = {\n\t\tvalue: TRIGGER_NODE_CREATOR_VIEW,\n\t\ttitle: i18n.baseText('nodeCreator.triggerHelperPanel.selectATrigger'),\n\t\tsubtitle: i18n.baseText('nodeCreator.triggerHelperPanel.selectATriggerDescription'),\n\t\titems: [\n\t\t\t{\n\t\t\t\tkey: DEFAULT_SUBCATEGORY,\n\t\t\t\ttype: 'subcategory',\n\t\t\t\tproperties: {\n\t\t\t\t\tforceIncludeNodes: [WEBHOOK_NODE_TYPE, EMAIL_IMAP_NODE_TYPE],\n\t\t\t\t\ttitle: 'App Trigger Nodes',\n\t\t\t\t\ticon: 'satellite-dish',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: SCHEDULE_TRIGGER_NODE_TYPE,\n\t\t\t\ttype: 'node',\n\t\t\t\tcategory: [CORE_NODES_CATEGORY],\n\t\t\t\tproperties: {\n\t\t\t\t\tgroup: [],\n\t\t\t\t\tname: SCHEDULE_TRIGGER_NODE_TYPE,\n\t\t\t\t\tdisplayName: i18n.baseText('nodeCreator.triggerHelperPanel.scheduleTriggerDisplayName'),\n\t\t\t\t\tdescription: i18n.baseText('nodeCreator.triggerHelperPanel.scheduleTriggerDescription'),\n\t\t\t\t\ticon: 'fa:clock',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: WEBHOOK_NODE_TYPE,\n\t\t\t\ttype: 'node',\n\t\t\t\tcategory: [CORE_NODES_CATEGORY],\n\t\t\t\tproperties: {\n\t\t\t\t\tgroup: [],\n\t\t\t\t\tname: WEBHOOK_NODE_TYPE,\n\t\t\t\t\tdisplayName: i18n.baseText('nodeCreator.triggerHelperPanel.webhookTriggerDisplayName'),\n\t\t\t\t\tdescription: i18n.baseText('nodeCreator.triggerHelperPanel.webhookTriggerDescription'),\n\t\t\t\t\ticonData: {\n\t\t\t\t\t\ttype: 'file',\n\t\t\t\t\t\ticon: 'webhook',\n\t\t\t\t\t\tfileBuffer: '/static/webhook-icon.svg',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: FORM_TRIGGER_NODE_TYPE,\n\t\t\t\ttype: 'node',\n\t\t\t\tcategory: [CORE_NODES_CATEGORY],\n\t\t\t\tproperties: {\n\t\t\t\t\tgroup: [],\n\t\t\t\t\tname: FORM_TRIGGER_NODE_TYPE,\n\t\t\t\t\tdisplayName: i18n.baseText('nodeCreator.triggerHelperPanel.formTriggerDisplayName'),\n\t\t\t\t\tdescription: i18n.baseText('nodeCreator.triggerHelperPanel.formTriggerDescription'),\n\t\t\t\t\ticonData: {\n\t\t\t\t\t\ttype: 'file',\n\t\t\t\t\t\ticon: 'form',\n\t\t\t\t\t\tfileBuffer: '/static/form-grey.svg',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: MANUAL_TRIGGER_NODE_TYPE,\n\t\t\t\ttype: 'node',\n\t\t\t\tcategory: [CORE_NODES_CATEGORY],\n\t\t\t\tproperties: {\n\t\t\t\t\tgroup: [],\n\t\t\t\t\tname: MANUAL_TRIGGER_NODE_TYPE,\n\t\t\t\t\tdisplayName: i18n.baseText('nodeCreator.triggerHelperPanel.manualTriggerDisplayName'),\n\t\t\t\t\tdescription: i18n.baseText('nodeCreator.triggerHelperPanel.manualTriggerDescription'),\n\t\t\t\t\ticon: 'fa:mouse-pointer',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: EXECUTE_WORKFLOW_TRIGGER_NODE_TYPE,\n\t\t\t\ttype: 'node',\n\t\t\t\tcategory: [CORE_NODES_CATEGORY],\n\t\t\t\tproperties: {\n\t\t\t\t\tgroup: [],\n\t\t\t\t\tname: EXECUTE_WORKFLOW_TRIGGER_NODE_TYPE,\n\t\t\t\t\tdisplayName: i18n.baseText('nodeCreator.triggerHelperPanel.workflowTriggerDisplayName'),\n\t\t\t\t\tdescription: i18n.baseText('nodeCreator.triggerHelperPanel.workflowTriggerDescription'),\n\t\t\t\t\ticon: 'fa:sign-out-alt',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: 'subcategory',\n\t\t\t\tkey: OTHER_TRIGGER_NODES_SUBCATEGORY,\n\t\t\t\tcategory: CORE_NODES_CATEGORY,\n\t\t\t\tproperties: {\n\t\t\t\t\ttitle: OTHER_TRIGGER_NODES_SUBCATEGORY,\n\t\t\t\t\ticon: 'folder-open',\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t};\n\n\treturn view;\n}\n\nexport function RegularView(nodes: SimplifiedNodeType[]) {\n\tconst i18n = useI18n();\n\n\tconst view: NodeView = {\n\t\tvalue: REGULAR_NODE_CREATOR_VIEW,\n\t\ttitle: i18n.baseText('nodeCreator.triggerHelperPanel.whatHappensNext'),\n\t\titems: [\n\t\t\t{\n\t\t\t\tkey: DEFAULT_SUBCATEGORY,\n\t\t\t\ttype: 'subcategory',\n\t\t\t\tproperties: {\n\t\t\t\t\ttitle: 'App Regular Nodes',\n\t\t\t\t\ticon: 'globe',\n\t\t\t\t\tforceIncludeNodes: [RSS_READ_NODE_TYPE, EMAIL_SEND_NODE_TYPE],\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: 'subcategory',\n\t\t\t\tkey: TRANSFORM_DATA_SUBCATEGORY,\n\t\t\t\tcategory: CORE_NODES_CATEGORY,\n\t\t\t\tproperties: {\n\t\t\t\t\ttitle: TRANSFORM_DATA_SUBCATEGORY,\n\t\t\t\t\ticon: 'pen',\n\t\t\t\t\tsections: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tkey: 'popular',\n\t\t\t\t\t\t\ttitle: i18n.baseText('nodeCreator.sectionNames.popular'),\n\t\t\t\t\t\t\titems: [SET_NODE_TYPE, CODE_NODE_TYPE, DATETIME_NODE_TYPE],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tkey: 'addOrRemove',\n\t\t\t\t\t\t\ttitle: i18n.baseText('nodeCreator.sectionNames.transform.addOrRemove'),\n\t\t\t\t\t\t\titems: [\n\t\t\t\t\t\t\t\tFILTER_NODE_TYPE,\n\t\t\t\t\t\t\t\tREMOVE_DUPLICATES_NODE_TYPE,\n\t\t\t\t\t\t\t\tSPLIT_OUT_NODE_TYPE,\n\t\t\t\t\t\t\t\tLIMIT_NODE_TYPE,\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\tkey: 'combine',\n\t\t\t\t\t\t\ttitle: i18n.baseText('nodeCreator.sectionNames.transform.combine'),\n\t\t\t\t\t\t\titems: [SUMMARIZE_NODE_TYPE, AGGREGATE_NODE_TYPE, MERGE_NODE_TYPE],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tkey: 'convert',\n\t\t\t\t\t\t\ttitle: i18n.baseText('nodeCreator.sectionNames.transform.convert'),\n\t\t\t\t\t\t\titems: [\n\t\t\t\t\t\t\t\tHTML_NODE_TYPE,\n\t\t\t\t\t\t\t\tMARKDOWN_NODE_TYPE,\n\t\t\t\t\t\t\t\tXML_NODE_TYPE,\n\t\t\t\t\t\t\t\tCRYPTO_NODE_TYPE,\n\t\t\t\t\t\t\t\tEXTRACT_FROM_FILE_NODE_TYPE,\n\t\t\t\t\t\t\t\tCONVERT_TO_FILE_NODE_TYPE,\n\t\t\t\t\t\t\t\tCOMPRESSION_NODE_TYPE,\n\t\t\t\t\t\t\t\tEDIT_IMAGE_NODE_TYPE,\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\ttype: 'subcategory',\n\t\t\t\tkey: FLOWS_CONTROL_SUBCATEGORY,\n\t\t\t\tcategory: CORE_NODES_CATEGORY,\n\t\t\t\tproperties: {\n\t\t\t\t\ttitle: FLOWS_CONTROL_SUBCATEGORY,\n\t\t\t\t\ticon: 'code-branch',\n\t\t\t\t\tsections: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tkey: 'popular',\n\t\t\t\t\t\t\ttitle: i18n.baseText('nodeCreator.sectionNames.popular'),\n\t\t\t\t\t\t\titems: [FILTER_NODE_TYPE, IF_NODE_TYPE, SPLIT_IN_BATCHES_NODE_TYPE, MERGE_NODE_TYPE],\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\ttype: 'subcategory',\n\t\t\t\tkey: FILES_SUBCATEGORY,\n\t\t\t\tcategory: CORE_NODES_CATEGORY,\n\t\t\t\tproperties: {\n\t\t\t\t\ttitle: FILES_SUBCATEGORY,\n\t\t\t\t\ticon: 'file-alt',\n\t\t\t\t\tsections: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tkey: 'popular',\n\t\t\t\t\t\t\ttitle: i18n.baseText('nodeCreator.sectionNames.popular'),\n\t\t\t\t\t\t\titems: [CONVERT_TO_FILE_NODE_TYPE, EXTRACT_FROM_FILE_NODE_TYPE],\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\ttype: 'subcategory',\n\t\t\t\tkey: HELPERS_SUBCATEGORY,\n\t\t\t\tcategory: CORE_NODES_CATEGORY,\n\t\t\t\tproperties: {\n\t\t\t\t\ttitle: HELPERS_SUBCATEGORY,\n\t\t\t\t\ticon: 'toolbox',\n\t\t\t\t\tsections: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tkey: 'popular',\n\t\t\t\t\t\t\ttitle: i18n.baseText('nodeCreator.sectionNames.popular'),\n\t\t\t\t\t\t\titems: [HTTP_REQUEST_NODE_TYPE, WEBHOOK_NODE_TYPE, CODE_NODE_TYPE],\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 hasAINodes = (nodes ?? []).some((node) => node.codex?.categories?.includes(AI_SUBCATEGORY));\n\tif (hasAINodes)\n\t\tview.items.push({\n\t\t\tkey: AI_NODE_CREATOR_VIEW,\n\t\t\ttype: 'view',\n\t\t\tproperties: {\n\t\t\t\ttitle: i18n.baseText('nodeCreator.aiPanel.langchainAiNodes'),\n\t\t\t\ticon: 'robot',\n\t\t\t\tdescription: i18n.baseText('nodeCreator.aiPanel.nodesForAi'),\n\t\t\t\ttag: i18n.baseText('nodeCreator.aiPanel.newTag'),\n\t\t\t},\n\t\t});\n\n\tview.items.push({\n\t\tkey: TRIGGER_NODE_CREATOR_VIEW,\n\t\ttype: 'view',\n\t\tproperties: {\n\t\t\ttitle: i18n.baseText('nodeCreator.triggerHelperPanel.addAnotherTrigger'),\n\t\t\ticon: 'bolt',\n\t\t\tdescription: i18n.baseText('nodeCreator.triggerHelperPanel.addAnotherTriggerDescription'),\n\t\t},\n\t});\n\n\treturn view;\n}\n","import { ref } from 'vue';\nimport { defineStore } from 'pinia';\n\nexport type KeyboardKey = (typeof WATCHED_KEYS)[number];\ninterface KeyHook {\n\tkeyboardKeys: KeyboardKey[];\n\tcondition?: (type: string, activeItemId: string) => boolean;\n\thandler: (activeItemId: string, keyboardKey: KeyboardKey) => void;\n}\n\nexport const KEYBOARD_ID_ATTR = 'data-keyboard-nav-id';\nexport const WATCHED_KEYS = [\n\t'ArrowUp',\n\t'ArrowDown',\n\t'ArrowLeft',\n\t'ArrowRight',\n\t'Enter',\n\t'Escape',\n\t'Tab',\n];\n\nexport const useKeyboardNavigation = defineStore('nodeCreatorKeyboardNavigation', () => {\n\tconst selectableItems = ref<Array<WeakRef<Element>>>([]);\n\tconst activeItemId = ref<string | null>(null);\n\t// Array of objects that contains key code and handler\n\tconst keysHooks = ref<Record<string, KeyHook>>({});\n\n\tfunction getItemType(element?: Element) {\n\t\treturn element?.getAttribute('data-keyboard-nav-type');\n\t}\n\tfunction getElementId(element?: Element) {\n\t\treturn element?.getAttribute(KEYBOARD_ID_ATTR) || undefined;\n\t}\n\tasync function refreshSelectableItems(): Promise<void> {\n\t\treturn await new Promise((resolve) => {\n\t\t\t// Wait for DOM to update\n\t\t\tcleanupSelectableItems();\n\t\t\tsetTimeout(() => {\n\t\t\t\tselectableItems.value = Array.from(\n\t\t\t\t\tdocument.querySelectorAll('[data-keyboard-nav-type]'),\n\t\t\t\t).map((el) => new WeakRef(el));\n\t\t\t\tresolve();\n\t\t\t}, 0);\n\t\t});\n\t}\n\n\tfunction executeKeyHooks(keyboardKey: KeyboardKey, activeItem: Element) {\n\t\tconst flatHooks = Object.values(keysHooks.value);\n\t\tconst hooks = flatHooks.filter((hook) => hook.keyboardKeys.includes(keyboardKey));\n\n\t\thooks.forEach((hook) => {\n\t\t\tif (!activeItemId.value) return;\n\n\t\t\tconst conditionPassed =\n\t\t\t\thook.condition === undefined ||\n\t\t\t\thook.condition(getItemType(activeItem) || '', activeItemId.value);\n\n\t\t\tif (conditionPassed && activeItemId.value) {\n\t\t\t\thook.handler(activeItemId.value, keyboardKey);\n\t\t\t}\n\t\t});\n\t}\n\n\tasync function onKeyDown(e: KeyboardEvent) {\n\t\tconst pressedKey = e.key;\n\t\tif (!WATCHED_KEYS.includes(pressedKey)) return;\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\tawait refreshSelectableItems();\n\t\tconst activeItemIndex = selectableItems.value.findIndex(\n\t\t\t(item) => getElementId(item?.deref()) === activeItemId.value,\n\t\t);\n\t\tconst activeItem = selectableItems.value[activeItemIndex]?.deref();\n\n\t\tconst isArrowDown = pressedKey === 'ArrowDown';\n\t\tconst isArrowUp = pressedKey === 'ArrowUp';\n\n\t\tif (!activeItem) return;\n\n\t\tif (isArrowDown) {\n\t\t\tconst nextItemIndex =\n\t\t\t\tactiveItemIndex < selectableItems.value.length - 1 ? activeItemIndex + 1 : 0;\n\n\t\t\tsetActiveItem(selectableItems.value[nextItemIndex]?.deref());\n\t\t}\n\t\tif (isArrowUp) {\n\t\t\tconst previousIndex =\n\t\t\t\tactiveItemIndex > 0 ? activeItemIndex - 1 : selectableItems.value.length - 1;\n\n\t\t\tsetActiveItem(selectableItems.value[previousIndex]?.deref());\n\t\t}\n\t\texecuteKeyHooks(pressedKey, activeItem);\n\t}\n\n\tfunction setActiveItemId(id: string) {\n\t\tactiveItemId.value = id;\n\t}\n\n\tfunction setActiveItem(item?: Element) {\n\t\tconst itemId = getElementId(item);\n\t\tif (!itemId) return;\n\n\t\tsetActiveItemId(itemId);\n\t\tif (item?.scrollIntoView) {\n\t\t\titem?.scrollIntoView({ block: 'center' });\n\t\t}\n\t}\n\n\tasync function setActiveItemIndex(index: number) {\n\t\tawait refreshSelectableItems();\n\n\t\tsetActiveItem(selectableItems.value[index]?.deref());\n\t}\n\n\tfunction attachKeydownEvent() {\n\t\tdocument.addEventListener('keydown', onKeyDown, { capture: true });\n\t}\n\n\tfunction detachKeydownEvent() {\n\t\tcleanupSelectableItems();\n\t\tdocument.removeEventListener('keydown', onKeyDown, { capture: true });\n\t}\n\n\tfunction registerKeyHook(name: string, hook: KeyHook) {\n\t\thook.keyboardKeys.forEach((keyboardKey) => {\n\t\t\tif (WATCHED_KEYS.includes(keyboardKey)) {\n\t\t\t\tkeysHooks.value = { ...keysHooks.value, [name]: hook };\n\t\t\t} else {\n\t\t\t\tthrow new Error(`Key ${keyboardKey} is not supported`);\n\t\t\t}\n\t\t});\n\t}\n\n\tfunction cleanupSelectableItems() {\n\t\t// Cleanup to make sure DOM elements get garbage collected\n\t\tselectableItems.value = [];\n\t}\n\n\tfunction getActiveItemIndex() {\n\t\treturn selectableItems.value.findIndex(\n\t\t\t(item) => getElementId(item?.deref()) === activeItemId.value,\n\t\t);\n\t}\n\n\treturn {\n\t\tactiveItemId,\n\t\tattachKeydownEvent,\n\t\trefreshSelectableItems,\n\t\tdetachKeydownEvent,\n\t\tregisterKeyHook,\n\t\tgetActiveItemIndex,\n\t\tsetActiveItemId,\n\t\tsetActiveItemIndex,\n\t};\n});\n","import type { INodeCreateElement, NodeFilterType, SimplifiedNodeType } from '@/Interface';\nimport {\n\tAI_CODE_NODE_TYPE,\n\tAI_OTHERS_NODE_CREATOR_VIEW,\n\tDEFAULT_SUBCATEGORY,\n\tTRIGGER_NODE_CREATOR_VIEW,\n} from '@/constants';\nimport { defineStore } from 'pinia';\nimport { v4 as uuid } from 'uuid';\nimport { computed, nextTick, ref } from 'vue';\n\nimport { useNodeCreatorStore } from '@/stores/nodeCreator.store';\n\nimport {\n\tflattenCreateElements,\n\tgroupItemsInSections,\n\tsearchNodes,\n\tsortNodeCreateElements,\n\tsubcategorizeItems,\n\ttransformNodeType,\n} from '../utils';\n\nimport type { NodeViewItem, NodeViewItemSection } from '@/components/Node/NodeCreator/viewsData';\nimport { AINodesView } from '@/components/Node/NodeCreator/viewsData';\nimport { useI18n } from '@/composables/useI18n';\nimport { useKeyboardNavigation } from './useKeyboardNavigation';\n\nimport { useNodeTypesStore } from '@/stores/nodeTypes.store';\nimport type { INodeInputFilter, NodeConnectionType } from 'n8n-workflow';\n\ninterface ViewStack {\n\tuuid?: string;\n\ttitle?: string;\n\tsubtitle?: string;\n\tsearch?: string;\n\tsubcategory?: string;\n\tinfo?: string;\n\tnodeIcon?: {\n\t\ticonType?: string;\n\t\ticon?: string;\n\t\tcolor?: string;\n\t};\n\ticonUrl?: string;\n\trootView?: NodeFilterType;\n\tactiveIndex?: number;\n\ttransitionDirection?: 'in' | 'out';\n\thasSearch?: boolean;\n\tpreventBack?: boolean;\n\titems?: INodeCreateElement[];\n\tbaselineItems?: INodeCreateElement[];\n\tsearchItems?: SimplifiedNodeType[];\n\tforceIncludeNodes?: string[];\n\tmode?: 'actions' | 'nodes';\n\tbaseFilter?: (item: INodeCreateElement) => boolean;\n\titemsMapper?: (item: INodeCreateElement) => INodeCreateElement;\n\tpanelClass?: string;\n\tsections?: string[] | NodeViewItemSection[];\n}\n\nexport const useViewStacks = defineStore('nodeCreatorViewStacks', () => {\n\tconst nodeCreatorStore = useNodeCreatorStore();\n\tconst { getActiveItemIndex } = useKeyboardNavigation();\n\n\tconst viewStacks = ref<ViewStack[]>([]);\n\n\tconst activeStackItems = computed<INodeCreateElement[]>(() => {\n\t\tconst stack = viewStacks.value[viewStacks.value.length - 1];\n\n\t\tif (!stack?.baselineItems) {\n\t\t\treturn stack.items ? extendItemsWithUUID(stack.items) : [];\n\t\t}\n\n\t\tif (stack.search && searchBaseItems.value) {\n\t\t\tconst searchBase =\n\t\t\t\tsearchBaseItems.value.length > 0\n\t\t\t\t\t? searchBaseItems.value\n\t\t\t\t\t: flattenCreateElements(stack.baselineItems ?? []);\n\n\t\t\treturn extendItemsWithUUID(searchNodes(stack.search || '', searchBase));\n\t\t}\n\t\treturn extendItemsWithUUID(stack.baselineItems);\n\t});\n\n\tconst activeViewStack = computed<ViewStack>(() => {\n\t\tconst stack = viewStacks.value[viewStacks.value.length - 1];\n\t\tif (!stack) return {};\n\n\t\tconst flatBaselineItems = flattenCreateElements(stack.baselineItems ?? []);\n\n\t\treturn {\n\t\t\t...stack,\n\t\t\titems: activeStackItems.value,\n\t\t\thasSearch: flatBaselineItems.length > 8 || stack?.hasSearch,\n\t\t};\n\t});\n\n\tconst activeViewStackMode = computed(\n\t\t() => activeViewStack.value.mode || TRIGGER_NODE_CREATOR_VIEW,\n\t);\n\n\tconst searchBaseItems = computed<INodeCreateElement[]>(() => {\n\t\tconst stack = viewStacks.value[viewStacks.value.length - 1];\n\t\tif (!stack?.searchItems) return [];\n\n\t\treturn stack.searchItems.map((item) => transformNodeType(item, stack.subcategory));\n\t});\n\n\t// Generate a delta between the global search results(all nodes) and the stack search results\n\tconst globalSearchItemsDiff = computed<INodeCreateElement[]>(() => {\n\t\tconst stack = viewStacks.value[viewStacks.value.length - 1];\n\t\tif (!stack?.search) return [];\n\n\t\tconst allNodes = nodeCreatorStore.mergedNodes.map((item) => transformNodeType(item));\n\t\tconst globalSearchResult = extendItemsWithUUID(searchNodes(stack.search || '', allNodes));\n\n\t\treturn globalSearchResult.filter((item) => {\n\t\t\treturn !activeStackItems.value.find((activeItem) => activeItem.key === item.key);\n\t\t});\n\t});\n\n\tconst itemsBySubcategory = computed(() => subcategorizeItems(nodeCreatorStore.mergedNodes));\n\n\tasync function gotoCompatibleConnectionView(\n\t\tconnectionType: NodeConnectionType,\n\t\tisOutput?: boolean,\n\t\tfilter?: INodeInputFilter,\n\t) {\n\t\tconst i18n = useI18n();\n\n\t\tlet nodesByConnectionType: { [key: string]: string[] };\n\t\tlet relatedAIView: { properties: NodeViewItem['properties'] } | undefined;\n\n\t\tif (isOutput === true) {\n\t\t\tnodesByConnectionType = useNodeTypesStore().visibleNodeTypesByInputConnectionTypeNames;\n\t\t\trelatedAIView = {\n\t\t\t\tproperties: {\n\t\t\t\t\ttitle: i18n.baseText('nodeCreator.aiPanel.aiNodes'),\n\t\t\t\t\ticon: 'robot',\n\t\t\t\t},\n\t\t\t};\n\t\t} else {\n\t\t\tnodesByConnectionType = useNodeTypesStore().visibleNodeTypesByOutputConnectionTypeNames;\n\n\t\t\trelatedAIView = AINodesView([]).items.find(\n\t\t\t\t(item) => item.properties.connectionType === connectionType,\n\t\t\t);\n\t\t}\n\n\t\tawait nextTick();\n\t\tpushViewStack({\n\t\t\ttitle: relatedAIView?.properties.title,\n\t\t\trootView: AI_OTHERS_NODE_CREATOR_VIEW,\n\t\t\tmode: 'nodes',\n\t\t\titems: nodeCreatorStore.allNodeCreatorNodes,\n\t\t\tnodeIcon: {\n\t\t\t\ticonType: 'icon',\n\t\t\t\ticon: relatedAIView?.properties.icon,\n\t\t\t\tcolor: relatedAIView?.properties.iconProps?.color,\n\t\t\t},\n\t\t\tpanelClass: relatedAIView?.properties.panelClass,\n\t\t\tbaseFilter: (i: INodeCreateElement) => {\n\t\t\t\t// AI Code node could have any connection type so we don't want to display it\n\t\t\t\t// in the compatible connection view as it would be displayed in all of them\n\t\t\t\tif (i.key === AI_CODE_NODE_TYPE) return false;\n\t\t\t\tconst displayNode = nodesByConnectionType[connectionType].includes(i.key);\n\n\t\t\t\t// TODO: Filtering works currently fine for displaying compatible node when dropping\n\t\t\t\t// input connections. However, it does not work for output connections.\n\t\t\t\t// For that reason does it currently display nodes that are maybe not compatible\n\t\t\t\t// but then errors once it got selected by the user.\n\t\t\t\tif (displayNode && filter?.nodes?.length) {\n\t\t\t\t\treturn filter.nodes.includes(i.key);\n\t\t\t\t}\n\n\t\t\t\treturn displayNode;\n\t\t\t},\n\t\t\titemsMapper(item) {\n\t\t\t\treturn {\n\t\t\t\t\t...item,\n\t\t\t\t\tsubcategory: connectionType,\n\t\t\t\t};\n\t\t\t},\n\t\t\tpreventBack: true,\n\t\t});\n\t}\n\n\tfunction setStackBaselineItems() {\n\t\tconst stack = viewStacks.value[viewStacks.value.length - 1];\n\t\tif (!stack || !activeViewStack.value.uuid) return;\n\n\t\tlet stackItems = stack?.items ?? [];\n\n\t\tif (!stack?.items) {\n\t\t\tconst subcategory = stack?.subcategory ?? DEFAULT_SUBCATEGORY;\n\t\t\tconst itemsInSubcategory = itemsBySubcategory.value[subcategory];\n\t\t\tconst sections = stack.sections;\n\n\t\t\tif (sections) {\n\t\t\t\tstackItems = groupItemsInSections(itemsInSubcategory, sections);\n\t\t\t} else {\n\t\t\t\tstackItems = itemsInSubcategory;\n\t\t\t}\n\t\t}\n\n\t\t// Ensure that the nodes specified in `stack.forceIncludeNodes` are always included,\n\t\t// regardless of whether the subcategory is matched\n\t\tif ((stack.forceIncludeNodes ?? []).length > 0) {\n\t\t\tconst matchedNodes = nodeCreatorStore.mergedNodes\n\t\t\t\t.filter((item) => stack.forceIncludeNodes?.includes(item.name))\n\t\t\t\t.map((item) => transformNodeType(item, stack.subcategory));\n\n\t\t\tstackItems.push(...matchedNodes);\n\t\t}\n\n\t\tif (stack.baseFilter) {\n\t\t\tstackItems = stackItems.filter(stack.baseFilter);\n\t\t}\n\n\t\tif (stack.itemsMapper) {\n\t\t\tstackItems = stackItems.map(stack.itemsMapper);\n\t\t}\n\n\t\t// Sort only if non-root view\n\t\tif (!stack.items) {\n\t\t\tstackItems = sortNodeCreateElements(stackItems);\n\t\t}\n\n\t\tupdateCurrentViewStack({ baselineItems: stackItems });\n\t}\n\n\tfunction extendItemsWithUUID(items: INodeCreateElement[]) {\n\t\treturn items.map((item) => ({\n\t\t\t...item,\n\t\t\tuuid: `${item.key}-${uuid()}`,\n\t\t}));\n\t}\n\n\tfunction pushViewStack(stack: ViewStack) {\n\t\tif (activeViewStack.value.uuid) {\n\t\t\tupdateCurrentViewStack({ activeIndex: getActiveItemIndex() });\n\t\t}\n\n\t\tconst newStackUuid = uuid();\n\t\tviewStacks.value.push({\n\t\t\t...stack,\n\t\t\tuuid: newStackUuid,\n\t\t\ttransitionDirection: 'in',\n\t\t\tactiveIndex: 0,\n\t\t});\n\t\tsetStackBaselineItems();\n\t}\n\n\tfunction popViewStack() {\n\t\tif (activeViewStack.value.uuid) {\n\t\t\tviewStacks.value.pop();\n\t\t\tupdateCurrentViewStack({ transitionDirection: 'out' });\n\t\t}\n\t}\n\n\tfunction updateCurrentViewStack(stack: Partial<ViewStack>) {\n\t\tconst currentStack = viewStacks.value[viewStacks.value.length - 1];\n\t\tconst matchedIndex = viewStacks.value.findIndex((s) => s.uuid === currentStack.uuid);\n\t\tif (!currentStack) return;\n\n\t\t// For each key in the stack, update the matched stack\n\t\tObject.keys(stack).forEach((key) => {\n\t\t\tconst typedKey = key as keyof ViewStack;\n\t\t\tviewStacks.value[matchedIndex] = {\n\t\t\t\t...viewStacks.value[matchedIndex],\n\t\t\t\t[key]: stack[typedKey],\n\t\t\t};\n\t\t});\n\t}\n\n\tfunction resetViewStacks() {\n\t\tviewStacks.value = [];\n\t}\n\n\treturn {\n\t\tviewStacks,\n\t\tactiveViewStack,\n\t\tactiveViewStackMode,\n\t\tglobalSearchItemsDiff,\n\t\tgotoCompatibleConnectionView,\n\t\tresetViewStacks,\n\t\tupdateCurrentViewStack,\n\t\tpushViewStack,\n\t\tpopViewStack,\n\t};\n});\n"],"names":["getAiNodesBySubcategory","nodes","subcategory","node","_c","_b","_a","AI_SUBCATEGORY","a","b","AIView","_nodes","i18n","useI18n","nodeTypesStore","useNodeTypesStore","templatesStore","useTemplatesStore","chainNodes","AI_CATEGORY_CHAINS","agentNodes","AI_CATEGORY_AGENTS","AI_NODE_CREATOR_VIEW","AI_OTHERS_NODE_CREATOR_VIEW","AINodesView","getAISubcategoryProperties","nodeConnectionType","AI_CATEGORY_DOCUMENT_LOADERS","NodeConnectionType","AI_CATEGORY_LANGUAGE_MODELS","AI_CATEGORY_MEMORY","AI_CATEGORY_OUTPUTPARSER","AI_CATEGORY_RETRIEVERS","AI_CATEGORY_TEXT_SPLITTERS","AI_CATEGORY_TOOLS","AI_CATEGORY_EMBEDDING","AI_CATEGORY_VECTOR_STORES","AI_UNCATEGORIZED_CATEGORY","TriggerView","TRIGGER_NODE_CREATOR_VIEW","DEFAULT_SUBCATEGORY","WEBHOOK_NODE_TYPE","EMAIL_IMAP_NODE_TYPE","SCHEDULE_TRIGGER_NODE_TYPE","CORE_NODES_CATEGORY","FORM_TRIGGER_NODE_TYPE","MANUAL_TRIGGER_NODE_TYPE","EXECUTE_WORKFLOW_TRIGGER_NODE_TYPE","OTHER_TRIGGER_NODES_SUBCATEGORY","RegularView","view","REGULAR_NODE_CREATOR_VIEW","RSS_READ_NODE_TYPE","EMAIL_SEND_NODE_TYPE","TRANSFORM_DATA_SUBCATEGORY","SET_NODE_TYPE","CODE_NODE_TYPE","DATETIME_NODE_TYPE","FILTER_NODE_TYPE","REMOVE_DUPLICATES_NODE_TYPE","SPLIT_OUT_NODE_TYPE","LIMIT_NODE_TYPE","SUMMARIZE_NODE_TYPE","AGGREGATE_NODE_TYPE","MERGE_NODE_TYPE","HTML_NODE_TYPE","MARKDOWN_NODE_TYPE","XML_NODE_TYPE","CRYPTO_NODE_TYPE","EXTRACT_FROM_FILE_NODE_TYPE","CONVERT_TO_FILE_NODE_TYPE","COMPRESSION_NODE_TYPE","EDIT_IMAGE_NODE_TYPE","FLOWS_CONTROL_SUBCATEGORY","IF_NODE_TYPE","SPLIT_IN_BATCHES_NODE_TYPE","FILES_SUBCATEGORY","HELPERS_SUBCATEGORY","HTTP_REQUEST_NODE_TYPE","KEYBOARD_ID_ATTR","WATCHED_KEYS","useKeyboardNavigation","defineStore","selectableItems","ref","activeItemId","keysHooks","getItemType","element","getElementId","refreshSelectableItems","resolve","cleanupSelectableItems","el","executeKeyHooks","keyboardKey","activeItem","hook","onKeyDown","pressedKey","activeItemIndex","item","isArrowDown","isArrowUp","nextItemIndex","setActiveItem","previousIndex","setActiveItemId","id","itemId","setActiveItemIndex","index","attachKeydownEvent","detachKeydownEvent","registerKeyHook","name","getActiveItemIndex","useViewStacks","nodeCreatorStore","useNodeCreatorStore","viewStacks","activeStackItems","computed","stack","extendItemsWithUUID","searchBaseItems","searchBase","flattenCreateElements","searchNodes","activeViewStack","flatBaselineItems","activeViewStackMode","transformNodeType","globalSearchItemsDiff","allNodes","itemsBySubcategory","subcategorizeItems","gotoCompatibleConnectionView","connectionType","isOutput","filter","nodesByConnectionType","relatedAIView","nextTick","pushViewStack","i","AI_CODE_NODE_TYPE","displayNode","setStackBaselineItems","stackItems","itemsInSubcategory","sections","groupItemsInSections","matchedNodes","sortNodeCreateElements","updateCurrentViewStack","items","uuid","newStackUuid","popViewStack","currentStack","matchedIndex","s","key","typedKey","resetViewStacks"],"mappings":"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"}
1
+ {"version":3,"file":"useViewStacks-CSn_e3gA.js","sources":["../../src/components/Node/NodeCreator/viewsData.ts","../../src/components/Node/NodeCreator/composables/useKeyboardNavigation.ts","../../src/components/Node/NodeCreator/composables/useViewStacks.ts"],"sourcesContent":["import {\n\tCORE_NODES_CATEGORY,\n\tWEBHOOK_NODE_TYPE,\n\tOTHER_TRIGGER_NODES_SUBCATEGORY,\n\tEXECUTE_WORKFLOW_TRIGGER_NODE_TYPE,\n\tFORM_TRIGGER_NODE_TYPE,\n\tMANUAL_TRIGGER_NODE_TYPE,\n\tSCHEDULE_TRIGGER_NODE_TYPE,\n\tREGULAR_NODE_CREATOR_VIEW,\n\tTRANSFORM_DATA_SUBCATEGORY,\n\tFILES_SUBCATEGORY,\n\tFLOWS_CONTROL_SUBCATEGORY,\n\tTRIGGER_NODE_CREATOR_VIEW,\n\tEMAIL_IMAP_NODE_TYPE,\n\tDEFAULT_SUBCATEGORY,\n\tAI_NODE_CREATOR_VIEW,\n\tAI_CATEGORY_AGENTS,\n\tAI_CATEGORY_CHAINS,\n\tAI_CATEGORY_DOCUMENT_LOADERS,\n\tAI_CATEGORY_LANGUAGE_MODELS,\n\tAI_CATEGORY_MEMORY,\n\tAI_CATEGORY_OUTPUTPARSER,\n\tAI_CATEGORY_RETRIEVERS,\n\tAI_CATEGORY_TEXT_SPLITTERS,\n\tAI_CATEGORY_TOOLS,\n\tAI_CATEGORY_VECTOR_STORES,\n\tAI_SUBCATEGORY,\n\tAI_CATEGORY_EMBEDDING,\n\tAI_OTHERS_NODE_CREATOR_VIEW,\n\tAI_UNCATEGORIZED_CATEGORY,\n\tCONVERT_TO_FILE_NODE_TYPE,\n\tEXTRACT_FROM_FILE_NODE_TYPE,\n\tSET_NODE_TYPE,\n\tCODE_NODE_TYPE,\n\tDATETIME_NODE_TYPE,\n\tFILTER_NODE_TYPE,\n\tREMOVE_DUPLICATES_NODE_TYPE,\n\tSPLIT_OUT_NODE_TYPE,\n\tLIMIT_NODE_TYPE,\n\tSUMMARIZE_NODE_TYPE,\n\tAGGREGATE_NODE_TYPE,\n\tMERGE_NODE_TYPE,\n\tHTML_NODE_TYPE,\n\tMARKDOWN_NODE_TYPE,\n\tXML_NODE_TYPE,\n\tCRYPTO_NODE_TYPE,\n\tIF_NODE_TYPE,\n\tSPLIT_IN_BATCHES_NODE_TYPE,\n\tHTTP_REQUEST_NODE_TYPE,\n\tHELPERS_SUBCATEGORY,\n\tRSS_READ_NODE_TYPE,\n\tEMAIL_SEND_NODE_TYPE,\n\tEDIT_IMAGE_NODE_TYPE,\n\tCOMPRESSION_NODE_TYPE,\n} from '@/constants';\nimport { useI18n } from '@/composables/useI18n';\nimport { useNodeTypesStore } from '@/stores/nodeTypes.store';\nimport type { SimplifiedNodeType } from '@/Interface';\nimport type { INodeTypeDescription } from 'n8n-workflow';\nimport { NodeConnectionType } from 'n8n-workflow';\nimport { useTemplatesStore } from '@/stores/templates.store';\n\nexport interface NodeViewItemSection {\n\tkey: string;\n\ttitle: string;\n\titems: string[];\n}\n\nexport interface NodeViewItem {\n\tkey: string;\n\ttype: string;\n\tproperties: {\n\t\tname?: string;\n\t\ttitle?: string;\n\t\ticon?: string;\n\t\ticonProps?: {\n\t\t\tcolor?: string;\n\t\t};\n\t\tconnectionType?: NodeConnectionType;\n\t\tpanelClass?: string;\n\t\tgroup?: string[];\n\t\tsections?: NodeViewItemSection[];\n\t\tdescription?: string;\n\t\tdisplayName?: string;\n\t\ttag?: string;\n\t\tforceIncludeNodes?: string[];\n\t\ticonData?: {\n\t\t\ttype: string;\n\t\t\ticon?: string;\n\t\t\tfileBuffer?: string;\n\t\t};\n\t};\n\tcategory?: string | string[];\n}\n\ninterface NodeView {\n\tvalue: string;\n\ttitle: string;\n\tinfo?: string;\n\tsubtitle?: string;\n\titems: NodeViewItem[];\n}\n\nfunction getAiNodesBySubcategory(nodes: INodeTypeDescription[], subcategory: string) {\n\treturn nodes\n\t\t.filter(\n\t\t\t(node) => !node.hidden && node.codex?.subcategories?.[AI_SUBCATEGORY]?.includes(subcategory),\n\t\t)\n\t\t.map((node) => ({\n\t\t\tkey: node.name,\n\t\t\ttype: 'node',\n\t\t\tproperties: {\n\t\t\t\tgroup: [],\n\t\t\t\tname: node.name,\n\t\t\t\tdisplayName: node.displayName,\n\t\t\t\ttitle: node.displayName,\n\t\t\t\tdescription: node.description,\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\ticon: node.icon!,\n\t\t\t\ticonData: node.name.toLowerCase().includes('openai')\n\t\t\t\t\t? {\n\t\t\t\t\t\t\ttype: 'file',\n\t\t\t\t\t\t\ticon: 'openai',\n\t\t\t\t\t\t\tfileBuffer: '/static/open-ai.svg',\n\t\t\t\t\t\t}\n\t\t\t\t\t: undefined,\n\t\t\t},\n\t\t}))\n\t\t.sort((a, b) => a.properties.displayName.localeCompare(b.properties.displayName));\n}\n\nexport function AIView(_nodes: SimplifiedNodeType[]): NodeView {\n\tconst i18n = useI18n();\n\tconst nodeTypesStore = useNodeTypesStore();\n\tconst templatesStore = useTemplatesStore();\n\n\tconst chainNodes = getAiNodesBySubcategory(nodeTypesStore.allLatestNodeTypes, AI_CATEGORY_CHAINS);\n\tconst agentNodes = getAiNodesBySubcategory(nodeTypesStore.allLatestNodeTypes, AI_CATEGORY_AGENTS);\n\n\treturn {\n\t\tvalue: AI_NODE_CREATOR_VIEW,\n\t\ttitle: i18n.baseText('nodeCreator.aiPanel.aiNodes'),\n\t\tsubtitle: i18n.baseText('nodeCreator.aiPanel.selectAiNode'),\n\t\tinfo: i18n.baseText('nodeCreator.aiPanel.infoBox', {\n\t\t\tinterpolate: { link: templatesStore.getWebsiteCategoryURL('ai') },\n\t\t}),\n\t\titems: [\n\t\t\t...chainNodes,\n\t\t\t...agentNodes,\n\t\t\t{\n\t\t\t\tkey: AI_OTHERS_NODE_CREATOR_VIEW,\n\t\t\t\ttype: 'view',\n\t\t\t\tproperties: {\n\t\t\t\t\ttitle: i18n.baseText('nodeCreator.aiPanel.aiOtherNodes'),\n\t\t\t\t\ticon: 'robot',\n\t\t\t\t\tdescription: i18n.baseText('nodeCreator.aiPanel.aiOtherNodesDescription'),\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t};\n}\nexport function AINodesView(_nodes: SimplifiedNodeType[]): NodeView {\n\tconst i18n = useI18n();\n\n\tfunction getAISubcategoryProperties(nodeConnectionType: NodeConnectionType) {\n\t\treturn {\n\t\t\tconnectionType: nodeConnectionType,\n\t\t\ticonProps: {\n\t\t\t\tcolor: `var(--node-type-${nodeConnectionType}-color)`,\n\t\t\t},\n\t\t\tpanelClass: `nodes-list-panel-${nodeConnectionType}`,\n\t\t};\n\t}\n\n\treturn {\n\t\tvalue: AI_OTHERS_NODE_CREATOR_VIEW,\n\t\ttitle: i18n.baseText('nodeCreator.aiPanel.aiOtherNodes'),\n\t\tsubtitle: i18n.baseText('nodeCreator.aiPanel.selectAiNode'),\n\t\titems: [\n\t\t\t{\n\t\t\t\tkey: AI_CATEGORY_DOCUMENT_LOADERS,\n\t\t\t\ttype: 'subcategory',\n\t\t\t\tproperties: {\n\t\t\t\t\ttitle: AI_CATEGORY_DOCUMENT_LOADERS,\n\t\t\t\t\ticon: 'file-import',\n\t\t\t\t\t...getAISubcategoryProperties(NodeConnectionType.AiDocument),\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: AI_CATEGORY_LANGUAGE_MODELS,\n\t\t\t\ttype: 'subcategory',\n\t\t\t\tproperties: {\n\t\t\t\t\ttitle: AI_CATEGORY_LANGUAGE_MODELS,\n\t\t\t\t\ticon: 'language',\n\t\t\t\t\t...getAISubcategoryProperties(NodeConnectionType.AiLanguageModel),\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: AI_CATEGORY_MEMORY,\n\t\t\t\ttype: 'subcategory',\n\t\t\t\tproperties: {\n\t\t\t\t\ttitle: AI_CATEGORY_MEMORY,\n\t\t\t\t\ticon: 'brain',\n\t\t\t\t\t...getAISubcategoryProperties(NodeConnectionType.AiMemory),\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: AI_CATEGORY_OUTPUTPARSER,\n\t\t\t\ttype: 'subcategory',\n\t\t\t\tproperties: {\n\t\t\t\t\ttitle: AI_CATEGORY_OUTPUTPARSER,\n\t\t\t\t\ticon: 'list',\n\t\t\t\t\t...getAISubcategoryProperties(NodeConnectionType.AiOutputParser),\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: AI_CATEGORY_RETRIEVERS,\n\t\t\t\ttype: 'subcategory',\n\t\t\t\tproperties: {\n\t\t\t\t\ttitle: AI_CATEGORY_RETRIEVERS,\n\t\t\t\t\ticon: 'search',\n\t\t\t\t\t...getAISubcategoryProperties(NodeConnectionType.AiRetriever),\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: AI_CATEGORY_TEXT_SPLITTERS,\n\t\t\t\ttype: 'subcategory',\n\t\t\t\tproperties: {\n\t\t\t\t\ttitle: AI_CATEGORY_TEXT_SPLITTERS,\n\t\t\t\t\ticon: 'grip-lines-vertical',\n\t\t\t\t\t...getAISubcategoryProperties(NodeConnectionType.AiTextSplitter),\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: AI_CATEGORY_TOOLS,\n\t\t\t\ttype: 'subcategory',\n\t\t\t\tproperties: {\n\t\t\t\t\ttitle: AI_CATEGORY_TOOLS,\n\t\t\t\t\ticon: 'tools',\n\t\t\t\t\t...getAISubcategoryProperties(NodeConnectionType.AiTool),\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: AI_CATEGORY_EMBEDDING,\n\t\t\t\ttype: 'subcategory',\n\t\t\t\tproperties: {\n\t\t\t\t\ttitle: AI_CATEGORY_EMBEDDING,\n\t\t\t\t\ticon: 'vector-square',\n\t\t\t\t\t...getAISubcategoryProperties(NodeConnectionType.AiEmbedding),\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: AI_CATEGORY_VECTOR_STORES,\n\t\t\t\ttype: 'subcategory',\n\t\t\t\tproperties: {\n\t\t\t\t\ttitle: AI_CATEGORY_VECTOR_STORES,\n\t\t\t\t\ticon: 'project-diagram',\n\t\t\t\t\t...getAISubcategoryProperties(NodeConnectionType.AiVectorStore),\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: AI_UNCATEGORIZED_CATEGORY,\n\t\t\t\ttype: 'subcategory',\n\t\t\t\tproperties: {\n\t\t\t\t\ttitle: AI_UNCATEGORIZED_CATEGORY,\n\t\t\t\t\ticon: 'code',\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t};\n}\n\nexport function TriggerView() {\n\tconst i18n = useI18n();\n\n\tconst view: NodeView = {\n\t\tvalue: TRIGGER_NODE_CREATOR_VIEW,\n\t\ttitle: i18n.baseText('nodeCreator.triggerHelperPanel.selectATrigger'),\n\t\tsubtitle: i18n.baseText('nodeCreator.triggerHelperPanel.selectATriggerDescription'),\n\t\titems: [\n\t\t\t{\n\t\t\t\tkey: DEFAULT_SUBCATEGORY,\n\t\t\t\ttype: 'subcategory',\n\t\t\t\tproperties: {\n\t\t\t\t\tforceIncludeNodes: [WEBHOOK_NODE_TYPE, EMAIL_IMAP_NODE_TYPE],\n\t\t\t\t\ttitle: 'App Trigger Nodes',\n\t\t\t\t\ticon: 'satellite-dish',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: SCHEDULE_TRIGGER_NODE_TYPE,\n\t\t\t\ttype: 'node',\n\t\t\t\tcategory: [CORE_NODES_CATEGORY],\n\t\t\t\tproperties: {\n\t\t\t\t\tgroup: [],\n\t\t\t\t\tname: SCHEDULE_TRIGGER_NODE_TYPE,\n\t\t\t\t\tdisplayName: i18n.baseText('nodeCreator.triggerHelperPanel.scheduleTriggerDisplayName'),\n\t\t\t\t\tdescription: i18n.baseText('nodeCreator.triggerHelperPanel.scheduleTriggerDescription'),\n\t\t\t\t\ticon: 'fa:clock',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: WEBHOOK_NODE_TYPE,\n\t\t\t\ttype: 'node',\n\t\t\t\tcategory: [CORE_NODES_CATEGORY],\n\t\t\t\tproperties: {\n\t\t\t\t\tgroup: [],\n\t\t\t\t\tname: WEBHOOK_NODE_TYPE,\n\t\t\t\t\tdisplayName: i18n.baseText('nodeCreator.triggerHelperPanel.webhookTriggerDisplayName'),\n\t\t\t\t\tdescription: i18n.baseText('nodeCreator.triggerHelperPanel.webhookTriggerDescription'),\n\t\t\t\t\ticonData: {\n\t\t\t\t\t\ttype: 'file',\n\t\t\t\t\t\ticon: 'webhook',\n\t\t\t\t\t\tfileBuffer: '/static/webhook-icon.svg',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: FORM_TRIGGER_NODE_TYPE,\n\t\t\t\ttype: 'node',\n\t\t\t\tcategory: [CORE_NODES_CATEGORY],\n\t\t\t\tproperties: {\n\t\t\t\t\tgroup: [],\n\t\t\t\t\tname: FORM_TRIGGER_NODE_TYPE,\n\t\t\t\t\tdisplayName: i18n.baseText('nodeCreator.triggerHelperPanel.formTriggerDisplayName'),\n\t\t\t\t\tdescription: i18n.baseText('nodeCreator.triggerHelperPanel.formTriggerDescription'),\n\t\t\t\t\ticonData: {\n\t\t\t\t\t\ttype: 'file',\n\t\t\t\t\t\ticon: 'form',\n\t\t\t\t\t\tfileBuffer: '/static/form-grey.svg',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: MANUAL_TRIGGER_NODE_TYPE,\n\t\t\t\ttype: 'node',\n\t\t\t\tcategory: [CORE_NODES_CATEGORY],\n\t\t\t\tproperties: {\n\t\t\t\t\tgroup: [],\n\t\t\t\t\tname: MANUAL_TRIGGER_NODE_TYPE,\n\t\t\t\t\tdisplayName: i18n.baseText('nodeCreator.triggerHelperPanel.manualTriggerDisplayName'),\n\t\t\t\t\tdescription: i18n.baseText('nodeCreator.triggerHelperPanel.manualTriggerDescription'),\n\t\t\t\t\ticon: 'fa:mouse-pointer',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: EXECUTE_WORKFLOW_TRIGGER_NODE_TYPE,\n\t\t\t\ttype: 'node',\n\t\t\t\tcategory: [CORE_NODES_CATEGORY],\n\t\t\t\tproperties: {\n\t\t\t\t\tgroup: [],\n\t\t\t\t\tname: EXECUTE_WORKFLOW_TRIGGER_NODE_TYPE,\n\t\t\t\t\tdisplayName: i18n.baseText('nodeCreator.triggerHelperPanel.workflowTriggerDisplayName'),\n\t\t\t\t\tdescription: i18n.baseText('nodeCreator.triggerHelperPanel.workflowTriggerDescription'),\n\t\t\t\t\ticon: 'fa:sign-out-alt',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: 'subcategory',\n\t\t\t\tkey: OTHER_TRIGGER_NODES_SUBCATEGORY,\n\t\t\t\tcategory: CORE_NODES_CATEGORY,\n\t\t\t\tproperties: {\n\t\t\t\t\ttitle: OTHER_TRIGGER_NODES_SUBCATEGORY,\n\t\t\t\t\ticon: 'folder-open',\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t};\n\n\treturn view;\n}\n\nexport function RegularView(nodes: SimplifiedNodeType[]) {\n\tconst i18n = useI18n();\n\n\tconst view: NodeView = {\n\t\tvalue: REGULAR_NODE_CREATOR_VIEW,\n\t\ttitle: i18n.baseText('nodeCreator.triggerHelperPanel.whatHappensNext'),\n\t\titems: [\n\t\t\t{\n\t\t\t\tkey: DEFAULT_SUBCATEGORY,\n\t\t\t\ttype: 'subcategory',\n\t\t\t\tproperties: {\n\t\t\t\t\ttitle: 'App Regular Nodes',\n\t\t\t\t\ticon: 'globe',\n\t\t\t\t\tforceIncludeNodes: [RSS_READ_NODE_TYPE, EMAIL_SEND_NODE_TYPE],\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: 'subcategory',\n\t\t\t\tkey: TRANSFORM_DATA_SUBCATEGORY,\n\t\t\t\tcategory: CORE_NODES_CATEGORY,\n\t\t\t\tproperties: {\n\t\t\t\t\ttitle: TRANSFORM_DATA_SUBCATEGORY,\n\t\t\t\t\ticon: 'pen',\n\t\t\t\t\tsections: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tkey: 'popular',\n\t\t\t\t\t\t\ttitle: i18n.baseText('nodeCreator.sectionNames.popular'),\n\t\t\t\t\t\t\titems: [SET_NODE_TYPE, CODE_NODE_TYPE, DATETIME_NODE_TYPE],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tkey: 'addOrRemove',\n\t\t\t\t\t\t\ttitle: i18n.baseText('nodeCreator.sectionNames.transform.addOrRemove'),\n\t\t\t\t\t\t\titems: [\n\t\t\t\t\t\t\t\tFILTER_NODE_TYPE,\n\t\t\t\t\t\t\t\tREMOVE_DUPLICATES_NODE_TYPE,\n\t\t\t\t\t\t\t\tSPLIT_OUT_NODE_TYPE,\n\t\t\t\t\t\t\t\tLIMIT_NODE_TYPE,\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\tkey: 'combine',\n\t\t\t\t\t\t\ttitle: i18n.baseText('nodeCreator.sectionNames.transform.combine'),\n\t\t\t\t\t\t\titems: [SUMMARIZE_NODE_TYPE, AGGREGATE_NODE_TYPE, MERGE_NODE_TYPE],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tkey: 'convert',\n\t\t\t\t\t\t\ttitle: i18n.baseText('nodeCreator.sectionNames.transform.convert'),\n\t\t\t\t\t\t\titems: [\n\t\t\t\t\t\t\t\tHTML_NODE_TYPE,\n\t\t\t\t\t\t\t\tMARKDOWN_NODE_TYPE,\n\t\t\t\t\t\t\t\tXML_NODE_TYPE,\n\t\t\t\t\t\t\t\tCRYPTO_NODE_TYPE,\n\t\t\t\t\t\t\t\tEXTRACT_FROM_FILE_NODE_TYPE,\n\t\t\t\t\t\t\t\tCONVERT_TO_FILE_NODE_TYPE,\n\t\t\t\t\t\t\t\tCOMPRESSION_NODE_TYPE,\n\t\t\t\t\t\t\t\tEDIT_IMAGE_NODE_TYPE,\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\ttype: 'subcategory',\n\t\t\t\tkey: FLOWS_CONTROL_SUBCATEGORY,\n\t\t\t\tcategory: CORE_NODES_CATEGORY,\n\t\t\t\tproperties: {\n\t\t\t\t\ttitle: FLOWS_CONTROL_SUBCATEGORY,\n\t\t\t\t\ticon: 'code-branch',\n\t\t\t\t\tsections: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tkey: 'popular',\n\t\t\t\t\t\t\ttitle: i18n.baseText('nodeCreator.sectionNames.popular'),\n\t\t\t\t\t\t\titems: [FILTER_NODE_TYPE, IF_NODE_TYPE, SPLIT_IN_BATCHES_NODE_TYPE, MERGE_NODE_TYPE],\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\ttype: 'subcategory',\n\t\t\t\tkey: FILES_SUBCATEGORY,\n\t\t\t\tcategory: CORE_NODES_CATEGORY,\n\t\t\t\tproperties: {\n\t\t\t\t\ttitle: FILES_SUBCATEGORY,\n\t\t\t\t\ticon: 'file-alt',\n\t\t\t\t\tsections: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tkey: 'popular',\n\t\t\t\t\t\t\ttitle: i18n.baseText('nodeCreator.sectionNames.popular'),\n\t\t\t\t\t\t\titems: [CONVERT_TO_FILE_NODE_TYPE, EXTRACT_FROM_FILE_NODE_TYPE],\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\ttype: 'subcategory',\n\t\t\t\tkey: HELPERS_SUBCATEGORY,\n\t\t\t\tcategory: CORE_NODES_CATEGORY,\n\t\t\t\tproperties: {\n\t\t\t\t\ttitle: HELPERS_SUBCATEGORY,\n\t\t\t\t\ticon: 'toolbox',\n\t\t\t\t\tsections: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tkey: 'popular',\n\t\t\t\t\t\t\ttitle: i18n.baseText('nodeCreator.sectionNames.popular'),\n\t\t\t\t\t\t\titems: [HTTP_REQUEST_NODE_TYPE, WEBHOOK_NODE_TYPE, CODE_NODE_TYPE],\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 hasAINodes = (nodes ?? []).some((node) => node.codex?.categories?.includes(AI_SUBCATEGORY));\n\tif (hasAINodes)\n\t\tview.items.push({\n\t\t\tkey: AI_NODE_CREATOR_VIEW,\n\t\t\ttype: 'view',\n\t\t\tproperties: {\n\t\t\t\ttitle: i18n.baseText('nodeCreator.aiPanel.langchainAiNodes'),\n\t\t\t\ticon: 'robot',\n\t\t\t\tdescription: i18n.baseText('nodeCreator.aiPanel.nodesForAi'),\n\t\t\t\ttag: i18n.baseText('nodeCreator.aiPanel.newTag'),\n\t\t\t},\n\t\t});\n\n\tview.items.push({\n\t\tkey: TRIGGER_NODE_CREATOR_VIEW,\n\t\ttype: 'view',\n\t\tproperties: {\n\t\t\ttitle: i18n.baseText('nodeCreator.triggerHelperPanel.addAnotherTrigger'),\n\t\t\ticon: 'bolt',\n\t\t\tdescription: i18n.baseText('nodeCreator.triggerHelperPanel.addAnotherTriggerDescription'),\n\t\t},\n\t});\n\n\treturn view;\n}\n","import { ref } from 'vue';\nimport { defineStore } from 'pinia';\n\nexport type KeyboardKey = (typeof WATCHED_KEYS)[number];\ninterface KeyHook {\n\tkeyboardKeys: KeyboardKey[];\n\tcondition?: (type: string, activeItemId: string) => boolean;\n\thandler: (activeItemId: string, keyboardKey: KeyboardKey) => void;\n}\n\nexport const KEYBOARD_ID_ATTR = 'data-keyboard-nav-id';\nexport const WATCHED_KEYS = [\n\t'ArrowUp',\n\t'ArrowDown',\n\t'ArrowLeft',\n\t'ArrowRight',\n\t'Enter',\n\t'Escape',\n\t'Tab',\n];\n\nexport const useKeyboardNavigation = defineStore('nodeCreatorKeyboardNavigation', () => {\n\tconst selectableItems = ref<Array<WeakRef<Element>>>([]);\n\tconst activeItemId = ref<string | null>(null);\n\t// Array of objects that contains key code and handler\n\tconst keysHooks = ref<Record<string, KeyHook>>({});\n\n\tfunction getItemType(element?: Element) {\n\t\treturn element?.getAttribute('data-keyboard-nav-type');\n\t}\n\tfunction getElementId(element?: Element) {\n\t\treturn element?.getAttribute(KEYBOARD_ID_ATTR) || undefined;\n\t}\n\tasync function refreshSelectableItems(): Promise<void> {\n\t\treturn await new Promise((resolve) => {\n\t\t\t// Wait for DOM to update\n\t\t\tcleanupSelectableItems();\n\t\t\tsetTimeout(() => {\n\t\t\t\tselectableItems.value = Array.from(\n\t\t\t\t\tdocument.querySelectorAll('[data-keyboard-nav-type]'),\n\t\t\t\t).map((el) => new WeakRef(el));\n\t\t\t\tresolve();\n\t\t\t}, 0);\n\t\t});\n\t}\n\n\tfunction executeKeyHooks(keyboardKey: KeyboardKey, activeItem: Element) {\n\t\tconst flatHooks = Object.values(keysHooks.value);\n\t\tconst hooks = flatHooks.filter((hook) => hook.keyboardKeys.includes(keyboardKey));\n\n\t\thooks.forEach((hook) => {\n\t\t\tif (!activeItemId.value) return;\n\n\t\t\tconst conditionPassed =\n\t\t\t\thook.condition === undefined ||\n\t\t\t\thook.condition(getItemType(activeItem) || '', activeItemId.value);\n\n\t\t\tif (conditionPassed && activeItemId.value) {\n\t\t\t\thook.handler(activeItemId.value, keyboardKey);\n\t\t\t}\n\t\t});\n\t}\n\n\tasync function onKeyDown(e: KeyboardEvent) {\n\t\tconst pressedKey = e.key;\n\t\tif (!WATCHED_KEYS.includes(pressedKey)) return;\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\tawait refreshSelectableItems();\n\t\tconst activeItemIndex = selectableItems.value.findIndex(\n\t\t\t(item) => getElementId(item?.deref()) === activeItemId.value,\n\t\t);\n\t\tconst activeItem = selectableItems.value[activeItemIndex]?.deref();\n\n\t\tconst isArrowDown = pressedKey === 'ArrowDown';\n\t\tconst isArrowUp = pressedKey === 'ArrowUp';\n\n\t\tif (!activeItem) return;\n\n\t\tif (isArrowDown) {\n\t\t\tconst nextItemIndex =\n\t\t\t\tactiveItemIndex < selectableItems.value.length - 1 ? activeItemIndex + 1 : 0;\n\n\t\t\tsetActiveItem(selectableItems.value[nextItemIndex]?.deref());\n\t\t}\n\t\tif (isArrowUp) {\n\t\t\tconst previousIndex =\n\t\t\t\tactiveItemIndex > 0 ? activeItemIndex - 1 : selectableItems.value.length - 1;\n\n\t\t\tsetActiveItem(selectableItems.value[previousIndex]?.deref());\n\t\t}\n\t\texecuteKeyHooks(pressedKey, activeItem);\n\t}\n\n\tfunction setActiveItemId(id: string) {\n\t\tactiveItemId.value = id;\n\t}\n\n\tfunction setActiveItem(item?: Element) {\n\t\tconst itemId = getElementId(item);\n\t\tif (!itemId) return;\n\n\t\tsetActiveItemId(itemId);\n\t\tif (item?.scrollIntoView) {\n\t\t\titem?.scrollIntoView({ block: 'center' });\n\t\t}\n\t}\n\n\tasync function setActiveItemIndex(index: number) {\n\t\tawait refreshSelectableItems();\n\n\t\tsetActiveItem(selectableItems.value[index]?.deref());\n\t}\n\n\tfunction attachKeydownEvent() {\n\t\tdocument.addEventListener('keydown', onKeyDown, { capture: true });\n\t}\n\n\tfunction detachKeydownEvent() {\n\t\tcleanupSelectableItems();\n\t\tdocument.removeEventListener('keydown', onKeyDown, { capture: true });\n\t}\n\n\tfunction registerKeyHook(name: string, hook: KeyHook) {\n\t\thook.keyboardKeys.forEach((keyboardKey) => {\n\t\t\tif (WATCHED_KEYS.includes(keyboardKey)) {\n\t\t\t\tkeysHooks.value = { ...keysHooks.value, [name]: hook };\n\t\t\t} else {\n\t\t\t\tthrow new Error(`Key ${keyboardKey} is not supported`);\n\t\t\t}\n\t\t});\n\t}\n\n\tfunction cleanupSelectableItems() {\n\t\t// Cleanup to make sure DOM elements get garbage collected\n\t\tselectableItems.value = [];\n\t}\n\n\tfunction getActiveItemIndex() {\n\t\treturn selectableItems.value.findIndex(\n\t\t\t(item) => getElementId(item?.deref()) === activeItemId.value,\n\t\t);\n\t}\n\n\treturn {\n\t\tactiveItemId,\n\t\tattachKeydownEvent,\n\t\trefreshSelectableItems,\n\t\tdetachKeydownEvent,\n\t\tregisterKeyHook,\n\t\tgetActiveItemIndex,\n\t\tsetActiveItemId,\n\t\tsetActiveItemIndex,\n\t};\n});\n","import type { INodeCreateElement, NodeFilterType, SimplifiedNodeType } from '@/Interface';\nimport {\n\tAI_CODE_NODE_TYPE,\n\tAI_OTHERS_NODE_CREATOR_VIEW,\n\tDEFAULT_SUBCATEGORY,\n\tTRIGGER_NODE_CREATOR_VIEW,\n} from '@/constants';\nimport { defineStore } from 'pinia';\nimport { v4 as uuid } from 'uuid';\nimport { computed, nextTick, ref } from 'vue';\n\nimport { useNodeCreatorStore } from '@/stores/nodeCreator.store';\n\nimport {\n\tflattenCreateElements,\n\tgroupItemsInSections,\n\tsearchNodes,\n\tsortNodeCreateElements,\n\tsubcategorizeItems,\n\ttransformNodeType,\n} from '../utils';\n\nimport type { NodeViewItem, NodeViewItemSection } from '@/components/Node/NodeCreator/viewsData';\nimport { AINodesView } from '@/components/Node/NodeCreator/viewsData';\nimport { useI18n } from '@/composables/useI18n';\nimport { useKeyboardNavigation } from './useKeyboardNavigation';\n\nimport { useNodeTypesStore } from '@/stores/nodeTypes.store';\nimport type { INodeInputFilter, NodeConnectionType } from 'n8n-workflow';\n\ninterface ViewStack {\n\tuuid?: string;\n\ttitle?: string;\n\tsubtitle?: string;\n\tsearch?: string;\n\tsubcategory?: string;\n\tinfo?: string;\n\tnodeIcon?: {\n\t\ticonType?: string;\n\t\ticon?: string;\n\t\tcolor?: string;\n\t};\n\ticonUrl?: string;\n\trootView?: NodeFilterType;\n\tactiveIndex?: number;\n\ttransitionDirection?: 'in' | 'out';\n\thasSearch?: boolean;\n\tpreventBack?: boolean;\n\titems?: INodeCreateElement[];\n\tbaselineItems?: INodeCreateElement[];\n\tsearchItems?: SimplifiedNodeType[];\n\tforceIncludeNodes?: string[];\n\tmode?: 'actions' | 'nodes';\n\tbaseFilter?: (item: INodeCreateElement) => boolean;\n\titemsMapper?: (item: INodeCreateElement) => INodeCreateElement;\n\tpanelClass?: string;\n\tsections?: string[] | NodeViewItemSection[];\n}\n\nexport const useViewStacks = defineStore('nodeCreatorViewStacks', () => {\n\tconst nodeCreatorStore = useNodeCreatorStore();\n\tconst { getActiveItemIndex } = useKeyboardNavigation();\n\n\tconst viewStacks = ref<ViewStack[]>([]);\n\n\tconst activeStackItems = computed<INodeCreateElement[]>(() => {\n\t\tconst stack = viewStacks.value[viewStacks.value.length - 1];\n\n\t\tif (!stack?.baselineItems) {\n\t\t\treturn stack.items ? extendItemsWithUUID(stack.items) : [];\n\t\t}\n\n\t\tif (stack.search && searchBaseItems.value) {\n\t\t\tconst searchBase =\n\t\t\t\tsearchBaseItems.value.length > 0\n\t\t\t\t\t? searchBaseItems.value\n\t\t\t\t\t: flattenCreateElements(stack.baselineItems ?? []);\n\n\t\t\treturn extendItemsWithUUID(searchNodes(stack.search || '', searchBase));\n\t\t}\n\t\treturn extendItemsWithUUID(stack.baselineItems);\n\t});\n\n\tconst activeViewStack = computed<ViewStack>(() => {\n\t\tconst stack = viewStacks.value[viewStacks.value.length - 1];\n\t\tif (!stack) return {};\n\n\t\tconst flatBaselineItems = flattenCreateElements(stack.baselineItems ?? []);\n\n\t\treturn {\n\t\t\t...stack,\n\t\t\titems: activeStackItems.value,\n\t\t\thasSearch: flatBaselineItems.length > 8 || stack?.hasSearch,\n\t\t};\n\t});\n\n\tconst activeViewStackMode = computed(\n\t\t() => activeViewStack.value.mode || TRIGGER_NODE_CREATOR_VIEW,\n\t);\n\n\tconst searchBaseItems = computed<INodeCreateElement[]>(() => {\n\t\tconst stack = viewStacks.value[viewStacks.value.length - 1];\n\t\tif (!stack?.searchItems) return [];\n\n\t\treturn stack.searchItems.map((item) => transformNodeType(item, stack.subcategory));\n\t});\n\n\t// Generate a delta between the global search results(all nodes) and the stack search results\n\tconst globalSearchItemsDiff = computed<INodeCreateElement[]>(() => {\n\t\tconst stack = viewStacks.value[viewStacks.value.length - 1];\n\t\tif (!stack?.search) return [];\n\n\t\tconst allNodes = nodeCreatorStore.mergedNodes.map((item) => transformNodeType(item));\n\t\tconst globalSearchResult = extendItemsWithUUID(searchNodes(stack.search || '', allNodes));\n\n\t\treturn globalSearchResult.filter((item) => {\n\t\t\treturn !activeStackItems.value.find((activeItem) => activeItem.key === item.key);\n\t\t});\n\t});\n\n\tconst itemsBySubcategory = computed(() => subcategorizeItems(nodeCreatorStore.mergedNodes));\n\n\tasync function gotoCompatibleConnectionView(\n\t\tconnectionType: NodeConnectionType,\n\t\tisOutput?: boolean,\n\t\tfilter?: INodeInputFilter,\n\t) {\n\t\tconst i18n = useI18n();\n\n\t\tlet nodesByConnectionType: { [key: string]: string[] };\n\t\tlet relatedAIView: { properties: NodeViewItem['properties'] } | undefined;\n\n\t\tif (isOutput === true) {\n\t\t\tnodesByConnectionType = useNodeTypesStore().visibleNodeTypesByInputConnectionTypeNames;\n\t\t\trelatedAIView = {\n\t\t\t\tproperties: {\n\t\t\t\t\ttitle: i18n.baseText('nodeCreator.aiPanel.aiNodes'),\n\t\t\t\t\ticon: 'robot',\n\t\t\t\t},\n\t\t\t};\n\t\t} else {\n\t\t\tnodesByConnectionType = useNodeTypesStore().visibleNodeTypesByOutputConnectionTypeNames;\n\n\t\t\trelatedAIView = AINodesView([]).items.find(\n\t\t\t\t(item) => item.properties.connectionType === connectionType,\n\t\t\t);\n\t\t}\n\n\t\tawait nextTick();\n\t\tpushViewStack({\n\t\t\ttitle: relatedAIView?.properties.title,\n\t\t\trootView: AI_OTHERS_NODE_CREATOR_VIEW,\n\t\t\tmode: 'nodes',\n\t\t\titems: nodeCreatorStore.allNodeCreatorNodes,\n\t\t\tnodeIcon: {\n\t\t\t\ticonType: 'icon',\n\t\t\t\ticon: relatedAIView?.properties.icon,\n\t\t\t\tcolor: relatedAIView?.properties.iconProps?.color,\n\t\t\t},\n\t\t\tpanelClass: relatedAIView?.properties.panelClass,\n\t\t\tbaseFilter: (i: INodeCreateElement) => {\n\t\t\t\t// AI Code node could have any connection type so we don't want to display it\n\t\t\t\t// in the compatible connection view as it would be displayed in all of them\n\t\t\t\tif (i.key === AI_CODE_NODE_TYPE) return false;\n\t\t\t\tconst displayNode = nodesByConnectionType[connectionType].includes(i.key);\n\n\t\t\t\t// TODO: Filtering works currently fine for displaying compatible node when dropping\n\t\t\t\t// input connections. However, it does not work for output connections.\n\t\t\t\t// For that reason does it currently display nodes that are maybe not compatible\n\t\t\t\t// but then errors once it got selected by the user.\n\t\t\t\tif (displayNode && filter?.nodes?.length) {\n\t\t\t\t\treturn filter.nodes.includes(i.key);\n\t\t\t\t}\n\n\t\t\t\treturn displayNode;\n\t\t\t},\n\t\t\titemsMapper(item) {\n\t\t\t\treturn {\n\t\t\t\t\t...item,\n\t\t\t\t\tsubcategory: connectionType,\n\t\t\t\t};\n\t\t\t},\n\t\t\tpreventBack: true,\n\t\t});\n\t}\n\n\tfunction setStackBaselineItems() {\n\t\tconst stack = viewStacks.value[viewStacks.value.length - 1];\n\t\tif (!stack || !activeViewStack.value.uuid) return;\n\n\t\tlet stackItems = stack?.items ?? [];\n\n\t\tif (!stack?.items) {\n\t\t\tconst subcategory = stack?.subcategory ?? DEFAULT_SUBCATEGORY;\n\t\t\tconst itemsInSubcategory = itemsBySubcategory.value[subcategory];\n\t\t\tconst sections = stack.sections;\n\n\t\t\tif (sections) {\n\t\t\t\tstackItems = groupItemsInSections(itemsInSubcategory, sections);\n\t\t\t} else {\n\t\t\t\tstackItems = itemsInSubcategory;\n\t\t\t}\n\t\t}\n\n\t\t// Ensure that the nodes specified in `stack.forceIncludeNodes` are always included,\n\t\t// regardless of whether the subcategory is matched\n\t\tif ((stack.forceIncludeNodes ?? []).length > 0) {\n\t\t\tconst matchedNodes = nodeCreatorStore.mergedNodes\n\t\t\t\t.filter((item) => stack.forceIncludeNodes?.includes(item.name))\n\t\t\t\t.map((item) => transformNodeType(item, stack.subcategory));\n\n\t\t\tstackItems.push(...matchedNodes);\n\t\t}\n\n\t\tif (stack.baseFilter) {\n\t\t\tstackItems = stackItems.filter(stack.baseFilter);\n\t\t}\n\n\t\tif (stack.itemsMapper) {\n\t\t\tstackItems = stackItems.map(stack.itemsMapper);\n\t\t}\n\n\t\t// Sort only if non-root view\n\t\tif (!stack.items) {\n\t\t\tstackItems = sortNodeCreateElements(stackItems);\n\t\t}\n\n\t\tupdateCurrentViewStack({ baselineItems: stackItems });\n\t}\n\n\tfunction extendItemsWithUUID(items: INodeCreateElement[]) {\n\t\treturn items.map((item) => ({\n\t\t\t...item,\n\t\t\tuuid: `${item.key}-${uuid()}`,\n\t\t}));\n\t}\n\n\tfunction pushViewStack(stack: ViewStack) {\n\t\tif (activeViewStack.value.uuid) {\n\t\t\tupdateCurrentViewStack({ activeIndex: getActiveItemIndex() });\n\t\t}\n\n\t\tconst newStackUuid = uuid();\n\t\tviewStacks.value.push({\n\t\t\t...stack,\n\t\t\tuuid: newStackUuid,\n\t\t\ttransitionDirection: 'in',\n\t\t\tactiveIndex: 0,\n\t\t});\n\t\tsetStackBaselineItems();\n\t}\n\n\tfunction popViewStack() {\n\t\tif (activeViewStack.value.uuid) {\n\t\t\tviewStacks.value.pop();\n\t\t\tupdateCurrentViewStack({ transitionDirection: 'out' });\n\t\t}\n\t}\n\n\tfunction updateCurrentViewStack(stack: Partial<ViewStack>) {\n\t\tconst currentStack = viewStacks.value[viewStacks.value.length - 1];\n\t\tconst matchedIndex = viewStacks.value.findIndex((s) => s.uuid === currentStack.uuid);\n\t\tif (!currentStack) return;\n\n\t\t// For each key in the stack, update the matched stack\n\t\tObject.keys(stack).forEach((key) => {\n\t\t\tconst typedKey = key as keyof ViewStack;\n\t\t\tviewStacks.value[matchedIndex] = {\n\t\t\t\t...viewStacks.value[matchedIndex],\n\t\t\t\t[key]: stack[typedKey],\n\t\t\t};\n\t\t});\n\t}\n\n\tfunction resetViewStacks() {\n\t\tviewStacks.value = [];\n\t}\n\n\treturn {\n\t\tviewStacks,\n\t\tactiveViewStack,\n\t\tactiveViewStackMode,\n\t\tglobalSearchItemsDiff,\n\t\tgotoCompatibleConnectionView,\n\t\tresetViewStacks,\n\t\tupdateCurrentViewStack,\n\t\tpushViewStack,\n\t\tpopViewStack,\n\t};\n});\n"],"names":["getAiNodesBySubcategory","nodes","subcategory","node","_c","_b","_a","AI_SUBCATEGORY","a","b","AIView","_nodes","i18n","useI18n","nodeTypesStore","useNodeTypesStore","templatesStore","useTemplatesStore","chainNodes","AI_CATEGORY_CHAINS","agentNodes","AI_CATEGORY_AGENTS","AI_NODE_CREATOR_VIEW","AI_OTHERS_NODE_CREATOR_VIEW","AINodesView","getAISubcategoryProperties","nodeConnectionType","AI_CATEGORY_DOCUMENT_LOADERS","NodeConnectionType","AI_CATEGORY_LANGUAGE_MODELS","AI_CATEGORY_MEMORY","AI_CATEGORY_OUTPUTPARSER","AI_CATEGORY_RETRIEVERS","AI_CATEGORY_TEXT_SPLITTERS","AI_CATEGORY_TOOLS","AI_CATEGORY_EMBEDDING","AI_CATEGORY_VECTOR_STORES","AI_UNCATEGORIZED_CATEGORY","TriggerView","TRIGGER_NODE_CREATOR_VIEW","DEFAULT_SUBCATEGORY","WEBHOOK_NODE_TYPE","EMAIL_IMAP_NODE_TYPE","SCHEDULE_TRIGGER_NODE_TYPE","CORE_NODES_CATEGORY","FORM_TRIGGER_NODE_TYPE","MANUAL_TRIGGER_NODE_TYPE","EXECUTE_WORKFLOW_TRIGGER_NODE_TYPE","OTHER_TRIGGER_NODES_SUBCATEGORY","RegularView","view","REGULAR_NODE_CREATOR_VIEW","RSS_READ_NODE_TYPE","EMAIL_SEND_NODE_TYPE","TRANSFORM_DATA_SUBCATEGORY","SET_NODE_TYPE","CODE_NODE_TYPE","DATETIME_NODE_TYPE","FILTER_NODE_TYPE","REMOVE_DUPLICATES_NODE_TYPE","SPLIT_OUT_NODE_TYPE","LIMIT_NODE_TYPE","SUMMARIZE_NODE_TYPE","AGGREGATE_NODE_TYPE","MERGE_NODE_TYPE","HTML_NODE_TYPE","MARKDOWN_NODE_TYPE","XML_NODE_TYPE","CRYPTO_NODE_TYPE","EXTRACT_FROM_FILE_NODE_TYPE","CONVERT_TO_FILE_NODE_TYPE","COMPRESSION_NODE_TYPE","EDIT_IMAGE_NODE_TYPE","FLOWS_CONTROL_SUBCATEGORY","IF_NODE_TYPE","SPLIT_IN_BATCHES_NODE_TYPE","FILES_SUBCATEGORY","HELPERS_SUBCATEGORY","HTTP_REQUEST_NODE_TYPE","KEYBOARD_ID_ATTR","WATCHED_KEYS","useKeyboardNavigation","defineStore","selectableItems","ref","activeItemId","keysHooks","getItemType","element","getElementId","refreshSelectableItems","resolve","cleanupSelectableItems","el","executeKeyHooks","keyboardKey","activeItem","hook","onKeyDown","pressedKey","activeItemIndex","item","isArrowDown","isArrowUp","nextItemIndex","setActiveItem","previousIndex","setActiveItemId","id","itemId","setActiveItemIndex","index","attachKeydownEvent","detachKeydownEvent","registerKeyHook","name","getActiveItemIndex","useViewStacks","nodeCreatorStore","useNodeCreatorStore","viewStacks","activeStackItems","computed","stack","extendItemsWithUUID","searchBaseItems","searchBase","flattenCreateElements","searchNodes","activeViewStack","flatBaselineItems","activeViewStackMode","transformNodeType","globalSearchItemsDiff","allNodes","itemsBySubcategory","subcategorizeItems","gotoCompatibleConnectionView","connectionType","isOutput","filter","nodesByConnectionType","relatedAIView","nextTick","pushViewStack","i","AI_CODE_NODE_TYPE","displayNode","setStackBaselineItems","stackItems","itemsInSubcategory","sections","groupItemsInSections","matchedNodes","sortNodeCreateElements","updateCurrentViewStack","items","uuid","newStackUuid","popViewStack","currentStack","matchedIndex","s","key","typedKey","resetViewStacks"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{p as C,j as T,b as _,i as h,u as m,P as x,a3 as k,U as y,da as O,db as L,F as M,w as b}from"./index-CY2ZfL2U.js";import{r as D,aH as H}from"./vendor-CUQSof8H.js";function S(){const s=D(!1),d=H(),w=C({router:d}),t=T(),W=_(),u=h(),I=M(),a=m(),r=b(),n=async(i,o,p)=>{s.value=!0;const g=t.nodesIssuesExist;let e=i;if(!e||e===x){if(!await w.saveCurrentWorkflow()){s.value=!1;return}e=t.workflowId}const l=e===t.workflowId,c=t.activeWorkflows.includes(e),f={workflow_id:e,is_active:o,previous_status:c,ndv_input:p==="ndv"};I.track("User set workflow active status",f),k().run("workflowActivate.updateWorkflowActivation",f);try{if(c&&o){a.showMessage({title:r.baseText("workflowActivator.workflowIsActive"),type:"success"}),s.value=!1;return}if(l&&g&&o){a.showMessage({title:r.baseText("workflowActivator.showMessage.activeChangedNodesIssuesExistTrue.title"),message:r.baseText("workflowActivator.showMessage.activeChangedNodesIssuesExistTrue.message"),type:"error"}),s.value=!1;return}await w.updateWorkflow({workflowId:e,active:o},!u.stateIsDirty)}catch(v){const A=o?"activated":"deactivated";a.showError(v,r.baseText("workflowActivator.showError.title",{interpolate:{newStateName:A}})+":"),s.value=!1;return}const E=l?"workflow.activeChangeCurrent":"workflow.activeChange";k().run(E,{workflowId:e,active:o}),s.value=!1,l&&(o&&y(O).value!=="true"?u.openModal(L):await W.fetchPromptsData())};return{activateCurrentWorkflow:async i=>{const o=t.workflowId;return await n(o,!0,i)},updateWorkflowActivation:n,updatingWorkflowActivation:s}}export{S as u};
2
- //# sourceMappingURL=useWorkflowActivate-lrYalAwm.js.map
1
+ import{p as C,j as T,b as _,i as h,u as m,P as x,a3 as k,U as y,da as O,db as L,F as M,w as b}from"./index-BQ6Z7VRj.js";import{r as D,aH as H}from"./vendor-CUQSof8H.js";function S(){const s=D(!1),d=H(),w=C({router:d}),t=T(),W=_(),u=h(),I=M(),a=m(),r=b(),n=async(i,o,p)=>{s.value=!0;const g=t.nodesIssuesExist;let e=i;if(!e||e===x){if(!await w.saveCurrentWorkflow()){s.value=!1;return}e=t.workflowId}const l=e===t.workflowId,c=t.activeWorkflows.includes(e),f={workflow_id:e,is_active:o,previous_status:c,ndv_input:p==="ndv"};I.track("User set workflow active status",f),k().run("workflowActivate.updateWorkflowActivation",f);try{if(c&&o){a.showMessage({title:r.baseText("workflowActivator.workflowIsActive"),type:"success"}),s.value=!1;return}if(l&&g&&o){a.showMessage({title:r.baseText("workflowActivator.showMessage.activeChangedNodesIssuesExistTrue.title"),message:r.baseText("workflowActivator.showMessage.activeChangedNodesIssuesExistTrue.message"),type:"error"}),s.value=!1;return}await w.updateWorkflow({workflowId:e,active:o},!u.stateIsDirty)}catch(v){const A=o?"activated":"deactivated";a.showError(v,r.baseText("workflowActivator.showError.title",{interpolate:{newStateName:A}})+":"),s.value=!1;return}const E=l?"workflow.activeChangeCurrent":"workflow.activeChange";k().run(E,{workflowId:e,active:o}),s.value=!1,l&&(o&&y(O).value!=="true"?u.openModal(L):await W.fetchPromptsData())};return{activateCurrentWorkflow:async i=>{const o=t.workflowId;return await n(o,!0,i)},updateWorkflowActivation:n,updatingWorkflowActivation:s}}export{S as u};
2
+ //# sourceMappingURL=useWorkflowActivate-Bl43vPgP.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useWorkflowActivate-lrYalAwm.js","sources":["../../src/composables/useWorkflowActivate.ts"],"sourcesContent":["import { useStorage } from '@/composables/useStorage';\n\nimport {\n\tLOCAL_STORAGE_ACTIVATION_FLAG,\n\tPLACEHOLDER_EMPTY_WORKFLOW_ID,\n\tWORKFLOW_ACTIVE_MODAL_KEY,\n} from '@/constants';\nimport { useUIStore } from '@/stores/ui.store';\nimport { useSettingsStore } from '@/stores/settings.store';\nimport { useWorkflowsStore } from '@/stores/workflows.store';\nimport { useExternalHooks } from '@/composables/useExternalHooks';\nimport { useRouter } from 'vue-router';\nimport { useWorkflowHelpers } from '@/composables/useWorkflowHelpers';\nimport { useTelemetry } from '@/composables/useTelemetry';\nimport { useToast } from '@/composables/useToast';\nimport { useI18n } from '@/composables/useI18n';\nimport { ref } from 'vue';\n\nexport function useWorkflowActivate() {\n\tconst updatingWorkflowActivation = ref(false);\n\n\tconst router = useRouter();\n\tconst workflowHelpers = useWorkflowHelpers({ router });\n\tconst workflowsStore = useWorkflowsStore();\n\tconst settingsStore = useSettingsStore();\n\tconst uiStore = useUIStore();\n\tconst telemetry = useTelemetry();\n\tconst toast = useToast();\n\tconst i18n = useI18n();\n\n\t//methods\n\n\tconst updateWorkflowActivation = async (\n\t\tworkflowId: string | undefined,\n\t\tnewActiveState: boolean,\n\t\ttelemetrySource?: string,\n\t) => {\n\t\tupdatingWorkflowActivation.value = true;\n\t\tconst nodesIssuesExist = workflowsStore.nodesIssuesExist;\n\n\t\tlet currWorkflowId: string | undefined = workflowId;\n\t\tif (!currWorkflowId || currWorkflowId === PLACEHOLDER_EMPTY_WORKFLOW_ID) {\n\t\t\tconst saved = await workflowHelpers.saveCurrentWorkflow();\n\t\t\tif (!saved) {\n\t\t\t\tupdatingWorkflowActivation.value = false;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcurrWorkflowId = workflowsStore.workflowId;\n\t\t}\n\t\tconst isCurrentWorkflow = currWorkflowId === workflowsStore.workflowId;\n\n\t\tconst activeWorkflows = workflowsStore.activeWorkflows;\n\t\tconst isWorkflowActive = activeWorkflows.includes(currWorkflowId);\n\n\t\tconst telemetryPayload = {\n\t\t\tworkflow_id: currWorkflowId,\n\t\t\tis_active: newActiveState,\n\t\t\tprevious_status: isWorkflowActive,\n\t\t\tndv_input: telemetrySource === 'ndv',\n\t\t};\n\t\ttelemetry.track('User set workflow active status', telemetryPayload);\n\t\tvoid useExternalHooks().run('workflowActivate.updateWorkflowActivation', telemetryPayload);\n\n\t\ttry {\n\t\t\tif (isWorkflowActive && newActiveState) {\n\t\t\t\ttoast.showMessage({\n\t\t\t\t\ttitle: i18n.baseText('workflowActivator.workflowIsActive'),\n\t\t\t\t\ttype: 'success',\n\t\t\t\t});\n\t\t\t\tupdatingWorkflowActivation.value = false;\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (isCurrentWorkflow && nodesIssuesExist && newActiveState) {\n\t\t\t\ttoast.showMessage({\n\t\t\t\t\ttitle: i18n.baseText(\n\t\t\t\t\t\t'workflowActivator.showMessage.activeChangedNodesIssuesExistTrue.title',\n\t\t\t\t\t),\n\t\t\t\t\tmessage: i18n.baseText(\n\t\t\t\t\t\t'workflowActivator.showMessage.activeChangedNodesIssuesExistTrue.message',\n\t\t\t\t\t),\n\t\t\t\t\ttype: 'error',\n\t\t\t\t});\n\n\t\t\t\tupdatingWorkflowActivation.value = false;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tawait workflowHelpers.updateWorkflow(\n\t\t\t\t{ workflowId: currWorkflowId, active: newActiveState },\n\t\t\t\t!uiStore.stateIsDirty,\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tconst newStateName = newActiveState ? 'activated' : 'deactivated';\n\t\t\ttoast.showError(\n\t\t\t\terror,\n\t\t\t\ti18n.baseText('workflowActivator.showError.title', {\n\t\t\t\t\tinterpolate: { newStateName },\n\t\t\t\t}) + ':',\n\t\t\t);\n\t\t\tupdatingWorkflowActivation.value = false;\n\t\t\treturn;\n\t\t}\n\n\t\tconst activationEventName = isCurrentWorkflow\n\t\t\t? 'workflow.activeChangeCurrent'\n\t\t\t: 'workflow.activeChange';\n\t\tvoid useExternalHooks().run(activationEventName, {\n\t\t\tworkflowId: currWorkflowId,\n\t\t\tactive: newActiveState,\n\t\t});\n\n\t\tupdatingWorkflowActivation.value = false;\n\n\t\tif (isCurrentWorkflow) {\n\t\t\tif (newActiveState && useStorage(LOCAL_STORAGE_ACTIVATION_FLAG).value !== 'true') {\n\t\t\t\tuiStore.openModal(WORKFLOW_ACTIVE_MODAL_KEY);\n\t\t\t} else {\n\t\t\t\tawait settingsStore.fetchPromptsData();\n\t\t\t}\n\t\t}\n\t};\n\n\tconst activateCurrentWorkflow = async (telemetrySource?: string) => {\n\t\tconst workflowId = workflowsStore.workflowId;\n\t\treturn await updateWorkflowActivation(workflowId, true, telemetrySource);\n\t};\n\n\treturn {\n\t\tactivateCurrentWorkflow,\n\t\tupdateWorkflowActivation,\n\t\tupdatingWorkflowActivation,\n\t};\n}\n"],"names":["useWorkflowActivate","updatingWorkflowActivation","ref","router","useRouter","workflowHelpers","useWorkflowHelpers","workflowsStore","useWorkflowsStore","settingsStore","useSettingsStore","uiStore","useUIStore","telemetry","useTelemetry","toast","useToast","i18n","useI18n","updateWorkflowActivation","workflowId","newActiveState","telemetrySource","nodesIssuesExist","currWorkflowId","PLACEHOLDER_EMPTY_WORKFLOW_ID","isCurrentWorkflow","isWorkflowActive","telemetryPayload","useExternalHooks","error","newStateName","activationEventName","useStorage","LOCAL_STORAGE_ACTIVATION_FLAG","WORKFLOW_ACTIVE_MODAL_KEY"],"mappings":"yKAkBO,SAASA,GAAsB,CAC/B,MAAAC,EAA6BC,EAAI,EAAK,EAEtCC,EAASC,IACTC,EAAkBC,EAAmB,CAAE,OAAAH,CAAQ,CAAA,EAC/CI,EAAiBC,IACjBC,EAAgBC,IAChBC,EAAUC,IACVC,EAAYC,IACZC,EAAQC,IACRC,EAAOC,IAIPC,EAA2B,MAChCC,EACAC,EACAC,IACI,CACJrB,EAA2B,MAAQ,GACnC,MAAMsB,EAAmBhB,EAAe,iBAExC,IAAIiB,EAAqCJ,EACrC,GAAA,CAACI,GAAkBA,IAAmBC,EAA+B,CAExE,GAAI,CADU,MAAMpB,EAAgB,sBACxB,CACXJ,EAA2B,MAAQ,GACnC,MACD,CACAuB,EAAiBjB,EAAe,UACjC,CACM,MAAAmB,EAAoBF,IAAmBjB,EAAe,WAGtDoB,EADkBpB,EAAe,gBACE,SAASiB,CAAc,EAE1DI,EAAmB,CACxB,YAAaJ,EACb,UAAWH,EACX,gBAAiBM,EACjB,UAAWL,IAAoB,KAAA,EAEtBT,EAAA,MAAM,kCAAmCe,CAAgB,EAC9DC,EAAiB,EAAE,IAAI,4CAA6CD,CAAgB,EAErF,GAAA,CACH,GAAID,GAAoBN,EAAgB,CACvCN,EAAM,YAAY,CACjB,MAAOE,EAAK,SAAS,oCAAoC,EACzD,KAAM,SAAA,CACN,EACDhB,EAA2B,MAAQ,GAEnC,MACD,CAEI,GAAAyB,GAAqBH,GAAoBF,EAAgB,CAC5DN,EAAM,YAAY,CACjB,MAAOE,EAAK,SACX,uEACD,EACA,QAASA,EAAK,SACb,yEACD,EACA,KAAM,OAAA,CACN,EAEDhB,EAA2B,MAAQ,GACnC,MACD,CAEA,MAAMI,EAAgB,eACrB,CAAE,WAAYmB,EAAgB,OAAQH,CAAe,EACrD,CAACV,EAAQ,YAAA,QAEFmB,EAAO,CACT,MAAAC,EAAeV,EAAiB,YAAc,cAC9CN,EAAA,UACLe,EACAb,EAAK,SAAS,oCAAqC,CAClD,YAAa,CAAE,aAAAc,CAAa,CAC5B,CAAA,EAAI,GAAA,EAEN9B,EAA2B,MAAQ,GACnC,MACD,CAEM,MAAA+B,EAAsBN,EACzB,+BACA,wBACEG,EAAA,EAAmB,IAAIG,EAAqB,CAChD,WAAYR,EACZ,OAAQH,CAAA,CACR,EAEDpB,EAA2B,MAAQ,GAE/ByB,IACCL,GAAkBY,EAAWC,CAA6B,EAAE,QAAU,OACzEvB,EAAQ,UAAUwB,CAAyB,EAE3C,MAAM1B,EAAc,mBAEtB,EAQM,MAAA,CACN,wBAN+B,MAAOa,GAA6B,CACnE,MAAMF,EAAab,EAAe,WAClC,OAAO,MAAMY,EAAyBC,EAAY,GAAME,CAAe,CAAA,EAKvE,yBAAAH,EACA,2BAAAlB,CAAA,CAEF"}
1
+ {"version":3,"file":"useWorkflowActivate-Bl43vPgP.js","sources":["../../src/composables/useWorkflowActivate.ts"],"sourcesContent":["import { useStorage } from '@/composables/useStorage';\n\nimport {\n\tLOCAL_STORAGE_ACTIVATION_FLAG,\n\tPLACEHOLDER_EMPTY_WORKFLOW_ID,\n\tWORKFLOW_ACTIVE_MODAL_KEY,\n} from '@/constants';\nimport { useUIStore } from '@/stores/ui.store';\nimport { useSettingsStore } from '@/stores/settings.store';\nimport { useWorkflowsStore } from '@/stores/workflows.store';\nimport { useExternalHooks } from '@/composables/useExternalHooks';\nimport { useRouter } from 'vue-router';\nimport { useWorkflowHelpers } from '@/composables/useWorkflowHelpers';\nimport { useTelemetry } from '@/composables/useTelemetry';\nimport { useToast } from '@/composables/useToast';\nimport { useI18n } from '@/composables/useI18n';\nimport { ref } from 'vue';\n\nexport function useWorkflowActivate() {\n\tconst updatingWorkflowActivation = ref(false);\n\n\tconst router = useRouter();\n\tconst workflowHelpers = useWorkflowHelpers({ router });\n\tconst workflowsStore = useWorkflowsStore();\n\tconst settingsStore = useSettingsStore();\n\tconst uiStore = useUIStore();\n\tconst telemetry = useTelemetry();\n\tconst toast = useToast();\n\tconst i18n = useI18n();\n\n\t//methods\n\n\tconst updateWorkflowActivation = async (\n\t\tworkflowId: string | undefined,\n\t\tnewActiveState: boolean,\n\t\ttelemetrySource?: string,\n\t) => {\n\t\tupdatingWorkflowActivation.value = true;\n\t\tconst nodesIssuesExist = workflowsStore.nodesIssuesExist;\n\n\t\tlet currWorkflowId: string | undefined = workflowId;\n\t\tif (!currWorkflowId || currWorkflowId === PLACEHOLDER_EMPTY_WORKFLOW_ID) {\n\t\t\tconst saved = await workflowHelpers.saveCurrentWorkflow();\n\t\t\tif (!saved) {\n\t\t\t\tupdatingWorkflowActivation.value = false;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcurrWorkflowId = workflowsStore.workflowId;\n\t\t}\n\t\tconst isCurrentWorkflow = currWorkflowId === workflowsStore.workflowId;\n\n\t\tconst activeWorkflows = workflowsStore.activeWorkflows;\n\t\tconst isWorkflowActive = activeWorkflows.includes(currWorkflowId);\n\n\t\tconst telemetryPayload = {\n\t\t\tworkflow_id: currWorkflowId,\n\t\t\tis_active: newActiveState,\n\t\t\tprevious_status: isWorkflowActive,\n\t\t\tndv_input: telemetrySource === 'ndv',\n\t\t};\n\t\ttelemetry.track('User set workflow active status', telemetryPayload);\n\t\tvoid useExternalHooks().run('workflowActivate.updateWorkflowActivation', telemetryPayload);\n\n\t\ttry {\n\t\t\tif (isWorkflowActive && newActiveState) {\n\t\t\t\ttoast.showMessage({\n\t\t\t\t\ttitle: i18n.baseText('workflowActivator.workflowIsActive'),\n\t\t\t\t\ttype: 'success',\n\t\t\t\t});\n\t\t\t\tupdatingWorkflowActivation.value = false;\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (isCurrentWorkflow && nodesIssuesExist && newActiveState) {\n\t\t\t\ttoast.showMessage({\n\t\t\t\t\ttitle: i18n.baseText(\n\t\t\t\t\t\t'workflowActivator.showMessage.activeChangedNodesIssuesExistTrue.title',\n\t\t\t\t\t),\n\t\t\t\t\tmessage: i18n.baseText(\n\t\t\t\t\t\t'workflowActivator.showMessage.activeChangedNodesIssuesExistTrue.message',\n\t\t\t\t\t),\n\t\t\t\t\ttype: 'error',\n\t\t\t\t});\n\n\t\t\t\tupdatingWorkflowActivation.value = false;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tawait workflowHelpers.updateWorkflow(\n\t\t\t\t{ workflowId: currWorkflowId, active: newActiveState },\n\t\t\t\t!uiStore.stateIsDirty,\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tconst newStateName = newActiveState ? 'activated' : 'deactivated';\n\t\t\ttoast.showError(\n\t\t\t\terror,\n\t\t\t\ti18n.baseText('workflowActivator.showError.title', {\n\t\t\t\t\tinterpolate: { newStateName },\n\t\t\t\t}) + ':',\n\t\t\t);\n\t\t\tupdatingWorkflowActivation.value = false;\n\t\t\treturn;\n\t\t}\n\n\t\tconst activationEventName = isCurrentWorkflow\n\t\t\t? 'workflow.activeChangeCurrent'\n\t\t\t: 'workflow.activeChange';\n\t\tvoid useExternalHooks().run(activationEventName, {\n\t\t\tworkflowId: currWorkflowId,\n\t\t\tactive: newActiveState,\n\t\t});\n\n\t\tupdatingWorkflowActivation.value = false;\n\n\t\tif (isCurrentWorkflow) {\n\t\t\tif (newActiveState && useStorage(LOCAL_STORAGE_ACTIVATION_FLAG).value !== 'true') {\n\t\t\t\tuiStore.openModal(WORKFLOW_ACTIVE_MODAL_KEY);\n\t\t\t} else {\n\t\t\t\tawait settingsStore.fetchPromptsData();\n\t\t\t}\n\t\t}\n\t};\n\n\tconst activateCurrentWorkflow = async (telemetrySource?: string) => {\n\t\tconst workflowId = workflowsStore.workflowId;\n\t\treturn await updateWorkflowActivation(workflowId, true, telemetrySource);\n\t};\n\n\treturn {\n\t\tactivateCurrentWorkflow,\n\t\tupdateWorkflowActivation,\n\t\tupdatingWorkflowActivation,\n\t};\n}\n"],"names":["useWorkflowActivate","updatingWorkflowActivation","ref","router","useRouter","workflowHelpers","useWorkflowHelpers","workflowsStore","useWorkflowsStore","settingsStore","useSettingsStore","uiStore","useUIStore","telemetry","useTelemetry","toast","useToast","i18n","useI18n","updateWorkflowActivation","workflowId","newActiveState","telemetrySource","nodesIssuesExist","currWorkflowId","PLACEHOLDER_EMPTY_WORKFLOW_ID","isCurrentWorkflow","isWorkflowActive","telemetryPayload","useExternalHooks","error","newStateName","activationEventName","useStorage","LOCAL_STORAGE_ACTIVATION_FLAG","WORKFLOW_ACTIVE_MODAL_KEY"],"mappings":"yKAkBO,SAASA,GAAsB,CAC/B,MAAAC,EAA6BC,EAAI,EAAK,EAEtCC,EAASC,IACTC,EAAkBC,EAAmB,CAAE,OAAAH,CAAQ,CAAA,EAC/CI,EAAiBC,IACjBC,EAAgBC,IAChBC,EAAUC,IACVC,EAAYC,IACZC,EAAQC,IACRC,EAAOC,IAIPC,EAA2B,MAChCC,EACAC,EACAC,IACI,CACJrB,EAA2B,MAAQ,GACnC,MAAMsB,EAAmBhB,EAAe,iBAExC,IAAIiB,EAAqCJ,EACrC,GAAA,CAACI,GAAkBA,IAAmBC,EAA+B,CAExE,GAAI,CADU,MAAMpB,EAAgB,sBACxB,CACXJ,EAA2B,MAAQ,GACnC,MACD,CACAuB,EAAiBjB,EAAe,UACjC,CACM,MAAAmB,EAAoBF,IAAmBjB,EAAe,WAGtDoB,EADkBpB,EAAe,gBACE,SAASiB,CAAc,EAE1DI,EAAmB,CACxB,YAAaJ,EACb,UAAWH,EACX,gBAAiBM,EACjB,UAAWL,IAAoB,KAAA,EAEtBT,EAAA,MAAM,kCAAmCe,CAAgB,EAC9DC,EAAiB,EAAE,IAAI,4CAA6CD,CAAgB,EAErF,GAAA,CACH,GAAID,GAAoBN,EAAgB,CACvCN,EAAM,YAAY,CACjB,MAAOE,EAAK,SAAS,oCAAoC,EACzD,KAAM,SAAA,CACN,EACDhB,EAA2B,MAAQ,GAEnC,MACD,CAEI,GAAAyB,GAAqBH,GAAoBF,EAAgB,CAC5DN,EAAM,YAAY,CACjB,MAAOE,EAAK,SACX,uEACD,EACA,QAASA,EAAK,SACb,yEACD,EACA,KAAM,OAAA,CACN,EAEDhB,EAA2B,MAAQ,GACnC,MACD,CAEA,MAAMI,EAAgB,eACrB,CAAE,WAAYmB,EAAgB,OAAQH,CAAe,EACrD,CAACV,EAAQ,YAAA,QAEFmB,EAAO,CACT,MAAAC,EAAeV,EAAiB,YAAc,cAC9CN,EAAA,UACLe,EACAb,EAAK,SAAS,oCAAqC,CAClD,YAAa,CAAE,aAAAc,CAAa,CAC5B,CAAA,EAAI,GAAA,EAEN9B,EAA2B,MAAQ,GACnC,MACD,CAEM,MAAA+B,EAAsBN,EACzB,+BACA,wBACEG,EAAA,EAAmB,IAAIG,EAAqB,CAChD,WAAYR,EACZ,OAAQH,CAAA,CACR,EAEDpB,EAA2B,MAAQ,GAE/ByB,IACCL,GAAkBY,EAAWC,CAA6B,EAAE,QAAU,OACzEvB,EAAQ,UAAUwB,CAAyB,EAE3C,MAAM1B,EAAc,mBAEtB,EAQM,MAAA,CACN,wBAN+B,MAAOa,GAA6B,CACnE,MAAMF,EAAab,EAAe,WAClC,OAAO,MAAMY,EAAyBC,EAAY,GAAME,CAAe,CAAA,EAKvE,yBAAAH,EACA,2BAAAlB,CAAA,CAEF"}
package/dist/index.html CHANGED
@@ -12,7 +12,7 @@
12
12
  <script>!function(t,e){var o,n,p,r;e.__SV||(window.posthog=e,e._i=[],e.init=function(i,s,a){function g(t,e){var o=e.split(".");2==o.length&&(t=t[o[0]],e=o[1]),t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}}(p=t.createElement("script")).type="text/javascript",p.async=!0,p.src=s.api_host+"/static/array.js",(r=t.getElementsByTagName("script")[0]).parentNode.insertBefore(p,r);var u=e;for(void 0!==a?u=e[a]=[]:a="posthog",u.people=u.people||[],u.toString=function(t){var e="posthog";return"posthog"!==a&&(e+="."+a),t||(e+=" (stub)"),e},u.people.toString=function(){return u.toString(1)+".people (stub)"},o="capture identify alias people.set people.set_once set_config register register_once unregister opt_out_capturing has_opted_out_capturing opt_in_capturing reset isFeatureEnabled getFeatureFlag onFeatureFlags reloadFeatureFlags".split(" "),n=0;n<o.length;n++)g(u,o[n]);e._i.push([i,s,a])},e.__SV=1)}(document,window.posthog||[])</script>
13
13
 
14
14
  <title>n8n.io - Workflow Automation</title>
15
- <script type="module" crossorigin src="/%7B%7BBASE_PATH%7D%7D/assets/index-CY2ZfL2U.js"></script>
15
+ <script type="module" crossorigin src="/%7B%7BBASE_PATH%7D%7D/assets/index-BQ6Z7VRj.js"></script>
16
16
  <link rel="modulepreload" crossorigin href="/%7B%7BBASE_PATH%7D%7D/assets/vendor-CUQSof8H.js">
17
17
  <link rel="modulepreload" crossorigin href="/%7B%7BBASE_PATH%7D%7D/assets/axios-Mm4CS0gO.js">
18
18
  <link rel="modulepreload" crossorigin href="/%7B%7BBASE_PATH%7D%7D/assets/esprima-next-nhoSXAeq.js">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n8n-editor-ui",
3
- "version": "1.44.0",
3
+ "version": "1.44.1",
4
4
  "description": "Workflow Editor UI for n8n",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "homepage": "https://n8n.io",
@@ -1 +0,0 @@
1
- {"version":3,"file":"CollectionParameter-CiMzJaXg.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- import{m as O,s as re}from"./pinia-Dh4cxKZ0.js";import{G as D,l as u,m as _,U as d,O as x,p as b,S as k,T as w,I as l,M as $,R as y,ag as c,F as ae,a7 as ue,a0 as le,aH as P,az as ce,r as W,e as C,d as V,b as de,y as fe,u as me}from"./vendor-CUQSof8H.js";import{j as U,V as I,J as q,bk as pe,I as xe,z as he,bl as we,p as ye,d as G,u as X,G as Ee,i as ge,b as ve,a4 as j,c as ke,P as $e,cr as _e,a3 as be,w as Ie,cs as Te,F as Re}from"./index-CY2ZfL2U.js";import{E as Se,a as Me}from"./ExecutionsFilter-nFboBzV2.js";import{u as Le}from"./useExecutionHelpers-BZpwMJs_.js";import{_ as F}from"./n8n-DT_bOwuZ.js";import{W as We}from"./WorkflowExecutionsInfoAccordion-CITQoihQ.js";import"./axios-Mm4CS0gO.js";import"./flatted-DN8lQ2XG.js";import"./@vueuse/core-BiGWdRh4.js";import"./lodash-es-BFdF4Er8.js";import"./@n8n/permissions-BxxteU-C.js";import"./dateformat-C0ZgbPvs.js";import"./vue-i18n-CG6eDDlD.js";import"./uuid-SoommWqA.js";import"./luxon-CLwAIbs0.js";import"./@n8n/codemirror-lang-sql-x14jMqbG.js";import"./@lezer/common-B6ct0j_v.js";import"./prettier-bS6l4Vb1.js";import"./@jsplumb/util-DS-9vq_E.js";import"./@jsplumb/core-CVBraiyY.js";import"./@jsplumb/common-CF-b-6-M.js";import"./@jsplumb/connector-bezier-BGU0Ovbw.js";import"./@jsplumb/browser-ui-BVF2KoJK.js";import"./codemirror-lang-html-n8n-DcTmlMkf.js";import"./@n8n/codemirror-lang-Qkdx7NoQ.js";import"./esprima-next-nhoSXAeq.js";import"./fast-json-stable-stringify-wY6jAr7b.js";import"./timeago.js-CiyKClrF.js";import"./qrcode.vue-DOxvr88t.js";import"./vue3-touch-events-mV0oX_Sl.js";import"./chart.js-343vZi4M.js";import"./dateFormatter-SkPyTYT4.js";const Ce=D({name:"WorkflowExecutionsCard",components:{ExecutionsTime:Se},props:{execution:{type:Object,required:!0},highlight:{type:Boolean,default:!1},showGap:{type:Boolean,default:!1}},emits:["retryExecution","mounted"],setup(){return{executionHelpers:Le()}},computed:{...O(U),currentWorkflow(){return this.$route.params.name||this.workflowsStore.workflowId},retryExecutionActions(){return[{id:"current-workflow",label:this.$locale.baseText("executionsList.retryWithCurrentlySavedWorkflow")},{id:"original-workflow",label:this.$locale.baseText("executionsList.retryWithOriginalWorkflow")}]},executionUIDetails(){return this.executionHelpers.getUIDetails(this.execution)},isActive(){return this.execution.id===this.$route.params.executionId},isRetriable(){return this.executionHelpers.isExecutionRetriable(this.execution)},executionPreviewViewName(){return I.EXECUTION_PREVIEW}},mounted(){this.$emit("mounted",this.execution.id)},methods:{onRetryMenuItemSelect(e){this.$emit("retryExecution",{execution:this.execution,command:e})}}}),De="_WorkflowExecutionsCard_16ozu_1",ze="_active_16ozu_8",Ae="_executionStatus_16ozu_11",Oe="_executionLink_16ozu_14",Ue="_spinner_16ozu_17",Fe="_running_16ozu_17",Ne="_statusLabel_16ozu_24",He="_success_16ozu_29",Be="_waiting_16ozu_32",Ve="_error_16ozu_38",Pe="_unknown_16ozu_44",qe="_icon_16ozu_61",Ge="_icons_16ozu_66",Xe="_retry_16ozu_74",je="_manual_16ozu_77",Ke="_showGap_16ozu_85",Je={WorkflowExecutionsCard:De,active:ze,executionStatus:Ae,executionLink:Oe,new:"_new_16ozu_17",spinner:Ue,running:Fe,statusLabel:Ne,success:He,waiting:Be,error:Ve,unknown:Pe,icon:qe,icons:Ge,retry:Xe,manual:je,showGap:Ke},Qe={key:0};function Ye(e,t,n,f,i,T){const m=c("n8n-text"),E=c("n8n-spinner"),s=c("ExecutionsTime"),R=c("n8n-action-dropdown"),S=c("font-awesome-icon"),g=c("n8n-tooltip"),v=c("router-link");return u(),_("div",{class:l({"execution-card":!0,[e.$style.WorkflowExecutionsCard]:!0,[e.$style.active]:e.isActive,[e.$style[e.executionUIDetails.name]]:!0,[e.$style.highlight]:e.highlight,[e.$style.showGap]:e.showGap})},[d(v,{class:l(e.$style.executionLink),to:{name:e.executionPreviewViewName,params:{name:e.currentWorkflow,executionId:e.execution.id}},"data-test-execution-status":e.executionUIDetails.name},{default:x(()=>[b("div",{class:l(e.$style.description)},[d(m,{color:"text-dark",bold:!0,size:"medium","data-test-id":"execution-time"},{default:x(()=>[k(w(e.executionUIDetails.startTime),1)]),_:1}),b("div",{class:l(e.$style.executionStatus)},[e.executionUIDetails.name==="running"?(u(),$(E,{key:0,size:"small",class:l([e.$style.spinner,"mr-4xs"])},null,8,["class"])):y("",!0),d(m,{class:l(e.$style.statusLabel),size:"small"},{default:x(()=>[k(w(e.executionUIDetails.label),1)]),_:1},8,["class"]),k(" "+w(" ")+" "),e.executionUIDetails.name==="running"?(u(),$(m,{key:1,color:e.isActive?"text-dark":"text-base",size:"small"},{default:x(()=>[k(w(e.$locale.baseText("executionDetails.runningTimeRunning"))+" ",1),d(s,{"start-time":e.execution.startedAt},null,8,["start-time"])]),_:1},8,["color"])):e.executionUIDetails.runningTime!==""?(u(),$(m,{key:2,color:e.isActive?"text-dark":"text-base",size:"small"},{default:x(()=>{var r;return[k(w(e.$locale.baseText("executionDetails.runningTimeFinished",{interpolate:{time:(r=e.executionUIDetails)==null?void 0:r.runningTime}})),1)]}),_:1},8,["color"])):y("",!0)],2),e.execution.mode==="retry"?(u(),_("div",Qe,[d(m,{color:e.isActive?"text-dark":"text-base",size:"small"},{default:x(()=>[k(w(e.$locale.baseText("executionDetails.retry"))+" #"+w(e.execution.retryOf),1)]),_:1},8,["color"])])):y("",!0)],2),b("div",{class:l(e.$style.icons)},[e.isRetriable?(u(),$(R,{key:0,class:l([e.$style.icon,e.$style.retry]),items:e.retryExecutionActions,"activator-icon":"redo","data-test-id":"retry-execution-button",onSelect:e.onRetryMenuItemSelect},null,8,["class","items","onSelect"])):y("",!0),e.execution.mode==="manual"?(u(),$(g,{key:1,placement:"top"},{content:x(()=>[b("span",null,w(e.$locale.baseText("executionsList.test")),1)]),default:x(()=>[e.execution.mode==="manual"?(u(),$(S,{key:0,class:l([e.$style.icon,e.$style.manual]),icon:"flask"},null,8,["class"])):y("",!0)]),_:1})):y("",!0)],2)]),_:1},8,["class","to","data-test-execution-status"])],2)}const Ze={$style:Je},et=F(Ce,[["render",Ye],["__cssModules",Ze]]),tt=D({name:"WorkflowExecutionsSidebar",components:{WorkflowExecutionsCard:et,WorkflowExecutionsInfoAccordion:We,ExecutionsFilter:Me},props:{executions:{type:Array,required:!0},loading:{type:Boolean,default:!0},loadingMore:{type:Boolean,default:!1},temporaryExecution:{type:Object,default:null}},emits:{retryExecution:null,loadMore:null,refresh:null,filterUpdated:null,reloadExecutions:null,"update:autoRefresh":null},data(){return{filter:{},mountedItems:[],autoScrollDeps:{activeExecutionSet:!1,cardsMounted:!1,scroll:!0}}},computed:{...O(q,U)},watch:{$route(e,t){t.name===I.EXECUTION_PREVIEW&&e.name===I.EXECUTION_HOME&&this.$router.go(-1)},"executionsStore.activeExecution"(e,t){e&&e.id!==(t==null?void 0:t.id)&&(this.autoScrollDeps.activeExecutionSet=!0)},autoScrollDeps:{handler(e){Object.values(e).every(Boolean)&&this.scrollToActiveCard()},deep:!0}},methods:{onItemMounted(e){var t;this.mountedItems.push(e),this.mountedItems.length===this.executions.length&&(this.autoScrollDeps.cardsMounted=!0,this.checkListSize()),((t=this.executionsStore.activeExecution)==null?void 0:t.id)===e&&(this.autoScrollDeps.activeExecutionSet=!0)},loadMore(e=20){if(!this.loading){const t=this.$refs.executionList;if(t){const n=t.offsetHeight-(t.scrollHeight-t.scrollTop);n>-10&&n<10&&this.$emit("loadMore",e)}}},onRetryExecution(e){this.$emit("retryExecution",e)},onRefresh(){this.$emit("refresh")},onFilterChanged(e){this.$emit("filterUpdated",e)},reloadExecutions(){this.$emit("reloadExecutions")},checkListSize(){const e=this.$refs.container,t=this.$refs[`execution-${this.mountedItems[this.mountedItems.length-1]}`];if(e&&(t!=null&&t.length)){const n=t[0].$el,f=Math.ceil(e.clientHeight/n.clientHeight);f>this.executions.length&&this.$emit("loadMore",f-this.executions.length)}},scrollToActiveCard(){var n;const e=this.$refs.executionList,t=this.$refs[`execution-${(n=this.executionsStore.activeExecution)==null?void 0:n.id}`];if(e&&(t!=null&&t.length)&&this.executionsStore.activeExecution){const i=t[0].$el.getBoundingClientRect(),T=200;i.top>e.offsetHeight&&(this.autoScrollDeps.scroll=!1,e.scrollTo({top:i.top-T,behavior:"smooth"}))}}}}),ot="_container_qg8we_1",nt="_heading_qg8we_12",st="_controls_qg8we_19",it="_executionList_qg8we_31",rt="_infoAccordion_qg8we_49",at="_noResultsContainer_qg8we_61",ut={container:ot,heading:nt,controls:st,executionList:it,infoAccordion:rt,noResultsContainer:at},lt={key:0,class:"mr-l"},ct={key:3,class:"mr-m"};function dt(e,t,n,f,i,T){const m=c("n8n-heading"),E=c("el-checkbox"),s=c("ExecutionsFilter"),R=c("n8n-loading"),S=c("n8n-text"),g=c("WorkflowExecutionsCard"),v=c("WorkflowExecutionsInfoAccordion");return u(),_("div",{ref:"container",class:l(["executions-sidebar",e.$style.container]),"data-test-id":"executions-sidebar"},[b("div",{class:l(e.$style.heading)},[d(m,{tag:"h2",size:"medium",color:"text-dark"},{default:x(()=>[k(w(e.$locale.baseText("generic.executions")),1)]),_:1})],2),b("div",{class:l(e.$style.controls)},[d(E,{modelValue:e.executionsStore.autoRefresh,"onUpdate:modelValue":[t[0]||(t[0]=r=>e.executionsStore.autoRefresh=r),t[1]||(t[1]=r=>e.$emit("update:autoRefresh",r))],"data-test-id":"auto-refresh-checkbox"},{default:x(()=>[k(w(e.$locale.baseText("executionsList.autoRefresh")),1)]),_:1},8,["modelValue"]),d(s,{"popover-placement":"left-start",onFilterChanged:e.onFilterChanged},null,8,["onFilterChanged"])],2),b("div",{ref:"executionList",class:l(e.$style.executionList),"data-test-id":"current-executions-list",onScroll:t[2]||(t[2]=r=>e.loadMore(20))},[e.loading?(u(),_("div",lt,[d(R,{variant:"rect"})])):y("",!0),!e.loading&&e.executions.length===0?(u(),_("div",{key:1,class:l(e.$style.noResultsContainer),"data-test-id":"execution-list-empty"},[d(S,{color:"text-base",size:"medium",align:"center"},{default:x(()=>[k(w(e.$locale.baseText("executionsLandingPage.noResults")),1)]),_:1})],2)):e.temporaryExecution?(u(),$(g,{key:2,ref:`execution-${e.temporaryExecution.id}`,execution:e.temporaryExecution,"data-test-id":`execution-details-${e.temporaryExecution.id}`,"show-gap":!0,onRetryExecution:e.onRetryExecution},null,8,["execution","data-test-id","onRetryExecution"])):y("",!0),d(le,{name:"executions-list"},{default:x(()=>[(u(!0),_(ae,null,ue(e.executions,r=>(u(),$(g,{key:r.id,ref_for:!0,ref:`execution-${r.id}`,execution:r,"data-test-id":`execution-details-${r.id}`,onRetryExecution:e.onRetryExecution,onMounted:e.onItemMounted},null,8,["execution","data-test-id","onRetryExecution","onMounted"]))),128))]),_:1}),e.loadingMore?(u(),_("div",ct,[d(R,{variant:"p",rows:1})])):y("",!0)],34),b("div",{class:l(e.$style.infoAccordion)},[d(v,{"initially-expanded":!1})],2)],2)}const ft={$style:ut},mt=F(tt,[["render",dt],["__cssModules",ft],["__scopeId","data-v-c8ccdad8"]]),pt=D({name:"WorkflowExecutionsList",components:{WorkflowExecutionsSidebar:mt},async beforeRouteLeave(e,t,n){if(pe(e)===xe.WORKFLOW){n();return}if(this.uiStore.stateIsDirty){const f=await this.confirm(this.$locale.baseText("generic.unsavedWork.confirmMessage.message"),{title:this.$locale.baseText("generic.unsavedWork.confirmMessage.headline"),type:"warning",confirmButtonText:this.$locale.baseText("generic.unsavedWork.confirmMessage.confirmButtonText"),cancelButtonText:this.$locale.baseText("generic.unsavedWork.confirmMessage.cancelButtonText"),showClose:!0});f===he?(await this.workflowHelpers.saveCurrentWorkflow({},!1)&&await this.settingsStore.fetchPromptsData(),this.uiStore.stateIsDirty=!1,n()):f===we&&(this.uiStore.stateIsDirty=!1,n())}else n()},props:{loading:{type:Boolean,default:!1},workflow:{type:Object,required:!0},executions:{type:Array,default:()=>[]},filters:{type:Object,default:()=>({})},execution:{type:Object,default:null},loadingMore:{type:Boolean,default:!1}},emits:["execution:delete","execution:stop","execution:retry","update:auto-refresh","update:filters","load-more","reload"],setup(){const e=be(),t=P(),n=ye({router:t}),{callDebounced:f}=G();return{externalHooks:e,workflowHelpers:n,callDebounced:f,...X(),...Ee()}},computed:{...O(ke,j,ve,ge),temporaryExecution(){return!this.executions.find(t=>{var n;return t.id===((n=this.execution)==null?void 0:n.id)})?this.execution:void 0},hidePreview(){return this.loading||!this.execution&&this.executions.length},filterApplied(){return this.filters.status!=="all"},workflowDataNotLoaded(){return this.workflow.id===$e&&this.workflow.name===""},requestFilter(){return _e({...this.filters,workflowId:this.workflow.id})}},watch:{execution(e){e&&this.$router.push({name:I.EXECUTION_PREVIEW,params:{name:this.workflow.id,executionId:e.id}}).catch(()=>{})}},methods:{async onDeleteCurrentExecution(){this.$emit("execution:delete",this.execution.id)},async onStopExecution(){this.$emit("execution:stop",this.execution.id)},async onRetryExecution(e){const t=e.command==="current-workflow";this.$emit("execution:retry",{id:e.execution.id,loadWorkflow:t})}}}),xt="_container_16o1g_1",ht="_content_16o1g_7",wt={container:xt,content:ht};function yt(e,t,n,f,i,T){const m=c("WorkflowExecutionsSidebar"),E=c("router-view");return u(),_("div",{class:l(e.$style.container)},[d(m,{executions:e.executions,loading:e.loading&&!e.executions.length,"loading-more":e.loadingMore,"temporary-execution":e.temporaryExecution,"onUpdate:autoRefresh":t[0]||(t[0]=s=>e.$emit("update:auto-refresh",s)),onReloadExecutions:t[1]||(t[1]=s=>e.$emit("reload")),onFilterUpdated:t[2]||(t[2]=s=>e.$emit("update:filters",s)),onLoadMore:t[3]||(t[3]=s=>e.$emit("load-more")),onRetryExecution:e.onRetryExecution},null,8,["executions","loading","loading-more","temporary-execution","onRetryExecution"]),e.hidePreview?y("",!0):(u(),_("div",{key:0,class:l(e.$style.content)},[d(E,{name:"executionPreview",execution:e.execution,onDeleteCurrentExecution:e.onDeleteCurrentExecution,onRetryExecution:e.onRetryExecution,onStopExecution:e.onStopExecution},null,8,["execution","onDeleteCurrentExecution","onRetryExecution","onStopExecution"])],2))],2)}const Et={$style:wt},gt=F(pt,[["render",yt],["__cssModules",Et]]),eo=D({__name:"WorkflowExecutionsView",setup(e){const t=q(),n=U(),f=j(),i=Ie(),T=Re(),m=ce(),E=P(),s=X(),{callDebounced:R}=G(),{filters:S}=re(t),g=W(!1),v=W(!1),r=W(),h=C(()=>m.params.name||n.workflowId),M=C(()=>m.params.executionId),p=C(()=>[...t.currentExecutionsByWorkflowId[h.value]??[],...t.executionsByWorkflowId[h.value]??[]]),K=C(()=>p.value.find(o=>o.id===M.value)??z.value),z=W();V(()=>h.value,async()=>{await B()}),V(()=>M.value,async()=>{await N()}),de(async()=>{await f.loadNodeTypesIfNotLoaded(),await Promise.all([f.loadNodeTypesIfNotLoaded(),B(),t.initialize(h.value)]),await N(),await J(),document.addEventListener("visibilitychange",H)}),fe(()=>{t.reset(),document.removeEventListener("visibilitychange",H)});async function N(){if(M.value)try{z.value=await t.fetchExecution(M.value),t.activeExecution=z.value}catch(o){s.showError(o,i.baseText("nodeView.showError.openExecution.title"))}}function H(){document.visibilityState==="hidden"?t.stopAutoRefreshInterval():t.startAutoRefreshInterval(h.value)}async function J(){m.name===I.EXECUTION_HOME&&p.value.length>0&&r.value&&await E.push({name:I.EXECUTION_PREVIEW,params:{name:r.value.id,executionId:p.value[0].id}}).catch(()=>{})}async function B(){let o;try{o=await n.fetchWorkflow(h.value)}catch(a){s.showError(a,i.baseText("nodeView.showError.openWorkflow.title"));return}if(!o)throw new Error(i.baseText("nodeView.workflowWithIdCouldNotBeFound",{interpolate:{workflowId:h.value}}));r.value=o}async function Q(o){o?await t.startAutoRefreshInterval(h.value):t.stopAutoRefreshInterval()}async function A(){if(h.value)try{await t.fetchExecutions({...t.executionsFilters,workflowId:h.value})}catch(o){o.errorCode===Te?s.showMessage({title:i.baseText("executionsList.showError.refreshData.title"),message:o.message,type:"error",duration:3500},!1):s.showError(o,i.baseText("executionsList.showError.refreshData.title"))}}async function Y(o){t.reset(),t.setFilters(o),await t.initialize(h.value)}async function Z(o){try{await t.stopCurrentExecution(o),s.showMessage({title:i.baseText("executionsList.showMessage.stopExecution.title"),message:i.baseText("executionsList.showMessage.stopExecution.message",{interpolate:{activeExecutionId:o}}),type:"success"}),await A()}catch(a){s.showError(a,i.baseText("executionsList.showError.stopExecution.title"))}}async function ee(o){g.value=!0;try{const a=p.value.findIndex(ie=>ie.id===o),L=p.value[a+1]||p.value[a-1]||p.value[0];await t.deleteExecutions({ids:[o]}),r.value&&(p.value.length>0?await E.replace({name:I.EXECUTION_PREVIEW,params:{name:r.value.id,executionId:L.id}}).catch(()=>{}):await E.replace({name:I.EXECUTION_HOME,params:{name:r.value.id}}))}catch(a){g.value=!1,s.showError(a,i.baseText("executionsList.showError.handleDeleteSelected.title"));return}g.value=!1,s.showMessage({title:i.baseText("executionsList.showMessage.handleDeleteSelected.title"),type:"success"})}async function te(o){var a;s.showMessage({title:i.baseText("executionDetails.runningMessage"),type:"info",duration:2e3}),await oe(o),await A(),T.track("User clicked retry execution button",{workflow_id:(a=r.value)==null?void 0:a.id,execution_id:o.id,retry_type:o.loadWorkflow?"current":"original"})}async function oe(o){try{await t.retryExecution(o.id,o.loadWorkflow)?s.showMessage({title:i.baseText("executionsList.showMessage.retrySuccessfulTrue.title"),type:"success"}):s.showMessage({title:i.baseText("executionsList.showMessage.retrySuccessfulFalse.title"),type:"error"})}catch(a){s.showError(a,i.baseText("executionsList.showError.retryExecution.title"))}}async function ne(){v.value||await R(se,{debounceTime:1e3})}async function se(){var a;if((a=t.executionsFilters.status)!=null&&a.includes("running")||p.value.length>=t.executionsCount)return;v.value=!0;let o;p.value.length!==0&&(o=p.value.slice(-1)[0].id);try{await t.fetchExecutions(t.executionsFilters,o)}catch(L){v.value=!1,s.showError(L,i.baseText("executionsList.showError.loadMore.title"));return}v.value=!1}return(o,a)=>r.value?(u(),$(gt,{key:0,executions:p.value,execution:K.value,filters:me(S),workflow:r.value,loading:g.value,"loading-more":v.value,"onExecution:stop":Z,"onExecution:delete":ee,"onExecution:retry":te,"onUpdate:filters":Y,"onUpdate:autoRefresh":Q,onLoadMore:ne,onReload:A},null,8,["executions","execution","filters","workflow","loading","loading-more"])):y("",!0)}});export{eo as default};
2
- //# sourceMappingURL=WorkflowExecutionsView-fiAM1R-f.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WorkflowExecutionsView-fiAM1R-f.js","sources":["../../src/components/executions/workflow/WorkflowExecutionsCard.vue","../../src/components/executions/workflow/WorkflowExecutionsSidebar.vue","../../src/components/executions/workflow/WorkflowExecutionsList.vue","../../src/views/WorkflowExecutionsView.vue"],"sourcesContent":["<template>\n\t<div\n\t\t:class=\"{\n\t\t\t['execution-card']: true,\n\t\t\t[$style.WorkflowExecutionsCard]: true,\n\t\t\t[$style.active]: isActive,\n\t\t\t[$style[executionUIDetails.name]]: true,\n\t\t\t[$style.highlight]: highlight,\n\t\t\t[$style.showGap]: showGap,\n\t\t}\"\n\t>\n\t\t<router-link\n\t\t\t:class=\"$style.executionLink\"\n\t\t\t:to=\"{\n\t\t\t\tname: executionPreviewViewName,\n\t\t\t\tparams: { name: currentWorkflow, executionId: execution.id },\n\t\t\t}\"\n\t\t\t:data-test-execution-status=\"executionUIDetails.name\"\n\t\t>\n\t\t\t<div :class=\"$style.description\">\n\t\t\t\t<n8n-text color=\"text-dark\" :bold=\"true\" size=\"medium\" data-test-id=\"execution-time\">\n\t\t\t\t\t{{ executionUIDetails.startTime }}\n\t\t\t\t</n8n-text>\n\t\t\t\t<div :class=\"$style.executionStatus\">\n\t\t\t\t\t<n8n-spinner\n\t\t\t\t\t\tv-if=\"executionUIDetails.name === 'running'\"\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t:class=\"[$style.spinner, 'mr-4xs']\"\n\t\t\t\t\t/>\n\t\t\t\t\t<n8n-text :class=\"$style.statusLabel\" size=\"small\">{{\n\t\t\t\t\t\texecutionUIDetails.label\n\t\t\t\t\t}}</n8n-text>\n\t\t\t\t\t{{ ' ' }}\n\t\t\t\t\t<n8n-text\n\t\t\t\t\t\tv-if=\"executionUIDetails.name === 'running'\"\n\t\t\t\t\t\t:color=\"isActive ? 'text-dark' : 'text-base'\"\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{ $locale.baseText('executionDetails.runningTimeRunning') }}\n\t\t\t\t\t\t<ExecutionsTime :start-time=\"execution.startedAt\" />\n\t\t\t\t\t</n8n-text>\n\t\t\t\t\t<n8n-text\n\t\t\t\t\t\tv-else-if=\"executionUIDetails.runningTime !== ''\"\n\t\t\t\t\t\t:color=\"isActive ? 'text-dark' : 'text-base'\"\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t$locale.baseText('executionDetails.runningTimeFinished', {\n\t\t\t\t\t\t\t\tinterpolate: { time: executionUIDetails?.runningTime },\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}}\n\t\t\t\t\t</n8n-text>\n\t\t\t\t</div>\n\t\t\t\t<div v-if=\"execution.mode === 'retry'\">\n\t\t\t\t\t<n8n-text :color=\"isActive ? 'text-dark' : 'text-base'\" size=\"small\">\n\t\t\t\t\t\t{{ $locale.baseText('executionDetails.retry') }} #{{ execution.retryOf }}\n\t\t\t\t\t</n8n-text>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div :class=\"$style.icons\">\n\t\t\t\t<n8n-action-dropdown\n\t\t\t\t\tv-if=\"isRetriable\"\n\t\t\t\t\t:class=\"[$style.icon, $style.retry]\"\n\t\t\t\t\t:items=\"retryExecutionActions\"\n\t\t\t\t\tactivator-icon=\"redo\"\n\t\t\t\t\tdata-test-id=\"retry-execution-button\"\n\t\t\t\t\t@select=\"onRetryMenuItemSelect\"\n\t\t\t\t/>\n\t\t\t\t<n8n-tooltip v-if=\"execution.mode === 'manual'\" placement=\"top\">\n\t\t\t\t\t<template #content>\n\t\t\t\t\t\t<span>{{ $locale.baseText('executionsList.test') }}</span>\n\t\t\t\t\t</template>\n\t\t\t\t\t<font-awesome-icon\n\t\t\t\t\t\tv-if=\"execution.mode === 'manual'\"\n\t\t\t\t\t\t:class=\"[$style.icon, $style.manual]\"\n\t\t\t\t\t\ticon=\"flask\"\n\t\t\t\t\t/>\n\t\t\t\t</n8n-tooltip>\n\t\t\t</div>\n\t\t</router-link>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport type { IExecutionUIData } from '@/composables/useExecutionHelpers';\nimport { VIEWS } from '@/constants';\nimport ExecutionsTime from '@/components/executions/ExecutionsTime.vue';\nimport { useExecutionHelpers } from '@/composables/useExecutionHelpers';\nimport type { ExecutionSummary } from 'n8n-workflow';\nimport { mapStores } from 'pinia';\nimport { useWorkflowsStore } from '@/stores/workflows.store';\n\nexport default defineComponent({\n\tname: 'WorkflowExecutionsCard',\n\tcomponents: {\n\t\tExecutionsTime,\n\t},\n\tprops: {\n\t\texecution: {\n\t\t\ttype: Object as () => ExecutionSummary,\n\t\t\trequired: true,\n\t\t},\n\t\thighlight: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tshowGap: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\temits: ['retryExecution', 'mounted'],\n\tsetup() {\n\t\tconst executionHelpers = useExecutionHelpers();\n\n\t\treturn {\n\t\t\texecutionHelpers,\n\t\t};\n\t},\n\tcomputed: {\n\t\t...mapStores(useWorkflowsStore),\n\t\tcurrentWorkflow(): string {\n\t\t\treturn (this.$route.params.name as string) || this.workflowsStore.workflowId;\n\t\t},\n\t\tretryExecutionActions(): object[] {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tid: 'current-workflow',\n\t\t\t\t\tlabel: this.$locale.baseText('executionsList.retryWithCurrentlySavedWorkflow'),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'original-workflow',\n\t\t\t\t\tlabel: this.$locale.baseText('executionsList.retryWithOriginalWorkflow'),\n\t\t\t\t},\n\t\t\t];\n\t\t},\n\t\texecutionUIDetails(): IExecutionUIData {\n\t\t\treturn this.executionHelpers.getUIDetails(this.execution);\n\t\t},\n\t\tisActive(): boolean {\n\t\t\treturn this.execution.id === this.$route.params.executionId;\n\t\t},\n\t\tisRetriable(): boolean {\n\t\t\treturn this.executionHelpers.isExecutionRetriable(this.execution);\n\t\t},\n\t\texecutionPreviewViewName() {\n\t\t\treturn VIEWS.EXECUTION_PREVIEW;\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.$emit('mounted', this.execution.id);\n\t},\n\tmethods: {\n\t\tonRetryMenuItemSelect(action: string): void {\n\t\t\tthis.$emit('retryExecution', { execution: this.execution, command: action });\n\t\t},\n\t},\n});\n</script>\n\n<style module lang=\"scss\">\n@import '@/styles/variables';\n\n.WorkflowExecutionsCard {\n\t--execution-list-item-background: var(--color-foreground-xlight);\n\t--execution-list-item-highlight-background: var(--color-warning-tint-1);\n\n\tdisplay: flex;\n\tflex-direction: column;\n\tpadding-right: var(--spacing-m);\n\n\t&.active {\n\t\tborder-left: var(--spacing-4xs) var(--border-style-base) transparent !important;\n\n\t\t.executionStatus {\n\t\t\tcolor: var(--color-text-dark) !important;\n\t\t}\n\t}\n\n\t&:hover,\n\t&.active {\n\t\t.executionLink {\n\t\t\t--execution-list-item-background: var(--color-foreground-light);\n\t\t}\n\t}\n\n\t&.new,\n\t&.running {\n\t\t.spinner {\n\t\t\tposition: relative;\n\t\t\ttop: 1px;\n\t\t}\n\t\t&,\n\t\t& .executionLink {\n\t\t\tborder-left: var(--spacing-4xs) var(--border-style-base) var(--execution-card-border-running);\n\t\t}\n\t\t.statusLabel,\n\t\t.spinner {\n\t\t\tcolor: var(--color-warning);\n\t\t}\n\t}\n\n\t&.success {\n\t\t&,\n\t\t& .executionLink {\n\t\t\tborder-left: var(--spacing-4xs) var(--border-style-base) var(--execution-card-border-success);\n\t\t}\n\t}\n\n\t&.waiting {\n\t\t&,\n\t\t& .executionLink {\n\t\t\tborder-left: var(--spacing-4xs) var(--border-style-base) var(--execution-card-border-waiting);\n\t\t}\n\t\t.statusLabel {\n\t\t\tcolor: var(--color-secondary);\n\t\t}\n\t}\n\n\t&.error {\n\t\t&,\n\t\t& .executionLink {\n\t\t\tborder-left: var(--spacing-4xs) var(--border-style-base) var(--execution-card-border-error);\n\t\t}\n\t\t.statusLabel {\n\t\t\tcolor: var(--color-danger);\n\t\t}\n\t}\n\n\t&.unknown {\n\t\t&,\n\t\t& .executionLink {\n\t\t\tborder-left: var(--spacing-4xs) var(--border-style-base) var(--execution-card-border-unknown);\n\t\t}\n\t}\n}\n\n.executionLink {\n\tbackground: var(--execution-list-item-background);\n\tdisplay: flex;\n\twidth: 100%;\n\talign-items: center;\n\tjustify-content: space-between;\n\tcolor: var(--color-text-base);\n\tfont-size: var(--font-size-xs);\n\tpadding: var(--spacing-xs);\n\tpadding-right: var(--spacing-s);\n\tposition: relative;\n\tleft: calc(\n\t\t-1 * var(--spacing-4xs)\n\t); // Hide link border under card border so it's not visible when not hovered\n\n\t&:active {\n\t\t.icon,\n\t\t.statusLabel {\n\t\t\tcolor: var(--color-text-base);\n\t\t}\n\t}\n}\n\n.icons {\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.icon {\n\tfont-size: var(--font-size-s);\n\n\t&.retry {\n\t\tsvg {\n\t\t\tcolor: var(--color-primary);\n\t\t}\n\t}\n\n\t&.manual {\n\t\tposition: relative;\n\t\ttop: 1px;\n\t}\n\n\t& + & {\n\t\tmargin-left: var(--spacing-2xs);\n\t}\n}\n.showGap {\n\tmargin-bottom: var(--spacing-2xs);\n\t.executionLink {\n\t\tborder-bottom: 1px solid var(--color-foreground-dark);\n\t}\n}\n</style>\n","<template>\n\t<div\n\t\tref=\"container\"\n\t\t:class=\"['executions-sidebar', $style.container]\"\n\t\tdata-test-id=\"executions-sidebar\"\n\t>\n\t\t<div :class=\"$style.heading\">\n\t\t\t<n8n-heading tag=\"h2\" size=\"medium\" color=\"text-dark\">\n\t\t\t\t{{ $locale.baseText('generic.executions') }}\n\t\t\t</n8n-heading>\n\t\t</div>\n\t\t<div :class=\"$style.controls\">\n\t\t\t<el-checkbox\n\t\t\t\tv-model=\"executionsStore.autoRefresh\"\n\t\t\t\tdata-test-id=\"auto-refresh-checkbox\"\n\t\t\t\t@update:model-value=\"$emit('update:autoRefresh', $event)\"\n\t\t\t>\n\t\t\t\t{{ $locale.baseText('executionsList.autoRefresh') }}\n\t\t\t</el-checkbox>\n\t\t\t<ExecutionsFilter popover-placement=\"left-start\" @filter-changed=\"onFilterChanged\" />\n\t\t</div>\n\t\t<div\n\t\t\tref=\"executionList\"\n\t\t\t:class=\"$style.executionList\"\n\t\t\tdata-test-id=\"current-executions-list\"\n\t\t\t@scroll=\"loadMore(20)\"\n\t\t>\n\t\t\t<div v-if=\"loading\" class=\"mr-l\">\n\t\t\t\t<n8n-loading variant=\"rect\" />\n\t\t\t</div>\n\t\t\t<div\n\t\t\t\tv-if=\"!loading && executions.length === 0\"\n\t\t\t\t:class=\"$style.noResultsContainer\"\n\t\t\t\tdata-test-id=\"execution-list-empty\"\n\t\t\t>\n\t\t\t\t<n8n-text color=\"text-base\" size=\"medium\" align=\"center\">\n\t\t\t\t\t{{ $locale.baseText('executionsLandingPage.noResults') }}\n\t\t\t\t</n8n-text>\n\t\t\t</div>\n\t\t\t<WorkflowExecutionsCard\n\t\t\t\tv-else-if=\"temporaryExecution\"\n\t\t\t\t:ref=\"`execution-${temporaryExecution.id}`\"\n\t\t\t\t:execution=\"temporaryExecution\"\n\t\t\t\t:data-test-id=\"`execution-details-${temporaryExecution.id}`\"\n\t\t\t\t:show-gap=\"true\"\n\t\t\t\t@retry-execution=\"onRetryExecution\"\n\t\t\t/>\n\t\t\t<TransitionGroup name=\"executions-list\">\n\t\t\t\t<WorkflowExecutionsCard\n\t\t\t\t\tv-for=\"execution in executions\"\n\t\t\t\t\t:key=\"execution.id\"\n\t\t\t\t\t:ref=\"`execution-${execution.id}`\"\n\t\t\t\t\t:execution=\"execution\"\n\t\t\t\t\t:data-test-id=\"`execution-details-${execution.id}`\"\n\t\t\t\t\t@retry-execution=\"onRetryExecution\"\n\t\t\t\t\t@mounted=\"onItemMounted\"\n\t\t\t\t/>\n\t\t\t</TransitionGroup>\n\t\t\t<div v-if=\"loadingMore\" class=\"mr-m\">\n\t\t\t\t<n8n-loading variant=\"p\" :rows=\"1\" />\n\t\t\t</div>\n\t\t</div>\n\t\t<div :class=\"$style.infoAccordion\">\n\t\t\t<WorkflowExecutionsInfoAccordion :initially-expanded=\"false\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport WorkflowExecutionsCard from '@/components/executions/workflow/WorkflowExecutionsCard.vue';\nimport WorkflowExecutionsInfoAccordion from '@/components/executions/workflow/WorkflowExecutionsInfoAccordion.vue';\nimport ExecutionsFilter from '@/components/executions/ExecutionsFilter.vue';\nimport { VIEWS } from '@/constants';\nimport type { ExecutionSummary } from 'n8n-workflow';\nimport type { Route } from 'vue-router';\nimport { defineComponent } from 'vue';\nimport type { PropType } from 'vue';\nimport { mapStores } from 'pinia';\nimport { useExecutionsStore } from '@/stores/executions.store';\nimport { useWorkflowsStore } from '@/stores/workflows.store';\nimport type { ExecutionFilterType } from '@/Interface';\n\ntype WorkflowExecutionsCardRef = InstanceType<typeof WorkflowExecutionsCard>;\ntype AutoScrollDeps = { activeExecutionSet: boolean; cardsMounted: boolean; scroll: boolean };\n\nexport default defineComponent({\n\tname: 'WorkflowExecutionsSidebar',\n\tcomponents: {\n\t\tWorkflowExecutionsCard,\n\t\tWorkflowExecutionsInfoAccordion,\n\t\tExecutionsFilter,\n\t},\n\tprops: {\n\t\texecutions: {\n\t\t\ttype: Array as PropType<ExecutionSummary[]>,\n\t\t\trequired: true,\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tloadingMore: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\ttemporaryExecution: {\n\t\t\ttype: Object as PropType<ExecutionSummary>,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\temits: {\n\t\tretryExecution: null,\n\t\tloadMore: null,\n\t\trefresh: null,\n\t\tfilterUpdated: null,\n\t\treloadExecutions: null,\n\t\t'update:autoRefresh': null,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tfilter: {} as ExecutionFilterType,\n\t\t\tmountedItems: [] as string[],\n\t\t\tautoScrollDeps: {\n\t\t\t\tactiveExecutionSet: false,\n\t\t\t\tcardsMounted: false,\n\t\t\t\tscroll: true,\n\t\t\t} as AutoScrollDeps,\n\t\t};\n\t},\n\tcomputed: {\n\t\t...mapStores(useExecutionsStore, useWorkflowsStore),\n\t},\n\twatch: {\n\t\t$route(to: Route, from: Route) {\n\t\t\tif (from.name === VIEWS.EXECUTION_PREVIEW && to.name === VIEWS.EXECUTION_HOME) {\n\t\t\t\t// Skip parent route when navigating through executions with back button\n\t\t\t\tthis.$router.go(-1);\n\t\t\t}\n\t\t},\n\t\t'executionsStore.activeExecution'(\n\t\t\tnewValue: ExecutionSummary | null,\n\t\t\toldValue: ExecutionSummary | null,\n\t\t) {\n\t\t\tif (newValue && newValue.id !== oldValue?.id) {\n\t\t\t\tthis.autoScrollDeps.activeExecutionSet = true;\n\t\t\t}\n\t\t},\n\t\tautoScrollDeps: {\n\t\t\thandler(updatedDeps: AutoScrollDeps) {\n\t\t\t\tif (Object.values(updatedDeps).every(Boolean)) {\n\t\t\t\t\tthis.scrollToActiveCard();\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeep: true,\n\t\t},\n\t},\n\tmethods: {\n\t\tonItemMounted(id: string): void {\n\t\t\tthis.mountedItems.push(id);\n\t\t\tif (this.mountedItems.length === this.executions.length) {\n\t\t\t\tthis.autoScrollDeps.cardsMounted = true;\n\t\t\t\tthis.checkListSize();\n\t\t\t}\n\n\t\t\tif (this.executionsStore.activeExecution?.id === id) {\n\t\t\t\tthis.autoScrollDeps.activeExecutionSet = true;\n\t\t\t}\n\t\t},\n\t\tloadMore(limit = 20): void {\n\t\t\tif (!this.loading) {\n\t\t\t\tconst executionsListRef = this.$refs.executionList as HTMLElement | undefined;\n\t\t\t\tif (executionsListRef) {\n\t\t\t\t\tconst diff =\n\t\t\t\t\t\texecutionsListRef.offsetHeight -\n\t\t\t\t\t\t(executionsListRef.scrollHeight - executionsListRef.scrollTop);\n\t\t\t\t\tif (diff > -10 && diff < 10) {\n\t\t\t\t\t\tthis.$emit('loadMore', limit);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonRetryExecution(payload: object) {\n\t\t\tthis.$emit('retryExecution', payload);\n\t\t},\n\t\tonRefresh(): void {\n\t\t\tthis.$emit('refresh');\n\t\t},\n\t\tonFilterChanged(filter: ExecutionFilterType) {\n\t\t\tthis.$emit('filterUpdated', filter);\n\t\t},\n\t\treloadExecutions(): void {\n\t\t\tthis.$emit('reloadExecutions');\n\t\t},\n\t\tcheckListSize(): void {\n\t\t\tconst sidebarContainerRef = this.$refs.container as HTMLElement | undefined;\n\t\t\tconst currentWorkflowExecutionsCardRefs = this.$refs[\n\t\t\t\t`execution-${this.mountedItems[this.mountedItems.length - 1]}`\n\t\t\t] as WorkflowExecutionsCardRef[] | undefined;\n\n\t\t\t// Find out how many execution card can fit into list\n\t\t\t// and load more if needed\n\t\t\tif (sidebarContainerRef && currentWorkflowExecutionsCardRefs?.length) {\n\t\t\t\tconst cardElement = currentWorkflowExecutionsCardRefs[0].$el as HTMLElement;\n\t\t\t\tconst listCapacity = Math.ceil(sidebarContainerRef.clientHeight / cardElement.clientHeight);\n\n\t\t\t\tif (listCapacity > this.executions.length) {\n\t\t\t\t\tthis.$emit('loadMore', listCapacity - this.executions.length);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tscrollToActiveCard(): void {\n\t\t\tconst executionsListRef = this.$refs.executionList as HTMLElement | undefined;\n\t\t\tconst currentWorkflowExecutionsCardRefs = this.$refs[\n\t\t\t\t`execution-${this.executionsStore.activeExecution?.id}`\n\t\t\t] as WorkflowExecutionsCardRef[] | undefined;\n\n\t\t\tif (\n\t\t\t\texecutionsListRef &&\n\t\t\t\tcurrentWorkflowExecutionsCardRefs?.length &&\n\t\t\t\tthis.executionsStore.activeExecution\n\t\t\t) {\n\t\t\t\tconst cardElement = currentWorkflowExecutionsCardRefs[0].$el as HTMLElement;\n\t\t\t\tconst cardRect = cardElement.getBoundingClientRect();\n\t\t\t\tconst LIST_HEADER_OFFSET = 200;\n\t\t\t\tif (cardRect.top > executionsListRef.offsetHeight) {\n\t\t\t\t\tthis.autoScrollDeps.scroll = false;\n\t\t\t\t\texecutionsListRef.scrollTo({\n\t\t\t\t\t\ttop: cardRect.top - LIST_HEADER_OFFSET,\n\t\t\t\t\t\tbehavior: 'smooth',\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n});\n</script>\n\n<style module lang=\"scss\">\n.container {\n\tflex: 310px 0 0;\n\tbackground-color: var(--color-background-xlight);\n\tborder-right: var(--border-base);\n\tpadding: var(--spacing-l) 0 var(--spacing-l) var(--spacing-l);\n\tz-index: 1;\n\tdisplay: flex;\n\tflex-direction: column;\n\toverflow: hidden;\n}\n\n.heading {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: baseline;\n\tpadding-right: var(--spacing-l);\n}\n\n.controls {\n\tpadding: var(--spacing-s) 0 var(--spacing-xs);\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\tpadding-right: var(--spacing-m);\n\n\tbutton {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t}\n}\n\n.executionList {\n\tflex: 1;\n\toverflow: auto;\n\tmargin-bottom: var(--spacing-m);\n\tbackground-color: var(--color-background-xlight) !important;\n\n\t// Scrolling fader\n\t&::before {\n\t\tposition: absolute;\n\t\tdisplay: block;\n\t\twidth: 270px;\n\t\theight: 6px;\n\t\tbackground: linear-gradient(to bottom, rgba(251, 251, 251, 1) 0%, rgba(251, 251, 251, 0) 100%);\n\t\tz-index: 999;\n\t}\n\n\t// Lower first execution card so fader is not visible when not scrolled\n\t& > div:first-child {\n\t\tmargin-top: 3px;\n\t}\n}\n\n.infoAccordion {\n\tposition: absolute;\n\tbottom: 0;\n\tmargin-left: calc(-1 * var(--spacing-l));\n\tborder-top: var(--border-base);\n\n\t& > div {\n\t\twidth: 309px;\n\t\tbackground-color: var(--color-background-light);\n\t\tmargin-top: 0 !important;\n\t}\n}\n\n.noResultsContainer {\n\twidth: 100%;\n\tmargin-top: var(--spacing-2xl);\n\ttext-align: center;\n}\n</style>\n\n<style lang=\"scss\" scoped>\n.executions-sidebar {\n\t:deep(.el-skeleton__item) {\n\t\theight: 60px;\n\t\tborder-radius: 0;\n\t}\n}\n</style>\n","<template>\n\t<div :class=\"$style.container\">\n\t\t<WorkflowExecutionsSidebar\n\t\t\t:executions=\"executions\"\n\t\t\t:loading=\"loading && !executions.length\"\n\t\t\t:loading-more=\"loadingMore\"\n\t\t\t:temporary-execution=\"temporaryExecution\"\n\t\t\t@update:auto-refresh=\"$emit('update:auto-refresh', $event)\"\n\t\t\t@reload-executions=\"$emit('reload')\"\n\t\t\t@filter-updated=\"$emit('update:filters', $event)\"\n\t\t\t@load-more=\"$emit('load-more')\"\n\t\t\t@retry-execution=\"onRetryExecution\"\n\t\t/>\n\t\t<div v-if=\"!hidePreview\" :class=\"$style.content\">\n\t\t\t<router-view\n\t\t\t\tname=\"executionPreview\"\n\t\t\t\t:execution=\"execution\"\n\t\t\t\t@delete-current-execution=\"onDeleteCurrentExecution\"\n\t\t\t\t@retry-execution=\"onRetryExecution\"\n\t\t\t\t@stop-execution=\"onStopExecution\"\n\t\t\t/>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport type { PropType } from 'vue';\nimport { defineComponent } from 'vue';\nimport { mapStores } from 'pinia';\nimport { useRouter } from 'vue-router';\nimport WorkflowExecutionsSidebar from '@/components/executions/workflow/WorkflowExecutionsSidebar.vue';\nimport {\n\tMAIN_HEADER_TABS,\n\tMODAL_CANCEL,\n\tMODAL_CONFIRM,\n\tPLACEHOLDER_EMPTY_WORKFLOW_ID,\n\tVIEWS,\n} from '@/constants';\nimport type { ExecutionFilterType, IWorkflowDb } from '@/Interface';\nimport type { ExecutionSummary, IDataObject } from 'n8n-workflow';\nimport { useMessage } from '@/composables/useMessage';\nimport { useToast } from '@/composables/useToast';\nimport { getNodeViewTab } from '@/utils/canvasUtils';\nimport { useWorkflowHelpers } from '@/composables/useWorkflowHelpers';\nimport { useUIStore } from '@/stores/ui.store';\nimport { useSettingsStore } from '@/stores/settings.store';\nimport { useNodeTypesStore } from '@/stores/nodeTypes.store';\nimport { useTagsStore } from '@/stores/tags.store';\nimport { executionFilterToQueryFilter } from '@/utils/executionUtils';\nimport { useExternalHooks } from '@/composables/useExternalHooks';\nimport { useDebounce } from '@/composables/useDebounce';\n\nexport default defineComponent({\n\tname: 'WorkflowExecutionsList',\n\tcomponents: {\n\t\tWorkflowExecutionsSidebar,\n\t},\n\tasync beforeRouteLeave(to, _, next) {\n\t\tif (getNodeViewTab(to) === MAIN_HEADER_TABS.WORKFLOW) {\n\t\t\tnext();\n\t\t\treturn;\n\t\t}\n\t\tif (this.uiStore.stateIsDirty) {\n\t\t\tconst confirmModal = await this.confirm(\n\t\t\t\tthis.$locale.baseText('generic.unsavedWork.confirmMessage.message'),\n\t\t\t\t{\n\t\t\t\t\ttitle: this.$locale.baseText('generic.unsavedWork.confirmMessage.headline'),\n\t\t\t\t\ttype: 'warning',\n\t\t\t\t\tconfirmButtonText: this.$locale.baseText(\n\t\t\t\t\t\t'generic.unsavedWork.confirmMessage.confirmButtonText',\n\t\t\t\t\t),\n\t\t\t\t\tcancelButtonText: this.$locale.baseText(\n\t\t\t\t\t\t'generic.unsavedWork.confirmMessage.cancelButtonText',\n\t\t\t\t\t),\n\t\t\t\t\tshowClose: true,\n\t\t\t\t},\n\t\t\t);\n\n\t\t\tif (confirmModal === MODAL_CONFIRM) {\n\t\t\t\tconst saved = await this.workflowHelpers.saveCurrentWorkflow({}, false);\n\t\t\t\tif (saved) {\n\t\t\t\t\tawait this.settingsStore.fetchPromptsData();\n\t\t\t\t}\n\t\t\t\tthis.uiStore.stateIsDirty = false;\n\t\t\t\tnext();\n\t\t\t} else if (confirmModal === MODAL_CANCEL) {\n\t\t\t\tthis.uiStore.stateIsDirty = false;\n\t\t\t\tnext();\n\t\t\t}\n\t\t} else {\n\t\t\tnext();\n\t\t}\n\t},\n\tprops: {\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tworkflow: {\n\t\t\ttype: Object as PropType<IWorkflowDb>,\n\t\t\trequired: true,\n\t\t},\n\t\texecutions: {\n\t\t\ttype: Array as PropType<ExecutionSummary[]>,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tfilters: {\n\t\t\ttype: Object as PropType<ExecutionFilterType>,\n\t\t\tdefault: () => ({}),\n\t\t},\n\t\texecution: {\n\t\t\ttype: Object as PropType<ExecutionSummary>,\n\t\t\tdefault: null,\n\t\t},\n\t\tloadingMore: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\temits: [\n\t\t'execution:delete',\n\t\t'execution:stop',\n\t\t'execution:retry',\n\t\t'update:auto-refresh',\n\t\t'update:filters',\n\t\t'load-more',\n\t\t'reload',\n\t],\n\tsetup() {\n\t\tconst externalHooks = useExternalHooks();\n\t\tconst router = useRouter();\n\t\tconst workflowHelpers = useWorkflowHelpers({ router });\n\t\tconst { callDebounced } = useDebounce();\n\n\t\treturn {\n\t\t\texternalHooks,\n\t\t\tworkflowHelpers,\n\t\t\tcallDebounced,\n\t\t\t...useToast(),\n\t\t\t...useMessage(),\n\t\t};\n\t},\n\tcomputed: {\n\t\t...mapStores(useTagsStore, useNodeTypesStore, useSettingsStore, useUIStore),\n\t\ttemporaryExecution(): ExecutionSummary | undefined {\n\t\t\tconst isTemporary = !this.executions.find((execution) => execution.id === this.execution?.id);\n\t\t\treturn isTemporary ? this.execution : undefined;\n\t\t},\n\t\thidePreview(): boolean {\n\t\t\treturn this.loading || (!this.execution && this.executions.length);\n\t\t},\n\t\tfilterApplied(): boolean {\n\t\t\treturn this.filters.status !== 'all';\n\t\t},\n\t\tworkflowDataNotLoaded(): boolean {\n\t\t\treturn this.workflow.id === PLACEHOLDER_EMPTY_WORKFLOW_ID && this.workflow.name === '';\n\t\t},\n\t\trequestFilter(): IDataObject {\n\t\t\treturn executionFilterToQueryFilter({\n\t\t\t\t...this.filters,\n\t\t\t\tworkflowId: this.workflow.id,\n\t\t\t});\n\t\t},\n\t},\n\twatch: {\n\t\texecution(value: ExecutionSummary) {\n\t\t\tif (!value) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.$router\n\t\t\t\t.push({\n\t\t\t\t\tname: VIEWS.EXECUTION_PREVIEW,\n\t\t\t\t\tparams: { name: this.workflow.id, executionId: value.id },\n\t\t\t\t})\n\t\t\t\t.catch(() => {});\n\t\t},\n\t},\n\tmethods: {\n\t\tasync onDeleteCurrentExecution(): Promise<void> {\n\t\t\tthis.$emit('execution:delete', this.execution.id);\n\t\t},\n\t\tasync onStopExecution(): Promise<void> {\n\t\t\tthis.$emit('execution:stop', this.execution.id);\n\t\t},\n\t\tasync onRetryExecution(payload: { execution: ExecutionSummary; command: string }) {\n\t\t\tconst loadWorkflow = payload.command === 'current-workflow';\n\n\t\t\tthis.$emit('execution:retry', {\n\t\t\t\tid: payload.execution.id,\n\t\t\t\tloadWorkflow,\n\t\t\t});\n\t\t},\n\t},\n});\n</script>\n\n<style module lang=\"scss\">\n.container {\n\tdisplay: flex;\n\theight: 100%;\n\twidth: 100%;\n}\n\n.content {\n\tflex: 1;\n}\n</style>\n","<script lang=\"ts\" setup>\nimport { computed, onBeforeUnmount, onMounted, ref, watch } from 'vue';\nimport WorkflowExecutionsList from '@/components/executions/workflow/WorkflowExecutionsList.vue';\nimport { useExecutionsStore } from '@/stores/executions.store';\nimport { useI18n } from '@/composables/useI18n';\nimport type { ExecutionFilterType, IWorkflowDb } from '@/Interface';\nimport { useWorkflowsStore } from '@/stores/workflows.store';\nimport { useNodeTypesStore } from '@/stores/nodeTypes.store';\nimport { NO_NETWORK_ERROR_CODE } from '@/utils/apiUtils';\nimport { useToast } from '@/composables/useToast';\nimport { VIEWS } from '@/constants';\nimport { useRoute, useRouter } from 'vue-router';\nimport type { ExecutionSummary } from 'n8n-workflow';\nimport { useDebounce } from '@/composables/useDebounce';\nimport { storeToRefs } from 'pinia';\nimport { useTelemetry } from '@/composables/useTelemetry';\n\nconst executionsStore = useExecutionsStore();\nconst workflowsStore = useWorkflowsStore();\nconst nodeTypesStore = useNodeTypesStore();\nconst i18n = useI18n();\nconst telemetry = useTelemetry();\nconst route = useRoute();\nconst router = useRouter();\nconst toast = useToast();\nconst { callDebounced } = useDebounce();\n\nconst { filters } = storeToRefs(executionsStore);\n\nconst loading = ref(false);\nconst loadingMore = ref(false);\n\nconst workflow = ref<IWorkflowDb | undefined>();\n\nconst workflowId = computed(() => {\n\treturn (route.params.name as string) || workflowsStore.workflowId;\n});\n\nconst executionId = computed(() => route.params.executionId as string);\n\nconst executions = computed(() => [\n\t...(executionsStore.currentExecutionsByWorkflowId[workflowId.value] ?? []),\n\t...(executionsStore.executionsByWorkflowId[workflowId.value] ?? []),\n]);\n\nconst execution = computed(() => {\n\treturn executions.value.find((e) => e.id === executionId.value) ?? currentExecution.value;\n});\n\nconst currentExecution = ref<ExecutionSummary | undefined>();\n\nwatch(\n\t() => workflowId.value,\n\tasync () => {\n\t\tawait fetchWorkflow();\n\t},\n);\n\nwatch(\n\t() => executionId.value,\n\tasync () => {\n\t\tawait fetchExecution();\n\t},\n);\n\nonMounted(async () => {\n\tawait nodeTypesStore.loadNodeTypesIfNotLoaded();\n\tawait Promise.all([\n\t\tnodeTypesStore.loadNodeTypesIfNotLoaded(),\n\t\tfetchWorkflow(),\n\t\texecutionsStore.initialize(workflowId.value),\n\t]);\n\tawait fetchExecution();\n\tawait initializeRoute();\n\tdocument.addEventListener('visibilitychange', onDocumentVisibilityChange);\n});\n\nonBeforeUnmount(() => {\n\texecutionsStore.reset();\n\tdocument.removeEventListener('visibilitychange', onDocumentVisibilityChange);\n});\n\nasync function fetchExecution() {\n\tif (!executionId.value) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\tcurrentExecution.value = (await executionsStore.fetchExecution(\n\t\t\texecutionId.value,\n\t\t)) as ExecutionSummary;\n\t\texecutionsStore.activeExecution = currentExecution.value;\n\t} catch (error) {\n\t\ttoast.showError(error, i18n.baseText('nodeView.showError.openExecution.title'));\n\t}\n}\n\nfunction onDocumentVisibilityChange() {\n\tif (document.visibilityState === 'hidden') {\n\t\texecutionsStore.stopAutoRefreshInterval();\n\t} else {\n\t\tvoid executionsStore.startAutoRefreshInterval(workflowId.value);\n\t}\n}\n\nasync function initializeRoute() {\n\tif (route.name === VIEWS.EXECUTION_HOME && executions.value.length > 0 && workflow.value) {\n\t\tawait router\n\t\t\t.push({\n\t\t\t\tname: VIEWS.EXECUTION_PREVIEW,\n\t\t\t\tparams: { name: workflow.value.id, executionId: executions.value[0].id },\n\t\t\t})\n\t\t\t.catch(() => {});\n\t}\n}\n\nasync function fetchWorkflow() {\n\tlet data: IWorkflowDb | undefined;\n\ttry {\n\t\t// @TODO Retrieve from store if exists\n\t\tdata = await workflowsStore.fetchWorkflow(workflowId.value);\n\t} catch (error) {\n\t\ttoast.showError(error, i18n.baseText('nodeView.showError.openWorkflow.title'));\n\t\treturn;\n\t}\n\n\tif (!data) {\n\t\tthrow new Error(\n\t\t\ti18n.baseText('nodeView.workflowWithIdCouldNotBeFound', {\n\t\t\t\tinterpolate: { workflowId: workflowId.value },\n\t\t\t}),\n\t\t);\n\t}\n\n\tworkflow.value = data;\n}\n\nasync function onAutoRefreshToggle(value: boolean) {\n\tif (value) {\n\t\tawait executionsStore.startAutoRefreshInterval(workflowId.value);\n\t} else {\n\t\texecutionsStore.stopAutoRefreshInterval();\n\t}\n}\n\nasync function onRefreshData() {\n\tif (!workflowId.value) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\tawait executionsStore.fetchExecutions({\n\t\t\t...executionsStore.executionsFilters,\n\t\t\tworkflowId: workflowId.value,\n\t\t});\n\t} catch (error) {\n\t\tif (error.errorCode === NO_NETWORK_ERROR_CODE) {\n\t\t\ttoast.showMessage(\n\t\t\t\t{\n\t\t\t\t\ttitle: i18n.baseText('executionsList.showError.refreshData.title'),\n\t\t\t\t\tmessage: error.message,\n\t\t\t\t\ttype: 'error',\n\t\t\t\t\tduration: 3500,\n\t\t\t\t},\n\t\t\t\tfalse,\n\t\t\t);\n\t\t} else {\n\t\t\ttoast.showError(error, i18n.baseText('executionsList.showError.refreshData.title'));\n\t\t}\n\t}\n}\n\nasync function onUpdateFilters(newFilters: ExecutionFilterType) {\n\texecutionsStore.reset();\n\texecutionsStore.setFilters(newFilters);\n\tawait executionsStore.initialize(workflowId.value);\n}\n\nasync function onExecutionStop(id: string) {\n\ttry {\n\t\tawait executionsStore.stopCurrentExecution(id);\n\n\t\ttoast.showMessage({\n\t\t\ttitle: i18n.baseText('executionsList.showMessage.stopExecution.title'),\n\t\t\tmessage: i18n.baseText('executionsList.showMessage.stopExecution.message', {\n\t\t\t\tinterpolate: { activeExecutionId: id },\n\t\t\t}),\n\t\t\ttype: 'success',\n\t\t});\n\n\t\tawait onRefreshData();\n\t} catch (error) {\n\t\ttoast.showError(error, i18n.baseText('executionsList.showError.stopExecution.title'));\n\t}\n}\n\nasync function onExecutionDelete(id: string) {\n\tloading.value = true;\n\ttry {\n\t\tconst executionIndex = executions.value.findIndex((e: ExecutionSummary) => e.id === id);\n\n\t\tconst nextExecution =\n\t\t\texecutions.value[executionIndex + 1] ||\n\t\t\texecutions.value[executionIndex - 1] ||\n\t\t\texecutions.value[0];\n\n\t\tawait executionsStore.deleteExecutions({\n\t\t\tids: [id],\n\t\t});\n\n\t\tif (workflow.value) {\n\t\t\tif (executions.value.length > 0) {\n\t\t\t\tawait router\n\t\t\t\t\t.replace({\n\t\t\t\t\t\tname: VIEWS.EXECUTION_PREVIEW,\n\t\t\t\t\t\tparams: { name: workflow.value.id, executionId: nextExecution.id },\n\t\t\t\t\t})\n\t\t\t\t\t.catch(() => {});\n\t\t\t} else {\n\t\t\t\t// If there are no executions left, show empty state\n\t\t\t\tawait router.replace({\n\t\t\t\t\tname: VIEWS.EXECUTION_HOME,\n\t\t\t\t\tparams: { name: workflow.value.id },\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\tloading.value = false;\n\t\ttoast.showError(error, i18n.baseText('executionsList.showError.handleDeleteSelected.title'));\n\t\treturn;\n\t}\n\tloading.value = false;\n\n\ttoast.showMessage({\n\t\ttitle: i18n.baseText('executionsList.showMessage.handleDeleteSelected.title'),\n\t\ttype: 'success',\n\t});\n}\n\nasync function onExecutionRetry(payload: { id: string; loadWorkflow: boolean }) {\n\ttoast.showMessage({\n\t\ttitle: i18n.baseText('executionDetails.runningMessage'),\n\t\ttype: 'info',\n\t\tduration: 2000,\n\t});\n\n\tawait retryExecution(payload);\n\tawait onRefreshData();\n\n\ttelemetry.track('User clicked retry execution button', {\n\t\tworkflow_id: workflow.value?.id,\n\t\texecution_id: payload.id,\n\t\tretry_type: payload.loadWorkflow ? 'current' : 'original',\n\t});\n}\n\nasync function retryExecution(payload: { id: string; loadWorkflow: boolean }) {\n\ttry {\n\t\tconst retrySuccessful = await executionsStore.retryExecution(payload.id, payload.loadWorkflow);\n\n\t\tif (retrySuccessful) {\n\t\t\ttoast.showMessage({\n\t\t\t\ttitle: i18n.baseText('executionsList.showMessage.retrySuccessfulTrue.title'),\n\t\t\t\ttype: 'success',\n\t\t\t});\n\t\t} else {\n\t\t\ttoast.showMessage({\n\t\t\t\ttitle: i18n.baseText('executionsList.showMessage.retrySuccessfulFalse.title'),\n\t\t\t\ttype: 'error',\n\t\t\t});\n\t\t}\n\t} catch (error) {\n\t\ttoast.showError(error, i18n.baseText('executionsList.showError.retryExecution.title'));\n\t}\n}\n\nasync function onLoadMore(): Promise<void> {\n\tif (!loadingMore.value) {\n\t\tawait callDebounced(loadMore, { debounceTime: 1000 });\n\t}\n}\n\nasync function loadMore(): Promise<void> {\n\tif (\n\t\t!!executionsStore.executionsFilters.status?.includes('running') ||\n\t\texecutions.value.length >= executionsStore.executionsCount\n\t) {\n\t\treturn;\n\t}\n\n\tloadingMore.value = true;\n\n\tlet lastId: string | undefined;\n\tif (executions.value.length !== 0) {\n\t\tconst lastItem = executions.value.slice(-1)[0];\n\t\tlastId = lastItem.id;\n\t}\n\n\ttry {\n\t\tawait executionsStore.fetchExecutions(executionsStore.executionsFilters, lastId);\n\t} catch (error) {\n\t\tloadingMore.value = false;\n\t\ttoast.showError(error, i18n.baseText('executionsList.showError.loadMore.title'));\n\t\treturn;\n\t}\n\n\tloadingMore.value = false;\n}\n</script>\n<template>\n\t<WorkflowExecutionsList\n\t\tv-if=\"workflow\"\n\t\t:executions=\"executions\"\n\t\t:execution=\"execution\"\n\t\t:filters=\"filters\"\n\t\t:workflow=\"workflow\"\n\t\t:loading=\"loading\"\n\t\t:loading-more=\"loadingMore\"\n\t\t@execution:stop=\"onExecutionStop\"\n\t\t@execution:delete=\"onExecutionDelete\"\n\t\t@execution:retry=\"onExecutionRetry\"\n\t\t@update:filters=\"onUpdateFilters\"\n\t\t@update:auto-refresh=\"onAutoRefreshToggle\"\n\t\t@load-more=\"onLoadMore\"\n\t\t@reload=\"onRefreshData\"\n\t/>\n</template>\n"],"names":["_sfc_main$3","defineComponent","ExecutionsTime","useExecutionHelpers","mapStores","useWorkflowsStore","VIEWS","action","_resolveComponent","$style","_normalizeClass","executionUIDetails","_ctx","highlight","_createVNode","_component_router_link","executionPreviewViewName","_withCtx","_createElementVNode","_component_n8n_text","_createTextVNode","_toDisplayString","_openBlock","_createBlock","_component_n8n_spinner","_createCommentVNode","execution","_component_ExecutionsTime","_createElementBlock","_hoisted_1","isRetriable","onRetryMenuItemSelect","_component_n8n_tooltip","_sfc_main$2","WorkflowExecutionsCard","WorkflowExecutionsInfoAccordion","ExecutionsFilter","useExecutionsStore","to","from","newValue","oldValue","updatedDeps","id","_a","limit","executionsListRef","diff","payload","filter","sidebarContainerRef","currentWorkflowExecutionsCardRefs","cardElement","listCapacity","cardRect","LIST_HEADER_OFFSET","_hoisted_2","_component_WorkflowExecutionsInfoAccordion","_component_n8n_heading","_component_el_checkbox","_cache","$event","_component_ExecutionsFilter","loadMore","loading","_component_n8n_loading","temporaryExecution","onRetryExecution","_TransitionGroup","_Fragment","_renderList","_component_WorkflowExecutionsCard","onItemMounted","loadingMore","_sfc_main$1","WorkflowExecutionsSidebar","_","next","getNodeViewTab","MAIN_HEADER_TABS","confirmModal","MODAL_CONFIRM","MODAL_CANCEL","externalHooks","useExternalHooks","router","useRouter","workflowHelpers","useWorkflowHelpers","callDebounced","useDebounce","useToast","useMessage","useTagsStore","useNodeTypesStore","useSettingsStore","useUIStore","PLACEHOLDER_EMPTY_WORKFLOW_ID","executionFilterToQueryFilter","value","loadWorkflow","$emit","hidePreview","onStopExecution","executionsStore","workflowsStore","nodeTypesStore","i18n","useI18n","telemetry","useTelemetry","route","useRoute","toast","filters","storeToRefs","ref","workflow","workflowId","computed","executionId","executions","e","currentExecution","watch","fetchWorkflow","fetchExecution","onMounted","initializeRoute","onDocumentVisibilityChange","onBeforeUnmount","error","data","onAutoRefreshToggle","onRefreshData","NO_NETWORK_ERROR_CODE","onUpdateFilters","newFilters","onExecutionStop","onExecutionDelete","executionIndex","nextExecution","onExecutionRetry","retryExecution","onLoadMore","lastId"],"mappings":"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"}