n8n-editor-ui 1.119.1 → 1.120.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 (491) hide show
  1. package/dist/assets/{AddDataTableModal-78UiDOZ6.js → AddDataTableModal-CbPeeND7.js} +17 -17
  2. package/dist/assets/AddDataTableModal-legacy-TWGqOwvJ.js +165 -0
  3. package/dist/assets/AnimatedSpinner-legacy-a37yY0a9.js +35 -0
  4. package/dist/assets/AnnotationTagsDropdown.ee-legacy-m3_lZt5p.js +90 -0
  5. package/dist/assets/{AnnotationTagsDropdown.ee-B5SGfmxY.js → AnnotationTagsDropdown.ee-nr8ND2ZK.js} +2 -2
  6. package/dist/assets/{AuthView-CaCXt20h.js → AuthView-GQg0-dxd.js} +6 -6
  7. package/dist/assets/AuthView-legacy-BTkTpaqQ.js +170 -0
  8. package/dist/assets/{ChangePasswordView-sh87mWR6.js → ChangePasswordView-CMxYIEv7.js} +15 -15
  9. package/dist/assets/ChangePasswordView-legacy-UYMze_th.js +165 -0
  10. package/dist/assets/{ChatAgentsView-4SiYQ9YJ.js → ChatAgentsView-BF2UQldY.js} +22 -22
  11. package/dist/assets/ChatAgentsView-legacy-C-TEUCMJ.js +418 -0
  12. package/dist/assets/{ChatSidebar-C0XXqw3v.js → ChatSidebar-CwUIdqm5.js} +29 -24
  13. package/dist/assets/ChatSidebar-legacy-BcM0mdnb.js +485 -0
  14. package/dist/assets/{ChatView-BlkLzP1X.js → ChatView-CuoxXANC.js} +26 -26
  15. package/dist/assets/ChatView-legacy-DQzrDKVi.js +1192 -0
  16. package/dist/assets/CollectionParameter-legacy-BCZyr-W3.js +16 -0
  17. package/dist/assets/CollectionParameter-uOVc6KhF.js +58 -0
  18. package/dist/assets/{CommunityNodeUpdateInfo-Egv665vx.js → CommunityNodeUpdateInfo-BbQHVpK8.js} +8 -8
  19. package/dist/assets/CommunityNodeUpdateInfo-legacy-CffmFLEi.js +395 -0
  20. package/dist/assets/{CopyInput-DX-FL085.js → CopyInput-CiPK5ddq.js} +4 -4
  21. package/dist/assets/CopyInput-legacy-BbjpqRcT.js +141 -0
  22. package/dist/assets/{CredentialIcon-DS3l06t2.js → CredentialIcon-CwCVRpiA.js} +2 -2
  23. package/dist/assets/CredentialIcon-legacy-nJdgWX0p.js +110 -0
  24. package/dist/assets/{CredentialsView-C3SKDwtI.js → CredentialsView-Dq_bJCTX.js} +38 -38
  25. package/dist/assets/CredentialsView-legacy-CBU7oObS.js +562 -0
  26. package/dist/assets/{DataTableActions-lgRuMb9F.js → DataTableActions-1pCUiTrK.js} +9 -9
  27. package/dist/assets/DataTableActions-legacy-cggWdqxr.js +113 -0
  28. package/dist/assets/{DataTableDetailsView-CoWw-4gy.js → DataTableDetailsView-FZ996I2K.js} +23 -23
  29. package/dist/assets/DataTableDetailsView-legacy-T6s1xIYP.js +46280 -0
  30. package/dist/assets/{DataTableView-hUsgVnZS.js → DataTableView-0cgj7Yv8.js} +42 -35
  31. package/dist/assets/DataTableView-legacy-Bs1jkgGw.js +353 -0
  32. package/dist/assets/DemoFooter-CYGOF76r.js +70 -0
  33. package/dist/assets/DemoFooter-legacy-BDdJ7htI.js +39 -0
  34. package/dist/assets/{Draggable-DFf4aD-Y.js → Draggable-Cp3VJXN0.js} +1 -1
  35. package/dist/assets/Draggable-legacy-CyKi_Tb4.js +158 -0
  36. package/dist/assets/{EmptySharedSectionActionBox-BkPu0yI0.js → EmptySharedSectionActionBox-D83jdITF.js} +4 -4
  37. package/dist/assets/EmptySharedSectionActionBox-legacy-V1B39cgS.js +68 -0
  38. package/dist/assets/{EnterpriseEdition.ee-BoNEV-MB.js → EnterpriseEdition.ee-Dmuvy1Qj.js} +1 -1
  39. package/dist/assets/EnterpriseEdition.ee-legacy-D0gBfVDw.js +44 -0
  40. package/dist/assets/{EntityNotFound-Bs-aLs3W.js → EntityNotFound-BF7nteVf.js} +7 -7
  41. package/dist/assets/EntityNotFound-legacy-Bfl0-2gj.js +116 -0
  42. package/dist/assets/{EntityUnAuthorised-BwhGn6eD.js → EntityUnAuthorised-4No93VOO.js} +7 -7
  43. package/dist/assets/EntityUnAuthorised-legacy-DLIqjuJf.js +97 -0
  44. package/dist/assets/{ErrorView-Cvlb8nm0.js → ErrorView-GWT7FjjH.js} +9 -9
  45. package/dist/assets/ErrorView-legacy-CtfV-zYc.js +100 -0
  46. package/dist/assets/{EvaluationsRootView-DdOZORFr.js → EvaluationsRootView-C3RbV5Qf.js} +26 -26
  47. package/dist/assets/EvaluationsRootView-legacy-DNES1nzh.js +633 -0
  48. package/dist/assets/{EvaluationsView-DxiPOlGL.js → EvaluationsView-Da2okwlD.js} +20 -20
  49. package/dist/assets/EvaluationsView-legacy-DfePizpg.js +612 -0
  50. package/dist/assets/ExecutionsTime-legacy-CqDKZjaw.js +618 -0
  51. package/dist/assets/{ExecutionsTime-DwXL-TY4.js → ExecutionsTime-y_VFxk2z.js} +9 -9
  52. package/dist/assets/{ExecutionsView-B4XGhWmY.js → ExecutionsView-CHuoC0nO.js} +37 -37
  53. package/dist/assets/ExecutionsView-legacy-DD0RXem0.js +941 -0
  54. package/dist/assets/{ExternalSecretsProviderConnectionSwitch.ee-DCTg0mdX.js → ExternalSecretsProviderConnectionSwitch.ee-BQSSIasB.js} +4 -4
  55. package/dist/assets/ExternalSecretsProviderConnectionSwitch.ee-legacy-7UjbdgbG.js +269 -0
  56. package/dist/assets/FileSaver.min-legacy-BTN44Z38.js +100 -0
  57. package/dist/assets/{FixedCollectionParameter-DjdDaH5s.js → FixedCollectionParameter-BhQfNO8a.js} +48 -48
  58. package/dist/assets/FixedCollectionParameter-legacy-uiOfunC4.js +346 -0
  59. package/dist/assets/{ForgotMyPasswordView-KkAVBYit.js → ForgotMyPasswordView-V8EfVOR8.js} +15 -15
  60. package/dist/assets/ForgotMyPasswordView-legacy-BbZiFRc2.js +118 -0
  61. package/dist/assets/{InsightsChartAverageRuntime-D5Gh8Rz5.js → InsightsChartAverageRuntime-CfCpplsX.js} +8 -8
  62. package/dist/assets/InsightsChartAverageRuntime-legacy-C6yRYbdN.js +91 -0
  63. package/dist/assets/{InsightsChartFailed-D7PZ_ctV.js → InsightsChartFailed-DrX7-PQa.js} +7 -7
  64. package/dist/assets/InsightsChartFailed-legacy-BXNV41_X.js +82 -0
  65. package/dist/assets/{InsightsChartFailureRate-CpPU5Kwd.js → InsightsChartFailureRate-DGn_vu5L.js} +8 -8
  66. package/dist/assets/InsightsChartFailureRate-legacy-xpR-l77z.js +85 -0
  67. package/dist/assets/{InsightsChartTimeSaved-DYrv2t2N.js → InsightsChartTimeSaved-Fn70fEqD.js} +8 -8
  68. package/dist/assets/InsightsChartTimeSaved-legacy-DyXMw-Zj.js +99 -0
  69. package/dist/assets/{InsightsChartTotal-CNqL-Qn3.js → InsightsChartTotal-B0EltniK.js} +7 -7
  70. package/dist/assets/InsightsChartTotal-legacy-ny-Gn0NL.js +82 -0
  71. package/dist/assets/InsightsDashboard-legacy-bfD59wUo.js +562 -0
  72. package/dist/assets/{InsightsDashboard-CrJZtNDS.js → InsightsDashboard-vqQRDBrv.js} +36 -36
  73. package/dist/assets/{InsightsPaywall-DxgcxZ5z.js → InsightsPaywall-BKEVuxSt.js} +16 -16
  74. package/dist/assets/InsightsPaywall-legacy-By7YqflZ.js +83 -0
  75. package/dist/assets/{InsightsSummary-Bew3_p6D.js → InsightsSummary-DsQSWG2Q.js} +8 -8
  76. package/dist/assets/InsightsSummary-legacy-DK4uQ90J.js +225 -0
  77. package/dist/assets/{InsightsTableWorkflows-TAIASHgR.js → InsightsTableWorkflows-MahuiDFz.js} +16 -16
  78. package/dist/assets/InsightsTableWorkflows-legacy-By2jMj0_.js +269 -0
  79. package/dist/assets/{ItemsRenderer-BfXptelN.js → ItemsRenderer-CejxMtdi.js} +8 -8
  80. package/dist/assets/ItemsRenderer-legacy-Cv8U3BDP.js +1178 -0
  81. package/dist/assets/KeyboardShortcutTooltip-legacy-Bvz-OQ26.js +81 -0
  82. package/dist/assets/{KeyboardShortcutTooltip-y1pBqAge.js → KeyboardShortcutTooltip-qZ5YD2sD.js} +1 -1
  83. package/dist/assets/{LogsPanel-Uc0E6yn-.js → LogsPanel-DDYWCOb0.js} +28 -30
  84. package/dist/assets/LogsPanel-Dotn9lvR.js +57 -0
  85. package/dist/assets/LogsPanel-legacy-ByvltTa3.js +16 -0
  86. package/dist/assets/LogsPanel-legacy-CskB3POf.js +2951 -0
  87. package/dist/assets/{MainHeader-M-D-hY8c.js → MainHeader-B2hrGRGJ.js} +241 -65
  88. package/dist/assets/{MainHeader-Dz9UViYg.css → MainHeader-Csdi9iXJ.css} +177 -29
  89. package/dist/assets/MainHeader-legacy-B3RrmiZE.js +2193 -0
  90. package/dist/assets/{MainSidebar-Bf52gQzU.js → MainSidebar-BlYUNsoE.js} +26 -26
  91. package/dist/assets/MainSidebar-legacy-CNRw0zHi.js +1306 -0
  92. package/dist/assets/{MainSidebarUserArea-UHX8ACa4.js → MainSidebarUserArea-CX_QMKfH.js} +5 -5
  93. package/dist/assets/MainSidebarUserArea-legacy-0NdAGU8c.js +172 -0
  94. package/dist/assets/Modal-legacy-DoUf8p-N.js +265 -0
  95. package/dist/assets/{Modal-DwutFKNY.js → Modal-mampYWrf.js} +5 -5
  96. package/dist/assets/{ModalDrawer-B2sNzJVm.js → ModalDrawer-BJGlFvi2.js} +6 -6
  97. package/dist/assets/ModalDrawer-legacy-BXaxLKkg.js +308 -0
  98. package/dist/assets/{NDVEmptyState-DdpBamQ9.js → NDVEmptyState-C7QVArdv.js} +1 -1
  99. package/dist/assets/NDVEmptyState-legacy-DjsKEIfJ.js +19819 -0
  100. package/dist/assets/{NodeCreation-BRIx8Ei9.js → NodeCreation-CL1i8pHd.js} +46 -46
  101. package/dist/assets/NodeCreation-legacy-CaZ3pWYZ.js +273 -0
  102. package/dist/assets/{NodeCreator-DDG2GQ-C.js → NodeCreator-DEx3Dj6j.js} +31 -31
  103. package/dist/assets/NodeCreator-legacy-Dz9MkQtc.js +1670 -0
  104. package/dist/assets/{NodeDetailsView-4jVeGvDi.js → NodeDetailsView-WyL3mE7Y.js} +64 -64
  105. package/dist/assets/NodeDetailsView-legacy-CMUSzOjZ.js +1116 -0
  106. package/dist/assets/{NodeDetailsViewV2-MeaPvImX.js → NodeDetailsViewV2-Bc3aUBj3.js} +65 -65
  107. package/dist/assets/NodeDetailsViewV2-legacy-mj-LYRpv.js +1060 -0
  108. package/dist/assets/{NodeIcon-C-rkj6sB.js → NodeIcon-BYTrCZAx.js} +2 -2
  109. package/dist/assets/NodeIcon-legacy-BHX1t3Oi.js +127 -0
  110. package/dist/assets/{NodeSettings-gAtnSv8q.js → NodeSettings-CPhr6Uu2.js} +19 -19
  111. package/dist/assets/NodeSettings-legacy-BjwVqiPp.js +2811 -0
  112. package/dist/assets/{NodeView-jjqmiYDP.js → NodeView-CUs2uLnS.js} +69 -69
  113. package/dist/assets/NodeView-legacy-B7u8GgSk.js +2660 -0
  114. package/dist/assets/{SettingsProvisioningView-Dhfda99J.css → OAuthConsentView-CXZbBKS5.css} +74 -32
  115. package/dist/assets/OAuthConsentView-YjViDNW3.js +225 -0
  116. package/dist/assets/OAuthConsentView-legacy-CT4ApTLs.js +292 -0
  117. package/dist/assets/PageViewLayout-legacy-B1As2gDz.js +44 -0
  118. package/dist/assets/{ParameterInputList-kEoD9fc7.js → ParameterInputList-DTj_ngLA.js} +29 -29
  119. package/dist/assets/ParameterInputList-legacy-pcN7bYH4.js +38124 -0
  120. package/dist/assets/{PrebuiltAgentTemplatesView-Dd6IJD_W.js → PrebuiltAgentTemplatesView-BECOiYO1.js} +18 -18
  121. package/dist/assets/PrebuiltAgentTemplatesView-legacy-DYhUlIns.js +205 -0
  122. package/dist/assets/{ProjectBreadcrumb-scGlGqYf.js → ProjectBreadcrumb-ClcStQiI.js} +4 -4
  123. package/dist/assets/ProjectBreadcrumb-legacy-PE_pUf9P.js +140 -0
  124. package/dist/assets/{ProjectCardBadge-p4AY0ubu.js → ProjectCardBadge-CR1M799A.js} +5 -5
  125. package/dist/assets/ProjectCardBadge-legacy-DwhYlW-b.js +251 -0
  126. package/dist/assets/{ProjectHeader-BZeiGuD6.js → ProjectHeader-L2nKcFJq.js} +12 -11
  127. package/dist/assets/ProjectHeader-legacy-Dk15aN_m.js +710 -0
  128. package/dist/assets/{ProjectIcon-DqKjDNbR.js → ProjectIcon-CHk5fa0e.js} +1 -1
  129. package/dist/assets/ProjectIcon-legacy-PFbusJyz.js +109 -0
  130. package/dist/assets/{ProjectRoleView-ByzrSQP-.js → ProjectRoleView-BIInR1qk.js} +46 -31
  131. package/dist/assets/ProjectRoleView-legacy-BO9-6Zog.js +480 -0
  132. package/dist/assets/{ProjectRolesView-DclD8eEm.js → ProjectRolesView-D2-fIOtW.js} +24 -21
  133. package/dist/assets/ProjectRolesView-legacy-CWMn_I7U.js +321 -0
  134. package/dist/assets/{ProjectSettings-4wa93sE4.js → ProjectSettings-BlClYwF1.js} +27 -26
  135. package/dist/assets/ProjectSettings-legacy-BPsXj5XT.js +1070 -0
  136. package/dist/assets/{ProjectSharing-BVPUxo_M.js → ProjectSharing-CSeX6YY5.js} +5 -5
  137. package/dist/assets/ProjectSharing-legacy-xYY68ooo.js +307 -0
  138. package/dist/assets/{ProjectVariables-x9spBaqX.js → ProjectVariables-Bjzw7BIq.js} +34 -34
  139. package/dist/assets/ProjectVariables-legacy-DfW6sdX0.js +572 -0
  140. package/dist/assets/{PushConnectionTracker-ByNVqY0h.js → PushConnectionTracker-DFq8UG-S.js} +3 -3
  141. package/dist/assets/PushConnectionTracker-legacy-B0Q_Dv5f.js +65 -0
  142. package/dist/assets/{ResourcesListLayout-UXbxK1S7.js → ResourcesListLayout-Cf-VCtXT.js} +10 -10
  143. package/dist/assets/ResourcesListLayout-legacy-DYKabjb6.js +938 -0
  144. package/dist/assets/RunDataHtml-B1O-g3bi.js +7 -0
  145. package/dist/assets/{RunDataHtml-DdtrEw19.js → RunDataHtml-BNcvZDMJ.js} +1 -1
  146. package/dist/assets/RunDataHtml-legacy-DopSvQCJ.js +63 -0
  147. package/dist/assets/RunDataHtml-legacy-h0qPMlWv.js +16 -0
  148. package/dist/assets/{RunDataJson-CxLotBq-.js → RunDataJson-CtU-jO3b.js} +14 -17
  149. package/dist/assets/RunDataJson-legacy-CDVGwTtk.js +253 -0
  150. package/dist/assets/{RunDataJsonActions-qylVa2u8.js → RunDataJsonActions-DcS_v76R.js} +15 -15
  151. package/dist/assets/RunDataJsonActions-legacy-CamxDlZh.js +5126 -0
  152. package/dist/assets/RunDataParsedAiContent-BFEUw_Z8.js +25 -0
  153. package/dist/assets/{RunDataParsedAiContent-Cs80jq_q.js → RunDataParsedAiContent-BVsW98ij.js} +7 -7
  154. package/dist/assets/RunDataParsedAiContent-legacy-CQnMh9q4.js +16 -0
  155. package/dist/assets/RunDataParsedAiContent-legacy-y3M6jgoj.js +234 -0
  156. package/dist/assets/{RunDataSearch-BvoYWH8W.js → RunDataSearch-Dd6t4Vgs.js} +10 -10
  157. package/dist/assets/RunDataSearch-legacy-D2VmIo7g.js +194 -0
  158. package/dist/assets/{RunDataTable-d3eXUdSg.js → RunDataTable-CuP87FpN.js} +16 -16
  159. package/dist/assets/RunDataTable-legacy-ByZIy2Hl.js +724 -0
  160. package/dist/assets/{SamlOnboarding-CRtDDWqf.js → SamlOnboarding-R6iv6uwF.js} +15 -15
  161. package/dist/assets/SamlOnboarding-legacy-3hKQbF8_.js +92 -0
  162. package/dist/assets/{SaveButton-D1iDaopV.js → SaveButton-CtUWsjwd.js} +3 -3
  163. package/dist/assets/SaveButton-legacy-6GGcUStL.js +123 -0
  164. package/dist/assets/{SelectedItemsInfo-CSzniBOD.js → SelectedItemsInfo-CFCO70kL.js} +2 -2
  165. package/dist/assets/SelectedItemsInfo-legacy-u_4Aalns.js +95 -0
  166. package/dist/assets/{SettingsApiView-DqnHEaAj.js → SettingsApiView-Aw62JsK1.js} +20 -20
  167. package/dist/assets/SettingsApiView-legacy-C9zAm0u7.js +409 -0
  168. package/dist/assets/SettingsCommunityNodesView-legacy-BKyymFU0.js +443 -0
  169. package/dist/assets/{SettingsCommunityNodesView-C7JC1VAK.js → SettingsCommunityNodesView-usMNCBTP.js} +34 -34
  170. package/dist/assets/{SettingsExternalSecrets-CqTHs6zk.js → SettingsExternalSecrets-3H27kaGp.js} +18 -18
  171. package/dist/assets/SettingsExternalSecrets-legacy-CUMq_ivN.js +315 -0
  172. package/dist/assets/SettingsLdapView-legacy-D5vgdVWc.js +2246 -0
  173. package/dist/assets/{SettingsLdapView-zifHhZKy.js → SettingsLdapView-oVEYnCs1.js} +21 -21
  174. package/dist/assets/{SettingsLogStreamingView-CQwuqSl8.js → SettingsLogStreamingView-DBnackHm.js} +20 -20
  175. package/dist/assets/SettingsLogStreamingView-legacy-CQ8nq1FW.js +479 -0
  176. package/dist/assets/SettingsMCPView-BD9hb-oe.js +936 -0
  177. package/dist/assets/SettingsMCPView-BGXq9o_x.css +1248 -0
  178. package/dist/assets/SettingsMCPView-legacy-B8E45TNn.js +1111 -0
  179. package/dist/assets/{SettingsPersonalView-C1NF8zuk.js → SettingsPersonalView-Dw-9ZYmb.js} +16 -16
  180. package/dist/assets/SettingsPersonalView-legacy-BCa5pb35.js +484 -0
  181. package/dist/assets/SettingsProvisioningView-C4D0a4Kz.css +303 -0
  182. package/dist/assets/SettingsProvisioningView-DpAIsdfr.js +448 -0
  183. package/dist/assets/SettingsProvisioningView-legacy-7LiGCRgO.js +530 -0
  184. package/dist/assets/{SettingsSourceControl-CZryQCqT.js → SettingsSourceControl-DJj3DHHA.js} +20 -20
  185. package/dist/assets/SettingsSourceControl-legacy-BdmpiLob.js +580 -0
  186. package/dist/assets/{SettingsSso-CeeFO_Pv.js → SettingsSso-BeDmk3V-.js} +21 -21
  187. package/dist/assets/SettingsSso-legacy-BTbHZn2L.js +507 -0
  188. package/dist/assets/{SettingsUsageAndPlan-DMMd5WcZ.js → SettingsUsageAndPlan-FoM6V1Ld.js} +19 -19
  189. package/dist/assets/SettingsUsageAndPlan-legacy-m-cDuLWb.js +505 -0
  190. package/dist/assets/{SettingsUsersView-DWVyE4hY.js → SettingsUsersView-BwTyYPXj.js} +21 -21
  191. package/dist/assets/SettingsUsersView-legacy-D39e8lpD.js +931 -0
  192. package/dist/assets/{SettingsView-trF6L-tM.js → SettingsView-BfAuJHR3.js} +13 -12
  193. package/dist/assets/SettingsView-legacy-hgJAMD5w.js +346 -0
  194. package/dist/assets/{SetupTemplateFormStep-BsgzR5CN.js → SetupTemplateFormStep-5Dxz6mL3.js} +6 -6
  195. package/dist/assets/SetupTemplateFormStep-legacy-Br6RSFQH.js +548 -0
  196. package/dist/assets/{SetupView-Bx4ZLcja.js → SetupView-CvELBthc.js} +15 -15
  197. package/dist/assets/SetupView-legacy-yEyZVczN.js +126 -0
  198. package/dist/assets/{SetupWorkflowCredentialsButton-DR_aufFd.js → SetupWorkflowCredentialsButton-DAFrS1pq.js} +12 -12
  199. package/dist/assets/SetupWorkflowCredentialsButton-legacy-BkSWj18e.js +84 -0
  200. package/dist/assets/SetupWorkflowFromTemplateView-legacy-ByqlU9fc.js +376 -0
  201. package/dist/assets/{SetupWorkflowFromTemplateView-Ded77Ph-.js → SetupWorkflowFromTemplateView-uxGhfWLo.js} +21 -21
  202. package/dist/assets/SigninView-legacy-wkJIfoQV.js +441 -0
  203. package/dist/assets/{SigninView-DXPofyPm.js → SigninView-qzciwLod.js} +16 -16
  204. package/dist/assets/{SignoutView-B7H_dRJO.js → SignoutView-BAHDN7_D.js} +10 -10
  205. package/dist/assets/SignoutView-legacy-7HQWbMDt.js +56 -0
  206. package/dist/assets/{SignupView-BHWVvwh8.js → SignupView-ClulJHw1.js} +15 -15
  207. package/dist/assets/SignupView-legacy-2pnkjTn7.js +154 -0
  208. package/dist/assets/TagsDropdown-legacy-BtJ1Sjlj.js +285 -0
  209. package/dist/assets/{TagsDropdown-D6CYk5R8.js → TagsDropdown-sf5rCG4m.js} +4 -4
  210. package/dist/assets/{TemplateDetails-ezK9JOOl.js → TemplateDetails-DQtY0s_s.js} +7 -7
  211. package/dist/assets/TemplateDetails-legacy-BsMCyy8I.js +197 -0
  212. package/dist/assets/{TemplateList-DztR2yKa.js → TemplateList-DRC8FrQz.js} +5 -5
  213. package/dist/assets/TemplateList-legacy-D0LSlQK9.js +411 -0
  214. package/dist/assets/{TemplatesCollectionView-Bu_YRd84.js → TemplatesCollectionView-DONrZBME.js} +23 -23
  215. package/dist/assets/TemplatesCollectionView-legacy-HXEUNo_l.js +248 -0
  216. package/dist/assets/{TemplatesSearchView-C7zBEV2b.js → TemplatesSearchView-DDZuvKqM.js} +21 -21
  217. package/dist/assets/TemplatesSearchView-legacy-28acdtqn.js +1427 -0
  218. package/dist/assets/{TemplatesView-BnozPkTX.js → TemplatesView-BmiQGH35.js} +3 -3
  219. package/dist/assets/TemplatesView-legacy-B2w8licK.js +113 -0
  220. package/dist/assets/{TemplatesWorkflowView-BTyHc3MG.js → TemplatesWorkflowView-Cdwrydpt.js} +25 -25
  221. package/dist/assets/TemplatesWorkflowView-legacy-C_2wkoc1.js +220 -0
  222. package/dist/assets/{TestRunDetailView-B76TM9u8.js → TestRunDetailView-Dhq4tAJV.js} +18 -18
  223. package/dist/assets/TestRunDetailView-legacy-hQli5No4.js +500 -0
  224. package/dist/assets/TextWithHighlights-legacy-CVW5NpX4.js +108 -0
  225. package/dist/assets/{TimeAgo-Gv5h1Utx.js → TimeAgo-BFJOHR5_.js} +2 -2
  226. package/dist/assets/TimeAgo-legacy-OJCaC3xJ.js +200 -0
  227. package/dist/assets/{TriggerPanel-Dx9LpA4p.js → TriggerPanel-DtaNk_Mt.js} +80 -28
  228. package/dist/assets/{TriggerPanel-BQveVt6Q.css → TriggerPanel-jKx3Ut66.css} +31 -10
  229. package/dist/assets/TriggerPanel-legacy-DGckjcgd.js +1519 -0
  230. package/dist/assets/{VirtualSchema-CUUzo795.js → VirtualSchema-BPKNcaHe.js} +16 -16
  231. package/dist/assets/VirtualSchema-Ce9RryqL.js +43 -0
  232. package/dist/assets/VirtualSchema-legacy-BT94K3Qg.js +2655 -0
  233. package/dist/assets/VirtualSchema-legacy-DWrDvaPx.js +16 -0
  234. package/dist/assets/{VueMarkdown-CiR4a0gO.js → VueMarkdown-CF7KJfpC.js} +1 -1
  235. package/dist/assets/VueMarkdown-legacy-Dyo2dNbU.js +50 -0
  236. package/dist/assets/{WorkerView-D7h4pmTk.js → WorkerView-CUypvdcg.js} +39 -39
  237. package/dist/assets/WorkerView-legacy-DMYRM_Cm.js +636 -0
  238. package/dist/assets/{WorkflowActivator-k3HTYXbc.js → WorkflowActivator-DcgoNwmT.js} +8 -8
  239. package/dist/assets/WorkflowActivator-legacy-PoTuxdWE.js +473 -0
  240. package/dist/assets/{WorkflowExecutionsInfoAccordion-DL5cBkbK.js → WorkflowExecutionsInfoAccordion-C6OXDZEA.js} +7 -7
  241. package/dist/assets/WorkflowExecutionsInfoAccordion-legacy-B4TTZinW.js +226 -0
  242. package/dist/assets/{WorkflowExecutionsLandingPage-DlXz9Jry.js → WorkflowExecutionsLandingPage-D2pYB3tS.js} +21 -21
  243. package/dist/assets/WorkflowExecutionsLandingPage-legacy-DaS6jgLc.js +136 -0
  244. package/dist/assets/{WorkflowExecutionsPreview-DJWD2i74.js → WorkflowExecutionsPreview-B-EBo84g.js} +25 -25
  245. package/dist/assets/WorkflowExecutionsPreview-legacy-BZAG_FE2.js +745 -0
  246. package/dist/assets/{WorkflowExecutionsView-CK-2WqY7.js → WorkflowExecutionsView-DPiBL6kC.js} +38 -38
  247. package/dist/assets/WorkflowExecutionsView-legacy-C6eVhTue.js +880 -0
  248. package/dist/assets/{WorkflowHistory-Cb-ZoRBp.js → WorkflowHistory-ZHxuKv_S.js} +19 -19
  249. package/dist/assets/WorkflowHistory-legacy-D9EpXPrw.js +881 -0
  250. package/dist/assets/{WorkflowOnboardingView-CguOMlib.js → WorkflowOnboardingView-B7iQi_8k.js} +9 -9
  251. package/dist/assets/WorkflowOnboardingView-legacy-DGVGXrbp.js +95 -0
  252. package/dist/assets/WorkflowPreview-legacy-Ck8uteSS.js +249 -0
  253. package/dist/assets/{WorkflowPreview-DY79uYFw.js → WorkflowPreview-q32aqNwB.js} +5 -5
  254. package/dist/assets/{WorkflowTagsDropdown-CdEFZM1A.js → WorkflowTagsDropdown-DTUxLHbz.js} +2 -2
  255. package/dist/assets/WorkflowTagsDropdown-legacy-D6X-TzYC.js +90 -0
  256. package/dist/assets/{WorkflowsView-BnxQSw3m.js → WorkflowsView-CMeOv7jM.js} +98 -80
  257. package/dist/assets/{WorkflowsView-2XTsT7zB.css → WorkflowsView-M8ExG7Q2.css} +22 -19
  258. package/dist/assets/WorkflowsView-legacy-BpAAeN0R.js +3521 -0
  259. package/dist/assets/{_MapCache-Byd-DTfo.js → _MapCache-Dw6Llo22.js} +74 -11
  260. package/dist/assets/_MapCache-legacy-DcX1vy0l.js +11084 -0
  261. package/dist/assets/_plugin-vue_export-helper-legacy-DZMI5HPp.js +19 -0
  262. package/dist/assets/{apiKeys.store-CPsBJKkq.js → apiKeys.store-HKuBxy3l.js} +1 -1
  263. package/dist/assets/apiKeys.store-legacy-BLC1aaW1.js +76 -0
  264. package/dist/assets/{assistant.store-DvuxtpS4.js → assistant.store-BtplYeLr.js} +6 -6
  265. package/dist/assets/assistant.store-legacy-Dk3PMmMU.js +1313 -0
  266. package/dist/assets/{auth.eventBus-YsWbuB84.js → auth.eventBus-16zfbqGs.js} +1 -1
  267. package/dist/assets/auth.eventBus-legacy-HP2TbQxy.js +22 -0
  268. package/dist/assets/{banners.store-BQPwuqhn.js → banners.store-DikUBA5o.js} +3 -3
  269. package/dist/assets/banners.store-legacy-DUTxfINX.js +260 -0
  270. package/dist/assets/buttons.esm-legacy-BLrJSt1Z.js +419 -0
  271. package/dist/assets/chart-legacy-DbW-cf8m.js +12055 -0
  272. package/dist/assets/chartjs.utils-legacy-CKDO0Ba9.js +208 -0
  273. package/dist/assets/{chartjs.utils-Bf07Y-P-.js → chartjs.utils-om4DCCN2.js} +3 -3
  274. package/dist/assets/{chatPanel.store-fM-8PK9i.js → chatPanel.store-BZOiAoXE.js} +4 -4
  275. package/dist/assets/chatPanel.store-legacy-CQ6tsDjT.js +153 -0
  276. package/dist/assets/chunk-legacy-Re9CbdfL.js +59 -0
  277. package/dist/assets/{cloudPlan.store-DrraBpZJ.js → cloudPlan.store-DT2PFV79.js} +2 -2
  278. package/dist/assets/cloudPlan.store-legacy-BPgz6zU7.js +208 -0
  279. package/dist/assets/{col-DK_GtMhM.js → col-Da3-PCMn.js} +3 -3
  280. package/dist/assets/col-legacy-Bhm60Oe3.js +186 -0
  281. package/dist/assets/{constants-DvlTm3U4.js → constants-C5Tj3dXQ.js} +362 -356
  282. package/dist/assets/constants-legacy-CLA25gM9.js +61343 -0
  283. package/dist/assets/constants-legacy-D22nGw-a.js +26 -0
  284. package/dist/assets/{core-6lPsS9S5.js → core-CH2Kku_3.js} +1 -1
  285. package/dist/assets/core-legacy-BVoFM47F.js +1857 -0
  286. package/dist/assets/core-legacy-De470jmW.js +20 -0
  287. package/dist/assets/{dataTable.store-u9fGWest.js → dataTable.store-BC5cIRU-.js} +5 -3
  288. package/dist/assets/dataTable.store-legacy-BKpQb7Gy.js +202 -0
  289. package/dist/assets/{date-picker-CVSd-BRt.js → date-picker-D6cS76wx.js} +3 -3
  290. package/dist/assets/date-picker-legacy-pB1SshLs.js +4508 -0
  291. package/dist/assets/{dateFormatter-BD73Za8B.js → dateFormatter-DysKGI6w.js} +1 -1
  292. package/dist/assets/dateFormatter-legacy-Dl8dqhrg.js +53 -0
  293. package/dist/assets/dateformat-legacy-Xt1X-tys.js +161 -0
  294. package/dist/assets/{dialog-BMoy5MDa.js → dialog-Cgy1Sihv.js} +4 -4
  295. package/dist/assets/dialog-legacy-BrpTfsO5.js +518 -0
  296. package/dist/assets/{dist-CWw8iddm.js → dist-D33xoYUY.js} +1 -1
  297. package/dist/assets/dist-legacy-8f5owWm6.js +204 -0
  298. package/dist/assets/{empty-BuGRxzl4.js → empty-RTEMfF4N.js} +1 -1
  299. package/dist/assets/empty-legacy-DnVUoqbC.js +2409 -0
  300. package/dist/assets/en-legacy-Bgme8Vbm.js +98 -0
  301. package/dist/assets/en-legacy-BwVJMmMW.js +16 -0
  302. package/dist/assets/{es-BazDU8Wd.js → es-Cjns9o4Y.js} +1 -1
  303. package/dist/assets/es-legacy-8dRs2C3P.js +16006 -0
  304. package/dist/assets/{evaluation.constants-CIiAC2dT.js → evaluation.constants-BJTUNo2q.js} +3 -3
  305. package/dist/assets/evaluation.constants-legacy-7byaeleB.js +363 -0
  306. package/dist/assets/{executions.store-IU9p1s46.js → executions.store-D2xBmTFC.js} +1 -1
  307. package/dist/assets/executions.store-legacy-BzRopbKX.js +246 -0
  308. package/dist/assets/exports-legacy-RTRnyI4R.js +3103 -0
  309. package/dist/assets/{externalSecrets.ee.store-1z63wMHN.js → externalSecrets.ee.store-CbqCu_KF.js} +2 -2
  310. package/dist/assets/externalSecrets.ee.store-legacy-BP6gQv_P.js +145 -0
  311. package/dist/assets/{focusPanel.store-BJpwjMIG.js → focusPanel.store-CPU1uVq-.js} +4 -4
  312. package/dist/assets/focusPanel.store-legacy-BcpstEbJ.js +264 -0
  313. package/dist/assets/{folders.store-Db975T-w.js → folders.store-CmYx4Y_F.js} +2 -2
  314. package/dist/assets/folders.store-legacy-BAC47Qt0.js +267 -0
  315. package/dist/assets/{icon-DhADuA9N.js → icon-DmIKo5zZ.js} +1 -1
  316. package/dist/assets/icon-legacy-gLTnORTx.js +458 -0
  317. package/dist/assets/{index-C8erHZ_Y.css → index-4I6DPmNr.css} +1 -1
  318. package/dist/assets/{index-C25i7qsE.js → index-CSjecLC-.js} +189 -1627
  319. package/dist/assets/index-legacy-BeiTnujt.js +28424 -0
  320. package/dist/assets/insights.constants-legacy-D5Y8YhR_.js +64 -0
  321. package/dist/assets/{insights.store-DC_enAA-.js → insights.store-aHF8maKY.js} +4 -4
  322. package/dist/assets/insights.store-legacy-XeWToovL.js +89 -0
  323. package/dist/assets/{insights.utils-ClJRVRAK.js → insights.utils-ClwWcg-l.js} +8 -8
  324. package/dist/assets/insights.utils-legacy-DWaseOa4.js +96 -0
  325. package/dist/assets/{isEmpty-DrZRN4lR.js → isEmpty-Dg0afC99.js} +30 -31
  326. package/dist/assets/isEmpty-legacy-7ibnR7BO.js +43393 -0
  327. package/dist/assets/{languageModules-CNluY7w0.js → languageModules-BF7Ga1Pj.js} +1 -1
  328. package/dist/assets/languageModules-legacy-BaU1eOK3.js +7184 -0
  329. package/dist/assets/{logStreaming.store-CPvxjcQB.js → logStreaming.store-DFZnZ2Rt.js} +1 -1
  330. package/dist/assets/logStreaming.store-legacy-B_cbQPAW.js +209 -0
  331. package/dist/assets/mcp.constants-BCNosk1p.js +5 -0
  332. package/dist/assets/mcp.constants-legacy-CZfk8DW2.js +18 -0
  333. package/dist/assets/{mcp.store-YGfe2oZU.js → mcp.store-Bd62s_4P.js} +23 -3
  334. package/dist/assets/mcp.store-legacy-C00py4q_.js +125 -0
  335. package/dist/assets/{merge-CKEa8BM2.js → merge-Dnkh07HW.js} +1 -1
  336. package/dist/assets/merge-legacy-CcVOuFTi.js +1529 -0
  337. package/dist/assets/{nodeCreator.store-DHz0Nc1Y.js → nodeCreator.store-C1GkQ_2N.js} +8 -8
  338. package/dist/assets/nodeCreator.store-legacy-CjrGX9Lm.js +4758 -0
  339. package/dist/assets/{nodeIcon-ry_JIpAT.js → nodeIcon-ChI78z3o.js} +2 -2
  340. package/dist/assets/nodeIcon-legacy-DD6sIN5e.js +122 -0
  341. package/dist/assets/{nodeTransforms-PeZUYiCs.js → nodeTransforms-C7fmOXNl.js} +2 -2
  342. package/dist/assets/nodeTransforms-legacy-BI0GkY5n.js +86 -0
  343. package/dist/assets/npsSurvey.store-legacy-oZP0npqy.js +123 -0
  344. package/dist/assets/{npsSurvey.store-BTpA4Bdf.js → npsSurvey.store-ylMA9JZD.js} +2 -2
  345. package/dist/assets/{orderBy-CMVxNao4.js → orderBy-FDQLKrkD.js} +2 -2
  346. package/dist/assets/orderBy-legacy-BZrAOdi3.js +63 -0
  347. package/dist/assets/{overlay-B8MMvNgs.js → overlay-C02_kK8Y.js} +2 -2
  348. package/dist/assets/overlay-legacy-CfieUdAZ.js +218 -0
  349. package/dist/assets/{path-browserify-DsmB_HMK.js → path-browserify-CTmc1OxV.js} +1 -1
  350. package/dist/assets/path-browserify-legacy-DJbEMZcd.js +328 -0
  351. package/dist/assets/{personalizedTemplatesV3.store-C0D2WZuq.js → personalizedTemplatesV3.store-alXco4LN.js} +4 -4
  352. package/dist/assets/personalizedTemplatesV3.store-legacy-D4xPTzWQ.js +313 -0
  353. package/dist/assets/{pickBy-DWZbVA0W.js → pickBy-SlOaKcI1.js} +2 -2
  354. package/dist/assets/pickBy-legacy-5fAqUgO0.js +59 -0
  355. package/dist/assets/polyfills-legacy-07zJxDbQ.js +4836 -0
  356. package/dist/assets/preload-helper-legacy-CXRjoQ0T.js +73 -0
  357. package/dist/assets/{radio-5XOrKEP7.js → radio-BlnltmtN.js} +3 -3
  358. package/dist/assets/radio-legacy-CvqQyMRY.js +323 -0
  359. package/dist/assets/{readyToRunWorkflows.store-C23cIyhu.js → readyToRunWorkflows.store-BXoUeVNE.js} +5 -5
  360. package/dist/assets/readyToRunWorkflows.store-legacy-CLv3FVF5.js +2086 -0
  361. package/dist/assets/{readyToRunWorkflowsV2.store-BxZUJyXQ.js → readyToRunWorkflowsV2.store-BJAu2HwR.js} +7 -7
  362. package/dist/assets/readyToRunWorkflowsV2.store-legacy-CM_1ZlJR.js +549 -0
  363. package/dist/assets/retry-legacy-CkXCWkMV.js +48 -0
  364. package/dist/assets/{roles.store-Bk6Eo7y8.js → roles.store-DzShOYE2.js} +2 -2
  365. package/dist/assets/roles.store-legacy-BxleDMZw.js +67 -0
  366. package/dist/assets/{router-D4zIcC5W.js → router-B0aGwO7-.js} +93 -84
  367. package/dist/assets/router-legacy-BCUbS_pL.js +1705 -0
  368. package/dist/assets/{sanitize-html-BuXr7o4T.js → sanitize-html-Cfxibw1n.js} +2 -2
  369. package/dist/assets/sanitize-html-legacy-DfOUEbdf.js +9987 -0
  370. package/dist/assets/{schemaPreview.store-BVhugjbw.js → schemaPreview.store-DoyPeLof.js} +2 -2
  371. package/dist/assets/schemaPreview.store-legacy-CtBwiQEG.js +153 -0
  372. package/dist/assets/{semver-lN9oCZPq.js → semver-D1BuALCK.js} +2 -2
  373. package/dist/assets/semver-legacy-iZYhFDDU.js +1499 -0
  374. package/dist/assets/smartDecimal-legacy-BeOdMR2z.js +19 -0
  375. package/dist/assets/sortByProperty-legacy-CgPLoqtk.js +21 -0
  376. package/dist/assets/{sourceControl.eventBus-BkPwCZw_.js → sourceControl.eventBus-kAyFUXsG.js} +1 -1
  377. package/dist/assets/sourceControl.eventBus-legacy-oIGia_rL.js +17 -0
  378. package/dist/assets/{src-D6S9Khji.js → src-DsaRShTK.js} +648 -600
  379. package/dist/assets/src-legacy-6Jvz4Sen.js +64208 -0
  380. package/dist/assets/{sso.store-qzj82Xj4.js → sso.store-Cw8J8on5.js} +1 -1
  381. package/dist/assets/sso.store-legacy-Ci_mQS0X.js +185 -0
  382. package/dist/assets/{table-s-zqHExs.js → table-adhNf731.js} +3 -3
  383. package/dist/assets/table-legacy-DECH20yK.js +4957 -0
  384. package/dist/assets/{templateActions-BeIpzgaa.js → templateActions-B4t6RCi8.js} +4 -4
  385. package/dist/assets/templateActions-legacy-CqwW8d3O.js +134 -0
  386. package/dist/assets/{templateTransforms-Cgy40V1P.js → templateTransforms-Bu9cSoOY.js} +1 -1
  387. package/dist/assets/templateTransforms-legacy-DToYks9P.js +84 -0
  388. package/dist/assets/{templates.store-COjIpQaS.js → templates.store-Bt8tpLPx.js} +3 -3
  389. package/dist/assets/templates.store-legacy-CPyYqMqR.js +459 -0
  390. package/dist/assets/{truncate-DGRsht-H.js → truncate-7XypoloM.js} +1 -1
  391. package/dist/assets/truncate-legacy-D2_XDpGK.js +5763 -0
  392. package/dist/assets/{uniqBy-BUNHbbw3.js → uniqBy-DAOmWpEt.js} +1 -1
  393. package/dist/assets/uniqBy-legacy-8A5HU2la.js +52 -0
  394. package/dist/assets/{usage.store-EBmhHKPv.js → usage.store-Xl7x6DGx.js} +1 -1
  395. package/dist/assets/usage.store-legacy-CVF7gKOp.js +126 -0
  396. package/dist/assets/{useActions-CqdsN2GH.js → useActions-BeWbvBcf.js} +5 -5
  397. package/dist/assets/useActions-legacy-B8B-O_ET.js +330 -0
  398. package/dist/assets/{useAgent-BHJHCfap.js → useAgent-C1ldRVaA.js} +1 -1
  399. package/dist/assets/useAgent-legacy-BSTQ3a_e.js +28 -0
  400. package/dist/assets/{useBeforeUnload-BPhnlPrH.js → useBeforeUnload-Dk9osL_V.js} +3 -3
  401. package/dist/assets/useBeforeUnload-legacy-hCNmJWkt.js +69 -0
  402. package/dist/assets/{useBugReporting-oDEHgPM1.js → useBugReporting-B8EUAXTd.js} +9 -9
  403. package/dist/assets/useBugReporting-legacy-Dbui6uN6.js +383 -0
  404. package/dist/assets/{useCanvasMapping-DWlYBxgN.js → useCanvasMapping-CC7eJyt0.js} +21 -20
  405. package/dist/assets/useCanvasMapping-legacy-DRk52E6N.js +14180 -0
  406. package/dist/assets/{useCanvasOperations-CFsSFVcO.js → useCanvasOperations-Cxgmc_7x.js} +13 -13
  407. package/dist/assets/useCanvasOperations-legacy-DDhXmhZf.js +1992 -0
  408. package/dist/assets/{useChatCredentials-CMV_NA0l.js → useChatCredentials-DQJGjWzL.js} +24 -12
  409. package/dist/assets/useChatCredentials-legacy-BB0gXwkF.js +717 -0
  410. package/dist/assets/{useChatHubSidebarState-CM9tokIj.js → useChatHubSidebarState-DpLl3Oap.js} +14 -7
  411. package/dist/assets/useChatHubSidebarState-legacy-fa3EFauo.js +733 -0
  412. package/dist/assets/{useClipboard-fRnZpGbX.js → useClipboard-BkbYyMX3.js} +2 -2
  413. package/dist/assets/useClipboard-legacy-CF0IG1Mu.js +78 -0
  414. package/dist/assets/{useCommandBar-_c6cO-zw.js → useCommandBar-DOChPPYZ.js} +29 -25
  415. package/dist/assets/useCommandBar-legacy-Bx4lZuXv.js +2100 -0
  416. package/dist/assets/{useDebounce-BgcdaJ78.js → useDebounce-DFa0sFlC.js} +2 -2
  417. package/dist/assets/useDebounce-legacy-D-CoXkwk.js +326 -0
  418. package/dist/assets/{useExecutionData-Bk540rxU.js → useExecutionData-D1Hu-5sr.js} +1 -1
  419. package/dist/assets/useExecutionData-legacy-DmERlRFZ.js +42 -0
  420. package/dist/assets/useExecutionDebugging-legacy-DARRX5Rl.js +152 -0
  421. package/dist/assets/{useExecutionDebugging-BNrxsZTN.js → useExecutionDebugging-yG8CO6AO.js} +7 -7
  422. package/dist/assets/useExecutionHelpers-legacy-CQh3o0WC.js +120 -0
  423. package/dist/assets/{useExecutionHelpers-DrFWi6u7.js → useExecutionHelpers-sUZnNg8O.js} +5 -5
  424. package/dist/assets/{useExternalHooks-SxBXYVNW.js → useExternalHooks-DSSTcvme.js} +1 -1
  425. package/dist/assets/useExternalHooks-legacy-DAJrb39U.js +53 -0
  426. package/dist/assets/{useImportCurlCommand-obipPNWg.js → useImportCurlCommand-C8Mv1xEK.js} +11 -11
  427. package/dist/assets/useImportCurlCommand-legacy-Cs_C8ucb.js +8269 -0
  428. package/dist/assets/useIntersectionObserver-legacy-CQWXa295.js +69 -0
  429. package/dist/assets/{useKeybindings-DlmwtVDN.js → useKeybindings-BeP-kiF_.js} +4 -4
  430. package/dist/assets/useKeybindings-legacy-BP8xe8FX.js +118 -0
  431. package/dist/assets/{useLogsTreeExpand-gKLCILZL.js → useLogsTreeExpand-VaIZtJEy.js} +11 -11
  432. package/dist/assets/useLogsTreeExpand-legacy-9ArL6-As.js +1039 -0
  433. package/dist/assets/{useMcp-_gyuyL1x.js → useMcp-CXTbPxKj.js} +3 -7
  434. package/dist/assets/useMcp-legacy-Dx5gBZcF.js +46 -0
  435. package/dist/assets/{useMessage-Ceo97RRX.js → useMessage-hiDKbQYH.js} +5 -5
  436. package/dist/assets/useMessage-legacy-Cl537NB0.js +683 -0
  437. package/dist/assets/{usePageRedirectionHelper-C_ctyI4O.js → usePageRedirectionHelper-C8YGBi-F.js} +4 -4
  438. package/dist/assets/usePageRedirectionHelper-legacy-CeLk3K53.js +95 -0
  439. package/dist/assets/{usePinnedData-Csij2qN3.js → usePinnedData-BsuIBj2b.js} +5 -5
  440. package/dist/assets/usePinnedData-legacy-9ciMJD_m.js +283 -0
  441. package/dist/assets/{usePushConnection-XZibrqm8.js → usePushConnection-cXyYzGoP.js} +11 -11
  442. package/dist/assets/usePushConnection-legacy-D3xue9ej.js +763 -0
  443. package/dist/assets/{useRecentResources-FhIOba0w.js → useRecentResources-D1-21efA.js} +7 -7
  444. package/dist/assets/useRecentResources-legacy-CdJaBL9r.js +159 -0
  445. package/dist/assets/{useRunWorkflow-_-_hUnHE.js → useRunWorkflow-BLqckUNU.js} +9 -9
  446. package/dist/assets/useRunWorkflow-legacy-ClvXUChT.js +1136 -0
  447. package/dist/assets/{useTelemetry-EOV0Llso.js → useTelemetry-DedEakwK.js} +89 -54
  448. package/dist/assets/useTelemetry-legacy-Bu_8SoSm.js +31004 -0
  449. package/dist/assets/{useTelemetryContext-CSMUQPEW.js → useTelemetryContext-DX-4dy5E.js} +1 -1
  450. package/dist/assets/useTelemetryContext-legacy-DQvfjWrO.js +81 -0
  451. package/dist/assets/{useToast-BlMNYwds.js → useToast-LQk5sJH0.js} +6 -6
  452. package/dist/assets/useToast-legacy-CIRx5txg.js +610 -0
  453. package/dist/assets/{useWorkflowActivate-OfPMIBJ5.js → useWorkflowActivate-BSpG7MxI.js} +8 -8
  454. package/dist/assets/useWorkflowActivate-legacy-Btoe32cC.js +125 -0
  455. package/dist/assets/{useWorkflowSaving-CWyt929n.js → useWorkflowSaving-GL9jVODA.js} +10 -10
  456. package/dist/assets/useWorkflowSaving-legacy-8U0vS257.js +329 -0
  457. package/dist/assets/{useWorkflowsCache-BSXTJC8C.js → useWorkflowsCache-B4y-W-2Y.js} +1 -1
  458. package/dist/assets/useWorkflowsCache-legacy-Cpa2s1nv.js +217 -0
  459. package/dist/assets/{versions.store-Dx98n6R_.js → versions.store-Bon8LCsf.js} +3 -3
  460. package/dist/assets/versions.store-legacy-ZeK5FOAp.js +244 -0
  461. package/dist/assets/vue-json-pretty-BAtqAAV1.js +1130 -0
  462. package/dist/assets/vue-json-pretty-legacy-Dk5EQofb.js +1282 -0
  463. package/dist/assets/vue-legacy-Cj7LJTPA.js +4579 -0
  464. package/dist/assets/vue.runtime.esm-bundler-legacy-Bq05oSFs.js +8050 -0
  465. package/dist/assets/xml-legacy-Cyrxa7r6.js +1245 -0
  466. package/dist/index.html +107 -103
  467. package/dist/static/openChat.png +0 -0
  468. package/package.json +1 -1
  469. package/vite.config.mts +0 -2
  470. package/dist/assets/CollectionParameter-CizL_Xml.js +0 -58
  471. package/dist/assets/DemoFooter-D8E8sLCS.js +0 -71
  472. package/dist/assets/LogsPanel-sLas9qHQ.js +0 -58
  473. package/dist/assets/RunDataHtml-X9lzUZaX.js +0 -7
  474. package/dist/assets/RunDataParsedAiContent-DBP5JHe4.js +0 -25
  475. package/dist/assets/SettingsMCPView-BBO_ZyBU.css +0 -552
  476. package/dist/assets/SettingsMCPView-Chjl8-hw.js +0 -584
  477. package/dist/assets/SettingsProvisioningView-BFUB6c2Z.js +0 -252
  478. package/dist/assets/VirtualSchema-5T21Yyqx.js +0 -43
  479. package/dist/assets/vue-json-pretty-BltKoWq2.js +0 -681
  480. /package/dist/assets/{AnimatedSpinner-Dd4F9nQ8.js → AnimatedSpinner-4ie3BOLv.js} +0 -0
  481. /package/dist/assets/{PageViewLayout-Ccqeja5V.js → PageViewLayout-kj_BBPfv.js} +0 -0
  482. /package/dist/assets/{buttons.esm-Euf82NbC.js → buttons.esm-CT4flsfB.js} +0 -0
  483. /package/dist/assets/{chart-BI8B7UPV.js → chart-CE3HWIkr.js} +0 -0
  484. /package/dist/assets/{constants-CPQyU8WO.js → constants-9ReQTHaF.js} +0 -0
  485. /package/dist/assets/{core-CIkXL_1D.js → core-CzunNfUb.js} +0 -0
  486. /package/dist/assets/{insights.constants-NogjFJ3a.js → insights.constants-DK2g3nnD.js} +0 -0
  487. /package/dist/assets/{smartDecimal-5rgLDM96.js → smartDecimal-e9uPsnJa.js} +0 -0
  488. /package/dist/assets/{sortByProperty-0UtqPmvJ.js → sortByProperty-CUhVU03p.js} +0 -0
  489. /package/dist/assets/{useIntersectionObserver-BkAtQAzK.js → useIntersectionObserver-C8Bz3yon.js} +0 -0
  490. /package/dist/assets/{vue-LyXhKoPx.js → vue-RAk0R0Jn.js} +0 -0
  491. /package/dist/assets/{xml-F7krcG3E.js → xml-B_gYdkaU.js} +0 -0
@@ -0,0 +1,3521 @@
1
+ ;
2
+ (function () {
3
+ System.register(["./chunk-legacy-Re9CbdfL.js", "./vue.runtime.esm-bundler-legacy-Bq05oSFs.js", "./_MapCache-legacy-DcX1vy0l.js", "./src-legacy-6Jvz4Sen.js", "./en-legacy-Bgme8Vbm.js", "./preload-helper-legacy-CXRjoQ0T.js", "./_plugin-vue_export-helper-legacy-DZMI5HPp.js", "./truncate-legacy-D2_XDpGK.js", "./icon-legacy-gLTnORTx.js", "./overlay-legacy-CfieUdAZ.js", "./empty-legacy-DnVUoqbC.js", "./useMessage-legacy-Cl537NB0.js", "./useTelemetry-legacy-Bu_8SoSm.js", "./useToast-legacy-CIRx5txg.js", "./sanitize-html-legacy-DfOUEbdf.js", "./path-browserify-legacy-DJbEMZcd.js", "./constants-legacy-CLA25gM9.js", "./merge-legacy-CcVOuFTi.js", "./dateformat-legacy-Xt1X-tys.js", "./useDebounce-legacy-D-CoXkwk.js", "./useExternalHooks-legacy-DAJrb39U.js", "./npsSurvey.store-legacy-oZP0npqy.js", "./cloudPlan.store-legacy-BPgz6zU7.js", "./templates.store-legacy-CPyYqMqR.js", "./focusPanel.store-legacy-BcpstEbJ.js", "./useWorkflowSaving-legacy-8U0vS257.js", "./nodeCreator.store-legacy-CjrGX9Lm.js", "./nodeIcon-legacy-DD6sIN5e.js", "./folders.store-legacy-BAC47Qt0.js", "./NodeIcon-legacy-BHX1t3Oi.js", "./ProjectIcon-legacy-PFbusJyz.js", "./ProjectCardBadge-legacy-DwhYlW-b.js", "./usage.store-legacy-CVF7gKOp.js", "./Draggable-legacy-CyKi_Tb4.js", "./EnterpriseEdition.ee-legacy-D0gBfVDw.js", "./TimeAgo-legacy-OJCaC3xJ.js", "./orderBy-legacy-BZrAOdi3.js", "./ProjectSharing-legacy-xYY68ooo.js", "./TagsDropdown-legacy-BtJ1Sjlj.js", "./WorkflowTagsDropdown-legacy-D6X-TzYC.js", "./insights.store-legacy-XeWToovL.js", "./insights.constants-legacy-D5Y8YhR_.js", "./insights.utils-legacy-DWaseOa4.js", "./mcp.constants-legacy-CZfk8DW2.js", "./useMcp-legacy-Dx5gBZcF.js", "./personalizedTemplatesV3.store-legacy-D4xPTzWQ.js", "./useWorkflowActivate-legacy-Btoe32cC.js", "./ProjectBreadcrumb-legacy-PE_pUf9P.js", "./WorkflowActivator-legacy-PoTuxdWE.js", "./readyToRunWorkflows.store-legacy-CLv3FVF5.js", "./readyToRunWorkflowsV2.store-legacy-CM_1ZlJR.js", "./PageViewLayout-legacy-B1As2gDz.js", "./EmptySharedSectionActionBox-legacy-V1B39cgS.js", "./ResourcesListLayout-legacy-DYKabjb6.js", "./ProjectHeader-legacy-Dk15aN_m.js", "./mcp.store-legacy-C00py4q_.js", "./smartDecimal-legacy-BeOdMR2z.js", "./InsightsSummary-legacy-DK4uQ90J.js"], function (_export, _context) {
4
+ "use strict";
5
+
6
+ var __toESM, computed, createElementBlock, createCommentVNode, unref, ref, onBeforeUnmount, createVNode, onScopeDispose, defineComponent, toDisplayString, createBlock, onMounted, Fragment, normalizeClass, watch, renderSlot, withCtx, openBlock, withModifiers, renderList, createTextVNode, createSlots, useTemplateRef, resolveComponent, vShow, createBaseVNode, withDirectives, useI18n, N8nActionToggle_default, N8nActionBox_default, N8nCallout_default, N8nOption_default, N8nText_default, N8nCheckbox_default, N8nButton_default, N8nInfoTip_default, N8nHeading_default, N8nSelect_default, N8nCard_default, N8nInputLabel_default, N8nInlineTextEdit_default, N8nBreadcrumbs_default, N8nLoading_default, N8nTags_default, N8nBadge_default, N8nLink_default, N8nTooltip_default, N8nIcon_default, __plugin_vue_export_helper_default, useRouter, createEventBus, useRoute, useMessage, useSettingsStore, STORES, useSourceControlStore, useProjectsStore, ResourceType, FOLDER_LIST_ITEM_ACTIONS, useUIStore, ProjectTypes, ILLEGAL_FOLDER_CHARACTERS, useDocumentTitle, getEasyAiWorkflowJson, PROJECT_MOVE_RESOURCE_MODAL, FOLDER_NAME_MAX_LENGTH, FOLDER_NAME_ILLEGAL_CHARACTERS_REGEX, FOLDER_NAME_ONLY_DOTS_REGEX, useTagsStore, useUsersStore, usePostHog, COMMUNITY_PLUS_ENROLLMENT_MODAL, useWorkflowsStore, useNodeTypesStore, useTelemetry, defineStore, useStorage, useToast, TEMPLATE_ONBOARDING_EXPERIMENT, EXPERIMENT_TEMPLATE_RECO_V2_KEY, jsonParse, EnterpriseEditionFeature, WORKFLOW_SHARE_MODAL_KEY, MODAL_CONFIRM, EXPERIMENT_TEMPLATES_DATA_QUALITY_KEY, getResourcePermissions, PROJECT_ROOT, LOCAL_STORAGE_EXPERIMENTAL_DISMISSED_SUGGESTED_WORKFLOWS, VIEWS, DEFAULT_WORKFLOW_PAGE_SIZE, EXPERIMENT_TEMPLATE_RECO_V3_KEY, DUPLICATE_MODAL_KEY, require_dateformat, require_debounce, useDebounce, useCloudPlanStore, useTemplatesDataQualityStore, trackTemplatesClick, TemplateClickSource, isExtraTemplateLinksExperimentEnabled, useTemplatesStore, useCalloutHelpers, useFoldersStore, NodeIcon_default, ProjectCardBadge_default, useUsageStore, Draggable_default, TimeAgo_default, WorkflowTagsDropdown_default, useInsightsStore, useMcp, usePersonalizedTemplatesV2Store, usePersonalizedTemplatesV3Store, FolderBreadcrumbs_default, WorkflowActivator_default, useAITemplatesStarterCollectionStore, useReadyToRunWorkflowsStore, useProjectPages, useReadyToRunWorkflowsV2Store, EmptySharedSectionActionBox_default, ResourcesListLayout_default, ProjectHeader_default, useMCPStore, InsightsSummary_default, __vite_style__, _hoisted_1$5, _hoisted_2$1, FolderCard_vue_vue_type_script_setup_true_lang_default, card, cardBadge$1, FolderCard_vue_vue_type_style_index_0_lang_module_default, cssModules$9, FolderCard_default, import_dateformat, _hoisted_1$4, WorkflowCard_vue_vue_type_script_setup_true_lang_default, cardLink, cardHeading, cardHeadingArchived, cardDescription, cardTags, cardActions, cardBadge, cardArchived, breadcrumbs, WorkflowCard_vue_vue_type_style_index_0_lang_module_default, cssModules$8, WorkflowCard_default, DEFAULT_EDGE, DEFAULT_MAX_SPEED, SIMPLE_TEMPLATES, PREDEFINED_TEMPLATES_BY_NODE, usePersonalizedTemplatesStore, SuggestedWorkflowCard_vue_vue_type_script_setup_true_lang_default, SuggestedWorkflowCard_vue_vue_type_style_index_0_lang_module_default, cssModules$7, SuggestedWorkflowCard_default, SuggestedWorkflows_vue_vue_type_style_index_0_lang_module_default, _sfc_main, _hoisted_1$3, cssModules$6, SuggestedWorkflows_default, NodeRecommendationCard_vue_vue_type_script_setup_true_lang_default$1, nodeCard$1, nodeIcon$1, emptyStateCardContent$2, NodeRecommendationCard_vue_vue_type_style_index_0_lang_module_default$1, cssModules$5, NodeRecommendationCard_default$1, _hoisted_1$2, TemplateRecommendationV2_vue_vue_type_script_setup_true_lang_default, nodeCardsContainer$1, TemplateRecommendationV2_vue_vue_type_style_index_0_lang_module_default, cssModules$4, TemplateRecommendationV2_default, NodeRecommendationCard_vue_vue_type_script_setup_true_lang_default, nodeCard, nodeIcon, emptyStateCardContent$1, NodeRecommendationCard_vue_vue_type_style_index_0_lang_module_default, cssModules$3, NodeRecommendationCard_default, _hoisted_1$1, TemplateRecommendationV3_vue_vue_type_script_setup_true_lang_default, nodeCardsContainer, TemplateRecommendationV3_vue_vue_type_style_index_0_lang_module_default, cssModules$2, TemplateRecommendationV3_default, SimplifiedEmptyLayout_vue_vue_type_script_setup_true_lang_default, simplifiedLayout, header, content, welcome, welcomeTitle, welcomeDescription, actionsContainer$1, actionCard, cardIcon, loading, cardContent, SimplifiedEmptyLayout_vue_vue_type_style_index_0_lang_module_default, cssModules$1, SimplifiedEmptyLayout_default, import_debounce, _hoisted_1, _hoisted_2, _hoisted_3, _hoisted_4, _hoisted_5, _hoisted_6, _hoisted_7, _hoisted_8, _hoisted_9, SEARCH_DEBOUNCE_TIME, FILTERS_DEBOUNCE_TIME, WorkflowsView_vue_vue_type_script_setup_true_lang_default, actionsContainer, emptyStateCard, emptyStateCardContent, emptyStateCardIcon, dragging, name, WorkflowsView_vue_vue_type_style_index_0_lang_module_default, cssModules, WorkflowsView_default;
7
+ function useAutoScrollOnDrag(options) {
8
+ let frameId;
9
+ let scrollStep = 0;
10
+ const edgeSize = options.edgeSize ?? DEFAULT_EDGE;
11
+ const maxSpeed = options.maxSpeed ?? DEFAULT_MAX_SPEED;
12
+ const stopScrolling = () => {
13
+ scrollStep = 0;
14
+ if (frameId !== void 0) {
15
+ cancelAnimationFrame(frameId);
16
+ frameId = void 0;
17
+ }
18
+ };
19
+ const step = () => {
20
+ const container = options.container.value;
21
+ if (!container || scrollStep === 0) {
22
+ frameId = void 0;
23
+ return;
24
+ }
25
+ container.scrollBy({
26
+ top: scrollStep
27
+ });
28
+ frameId = requestAnimationFrame(step);
29
+ };
30
+ const startScrolling = delta => {
31
+ scrollStep = delta;
32
+ frameId ??= requestAnimationFrame(step);
33
+ };
34
+ const handlePointerMove = event => {
35
+ const container = options.container.value;
36
+ if (!container) {
37
+ stopScrolling();
38
+ return;
39
+ }
40
+ const {
41
+ scrollHeight,
42
+ clientHeight
43
+ } = container;
44
+ if (scrollHeight <= clientHeight) {
45
+ stopScrolling();
46
+ return;
47
+ }
48
+ const rect = container.getBoundingClientRect();
49
+ const pointerY = event.clientY;
50
+ let direction = 0;
51
+ let distanceIntoEdge = 0;
52
+ if (pointerY < rect.top) {
53
+ direction = -1;
54
+ distanceIntoEdge = edgeSize;
55
+ } else if (pointerY > rect.bottom) {
56
+ direction = 1;
57
+ distanceIntoEdge = edgeSize;
58
+ } else {
59
+ const distanceToTop = pointerY - rect.top;
60
+ const distanceToBottom = rect.bottom - pointerY;
61
+ const isNearTop = distanceToTop < edgeSize;
62
+ const isNearBottom = distanceToBottom < edgeSize;
63
+ if (isNearTop || isNearBottom) if (!isNearBottom || distanceToTop <= distanceToBottom) {
64
+ direction = -1;
65
+ distanceIntoEdge = edgeSize - Math.min(distanceToTop, edgeSize);
66
+ } else {
67
+ direction = 1;
68
+ distanceIntoEdge = edgeSize - Math.min(distanceToBottom, edgeSize);
69
+ }
70
+ }
71
+ if (direction === 0) {
72
+ stopScrolling();
73
+ return;
74
+ }
75
+ const intensity = Math.min(distanceIntoEdge / edgeSize, 1);
76
+ startScrolling(direction * Math.max(2, intensity * maxSpeed));
77
+ };
78
+ const addListeners = () => {
79
+ window.addEventListener("mousemove", handlePointerMove);
80
+ };
81
+ const removeListeners = () => {
82
+ window.removeEventListener("mousemove", handlePointerMove);
83
+ };
84
+ watch([options.isActive, options.container], ([isActive, container], _prev, onCleanup) => {
85
+ removeListeners();
86
+ stopScrolling();
87
+ if (isActive && container) addListeners();
88
+ onCleanup(() => {
89
+ removeListeners();
90
+ stopScrolling();
91
+ });
92
+ }, {
93
+ immediate: true
94
+ });
95
+ onScopeDispose(() => {
96
+ removeListeners();
97
+ stopScrolling();
98
+ });
99
+ }
100
+
101
+ //#endregion
102
+ //#region src/features/core/folders/composables/useFolders.ts
103
+ function isDropTarget(target) {
104
+ return target.type === "folder" || target.type === "project";
105
+ }
106
+ function isValidResourceType(value) {
107
+ return ["folder", "workflow", "project"].includes(value);
108
+ }
109
+ function useFolders() {
110
+ const i18n = useI18n();
111
+ const foldersStore = useFoldersStore();
112
+ const isDragging = computed(() => {
113
+ return foldersStore.draggedElement !== null;
114
+ });
115
+ function validateFolderName(folderName) {
116
+ if (FOLDER_NAME_ILLEGAL_CHARACTERS_REGEX.test(folderName)) return i18n.baseText("folders.invalidName.invalidCharacters.message", {
117
+ interpolate: {
118
+ illegalChars: ILLEGAL_FOLDER_CHARACTERS.join(" ")
119
+ }
120
+ });
121
+ if (FOLDER_NAME_ONLY_DOTS_REGEX.test(folderName)) return i18n.baseText("folders.invalidName.only.dots.message");
122
+ if (folderName.startsWith(".")) return i18n.baseText("folders.invalidName.starts.with.dot..message");
123
+ if (folderName.trim() === "") return i18n.baseText("folders.invalidName.empty.message");
124
+ if (folderName.length > 128) return i18n.baseText("folders.invalidName.tooLong.message", {
125
+ interpolate: {
126
+ maxLength: 128
127
+ }
128
+ });
129
+ return true;
130
+ }
131
+ /**
132
+ * Drag and drop methods
133
+ */
134
+ function onDragStart(el) {
135
+ const eventTarget = el.closest("[data-target]");
136
+ if (!eventTarget) return;
137
+ const dragTarget = getDragAndDropTarget(eventTarget);
138
+ if (!dragTarget) return;
139
+ if (dragTarget.type === "folder" || dragTarget.type === "workflow") foldersStore.draggedElement = {
140
+ type: dragTarget.type,
141
+ id: dragTarget.id,
142
+ name: dragTarget.name
143
+ };
144
+ }
145
+ function onDragEnd() {
146
+ foldersStore.draggedElement = null;
147
+ foldersStore.activeDropTarget = null;
148
+ }
149
+ function onDragEnter(event) {
150
+ const eventTarget = event.target;
151
+ if (!eventTarget || !isDragging.value) return;
152
+ event.preventDefault();
153
+ event.stopPropagation();
154
+ const dragTarget = getDragAndDropTarget(eventTarget);
155
+ if (!dragTarget || dragTarget.type !== "folder") return;
156
+ foldersStore.activeDropTarget = {
157
+ type: dragTarget.type,
158
+ id: dragTarget.id,
159
+ name: dragTarget.name
160
+ };
161
+ }
162
+ function resetDropTarget() {
163
+ foldersStore.activeDropTarget = null;
164
+ }
165
+ /**
166
+ * Get the drag or drop target element from the event target
167
+ * @param el
168
+ */
169
+ function getDragAndDropTarget(el) {
170
+ const dragTarget = el.closest("[data-target]");
171
+ if (!dragTarget) return null;
172
+ const targetResource = dragTarget.dataset.target;
173
+ const targetId = dragTarget.dataset.resourceid;
174
+ const targetName = dragTarget.dataset.resourcename;
175
+ if (!targetResource || !targetId || !targetName || !isValidResourceType(targetResource)) return null;
176
+ return {
177
+ type: targetResource,
178
+ id: targetId,
179
+ name: targetName
180
+ };
181
+ }
182
+ /**
183
+ * Handle the drop event by getting the dragged resource and drop target
184
+ * @param event
185
+ */
186
+ function handleDrop(event) {
187
+ const eventTarget = event.target;
188
+ if (!eventTarget || !isDragging.value) return {};
189
+ event.preventDefault();
190
+ const draggedResourceId = foldersStore.draggedElement?.id;
191
+ const draggedResourceType = foldersStore.draggedElement?.type;
192
+ const draggedResourceName = foldersStore.draggedElement?.name;
193
+ if (!draggedResourceId || !draggedResourceType || !draggedResourceName) return {};
194
+ onDragEnd();
195
+ const dropTarget = getDragAndDropTarget(eventTarget);
196
+ if (!dropTarget || !isDropTarget(dropTarget)) return {};
197
+ return {
198
+ draggedResource: {
199
+ type: draggedResourceType,
200
+ id: draggedResourceId,
201
+ name: draggedResourceName
202
+ },
203
+ dropTarget: {
204
+ type: dropTarget.type,
205
+ id: dropTarget.id,
206
+ name: dropTarget.name
207
+ }
208
+ };
209
+ }
210
+ return {
211
+ validateFolderName,
212
+ onDragStart,
213
+ onDragEnd,
214
+ onDragEnter,
215
+ resetDropTarget,
216
+ handleDrop
217
+ };
218
+ }
219
+
220
+ //#endregion
221
+ //#region src/experiments/personalizedTemplates/stores/personalizedTemplates.store.ts
222
+
223
+ function getPredefinedFromSelected(selectedApps) {
224
+ return Object.keys(PREDEFINED_TEMPLATES_BY_NODE).filter(node => selectedApps.includes(node)).reduce((acc, app) => [...acc, ...PREDEFINED_TEMPLATES_BY_NODE[app]], []);
225
+ }
226
+ function getSuggestedTemplatesForLowCodingSkill(selectedApps) {
227
+ if (selectedApps.length === 0) return SIMPLE_TEMPLATES;
228
+ const predefinedSelected = getPredefinedFromSelected(selectedApps);
229
+ if (predefinedSelected.length > 0) return predefinedSelected;
230
+ return [];
231
+ }
232
+ function keepTop3Templates(templates) {
233
+ if (templates.length <= 3) return templates;
234
+ return Array.from(new Map(templates.map(t => [t.id, t])).values()).sort((a, b) => b.totalViews - a.totalViews).slice(0, 3);
235
+ }
236
+ function _sfc_render(_ctx, _cache) {
237
+ return openBlock(), createElementBlock("div", _hoisted_1$3, [renderSlot(_ctx.$slots, "default")]);
238
+ }
239
+ return {
240
+ setters: [function (_chunkLegacy001Js) {
241
+ __toESM = _chunkLegacy001Js.o;
242
+ }, function (_vueRuntimeEsmBundlerLegacy003Js) {
243
+ computed = _vueRuntimeEsmBundlerLegacy003Js.C;
244
+ createElementBlock = _vueRuntimeEsmBundlerLegacy003Js.D;
245
+ createCommentVNode = _vueRuntimeEsmBundlerLegacy003Js.E;
246
+ unref = _vueRuntimeEsmBundlerLegacy003Js.Gt;
247
+ ref = _vueRuntimeEsmBundlerLegacy003Js.It;
248
+ onBeforeUnmount = _vueRuntimeEsmBundlerLegacy003Js.J;
249
+ createVNode = _vueRuntimeEsmBundlerLegacy003Js.M;
250
+ onScopeDispose = _vueRuntimeEsmBundlerLegacy003Js.Nt;
251
+ defineComponent = _vueRuntimeEsmBundlerLegacy003Js.P;
252
+ toDisplayString = _vueRuntimeEsmBundlerLegacy003Js.Sn;
253
+ createBlock = _vueRuntimeEsmBundlerLegacy003Js.T;
254
+ onMounted = _vueRuntimeEsmBundlerLegacy003Js.Z;
255
+ Fragment = _vueRuntimeEsmBundlerLegacy003Js._;
256
+ normalizeClass = _vueRuntimeEsmBundlerLegacy003Js._n;
257
+ watch = _vueRuntimeEsmBundlerLegacy003Js._t;
258
+ renderSlot = _vueRuntimeEsmBundlerLegacy003Js.at;
259
+ withCtx = _vueRuntimeEsmBundlerLegacy003Js.bt;
260
+ openBlock = _vueRuntimeEsmBundlerLegacy003Js.et;
261
+ withModifiers = _vueRuntimeEsmBundlerLegacy003Js.h;
262
+ renderList = _vueRuntimeEsmBundlerLegacy003Js.it;
263
+ createTextVNode = _vueRuntimeEsmBundlerLegacy003Js.j;
264
+ createSlots = _vueRuntimeEsmBundlerLegacy003Js.k;
265
+ useTemplateRef = _vueRuntimeEsmBundlerLegacy003Js.mt;
266
+ resolveComponent = _vueRuntimeEsmBundlerLegacy003Js.ot;
267
+ vShow = _vueRuntimeEsmBundlerLegacy003Js.p;
268
+ createBaseVNode = _vueRuntimeEsmBundlerLegacy003Js.w;
269
+ withDirectives = _vueRuntimeEsmBundlerLegacy003Js.xt;
270
+ }, function (_MapCacheLegacy005Js) {
271
+ useI18n = _MapCacheLegacy005Js.gt;
272
+ }, function (_srcLegacy007Js) {
273
+ N8nActionToggle_default = _srcLegacy007Js.$;
274
+ N8nActionBox_default = _srcLegacy007Js.Dt;
275
+ N8nCallout_default = _srcLegacy007Js.Fn;
276
+ N8nOption_default = _srcLegacy007Js.G;
277
+ N8nText_default = _srcLegacy007Js.In;
278
+ N8nCheckbox_default = _srcLegacy007Js.J;
279
+ N8nButton_default = _srcLegacy007Js.Ln;
280
+ N8nInfoTip_default = _srcLegacy007Js.P;
281
+ N8nHeading_default = _srcLegacy007Js.Pn;
282
+ N8nSelect_default = _srcLegacy007Js.W;
283
+ N8nCard_default = _srcLegacy007Js.X;
284
+ N8nInputLabel_default = _srcLegacy007Js.Y;
285
+ N8nInlineTextEdit_default = _srcLegacy007Js.a;
286
+ N8nBreadcrumbs_default = _srcLegacy007Js.c;
287
+ N8nLoading_default = _srcLegacy007Js.et;
288
+ N8nTags_default = _srcLegacy007Js.h;
289
+ N8nBadge_default = _srcLegacy007Js.it;
290
+ N8nLink_default = _srcLegacy007Js.mt;
291
+ N8nTooltip_default = _srcLegacy007Js.vt;
292
+ N8nIcon_default = _srcLegacy007Js.zn;
293
+ }, function (_enLegacy00bJs) {}, function (_preloadHelperLegacy00dJs) {}, function (_pluginVue_exportHelperLegacy00fJs) {
294
+ __plugin_vue_export_helper_default = _pluginVue_exportHelperLegacy00fJs.t;
295
+ }, function (_truncateLegacy00hJs) {
296
+ useRouter = _truncateLegacy00hJs.b;
297
+ createEventBus = _truncateLegacy00hJs.x;
298
+ useRoute = _truncateLegacy00hJs.y;
299
+ }, function (_iconLegacy00lJs) {}, function (_overlayLegacy00pJs) {}, function (_emptyLegacy00tJs) {}, function (_useMessageLegacy00vJs) {
300
+ useMessage = _useMessageLegacy00vJs.t;
301
+ }, function (_useTelemetryLegacy00FJs) {
302
+ useSettingsStore = _useTelemetryLegacy00FJs.Bo;
303
+ STORES = _useTelemetryLegacy00FJs.Cc;
304
+ useSourceControlStore = _useTelemetryLegacy00FJs.Dn;
305
+ useProjectsStore = _useTelemetryLegacy00FJs.En;
306
+ ResourceType = _useTelemetryLegacy00FJs.Ir;
307
+ FOLDER_LIST_ITEM_ACTIONS = _useTelemetryLegacy00FJs.Ji;
308
+ useUIStore = _useTelemetryLegacy00FJs.Ni;
309
+ ProjectTypes = _useTelemetryLegacy00FJs.On;
310
+ ILLEGAL_FOLDER_CHARACTERS = _useTelemetryLegacy00FJs.Qi;
311
+ useDocumentTitle = _useTelemetryLegacy00FJs.Tn;
312
+ getEasyAiWorkflowJson = _useTelemetryLegacy00FJs.Tt;
313
+ PROJECT_MOVE_RESOURCE_MODAL = _useTelemetryLegacy00FJs.Wi;
314
+ FOLDER_NAME_MAX_LENGTH = _useTelemetryLegacy00FJs.Xi;
315
+ FOLDER_NAME_ILLEGAL_CHARACTERS_REGEX = _useTelemetryLegacy00FJs.Yi;
316
+ FOLDER_NAME_ONLY_DOTS_REGEX = _useTelemetryLegacy00FJs.Zi;
317
+ useTagsStore = _useTelemetryLegacy00FJs._n;
318
+ useUsersStore = _useTelemetryLegacy00FJs.er;
319
+ usePostHog = _useTelemetryLegacy00FJs.i;
320
+ COMMUNITY_PLUS_ENROLLMENT_MODAL = _useTelemetryLegacy00FJs.ko;
321
+ useWorkflowsStore = _useTelemetryLegacy00FJs.o;
322
+ useNodeTypesStore = _useTelemetryLegacy00FJs.rt;
323
+ useTelemetry = _useTelemetryLegacy00FJs.t;
324
+ defineStore = _useTelemetryLegacy00FJs.xc;
325
+ useStorage = _useTelemetryLegacy00FJs.zo;
326
+ }, function (_useToastLegacy00HJs) {
327
+ useToast = _useToastLegacy00HJs.t;
328
+ }, function (_sanitizeHtmlLegacy00JJs) {}, function (_pathBrowserifyLegacy00LJs) {}, function (_constantsLegacy00NJs) {
329
+ TEMPLATE_ONBOARDING_EXPERIMENT = _constantsLegacy00NJs.Bs;
330
+ EXPERIMENT_TEMPLATE_RECO_V2_KEY = _constantsLegacy00NJs.Co;
331
+ jsonParse = _constantsLegacy00NJs.Gi;
332
+ EnterpriseEditionFeature = _constantsLegacy00NJs.Hs;
333
+ WORKFLOW_SHARE_MODAL_KEY = _constantsLegacy00NJs.Jo;
334
+ MODAL_CONFIRM = _constantsLegacy00NJs.No;
335
+ EXPERIMENT_TEMPLATES_DATA_QUALITY_KEY = _constantsLegacy00NJs.So;
336
+ getResourcePermissions = _constantsLegacy00NJs._r;
337
+ PROJECT_ROOT = _constantsLegacy00NJs.ba;
338
+ LOCAL_STORAGE_EXPERIMENTAL_DISMISSED_SUGGESTED_WORKFLOWS = _constantsLegacy00NJs.es;
339
+ VIEWS = _constantsLegacy00NJs.mo;
340
+ DEFAULT_WORKFLOW_PAGE_SIZE = _constantsLegacy00NJs.r;
341
+ EXPERIMENT_TEMPLATE_RECO_V3_KEY = _constantsLegacy00NJs.wo;
342
+ DUPLICATE_MODAL_KEY = _constantsLegacy00NJs.xo;
343
+ }, function (_mergeLegacy00PJs) {}, function (_dateformatLegacy00TJs) {
344
+ require_dateformat = _dateformatLegacy00TJs.t;
345
+ }, function (_useDebounceLegacy00VJs) {
346
+ require_debounce = _useDebounceLegacy00VJs.n;
347
+ useDebounce = _useDebounceLegacy00VJs.t;
348
+ }, function (_useExternalHooksLegacy00XJs) {}, function (_npsSurveyStoreLegacy011Js) {}, function (_cloudPlanStoreLegacy013Js) {
349
+ useCloudPlanStore = _cloudPlanStoreLegacy013Js.t;
350
+ }, function (_templatesStoreLegacy015Js) {
351
+ useTemplatesDataQualityStore = _templatesStoreLegacy015Js.a;
352
+ trackTemplatesClick = _templatesStoreLegacy015Js.i;
353
+ TemplateClickSource = _templatesStoreLegacy015Js.n;
354
+ isExtraTemplateLinksExperimentEnabled = _templatesStoreLegacy015Js.r;
355
+ useTemplatesStore = _templatesStoreLegacy015Js.t;
356
+ }, function (_focusPanelStoreLegacy017Js) {}, function (_useWorkflowSavingLegacy019Js) {}, function (_nodeCreatorStoreLegacy01jJs) {
357
+ useCalloutHelpers = _nodeCreatorStoreLegacy01jJs._;
358
+ }, function (_nodeIconLegacy01lJs) {}, function (_foldersStoreLegacy01tJs) {
359
+ useFoldersStore = _foldersStoreLegacy01tJs.t;
360
+ }, function (_NodeIconLegacy01vJs) {
361
+ NodeIcon_default = _NodeIconLegacy01vJs.t;
362
+ }, function (_ProjectIconLegacy025Js) {}, function (_ProjectCardBadgeLegacy027Js) {
363
+ ProjectCardBadge_default = _ProjectCardBadgeLegacy027Js.t;
364
+ }, function (_usageStoreLegacy029Js) {
365
+ useUsageStore = _usageStoreLegacy029Js.t;
366
+ }, function (_DraggableLegacy02dJs) {
367
+ Draggable_default = _DraggableLegacy02dJs.t;
368
+ }, function (_EnterpriseEditionEeLegacy02DJs) {}, function (_TimeAgoLegacy02HJs) {
369
+ TimeAgo_default = _TimeAgoLegacy02HJs.t;
370
+ }, function (_orderByLegacy02JJs) {}, function (_ProjectSharingLegacy02LJs) {}, function (_TagsDropdownLegacy02TJs) {}, function (_WorkflowTagsDropdownLegacy02VJs) {
371
+ WorkflowTagsDropdown_default = _WorkflowTagsDropdownLegacy02VJs.t;
372
+ }, function (_insightsStoreLegacy031Js) {
373
+ useInsightsStore = _insightsStoreLegacy031Js.t;
374
+ }, function (_insightsConstantsLegacy033Js) {}, function (_insightsUtilsLegacy035Js) {}, function (_mcpConstantsLegacy037Js) {}, function (_useMcpLegacy03rJs) {
375
+ useMcp = _useMcpLegacy03rJs.t;
376
+ }, function (_personalizedTemplatesV3StoreLegacy03vJs) {
377
+ usePersonalizedTemplatesV2Store = _personalizedTemplatesV3StoreLegacy03vJs.n;
378
+ usePersonalizedTemplatesV3Store = _personalizedTemplatesV3StoreLegacy03vJs.t;
379
+ }, function (_useWorkflowActivateLegacy03zJs) {}, function (_ProjectBreadcrumbLegacy03JJs) {}, function (_WorkflowActivatorLegacy03LJs) {
380
+ FolderBreadcrumbs_default = _WorkflowActivatorLegacy03LJs.n;
381
+ WorkflowActivator_default = _WorkflowActivatorLegacy03LJs.t;
382
+ }, function (_readyToRunWorkflowsStoreLegacy03VJs) {
383
+ useAITemplatesStarterCollectionStore = _readyToRunWorkflowsStoreLegacy03VJs.n;
384
+ useReadyToRunWorkflowsStore = _readyToRunWorkflowsStoreLegacy03VJs.t;
385
+ }, function (_readyToRunWorkflowsV2StoreLegacy03XJs) {
386
+ useProjectPages = _readyToRunWorkflowsV2StoreLegacy03XJs.n;
387
+ useReadyToRunWorkflowsV2Store = _readyToRunWorkflowsV2StoreLegacy03XJs.t;
388
+ }, function (_PageViewLayoutLegacy04jJs) {}, function (_EmptySharedSectionActionBoxLegacy04rJs) {
389
+ EmptySharedSectionActionBox_default = _EmptySharedSectionActionBoxLegacy04rJs.t;
390
+ }, function (_ResourcesListLayoutLegacy04tJs) {
391
+ ResourcesListLayout_default = _ResourcesListLayoutLegacy04tJs.t;
392
+ }, function (_ProjectHeaderLegacy04vJs) {
393
+ ProjectHeader_default = _ProjectHeaderLegacy04vJs.t;
394
+ }, function (_mcpStoreLegacy04xJs) {
395
+ useMCPStore = _mcpStoreLegacy04xJs.t;
396
+ }, function (_smartDecimalLegacy04zJs) {}, function (_InsightsSummaryLegacy04BJs) {
397
+ InsightsSummary_default = _InsightsSummaryLegacy04BJs.t;
398
+ }],
399
+ execute: function () {
400
+ __vite_style__ = document.createElement('style');
401
+ __vite_style__.textContent = "/* BEM support Func\n -------------------------- */\n/* Transition\n-------------------------- */\n/* Color\n-------------------------- */\n/* Link\n-------------------------- */\n/* Border\n-------------------------- */\n/* Outline\n-------------------------- */\n/* Box shadow\n-------------------------- */\n/* Fill\n-------------------------- */\n/* Typography\n-------------------------- */\n/* z-index\n-------------------------- */\n/* Disable base\n-------------------------- */\n/* Icon\n-------------------------- */\n/* Checkbox\n-------------------------- */\n/* Radio\n-------------------------- */\n/* Select\n-------------------------- */\n/* Alert\n-------------------------- */\n/* MessageBox\n-------------------------- */\n/* Message\n-------------------------- */\n/* Notification\n-------------------------- */\n/* Input\n-------------------------- */\n/* Cascader\n-------------------------- */\n/* Group\n-------------------------- */\n/* Tab\n-------------------------- */\n/* Button\n-------------------------- */\n/* cascader\n-------------------------- */\n/* Switch\n-------------------------- */\n/* Dialog\n-------------------------- */\n/* Table\n-------------------------- */\n/* Pagination\n-------------------------- */\n/* Popup\n-------------------------- */\n/* Popover\n-------------------------- */\n/* Tooltip\n-------------------------- */\n/* Tag\n-------------------------- */\n/* Tree\n-------------------------- */\n/* Dropdown\n-------------------------- */\n/* Badge\n-------------------------- */\n/* Card\n--------------------------*/\n/* Slider\n--------------------------*/\n/* Steps\n--------------------------*/\n/* Menu\n--------------------------*/\n/* Rate\n--------------------------*/\n/* DatePicker\n--------------------------*/\n/* Loading\n--------------------------*/\n/* Scrollbar\n--------------------------*/\n/* Carousel\n--------------------------*/\n/* Collapse\n--------------------------*/\n/* Transfer\n--------------------------*/\n/* Header\n --------------------------*/\n/* Footer\n--------------------------*/\n/* Main\n--------------------------*/\n/* Timeline\n--------------------------*/\n/* Backtop\n--------------------------*/\n/* Link\n--------------------------*/\n/* Calendar\n--------------------------*/\n/* Form\n-------------------------- */\n/* Avatar\n--------------------------*/\n/* Break-point\n--------------------------*/\n/* Break-points\n -------------------------- */\n/* Scrollbar\n -------------------------- */\n/* Placeholder\n -------------------------- */\n/* BEM\n -------------------------- */\n._card_19ska_123 {\n transition: box-shadow 0.3s ease;\n cursor: pointer;\n}\n._card_19ska_123:hover {\n box-shadow: 0 2px 8px rgba(68, 28, 23, 0.1);\n}\n._folder-icon_19ska_131 {\n width: var(--spacing--xl);\n height: var(--spacing--xl);\n flex-shrink: 0;\n color: var(--color--text);\n align-content: center;\n text-align: center;\n}\n._card-header_19ska_140 {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-right: var(--spacing--xs);\n margin-bottom: var(--spacing--5xs);\n}\n._card-footer_19ska_148 {\n display: flex;\n}\n._info-cell_19ska_152 + ._info-cell_19ska_152::before {\n content: \"|\";\n margin: 0 var(--spacing--4xs);\n}\n._cardBadge_19ska_157._with-breadcrumbs_19ska_157 .n8n-badge {\n padding-right: 0;\n}\n._cardBadge_19ska_157._with-breadcrumbs_19ska_157 .n8n-breadcrumbs {\n padding-left: var(--spacing--5xs);\n}\n._card-actions_19ska_164 {\n display: flex;\n gap: var(--spacing--xs);\n}\n@media screen and (max-width: 991px) {\n._card_19ska_123 {\n flex-wrap: wrap;\n}\n._card_19ska_123 .n8n-card-append {\n width: 100%;\n margin-top: var(--spacing--3xs);\n padding-left: 40px;\n}\n._card_19ska_123 ._card-actions_19ska_164 {\n width: 100%;\n justify-content: space-between;\n}\n._info-cell--created_19ska_182 {\n display: none;\n}\n}/* BEM support Func\n -------------------------- */\n/* Transition\n-------------------------- */\n/* Color\n-------------------------- */\n/* Link\n-------------------------- */\n/* Border\n-------------------------- */\n/* Outline\n-------------------------- */\n/* Box shadow\n-------------------------- */\n/* Fill\n-------------------------- */\n/* Typography\n-------------------------- */\n/* z-index\n-------------------------- */\n/* Disable base\n-------------------------- */\n/* Icon\n-------------------------- */\n/* Checkbox\n-------------------------- */\n/* Radio\n-------------------------- */\n/* Select\n-------------------------- */\n/* Alert\n-------------------------- */\n/* MessageBox\n-------------------------- */\n/* Message\n-------------------------- */\n/* Notification\n-------------------------- */\n/* Input\n-------------------------- */\n/* Cascader\n-------------------------- */\n/* Group\n-------------------------- */\n/* Tab\n-------------------------- */\n/* Button\n-------------------------- */\n/* cascader\n-------------------------- */\n/* Switch\n-------------------------- */\n/* Dialog\n-------------------------- */\n/* Table\n-------------------------- */\n/* Pagination\n-------------------------- */\n/* Popup\n-------------------------- */\n/* Popover\n-------------------------- */\n/* Tooltip\n-------------------------- */\n/* Tag\n-------------------------- */\n/* Tree\n-------------------------- */\n/* Dropdown\n-------------------------- */\n/* Badge\n-------------------------- */\n/* Card\n--------------------------*/\n/* Slider\n--------------------------*/\n/* Steps\n--------------------------*/\n/* Menu\n--------------------------*/\n/* Rate\n--------------------------*/\n/* DatePicker\n--------------------------*/\n/* Loading\n--------------------------*/\n/* Scrollbar\n--------------------------*/\n/* Carousel\n--------------------------*/\n/* Collapse\n--------------------------*/\n/* Transfer\n--------------------------*/\n/* Header\n --------------------------*/\n/* Footer\n--------------------------*/\n/* Main\n--------------------------*/\n/* Timeline\n--------------------------*/\n/* Backtop\n--------------------------*/\n/* Link\n--------------------------*/\n/* Calendar\n--------------------------*/\n/* Form\n-------------------------- */\n/* Avatar\n--------------------------*/\n/* Break-point\n--------------------------*/\n/* Break-points\n -------------------------- */\n/* Scrollbar\n -------------------------- */\n/* Placeholder\n -------------------------- */\n/* BEM\n -------------------------- */\n._cardLink_g126n_123 {\n transition: box-shadow 0.3s ease;\n cursor: pointer;\n padding: 0;\n align-items: stretch;\n}\n._cardLink_g126n_123:hover {\n box-shadow: 0 2px 8px rgba(68, 28, 23, 0.1);\n}\n._cardHeading_g126n_133 {\n font-size: var(--font-size--sm);\n word-break: break-word;\n padding: var(--spacing--sm) 0 0 var(--spacing--sm);\n}\n._cardHeading_g126n_133 span {\n color: var(--color--text--tint-1);\n}\n._cardHeadingArchived_g126n_142 {\n color: var(--color--text--tint-1);\n}\n._description-popper_g126n_146 {\n min-width: 300px;\n}\n._cardDescription_g126n_150 {\n min-height: var(--spacing--xl);\n display: flex;\n align-items: center;\n padding: 0 0 var(--spacing--sm) var(--spacing--sm);\n font-size: var(--font-size--2xs);\n color: var(--color--text--tint-1);\n gap: var(--spacing--2xs);\n}\n._cardTags_g126n_160 {\n display: inline-block;\n margin-top: var(--spacing--4xs);\n}\n._cardActions_g126n_165 {\n display: flex;\n gap: var(--spacing--2xs);\n flex-direction: row;\n justify-content: center;\n align-items: center;\n align-self: stretch;\n padding: 0 var(--spacing--sm) 0 0;\n cursor: default;\n}\n._cardBadge_g126n_176 {\n background-color: var(--color--background--light-3);\n}\n._cardBadge_g126n_176._with-breadcrumbs_g126n_180 .n8n-badge {\n padding-right: 0;\n}\n._cardBadge_g126n_176._with-breadcrumbs_g126n_180 .n8n-breadcrumbs {\n padding-left: var(--spacing--5xs);\n}\n._cardArchived_g126n_187 {\n background-color: var(--color--background--light-2);\n border-color: var(--color--foreground--tint-1);\n color: var(--color--text);\n}\n._description-cell--mcp_g126n_193 {\n display: inline-flex;\n align-items: center;\n}\n._description-cell--mcp_g126n_193:hover {\n color: var(--color--text);\n}\n@media screen and (max-width: 991px) {\n._cardLink_g126n_123 {\n --card--padding: 0 var(--spacing--sm) var(--spacing--sm);\n --card--append--width: 100%;\n flex-direction: column;\n}\n._cardActions_g126n_165 {\n width: 100%;\n padding: 0 var(--spacing--sm) var(--spacing--sm);\n justify-content: end;\n}\n._cardBadge_g126n_176,\n ._breadcrumbs_g126n_213 {\n margin-right: auto;\n}\n}\n@media screen and (max-width: 767px) {\n._breadcrumbs_g126n_213 > div {\n flex-direction: column;\n}\n}/* BEM support Func\n -------------------------- */\n/* Transition\n-------------------------- */\n/* Color\n-------------------------- */\n/* Link\n-------------------------- */\n/* Border\n-------------------------- */\n/* Outline\n-------------------------- */\n/* Box shadow\n-------------------------- */\n/* Fill\n-------------------------- */\n/* Typography\n-------------------------- */\n/* z-index\n-------------------------- */\n/* Disable base\n-------------------------- */\n/* Icon\n-------------------------- */\n/* Checkbox\n-------------------------- */\n/* Radio\n-------------------------- */\n/* Select\n-------------------------- */\n/* Alert\n-------------------------- */\n/* MessageBox\n-------------------------- */\n/* Message\n-------------------------- */\n/* Notification\n-------------------------- */\n/* Input\n-------------------------- */\n/* Cascader\n-------------------------- */\n/* Group\n-------------------------- */\n/* Tab\n-------------------------- */\n/* Button\n-------------------------- */\n/* cascader\n-------------------------- */\n/* Switch\n-------------------------- */\n/* Dialog\n-------------------------- */\n/* Table\n-------------------------- */\n/* Pagination\n-------------------------- */\n/* Popup\n-------------------------- */\n/* Popover\n-------------------------- */\n/* Tooltip\n-------------------------- */\n/* Tag\n-------------------------- */\n/* Tree\n-------------------------- */\n/* Dropdown\n-------------------------- */\n/* Badge\n-------------------------- */\n/* Card\n--------------------------*/\n/* Slider\n--------------------------*/\n/* Steps\n--------------------------*/\n/* Menu\n--------------------------*/\n/* Rate\n--------------------------*/\n/* DatePicker\n--------------------------*/\n/* Loading\n--------------------------*/\n/* Scrollbar\n--------------------------*/\n/* Carousel\n--------------------------*/\n/* Collapse\n--------------------------*/\n/* Transfer\n--------------------------*/\n/* Header\n --------------------------*/\n/* Footer\n--------------------------*/\n/* Main\n--------------------------*/\n/* Timeline\n--------------------------*/\n/* Backtop\n--------------------------*/\n/* Link\n--------------------------*/\n/* Calendar\n--------------------------*/\n/* Form\n-------------------------- */\n/* Avatar\n--------------------------*/\n/* Break-point\n--------------------------*/\n/* Break-points\n -------------------------- */\n/* Scrollbar\n -------------------------- */\n/* Placeholder\n -------------------------- */\n/* BEM\n -------------------------- */\n._suggested-workflow-callout_19l89_123 {\n margin-top: var(--spacing--xs);\n padding-left: var(--spacing--sm);\n padding-right: var(--spacing--md);\n border-style: dashed;\n}\n._suggested-workflow-callout_19l89_123 ._callout-content_19l89_129 {\n display: flex;\n flex-direction: column;\n}\n._suggested-workflow-callout_19l89_123 ._callout-trailing-content_19l89_133 {\n display: flex;\n align-items: center;\n gap: var(--spacing--md);\n}\n._suggested-workflow-callout_19l89_123 a span span {\n color: var(--callout--color--text--secondary);\n}/* BEM support Func\n -------------------------- */\n/* Transition\n-------------------------- */\n/* Color\n-------------------------- */\n/* Link\n-------------------------- */\n/* Border\n-------------------------- */\n/* Outline\n-------------------------- */\n/* Box shadow\n-------------------------- */\n/* Fill\n-------------------------- */\n/* Typography\n-------------------------- */\n/* z-index\n-------------------------- */\n/* Disable base\n-------------------------- */\n/* Icon\n-------------------------- */\n/* Checkbox\n-------------------------- */\n/* Radio\n-------------------------- */\n/* Select\n-------------------------- */\n/* Alert\n-------------------------- */\n/* MessageBox\n-------------------------- */\n/* Message\n-------------------------- */\n/* Notification\n-------------------------- */\n/* Input\n-------------------------- */\n/* Cascader\n-------------------------- */\n/* Group\n-------------------------- */\n/* Tab\n-------------------------- */\n/* Button\n-------------------------- */\n/* cascader\n-------------------------- */\n/* Switch\n-------------------------- */\n/* Dialog\n-------------------------- */\n/* Table\n-------------------------- */\n/* Pagination\n-------------------------- */\n/* Popup\n-------------------------- */\n/* Popover\n-------------------------- */\n/* Tooltip\n-------------------------- */\n/* Tag\n-------------------------- */\n/* Tree\n-------------------------- */\n/* Dropdown\n-------------------------- */\n/* Badge\n-------------------------- */\n/* Card\n--------------------------*/\n/* Slider\n--------------------------*/\n/* Steps\n--------------------------*/\n/* Menu\n--------------------------*/\n/* Rate\n--------------------------*/\n/* DatePicker\n--------------------------*/\n/* Loading\n--------------------------*/\n/* Scrollbar\n--------------------------*/\n/* Carousel\n--------------------------*/\n/* Collapse\n--------------------------*/\n/* Transfer\n--------------------------*/\n/* Header\n --------------------------*/\n/* Footer\n--------------------------*/\n/* Main\n--------------------------*/\n/* Timeline\n--------------------------*/\n/* Backtop\n--------------------------*/\n/* Link\n--------------------------*/\n/* Calendar\n--------------------------*/\n/* Form\n-------------------------- */\n/* Avatar\n--------------------------*/\n/* Break-point\n--------------------------*/\n/* Break-points\n -------------------------- */\n/* Scrollbar\n -------------------------- */\n/* Placeholder\n -------------------------- */\n/* BEM\n -------------------------- */\n._suggested-workflows_dbm58_123 {\n margin-top: var(--spacing--xs);\n}/* BEM support Func\n -------------------------- */\n/* Transition\n-------------------------- */\n/* Color\n-------------------------- */\n/* Link\n-------------------------- */\n/* Border\n-------------------------- */\n/* Outline\n-------------------------- */\n/* Box shadow\n-------------------------- */\n/* Fill\n-------------------------- */\n/* Typography\n-------------------------- */\n/* z-index\n-------------------------- */\n/* Disable base\n-------------------------- */\n/* Icon\n-------------------------- */\n/* Checkbox\n-------------------------- */\n/* Radio\n-------------------------- */\n/* Select\n-------------------------- */\n/* Alert\n-------------------------- */\n/* MessageBox\n-------------------------- */\n/* Message\n-------------------------- */\n/* Notification\n-------------------------- */\n/* Input\n-------------------------- */\n/* Cascader\n-------------------------- */\n/* Group\n-------------------------- */\n/* Tab\n-------------------------- */\n/* Button\n-------------------------- */\n/* cascader\n-------------------------- */\n/* Switch\n-------------------------- */\n/* Dialog\n-------------------------- */\n/* Table\n-------------------------- */\n/* Pagination\n-------------------------- */\n/* Popup\n-------------------------- */\n/* Popover\n-------------------------- */\n/* Tooltip\n-------------------------- */\n/* Tag\n-------------------------- */\n/* Tree\n-------------------------- */\n/* Dropdown\n-------------------------- */\n/* Badge\n-------------------------- */\n/* Card\n--------------------------*/\n/* Slider\n--------------------------*/\n/* Steps\n--------------------------*/\n/* Menu\n--------------------------*/\n/* Rate\n--------------------------*/\n/* DatePicker\n--------------------------*/\n/* Loading\n--------------------------*/\n/* Scrollbar\n--------------------------*/\n/* Carousel\n--------------------------*/\n/* Collapse\n--------------------------*/\n/* Transfer\n--------------------------*/\n/* Header\n --------------------------*/\n/* Footer\n--------------------------*/\n/* Main\n--------------------------*/\n/* Timeline\n--------------------------*/\n/* Backtop\n--------------------------*/\n/* Link\n--------------------------*/\n/* Calendar\n--------------------------*/\n/* Form\n-------------------------- */\n/* Avatar\n--------------------------*/\n/* Break-point\n--------------------------*/\n/* Break-points\n -------------------------- */\n/* Scrollbar\n -------------------------- */\n/* Placeholder\n -------------------------- */\n/* BEM\n -------------------------- */\n._nodeCard_urxa7_123 {\n width: 100px;\n height: 80px;\n display: inline-flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 0;\n}\n._nodeIcon_urxa7_133 {\n font-size: var(--font-size--2xl);\n}\n._emptyStateCardContent_urxa7_137 {\n flex: 1;\n display: inline-flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}/* BEM support Func\n -------------------------- */\n/* Transition\n-------------------------- */\n/* Color\n-------------------------- */\n/* Link\n-------------------------- */\n/* Border\n-------------------------- */\n/* Outline\n-------------------------- */\n/* Box shadow\n-------------------------- */\n/* Fill\n-------------------------- */\n/* Typography\n-------------------------- */\n/* z-index\n-------------------------- */\n/* Disable base\n-------------------------- */\n/* Icon\n-------------------------- */\n/* Checkbox\n-------------------------- */\n/* Radio\n-------------------------- */\n/* Select\n-------------------------- */\n/* Alert\n-------------------------- */\n/* MessageBox\n-------------------------- */\n/* Message\n-------------------------- */\n/* Notification\n-------------------------- */\n/* Input\n-------------------------- */\n/* Cascader\n-------------------------- */\n/* Group\n-------------------------- */\n/* Tab\n-------------------------- */\n/* Button\n-------------------------- */\n/* cascader\n-------------------------- */\n/* Switch\n-------------------------- */\n/* Dialog\n-------------------------- */\n/* Table\n-------------------------- */\n/* Pagination\n-------------------------- */\n/* Popup\n-------------------------- */\n/* Popover\n-------------------------- */\n/* Tooltip\n-------------------------- */\n/* Tag\n-------------------------- */\n/* Tree\n-------------------------- */\n/* Dropdown\n-------------------------- */\n/* Badge\n-------------------------- */\n/* Card\n--------------------------*/\n/* Slider\n--------------------------*/\n/* Steps\n--------------------------*/\n/* Menu\n--------------------------*/\n/* Rate\n--------------------------*/\n/* DatePicker\n--------------------------*/\n/* Loading\n--------------------------*/\n/* Scrollbar\n--------------------------*/\n/* Carousel\n--------------------------*/\n/* Collapse\n--------------------------*/\n/* Transfer\n--------------------------*/\n/* Header\n --------------------------*/\n/* Footer\n--------------------------*/\n/* Main\n--------------------------*/\n/* Timeline\n--------------------------*/\n/* Backtop\n--------------------------*/\n/* Link\n--------------------------*/\n/* Calendar\n--------------------------*/\n/* Form\n-------------------------- */\n/* Avatar\n--------------------------*/\n/* Break-point\n--------------------------*/\n/* Break-points\n -------------------------- */\n/* Scrollbar\n -------------------------- */\n/* Placeholder\n -------------------------- */\n/* BEM\n -------------------------- */\n._nodeCardsContainer_ufnvi_123 {\n display: flex;\n justify-content: center;\n gap: var(--spacing--sm);\n margin-top: var(--spacing--xl);\n}/* BEM support Func\n -------------------------- */\n/* Transition\n-------------------------- */\n/* Color\n-------------------------- */\n/* Link\n-------------------------- */\n/* Border\n-------------------------- */\n/* Outline\n-------------------------- */\n/* Box shadow\n-------------------------- */\n/* Fill\n-------------------------- */\n/* Typography\n-------------------------- */\n/* z-index\n-------------------------- */\n/* Disable base\n-------------------------- */\n/* Icon\n-------------------------- */\n/* Checkbox\n-------------------------- */\n/* Radio\n-------------------------- */\n/* Select\n-------------------------- */\n/* Alert\n-------------------------- */\n/* MessageBox\n-------------------------- */\n/* Message\n-------------------------- */\n/* Notification\n-------------------------- */\n/* Input\n-------------------------- */\n/* Cascader\n-------------------------- */\n/* Group\n-------------------------- */\n/* Tab\n-------------------------- */\n/* Button\n-------------------------- */\n/* cascader\n-------------------------- */\n/* Switch\n-------------------------- */\n/* Dialog\n-------------------------- */\n/* Table\n-------------------------- */\n/* Pagination\n-------------------------- */\n/* Popup\n-------------------------- */\n/* Popover\n-------------------------- */\n/* Tooltip\n-------------------------- */\n/* Tag\n-------------------------- */\n/* Tree\n-------------------------- */\n/* Dropdown\n-------------------------- */\n/* Badge\n-------------------------- */\n/* Card\n--------------------------*/\n/* Slider\n--------------------------*/\n/* Steps\n--------------------------*/\n/* Menu\n--------------------------*/\n/* Rate\n--------------------------*/\n/* DatePicker\n--------------------------*/\n/* Loading\n--------------------------*/\n/* Scrollbar\n--------------------------*/\n/* Carousel\n--------------------------*/\n/* Collapse\n--------------------------*/\n/* Transfer\n--------------------------*/\n/* Header\n --------------------------*/\n/* Footer\n--------------------------*/\n/* Main\n--------------------------*/\n/* Timeline\n--------------------------*/\n/* Backtop\n--------------------------*/\n/* Link\n--------------------------*/\n/* Calendar\n--------------------------*/\n/* Form\n-------------------------- */\n/* Avatar\n--------------------------*/\n/* Break-point\n--------------------------*/\n/* Break-points\n -------------------------- */\n/* Scrollbar\n -------------------------- */\n/* Placeholder\n -------------------------- */\n/* BEM\n -------------------------- */\n._nodeCard_urxa7_123 {\n width: 100px;\n height: 80px;\n display: inline-flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 0;\n}\n._nodeIcon_urxa7_133 {\n font-size: var(--font-size--2xl);\n}\n._emptyStateCardContent_urxa7_137 {\n flex: 1;\n display: inline-flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}/* BEM support Func\n -------------------------- */\n/* Transition\n-------------------------- */\n/* Color\n-------------------------- */\n/* Link\n-------------------------- */\n/* Border\n-------------------------- */\n/* Outline\n-------------------------- */\n/* Box shadow\n-------------------------- */\n/* Fill\n-------------------------- */\n/* Typography\n-------------------------- */\n/* z-index\n-------------------------- */\n/* Disable base\n-------------------------- */\n/* Icon\n-------------------------- */\n/* Checkbox\n-------------------------- */\n/* Radio\n-------------------------- */\n/* Select\n-------------------------- */\n/* Alert\n-------------------------- */\n/* MessageBox\n-------------------------- */\n/* Message\n-------------------------- */\n/* Notification\n-------------------------- */\n/* Input\n-------------------------- */\n/* Cascader\n-------------------------- */\n/* Group\n-------------------------- */\n/* Tab\n-------------------------- */\n/* Button\n-------------------------- */\n/* cascader\n-------------------------- */\n/* Switch\n-------------------------- */\n/* Dialog\n-------------------------- */\n/* Table\n-------------------------- */\n/* Pagination\n-------------------------- */\n/* Popup\n-------------------------- */\n/* Popover\n-------------------------- */\n/* Tooltip\n-------------------------- */\n/* Tag\n-------------------------- */\n/* Tree\n-------------------------- */\n/* Dropdown\n-------------------------- */\n/* Badge\n-------------------------- */\n/* Card\n--------------------------*/\n/* Slider\n--------------------------*/\n/* Steps\n--------------------------*/\n/* Menu\n--------------------------*/\n/* Rate\n--------------------------*/\n/* DatePicker\n--------------------------*/\n/* Loading\n--------------------------*/\n/* Scrollbar\n--------------------------*/\n/* Carousel\n--------------------------*/\n/* Collapse\n--------------------------*/\n/* Transfer\n--------------------------*/\n/* Header\n --------------------------*/\n/* Footer\n--------------------------*/\n/* Main\n--------------------------*/\n/* Timeline\n--------------------------*/\n/* Backtop\n--------------------------*/\n/* Link\n--------------------------*/\n/* Calendar\n--------------------------*/\n/* Form\n-------------------------- */\n/* Avatar\n--------------------------*/\n/* Break-point\n--------------------------*/\n/* Break-points\n -------------------------- */\n/* Scrollbar\n -------------------------- */\n/* Placeholder\n -------------------------- */\n/* BEM\n -------------------------- */\n._nodeCardsContainer_ufnvi_123 {\n display: flex;\n justify-content: center;\n gap: var(--spacing--sm);\n margin-top: var(--spacing--xl);\n}/* BEM support Func\n -------------------------- */\n/* Transition\n-------------------------- */\n/* Color\n-------------------------- */\n/* Link\n-------------------------- */\n/* Border\n-------------------------- */\n/* Outline\n-------------------------- */\n/* Box shadow\n-------------------------- */\n/* Fill\n-------------------------- */\n/* Typography\n-------------------------- */\n/* z-index\n-------------------------- */\n/* Disable base\n-------------------------- */\n/* Icon\n-------------------------- */\n/* Checkbox\n-------------------------- */\n/* Radio\n-------------------------- */\n/* Select\n-------------------------- */\n/* Alert\n-------------------------- */\n/* MessageBox\n-------------------------- */\n/* Message\n-------------------------- */\n/* Notification\n-------------------------- */\n/* Input\n-------------------------- */\n/* Cascader\n-------------------------- */\n/* Group\n-------------------------- */\n/* Tab\n-------------------------- */\n/* Button\n-------------------------- */\n/* cascader\n-------------------------- */\n/* Switch\n-------------------------- */\n/* Dialog\n-------------------------- */\n/* Table\n-------------------------- */\n/* Pagination\n-------------------------- */\n/* Popup\n-------------------------- */\n/* Popover\n-------------------------- */\n/* Tooltip\n-------------------------- */\n/* Tag\n-------------------------- */\n/* Tree\n-------------------------- */\n/* Dropdown\n-------------------------- */\n/* Badge\n-------------------------- */\n/* Card\n--------------------------*/\n/* Slider\n--------------------------*/\n/* Steps\n--------------------------*/\n/* Menu\n--------------------------*/\n/* Rate\n--------------------------*/\n/* DatePicker\n--------------------------*/\n/* Loading\n--------------------------*/\n/* Scrollbar\n--------------------------*/\n/* Carousel\n--------------------------*/\n/* Collapse\n--------------------------*/\n/* Transfer\n--------------------------*/\n/* Header\n --------------------------*/\n/* Footer\n--------------------------*/\n/* Main\n--------------------------*/\n/* Timeline\n--------------------------*/\n/* Backtop\n--------------------------*/\n/* Link\n--------------------------*/\n/* Calendar\n--------------------------*/\n/* Form\n-------------------------- */\n/* Avatar\n--------------------------*/\n/* Break-point\n--------------------------*/\n/* Break-points\n -------------------------- */\n/* Scrollbar\n -------------------------- */\n/* Placeholder\n -------------------------- */\n/* BEM\n -------------------------- */\n._simplifiedLayout_pnu6z_123 {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 100vh;\n}\n._header_pnu6z_131 {\n position: fixed;\n top: var(--spacing--lg);\n left: var(--spacing--lg);\n opacity: 0.6;\n}\n._content_pnu6z_138 {\n display: flex;\n flex-direction: column;\n align-items: center;\n max-width: 600px;\n text-align: center;\n}\n._welcome_pnu6z_146 {\n margin-bottom: var(--spacing--2xl);\n}\n._welcomeTitle_pnu6z_150 {\n margin-bottom: var(--spacing--md);\n}\n._welcomeDescription_pnu6z_154 {\n max-width: 480px;\n}\n._actionsContainer_pnu6z_158 {\n display: flex;\n gap: var(--spacing--sm);\n justify-content: center;\n flex-wrap: wrap;\n}\n._actionCard_pnu6z_165 {\n width: 192px;\n height: 230px;\n text-align: center;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: transform 0.2s ease, box-shadow 0.2s ease;\n}\n._actionCard_pnu6z_165:hover {\n transform: translateY(-2px);\n box-shadow: 0 8px 25px rgba(0, 0, 0, 0.1);\n}\n._actionCard_pnu6z_165:hover ._cardIcon_pnu6z_178 svg {\n color: var(--color--primary);\n}\n._actionCard_pnu6z_165._loading_pnu6z_181 {\n pointer-events: none;\n opacity: 0.7;\n}\n._cardContent_pnu6z_186 {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: var(--spacing--md);\n}\n._cardIcon_pnu6z_178 {\n font-size: 48px;\n margin-bottom: var(--spacing--xs);\n}\n._cardIcon_pnu6z_178 svg {\n transition: color 0.3s ease;\n}/* BEM support Func\n -------------------------- */\n/* Transition\n-------------------------- */\n/* Color\n-------------------------- */\n/* Link\n-------------------------- */\n/* Border\n-------------------------- */\n/* Outline\n-------------------------- */\n/* Box shadow\n-------------------------- */\n/* Fill\n-------------------------- */\n/* Typography\n-------------------------- */\n/* z-index\n-------------------------- */\n/* Disable base\n-------------------------- */\n/* Icon\n-------------------------- */\n/* Checkbox\n-------------------------- */\n/* Radio\n-------------------------- */\n/* Select\n-------------------------- */\n/* Alert\n-------------------------- */\n/* MessageBox\n-------------------------- */\n/* Message\n-------------------------- */\n/* Notification\n-------------------------- */\n/* Input\n-------------------------- */\n/* Cascader\n-------------------------- */\n/* Group\n-------------------------- */\n/* Tab\n-------------------------- */\n/* Button\n-------------------------- */\n/* cascader\n-------------------------- */\n/* Switch\n-------------------------- */\n/* Dialog\n-------------------------- */\n/* Table\n-------------------------- */\n/* Pagination\n-------------------------- */\n/* Popup\n-------------------------- */\n/* Popover\n-------------------------- */\n/* Tooltip\n-------------------------- */\n/* Tag\n-------------------------- */\n/* Tree\n-------------------------- */\n/* Dropdown\n-------------------------- */\n/* Badge\n-------------------------- */\n/* Card\n--------------------------*/\n/* Slider\n--------------------------*/\n/* Steps\n--------------------------*/\n/* Menu\n--------------------------*/\n/* Rate\n--------------------------*/\n/* DatePicker\n--------------------------*/\n/* Loading\n--------------------------*/\n/* Scrollbar\n--------------------------*/\n/* Carousel\n--------------------------*/\n/* Collapse\n--------------------------*/\n/* Transfer\n--------------------------*/\n/* Header\n --------------------------*/\n/* Footer\n--------------------------*/\n/* Main\n--------------------------*/\n/* Timeline\n--------------------------*/\n/* Backtop\n--------------------------*/\n/* Link\n--------------------------*/\n/* Calendar\n--------------------------*/\n/* Form\n-------------------------- */\n/* Avatar\n--------------------------*/\n/* Break-point\n--------------------------*/\n/* Break-points\n -------------------------- */\n/* Scrollbar\n -------------------------- */\n/* Placeholder\n -------------------------- */\n/* BEM\n -------------------------- */\n._actionsContainer_7a9z2_123 {\n display: flex;\n justify-content: center;\n}\n._easy-ai-workflow-callout_7a9z2_128 {\n margin-top: var(--spacing--xs);\n padding-left: var(--spacing--sm);\n padding-right: var(--spacing--md);\n}\n._easy-ai-workflow-callout_7a9z2_128 ._callout-trailing-content_7a9z2_133 {\n display: flex;\n align-items: center;\n gap: var(--spacing--md);\n}\n._emptyStateCard_7a9z2_139 {\n width: 192px;\n text-align: center;\n display: inline-flex;\n height: 230px;\n}\n._emptyStateCard_7a9z2_139 + ._emptyStateCard_7a9z2_139 {\n margin-left: var(--spacing--sm);\n}\n._emptyStateCard_7a9z2_139:hover svg {\n color: var(--color--primary);\n}\n._emptyStateCardContent_7a9z2_152 {\n display: inline-flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n}\n._emptyStateCardIcon_7a9z2_159 {\n font-size: 48px;\n}\n._emptyStateCardIcon_7a9z2_159 svg {\n transition: color 0.3s ease;\n}\n._add-folder-button_7a9z2_166 {\n width: 30px;\n height: 30px;\n}\n._breadcrumbs-container_7a9z2_171 {\n display: flex;\n align-items: center;\n align-self: flex-end;\n}\n._breadcrumbs-loading_7a9z2_177 .el-skeleton__item {\n margin: 0;\n height: 40px;\n width: 400px;\n}\n._empty-folder-container_7a9z2_183 button {\n margin-top: var(--spacing--2xs);\n}\n._drag-active_7a9z2_187 *,\n._drag-active_7a9z2_187 .action-toggle {\n cursor: grabbing !important;\n}\n._dragging_7a9z2_192 {\n transition: opacity 0.3s ease;\n opacity: 0.3;\n border-style: dashed;\n pointer-events: none;\n}\n._drop-active_7a9z2_199 .card {\n border-color: var(--color--secondary);\n background-color: var(--callout--color--background--secondary);\n}\n._path-separator_7a9z2_204 {\n font-size: var(--font-size--xl);\n color: var(--color--foreground);\n padding: var(--spacing--3xs) var(--spacing--4xs) var(--spacing--4xs);\n}\n._name_7a9z2_210 {\n color: var(--color--text--shade-1);\n font-size: var(--font-size--sm);\n padding: var(--spacing--3xs) var(--spacing--4xs) var(--spacing--4xs);\n}\n._pointer-disabled_7a9z2_216 {\n pointer-events: none;\n}/* BEM support Func\n -------------------------- */\n/* Transition\n-------------------------- */\n/* Color\n-------------------------- */\n/* Link\n-------------------------- */\n/* Border\n-------------------------- */\n/* Outline\n-------------------------- */\n/* Box shadow\n-------------------------- */\n/* Fill\n-------------------------- */\n/* Typography\n-------------------------- */\n/* z-index\n-------------------------- */\n/* Disable base\n-------------------------- */\n/* Icon\n-------------------------- */\n/* Checkbox\n-------------------------- */\n/* Radio\n-------------------------- */\n/* Select\n-------------------------- */\n/* Alert\n-------------------------- */\n/* MessageBox\n-------------------------- */\n/* Message\n-------------------------- */\n/* Notification\n-------------------------- */\n/* Input\n-------------------------- */\n/* Cascader\n-------------------------- */\n/* Group\n-------------------------- */\n/* Tab\n-------------------------- */\n/* Button\n-------------------------- */\n/* cascader\n-------------------------- */\n/* Switch\n-------------------------- */\n/* Dialog\n-------------------------- */\n/* Table\n-------------------------- */\n/* Pagination\n-------------------------- */\n/* Popup\n-------------------------- */\n/* Popover\n-------------------------- */\n/* Tooltip\n-------------------------- */\n/* Tag\n-------------------------- */\n/* Tree\n-------------------------- */\n/* Dropdown\n-------------------------- */\n/* Badge\n-------------------------- */\n/* Card\n--------------------------*/\n/* Slider\n--------------------------*/\n/* Steps\n--------------------------*/\n/* Menu\n--------------------------*/\n/* Rate\n--------------------------*/\n/* DatePicker\n--------------------------*/\n/* Loading\n--------------------------*/\n/* Scrollbar\n--------------------------*/\n/* Carousel\n--------------------------*/\n/* Collapse\n--------------------------*/\n/* Transfer\n--------------------------*/\n/* Header\n --------------------------*/\n/* Footer\n--------------------------*/\n/* Main\n--------------------------*/\n/* Timeline\n--------------------------*/\n/* Backtop\n--------------------------*/\n/* Link\n--------------------------*/\n/* Calendar\n--------------------------*/\n/* Form\n-------------------------- */\n/* Avatar\n--------------------------*/\n/* Break-point\n--------------------------*/\n/* Break-points\n -------------------------- */\n/* Scrollbar\n -------------------------- */\n/* Placeholder\n -------------------------- */\n/* BEM\n -------------------------- */\n.add-folder-modal {\n width: 500px;\n padding-bottom: 0;\n}\n.add-folder-modal .el-message-box__message {\n font-size: var(--font-size--xl);\n}\n.add-folder-modal .el-message-box__btns {\n padding: 0 var(--spacing--lg) var(--spacing--lg);\n}\n.add-folder-modal .el-message-box__content {\n padding: var(--spacing--lg);\n}/*$vite$:1*/";
402
+ document.head.appendChild(__vite_style__);
403
+ //#region src/features/core/folders/components/FolderCard.vue?vue&type=script&setup=true&lang.ts
404
+ _hoisted_1$5 = {
405
+ "data-test-id": "folder-card"
406
+ };
407
+ _hoisted_2$1 = {
408
+ key: 0
409
+ };
410
+ FolderCard_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */defineComponent({
411
+ __name: "FolderCard",
412
+ props: {
413
+ data: {},
414
+ personalProject: {},
415
+ actions: {
416
+ default: () => []
417
+ },
418
+ readOnly: {
419
+ type: Boolean,
420
+ default: true
421
+ },
422
+ showOwnershipBadge: {
423
+ type: Boolean,
424
+ default: false
425
+ }
426
+ },
427
+ emits: ["action", "folderOpened"],
428
+ setup(__props, {
429
+ emit: __emit
430
+ }) {
431
+ const props = __props;
432
+ const i18n = useI18n();
433
+ const route = useRoute();
434
+ const router = useRouter();
435
+ const foldersStore = useFoldersStore();
436
+ const emit = __emit;
437
+ const hiddenBreadcrumbsItemsAsync = ref(new Promise(() => {}));
438
+ const cachedHiddenBreadcrumbsItems = ref([]);
439
+ const resourceTypeLabel = computed(() => i18n.baseText("generic.folder").toLowerCase());
440
+ const cardUrl = computed(() => {
441
+ return getFolderUrl(props.data.id);
442
+ });
443
+ const projectName = computed(() => {
444
+ if (props.data.homeProject?.type === ProjectTypes.Personal) return i18n.baseText("projects.menu.personal");
445
+ return props.data.homeProject?.name;
446
+ });
447
+ const cardBreadcrumbs = computed(() => {
448
+ if (props.data.parentFolder) return [{
449
+ id: props.data.parentFolder.id,
450
+ name: props.data.parentFolder.name,
451
+ label: props.data.parentFolder.name,
452
+ href: router.resolve({
453
+ name: VIEWS.PROJECTS_FOLDERS,
454
+ params: {
455
+ projectId: props.data.homeProject?.id,
456
+ folderId: props.data.parentFolder.id
457
+ }
458
+ }).href
459
+ }];
460
+ return [];
461
+ });
462
+ const showCardBreadcrumbs = computed(() => {
463
+ return props.showOwnershipBadge && cardBreadcrumbs.value.length;
464
+ });
465
+ const getFolderUrl = folderId => {
466
+ return router.resolve({
467
+ name: VIEWS.PROJECTS_FOLDERS,
468
+ params: {
469
+ projectId: route.params.projectId,
470
+ folderId
471
+ },
472
+ query: route.query
473
+ }).href;
474
+ };
475
+ const onAction = async action => {
476
+ if (action === FOLDER_LIST_ITEM_ACTIONS.OPEN) {
477
+ emit("folderOpened", {
478
+ folder: props.data
479
+ });
480
+ await router.push(cardUrl.value);
481
+ return;
482
+ }
483
+ emit("action", {
484
+ action,
485
+ folderId: props.data.id
486
+ });
487
+ };
488
+ const fetchHiddenBreadCrumbsItems = async () => {
489
+ if (!props.data.homeProject?.id || !projectName.value || !props.data.parentFolder) hiddenBreadcrumbsItemsAsync.value = Promise.resolve([]);else {
490
+ if (cachedHiddenBreadcrumbsItems.value.length) {
491
+ hiddenBreadcrumbsItemsAsync.value = Promise.resolve(cachedHiddenBreadcrumbsItems.value);
492
+ return;
493
+ }
494
+ const loadedItem = foldersStore.getHiddenBreadcrumbsItems({
495
+ id: props.data.homeProject.id,
496
+ name: projectName.value
497
+ }, props.data.parentFolder.id);
498
+ hiddenBreadcrumbsItemsAsync.value = loadedItem;
499
+ cachedHiddenBreadcrumbsItems.value = await loadedItem;
500
+ }
501
+ };
502
+ const onBreadcrumbItemClick = async item => {
503
+ if (item.href) await router.push(item.href);
504
+ };
505
+ return (_ctx, _cache) => {
506
+ const _component_RouterLink = resolveComponent("RouterLink");
507
+ return openBlock(), createElementBlock("div", _hoisted_1$5, [createVNode(_component_RouterLink, {
508
+ to: cardUrl.value,
509
+ onClick: _cache[1] || (_cache[1] = () => emit("folderOpened", {
510
+ folder: props.data
511
+ }))
512
+ }, {
513
+ default: withCtx(() => [createVNode(unref(N8nCard_default), {
514
+ class: normalizeClass(_ctx.$style.card)
515
+ }, {
516
+ prepend: withCtx(() => [createVNode(unref(N8nIcon_default), {
517
+ "data-test-id": "folder-card-icon",
518
+ class: normalizeClass(_ctx.$style["folder-icon"]),
519
+ icon: "folder",
520
+ size: "xlarge",
521
+ "stroke-width": 1
522
+ }, null, 8, ["class"])]),
523
+ header: withCtx(() => [createBaseVNode("div", {
524
+ class: normalizeClass(_ctx.$style["card-header"])
525
+ }, [createVNode(unref(N8nHeading_default), {
526
+ tag: "h2",
527
+ bold: "",
528
+ size: "small",
529
+ "data-test-id": "folder-card-name"
530
+ }, {
531
+ default: withCtx(() => [createTextVNode(toDisplayString(_ctx.data.name), 1)]),
532
+ _: 1
533
+ }), _ctx.readOnly ? (openBlock(), createBlock(unref(N8nBadge_default), {
534
+ key: 0,
535
+ class: "ml-3xs",
536
+ theme: "tertiary",
537
+ bold: ""
538
+ }, {
539
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("workflows.item.readonly")), 1)]),
540
+ _: 1
541
+ })) : createCommentVNode("", true)], 2)]),
542
+ footer: withCtx(() => [createBaseVNode("div", {
543
+ class: normalizeClass(_ctx.$style["card-footer"])
544
+ }, [_ctx.data.workflowCount > 0 ? (openBlock(), createBlock(unref(N8nText_default), {
545
+ key: 0,
546
+ size: "small",
547
+ color: "text-light",
548
+ class: normalizeClass([_ctx.$style["info-cell"], _ctx.$style["info-cell--workflow-count"]]),
549
+ "data-test-id": "folder-card-folder-count"
550
+ }, {
551
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("generic.workflow", {
552
+ interpolate: {
553
+ count: _ctx.data.workflowCount
554
+ }
555
+ })), 1)]),
556
+ _: 1
557
+ }, 8, ["class"])) : createCommentVNode("", true), _ctx.data.subFolderCount > 0 ? (openBlock(), createBlock(unref(N8nText_default), {
558
+ key: 1,
559
+ size: "small",
560
+ color: "text-light",
561
+ class: normalizeClass([_ctx.$style["info-cell"], _ctx.$style["info-cell--workflow-count"]]),
562
+ "data-test-id": "folder-card-workflow-count"
563
+ }, {
564
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("generic.folderCount", {
565
+ interpolate: {
566
+ count: _ctx.data.subFolderCount
567
+ }
568
+ })), 1)]),
569
+ _: 1
570
+ }, 8, ["class"])) : createCommentVNode("", true), createVNode(unref(N8nText_default), {
571
+ size: "small",
572
+ color: "text-light",
573
+ class: normalizeClass([_ctx.$style["info-cell"], _ctx.$style["info-cell--updated"]]),
574
+ "data-test-id": "folder-card-last-updated"
575
+ }, {
576
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("workerList.item.lastUpdated")) + " ", 1), createVNode(TimeAgo_default, {
577
+ date: String(_ctx.data.updatedAt)
578
+ }, null, 8, ["date"])]),
579
+ _: 1
580
+ }, 8, ["class"]), createVNode(unref(N8nText_default), {
581
+ size: "small",
582
+ color: "text-light",
583
+ class: normalizeClass([_ctx.$style["info-cell"], _ctx.$style["info-cell--created"]]),
584
+ "data-test-id": "folder-card-created"
585
+ }, {
586
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("workflows.item.created")) + " ", 1), createVNode(TimeAgo_default, {
587
+ date: String(_ctx.data.createdAt)
588
+ }, null, 8, ["date"])]),
589
+ _: 1
590
+ }, 8, ["class"])], 2)]),
591
+ append: withCtx(() => [createBaseVNode("div", {
592
+ class: normalizeClass(_ctx.$style["card-actions"]),
593
+ onClick: _cache[0] || (_cache[0] = withModifiers(() => {}, ["prevent"]))
594
+ }, [_ctx.data.homeProject && _ctx.showOwnershipBadge ? (openBlock(), createElementBlock("div", _hoisted_2$1, [createVNode(ProjectCardBadge_default, {
595
+ class: normalizeClass({
596
+ [_ctx.$style.cardBadge]: true,
597
+ [_ctx.$style["with-breadcrumbs"]]: showCardBreadcrumbs.value
598
+ }),
599
+ resource: _ctx.data,
600
+ "resource-type": unref(ResourceType).Workflow,
601
+ "resource-type-label": resourceTypeLabel.value,
602
+ "personal-project": _ctx.personalProject,
603
+ "show-badge-border": false
604
+ }, {
605
+ default: withCtx(() => [showCardBreadcrumbs.value ? (openBlock(), createElementBlock("div", {
606
+ key: 0,
607
+ class: normalizeClass(_ctx.$style.breadcrumbs)
608
+ }, [createVNode(unref(N8nBreadcrumbs_default), {
609
+ items: cardBreadcrumbs.value,
610
+ "hidden-items": _ctx.data.parentFolder?.parentFolderId !== null ? hiddenBreadcrumbsItemsAsync.value : void 0,
611
+ "path-truncated": _ctx.data.parentFolder?.parentFolderId !== null,
612
+ "highlight-last-item": false,
613
+ "hidden-items-trigger": "hover",
614
+ theme: "small",
615
+ "data-test-id": "folder-card-breadcrumbs",
616
+ onTooltipOpened: fetchHiddenBreadCrumbsItems,
617
+ onItemSelected: onBreadcrumbItemClick
618
+ }, {
619
+ prepend: withCtx(() => _cache[2] || (_cache[2] = [])),
620
+ _: 1
621
+ }, 8, ["items", "hidden-items", "path-truncated"])], 2)) : createCommentVNode("", true)]),
622
+ _: 1
623
+ }, 8, ["class", "resource", "resource-type", "resource-type-label", "personal-project"])])) : createCommentVNode("", true), _ctx.actions.length ? (openBlock(), createBlock(unref(N8nActionToggle_default), {
624
+ key: 1,
625
+ actions: _ctx.actions,
626
+ theme: "dark",
627
+ "data-test-id": "folder-card-actions",
628
+ onAction
629
+ }, null, 8, ["actions"])) : createCommentVNode("", true)], 2)]),
630
+ _: 1
631
+ }, 8, ["class"])]),
632
+ _: 1
633
+ }, 8, ["to"])]);
634
+ };
635
+ }
636
+ }); //#endregion
637
+ //#region src/features/core/folders/components/FolderCard.vue?vue&type=style&index=0&lang.module.scss
638
+ card = "_card_19ska_123";
639
+ cardBadge$1 = "_cardBadge_19ska_157";
640
+ FolderCard_vue_vue_type_style_index_0_lang_module_default = {
641
+ card,
642
+ "folder-icon": "_folder-icon_19ska_131",
643
+ "card-header": "_card-header_19ska_140",
644
+ "card-footer": "_card-footer_19ska_148",
645
+ "info-cell": "_info-cell_19ska_152",
646
+ cardBadge: cardBadge$1,
647
+ "with-breadcrumbs": "_with-breadcrumbs_19ska_157",
648
+ "card-actions": "_card-actions_19ska_164",
649
+ "info-cell--created": "_info-cell--created_19ska_182"
650
+ }; //#endregion
651
+ //#region src/features/core/folders/components/FolderCard.vue
652
+ cssModules$9 = {
653
+ "$style": FolderCard_vue_vue_type_style_index_0_lang_module_default
654
+ };
655
+ FolderCard_default = /* @__PURE__ */__plugin_vue_export_helper_default(FolderCard_vue_vue_type_script_setup_true_lang_default, [["__cssModules", cssModules$9]]); //#endregion
656
+ //#region src/app/components/WorkflowCard.vue?vue&type=script&setup=true&lang.ts
657
+ import_dateformat = /* @__PURE__ */__toESM(require_dateformat());
658
+ _hoisted_1$4 = {
659
+ key: 0
660
+ };
661
+ WorkflowCard_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */defineComponent({
662
+ __name: "WorkflowCard",
663
+ props: {
664
+ data: {},
665
+ readOnly: {
666
+ type: Boolean,
667
+ default: false
668
+ },
669
+ workflowListEventBus: {
670
+ default: void 0
671
+ },
672
+ showOwnershipBadge: {
673
+ type: Boolean,
674
+ default: false
675
+ },
676
+ areTagsEnabled: {
677
+ type: Boolean,
678
+ default: true
679
+ },
680
+ isMcpEnabled: {
681
+ type: Boolean,
682
+ default: false
683
+ },
684
+ areFoldersEnabled: {
685
+ type: Boolean,
686
+ default: false
687
+ }
688
+ },
689
+ emits: ["expand:tags", "click:tag", "workflow:deleted", "workflow:archived", "workflow:unarchived", "workflow:active-toggle", "action:move-to-folder"],
690
+ setup(__props, {
691
+ emit: __emit
692
+ }) {
693
+ const WORKFLOW_LIST_ITEM_ACTIONS = {
694
+ OPEN: "open",
695
+ SHARE: "share",
696
+ DUPLICATE: "duplicate",
697
+ DELETE: "delete",
698
+ ARCHIVE: "archive",
699
+ UNARCHIVE: "unarchive",
700
+ MOVE: "move",
701
+ MOVE_TO_FOLDER: "moveToFolder",
702
+ ENABLE_MCP_ACCESS: "enableMCPAccess",
703
+ REMOVE_MCP_ACCESS: "removeMCPAccess"
704
+ };
705
+ const props = __props;
706
+ const emit = __emit;
707
+ const toast = useToast();
708
+ const message = useMessage();
709
+ const locale = useI18n();
710
+ const router = useRouter();
711
+ const route = useRoute();
712
+ const telemetry = useTelemetry();
713
+ const mcp = useMcp();
714
+ const uiStore = useUIStore();
715
+ const usersStore = useUsersStore();
716
+ const workflowsStore = useWorkflowsStore();
717
+ const projectsStore = useProjectsStore();
718
+ const foldersStore = useFoldersStore();
719
+ const mcpStore = useMCPStore();
720
+ const hiddenBreadcrumbsItemsAsync = ref(new Promise(() => {}));
721
+ const cachedHiddenBreadcrumbsItems = ref([]);
722
+ const mcpToggleStatus = ref(null);
723
+ const resourceTypeLabel = computed(() => locale.baseText("generic.workflow").toLowerCase());
724
+ const currentUser = computed(() => usersStore.currentUser ?? {});
725
+ const workflowPermissions = computed(() => getResourcePermissions(props.data.scopes).workflow);
726
+ const showFolders = computed(() => {
727
+ return props.areFoldersEnabled && route.name !== VIEWS.WORKFLOWS;
728
+ });
729
+ const showCardBreadcrumbs = computed(() => {
730
+ return props.showOwnershipBadge && !isSomeoneElsesWorkflow.value && cardBreadcrumbs.value.length;
731
+ });
732
+ const projectName = computed(() => {
733
+ if (props.data.homeProject?.type === ProjectTypes.Personal) return locale.baseText("projects.menu.personal");
734
+ return props.data.homeProject?.name;
735
+ });
736
+ const cardBreadcrumbs = computed(() => {
737
+ if (props.data.parentFolder) return [{
738
+ id: props.data.parentFolder.id,
739
+ name: props.data.parentFolder.name,
740
+ label: props.data.parentFolder.name,
741
+ href: router.resolve({
742
+ name: VIEWS.PROJECTS_FOLDERS,
743
+ params: {
744
+ projectId: props.data.homeProject?.id,
745
+ folderId: props.data.parentFolder.id
746
+ }
747
+ }).href
748
+ }];
749
+ return [];
750
+ });
751
+ const actions = computed(() => {
752
+ const items = [{
753
+ label: locale.baseText("workflows.item.open"),
754
+ value: WORKFLOW_LIST_ITEM_ACTIONS.OPEN
755
+ }, {
756
+ label: locale.baseText("workflows.item.share"),
757
+ value: WORKFLOW_LIST_ITEM_ACTIONS.SHARE
758
+ }];
759
+ if (workflowPermissions.value.create && !props.readOnly && !props.data.isArchived) items.push({
760
+ label: locale.baseText("workflows.item.duplicate"),
761
+ value: WORKFLOW_LIST_ITEM_ACTIONS.DUPLICATE
762
+ });
763
+ if (!props.readOnly && (workflowPermissions.value.update || workflowPermissions.value.move && projectsStore.isTeamProjectFeatureEnabled) && showFolders.value && route.name !== VIEWS.SHARED_WORKFLOWS) items.push({
764
+ label: locale.baseText("folders.actions.moveToFolder"),
765
+ value: WORKFLOW_LIST_ITEM_ACTIONS.MOVE_TO_FOLDER
766
+ });
767
+ if (workflowPermissions.value.delete && !props.readOnly) if (!props.data.isArchived) items.push({
768
+ label: locale.baseText("workflows.item.archive"),
769
+ value: WORKFLOW_LIST_ITEM_ACTIONS.ARCHIVE
770
+ });else {
771
+ items.push({
772
+ label: locale.baseText("workflows.item.delete"),
773
+ value: WORKFLOW_LIST_ITEM_ACTIONS.DELETE
774
+ });
775
+ items.push({
776
+ label: locale.baseText("workflows.item.unarchive"),
777
+ value: WORKFLOW_LIST_ITEM_ACTIONS.UNARCHIVE
778
+ });
779
+ }
780
+ if (props.isMcpEnabled && workflowPermissions.value.update && !props.readOnly && !props.data.isArchived) if (isAvailableInMCP.value) items.push({
781
+ label: locale.baseText("workflows.item.disableMCPAccess"),
782
+ value: WORKFLOW_LIST_ITEM_ACTIONS.REMOVE_MCP_ACCESS,
783
+ disabled: !props.data.active
784
+ });else items.push({
785
+ label: locale.baseText("workflows.item.enableMCPAccess"),
786
+ value: WORKFLOW_LIST_ITEM_ACTIONS.ENABLE_MCP_ACCESS,
787
+ disabled: !props.data.active
788
+ });
789
+ return items;
790
+ });
791
+ const formattedCreatedAtDate = computed(() => {
792
+ const currentYear = (/* @__PURE__ */new Date()).getFullYear().toString();
793
+ return (0, import_dateformat.default)(props.data.createdAt, `d mmmm${String(props.data.createdAt).startsWith(currentYear) ? "" : ", yyyy"}`);
794
+ });
795
+ const isAvailableInMCP = computed(() => {
796
+ if (mcpToggleStatus.value === null) return props.data.settings?.availableInMCP ?? false;
797
+ return mcpToggleStatus.value;
798
+ });
799
+ const isSomeoneElsesWorkflow = computed(() => props.data.homeProject?.type !== ProjectTypes.Team && props.data.homeProject?.id !== projectsStore.personalProject?.id);
800
+ async function onClick(event) {
801
+ if (event?.ctrlKey || event?.metaKey) {
802
+ const route$1 = router.resolve({
803
+ name: VIEWS.WORKFLOW,
804
+ params: {
805
+ name: props.data.id
806
+ }
807
+ });
808
+ window.open(route$1.href, "_blank");
809
+ return;
810
+ }
811
+ await router.push({
812
+ name: VIEWS.WORKFLOW,
813
+ params: {
814
+ name: props.data.id
815
+ }
816
+ });
817
+ }
818
+ function onClickTag(tagId, event) {
819
+ event.stopPropagation();
820
+ emit("click:tag", tagId, event);
821
+ }
822
+ function onExpandTags() {
823
+ emit("expand:tags");
824
+ }
825
+ async function onAction(action) {
826
+ switch (action) {
827
+ case WORKFLOW_LIST_ITEM_ACTIONS.OPEN:
828
+ await onClick();
829
+ break;
830
+ case WORKFLOW_LIST_ITEM_ACTIONS.DUPLICATE:
831
+ uiStore.openModalWithData({
832
+ name: DUPLICATE_MODAL_KEY,
833
+ data: {
834
+ id: props.data.id,
835
+ name: props.data.name,
836
+ tags: (props.data.tags ?? []).map(tag => typeof tag !== "string" && "id" in tag ? tag.id : tag),
837
+ externalEventBus: props.workflowListEventBus,
838
+ parentFolderId: props.data.parentFolder?.id
839
+ }
840
+ });
841
+ break;
842
+ case WORKFLOW_LIST_ITEM_ACTIONS.SHARE:
843
+ uiStore.openModalWithData({
844
+ name: WORKFLOW_SHARE_MODAL_KEY,
845
+ data: {
846
+ id: props.data.id
847
+ }
848
+ });
849
+ telemetry.track("User opened sharing modal", {
850
+ workflow_id: props.data.id,
851
+ user_id_sharer: currentUser.value.id,
852
+ sub_view: "Workflows listing"
853
+ });
854
+ break;
855
+ case WORKFLOW_LIST_ITEM_ACTIONS.DELETE:
856
+ await deleteWorkflow();
857
+ break;
858
+ case WORKFLOW_LIST_ITEM_ACTIONS.ARCHIVE:
859
+ await archiveWorkflow();
860
+ break;
861
+ case WORKFLOW_LIST_ITEM_ACTIONS.UNARCHIVE:
862
+ await unarchiveWorkflow();
863
+ break;
864
+ case WORKFLOW_LIST_ITEM_ACTIONS.MOVE:
865
+ moveResource();
866
+ break;
867
+ case WORKFLOW_LIST_ITEM_ACTIONS.MOVE_TO_FOLDER:
868
+ emit("action:move-to-folder", {
869
+ id: props.data.id,
870
+ name: props.data.name,
871
+ parentFolderId: props.data.parentFolder?.id,
872
+ sharedWithProjects: props.data.sharedWithProjects
873
+ });
874
+ break;
875
+ case WORKFLOW_LIST_ITEM_ACTIONS.ENABLE_MCP_ACCESS:
876
+ await toggleMCPAccess(true);
877
+ break;
878
+ case WORKFLOW_LIST_ITEM_ACTIONS.REMOVE_MCP_ACCESS:
879
+ await toggleMCPAccess(false);
880
+ break;
881
+ }
882
+ }
883
+ async function toggleMCPAccess(enabled) {
884
+ try {
885
+ await mcpStore.toggleWorkflowMcpAccess(props.data.id, enabled);
886
+ mcpToggleStatus.value = enabled;
887
+ mcp.trackMcpAccessEnabledForWorkflow(props.data.id);
888
+ } catch (error) {
889
+ toast.showError(error, locale.baseText("workflowSettings.toggleMCP.error.title"));
890
+ return;
891
+ }
892
+ }
893
+ async function deleteWorkflow() {
894
+ if ((await message.confirm(locale.baseText("mainSidebar.confirmMessage.workflowDelete.message", {
895
+ interpolate: {
896
+ workflowName: props.data.name
897
+ }
898
+ }), locale.baseText("mainSidebar.confirmMessage.workflowDelete.headline"), {
899
+ type: "warning",
900
+ confirmButtonText: locale.baseText("mainSidebar.confirmMessage.workflowDelete.confirmButtonText"),
901
+ cancelButtonText: locale.baseText("mainSidebar.confirmMessage.workflowDelete.cancelButtonText")
902
+ })) !== "confirm") return;
903
+ try {
904
+ await workflowsStore.deleteWorkflow(props.data.id);
905
+ } catch (error) {
906
+ toast.showError(error, locale.baseText("generic.deleteWorkflowError"));
907
+ return;
908
+ }
909
+ toast.showMessage({
910
+ title: locale.baseText("mainSidebar.showMessage.handleSelect1.title", {
911
+ interpolate: {
912
+ workflowName: props.data.name
913
+ }
914
+ }),
915
+ type: "success"
916
+ });
917
+ emit("workflow:deleted");
918
+ }
919
+ async function archiveWorkflow() {
920
+ if (props.data.active) {
921
+ if ((await message.confirm(locale.baseText("mainSidebar.confirmMessage.workflowArchive.message", {
922
+ interpolate: {
923
+ workflowName: props.data.name
924
+ }
925
+ }), locale.baseText("mainSidebar.confirmMessage.workflowArchive.headline"), {
926
+ type: "warning",
927
+ confirmButtonText: locale.baseText("mainSidebar.confirmMessage.workflowArchive.confirmButtonText"),
928
+ cancelButtonText: locale.baseText("mainSidebar.confirmMessage.workflowArchive.cancelButtonText")
929
+ })) !== "confirm") return;
930
+ }
931
+ try {
932
+ await workflowsStore.archiveWorkflow(props.data.id);
933
+ } catch (error) {
934
+ toast.showError(error, locale.baseText("generic.archiveWorkflowError"));
935
+ return;
936
+ }
937
+ toast.showMessage({
938
+ title: locale.baseText("mainSidebar.showMessage.handleArchive.title", {
939
+ interpolate: {
940
+ workflowName: props.data.name
941
+ }
942
+ }),
943
+ type: "success"
944
+ });
945
+ emit("workflow:archived");
946
+ }
947
+ async function unarchiveWorkflow() {
948
+ try {
949
+ await workflowsStore.unarchiveWorkflow(props.data.id);
950
+ } catch (error) {
951
+ toast.showError(error, locale.baseText("generic.unarchiveWorkflowError"));
952
+ return;
953
+ }
954
+ toast.showMessage({
955
+ title: locale.baseText("mainSidebar.showMessage.handleUnarchive.title", {
956
+ interpolate: {
957
+ workflowName: props.data.name
958
+ }
959
+ }),
960
+ type: "success"
961
+ });
962
+ emit("workflow:unarchived");
963
+ }
964
+ const fetchHiddenBreadCrumbsItems = async () => {
965
+ if (!props.data.homeProject?.id || !projectName.value || !props.data.parentFolder) hiddenBreadcrumbsItemsAsync.value = Promise.resolve([]);else {
966
+ if (cachedHiddenBreadcrumbsItems.value.length) {
967
+ hiddenBreadcrumbsItemsAsync.value = Promise.resolve(cachedHiddenBreadcrumbsItems.value);
968
+ return;
969
+ }
970
+ const loadedItem = foldersStore.getHiddenBreadcrumbsItems({
971
+ id: props.data.homeProject.id,
972
+ name: projectName.value
973
+ }, props.data.parentFolder.id);
974
+ hiddenBreadcrumbsItemsAsync.value = loadedItem;
975
+ cachedHiddenBreadcrumbsItems.value = await loadedItem;
976
+ }
977
+ };
978
+ function moveResource() {
979
+ uiStore.openModalWithData({
980
+ name: PROJECT_MOVE_RESOURCE_MODAL,
981
+ data: {
982
+ resource: props.data,
983
+ resourceType: ResourceType.Workflow,
984
+ resourceTypeLabel: resourceTypeLabel.value,
985
+ eventBus: props.workflowListEventBus
986
+ }
987
+ });
988
+ }
989
+ const onWorkflowActiveToggle = async value => {
990
+ emit("workflow:active-toggle", value);
991
+ if (!value.active && props.isMcpEnabled && isAvailableInMCP.value) {
992
+ mcpToggleStatus.value = null;
993
+ toast.showToast({
994
+ title: locale.baseText("mcp.workflowDeactivated.title"),
995
+ message: locale.baseText("mcp.workflowDeactivated.message"),
996
+ type: "info"
997
+ });
998
+ }
999
+ };
1000
+ const onBreadcrumbItemClick = async item => {
1001
+ if (item.href) await router.push(item.href);
1002
+ };
1003
+ const tags = computed(() => props.data.tags?.map(tag => typeof tag === "string" ? {
1004
+ id: tag,
1005
+ name: tag
1006
+ } : tag) ?? []);
1007
+ return (_ctx, _cache) => {
1008
+ return openBlock(), createBlock(unref(N8nCard_default), {
1009
+ class: normalizeClass({
1010
+ [_ctx.$style.cardLink]: true,
1011
+ [_ctx.$style.cardArchived]: _ctx.data.isArchived
1012
+ }),
1013
+ "data-test-id": "workflow-card",
1014
+ onClick
1015
+ }, {
1016
+ header: withCtx(() => [createVNode(unref(N8nTooltip_default), {
1017
+ content: _ctx.data.description,
1018
+ disabled: !_ctx.data.description,
1019
+ "data-test-id": "workflow-card-name-tooltip",
1020
+ "popper-class": _ctx.$style["description-popper"]
1021
+ }, {
1022
+ default: withCtx(() => [createVNode(unref(N8nText_default), {
1023
+ tag: "h2",
1024
+ bold: "",
1025
+ class: normalizeClass({
1026
+ [_ctx.$style.cardHeading]: true,
1027
+ [_ctx.$style.cardHeadingArchived]: _ctx.data.isArchived
1028
+ }),
1029
+ "data-test-id": "workflow-card-name"
1030
+ }, {
1031
+ default: withCtx(() => [createTextVNode(toDisplayString(_ctx.data.name) + " ", 1), !workflowPermissions.value.update ? (openBlock(), createBlock(unref(N8nBadge_default), {
1032
+ key: 0,
1033
+ class: "ml-3xs",
1034
+ theme: "tertiary",
1035
+ bold: ""
1036
+ }, {
1037
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(locale).baseText("workflows.item.readonly")), 1)]),
1038
+ _: 1
1039
+ })) : createCommentVNode("", true)]),
1040
+ _: 1
1041
+ }, 8, ["class"])]),
1042
+ _: 1
1043
+ }, 8, ["content", "disabled", "popper-class"])]),
1044
+ append: withCtx(() => [createBaseVNode("div", {
1045
+ class: normalizeClass(_ctx.$style.cardActions),
1046
+ onClick: _cache[0] || (_cache[0] = withModifiers(() => {}, ["stop"]))
1047
+ }, [_ctx.showOwnershipBadge ? (openBlock(), createBlock(ProjectCardBadge_default, {
1048
+ key: 0,
1049
+ class: normalizeClass({
1050
+ [_ctx.$style.cardBadge]: true,
1051
+ [_ctx.$style["with-breadcrumbs"]]: showCardBreadcrumbs.value
1052
+ }),
1053
+ resource: _ctx.data,
1054
+ "resource-type": unref(ResourceType).Workflow,
1055
+ "resource-type-label": resourceTypeLabel.value,
1056
+ "personal-project": unref(projectsStore).personalProject,
1057
+ "show-badge-border": false
1058
+ }, {
1059
+ default: withCtx(() => [showCardBreadcrumbs.value ? (openBlock(), createElementBlock("div", {
1060
+ key: 0,
1061
+ class: normalizeClass(_ctx.$style.breadcrumbs)
1062
+ }, [createVNode(unref(N8nBreadcrumbs_default), {
1063
+ items: cardBreadcrumbs.value,
1064
+ "hidden-items": _ctx.data.parentFolder?.parentFolderId !== null ? hiddenBreadcrumbsItemsAsync.value : void 0,
1065
+ "path-truncated": _ctx.data.parentFolder?.parentFolderId !== null,
1066
+ "highlight-last-item": false,
1067
+ "hidden-items-trigger": "hover",
1068
+ theme: "small",
1069
+ "data-test-id": "workflow-card-breadcrumbs",
1070
+ onTooltipOpened: fetchHiddenBreadCrumbsItems,
1071
+ onItemSelected: onBreadcrumbItemClick
1072
+ }, {
1073
+ prepend: withCtx(() => _cache[2] || (_cache[2] = [])),
1074
+ _: 1
1075
+ }, 8, ["items", "hidden-items", "path-truncated"])], 2)) : createCommentVNode("", true)]),
1076
+ _: 1
1077
+ }, 8, ["class", "resource", "resource-type", "resource-type-label", "personal-project"])) : createCommentVNode("", true), _ctx.data.isArchived ? (openBlock(), createBlock(unref(N8nText_default), {
1078
+ key: 1,
1079
+ color: "text-light",
1080
+ size: "small",
1081
+ bold: "",
1082
+ class: "ml-s mr-s",
1083
+ "data-test-id": "workflow-card-archived"
1084
+ }, {
1085
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(locale).baseText("workflows.item.archived")), 1)]),
1086
+ _: 1
1087
+ })) : (openBlock(), createBlock(WorkflowActivator_default, {
1088
+ key: 2,
1089
+ class: "mr-s",
1090
+ "is-archived": _ctx.data.isArchived,
1091
+ "workflow-active": _ctx.data.active,
1092
+ "workflow-id": _ctx.data.id,
1093
+ "workflow-permissions": workflowPermissions.value,
1094
+ "data-test-id": "workflow-card-activator",
1095
+ "onUpdate:workflowActive": onWorkflowActiveToggle
1096
+ }, null, 8, ["is-archived", "workflow-active", "workflow-id", "workflow-permissions"])), createVNode(unref(N8nActionToggle_default), {
1097
+ actions: actions.value,
1098
+ theme: "dark",
1099
+ "data-test-id": "workflow-card-actions",
1100
+ onAction
1101
+ }, null, 8, ["actions"])], 2)]),
1102
+ default: withCtx(() => [createBaseVNode("div", {
1103
+ class: normalizeClass(_ctx.$style.cardDescription)
1104
+ }, [withDirectives(createBaseVNode("span", null, [createTextVNode(toDisplayString(unref(locale).baseText("workflows.item.updated")) + " ", 1), createVNode(TimeAgo_default, {
1105
+ date: String(_ctx.data.updatedAt)
1106
+ }, null, 8, ["date"]), _cache[1] || (_cache[1] = createTextVNode(" | "))], 512), [[vShow, _ctx.data]]), withDirectives(createBaseVNode("span", null, [createTextVNode(toDisplayString(unref(locale).baseText("workflows.item.created")) + " " + toDisplayString(formattedCreatedAtDate.value) + " ", 1), props.isMcpEnabled && isAvailableInMCP.value ? (openBlock(), createElementBlock("span", _hoisted_1$4, "|")) : createCommentVNode("", true)], 512), [[vShow, _ctx.data]]), withDirectives(createBaseVNode("span", {
1107
+ class: normalizeClass([_ctx.$style["description-cell"], _ctx.$style["description-cell--mcp"]]),
1108
+ "data-test-id": "workflow-card-mcp"
1109
+ }, [createVNode(unref(N8nTooltip_default), {
1110
+ placement: "right",
1111
+ content: unref(locale).baseText("workflows.item.availableInMCP"),
1112
+ "data-test-id": "workflow-card-mcp-tooltip"
1113
+ }, {
1114
+ default: withCtx(() => [createVNode(unref(N8nIcon_default), {
1115
+ icon: "mcp",
1116
+ size: "medium"
1117
+ })]),
1118
+ _: 1
1119
+ }, 8, ["content"])], 2), [[vShow, props.isMcpEnabled && isAvailableInMCP.value]]), props.areTagsEnabled && _ctx.data.tags && _ctx.data.tags.length > 0 ? withDirectives((openBlock(), createElementBlock("span", {
1120
+ key: 0,
1121
+ class: normalizeClass(_ctx.$style.cardTags)
1122
+ }, [createVNode(unref(N8nTags_default), {
1123
+ tags: tags.value,
1124
+ "truncate-at": 3,
1125
+ truncate: "",
1126
+ "data-test-id": "workflow-card-tags",
1127
+ "onClick:tag": onClickTag,
1128
+ onExpand: onExpandTags
1129
+ }, null, 8, ["tags"])], 2)), [[vShow, _ctx.data]]) : createCommentVNode("", true)], 2)]),
1130
+ _: 1
1131
+ }, 8, ["class"]);
1132
+ };
1133
+ }
1134
+ }); //#endregion
1135
+ //#region src/app/components/WorkflowCard.vue?vue&type=style&index=0&lang.module.scss
1136
+ cardLink = "_cardLink_g126n_123";
1137
+ cardHeading = "_cardHeading_g126n_133";
1138
+ cardHeadingArchived = "_cardHeadingArchived_g126n_142";
1139
+ cardDescription = "_cardDescription_g126n_150";
1140
+ cardTags = "_cardTags_g126n_160";
1141
+ cardActions = "_cardActions_g126n_165";
1142
+ cardBadge = "_cardBadge_g126n_176";
1143
+ cardArchived = "_cardArchived_g126n_187";
1144
+ breadcrumbs = "_breadcrumbs_g126n_213";
1145
+ WorkflowCard_vue_vue_type_style_index_0_lang_module_default = {
1146
+ cardLink,
1147
+ cardHeading,
1148
+ cardHeadingArchived,
1149
+ "description-popper": "_description-popper_g126n_146",
1150
+ cardDescription,
1151
+ cardTags,
1152
+ cardActions,
1153
+ cardBadge,
1154
+ "with-breadcrumbs": "_with-breadcrumbs_g126n_180",
1155
+ cardArchived,
1156
+ "description-cell--mcp": "_description-cell--mcp_g126n_193",
1157
+ breadcrumbs
1158
+ }; //#endregion
1159
+ //#region src/app/components/WorkflowCard.vue
1160
+ cssModules$8 = {
1161
+ "$style": WorkflowCard_vue_vue_type_style_index_0_lang_module_default
1162
+ };
1163
+ WorkflowCard_default = /* @__PURE__ */__plugin_vue_export_helper_default(WorkflowCard_vue_vue_type_script_setup_true_lang_default, [["__cssModules", cssModules$8]]); //#endregion
1164
+ //#region src/app/composables/useAutoScrollOnDrag.ts
1165
+ DEFAULT_EDGE = 80;
1166
+ DEFAULT_MAX_SPEED = 20;
1167
+ SIMPLE_TEMPLATES = [6270, 5271, 2178];
1168
+ PREDEFINED_TEMPLATES_BY_NODE = {
1169
+ "n8n-nodes-base.gmail": [5678, 4722, 5694],
1170
+ "n8n-nodes-base.googleSheets": [5694, 5690, 5906],
1171
+ "n8n-nodes-base.telegram": [5626, 2114, 4875],
1172
+ "@n8n/n8n-nodes-langchain.openAi": [2462, 2722, 2178],
1173
+ "@n8n/n8n-nodes-langchain.googleGemini": [5993, 6270, 5677],
1174
+ "n8n-nodes-base.googleCalendar": [2328, 3393, 2110],
1175
+ "n8n-nodes-base.youTube": [3188, 4846, 4506],
1176
+ "n8n-nodes-base.airtable": [3053, 2700, 2579]
1177
+ };
1178
+ usePersonalizedTemplatesStore = defineStore(STORES.PERSONALIZED_TEMPLATES, () => {
1179
+ const telemetry = useTelemetry();
1180
+ const posthogStore = usePostHog();
1181
+ const cloudPlanStore = useCloudPlanStore();
1182
+ const templatesStore = useTemplatesStore();
1183
+ const allSuggestedWorkflows = ref([]);
1184
+ const dismissedSuggestedWorkflowsStorage = useStorage(LOCAL_STORAGE_EXPERIMENTAL_DISMISSED_SUGGESTED_WORKFLOWS);
1185
+ const dismissedSuggestedWorkflows = computed(() => {
1186
+ return dismissedSuggestedWorkflowsStorage.value ? jsonParse(dismissedSuggestedWorkflowsStorage.value, {
1187
+ fallbackValue: []
1188
+ }) : [];
1189
+ });
1190
+ const suggestedWorkflows = computed(() => allSuggestedWorkflows.value.filter(({
1191
+ id
1192
+ }) => !dismissedSuggestedWorkflows.value.includes(id)));
1193
+ const dismissSuggestedWorkflow = id => {
1194
+ dismissedSuggestedWorkflowsStorage.value = JSON.stringify([...(dismissedSuggestedWorkflows.value ?? []), id]);
1195
+ };
1196
+ const isFeatureEnabled = () => {
1197
+ return posthogStore.getVariant(TEMPLATE_ONBOARDING_EXPERIMENT.name) === TEMPLATE_ONBOARDING_EXPERIMENT.variantSuggestedTemplates && cloudPlanStore.userIsTrialing;
1198
+ };
1199
+ const trackUserWasRecommendedTemplates = templateIds => {
1200
+ telemetry.track("User was recommended personalized templates", {
1201
+ templateIds
1202
+ });
1203
+ };
1204
+ const trackUserClickedOnPersonalizedTemplate = templateId => {
1205
+ telemetry.track("User clicked on personalized template callout", {
1206
+ templateId
1207
+ });
1208
+ };
1209
+ const trackUserDismissedCallout = templateId => {
1210
+ telemetry.track("User dismissed personalized template callout", {
1211
+ templateId
1212
+ });
1213
+ };
1214
+ const fetchSuggestedWorkflows = async (codingSkill, selectedApps) => {
1215
+ if (!isFeatureEnabled()) return;
1216
+ try {
1217
+ if (codingSkill === 1) {
1218
+ const predefinedSelected = getSuggestedTemplatesForLowCodingSkill(selectedApps);
1219
+ if (predefinedSelected.length > 0) {
1220
+ const suggestedWorkflowsPromises$1 = predefinedSelected.map(async id => await templatesStore.fetchTemplateById(id.toString()));
1221
+ const top3Templates$1 = keepTop3Templates(await Promise.all(suggestedWorkflowsPromises$1));
1222
+ allSuggestedWorkflows.value = top3Templates$1;
1223
+ trackUserWasRecommendedTemplates(top3Templates$1.map(t => t.id));
1224
+ return;
1225
+ }
1226
+ }
1227
+ const suggestedWorkflowsPromises = (await templatesStore.getWorkflows({
1228
+ categories: [],
1229
+ search: "",
1230
+ sort: "rank:desc",
1231
+ nodes: selectedApps.length > 0 ? selectedApps : void 0,
1232
+ combineWith: "or"
1233
+ })).slice(0, 3).map(workflow => workflow.id).map(async id => await templatesStore.fetchTemplateById(id.toString()));
1234
+ const top3Templates = keepTop3Templates(await Promise.all(suggestedWorkflowsPromises));
1235
+ allSuggestedWorkflows.value = top3Templates;
1236
+ trackUserWasRecommendedTemplates(top3Templates.map(t => t.id));
1237
+ } catch (error) {}
1238
+ };
1239
+ const getTemplateRoute = id => {
1240
+ return {
1241
+ name: VIEWS.TEMPLATE,
1242
+ params: {
1243
+ id
1244
+ }
1245
+ };
1246
+ };
1247
+ watch(() => cloudPlanStore.currentUserCloudInfo, async userInfo => {
1248
+ if (!userInfo) return;
1249
+ const codingSkill = cloudPlanStore.codingSkill;
1250
+ await fetchSuggestedWorkflows(codingSkill, cloudPlanStore.selectedApps ?? []);
1251
+ });
1252
+ return {
1253
+ isFeatureEnabled,
1254
+ suggestedWorkflows,
1255
+ dismissSuggestedWorkflow,
1256
+ trackUserClickedOnPersonalizedTemplate,
1257
+ trackUserDismissedCallout,
1258
+ getTemplateRoute
1259
+ };
1260
+ }); //#endregion
1261
+ //#region src/experiments/personalizedTemplates/components/SuggestedWorkflowCard.vue?vue&type=script&setup=true&lang.ts
1262
+ SuggestedWorkflowCard_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */defineComponent({
1263
+ __name: "SuggestedWorkflowCard",
1264
+ props: {
1265
+ data: {}
1266
+ },
1267
+ setup(__props) {
1268
+ const {
1269
+ data
1270
+ } = __props;
1271
+ const {
1272
+ dismissSuggestedWorkflow,
1273
+ getTemplateRoute,
1274
+ trackUserClickedOnPersonalizedTemplate,
1275
+ trackUserDismissedCallout
1276
+ } = usePersonalizedTemplatesStore();
1277
+ const locale = useI18n();
1278
+ const onDismissCallout = () => {
1279
+ trackUserDismissedCallout(data.id);
1280
+ dismissSuggestedWorkflow(data.id);
1281
+ };
1282
+ const onTryTemplate = () => {
1283
+ trackUserClickedOnPersonalizedTemplate(data.id);
1284
+ dismissSuggestedWorkflow(data.id);
1285
+ };
1286
+ return (_ctx, _cache) => {
1287
+ return openBlock(), createBlock(unref(N8nCallout_default), {
1288
+ theme: "secondary",
1289
+ iconless: true,
1290
+ class: normalizeClass(_ctx.$style["suggested-workflow-callout"]),
1291
+ slim: true
1292
+ }, {
1293
+ trailingContent: withCtx(() => [createBaseVNode("div", {
1294
+ class: normalizeClass(_ctx.$style["callout-trailing-content"])
1295
+ }, [createVNode(unref(N8nLink_default), {
1296
+ "data-test-id": "suggested-workflow-button",
1297
+ size: "small",
1298
+ to: unref(getTemplateRoute)(unref(data).id),
1299
+ onClick: onTryTemplate
1300
+ }, {
1301
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(locale).baseText("workflows.itemSuggestion.try")), 1)]),
1302
+ _: 1
1303
+ }, 8, ["to"]), createVNode(unref(N8nIcon_default), {
1304
+ size: "small",
1305
+ icon: "x",
1306
+ title: unref(locale).baseText("generic.dismiss"),
1307
+ class: "clickable",
1308
+ onClick: onDismissCallout
1309
+ }, null, 8, ["title"])], 2)]),
1310
+ default: withCtx(() => [createBaseVNode("div", {
1311
+ class: normalizeClass(_ctx.$style["callout-content"])
1312
+ }, toDisplayString(unref(data).name), 3)]),
1313
+ _: 1
1314
+ }, 8, ["class"]);
1315
+ };
1316
+ }
1317
+ }); //#endregion
1318
+ //#region src/experiments/personalizedTemplates/components/SuggestedWorkflowCard.vue?vue&type=style&index=0&lang.module.scss
1319
+ SuggestedWorkflowCard_vue_vue_type_style_index_0_lang_module_default = {
1320
+ "suggested-workflow-callout": "_suggested-workflow-callout_19l89_123",
1321
+ "callout-content": "_callout-content_19l89_129",
1322
+ "callout-trailing-content": "_callout-trailing-content_19l89_133"
1323
+ }; //#endregion
1324
+ //#region src/experiments/personalizedTemplates/components/SuggestedWorkflowCard.vue
1325
+ cssModules$7 = {
1326
+ "$style": SuggestedWorkflowCard_vue_vue_type_style_index_0_lang_module_default
1327
+ };
1328
+ SuggestedWorkflowCard_default = /* @__PURE__ */__plugin_vue_export_helper_default(SuggestedWorkflowCard_vue_vue_type_script_setup_true_lang_default, [["__cssModules", cssModules$7]]); //#endregion
1329
+ //#region src/experiments/personalizedTemplates/components/SuggestedWorkflows.vue?vue&type=style&index=0&lang.module.scss
1330
+ SuggestedWorkflows_vue_vue_type_style_index_0_lang_module_default = {
1331
+ "suggested-workflows": "_suggested-workflows_dbm58_123"
1332
+ }; //#endregion
1333
+ //#region src/experiments/personalizedTemplates/components/SuggestedWorkflows.vue
1334
+ _sfc_main = {};
1335
+ _hoisted_1$3 = {
1336
+ class: "suggested-workflows",
1337
+ "data-test-id": "suggested-workflows"
1338
+ };
1339
+ cssModules$6 = {
1340
+ "$style": SuggestedWorkflows_vue_vue_type_style_index_0_lang_module_default
1341
+ };
1342
+ SuggestedWorkflows_default = /* @__PURE__ */__plugin_vue_export_helper_default(_sfc_main, [["render", _sfc_render], ["__cssModules", cssModules$6]]); //#endregion
1343
+ //#region src/experiments/templateRecoV2/components/NodeRecommendationCard.vue?vue&type=script&setup=true&lang.ts
1344
+ NodeRecommendationCard_vue_vue_type_script_setup_true_lang_default$1 = /* @__PURE__ */defineComponent({
1345
+ __name: "NodeRecommendationCard",
1346
+ props: {
1347
+ nodeName: {}
1348
+ },
1349
+ setup(__props) {
1350
+ const props = __props;
1351
+ const uiStore = useUIStore();
1352
+ const nodeTypesStore = useNodeTypesStore();
1353
+ const {
1354
+ trackMinicardClick
1355
+ } = usePersonalizedTemplatesV2Store();
1356
+ const nodeType = computed(() => nodeTypesStore.getNodeType(props.nodeName));
1357
+ const openModal = () => {
1358
+ trackMinicardClick(nodeType.value?.displayName ?? props.nodeName);
1359
+ uiStore.openModalWithData({
1360
+ name: EXPERIMENT_TEMPLATE_RECO_V2_KEY,
1361
+ data: {
1362
+ nodeName: props.nodeName
1363
+ }
1364
+ });
1365
+ };
1366
+ onMounted(async () => {
1367
+ await nodeTypesStore.loadNodeTypesIfNotLoaded();
1368
+ });
1369
+ return (_ctx, _cache) => {
1370
+ return openBlock(), createElementBlock("div", null, [createVNode(unref(N8nCard_default), {
1371
+ class: normalizeClass(_ctx.$style.nodeCard),
1372
+ hoverable: "",
1373
+ onClick: openModal
1374
+ }, {
1375
+ default: withCtx(() => [createBaseVNode("div", {
1376
+ class: normalizeClass(_ctx.$style.emptyStateCardContent)
1377
+ }, [createVNode(NodeIcon_default, {
1378
+ "node-type": nodeType.value,
1379
+ class: normalizeClass(_ctx.$style.nodeIcon),
1380
+ "stroke-width": 1.5
1381
+ }, null, 8, ["node-type", "class"]), createVNode(unref(N8nText_default), {
1382
+ size: "xsmall",
1383
+ class: "mt-xs pl-2xs pr-2xs",
1384
+ bold: true
1385
+ }, {
1386
+ default: withCtx(() => [createTextVNode(toDisplayString(nodeType.value?.displayName), 1)]),
1387
+ _: 1
1388
+ })], 2)]),
1389
+ _: 1
1390
+ }, 8, ["class"])]);
1391
+ };
1392
+ }
1393
+ }); //#endregion
1394
+ //#region src/experiments/templateRecoV2/components/NodeRecommendationCard.vue?vue&type=style&index=0&lang.module.scss
1395
+ nodeCard$1 = "_nodeCard_urxa7_123";
1396
+ nodeIcon$1 = "_nodeIcon_urxa7_133";
1397
+ emptyStateCardContent$2 = "_emptyStateCardContent_urxa7_137";
1398
+ NodeRecommendationCard_vue_vue_type_style_index_0_lang_module_default$1 = {
1399
+ nodeCard: nodeCard$1,
1400
+ nodeIcon: nodeIcon$1,
1401
+ emptyStateCardContent: emptyStateCardContent$2
1402
+ }; //#endregion
1403
+ //#region src/experiments/templateRecoV2/components/NodeRecommendationCard.vue
1404
+ cssModules$5 = {
1405
+ "$style": NodeRecommendationCard_vue_vue_type_style_index_0_lang_module_default$1
1406
+ };
1407
+ NodeRecommendationCard_default$1 = /* @__PURE__ */__plugin_vue_export_helper_default(NodeRecommendationCard_vue_vue_type_script_setup_true_lang_default$1, [["__cssModules", cssModules$5]]); //#endregion
1408
+ //#region src/experiments/templateRecoV2/components/TemplateRecommendationV2.vue?vue&type=script&setup=true&lang.ts
1409
+ _hoisted_1$2 = {
1410
+ key: 0,
1411
+ class: "text-center mt-3xl",
1412
+ "data-test-id": "list-empty-state"
1413
+ };
1414
+ TemplateRecommendationV2_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */defineComponent({
1415
+ __name: "TemplateRecommendationV2",
1416
+ setup(__props) {
1417
+ const templateRecoV2Store = usePersonalizedTemplatesV2Store();
1418
+ const locale = useI18n();
1419
+ return (_ctx, _cache) => {
1420
+ return unref(templateRecoV2Store).nodes.length ? (openBlock(), createElementBlock("div", _hoisted_1$2, [createVNode(unref(N8nHeading_default), {
1421
+ tag: "h2",
1422
+ size: "medium",
1423
+ class: "mb-2xs",
1424
+ color: "text-light"
1425
+ }, {
1426
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(locale).baseText("workflows.templateRecoV2.exploreTemplates")), 1)]),
1427
+ _: 1
1428
+ }), createBaseVNode("div", {
1429
+ class: normalizeClass(_ctx.$style.nodeCardsContainer)
1430
+ }, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(templateRecoV2Store).nodes, node => {
1431
+ return openBlock(), createBlock(NodeRecommendationCard_default$1, {
1432
+ key: node,
1433
+ "node-name": node
1434
+ }, null, 8, ["node-name"]);
1435
+ }), 128))], 2)])) : createCommentVNode("", true);
1436
+ };
1437
+ }
1438
+ }); //#endregion
1439
+ //#region src/experiments/templateRecoV2/components/TemplateRecommendationV2.vue?vue&type=style&index=0&lang.module.scss
1440
+ nodeCardsContainer$1 = "_nodeCardsContainer_ufnvi_123";
1441
+ TemplateRecommendationV2_vue_vue_type_style_index_0_lang_module_default = {
1442
+ nodeCardsContainer: nodeCardsContainer$1
1443
+ }; //#endregion
1444
+ //#region src/experiments/templateRecoV2/components/TemplateRecommendationV2.vue
1445
+ cssModules$4 = {
1446
+ "$style": TemplateRecommendationV2_vue_vue_type_style_index_0_lang_module_default
1447
+ };
1448
+ TemplateRecommendationV2_default = /* @__PURE__ */__plugin_vue_export_helper_default(TemplateRecommendationV2_vue_vue_type_script_setup_true_lang_default, [["__cssModules", cssModules$4]]); //#endregion
1449
+ //#region src/experiments/personalizedTemplatesV3/components/NodeRecommendationCard.vue?vue&type=script&setup=true&lang.ts
1450
+ NodeRecommendationCard_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */defineComponent({
1451
+ __name: "NodeRecommendationCard",
1452
+ props: {
1453
+ nodeName: {}
1454
+ },
1455
+ setup(__props) {
1456
+ const props = __props;
1457
+ const uiStore = useUIStore();
1458
+ const nodeTypesStore = useNodeTypesStore();
1459
+ const {
1460
+ trackPersonalizationCardClick,
1461
+ markTemplateRecommendationInteraction
1462
+ } = usePersonalizedTemplatesV3Store();
1463
+ const nodeType = computed(() => nodeTypesStore.getNodeType(props.nodeName));
1464
+ const openModal = () => {
1465
+ trackPersonalizationCardClick();
1466
+ markTemplateRecommendationInteraction();
1467
+ uiStore.openModalWithData({
1468
+ name: EXPERIMENT_TEMPLATE_RECO_V3_KEY,
1469
+ data: {
1470
+ nodeName: props.nodeName
1471
+ }
1472
+ });
1473
+ };
1474
+ onMounted(async () => {
1475
+ await nodeTypesStore.loadNodeTypesIfNotLoaded();
1476
+ });
1477
+ return (_ctx, _cache) => {
1478
+ return openBlock(), createElementBlock("div", null, [createVNode(unref(N8nCard_default), {
1479
+ class: normalizeClass(_ctx.$style.nodeCard),
1480
+ hoverable: "",
1481
+ onClick: openModal
1482
+ }, {
1483
+ default: withCtx(() => [createBaseVNode("div", {
1484
+ class: normalizeClass(_ctx.$style.emptyStateCardContent)
1485
+ }, [createVNode(NodeIcon_default, {
1486
+ "node-type": nodeType.value,
1487
+ class: normalizeClass(_ctx.$style.nodeIcon),
1488
+ "stroke-width": 1.5
1489
+ }, null, 8, ["node-type", "class"]), createVNode(unref(N8nText_default), {
1490
+ size: "xsmall",
1491
+ class: "mt-xs pl-2xs pr-2xs",
1492
+ bold: true
1493
+ }, {
1494
+ default: withCtx(() => [createTextVNode(toDisplayString(nodeType.value?.displayName), 1)]),
1495
+ _: 1
1496
+ })], 2)]),
1497
+ _: 1
1498
+ }, 8, ["class"])]);
1499
+ };
1500
+ }
1501
+ }); //#endregion
1502
+ //#region src/experiments/personalizedTemplatesV3/components/NodeRecommendationCard.vue?vue&type=style&index=0&lang.module.scss
1503
+ nodeCard = "_nodeCard_urxa7_123";
1504
+ nodeIcon = "_nodeIcon_urxa7_133";
1505
+ emptyStateCardContent$1 = "_emptyStateCardContent_urxa7_137";
1506
+ NodeRecommendationCard_vue_vue_type_style_index_0_lang_module_default = {
1507
+ nodeCard,
1508
+ nodeIcon,
1509
+ emptyStateCardContent: emptyStateCardContent$1
1510
+ }; //#endregion
1511
+ //#region src/experiments/personalizedTemplatesV3/components/NodeRecommendationCard.vue
1512
+ cssModules$3 = {
1513
+ "$style": NodeRecommendationCard_vue_vue_type_style_index_0_lang_module_default
1514
+ };
1515
+ NodeRecommendationCard_default = /* @__PURE__ */__plugin_vue_export_helper_default(NodeRecommendationCard_vue_vue_type_script_setup_true_lang_default, [["__cssModules", cssModules$3]]); //#endregion
1516
+ //#region src/experiments/personalizedTemplatesV3/components/TemplateRecommendationV3.vue?vue&type=script&setup=true&lang.ts
1517
+ _hoisted_1$1 = {
1518
+ key: 0,
1519
+ class: "text-center mt-3xl",
1520
+ "data-test-id": "list-empty-state"
1521
+ };
1522
+ TemplateRecommendationV3_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */defineComponent({
1523
+ __name: "TemplateRecommendationV3",
1524
+ setup(__props) {
1525
+ const personalizedTemplateStore = usePersonalizedTemplatesV3Store();
1526
+ const locale = useI18n();
1527
+ return (_ctx, _cache) => {
1528
+ return unref(personalizedTemplateStore).hasChosenHubSpot ? (openBlock(), createElementBlock("div", _hoisted_1$1, [createVNode(unref(N8nHeading_default), {
1529
+ tag: "h2",
1530
+ size: "medium",
1531
+ class: "mb-2xs",
1532
+ color: "text-light"
1533
+ }, {
1534
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(locale).baseText("experiments.personalizedTemplatesV3.exploreTemplates")), 1)]),
1535
+ _: 1
1536
+ }), createBaseVNode("div", {
1537
+ class: normalizeClass(_ctx.$style.nodeCardsContainer)
1538
+ }, [createVNode(NodeRecommendationCard_default, {
1539
+ "node-name": "n8n-nodes-base.hubspot"
1540
+ })], 2)])) : createCommentVNode("", true);
1541
+ };
1542
+ }
1543
+ }); //#endregion
1544
+ //#region src/experiments/personalizedTemplatesV3/components/TemplateRecommendationV3.vue?vue&type=style&index=0&lang.module.scss
1545
+ nodeCardsContainer = "_nodeCardsContainer_ufnvi_123";
1546
+ TemplateRecommendationV3_vue_vue_type_style_index_0_lang_module_default = {
1547
+ nodeCardsContainer
1548
+ }; //#endregion
1549
+ //#region src/experiments/personalizedTemplatesV3/components/TemplateRecommendationV3.vue
1550
+ cssModules$2 = {
1551
+ "$style": TemplateRecommendationV3_vue_vue_type_style_index_0_lang_module_default
1552
+ };
1553
+ TemplateRecommendationV3_default = /* @__PURE__ */__plugin_vue_export_helper_default(TemplateRecommendationV3_vue_vue_type_script_setup_true_lang_default, [["__cssModules", cssModules$2]]); //#endregion
1554
+ //#region src/experiments/readyToRunWorkflowsV2/components/SimplifiedEmptyLayout.vue?vue&type=script&setup=true&lang.ts
1555
+ SimplifiedEmptyLayout_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */defineComponent({
1556
+ __name: "SimplifiedEmptyLayout",
1557
+ emits: ["click:add"],
1558
+ setup(__props, {
1559
+ emit: __emit
1560
+ }) {
1561
+ const route = useRoute();
1562
+ const i18n = useI18n();
1563
+ const toast = useToast();
1564
+ const usersStore = useUsersStore();
1565
+ const projectsStore = useProjectsStore();
1566
+ const sourceControlStore = useSourceControlStore();
1567
+ const projectPages = useProjectPages();
1568
+ const readyToRunWorkflowsV2Store = useReadyToRunWorkflowsV2Store();
1569
+ const isLoadingReadyToRun = ref(false);
1570
+ const currentUser = computed(() => usersStore.currentUser ?? {});
1571
+ const personalProject = computed(() => projectsStore.personalProject);
1572
+ const readOnlyEnv = computed(() => sourceControlStore.preferences.branchReadOnly);
1573
+ const projectPermissions = computed(() => {
1574
+ return getResourcePermissions(projectsStore.currentProject?.scopes ?? personalProject.value?.scopes);
1575
+ });
1576
+ const emptyListDescription = computed(() => {
1577
+ if (readOnlyEnv.value) return i18n.baseText("workflows.empty.description.readOnlyEnv");else if (!projectPermissions.value.workflow.create) return i18n.baseText("workflows.empty.description.noPermission");else return i18n.baseText("workflows.empty.description");
1578
+ });
1579
+ const showReadyToRunV2Card = computed(() => {
1580
+ return isLoadingReadyToRun.value || readyToRunWorkflowsV2Store.getCardVisibility(projectPermissions.value.workflow.create, readOnlyEnv.value, false);
1581
+ });
1582
+ const handleReadyToRunV2Click = async () => {
1583
+ if (isLoadingReadyToRun.value) return;
1584
+ isLoadingReadyToRun.value = true;
1585
+ const projectId = projectPages.isOverviewSubPage ? personalProject.value?.id : route.params.projectId;
1586
+ try {
1587
+ await readyToRunWorkflowsV2Store.claimCreditsAndOpenWorkflow("card", route.params.folderId, projectId);
1588
+ } catch (error) {
1589
+ isLoadingReadyToRun.value = false;
1590
+ toast.showError(error, i18n.baseText("generic.error"));
1591
+ }
1592
+ };
1593
+ const addWorkflow = () => {
1594
+ emit("click:add");
1595
+ };
1596
+ const emit = __emit;
1597
+ return (_ctx, _cache) => {
1598
+ return openBlock(), createElementBlock("div", {
1599
+ class: normalizeClass(_ctx.$style.simplifiedLayout)
1600
+ }, [createBaseVNode("div", {
1601
+ class: normalizeClass(_ctx.$style.content)
1602
+ }, [createBaseVNode("div", {
1603
+ class: normalizeClass(_ctx.$style.welcome)
1604
+ }, [createVNode(unref(N8nHeading_default), {
1605
+ tag: "h1",
1606
+ size: "2xlarge",
1607
+ class: normalizeClass(_ctx.$style.welcomeTitle)
1608
+ }, {
1609
+ default: withCtx(() => [createTextVNode(toDisplayString(currentUser.value.firstName ? unref(i18n).baseText("workflows.empty.heading", {
1610
+ interpolate: {
1611
+ name: currentUser.value.firstName
1612
+ }
1613
+ }) : unref(i18n).baseText("workflows.empty.heading.userNotSetup")), 1)]),
1614
+ _: 1
1615
+ }, 8, ["class"]), createVNode(unref(N8nText_default), {
1616
+ size: "large",
1617
+ color: "text-base",
1618
+ class: normalizeClass(_ctx.$style.welcomeDescription)
1619
+ }, {
1620
+ default: withCtx(() => [createTextVNode(toDisplayString(emptyListDescription.value), 1)]),
1621
+ _: 1
1622
+ }, 8, ["class"])], 2), !readOnlyEnv.value && projectPermissions.value.workflow.create ? (openBlock(), createElementBlock("div", {
1623
+ key: 0,
1624
+ class: normalizeClass(_ctx.$style.actionsContainer)
1625
+ }, [showReadyToRunV2Card.value ? (openBlock(), createBlock(unref(N8nCard_default), {
1626
+ key: 0,
1627
+ class: normalizeClass([_ctx.$style.actionCard, {
1628
+ [_ctx.$style.loading]: isLoadingReadyToRun.value
1629
+ }]),
1630
+ hoverable: !isLoadingReadyToRun.value,
1631
+ "data-test-id": "ready-to-run-v2-card",
1632
+ onClick: handleReadyToRunV2Click
1633
+ }, {
1634
+ default: withCtx(() => [createBaseVNode("div", {
1635
+ class: normalizeClass(_ctx.$style.cardContent)
1636
+ }, [createVNode(unref(N8nIcon_default), {
1637
+ class: normalizeClass(_ctx.$style.cardIcon),
1638
+ icon: isLoadingReadyToRun.value ? "spinner" : "sparkles",
1639
+ color: "foreground-dark",
1640
+ "stroke-width": 1.5,
1641
+ spin: isLoadingReadyToRun.value
1642
+ }, null, 8, ["class", "icon", "spin"]), createVNode(unref(N8nText_default), {
1643
+ size: "large",
1644
+ class: "mt-xs"
1645
+ }, {
1646
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("workflows.empty.readyToRunV2")), 1)]),
1647
+ _: 1
1648
+ })], 2)]),
1649
+ _: 1
1650
+ }, 8, ["class", "hoverable"])) : createCommentVNode("", true), createVNode(unref(N8nCard_default), {
1651
+ class: normalizeClass(_ctx.$style.actionCard),
1652
+ hoverable: "",
1653
+ "data-test-id": "new-workflow-card",
1654
+ onClick: addWorkflow
1655
+ }, {
1656
+ default: withCtx(() => [createBaseVNode("div", {
1657
+ class: normalizeClass(_ctx.$style.cardContent)
1658
+ }, [createVNode(unref(N8nIcon_default), {
1659
+ class: normalizeClass(_ctx.$style.cardIcon),
1660
+ icon: "file",
1661
+ color: "foreground-dark",
1662
+ "stroke-width": 1.5
1663
+ }, null, 8, ["class"]), createVNode(unref(N8nText_default), {
1664
+ size: "large",
1665
+ class: "mt-xs"
1666
+ }, {
1667
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("workflows.empty.startFromScratch")), 1)]),
1668
+ _: 1
1669
+ })], 2)]),
1670
+ _: 1
1671
+ }, 8, ["class"])], 2)) : createCommentVNode("", true)], 2)], 2);
1672
+ };
1673
+ }
1674
+ }); //#endregion
1675
+ //#region src/experiments/readyToRunWorkflowsV2/components/SimplifiedEmptyLayout.vue?vue&type=style&index=0&lang.module.scss
1676
+ simplifiedLayout = "_simplifiedLayout_pnu6z_123";
1677
+ header = "_header_pnu6z_131";
1678
+ content = "_content_pnu6z_138";
1679
+ welcome = "_welcome_pnu6z_146";
1680
+ welcomeTitle = "_welcomeTitle_pnu6z_150";
1681
+ welcomeDescription = "_welcomeDescription_pnu6z_154";
1682
+ actionsContainer$1 = "_actionsContainer_pnu6z_158";
1683
+ actionCard = "_actionCard_pnu6z_165";
1684
+ cardIcon = "_cardIcon_pnu6z_178";
1685
+ loading = "_loading_pnu6z_181";
1686
+ cardContent = "_cardContent_pnu6z_186";
1687
+ SimplifiedEmptyLayout_vue_vue_type_style_index_0_lang_module_default = {
1688
+ simplifiedLayout,
1689
+ header,
1690
+ content,
1691
+ welcome,
1692
+ welcomeTitle,
1693
+ welcomeDescription,
1694
+ actionsContainer: actionsContainer$1,
1695
+ actionCard,
1696
+ cardIcon,
1697
+ loading,
1698
+ cardContent
1699
+ }; //#endregion
1700
+ //#region src/experiments/readyToRunWorkflowsV2/components/SimplifiedEmptyLayout.vue
1701
+ cssModules$1 = {
1702
+ "$style": SimplifiedEmptyLayout_vue_vue_type_style_index_0_lang_module_default
1703
+ };
1704
+ SimplifiedEmptyLayout_default = /* @__PURE__ */__plugin_vue_export_helper_default(SimplifiedEmptyLayout_vue_vue_type_script_setup_true_lang_default, [["__cssModules", cssModules$1]]); //#endregion
1705
+ //#region src/app/views/WorkflowsView.vue?vue&type=script&setup=true&lang.ts
1706
+ import_debounce = /* @__PURE__ */__toESM(require_debounce());
1707
+ _hoisted_1 = {
1708
+ key: 0
1709
+ };
1710
+ _hoisted_2 = {
1711
+ key: 0
1712
+ };
1713
+ _hoisted_3 = {
1714
+ key: 1
1715
+ };
1716
+ _hoisted_4 = {
1717
+ key: 1
1718
+ };
1719
+ _hoisted_5 = {
1720
+ key: 1
1721
+ };
1722
+ _hoisted_6 = {
1723
+ class: "text-center mt-s",
1724
+ "data-test-id": "list-empty-state"
1725
+ };
1726
+ _hoisted_7 = {
1727
+ key: 0,
1728
+ class: "mb-s"
1729
+ };
1730
+ _hoisted_8 = {
1731
+ class: "mb-s"
1732
+ };
1733
+ _hoisted_9 = {
1734
+ class: "mb-s"
1735
+ };
1736
+ SEARCH_DEBOUNCE_TIME = 300;
1737
+ FILTERS_DEBOUNCE_TIME = 100;
1738
+ WorkflowsView_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */defineComponent({
1739
+ __name: "WorkflowsView",
1740
+ setup(__props) {
1741
+ const StatusFilter = {
1742
+ ALL: "",
1743
+ ACTIVE: "active",
1744
+ DEACTIVATED: "deactivated"
1745
+ };
1746
+ /** Maps sort values from the ResourcesListLayout component to values expected by workflows endpoint */
1747
+ const WORKFLOWS_SORT_MAP = {
1748
+ lastUpdated: "updatedAt:desc",
1749
+ lastCreated: "createdAt:desc",
1750
+ nameAsc: "name:asc",
1751
+ nameDesc: "name:desc"
1752
+ };
1753
+ const i18n = useI18n();
1754
+ const route = useRoute();
1755
+ const router = useRouter();
1756
+ const message = useMessage();
1757
+ const toast = useToast();
1758
+ const folderHelpers = useFolders();
1759
+ const calloutHelpers = useCalloutHelpers();
1760
+ const sourceControlStore = useSourceControlStore();
1761
+ const usersStore = useUsersStore();
1762
+ const workflowsStore = useWorkflowsStore();
1763
+ const settingsStore = useSettingsStore();
1764
+ const projectsStore = useProjectsStore();
1765
+ const telemetry = useTelemetry();
1766
+ const uiStore = useUIStore();
1767
+ const tagsStore = useTagsStore();
1768
+ const foldersStore = useFoldersStore();
1769
+ const usageStore = useUsageStore();
1770
+ const insightsStore = useInsightsStore();
1771
+ const templatesStore = useTemplatesStore();
1772
+ const aiStarterTemplatesStore = useAITemplatesStarterCollectionStore();
1773
+ const personalizedTemplatesStore = usePersonalizedTemplatesStore();
1774
+ const readyToRunWorkflowsStore = useReadyToRunWorkflowsStore();
1775
+ const readyToRunWorkflowsV2Store = useReadyToRunWorkflowsV2Store();
1776
+ const personalizedTemplatesV2Store = usePersonalizedTemplatesV2Store();
1777
+ const personalizedTemplatesV3Store = usePersonalizedTemplatesV3Store();
1778
+ const templatesDataQualityStore = useTemplatesDataQualityStore();
1779
+ const documentTitle = useDocumentTitle();
1780
+ const {
1781
+ callDebounced
1782
+ } = useDebounce();
1783
+ const projectPages = useProjectPages();
1784
+ const loading$1 = ref(true);
1785
+ const breadcrumbsLoading = ref(false);
1786
+ const filters = ref({
1787
+ search: "",
1788
+ homeProject: "",
1789
+ status: StatusFilter.ALL,
1790
+ showArchived: false,
1791
+ tags: []
1792
+ });
1793
+ const workflowListEventBus = createEventBus();
1794
+ const resourcesListLayoutRef = useTemplateRef("resourcesListLayout");
1795
+ const workflowsAndFolders = ref([]);
1796
+ const easyAICalloutVisible = ref(true);
1797
+ const currentPage = ref(1);
1798
+ const pageSize = ref(50);
1799
+ const currentSort = ref("updatedAt:desc");
1800
+ const currentFolderId = ref(null);
1801
+ const showCardsBadge = ref(false);
1802
+ /**
1803
+ * Folder actions
1804
+ * These can appear on the list header, and then they are applied to current folder
1805
+ * or on each folder card, and then they are applied to the clicked folder
1806
+ * 'onlyAvailableOn' is used to specify where the action should be available, if not specified it will be available on both
1807
+ */
1808
+ const folderActions = computed(() => [{
1809
+ label: i18n.baseText("generic.open"),
1810
+ value: FOLDER_LIST_ITEM_ACTIONS.OPEN,
1811
+ disabled: false,
1812
+ onlyAvailableOn: "card"
1813
+ }, {
1814
+ label: i18n.baseText("folders.actions.create"),
1815
+ value: FOLDER_LIST_ITEM_ACTIONS.CREATE,
1816
+ disabled: readOnlyEnv.value || !hasPermissionToCreateFolders.value
1817
+ }, {
1818
+ label: i18n.baseText("folders.actions.create.workflow"),
1819
+ value: FOLDER_LIST_ITEM_ACTIONS.CREATE_WORKFLOW,
1820
+ disabled: readOnlyEnv.value || !hasPermissionToCreateWorkflows.value
1821
+ }, {
1822
+ label: i18n.baseText("generic.rename"),
1823
+ value: FOLDER_LIST_ITEM_ACTIONS.RENAME,
1824
+ disabled: readOnlyEnv.value || !hasPermissionToUpdateFolders.value
1825
+ }, {
1826
+ label: i18n.baseText("folders.actions.moveToFolder"),
1827
+ value: FOLDER_LIST_ITEM_ACTIONS.MOVE,
1828
+ disabled: readOnlyEnv.value || !hasPermissionToUpdateFolders.value
1829
+ }, {
1830
+ label: i18n.baseText("generic.delete"),
1831
+ value: FOLDER_LIST_ITEM_ACTIONS.DELETE,
1832
+ disabled: readOnlyEnv.value || !hasPermissionToDeleteFolders.value
1833
+ }]);
1834
+ const folderCardActions = computed(() => folderActions.value.filter(action => !action.onlyAvailableOn || action.onlyAvailableOn === "card"));
1835
+ const mainBreadcrumbsActions = computed(() => folderActions.value.filter(action => !action.onlyAvailableOn || action.onlyAvailableOn === "mainBreadcrumbs"));
1836
+ const readOnlyEnv = computed(() => sourceControlStore.preferences.branchReadOnly);
1837
+ const currentUser = computed(() => usersStore.currentUser ?? {});
1838
+ const isShareable = computed(() => settingsStore.isEnterpriseFeatureEnabled[EnterpriseEditionFeature.Sharing]);
1839
+ const foldersEnabled = computed(() => {
1840
+ return settingsStore.isFoldersFeatureEnabled;
1841
+ });
1842
+ const teamProjectsEnabled = computed(() => {
1843
+ return projectsStore.isTeamProjectFeatureEnabled;
1844
+ });
1845
+ const mcpEnabled = computed(() => {
1846
+ return settingsStore.isModuleActive("mcp") && settingsStore.moduleSettings.mcp?.mcpAccessEnabled;
1847
+ });
1848
+ const showFolders = computed(() => {
1849
+ return foldersEnabled.value && !projectPages.isOverviewSubPage && !projectPages.isSharedSubPage;
1850
+ });
1851
+ const currentFolder = computed(() => {
1852
+ return currentFolderId.value ? foldersStore.breadcrumbsCache[currentFolderId.value] : null;
1853
+ });
1854
+ const currentFolderParent = computed(() => {
1855
+ return currentFolder.value?.parentFolder ? foldersStore.breadcrumbsCache[currentFolder.value.parentFolder] : null;
1856
+ });
1857
+ const isDragging = computed(() => {
1858
+ return foldersStore.draggedElement !== null;
1859
+ });
1860
+ const isDragNDropEnabled = computed(() => {
1861
+ return !readOnlyEnv.value && hasPermissionToUpdateFolders.value;
1862
+ });
1863
+ const listScrollContainer = computed(() => {
1864
+ return resourcesListLayoutRef.value?.getScrollContainer?.() ?? null;
1865
+ });
1866
+ useAutoScrollOnDrag({
1867
+ isActive: computed(() => isDragging.value && isDragNDropEnabled.value),
1868
+ container: listScrollContainer
1869
+ });
1870
+ const hasPermissionToCreateFolders = computed(() => {
1871
+ if (!currentProject.value) return false;
1872
+ return getResourcePermissions(currentProject.value.scopes).folder.create === true;
1873
+ });
1874
+ const hasPermissionToUpdateFolders = computed(() => {
1875
+ if (!currentProject.value) return false;
1876
+ return getResourcePermissions(currentProject.value.scopes).folder.update === true;
1877
+ });
1878
+ const hasPermissionToDeleteFolders = computed(() => {
1879
+ if (!currentProject.value) return false;
1880
+ return getResourcePermissions(currentProject.value.scopes).folder.delete === true;
1881
+ });
1882
+ const hasPermissionToCreateWorkflows = computed(() => {
1883
+ if (!currentProject.value) return false;
1884
+ return getResourcePermissions(currentProject.value.scopes).workflow.create === true;
1885
+ });
1886
+ const currentProject = computed(() => projectsStore.currentProject);
1887
+ const projectName = computed(() => {
1888
+ if (currentProject.value?.type === ProjectTypes.Personal) return i18n.baseText("projects.menu.personal");
1889
+ return currentProject.value?.name;
1890
+ });
1891
+ const currentParentName = computed(() => {
1892
+ if (currentFolder.value) return currentFolder.value.name;
1893
+ return projectName.value;
1894
+ });
1895
+ const personalProject = computed(() => {
1896
+ return projectsStore.personalProject;
1897
+ });
1898
+ const workflowListResources = computed(() => {
1899
+ return (workflowsAndFolders.value || []).map(resource => {
1900
+ if (resource.resource === "folder") return {
1901
+ resourceType: "folder",
1902
+ id: resource.id,
1903
+ name: resource.name,
1904
+ createdAt: resource.createdAt.toString(),
1905
+ updatedAt: resource.updatedAt.toString(),
1906
+ homeProject: resource.homeProject,
1907
+ workflowCount: resource.workflowCount,
1908
+ subFolderCount: resource.subFolderCount,
1909
+ parentFolder: resource.parentFolder
1910
+ };else return {
1911
+ resourceType: "workflow",
1912
+ id: resource.id,
1913
+ name: resource.name,
1914
+ description: resource.description,
1915
+ active: resource.active ?? false,
1916
+ isArchived: resource.isArchived,
1917
+ updatedAt: resource.updatedAt.toString(),
1918
+ createdAt: resource.createdAt.toString(),
1919
+ homeProject: resource.homeProject,
1920
+ scopes: resource.scopes,
1921
+ sharedWithProjects: resource.sharedWithProjects,
1922
+ readOnly: !getResourcePermissions(resource.scopes).workflow.update,
1923
+ tags: resource.tags,
1924
+ parentFolder: resource.parentFolder,
1925
+ settings: resource.settings
1926
+ };
1927
+ });
1928
+ });
1929
+ const statusFilterOptions = computed(() => [{
1930
+ label: i18n.baseText("workflows.filters.status.all"),
1931
+ value: StatusFilter.ALL
1932
+ }, {
1933
+ label: i18n.baseText("workflows.filters.status.active"),
1934
+ value: StatusFilter.ACTIVE
1935
+ }, {
1936
+ label: i18n.baseText("workflows.filters.status.deactivated"),
1937
+ value: StatusFilter.DEACTIVATED
1938
+ }]);
1939
+ const showEasyAIWorkflowCallout = computed(() => {
1940
+ return !usersStore.isEasyAIWorkflowOnboardingDone;
1941
+ });
1942
+ const templatesCardEnabled = computed(() => {
1943
+ return isExtraTemplateLinksExperimentEnabled() && settingsStore.isTemplatesEnabled;
1944
+ });
1945
+ const projectPermissions = computed(() => {
1946
+ return getResourcePermissions(projectsStore.currentProject?.scopes ?? personalProject.value?.scopes);
1947
+ });
1948
+ const showReadyToRunWorkflowsCallout = computed(() => {
1949
+ const isEnabled = readyToRunWorkflowsStore.isFeatureEnabled;
1950
+ const isDismissed = readyToRunWorkflowsStore.isCalloutDismissed;
1951
+ return isEnabled && !isDismissed && !loading$1.value && !readOnlyEnv.value && (projectPages.isOverviewSubPage || hasPermissionToCreateFolders.value && hasPermissionToCreateWorkflows.value);
1952
+ });
1953
+ const emptyListDescription = computed(() => {
1954
+ if (readOnlyEnv.value) return i18n.baseText("workflows.empty.description.readOnlyEnv");else if (!projectPermissions.value.workflow.create) return i18n.baseText("workflows.empty.description.noPermission");else return i18n.baseText("workflows.empty.description");
1955
+ });
1956
+ const hasFilters = computed(() => {
1957
+ return !!(filters.value.search || filters.value.status !== StatusFilter.ALL || filters.value.showArchived || filters.value.tags.length);
1958
+ });
1959
+ const showArchivedOnlyHint = computed(() => {
1960
+ return workflowsAndFolders.value.length === 0 && !hasFilters.value && !filters.value.showArchived && foldersStore.totalWorkflowCount > 0;
1961
+ });
1962
+ const isSelfHostedDeployment = computed(() => settingsStore.deploymentType === "default");
1963
+ const canUserRegisterCommunityPlus = computed(() => getResourcePermissions(usersStore.currentUser?.globalScopes).community.register);
1964
+ const showRegisteredCommunityCTA = computed(() => isSelfHostedDeployment.value && !foldersEnabled.value && canUserRegisterCommunityPlus.value);
1965
+ const showAIStarterCollectionCallout = computed(() => {
1966
+ return !loading$1.value && aiStarterTemplatesStore.isFeatureEnabled && !aiStarterTemplatesStore.calloutDismissed && !readOnlyEnv.value && (projectPages.isOverviewSubPage || hasPermissionToCreateFolders.value && hasPermissionToCreateWorkflows.value);
1967
+ });
1968
+ const showPrebuiltAgentsCallout = computed(() => {
1969
+ return !loading$1.value && calloutHelpers.isPreBuiltAgentsCalloutVisible.value && !calloutHelpers.isCalloutDismissed("preBuiltAgentsModalCallout") && !readOnlyEnv.value && (projectPages.isOverviewSubPage || hasPermissionToCreateFolders.value && hasPermissionToCreateWorkflows.value);
1970
+ });
1971
+ const showPersonalizedTemplates = computed(() => !loading$1.value && personalizedTemplatesStore.isFeatureEnabled());
1972
+ const shouldUseSimplifiedLayout = computed(() => {
1973
+ return readyToRunWorkflowsV2Store.getSimplifiedLayoutVisibility(route, loading$1.value);
1974
+ });
1975
+ const hasActiveCallouts = computed(() => {
1976
+ return showPrebuiltAgentsCallout.value || showAIStarterCollectionCallout.value || showPersonalizedTemplates.value || showReadyToRunWorkflowsCallout.value;
1977
+ });
1978
+ /**
1979
+ * WATCHERS, STORE SUBSCRIPTIONS AND EVENT BUS HANDLERS
1980
+ */
1981
+ watch([() => route.params?.projectId, () => route.name], async () => {
1982
+ loading$1.value = true;
1983
+ });
1984
+ watch(() => route.params?.folderId, async newVal => {
1985
+ currentFolderId.value = newVal;
1986
+ filters.value.search = "";
1987
+ saveFiltersOnQueryString();
1988
+ await Promise.all([fetchWorkflows(), foldersStore.fetchTotalWorkflowsAndFoldersCount(route.params.projectId, currentFolderId.value ?? void 0)]);
1989
+ });
1990
+ sourceControlStore.$onAction(({
1991
+ name: name$1,
1992
+ after
1993
+ }) => {
1994
+ if (name$1 !== "pullWorkfolder") return;
1995
+ after(async () => await initialize());
1996
+ });
1997
+ const refreshWorkflows = async () => {
1998
+ await Promise.all([fetchWorkflows(), foldersStore.fetchTotalWorkflowsAndFoldersCount(route.params.projectId, currentFolderId.value ?? void 0)]);
1999
+ };
2000
+ const onFolderDeleted = async payload => {
2001
+ const folderInfo = foldersStore.getCachedFolder(payload.folderId);
2002
+ foldersStore.deleteFoldersFromCache([payload.folderId, folderInfo?.parentFolder ?? ""]);
2003
+ const nextFolderId = currentFolderId.value === payload.folderId ? folderInfo?.parentFolder ?? null : currentFolderId.value;
2004
+ await foldersStore.fetchTotalWorkflowsAndFoldersCount(route.params.projectId, nextFolderId ?? void 0);
2005
+ if (currentFolderId.value === payload.folderId) router.push({
2006
+ name: VIEWS.PROJECTS_FOLDERS,
2007
+ params: {
2008
+ projectId: route.params.projectId,
2009
+ folderId: folderInfo?.parentFolder ?? ""
2010
+ }
2011
+ });else await fetchWorkflows();
2012
+ telemetry.track("User deleted folder", {
2013
+ folder_id: payload.folderId,
2014
+ deleted_sub_folders: payload.folderCount,
2015
+ deleted_sub_workflows: payload.workflowCount
2016
+ });
2017
+ };
2018
+ const showInsights = computed(() => {
2019
+ return projectPages.isOverviewSubPage && insightsStore.isSummaryEnabled && (workflowListResources.value.length > 0 || !personalizedTemplatesV2Store.isFeatureEnabled() && !personalizedTemplatesV3Store.isFeatureEnabled());
2020
+ });
2021
+ const showTemplateRecommendationV2 = computed(() => {
2022
+ return personalizedTemplatesV2Store.isFeatureEnabled() && !loading$1.value;
2023
+ });
2024
+ const showTemplateRecommendationV3 = computed(() => {
2025
+ return personalizedTemplatesV3Store.isFeatureEnabled() && !loading$1.value;
2026
+ });
2027
+ /**
2028
+ * LIFE-CYCLE HOOKS
2029
+ */
2030
+ onMounted(async () => {
2031
+ documentTitle.set(i18n.baseText("workflows.heading"));
2032
+ usersStore.showPersonalizationSurvey();
2033
+ workflowListEventBus.on("resource-moved", fetchWorkflows);
2034
+ workflowListEventBus.on("workflow-duplicated", fetchWorkflows);
2035
+ workflowListEventBus.on("folder-deleted", onFolderDeleted);
2036
+ workflowListEventBus.on("folder-moved", moveFolder);
2037
+ workflowListEventBus.on("folder-transferred", onFolderTransferred);
2038
+ workflowListEventBus.on("workflow-moved", onWorkflowMoved);
2039
+ workflowListEventBus.on("workflow-transferred", onWorkflowTransferred);
2040
+ });
2041
+ onBeforeUnmount(() => {
2042
+ workflowListEventBus.off("resource-moved", fetchWorkflows);
2043
+ workflowListEventBus.off("workflow-duplicated", fetchWorkflows);
2044
+ workflowListEventBus.off("folder-deleted", onFolderDeleted);
2045
+ workflowListEventBus.off("folder-moved", moveFolder);
2046
+ workflowListEventBus.off("folder-transferred", onFolderTransferred);
2047
+ workflowListEventBus.off("workflow-moved", onWorkflowMoved);
2048
+ workflowListEventBus.off("workflow-transferred", onWorkflowTransferred);
2049
+ });
2050
+ /**
2051
+ * METHODS
2052
+ */
2053
+ const initialize = async () => {
2054
+ loading$1.value = true;
2055
+ await setFiltersFromQueryString();
2056
+ currentFolderId.value = route.params.folderId;
2057
+ const [, resourcesPage] = await Promise.all([usersStore.fetchUsers(), fetchWorkflows(), workflowsStore.fetchActiveWorkflows(), usageStore.getLicenseInfo(), foldersStore.fetchTotalWorkflowsAndFoldersCount(route.params.projectId, currentFolderId.value ?? void 0)]);
2058
+ breadcrumbsLoading.value = false;
2059
+ workflowsAndFolders.value = resourcesPage;
2060
+ loading$1.value = false;
2061
+ };
2062
+ /**
2063
+ * Fetches:
2064
+ * - Current workflows and folders page
2065
+ * - Total count of workflows and folders in the current project
2066
+ * - Path to the current folder (if not cached)
2067
+ */
2068
+ const fetchWorkflows = async () => {
2069
+ const delayedLoading = (0, import_debounce.default)(() => {
2070
+ loading$1.value = true;
2071
+ }, 300);
2072
+ const routeProjectId = route.params?.projectId;
2073
+ const homeProjectFilter = filters.value.homeProject || void 0;
2074
+ const parentFolder = route.params?.folderId || void 0;
2075
+ const tags = filters.value.tags.length ? filters.value.tags.map(tagId => tagsStore.tagsById[tagId]?.name) : [];
2076
+ const activeFilter = filters.value.status === StatusFilter.ALL ? void 0 : filters.value.status === StatusFilter.ACTIVE;
2077
+ const archivedFilter = filters.value.showArchived ? void 0 : false;
2078
+ const fetchFolders = showFolders.value && !tags.length && activeFilter === void 0;
2079
+ try {
2080
+ const fetchedResources = await workflowsStore.fetchWorkflowsPage(routeProjectId ?? homeProjectFilter, currentPage.value, pageSize.value, currentSort.value, {
2081
+ query: filters.value.search || void 0,
2082
+ active: activeFilter,
2083
+ isArchived: archivedFilter,
2084
+ tags: tags.length ? tags : void 0,
2085
+ parentFolderId: getParentFolderId(parentFolder)
2086
+ }, fetchFolders, projectPages.isSharedSubPage);
2087
+ foldersStore.cacheFolders(fetchedResources.filter(resource => resource.resource === "folder").map(r => ({
2088
+ id: r.id,
2089
+ name: r.name,
2090
+ parentFolder: r.parentFolder?.id
2091
+ })));
2092
+ const isCurrentFolderCached = foldersStore.breadcrumbsCache[parentFolder ?? ""] !== void 0;
2093
+ if (parentFolder && !isCurrentFolderCached && routeProjectId) {
2094
+ breadcrumbsLoading.value = true;
2095
+ await foldersStore.getFolderPath(routeProjectId, parentFolder);
2096
+ breadcrumbsLoading.value = false;
2097
+ }
2098
+ workflowsAndFolders.value = fetchedResources;
2099
+ showCardsBadge.value = projectPages.isOverviewSubPage || projectPages.isSharedSubPage || filters.value.search !== "";
2100
+ return fetchedResources;
2101
+ } catch (error) {
2102
+ toast.showError(error, i18n.baseText("workflows.list.error.fetching"));
2103
+ router.push({
2104
+ name: VIEWS.PROJECTS_FOLDERS,
2105
+ params: {
2106
+ projectId: routeProjectId
2107
+ }
2108
+ });
2109
+ return [];
2110
+ } finally {
2111
+ delayedLoading.cancel();
2112
+ loading$1.value = false;
2113
+ if (breadcrumbsLoading.value) breadcrumbsLoading.value = false;
2114
+ }
2115
+ };
2116
+ /**
2117
+ * Get parent folder id for filtering requests
2118
+ */
2119
+ const getParentFolderId = routeId => {
2120
+ if (routeId !== null && routeId !== void 0) return routeId;
2121
+ if (projectPages.isOverviewSubPage || projectPages.isSharedSubPage || filters?.value.search) return;
2122
+ return "0";
2123
+ };
2124
+ const onFiltersUpdated = async () => {
2125
+ currentPage.value = 1;
2126
+ saveFiltersOnQueryString();
2127
+ if (!loading$1.value) await callDebounced(fetchWorkflows, {
2128
+ debounceTime: FILTERS_DEBOUNCE_TIME,
2129
+ trailing: true
2130
+ });
2131
+ };
2132
+ const onSearchUpdated = async search => {
2133
+ currentPage.value = 1;
2134
+ saveFiltersOnQueryString();
2135
+ if (search) await callDebounced(fetchWorkflows, {
2136
+ debounceTime: SEARCH_DEBOUNCE_TIME,
2137
+ trailing: true
2138
+ });else await fetchWorkflows();
2139
+ };
2140
+ const setPaginationAndSort = async payload => {
2141
+ if (payload.page) currentPage.value = payload.page;
2142
+ if (payload.pageSize) pageSize.value = payload.pageSize;
2143
+ if (payload.sort) currentSort.value = WORKFLOWS_SORT_MAP[payload.sort] ?? "updatedAt:desc";
2144
+ if (!loading$1.value) await callDebounced(fetchWorkflows, {
2145
+ debounceTime: FILTERS_DEBOUNCE_TIME,
2146
+ trailing: true
2147
+ });
2148
+ };
2149
+ const onClickTag = async tagId => {
2150
+ if (!filters.value.tags.includes(tagId)) {
2151
+ filters.value.tags.push(tagId);
2152
+ currentPage.value = 1;
2153
+ saveFiltersOnQueryString();
2154
+ await fetchWorkflows();
2155
+ }
2156
+ };
2157
+ const saveFiltersOnQueryString = () => {
2158
+ const currentQuery = {
2159
+ ...route.query
2160
+ };
2161
+ if (filters.value.search) currentQuery.search = filters.value.search;else delete currentQuery.search;
2162
+ if (filters.value.status !== StatusFilter.ALL) currentQuery.status = (filters.value.status === StatusFilter.ACTIVE).toString();else delete currentQuery.status;
2163
+ if (filters.value.showArchived) currentQuery.showArchived = "true";else delete currentQuery.showArchived;
2164
+ if (filters.value.tags.length) currentQuery.tags = filters.value.tags.join(",");else delete currentQuery.tags;
2165
+ if (filters.value.homeProject) currentQuery.homeProject = filters.value.homeProject;else delete currentQuery.homeProject;
2166
+ router.replace({
2167
+ query: Object.keys(currentQuery).length ? currentQuery : void 0
2168
+ });
2169
+ };
2170
+ const setFiltersFromQueryString = async () => {
2171
+ const newQuery = {
2172
+ ...route.query
2173
+ };
2174
+ const {
2175
+ tags,
2176
+ status,
2177
+ search,
2178
+ homeProject,
2179
+ sort,
2180
+ showArchived
2181
+ } = route.query ?? {};
2182
+ const isValidString = value => typeof value === "string" && value.trim().length > 0;
2183
+ if (isValidString(homeProject)) {
2184
+ await projectsStore.getAvailableProjects();
2185
+ if (isValidProjectId(homeProject)) {
2186
+ newQuery.homeProject = homeProject;
2187
+ filters.value.homeProject = homeProject;
2188
+ } else delete newQuery.homeProject;
2189
+ } else delete newQuery.homeProject;
2190
+ if (isValidString(search)) {
2191
+ newQuery.search = search;
2192
+ filters.value.search = search;
2193
+ } else delete newQuery.search;
2194
+ if (isValidString(tags)) {
2195
+ await tagsStore.fetchAll();
2196
+ const validTags = tags.split(",").filter(tag => tagsStore.allTags.map(t => t.id).includes(tag));
2197
+ if (validTags.length) {
2198
+ newQuery.tags = validTags.join(",");
2199
+ filters.value.tags = validTags;
2200
+ } else delete newQuery.tags;
2201
+ } else delete newQuery.tags;
2202
+ if (isValidString(status)) {
2203
+ newQuery.status = status;
2204
+ filters.value.status = status === "true" ? StatusFilter.ACTIVE : StatusFilter.DEACTIVATED;
2205
+ } else delete newQuery.status;
2206
+ if (isValidString(sort)) {
2207
+ const newSort = WORKFLOWS_SORT_MAP[sort] ?? "updatedAt:desc";
2208
+ newQuery.sort = sort;
2209
+ currentSort.value = newSort;
2210
+ } else delete newQuery.sort;
2211
+ if (isValidString(showArchived)) {
2212
+ newQuery.showArchived = showArchived;
2213
+ filters.value.showArchived = showArchived === "true";
2214
+ } else {
2215
+ delete newQuery.showArchived;
2216
+ filters.value.showArchived = false;
2217
+ }
2218
+ router.replace({
2219
+ query: newQuery
2220
+ });
2221
+ };
2222
+ const addWorkflow = () => {
2223
+ uiStore.nodeViewInitialized = false;
2224
+ router.push({
2225
+ name: VIEWS.NEW_WORKFLOW,
2226
+ query: {
2227
+ projectId: route.params?.projectId,
2228
+ parentFolderId: route.params?.folderId
2229
+ }
2230
+ });
2231
+ telemetry.track("User clicked add workflow button", {
2232
+ source: "Workflows list"
2233
+ });
2234
+ trackEmptyCardClick("blank");
2235
+ };
2236
+ const openTemplatesRepository = async () => {
2237
+ trackTemplatesClick(TemplateClickSource.emptyInstanceCard);
2238
+ if (templatesStore.hasCustomTemplatesHost) {
2239
+ await router.push({
2240
+ name: VIEWS.TEMPLATES
2241
+ });
2242
+ return;
2243
+ }
2244
+ if (templatesDataQualityStore.isFeatureEnabled()) {
2245
+ uiStore.openModal(EXPERIMENT_TEMPLATES_DATA_QUALITY_KEY);
2246
+ return;
2247
+ }
2248
+ window.open(templatesStore.websiteTemplateRepositoryURL, "_blank");
2249
+ };
2250
+ const trackEmptyCardClick = option => {
2251
+ telemetry.track("User clicked empty page option", {
2252
+ option
2253
+ });
2254
+ };
2255
+ function isValidProjectId(projectId) {
2256
+ return projectsStore.availableProjects.some(project => project.id === projectId);
2257
+ }
2258
+ const createAIStarterWorkflows = async source => {
2259
+ try {
2260
+ const projectId = projectPages.isOverviewSubPage ? personalProject.value?.id : route.params.projectId;
2261
+ if (typeof projectId !== "string") {
2262
+ toast.showError(/* @__PURE__ */new Error(), i18n.baseText("workflows.ai.starter.collection.error"));
2263
+ return;
2264
+ }
2265
+ const newFolder = await aiStarterTemplatesStore.createStarterWorkflows(projectId, currentFolderId.value ?? void 0);
2266
+ if (projectPages.isOverviewSubPage) await router.push({
2267
+ name: VIEWS.PROJECTS_FOLDERS,
2268
+ params: {
2269
+ projectId,
2270
+ folderId: newFolder.id
2271
+ }
2272
+ });else workflowsAndFolders.value.unshift({
2273
+ id: newFolder.id,
2274
+ name: newFolder.name,
2275
+ resource: "folder",
2276
+ createdAt: newFolder.createdAt,
2277
+ updatedAt: newFolder.updatedAt,
2278
+ subFolderCount: 0,
2279
+ workflowCount: 3,
2280
+ parentFolder: newFolder.parentFolder
2281
+ });
2282
+ aiStarterTemplatesStore.trackUserCreatedStarterCollection(source);
2283
+ } catch (error) {
2284
+ toast.showError(error, i18n.baseText("workflows.ai.starter.collection.error"));
2285
+ return;
2286
+ }
2287
+ };
2288
+ const openPrebuiltAgentsModal = source => {
2289
+ calloutHelpers.openPreBuiltAgentsModal(source);
2290
+ };
2291
+ const handleCreateReadyToRunWorkflows = async source => {
2292
+ try {
2293
+ const projectId = projectPages.isOverviewSubPage ? personalProject.value?.id : route.params.projectId;
2294
+ if (typeof projectId !== "string") {
2295
+ toast.showError(/* @__PURE__ */new Error(), i18n.baseText("workflows.readyToRunWorkflows.error"));
2296
+ return;
2297
+ }
2298
+ const newFolder = await readyToRunWorkflowsStore.createWorkflows(projectId, currentFolderId.value ?? void 0);
2299
+ readyToRunWorkflowsStore.trackCreateWorkflows(source);
2300
+ if (projectPages.isOverviewSubPage) await router.push({
2301
+ name: VIEWS.PROJECTS_FOLDERS,
2302
+ params: {
2303
+ projectId,
2304
+ folderId: newFolder.id
2305
+ }
2306
+ });else workflowsAndFolders.value.unshift({
2307
+ id: newFolder.id,
2308
+ name: newFolder.name,
2309
+ resource: "folder",
2310
+ createdAt: newFolder.createdAt,
2311
+ updatedAt: newFolder.updatedAt,
2312
+ subFolderCount: 0,
2313
+ workflowCount: 4,
2314
+ parentFolder: newFolder.parentFolder
2315
+ });
2316
+ } catch (error) {
2317
+ toast.showError(error, i18n.baseText("workflows.readyToRunWorkflows.error"));
2318
+ return;
2319
+ }
2320
+ };
2321
+ const dismissStarterCollectionCallout = () => {
2322
+ aiStarterTemplatesStore.dismissCallout();
2323
+ aiStarterTemplatesStore.trackUserDismissedCallout();
2324
+ };
2325
+ const dismissEasyAICallout = () => {
2326
+ easyAICalloutVisible.value = false;
2327
+ };
2328
+ const dismissPreBuiltAgentsCallout = () => {
2329
+ calloutHelpers.dismissCallout("preBuiltAgentsModalCallout");
2330
+ };
2331
+ const openAIWorkflow = async source => {
2332
+ dismissEasyAICallout();
2333
+ telemetry.track("User clicked test AI workflow", {
2334
+ source
2335
+ });
2336
+ const easyAiWorkflowJson = getEasyAiWorkflowJson();
2337
+ await router.push({
2338
+ name: VIEWS.TEMPLATE_IMPORT,
2339
+ params: {
2340
+ id: easyAiWorkflowJson.meta.templateId
2341
+ },
2342
+ query: {
2343
+ fromJson: "true",
2344
+ parentFolderId: route.params.folderId
2345
+ }
2346
+ });
2347
+ };
2348
+ const onShowArchived = async () => {
2349
+ filters.value.showArchived = true;
2350
+ await onFiltersUpdated();
2351
+ };
2352
+ const handleDismissReadyToRunCallout = () => {
2353
+ readyToRunWorkflowsStore.dismissCallout();
2354
+ readyToRunWorkflowsStore.trackDismissCallout();
2355
+ };
2356
+ const onWorkflowActiveToggle = async data => {
2357
+ const workflow = workflowsAndFolders.value.find(w => w.id === data.id);
2358
+ if (!workflow) return;
2359
+ workflow.active = data.active;
2360
+ try {
2361
+ const updatedWorkflow = await workflowsStore.fetchWorkflow(data.id);
2362
+ if (updatedWorkflow.settings) workflow.settings = updatedWorkflow.settings;
2363
+ } catch (error) {
2364
+ toast.showError(error, i18n.baseText("workflows.list.error.fetching.one"));
2365
+ }
2366
+ };
2367
+ const getFolderListItem = folderId => {
2368
+ return workflowsAndFolders.value.find(resource => resource.resource === "folder" && resource.id === folderId);
2369
+ };
2370
+ const getFolderContent = async folderId => {
2371
+ const folderListItem = getFolderListItem(folderId);
2372
+ if (folderListItem) return {
2373
+ workflowCount: folderListItem.workflowCount,
2374
+ subFolderCount: folderListItem.subFolderCount
2375
+ };
2376
+ try {
2377
+ const content$1 = await foldersStore.fetchFolderContent(currentProject.value?.id ?? "", folderId);
2378
+ return {
2379
+ workflowCount: content$1.totalWorkflows,
2380
+ subFolderCount: content$1.totalSubFolders
2381
+ };
2382
+ } catch (error) {
2383
+ toast.showMessage({
2384
+ title: i18n.baseText("folders.delete.error.message"),
2385
+ message: i18n.baseText("folders.not.found.message"),
2386
+ type: "error"
2387
+ });
2388
+ return {
2389
+ workflowCount: 0,
2390
+ subFolderCount: 0
2391
+ };
2392
+ }
2393
+ };
2394
+ const onFolderCardDrop = async event => {
2395
+ const {
2396
+ draggedResource,
2397
+ dropTarget
2398
+ } = folderHelpers.handleDrop(event);
2399
+ if (!draggedResource || !dropTarget) return;
2400
+ await moveResourceOnDrop(draggedResource, dropTarget);
2401
+ };
2402
+ const onBreadCrumbsItemDrop = async item => {
2403
+ if (!foldersStore.draggedElement) return;
2404
+ await moveResourceOnDrop({
2405
+ id: foldersStore.draggedElement.id,
2406
+ type: foldersStore.draggedElement.type,
2407
+ name: foldersStore.draggedElement.name
2408
+ }, {
2409
+ id: item.id,
2410
+ type: "folder",
2411
+ name: item.label
2412
+ });
2413
+ folderHelpers.onDragEnd();
2414
+ };
2415
+ const moveFolderToProjectRoot = async (id, name$1) => {
2416
+ if (!foldersStore.draggedElement) return;
2417
+ await moveResourceOnDrop({
2418
+ id: foldersStore.draggedElement.id,
2419
+ type: foldersStore.draggedElement.type,
2420
+ name: foldersStore.draggedElement.name
2421
+ }, {
2422
+ id,
2423
+ type: "project",
2424
+ name: name$1
2425
+ });
2426
+ folderHelpers.onDragEnd();
2427
+ };
2428
+ /**
2429
+ * Perform resource move on drop, also handles toast messages and updating the UI
2430
+ * @param draggedResource
2431
+ * @param dropTarget
2432
+ */
2433
+ const moveResourceOnDrop = async (draggedResource, dropTarget) => {
2434
+ if (draggedResource.type === "folder") {
2435
+ await moveFolder({
2436
+ folder: {
2437
+ id: draggedResource.id,
2438
+ name: draggedResource.name
2439
+ },
2440
+ newParent: {
2441
+ id: dropTarget.id,
2442
+ name: dropTarget.name,
2443
+ type: dropTarget.type
2444
+ },
2445
+ options: {
2446
+ skipFetch: true,
2447
+ skipNavigation: true
2448
+ }
2449
+ });
2450
+ workflowsAndFolders.value = workflowsAndFolders.value.filter(folder => folder.id !== draggedResource.id);
2451
+ const targetFolder = getFolderListItem(dropTarget.id);
2452
+ if (targetFolder) targetFolder.subFolderCount += 1;
2453
+ } else if (draggedResource.type === "workflow") {
2454
+ await onWorkflowMoved({
2455
+ workflow: {
2456
+ id: draggedResource.id,
2457
+ name: draggedResource.name,
2458
+ oldParentId: currentFolderId.value ?? ""
2459
+ },
2460
+ newParent: {
2461
+ id: dropTarget.id,
2462
+ name: dropTarget.name,
2463
+ type: dropTarget.type
2464
+ },
2465
+ options: {
2466
+ skipFetch: true
2467
+ }
2468
+ });
2469
+ workflowsAndFolders.value = workflowsAndFolders.value.filter(workflow => workflow.id !== draggedResource.id);
2470
+ const targetFolder = getFolderListItem(dropTarget.id);
2471
+ if (targetFolder) targetFolder.workflowCount += 1;
2472
+ }
2473
+ };
2474
+ const onBreadcrumbItemClick = item => {
2475
+ if (item.href) {
2476
+ loading$1.value = true;
2477
+ router.push(item.href).then(() => {
2478
+ currentFolderId.value = item.id;
2479
+ loading$1.value = false;
2480
+ }).catch(error => {
2481
+ toast.showError(error, i18n.baseText("folders.open.error.title"));
2482
+ });
2483
+ }
2484
+ };
2485
+ const onBreadCrumbsAction = async action => {
2486
+ switch (action) {
2487
+ case FOLDER_LIST_ITEM_ACTIONS.CREATE:
2488
+ if (!route.params.projectId) return;
2489
+ const currentParent = currentFolder.value?.name || projectName.value;
2490
+ if (!currentParent) return;
2491
+ await createFolder({
2492
+ id: route.params.folderId ?? "-1",
2493
+ name: currentParent,
2494
+ type: currentFolder.value ? "folder" : "project"
2495
+ });
2496
+ break;
2497
+ case FOLDER_LIST_ITEM_ACTIONS.CREATE_WORKFLOW:
2498
+ addWorkflow();
2499
+ break;
2500
+ case FOLDER_LIST_ITEM_ACTIONS.DELETE:
2501
+ if (!route.params.folderId) return;
2502
+ const content$1 = await getFolderContent(route.params.folderId);
2503
+ await deleteFolder(route.params.folderId, content$1.workflowCount, content$1.subFolderCount);
2504
+ break;
2505
+ case FOLDER_LIST_ITEM_ACTIONS.RENAME:
2506
+ onNameToggle();
2507
+ break;
2508
+ case FOLDER_LIST_ITEM_ACTIONS.MOVE:
2509
+ if (!currentFolder.value) return;
2510
+ uiStore.openMoveToFolderModal("folder", {
2511
+ id: currentFolder.value?.id,
2512
+ name: currentFolder.value?.name,
2513
+ parentFolderId: currentFolder.value?.parentFolder
2514
+ }, workflowListEventBus);
2515
+ break;
2516
+ default:
2517
+ break;
2518
+ }
2519
+ };
2520
+ const onFolderCardAction = async payload => {
2521
+ const clickedFolder = foldersStore.getCachedFolder(payload.folderId);
2522
+ if (!clickedFolder) return;
2523
+ switch (payload.action) {
2524
+ case FOLDER_LIST_ITEM_ACTIONS.CREATE:
2525
+ await createFolder({
2526
+ id: clickedFolder.id,
2527
+ name: clickedFolder.name,
2528
+ type: "folder"
2529
+ }, {
2530
+ openAfterCreate: true
2531
+ });
2532
+ break;
2533
+ case FOLDER_LIST_ITEM_ACTIONS.CREATE_WORKFLOW:
2534
+ currentFolderId.value = clickedFolder.id;
2535
+ router.push({
2536
+ name: VIEWS.NEW_WORKFLOW,
2537
+ query: {
2538
+ projectId: route.params?.projectId,
2539
+ parentFolderId: clickedFolder.id
2540
+ }
2541
+ });
2542
+ break;
2543
+ case FOLDER_LIST_ITEM_ACTIONS.DELETE:
2544
+ {
2545
+ const content$1 = await getFolderContent(clickedFolder.id);
2546
+ await deleteFolder(clickedFolder.id, content$1.workflowCount, content$1.subFolderCount);
2547
+ break;
2548
+ }
2549
+ case FOLDER_LIST_ITEM_ACTIONS.RENAME:
2550
+ await renameFolder(clickedFolder.id);
2551
+ break;
2552
+ case FOLDER_LIST_ITEM_ACTIONS.MOVE:
2553
+ uiStore.openMoveToFolderModal("folder", {
2554
+ id: clickedFolder.id,
2555
+ name: clickedFolder.name,
2556
+ parentFolderId: clickedFolder.parentFolder
2557
+ }, workflowListEventBus);
2558
+ break;
2559
+ default:
2560
+ break;
2561
+ }
2562
+ };
2563
+ const createFolder = async (parent, options = {
2564
+ openAfterCreate: false
2565
+ }) => {
2566
+ const promptResponse = await message.prompt(i18n.baseText("folders.add.to.parent.message", {
2567
+ interpolate: {
2568
+ parent: parent.name
2569
+ }
2570
+ }), {
2571
+ confirmButtonText: i18n.baseText("generic.create"),
2572
+ cancelButtonText: i18n.baseText("generic.cancel"),
2573
+ inputValidator: folderHelpers.validateFolderName,
2574
+ customClass: "add-folder-modal"
2575
+ });
2576
+ if (promptResponse.action === "confirm") {
2577
+ const folderName = promptResponse.value;
2578
+ try {
2579
+ const newFolder = await foldersStore.createFolder(folderName, route.params.projectId, parent.type === "folder" ? parent.id : void 0);
2580
+ const newFolderURL = router.resolve({
2581
+ name: VIEWS.PROJECTS_FOLDERS,
2582
+ params: {
2583
+ projectId: route.params.projectId,
2584
+ folderId: newFolder.id
2585
+ }
2586
+ }).href;
2587
+ toast.showToast({
2588
+ title: i18n.baseText("folders.add.success.title"),
2589
+ message: i18n.baseText("folders.add.success.message", {
2590
+ interpolate: {
2591
+ link: newFolderURL,
2592
+ folderName: newFolder.name
2593
+ }
2594
+ }),
2595
+ onClick: event => {
2596
+ if (event?.target instanceof HTMLAnchorElement) {
2597
+ event.preventDefault();
2598
+ router.push(newFolderURL);
2599
+ }
2600
+ },
2601
+ type: "success"
2602
+ });
2603
+ telemetry.track("User created folder", {
2604
+ folder_id: newFolder.id
2605
+ });
2606
+ if (options.openAfterCreate) await router.push({
2607
+ name: VIEWS.PROJECTS_FOLDERS,
2608
+ params: {
2609
+ projectId: route.params.projectId,
2610
+ folderId: parent.id
2611
+ }
2612
+ });else if (!workflowsAndFolders.value.length) {
2613
+ workflowsAndFolders.value = [{
2614
+ id: newFolder.id,
2615
+ name: newFolder.name,
2616
+ resource: "folder",
2617
+ createdAt: newFolder.createdAt,
2618
+ updatedAt: newFolder.updatedAt,
2619
+ homeProject: projectsStore.currentProject,
2620
+ workflowCount: 0,
2621
+ subFolderCount: 0
2622
+ }];
2623
+ foldersStore.cacheFolders([{
2624
+ id: newFolder.id,
2625
+ name: newFolder.name,
2626
+ parentFolder: currentFolder.value?.id
2627
+ }]);
2628
+ } else await fetchWorkflows();
2629
+ } catch (error) {
2630
+ toast.showError(error, i18n.baseText("folders.create.error.title"));
2631
+ }
2632
+ }
2633
+ };
2634
+ const renameFolder = async folderId => {
2635
+ const folder = foldersStore.getCachedFolder(folderId);
2636
+ if (!folder || !currentProject.value) return;
2637
+ const promptResponse = await message.prompt(i18n.baseText("folders.rename.message", {
2638
+ interpolate: {
2639
+ folderName: folder.name
2640
+ }
2641
+ }), {
2642
+ confirmButtonText: i18n.baseText("generic.rename"),
2643
+ cancelButtonText: i18n.baseText("generic.cancel"),
2644
+ inputValue: folder.name,
2645
+ customClass: "rename-folder-modal",
2646
+ inputValidator: folderHelpers.validateFolderName
2647
+ });
2648
+ if (promptResponse.action === "confirm") {
2649
+ const newFolderName = promptResponse.value;
2650
+ try {
2651
+ await foldersStore.renameFolder(currentProject.value?.id, folderId, newFolderName);
2652
+ foldersStore.breadcrumbsCache[folderId].name = newFolderName;
2653
+ toast.showMessage({
2654
+ title: i18n.baseText("folders.rename.success.message", {
2655
+ interpolate: {
2656
+ folderName: newFolderName
2657
+ }
2658
+ }),
2659
+ type: "success"
2660
+ });
2661
+ await fetchWorkflows();
2662
+ telemetry.track("User renamed folder", {
2663
+ folder_id: folderId
2664
+ });
2665
+ } catch (error) {
2666
+ toast.showError(error, i18n.baseText("folders.rename.error.title"));
2667
+ }
2668
+ }
2669
+ };
2670
+ const createFolderInCurrent = async () => {
2671
+ if (showRegisteredCommunityCTA.value) {
2672
+ uiStore.openModalWithData({
2673
+ name: COMMUNITY_PLUS_ENROLLMENT_MODAL,
2674
+ data: {
2675
+ customHeading: i18n.baseText("folders.registeredCommunity.cta.heading")
2676
+ }
2677
+ });
2678
+ return;
2679
+ }
2680
+ if (!route.params.projectId) return;
2681
+ const currentParent = currentFolder.value?.name || projectName.value;
2682
+ if (!currentParent) return;
2683
+ await createFolder({
2684
+ id: route.params.folderId ?? "-1",
2685
+ name: currentParent,
2686
+ type: currentFolder.value ? "folder" : "project"
2687
+ });
2688
+ };
2689
+ const deleteFolder = async (folderId, workflowCount, subFolderCount) => {
2690
+ if (subFolderCount || workflowCount) uiStore.openDeleteFolderModal(folderId, workflowListEventBus, {
2691
+ workflowCount,
2692
+ subFolderCount
2693
+ });else {
2694
+ await foldersStore.deleteFolder(route.params.projectId, folderId);
2695
+ toast.showMessage({
2696
+ title: i18n.baseText("folders.delete.success.message"),
2697
+ type: "success"
2698
+ });
2699
+ await onFolderDeleted({
2700
+ folderId,
2701
+ workflowCount,
2702
+ folderCount: subFolderCount
2703
+ });
2704
+ }
2705
+ };
2706
+ const moveFolder = async payload => {
2707
+ if (!route.params.projectId) return;
2708
+ try {
2709
+ await foldersStore.moveFolder(route.params.projectId, payload.folder.id, payload.newParent.type === "folder" ? payload.newParent.id : "0");
2710
+ const isCurrentFolder = currentFolderId.value === payload.folder.id;
2711
+ const newFolderURL = router.resolve({
2712
+ name: VIEWS.PROJECTS_FOLDERS,
2713
+ params: {
2714
+ projectId: route.params.projectId,
2715
+ folderId: payload.newParent.type === "folder" ? payload.newParent.id : void 0
2716
+ }
2717
+ }).href;
2718
+ if (isCurrentFolder && !payload.options?.skipNavigation) {
2719
+ router.push(newFolderURL);
2720
+ toast.showMessage({
2721
+ title: i18n.baseText("folders.move.success.title"),
2722
+ message: i18n.baseText("folders.move.success.messageNoAccess", {
2723
+ interpolate: {
2724
+ folderName: payload.folder.name,
2725
+ newFolderName: payload.newParent.name
2726
+ }
2727
+ }),
2728
+ type: "success"
2729
+ });
2730
+ } else {
2731
+ toast.showToast({
2732
+ title: i18n.baseText("folders.move.success.title"),
2733
+ message: i18n.baseText("folders.move.success.message", {
2734
+ interpolate: {
2735
+ folderName: payload.folder.name,
2736
+ newFolderName: payload.newParent.name
2737
+ }
2738
+ }),
2739
+ onClick: event => {
2740
+ if (event?.target instanceof HTMLAnchorElement) {
2741
+ event.preventDefault();
2742
+ router.push(newFolderURL);
2743
+ }
2744
+ },
2745
+ type: "success"
2746
+ });
2747
+ if (!payload.options?.skipFetch) await fetchWorkflows();
2748
+ }
2749
+ } catch (error) {
2750
+ toast.showError(error, i18n.baseText("folders.move.error.title"));
2751
+ }
2752
+ };
2753
+ const onFolderTransferred = async payload => {
2754
+ try {
2755
+ await foldersStore.moveFolderToProject(payload.source.projectId, payload.source.folder.id, payload.destination.projectId, payload.destination.parentFolder.id, payload.shareCredentials);
2756
+ const isCurrentFolder = currentFolderId.value === payload.source.folder.id;
2757
+ const newFolderURL = router.resolve({
2758
+ name: VIEWS.PROJECTS_FOLDERS,
2759
+ params: {
2760
+ projectId: payload.destination.canAccess ? payload.destination.projectId : payload.source.projectId,
2761
+ folderId: payload.destination.canAccess ? payload.source.folder.id : void 0
2762
+ }
2763
+ }).href;
2764
+ if (isCurrentFolder) {
2765
+ if (payload.destination.canAccess) router.push(newFolderURL);else router.push({
2766
+ name: VIEWS.PROJECTS_WORKFLOWS,
2767
+ params: {
2768
+ projectId: payload.source.projectId
2769
+ }
2770
+ });
2771
+ } else {
2772
+ await refreshWorkflows();
2773
+ if (payload.destination.canAccess) toast.showToast({
2774
+ title: i18n.baseText("folders.move.success.title"),
2775
+ message: i18n.baseText("folders.move.success.message", {
2776
+ interpolate: {
2777
+ folderName: payload.source.folder.name,
2778
+ newFolderName: payload.destination.parentFolder.name
2779
+ }
2780
+ }),
2781
+ onClick: event => {
2782
+ if (event?.target instanceof HTMLAnchorElement) {
2783
+ event.preventDefault();
2784
+ router.push(newFolderURL);
2785
+ }
2786
+ },
2787
+ type: "success"
2788
+ });else toast.showToast({
2789
+ title: i18n.baseText("folders.move.success.title"),
2790
+ message: i18n.baseText("folders.move.success.messageNoAccess", {
2791
+ interpolate: {
2792
+ folderName: payload.source.folder.name,
2793
+ newFolderName: payload.destination.parentFolder.name
2794
+ }
2795
+ }),
2796
+ type: "success"
2797
+ });
2798
+ }
2799
+ } catch (error) {
2800
+ toast.showError(error, i18n.baseText("folders.move.error.title"));
2801
+ }
2802
+ };
2803
+ const moveWorkflowToFolder = async payload => {
2804
+ if (showRegisteredCommunityCTA.value) {
2805
+ uiStore.openModalWithData({
2806
+ name: COMMUNITY_PLUS_ENROLLMENT_MODAL,
2807
+ data: {
2808
+ customHeading: i18n.baseText("folders.registeredCommunity.cta.heading")
2809
+ }
2810
+ });
2811
+ return;
2812
+ }
2813
+ uiStore.openMoveToFolderModal("workflow", {
2814
+ id: payload.id,
2815
+ name: payload.name,
2816
+ parentFolderId: payload.parentFolderId,
2817
+ sharedWithProjects: payload.sharedWithProjects
2818
+ }, workflowListEventBus);
2819
+ };
2820
+ const onWorkflowTransferred = async payload => {
2821
+ try {
2822
+ await projectsStore.moveResourceToProject("workflow", payload.source.workflow.id, payload.destination.projectId, payload.destination.parentFolder.id, payload.shareCredentials);
2823
+ await refreshWorkflows();
2824
+ if (payload.destination.canAccess) toast.showToast({
2825
+ title: i18n.baseText("folders.move.workflow.success.title"),
2826
+ message: i18n.baseText("folders.move.workflow.success.message", {
2827
+ interpolate: {
2828
+ workflowName: payload.source.workflow.name,
2829
+ newFolderName: payload.destination.parentFolder.name
2830
+ }
2831
+ }),
2832
+ onClick: event => {
2833
+ if (event?.target instanceof HTMLAnchorElement) {
2834
+ event.preventDefault();
2835
+ router.push({
2836
+ name: VIEWS.PROJECTS_FOLDERS,
2837
+ params: {
2838
+ projectId: payload.destination.projectId,
2839
+ folderId: payload.destination.parentFolder.id
2840
+ }
2841
+ });
2842
+ }
2843
+ },
2844
+ type: "success"
2845
+ });else toast.showToast({
2846
+ title: i18n.baseText("folders.move.workflow.success.title"),
2847
+ message: i18n.baseText("folders.move.workflow.success.messageNoAccess", {
2848
+ interpolate: {
2849
+ workflowName: payload.source.workflow.name,
2850
+ newFolderName: payload.destination.parentFolder.name
2851
+ }
2852
+ }),
2853
+ type: "success"
2854
+ });
2855
+ } catch (error) {
2856
+ toast.showError(error, i18n.baseText("folders.move.workflow.error.title"));
2857
+ }
2858
+ };
2859
+ const onWorkflowMoved = async payload => {
2860
+ if (!route.params.projectId) return;
2861
+ try {
2862
+ const newFolderURL = router.resolve({
2863
+ name: VIEWS.PROJECTS_FOLDERS,
2864
+ params: {
2865
+ projectId: route.params.projectId,
2866
+ folderId: payload.newParent.type === "folder" ? payload.newParent.id : void 0
2867
+ }
2868
+ }).href;
2869
+ const workflowResource = workflowsAndFolders.value.find(resource => resource.id === payload.workflow.id);
2870
+ await workflowsStore.updateWorkflow(payload.workflow.id, {
2871
+ parentFolderId: payload.newParent.type === "folder" ? payload.newParent.id : "0",
2872
+ versionId: workflowResource?.versionId
2873
+ });
2874
+ if (!payload.options?.skipFetch) await fetchWorkflows();
2875
+ toast.showToast({
2876
+ title: i18n.baseText("folders.move.workflow.success.title"),
2877
+ message: i18n.baseText("folders.move.workflow.success.message", {
2878
+ interpolate: {
2879
+ workflowName: payload.workflow.name,
2880
+ newFolderName: payload.newParent.name
2881
+ }
2882
+ }),
2883
+ onClick: event => {
2884
+ if (event?.target instanceof HTMLAnchorElement) {
2885
+ event.preventDefault();
2886
+ router.push(newFolderURL);
2887
+ }
2888
+ },
2889
+ type: "success"
2890
+ });
2891
+ telemetry.track("User moved content", {
2892
+ workflow_id: payload.workflow.id,
2893
+ source_folder_id: payload.workflow.oldParentId,
2894
+ destination_folder_id: payload.newParent.id
2895
+ });
2896
+ } catch (error) {
2897
+ toast.showError(error, i18n.baseText("folders.move.workflow.error.title"));
2898
+ }
2899
+ };
2900
+ const onCreateWorkflowClick = () => {
2901
+ router.push({
2902
+ name: VIEWS.NEW_WORKFLOW,
2903
+ query: {
2904
+ projectId: currentProject.value?.id,
2905
+ parentFolderId: route.params.folderId
2906
+ }
2907
+ });
2908
+ };
2909
+ const renameInput = useTemplateRef("renameInput");
2910
+ function onNameToggle() {
2911
+ setTimeout(() => {
2912
+ if (renameInput.value?.forceFocus) renameInput.value.forceFocus();
2913
+ }, 0);
2914
+ }
2915
+ const onNameSubmit = async name$1 => {
2916
+ if (!currentFolder.value || !currentProject.value) return;
2917
+ const newName = name$1.trim();
2918
+ if (!newName) {
2919
+ toast.showMessage({
2920
+ title: i18n.baseText("renameAction.emptyName.title"),
2921
+ message: i18n.baseText("renameAction.emptyName.message"),
2922
+ type: "error"
2923
+ });
2924
+ return;
2925
+ }
2926
+ if (newName === currentFolder.value.name) {
2927
+ renameInput.value?.forceCancel();
2928
+ return;
2929
+ }
2930
+ const validationResult = folderHelpers.validateFolderName(newName);
2931
+ if (typeof validationResult === "string") {
2932
+ toast.showMessage({
2933
+ title: i18n.baseText("renameAction.invalidName.title"),
2934
+ message: validationResult,
2935
+ type: "error"
2936
+ });
2937
+ renameInput.value?.forceCancel();
2938
+ return;
2939
+ } else try {
2940
+ await foldersStore.renameFolder(currentProject.value?.id, currentFolder.value.id, newName);
2941
+ foldersStore.breadcrumbsCache[currentFolder.value.id].name = newName;
2942
+ toast.showMessage({
2943
+ title: i18n.baseText("folders.rename.success.message", {
2944
+ interpolate: {
2945
+ folderName: newName
2946
+ }
2947
+ }),
2948
+ type: "success"
2949
+ });
2950
+ telemetry.track("User renamed folder", {
2951
+ folder_id: currentFolder.value.id
2952
+ });
2953
+ } catch (error) {
2954
+ toast.showError(error, i18n.baseText("folders.rename.error.title"));
2955
+ renameInput.value?.forceCancel();
2956
+ }
2957
+ };
2958
+ return (_ctx, _cache) => {
2959
+ return shouldUseSimplifiedLayout.value ? (openBlock(), createBlock(SimplifiedEmptyLayout_default, {
2960
+ key: 0,
2961
+ "onClick:add": addWorkflow
2962
+ })) : (openBlock(), createBlock(ResourcesListLayout_default, {
2963
+ key: 1,
2964
+ ref: "resourcesListLayout",
2965
+ filters: filters.value,
2966
+ "onUpdate:filters": [_cache[9] || (_cache[9] = $event => filters.value = $event), onFiltersUpdated],
2967
+ "resource-key": "workflows",
2968
+ type: "list-paginated",
2969
+ resources: workflowListResources.value,
2970
+ "type-props": {
2971
+ itemSize: 80
2972
+ },
2973
+ shareable: isShareable.value,
2974
+ initialize,
2975
+ disabled: readOnlyEnv.value || !projectPermissions.value.workflow.create,
2976
+ loading: false,
2977
+ "resources-refreshing": loading$1.value,
2978
+ "custom-page-size": unref(50),
2979
+ "total-items": unref(workflowsStore).totalWorkflowCount,
2980
+ "dont-perform-sorting-and-filtering": true,
2981
+ "has-empty-state": unref(foldersStore).totalWorkflowCount === 0 && !currentFolderId.value,
2982
+ "onClick:add": addWorkflow,
2983
+ "onUpdate:search": onSearchUpdated,
2984
+ "onUpdate:paginationAndSort": setPaginationAndSort,
2985
+ onMouseleave: unref(folderHelpers).resetDropTarget
2986
+ }, createSlots({
2987
+ header: withCtx(() => [createVNode(ProjectHeader_default, {
2988
+ "has-active-callouts": hasActiveCallouts.value,
2989
+ onCreateFolder: createFolderInCurrent
2990
+ }, {
2991
+ default: withCtx(() => [showInsights.value ? (openBlock(), createBlock(InsightsSummary_default, {
2992
+ key: 0,
2993
+ loading: unref(insightsStore).weeklySummary.isLoading,
2994
+ summary: unref(insightsStore).weeklySummary.state,
2995
+ "time-range": "week"
2996
+ }, null, 8, ["loading", "summary"])) : createCommentVNode("", true)]),
2997
+ _: 1
2998
+ }, 8, ["has-active-callouts"])]),
2999
+ callout: withCtx(() => [showPrebuiltAgentsCallout.value ? (openBlock(), createBlock(unref(N8nCallout_default), {
3000
+ key: 0,
3001
+ theme: "secondary",
3002
+ icon: "bot",
3003
+ "icon-size": "large",
3004
+ class: normalizeClass(_ctx.$style["easy-ai-workflow-callout"])
3005
+ }, {
3006
+ trailingContent: withCtx(() => [createBaseVNode("div", {
3007
+ class: normalizeClass(_ctx.$style["callout-trailing-content"])
3008
+ }, [createVNode(unref(N8nIcon_default), {
3009
+ size: "small",
3010
+ icon: "x",
3011
+ title: unref(i18n).baseText("generic.dismiss"),
3012
+ class: "clickable",
3013
+ onClick: _cache[1] || (_cache[1] = $event => dismissPreBuiltAgentsCallout())
3014
+ }, null, 8, ["title"])], 2)]),
3015
+ default: withCtx(() => [createVNode(unref(N8nText_default), {
3016
+ size: "small"
3017
+ }, {
3018
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("workflows.preBuiltAgents.callout")) + " " + toDisplayString(" ") + " ", 1), createVNode(unref(N8nLink_default), {
3019
+ theme: "secondary",
3020
+ size: "small",
3021
+ bold: true,
3022
+ underline: true,
3023
+ onClick: _cache[0] || (_cache[0] = $event => openPrebuiltAgentsModal("workflowsEmptyState"))
3024
+ }, {
3025
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("workflows.preBuiltAgents.linkText")), 1)]),
3026
+ _: 1
3027
+ })]),
3028
+ _: 1
3029
+ })]),
3030
+ _: 1
3031
+ }, 8, ["class"])) : showAIStarterCollectionCallout.value ? (openBlock(), createBlock(unref(N8nCallout_default), {
3032
+ key: 1,
3033
+ theme: "secondary",
3034
+ icon: "gift",
3035
+ class: normalizeClass(_ctx.$style["easy-ai-workflow-callout"])
3036
+ }, {
3037
+ trailingContent: withCtx(() => [createBaseVNode("div", {
3038
+ class: normalizeClass(_ctx.$style["callout-trailing-content"])
3039
+ }, [createVNode(unref(N8nButton_default), {
3040
+ "data-test-id": "easy-ai-button",
3041
+ size: "small",
3042
+ type: "secondary",
3043
+ onClick: _cache[2] || (_cache[2] = $event => createAIStarterWorkflows("callout"))
3044
+ }, {
3045
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("generic.startNow")), 1)]),
3046
+ _: 1
3047
+ }), createVNode(unref(N8nIcon_default), {
3048
+ size: "small",
3049
+ icon: "x",
3050
+ title: unref(i18n).baseText("generic.dismiss"),
3051
+ class: "clickable",
3052
+ onClick: dismissStarterCollectionCallout
3053
+ }, null, 8, ["title"])], 2)]),
3054
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("workflows.ai.starter.collection.callout")) + " ", 1)]),
3055
+ _: 1
3056
+ }, 8, ["class"])) : showPersonalizedTemplates.value ? (openBlock(), createBlock(SuggestedWorkflows_default, {
3057
+ key: 2
3058
+ }, {
3059
+ default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(personalizedTemplatesStore).suggestedWorkflows, workflow => {
3060
+ return openBlock(), createBlock(SuggestedWorkflowCard_default, {
3061
+ key: workflow.id,
3062
+ "data-test-id": "resource-list-item-suggested-workflow",
3063
+ data: {
3064
+ id: workflow.id,
3065
+ name: workflow.name
3066
+ }
3067
+ }, null, 8, ["data"]);
3068
+ }), 128))]),
3069
+ _: 1
3070
+ })) : createCommentVNode("", true), showReadyToRunWorkflowsCallout.value ? (openBlock(), createBlock(unref(N8nCallout_default), {
3071
+ key: 3,
3072
+ theme: "secondary",
3073
+ icon: "bolt-filled",
3074
+ class: normalizeClass(_ctx.$style["easy-ai-workflow-callout"])
3075
+ }, {
3076
+ trailingContent: withCtx(() => [createBaseVNode("div", {
3077
+ class: normalizeClass(_ctx.$style["callout-trailing-content"])
3078
+ }, [createVNode(unref(N8nButton_default), {
3079
+ "data-test-id": "easy-ai-button",
3080
+ size: "small",
3081
+ type: "secondary",
3082
+ onClick: _cache[3] || (_cache[3] = $event => handleCreateReadyToRunWorkflows("callout"))
3083
+ }, {
3084
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("generic.startNow")), 1)]),
3085
+ _: 1
3086
+ }), createVNode(unref(N8nIcon_default), {
3087
+ size: "small",
3088
+ icon: "x",
3089
+ title: unref(i18n).baseText("generic.dismiss"),
3090
+ class: "clickable",
3091
+ onClick: handleDismissReadyToRunCallout
3092
+ }, null, 8, ["title"])], 2)]),
3093
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(readyToRunWorkflowsStore).getCalloutText()) + " ", 1)]),
3094
+ _: 1
3095
+ }, 8, ["class"])) : createCommentVNode("", true)]),
3096
+ breadcrumbs: withCtx(() => [breadcrumbsLoading.value ? (openBlock(), createElementBlock("div", {
3097
+ key: 0,
3098
+ class: normalizeClass(_ctx.$style["breadcrumbs-loading"])
3099
+ }, [createVNode(unref(N8nLoading_default), {
3100
+ loading: breadcrumbsLoading.value,
3101
+ rows: 1,
3102
+ variant: "p"
3103
+ }, null, 8, ["loading"])], 2)) : showFolders.value && currentFolder.value ? (openBlock(), createElementBlock("div", {
3104
+ key: 1,
3105
+ class: normalizeClass(_ctx.$style["breadcrumbs-container"]),
3106
+ "data-test-id": "main-breadcrumbs"
3107
+ }, [createVNode(FolderBreadcrumbs_default, {
3108
+ "current-folder": currentFolderParent.value,
3109
+ actions: mainBreadcrumbsActions.value,
3110
+ "hidden-items-trigger": isDragging.value ? "hover" : "click",
3111
+ "current-folder-as-link": true,
3112
+ onItemSelected: onBreadcrumbItemClick,
3113
+ onAction: onBreadCrumbsAction,
3114
+ onItemDrop: onBreadCrumbsItemDrop,
3115
+ onProjectDrop: moveFolderToProjectRoot
3116
+ }, {
3117
+ append: withCtx(() => [createBaseVNode("span", {
3118
+ class: normalizeClass(_ctx.$style["path-separator"])
3119
+ }, "/", 2), (openBlock(), createBlock(unref(N8nInlineTextEdit_default), {
3120
+ ref_key: "renameInput",
3121
+ ref: renameInput,
3122
+ key: currentFolder.value?.id,
3123
+ "data-test-id": "breadcrumbs-item-current",
3124
+ placeholder: unref(i18n).baseText("folders.rename.placeholder"),
3125
+ "model-value": currentFolder.value.name,
3126
+ "max-length": 30,
3127
+ "read-only": readOnlyEnv.value || !hasPermissionToUpdateFolders.value,
3128
+ class: normalizeClass({
3129
+ [_ctx.$style.name]: true,
3130
+ [_ctx.$style["pointer-disabled"]]: isDragging.value
3131
+ }),
3132
+ "onUpdate:modelValue": onNameSubmit
3133
+ }, null, 8, ["placeholder", "model-value", "read-only", "class"]))]),
3134
+ _: 1
3135
+ }, 8, ["current-folder", "actions", "hidden-items-trigger"])], 2)) : createCommentVNode("", true)]),
3136
+ item: withCtx(({
3137
+ item: data,
3138
+ index
3139
+ }) => [data.resourceType === "folder" ? (openBlock(), createBlock(Draggable_default, {
3140
+ key: `folder-${index}`,
3141
+ disabled: !isDragNDropEnabled.value,
3142
+ type: "move",
3143
+ "target-data-key": "folder",
3144
+ onDragstart: unref(folderHelpers).onDragStart,
3145
+ onDragend: unref(folderHelpers).onDragEnd
3146
+ }, {
3147
+ preview: withCtx(() => [createVNode(unref(N8nCard_default), null, {
3148
+ default: withCtx(() => [createVNode(unref(N8nText_default), {
3149
+ tag: "h2",
3150
+ bold: ""
3151
+ }, {
3152
+ default: withCtx(() => [createTextVNode(toDisplayString(data.name), 1)]),
3153
+ _: 2
3154
+ }, 1024)]),
3155
+ _: 2
3156
+ }, 1024)]),
3157
+ default: withCtx(() => [createVNode(FolderCard_default, {
3158
+ data,
3159
+ actions: folderCardActions.value,
3160
+ "read-only": readOnlyEnv.value || !hasPermissionToDeleteFolders.value && !hasPermissionToCreateFolders.value,
3161
+ "personal-project": personalProject.value,
3162
+ "data-resourceid": data.id,
3163
+ "data-resourcename": data.name,
3164
+ class: normalizeClass([{
3165
+ ["mb-2xs"]: true,
3166
+ [_ctx.$style["drag-active"]]: isDragging.value,
3167
+ [_ctx.$style.dragging]: unref(foldersStore).draggedElement?.type === "folder" && unref(foldersStore).draggedElement?.id === data.id,
3168
+ [_ctx.$style["drop-active"]]: unref(foldersStore).activeDropTarget?.id === data.id
3169
+ }, "mb-2xs"]),
3170
+ "show-ownership-badge": showCardsBadge.value,
3171
+ "data-target": "folder",
3172
+ onAction: onFolderCardAction,
3173
+ onMouseenter: unref(folderHelpers).onDragEnter,
3174
+ onMouseup: onFolderCardDrop
3175
+ }, null, 8, ["data", "actions", "read-only", "personal-project", "data-resourceid", "data-resourcename", "class", "show-ownership-badge", "onMouseenter"])]),
3176
+ _: 2
3177
+ }, 1032, ["disabled", "onDragstart", "onDragend"])) : (openBlock(), createBlock(Draggable_default, {
3178
+ key: `workflow-${index}`,
3179
+ disabled: !isDragNDropEnabled.value,
3180
+ type: "move",
3181
+ "target-data-key": "workflow",
3182
+ onDragstart: unref(folderHelpers).onDragStart,
3183
+ onDragend: unref(folderHelpers).onDragEnd
3184
+ }, {
3185
+ preview: withCtx(() => [createVNode(unref(N8nCard_default), null, {
3186
+ default: withCtx(() => [createVNode(unref(N8nText_default), {
3187
+ tag: "h2",
3188
+ bold: ""
3189
+ }, {
3190
+ default: withCtx(() => [createTextVNode(toDisplayString(data.name), 1)]),
3191
+ _: 2
3192
+ }, 1024)]),
3193
+ _: 2
3194
+ }, 1024)]),
3195
+ default: withCtx(() => [createVNode(WorkflowCard_default, {
3196
+ "data-test-id": "resources-list-item-workflow",
3197
+ "data-target": "workflow",
3198
+ class: normalizeClass({
3199
+ ["mb-2xs"]: true,
3200
+ [_ctx.$style["drag-active"]]: isDragging.value,
3201
+ [_ctx.$style.dragging]: unref(foldersStore).draggedElement?.type === "workflow" && unref(foldersStore).draggedElement?.id === data.id
3202
+ }),
3203
+ data,
3204
+ "workflow-list-event-bus": unref(workflowListEventBus),
3205
+ "read-only": readOnlyEnv.value,
3206
+ "data-resourceid": data.id,
3207
+ "data-resourcename": data.name,
3208
+ "show-ownership-badge": showCardsBadge.value,
3209
+ "are-folders-enabled": unref(settingsStore).isFoldersFeatureEnabled,
3210
+ "are-tags-enabled": unref(settingsStore).areTagsEnabled,
3211
+ "is-mcp-enabled": mcpEnabled.value,
3212
+ "onClick:tag": onClickTag,
3213
+ "onWorkflow:deleted": refreshWorkflows,
3214
+ "onWorkflow:archived": refreshWorkflows,
3215
+ "onWorkflow:unarchived": refreshWorkflows,
3216
+ "onWorkflow:moved": fetchWorkflows,
3217
+ "onWorkflow:duplicated": fetchWorkflows,
3218
+ "onWorkflow:activeToggle": onWorkflowActiveToggle,
3219
+ "onAction:moveToFolder": moveWorkflowToFolder,
3220
+ onMouseenter: _cache[4] || (_cache[4] = $event => isDragging.value ? unref(folderHelpers).resetDropTarget() : {})
3221
+ }, null, 8, ["class", "data", "workflow-list-event-bus", "read-only", "data-resourceid", "data-resourcename", "show-ownership-badge", "are-folders-enabled", "are-tags-enabled", "is-mcp-enabled"])]),
3222
+ _: 2
3223
+ }, 1032, ["disabled", "onDragstart", "onDragend"]))]),
3224
+ empty: withCtx(() => [unref(projectPages).isSharedSubPage && personalProject.value ? (openBlock(), createBlock(EmptySharedSectionActionBox_default, {
3225
+ key: 0,
3226
+ "personal-project": personalProject.value,
3227
+ "resource-type": "workflows"
3228
+ }, null, 8, ["personal-project"])) : (openBlock(), createElementBlock("div", _hoisted_5, [createBaseVNode("div", _hoisted_6, [createVNode(unref(N8nHeading_default), {
3229
+ tag: "h2",
3230
+ size: "xlarge",
3231
+ class: "mb-2xs"
3232
+ }, {
3233
+ default: withCtx(() => [createTextVNode(toDisplayString(currentUser.value.firstName ? unref(i18n).baseText("workflows.empty.heading", {
3234
+ interpolate: {
3235
+ name: currentUser.value.firstName
3236
+ }
3237
+ }) : unref(i18n).baseText("workflows.empty.heading.userNotSetup")), 1)]),
3238
+ _: 1
3239
+ }), createVNode(unref(N8nText_default), {
3240
+ size: "large",
3241
+ color: "text-base"
3242
+ }, {
3243
+ default: withCtx(() => [createTextVNode(toDisplayString(emptyListDescription.value), 1)]),
3244
+ _: 1
3245
+ })]), !readOnlyEnv.value && projectPermissions.value.workflow.create ? (openBlock(), createElementBlock("div", {
3246
+ key: 0,
3247
+ class: normalizeClass(["text-center", "mt-2xl", _ctx.$style.actionsContainer])
3248
+ }, [createVNode(unref(N8nCard_default), {
3249
+ class: normalizeClass(_ctx.$style.emptyStateCard),
3250
+ hoverable: "",
3251
+ "data-test-id": "new-workflow-card",
3252
+ onClick: addWorkflow
3253
+ }, {
3254
+ default: withCtx(() => [createBaseVNode("div", {
3255
+ class: normalizeClass(_ctx.$style.emptyStateCardContent)
3256
+ }, [createVNode(unref(N8nIcon_default), {
3257
+ class: normalizeClass(_ctx.$style.emptyStateCardIcon),
3258
+ icon: "file",
3259
+ color: "foreground-dark",
3260
+ "stroke-width": 1.5
3261
+ }, null, 8, ["class"]), createVNode(unref(N8nText_default), {
3262
+ size: "large",
3263
+ class: "mt-xs"
3264
+ }, {
3265
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("workflows.empty.startFromScratch")), 1)]),
3266
+ _: 1
3267
+ })], 2)]),
3268
+ _: 1
3269
+ }, 8, ["class"]), showPrebuiltAgentsCallout.value ? (openBlock(), createBlock(unref(N8nCard_default), {
3270
+ key: 0,
3271
+ class: normalizeClass(_ctx.$style.emptyStateCard),
3272
+ hoverable: "",
3273
+ "data-test-id": "prebuilt-agents-card",
3274
+ onClick: _cache[5] || (_cache[5] = $event => openPrebuiltAgentsModal("workflowsList"))
3275
+ }, {
3276
+ default: withCtx(() => [createBaseVNode("div", {
3277
+ class: normalizeClass(_ctx.$style.emptyStateCardContent)
3278
+ }, [createVNode(unref(N8nIcon_default), {
3279
+ class: normalizeClass(_ctx.$style.emptyStateCardIcon),
3280
+ "stroke-width": 1.5,
3281
+ icon: "bot",
3282
+ color: "foreground-dark"
3283
+ }, null, 8, ["class"]), createVNode(unref(N8nText_default), {
3284
+ size: "large",
3285
+ class: "mt-xs pl-2xs pr-2xs"
3286
+ }, {
3287
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("workflows.empty.preBuiltAgents")), 1)]),
3288
+ _: 1
3289
+ })], 2)]),
3290
+ _: 1
3291
+ }, 8, ["class"])) : showAIStarterCollectionCallout.value ? (openBlock(), createBlock(unref(N8nCard_default), {
3292
+ key: 1,
3293
+ class: normalizeClass(_ctx.$style.emptyStateCard),
3294
+ hoverable: "",
3295
+ "data-test-id": "easy-ai-workflow-card",
3296
+ onClick: _cache[6] || (_cache[6] = $event => createAIStarterWorkflows("card"))
3297
+ }, {
3298
+ default: withCtx(() => [createBaseVNode("div", {
3299
+ class: normalizeClass(_ctx.$style.emptyStateCardContent)
3300
+ }, [createVNode(unref(N8nIcon_default), {
3301
+ class: normalizeClass(_ctx.$style.emptyStateCardIcon),
3302
+ "stroke-width": 1.5,
3303
+ icon: "gift",
3304
+ color: "foreground-dark"
3305
+ }, null, 8, ["class"]), createVNode(unref(N8nText_default), {
3306
+ size: "large",
3307
+ class: "mt-xs pl-2xs pr-2xs"
3308
+ }, {
3309
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("workflows.ai.starter.collection.card")), 1)]),
3310
+ _: 1
3311
+ })], 2)]),
3312
+ _: 1
3313
+ }, 8, ["class"])) : showEasyAIWorkflowCallout.value ? (openBlock(), createBlock(unref(N8nCard_default), {
3314
+ key: 2,
3315
+ class: normalizeClass(_ctx.$style.emptyStateCard),
3316
+ hoverable: "",
3317
+ "data-test-id": "easy-ai-workflow-card",
3318
+ onClick: _cache[7] || (_cache[7] = $event => openAIWorkflow("empty"))
3319
+ }, {
3320
+ default: withCtx(() => [createBaseVNode("div", {
3321
+ class: normalizeClass(_ctx.$style.emptyStateCardContent)
3322
+ }, [createVNode(unref(N8nIcon_default), {
3323
+ class: normalizeClass(_ctx.$style.emptyStateCardIcon),
3324
+ "stroke-width": 1.5,
3325
+ icon: "bot",
3326
+ color: "foreground-dark"
3327
+ }, null, 8, ["class"]), createVNode(unref(N8nText_default), {
3328
+ size: "large",
3329
+ class: "mt-xs pl-2xs pr-2xs"
3330
+ }, {
3331
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("workflows.empty.easyAI")), 1)]),
3332
+ _: 1
3333
+ })], 2)]),
3334
+ _: 1
3335
+ }, 8, ["class"])) : createCommentVNode("", true), showReadyToRunWorkflowsCallout.value ? (openBlock(), createBlock(unref(N8nCard_default), {
3336
+ key: 3,
3337
+ class: normalizeClass(_ctx.$style.emptyStateCard),
3338
+ hoverable: "",
3339
+ "data-test-id": "ready-to-run-workflows-card",
3340
+ onClick: _cache[8] || (_cache[8] = $event => handleCreateReadyToRunWorkflows("card"))
3341
+ }, {
3342
+ default: withCtx(() => [createBaseVNode("div", {
3343
+ class: normalizeClass(_ctx.$style.emptyStateCardContent)
3344
+ }, [createVNode(unref(N8nIcon_default), {
3345
+ class: normalizeClass(_ctx.$style.emptyStateCardIcon),
3346
+ "stroke-width": 1.5,
3347
+ icon: "package-open",
3348
+ color: "foreground-dark"
3349
+ }, null, 8, ["class"]), createVNode(unref(N8nText_default), {
3350
+ size: "large",
3351
+ class: "mt-xs pl-2xs pr-2xs"
3352
+ }, {
3353
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(readyToRunWorkflowsStore).getCardText()), 1)]),
3354
+ _: 1
3355
+ })], 2)]),
3356
+ _: 1
3357
+ }, 8, ["class"])) : createCommentVNode("", true), templatesCardEnabled.value ? (openBlock(), createBlock(unref(N8nCard_default), {
3358
+ key: 4,
3359
+ class: normalizeClass(_ctx.$style.emptyStateCard),
3360
+ hoverable: "",
3361
+ "data-test-id": "new-workflow-from-template-card",
3362
+ onClick: openTemplatesRepository
3363
+ }, {
3364
+ default: withCtx(() => [createBaseVNode("div", {
3365
+ class: normalizeClass(_ctx.$style.emptyStateCardContent)
3366
+ }, [createVNode(unref(N8nIcon_default), {
3367
+ class: normalizeClass(_ctx.$style.emptyStateCardIcon),
3368
+ "stroke-width": 1.5,
3369
+ icon: "package-open",
3370
+ color: "foreground-dark"
3371
+ }, null, 8, ["class"]), createVNode(unref(N8nText_default), {
3372
+ size: "large",
3373
+ class: "mt-xs pl-2xs pr-2xs"
3374
+ }, {
3375
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("workflows.empty.startWithTemplate")), 1)]),
3376
+ _: 1
3377
+ })], 2)]),
3378
+ _: 1
3379
+ }, 8, ["class"])) : createCommentVNode("", true)], 2)) : createCommentVNode("", true), showTemplateRecommendationV3.value ? (openBlock(), createBlock(TemplateRecommendationV3_default, {
3380
+ key: 1
3381
+ })) : showTemplateRecommendationV2.value ? (openBlock(), createBlock(TemplateRecommendationV2_default, {
3382
+ key: 2
3383
+ })) : createCommentVNode("", true)]))]),
3384
+ filters: withCtx(({
3385
+ setKeyValue
3386
+ }) => [unref(settingsStore).areTagsEnabled ? (openBlock(), createElementBlock("div", _hoisted_7, [createVNode(unref(N8nInputLabel_default), {
3387
+ label: unref(i18n).baseText("workflows.filters.tags"),
3388
+ bold: false,
3389
+ size: "small",
3390
+ color: "text-base",
3391
+ class: "mb-3xs"
3392
+ }, null, 8, ["label"]), createVNode(WorkflowTagsDropdown_default, {
3393
+ placeholder: unref(i18n).baseText("workflowOpen.filterWorkflows"),
3394
+ "model-value": filters.value.tags,
3395
+ "create-enabled": false,
3396
+ "onUpdate:modelValue": $event => setKeyValue("tags", $event)
3397
+ }, null, 8, ["placeholder", "model-value", "onUpdate:modelValue"])])) : createCommentVNode("", true), createBaseVNode("div", _hoisted_8, [createVNode(unref(N8nInputLabel_default), {
3398
+ label: unref(i18n).baseText("workflows.filters.status"),
3399
+ bold: false,
3400
+ size: "small",
3401
+ color: "text-base",
3402
+ class: "mb-3xs"
3403
+ }, null, 8, ["label"]), createVNode(unref(N8nSelect_default), {
3404
+ "data-test-id": "status-dropdown",
3405
+ "model-value": filters.value.status,
3406
+ "onUpdate:modelValue": $event => setKeyValue("status", $event)
3407
+ }, {
3408
+ default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(statusFilterOptions.value, option => {
3409
+ return openBlock(), createBlock(unref(N8nOption_default), {
3410
+ key: option.label,
3411
+ label: option.label,
3412
+ value: option.value,
3413
+ "data-test-id": "status"
3414
+ }, null, 8, ["label", "value"]);
3415
+ }), 128))]),
3416
+ _: 2
3417
+ }, 1032, ["model-value", "onUpdate:modelValue"])]), createBaseVNode("div", _hoisted_9, [createVNode(unref(N8nCheckbox_default), {
3418
+ label: unref(i18n).baseText("workflows.filters.showArchived"),
3419
+ "model-value": filters.value.showArchived || false,
3420
+ "data-test-id": "show-archived-checkbox",
3421
+ "onUpdate:modelValue": $event => setKeyValue("showArchived", $event)
3422
+ }, null, 8, ["label", "model-value", "onUpdate:modelValue"])])]),
3423
+ postamble: withCtx(() => [workflowsAndFolders.value.length === 0 && !hasFilters.value ? (openBlock(), createElementBlock("div", {
3424
+ key: 0,
3425
+ class: normalizeClass(_ctx.$style["empty-folder-container"]),
3426
+ "data-test-id": "empty-folder-container"
3427
+ }, [showArchivedOnlyHint.value ? (openBlock(), createBlock(unref(N8nInfoTip_default), {
3428
+ key: 0,
3429
+ bold: false
3430
+ }, {
3431
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("workflows.archivedOnly.hint")) + " ", 1), createVNode(unref(N8nLink_default), {
3432
+ size: "small",
3433
+ "data-test-id": "show-archived-link",
3434
+ onClick: onShowArchived
3435
+ }, {
3436
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("workflows.archivedOnly.hint.link")), 1)]),
3437
+ _: 1
3438
+ })]),
3439
+ _: 1
3440
+ })) : createCommentVNode("", true), unref(projectPages).isSharedSubPage && personalProject.value ? (openBlock(), createBlock(EmptySharedSectionActionBox_default, {
3441
+ key: 1,
3442
+ "personal-project": personalProject.value,
3443
+ "resource-type": "workflows"
3444
+ }, null, 8, ["personal-project"])) : currentFolder.value ? (openBlock(), createBlock(unref(N8nActionBox_default), {
3445
+ key: 2,
3446
+ "data-test-id": "empty-folder-action-box",
3447
+ heading: unref(i18n).baseText("folders.empty.actionbox.title", {
3448
+ interpolate: {
3449
+ folderName: currentFolder.value.name
3450
+ }
3451
+ }),
3452
+ "button-text": unref(i18n).baseText("generic.create.workflow"),
3453
+ "button-type": "secondary",
3454
+ "button-disabled": readOnlyEnv.value || !projectPermissions.value.workflow.create,
3455
+ "onClick:button": onCreateWorkflowClick
3456
+ }, {
3457
+ disabledButtonTooltip: withCtx(() => [createTextVNode(toDisplayString(readOnlyEnv.value ? unref(i18n).baseText("readOnlyEnv.cantAdd.workflow") : unref(i18n).baseText("generic.missing.permissions")), 1)]),
3458
+ _: 1
3459
+ }, 8, ["heading", "button-text", "button-disabled"])) : createCommentVNode("", true)], 2)) : createCommentVNode("", true)]),
3460
+ _: 2
3461
+ }, [foldersEnabled.value || showRegisteredCommunityCTA.value ? {
3462
+ name: "add-button",
3463
+ fn: withCtx(() => [createVNode(unref(N8nTooltip_default), {
3464
+ placement: "top",
3465
+ disabled: !(unref(projectPages).isOverviewSubPage || unref(projectPages).isSharedSubPage || !readOnlyEnv.value && hasPermissionToCreateFolders.value)
3466
+ }, {
3467
+ content: withCtx(() => [(unref(projectPages).isOverviewSubPage || unref(projectPages).isSharedSubPage) && !showRegisteredCommunityCTA.value ? (openBlock(), createElementBlock("span", _hoisted_1, [teamProjectsEnabled.value ? (openBlock(), createElementBlock("span", _hoisted_2, toDisplayString(unref(i18n).baseText("folders.add.overview.withProjects.message")), 1)) : (openBlock(), createElementBlock("span", _hoisted_3, toDisplayString(unref(i18n).baseText("folders.add.overview.community.message")), 1))])) : (openBlock(), createElementBlock("span", _hoisted_4, toDisplayString(currentParentName.value ? unref(i18n).baseText("folders.add.to.parent.message", {
3468
+ interpolate: {
3469
+ parent: currentParentName.value
3470
+ }
3471
+ }) : unref(i18n).baseText("folders.add.here.message")), 1))]),
3472
+ default: withCtx(() => [createVNode(unref(N8nButton_default), {
3473
+ size: "small",
3474
+ icon: "folder-plus",
3475
+ type: "tertiary",
3476
+ "data-test-id": "add-folder-button",
3477
+ class: normalizeClass(_ctx.$style["add-folder-button"]),
3478
+ disabled: !showRegisteredCommunityCTA.value && (readOnlyEnv.value || !hasPermissionToCreateFolders.value),
3479
+ onClick: createFolderInCurrent
3480
+ }, null, 8, ["class", "disabled"])]),
3481
+ _: 1
3482
+ }, 8, ["disabled"])]),
3483
+ key: "0"
3484
+ } : void 0]), 1032, ["filters", "resources", "shareable", "disabled", "resources-refreshing", "custom-page-size", "total-items", "has-empty-state", "onMouseleave"]));
3485
+ };
3486
+ }
3487
+ }); //#endregion
3488
+ //#region src/app/views/WorkflowsView.vue?vue&type=style&index=0&lang.module.scss
3489
+ actionsContainer = "_actionsContainer_7a9z2_123";
3490
+ emptyStateCard = "_emptyStateCard_7a9z2_139";
3491
+ emptyStateCardContent = "_emptyStateCardContent_7a9z2_152";
3492
+ emptyStateCardIcon = "_emptyStateCardIcon_7a9z2_159";
3493
+ dragging = "_dragging_7a9z2_192";
3494
+ name = "_name_7a9z2_210";
3495
+ WorkflowsView_vue_vue_type_style_index_0_lang_module_default = {
3496
+ actionsContainer,
3497
+ "easy-ai-workflow-callout": "_easy-ai-workflow-callout_7a9z2_128",
3498
+ "callout-trailing-content": "_callout-trailing-content_7a9z2_133",
3499
+ emptyStateCard,
3500
+ emptyStateCardContent,
3501
+ emptyStateCardIcon,
3502
+ "add-folder-button": "_add-folder-button_7a9z2_166",
3503
+ "breadcrumbs-container": "_breadcrumbs-container_7a9z2_171",
3504
+ "breadcrumbs-loading": "_breadcrumbs-loading_7a9z2_177",
3505
+ "empty-folder-container": "_empty-folder-container_7a9z2_183",
3506
+ "drag-active": "_drag-active_7a9z2_187",
3507
+ dragging,
3508
+ "drop-active": "_drop-active_7a9z2_199",
3509
+ "path-separator": "_path-separator_7a9z2_204",
3510
+ name,
3511
+ "pointer-disabled": "_pointer-disabled_7a9z2_216"
3512
+ }; //#endregion
3513
+ //#region src/app/views/WorkflowsView.vue
3514
+ cssModules = {
3515
+ "$style": WorkflowsView_vue_vue_type_style_index_0_lang_module_default
3516
+ };
3517
+ _export("default", WorkflowsView_default = /* @__PURE__ */__plugin_vue_export_helper_default(WorkflowsView_vue_vue_type_script_setup_true_lang_default, [["__cssModules", cssModules]])); //#endregion
3518
+ }
3519
+ };
3520
+ });
3521
+ })();