n8n-editor-ui 1.93.0 → 1.94.0

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 (119) hide show
  1. package/dist/assets/{AnimatedSpinner-hbTZDd93.js → AnimatedSpinner-CY5xYI5m.js} +1 -1
  2. package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-CYzc5StE.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-BOrzkwPH.js} +1 -1
  3. package/dist/assets/{AuthView-8SLMP0H_.js → AuthView-BTzGYAnY.js} +2 -2
  4. package/dist/assets/{CanvasChatSwitch-Dt8TgNJg.js → CanvasChatSwitch-CwpjFCL0.js} +17 -18
  5. package/dist/assets/{ChangePasswordView-DIRyDp89.js → ChangePasswordView-BKR2UFVI.js} +3 -3
  6. package/dist/assets/CollectionParameter-BJtiV9En.js +4 -0
  7. package/dist/assets/{CredentialsView-B6-VxAJ6.js → CredentialsView-DVgxfnNi.js} +7 -7
  8. package/dist/assets/{DemoFooter-CIHwH5PG.js → DemoFooter-C1T3Q0NX.js} +7 -8
  9. package/dist/assets/{ErrorView-C7i0TZwT.js → ErrorView-Cf2Yb8Ea.js} +1 -1
  10. package/dist/assets/{ExecutionsTime.vue_vue_type_script_setup_true_lang--2G21NNR.js → ExecutionsTime.vue_vue_type_script_setup_true_lang-DUu0UMcW.js} +2 -2
  11. package/dist/assets/{ExecutionsView-C_YtciAr.js → ExecutionsView-DjNkfnDh.js} +19 -18
  12. package/dist/assets/{FileSaver.min-bgn7Q9Gt.js → FileSaver.min-C1p9Eies.js} +1 -1
  13. package/dist/assets/{FixedCollectionParameter-BPCJ5aaq.js → FixedCollectionParameter-DN_uJhpe.js} +1 -1
  14. package/dist/assets/{ForgotMyPasswordView-DyUaGd6Z.js → ForgotMyPasswordView-BMQBDIrq.js} +3 -3
  15. package/dist/assets/{InsightsChartAverageRuntime-BB2I2vpV.js → InsightsChartAverageRuntime-JzBkV6Rc.js} +4 -4
  16. package/dist/assets/{InsightsChartFailed-CN_Rl3Bl.js → InsightsChartFailed-DMD3c7zM.js} +4 -4
  17. package/dist/assets/{InsightsChartFailureRate-CHKlg6tg.js → InsightsChartFailureRate-D_qeZo4f.js} +4 -4
  18. package/dist/assets/{InsightsChartTimeSaved-Cd05cM8q.js → InsightsChartTimeSaved-Cw2T-Wvp.js} +4 -4
  19. package/dist/assets/{InsightsChartTotal-ChAO7myf.js → InsightsChartTotal-DlF47gob.js} +4 -4
  20. package/dist/assets/{InsightsDashboard-Bx4vx9gz.css → InsightsDashboard-BSrakbzr.css} +42 -8
  21. package/dist/assets/{InsightsDashboard-BeCfBVUz.js → InsightsDashboard-CxQ9H296.js} +40 -41
  22. package/dist/assets/{InsightsPaywall-Chz8CDc3.js → InsightsPaywall-hRkAfeHz.js} +1 -1
  23. package/dist/assets/InsightsSummary-BcXd-3nU.js +209 -0
  24. package/dist/assets/{InsightsSummary-CdlaUpAt.css → InsightsSummary-DzGQpM5h.css} +27 -24
  25. package/dist/assets/{InsightsTableWorkflows-Blv_GPUj.css → InsightsTableWorkflows-DfTZQkWL.css} +3 -4
  26. package/dist/assets/{InsightsTableWorkflows-5rpYY7YT.js → InsightsTableWorkflows-ybloXdDn.js} +5 -6
  27. package/dist/assets/{Logo-DUDCllkm.js → Logo-BGe7-2Vd.js} +1 -1
  28. package/dist/assets/{LogsPanel-D9r5AcQH.js → LogsPanel-DtTp6kY0.js} +331 -336
  29. package/dist/assets/{MainHeader-CEMGASqv.css → MainHeader-Y95RcfHb.css} +18 -18
  30. package/dist/assets/{MainHeader-DkKOOZ_D.js → MainHeader-h2DV-VuD.js} +13 -13
  31. package/dist/assets/{MainSidebar-ZUBIWeXm.js → MainSidebar-AAHHRXFA.js} +2 -2
  32. package/dist/assets/{NodeCreation-DCfAFuL5.js → NodeCreation-nHiG-Lhi.js} +3 -4
  33. package/dist/assets/{NodeCreator-a0YVv1IE.js → NodeCreator-weAzsmlU.js} +2 -3
  34. package/dist/assets/{NodeDetailsView-C5_hVJzj.js → NodeDetailsView-BsXbcyfb.js} +20 -11
  35. package/dist/assets/{NodeDetailsView-pYP-34nS.css → NodeDetailsView-DpO8nTmN.css} +16 -16
  36. package/dist/assets/{NodeView-Bk9h8GYy.js → NodeView-BY1O3wWl.js} +81 -38
  37. package/dist/assets/{ProjectCardBadge-DRlDZx3d.js → ProjectCardBadge-3xpk5Z4e.js} +1 -1
  38. package/dist/assets/{ProjectHeader-DNm605Kk.js → ProjectHeader-CpoOisjf.js} +2 -2
  39. package/dist/assets/{ProjectSettings-Dge_6KaR.js → ProjectSettings-B__3XaPY.js} +14 -4
  40. package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-CUf0LkWR.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-DaoPdG_5.js} +1 -1
  41. package/dist/assets/{ResourcesListLayout-Bbl-1i4l.js → ResourcesListLayout-DAxou314.js} +2 -2
  42. package/dist/assets/{RunData-DQeENuzG.css → RunData-CE5FsU6k.css} +2 -2
  43. package/dist/assets/{RunData-b0RE2JWc.js → RunData-fnd-jejc.js} +233 -92
  44. package/dist/assets/{RunDataAi-DnWcCR_0.js → RunDataAi-Ck3VGKP_.js} +3 -4
  45. package/dist/assets/{RunDataJson-CptVuHuA.js → RunDataJson-B80Z4URL.js} +7 -7
  46. package/dist/assets/{RunDataJsonActions-3jjDztw7.js → RunDataJsonActions-CdZi1Qul.js} +1 -1
  47. package/dist/assets/{RunDataParsedAiContent-BbXv-NPD.js → RunDataParsedAiContent-BczxQ63H.js} +5 -5
  48. package/dist/assets/{RunDataSearch-B90wjsDA.js → RunDataSearch-C4KmCz4c.js} +1 -1
  49. package/dist/assets/{RunDataTable-CpS78GlT.js → RunDataTable-CsLCZIWp.js} +3 -3
  50. package/dist/assets/{SamlOnboarding-Ch9K5rRW.js → SamlOnboarding-DkhjCrPa.js} +3 -3
  51. package/dist/assets/{SettingsApiView-9GU5n_rm.js → SettingsApiView-Ci2-rEpm.js} +1 -1
  52. package/dist/assets/{SettingsCommunityNodesView-CPnVRzNX.js → SettingsCommunityNodesView-_UOppuqS.js} +4 -4
  53. package/dist/assets/{SettingsExternalSecrets-D7xTMV9h.js → SettingsExternalSecrets-DHIkKr53.js} +1 -1
  54. package/dist/assets/{SettingsLdapView-OfrjGKkt.js → SettingsLdapView-B8ezgdqP.js} +1 -1
  55. package/dist/assets/{SettingsLogStreamingView-C_VnOaeX.js → SettingsLogStreamingView-YP6Xy7Fe.js} +1 -1
  56. package/dist/assets/{SettingsPersonalView-Dm24akPV.js → SettingsPersonalView-BmbFyWPb.js} +1 -1
  57. package/dist/assets/{SettingsSourceControl-DDCmL82j.js → SettingsSourceControl-DwaOdDke.js} +1 -1
  58. package/dist/assets/{SettingsSso-BGGQ0Cpg.js → SettingsSso-DOC-P2wt.js} +1 -1
  59. package/dist/assets/{SettingsUsageAndPlan-BzO_zdkH.js → SettingsUsageAndPlan-DVOLlEkG.js} +1 -1
  60. package/dist/assets/{SettingsUsersView-DHQUqhqB.js → SettingsUsersView-CN_KLeIm.js} +1 -1
  61. package/dist/assets/{SettingsView-CbtAqjOX.js → SettingsView-DiAhLyco.js} +1 -1
  62. package/dist/assets/{SetupView-BME1OE6U.js → SetupView-OE_yCNOU.js} +3 -3
  63. package/dist/assets/{SetupWorkflowCredentialsButton-DZr4TCPC.js → SetupWorkflowCredentialsButton-Dx1IkZgW.js} +1 -1
  64. package/dist/assets/{SetupWorkflowFromTemplateView-CPkKEY04.js → SetupWorkflowFromTemplateView-lQXKgIuL.js} +3 -3
  65. package/dist/assets/{SigninView-DUeRvOiY.js → SigninView-BWSrzbF7.js} +3 -3
  66. package/dist/assets/{SignoutView-BC7SBunZ.js → SignoutView-DxGgFxt2.js} +1 -1
  67. package/dist/assets/{SignupView-B5ecYJ2q.js → SignupView-Dtu5bMqF.js} +3 -3
  68. package/dist/assets/{TemplateDetails-DjanZgC1.js → TemplateDetails-CQ7TYqsP.js} +1 -1
  69. package/dist/assets/{TemplateList-8TyNGxY-.js → TemplateList-Cxmv-0p-.js} +1 -1
  70. package/dist/assets/{TemplatesCollectionView-BkH4pJCv.js → TemplatesCollectionView-xvV6FXib.js} +5 -5
  71. package/dist/assets/{TemplatesSearchView-Bcdhi1SL.js → TemplatesSearchView-CsECyZ52.js} +3 -3
  72. package/dist/assets/{TemplatesView-De2XB6We.js → TemplatesView-DrEKpZTU.js} +1 -1
  73. package/dist/assets/{TemplatesWorkflowView-BVnwtrMa.js → TemplatesWorkflowView-iSAL_yol.js} +5 -5
  74. package/dist/assets/{TestDefinitionEditView-DjmPnrTk.js → TestDefinitionEditView-C3ohfu_r.js} +6 -7
  75. package/dist/assets/{TestDefinitionListView-BL2s_qBZ.js → TestDefinitionListView-Dwto0jxH.js} +1 -1
  76. package/dist/assets/{TestDefinitionNewView-B9BqJZST.js → TestDefinitionNewView-9xVUm2ZJ.js} +2 -2
  77. package/dist/assets/{TestDefinitionRootView-AlWyxbc0.js → TestDefinitionRootView-DLurQ4xl.js} +1 -1
  78. package/dist/assets/{VariablesView-BZCvPfan.js → VariablesView-Cg2WSt_e.js} +4 -4
  79. package/dist/assets/{WorkerView-CigxqnWi.js → WorkerView-BG-Dl0Ej.js} +6 -6
  80. package/dist/assets/{WorkflowActivator-B7jRy4L1.js → WorkflowActivator-e7wvW1kJ.js} +11 -9
  81. package/dist/assets/{WorkflowExecutionsInfoAccordion-C_ZycbsF.js → WorkflowExecutionsInfoAccordion-CijtfO0l.js} +1 -1
  82. package/dist/assets/{WorkflowExecutionsLandingPage-DOqrfKlC.js → WorkflowExecutionsLandingPage-Do4y1yOx.js} +2 -2
  83. package/dist/assets/{WorkflowExecutionsPreview-B4Cj2gXW.js → WorkflowExecutionsPreview-Bqo_3PXl.js} +6 -6
  84. package/dist/assets/{WorkflowExecutionsView-RXfP7zkJ.js → WorkflowExecutionsView-C1gS45nc.js} +10 -10
  85. package/dist/assets/{WorkflowHistory-DrXrRwIS.js → WorkflowHistory-CypQw7rC.js} +3 -3
  86. package/dist/assets/{WorkflowOnboardingView-CXH1vCW2.js → WorkflowOnboardingView-DoKXpaNj.js} +1 -1
  87. package/dist/assets/{WorkflowPreview-B_MuFEV8.js → WorkflowPreview-Bxs5XzBX.js} +1 -1
  88. package/dist/assets/{WorkflowsView-D90hfJ35.js → WorkflowsView-BlvgD3xI.js} +9 -9
  89. package/dist/assets/{chartjs.utils-DalQn9bk.js → chartjs.utils-CuWcgqCr.js} +2 -2
  90. package/dist/assets/{dateFormatter-BPfJSa6q.js → dateFormatter-LbucaaRt.js} +1 -1
  91. package/dist/assets/{easyAiWorkflowUtils-kgtpBx2h.js → easyAiWorkflowUtils-_kvYb5hw.js} +1 -1
  92. package/dist/assets/{global-link-actions-CnWOMvqA.js → global-link-actions-DG0SjhQE.js} +1 -1
  93. package/dist/assets/{import-curl-BvX_O56D.js → import-curl-DQ6uPzZ1.js} +1 -1
  94. package/dist/assets/{index-yNaoC3fo.css → index-BA8d2DN9.css} +72 -418
  95. package/dist/assets/{index-DZ6VpjNj.js → index-hdsPF3tl.js} +60325 -57677
  96. package/dist/assets/{index-Bb2NNknG.js → index-vIybYvt3.js} +1 -1
  97. package/dist/assets/{pickBy-B_HGYyxS.js → pickBy-DmKUpB7M.js} +1 -1
  98. package/dist/assets/{polyfills-CLZ4X0Ad.js → polyfills-J2x06Gdp.js} +157 -224
  99. package/dist/assets/{templateActions-DQfZ3ni5.js → templateActions-DxoxchKp.js} +1 -1
  100. package/dist/assets/{typescript.worker-BsxN2afA.js → typescript.worker-B1loTpxy.js} +1 -1
  101. package/dist/assets/{useBeforeUnload-Cu0LPVWe.js → useBeforeUnload-B7JAQiE8.js} +1 -1
  102. package/dist/assets/{useCanvasMapping-VtpW_QZA.css → useCanvasMapping-CFf4cwnq.css} +6 -6
  103. package/dist/assets/{useCanvasMapping-CTTq6x8X.js → useCanvasMapping-CvcOHj5p.js} +56 -31
  104. package/dist/assets/{useClearExecutionButtonVisible-Dwc1_eG9.js → useClearExecutionButtonVisible-DFNEJves.js} +1 -2
  105. package/dist/assets/{useExecutionDebugging-rc72wLIp.js → useExecutionDebugging-DsRIfE0y.js} +1 -1
  106. package/dist/assets/{useExecutionHelpers-DqwMonFW.js → useExecutionHelpers-CEOL8_vt.js} +3 -3
  107. package/dist/assets/{useImportCurlCommand-D_onuFvo.js → useImportCurlCommand-DdIN4YaF.js} +2 -2
  108. package/dist/assets/{useProjectPages-e8b03-5_.js → useProjectPages-OGc-GAxb.js} +1 -1
  109. package/dist/assets/{usePushConnection-wm-7Id6Q.js → usePushConnection-DNGIaS0A.js} +16 -111
  110. package/dist/assets/{useTestDefinitionForm-DlUOnNC0.js → useTestDefinitionForm-Bi6EgFVm.js} +1 -1
  111. package/dist/assets/{useWorkflowActivate-65xML23U.js → useWorkflowActivate-CJ1hLmv2.js} +1 -1
  112. package/dist/assets/{useWorkflowSaving-CUel20JA.js → useWorkflowSaving-BuokdhTC.js} +1 -1
  113. package/dist/index.html +3 -3
  114. package/package.json +1 -1
  115. package/tsconfig.json +1 -0
  116. package/vite.config.mts +4 -0
  117. package/dist/assets/CollectionParameter-Cj4t6-hd.js +0 -4
  118. package/dist/assets/InsightsSummary-MECenLJQ.js +0 -207
  119. package/dist/assets/useCanvasOperations-u8oSDa_u.js +0 -2834
@@ -1,5 +1,4 @@
1
- import { _ as _export_sfc$1, i as createElementBlock, g as openBlock, k as createBaseVNode, d as defineComponent, fX as getCurrentScope, b0 as inject, fY as effectScope, X as watch, cZ as getCurrentInstance, fZ as useSlots, bb as onUnmounted, j as createVNode, x as renderSlot, w as withCtx, m as unref, r as ref, f_ as useAttrs, f as createCommentVNode, e as createBlock, b7 as mergeProps, F as Fragment, bO as toRef, f$ as Teleport, g0 as createPropsRestProxy, q as computed, o as onMounted, n as normalizeClass, bR as reactive, g1 as onScopeDispose, az as onBeforeMount, D as renderList, B as normalizeStyle, z as nextTick, y as onBeforeUnmount, g2 as isMemoSame, t as toDisplayString, b6 as resolveDynamicComponent, l as createTextVNode, b1 as isRef, b3 as toRefs$1, g3 as customRef, bh as provide, h as resolveComponent, aq as h, g4 as toValue$1, g5 as markRaw, g6 as readonly, c as useI18n, bQ as KeyboardShortcutTooltip, bm as NodeConnectionTypes, g7 as CanvasKey, Y as useCssModule, H as useUIStore, bz as useNodeTypesStore, Q as useWorkflowsStore, a0 as useSourceControlStore, a7 as getResourcePermissions, g8 as EXECUTE_WORKFLOW_NODE_TYPE, fD as getSubworkflowId, el as isPresent, g9 as getMousePosition$1, ay as STICKY_NODE_TYPE, bq as usePinnedData, ga as NOT_DUPLICATABLE_NODE_TYPES, gb as isExecutable, bK as useStyles, gc as N8nActionDropdown, cx as getDefaultExportFromCjs, fT as NODE_SIZE, cd as CanvasNodeRenderType, fU as GRID_SIZE, bN as useThrottleFn, gd as useActiveElement, ge as useDeviceSupport, gf as useEventListener$1, gg as onKeyDown, gh as onKeyUp, a_ as watchEffect, b4 as normalizeProps, aV as createSlots, c8 as isValidNodeConnectionType, c9 as CanvasConnectionMode, gi as CanvasNodeKey, gj as mergeModels, gk as useModel, bA as useNodeHelpers, gl as TitledList, aR as N8nTooltip, gm as CanvasNodeDirtiness, bC as _sfc_main$A, b2 as withModifiers, ah as nodeViewEventBus, cc as NODE_CREATOR_OPEN_SOURCES, bW as useBuilderStore, bd as withKeys, gn as CanvasNodeHandleKey, aA as withDirectives, aB as vShow, go as Transition$2, b as useRouter, bB as useRunWorkflow, aZ as LOGS_PANEL_STATE, bk as CHAT_TRIGGER_NODE_TYPE, C as createEventBus, eq as isEqual, p as useSettingsStore, c4 as Suspense, b5 as guardReactiveProps, gp as useNodeDirtiness, fC as CUSTOM_API_CALL_KEY, bw as getNodeInputs, by as getNodeOutputs, dB as getTriggerNodeServiceName, cu as sanitizeHtml, gq as WAIT_NODE_TYPE, gr as SEND_AND_WAIT_OPERATION, gs as FORM_NODE_TYPE, gt as WAIT_INDEFINITELY, gu as SIMULATE_NODE_TYPE, gv as SIMULATE_TRIGGER_NODE_TYPE, gw as getNodeIconSource } from "./index-DZ6VpjNj.js";
2
- import { p as parseCanvasConnectionHandleString, u as useNodeCreatorStore, a as useCanvasOperations, i as insertSpacersBetweenEndpoints, c as createCanvasConnectionHandleString, m as mapLegacyEndpointsToCanvasConnectionPort, d as checkOverlap, e as mapLegacyConnectionsToCanvasConnections } from "./useCanvasOperations-u8oSDa_u.js";
1
+ import { _ as _export_sfc$1, i as createElementBlock, g as openBlock, k as createBaseVNode, d as defineComponent, eD as getCurrentScope, b1 as inject, eE as effectScope, X as watch, d3 as getCurrentInstance, eF as useSlots, bc as onUnmounted, j as createVNode, x as renderSlot, w as withCtx, m as unref, r as ref, eG as useAttrs, f as createCommentVNode, e as createBlock, b8 as mergeProps, F as Fragment, bI as toRef, eH as Teleport, eI as createPropsRestProxy, q as computed, o as onMounted, n as normalizeClass, bS as reactive, eJ as onScopeDispose, az as onBeforeMount, D as renderList, B as normalizeStyle, z as nextTick, y as onBeforeUnmount, eK as isMemoSame, t as toDisplayString, b7 as resolveDynamicComponent, l as createTextVNode, b2 as isRef, b4 as toRefs$1, eL as customRef, bi as provide, h as resolveComponent, aq as h, eM as toValue$1, eN as markRaw, eO as readonly, c as useI18n, bL as KeyboardShortcutTooltip, by as NodeConnectionTypes, eP as CanvasKey, Y as useCssModule, eQ as parseCanvasConnectionHandleString, H as useUIStore, bz as useNodeTypesStore, Q as useWorkflowsStore, a0 as useSourceControlStore, a7 as getResourcePermissions, eR as isNodeWithWorkflowSelector, eS as getSubworkflowId, et as isPresent, eT as getMousePosition$1, ay as STICKY_NODE_TYPE, bl as usePinnedData, eU as NOT_DUPLICATABLE_NODE_TYPES, eV as isExecutable, bM as useStyles, eW as N8nActionDropdown, cD as getDefaultExportFromCjs, eX as NODE_SIZE, ci as CanvasNodeRenderType, eY as GRID_SIZE, bO as useThrottleFn, eZ as useActiveElement, e_ as useDeviceSupport, e$ as useEventListener$1, f0 as onKeyDown, f1 as onKeyUp, a$ as watchEffect, b5 as normalizeProps, aV as createSlots, ce as isValidNodeConnectionType, f2 as CanvasNodeKey, cf as CanvasConnectionMode, f3 as mergeModels, f4 as useModel, bA as useNodeHelpers, f5 as TitledList, aR as N8nTooltip, f6 as CanvasNodeDirtiness, bD as _sfc_main$A, b3 as withModifiers, bT as useNodeCreatorStore, ah as nodeViewEventBus, ch as NODE_CREATOR_OPEN_SOURCES, bY as useBuilderStore, be as withKeys, f7 as CanvasNodeHandleKey, aA as withDirectives, aB as vShow, f8 as Transition$2, b as useRouter, aY as useLogsStore, bB as useRunWorkflow, b_ as useCanvasOperations, c4 as CHAT_TRIGGER_NODE_TYPE, bh as N8nButton, f9 as insertSpacersBetweenEndpoints, cd as createCanvasConnectionHandleString, C as createEventBus, ey as isEqual, p as useSettingsStore, c9 as Suspense, b6 as guardReactiveProps, fa as useNodeDirtiness, fb as CUSTOM_API_CALL_KEY, fc as mapLegacyEndpointsToCanvasConnectionPort, bv as getNodeInputs, bx as getNodeOutputs, dH as getTriggerNodeServiceName, cA as sanitizeHtml, fd as WAIT_NODE_TYPE, fe as SEND_AND_WAIT_OPERATION, ff as FORM_NODE_TYPE, fg as WAIT_INDEFINITELY, fh as checkOverlap, fi as SIMULATE_NODE_TYPE, fj as SIMULATE_TRIGGER_NODE_TYPE, fk as mapLegacyConnectionsToCanvasConnections, fl as getNodeIconSource } from "./index-hdsPF3tl.js";
3
2
  const _sfc_main$z = {};
4
3
  const _hoisted_1$d = {
5
4
  xmlns: "http://www.w3.org/2000/svg",
@@ -10078,8 +10077,8 @@ const useContextMenu = (onAction = () => {
10078
10077
  const canOpenSubworkflow = computed(() => {
10079
10078
  if (targetNodes.value.length !== 1) return false;
10080
10079
  const node2 = targetNodes.value[0];
10081
- if (node2.type !== EXECUTE_WORKFLOW_NODE_TYPE) return false;
10082
- return getSubworkflowId(node2);
10080
+ if (!isNodeWithWorkflowSelector(node2)) return false;
10081
+ return !!getSubworkflowId(node2);
10083
10082
  });
10084
10083
  const targetNodeIds = computed(() => {
10085
10084
  if (!isOpen.value || !target.value) return [];
@@ -10213,7 +10212,6 @@ const useContextMenu = (onAction = () => {
10213
10212
  }
10214
10213
  ].filter(Boolean);
10215
10214
  if (nodes.length === 1) {
10216
- const isExecuteWorkflowNode = nodes[0].type === EXECUTE_WORKFLOW_NODE_TYPE;
10217
10215
  const singleNodeActions = onlyStickies ? [
10218
10216
  {
10219
10217
  id: "open",
@@ -10244,7 +10242,7 @@ const useContextMenu = (onAction = () => {
10244
10242
  disabled: isReadOnly.value
10245
10243
  }
10246
10244
  ];
10247
- if (isExecuteWorkflowNode) {
10245
+ if (isNodeWithWorkflowSelector(nodes[0])) {
10248
10246
  singleNodeActions.push({
10249
10247
  id: "open_sub_workflow",
10250
10248
  label: i18n.baseText("contextMenu.openSubworkflow"),
@@ -17431,7 +17429,7 @@ const _sfc_main$o = /* @__PURE__ */ defineComponent({
17431
17429
  };
17432
17430
  }
17433
17431
  });
17434
- const canvasEdgeToolbar = "_canvasEdgeToolbar_1d3yh_123";
17432
+ const canvasEdgeToolbar = "_canvasEdgeToolbar_uogmx_123";
17435
17433
  const style0$m = {
17436
17434
  canvasEdgeToolbar
17437
17435
  };
@@ -20743,19 +20741,19 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
20743
20741
  const router = useRouter();
20744
20742
  const i18n = useI18n();
20745
20743
  const workflowsStore = useWorkflowsStore();
20744
+ const logsStore = useLogsStore();
20746
20745
  const { runEntireWorkflow } = useRunWorkflow({ router });
20747
- const { toggleChatOpen } = useCanvasOperations({ router });
20748
- const isChatOpen = computed(() => workflowsStore.logsPanelState !== LOGS_PANEL_STATE.CLOSED);
20746
+ const { startChat } = useCanvasOperations({ router });
20747
+ const isChatOpen = computed(() => logsStore.isOpen);
20749
20748
  const isExecuting = computed(() => workflowsStore.isWorkflowRunning);
20750
20749
  const testId = computed(() => `execute-workflow-button-${__props.name}`);
20751
20750
  return (_ctx, _cache) => {
20752
20751
  const _component_FontAwesomeIcon = resolveComponent("FontAwesomeIcon");
20753
- const _component_N8nButton = resolveComponent("N8nButton");
20754
20752
  return openBlock(), createElementBlock("div", {
20755
20753
  class: normalizeClass(containerClass.value),
20756
- onClick: _cache[2] || (_cache[2] = withModifiers(() => {
20754
+ onClick: _cache[3] || (_cache[3] = withModifiers(() => {
20757
20755
  }, ["stop", "prevent"])),
20758
- onMousedown: _cache[3] || (_cache[3] = withModifiers(() => {
20756
+ onMousedown: _cache[4] || (_cache[4] = withModifiers(() => {
20759
20757
  }, ["stop", "prevent"]))
20760
20758
  }, [
20761
20759
  createBaseVNode("div", null, [
@@ -20768,22 +20766,40 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
20768
20766
  })
20769
20767
  ], 2),
20770
20768
  !_ctx.readOnly ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
20771
- _ctx.type === unref(CHAT_TRIGGER_NODE_TYPE) ? (openBlock(), createBlock(_component_N8nButton, {
20772
- key: 0,
20773
- type: isChatOpen.value ? "secondary" : "primary",
20774
- size: "large",
20775
- disabled: isExecuting.value,
20776
- "data-test-id": testId.value,
20777
- label: isChatOpen.value ? unref(i18n).baseText("chat.hide") : unref(i18n).baseText("chat.open"),
20778
- onClickCapture: _cache[0] || (_cache[0] = ($event) => unref(toggleChatOpen)("node"))
20779
- }, null, 8, ["type", "disabled", "data-test-id", "label"])) : (openBlock(), createBlock(_component_N8nButton, {
20769
+ _ctx.type === unref(CHAT_TRIGGER_NODE_TYPE) ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
20770
+ isChatOpen.value ? (openBlock(), createBlock(unref(N8nButton), {
20771
+ key: 0,
20772
+ type: "secondary",
20773
+ size: "large",
20774
+ disabled: isExecuting.value,
20775
+ "data-test-id": testId.value,
20776
+ label: unref(i18n).baseText("chat.hide"),
20777
+ onClickCapture: _cache[0] || (_cache[0] = ($event) => unref(logsStore).toggleOpen(false))
20778
+ }, null, 8, ["disabled", "data-test-id", "label"])) : (openBlock(), createBlock(KeyboardShortcutTooltip, {
20779
+ key: 1,
20780
+ label: unref(i18n).baseText("chat.open"),
20781
+ shortcut: { keys: ["c"] }
20782
+ }, {
20783
+ default: withCtx(() => [
20784
+ createVNode(unref(N8nButton), {
20785
+ type: "primary",
20786
+ size: "large",
20787
+ disabled: isExecuting.value,
20788
+ "data-test-id": testId.value,
20789
+ label: unref(i18n).baseText("chat.open"),
20790
+ onClickCapture: _cache[1] || (_cache[1] = ($event) => unref(startChat)("node"))
20791
+ }, null, 8, ["disabled", "data-test-id", "label"])
20792
+ ]),
20793
+ _: 1
20794
+ }, 8, ["label"]))
20795
+ ], 64)) : (openBlock(), createBlock(unref(N8nButton), {
20780
20796
  key: 1,
20781
20797
  type: "primary",
20782
20798
  size: "large",
20783
20799
  disabled: isExecuting.value,
20784
20800
  "data-test-id": testId.value,
20785
20801
  label: unref(i18n).baseText("nodeView.runButtonText.executeWorkflow"),
20786
- onClickCapture: _cache[1] || (_cache[1] = ($event) => unref(runEntireWorkflow)("node", _ctx.name))
20802
+ onClickCapture: _cache[2] || (_cache[2] = ($event) => unref(runEntireWorkflow)("node", _ctx.name))
20787
20803
  }, null, 8, ["disabled", "data-test-id", "label"]))
20788
20804
  ], 64)) : createCommentVNode("", true)
20789
20805
  ])
@@ -21157,7 +21173,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
21157
21173
  keyBindings: { type: Boolean, default: true },
21158
21174
  loading: { type: Boolean, default: false }
21159
21175
  },
21160
- emits: ["update:modelValue", "update:node:position", "update:nodes:position", "update:node:activated", "update:node:deactivated", "update:node:enabled", "update:node:selected", "update:node:name", "update:node:parameters", "update:node:inputs", "update:node:outputs", "click:node", "click:node:add", "run:node", "delete:node", "create:node", "create:sticky", "delete:nodes", "update:nodes:enabled", "copy:nodes", "duplicate:nodes", "update:nodes:pin", "cut:nodes", "delete:connection", "create:connection:start", "create:connection", "create:connection:end", "create:connection:cancelled", "click:connection:add", "click:pane", "run:workflow", "save:workflow", "create:workflow", "drag-and-drop", "tidy-up", "open:sub-workflow"],
21176
+ emits: ["update:modelValue", "update:node:position", "update:nodes:position", "update:node:activated", "update:node:deactivated", "update:node:enabled", "update:node:selected", "update:node:name", "update:node:parameters", "update:node:inputs", "update:node:outputs", "update:logs-open", "update:logs:input-open", "update:logs:output-open", "click:node", "click:node:add", "run:node", "delete:node", "create:node", "create:sticky", "delete:nodes", "update:nodes:enabled", "copy:nodes", "duplicate:nodes", "update:nodes:pin", "cut:nodes", "delete:connection", "create:connection:start", "create:connection", "create:connection:end", "create:connection:cancelled", "click:connection:add", "click:pane", "run:workflow", "save:workflow", "create:workflow", "drag-and-drop", "tidy-up", "viewport:change", "selection:end", "open:sub-workflow", "start-chat"],
21161
21177
  setup(__props, { emit: __emit }) {
21162
21178
  const $style = useCssModule();
21163
21179
  const emit = __emit;
@@ -21181,6 +21197,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
21181
21197
  onNodesInitialized,
21182
21198
  findNode,
21183
21199
  viewport,
21200
+ dimensions,
21184
21201
  nodesSelectionActive,
21185
21202
  setViewport,
21186
21203
  onEdgeMouseLeave,
@@ -21287,7 +21304,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
21287
21304
  ArrowLeft: emitWithLastSelectedNode(selectLeftNode),
21288
21305
  ArrowRight: emitWithLastSelectedNode(selectRightNode),
21289
21306
  shift_ArrowLeft: emitWithLastSelectedNode(selectUpstreamNodes),
21290
- shift_ArrowRight: emitWithLastSelectedNode(selectDownstreamNodes)
21307
+ shift_ArrowRight: emitWithLastSelectedNode(selectDownstreamNodes),
21308
+ l: () => emit("update:logs-open"),
21309
+ i: () => emit("update:logs:input-open"),
21310
+ o: () => emit("update:logs:output-open")
21291
21311
  };
21292
21312
  if (props.readOnly) return readOnlyKeymap;
21293
21313
  const fullKeymap = {
@@ -21303,7 +21323,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
21303
21323
  ctrl_alt_n: () => emit("create:workflow"),
21304
21324
  ctrl_enter: () => emit("run:workflow"),
21305
21325
  ctrl_s: () => emit("save:workflow"),
21306
- shift_alt_t: async () => await onTidyUp({ source: "keyboard-shortcut" })
21326
+ shift_alt_t: async () => await onTidyUp({ source: "keyboard-shortcut" }),
21327
+ c: () => emit("start-chat")
21307
21328
  };
21308
21329
  return fullKeymap;
21309
21330
  });
@@ -21341,7 +21362,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
21341
21362
  onUpdateNodesPosition(event.nodes.map(({ id: id2, position: position2 }) => ({ id: id2, position: position2 })));
21342
21363
  }
21343
21364
  function onNodeClick({ event, node: node2 }) {
21344
- emit("click:node", node2.id);
21365
+ emit("click:node", node2.id, getProjectedPosition(event));
21345
21366
  if (event.ctrlKey || event.metaKey || selectedNodes.value.length < 2) {
21346
21367
  return;
21347
21368
  }
@@ -21350,10 +21371,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
21350
21371
  function onSelectionDragStop(event) {
21351
21372
  onUpdateNodesPosition(event.nodes.map(({ id: id2, position: position2 }) => ({ id: id2, position: position2 })));
21352
21373
  }
21353
- function onSelectionEnd() {
21374
+ function onSelectionEnd(event) {
21354
21375
  if (selectedNodes.value.length === 1) {
21355
21376
  nodesSelectionActive.value = false;
21356
21377
  }
21378
+ emit("selection:end", getProjectedPosition(event));
21357
21379
  }
21358
21380
  function onSetNodeActivated(id2, event) {
21359
21381
  props.eventBus.emit("nodes:action", { ids: [id2], action: "update:node:activated" });
@@ -21475,8 +21497,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
21475
21497
  useViewportAutoAdjust(viewportRef, viewport, setViewport);
21476
21498
  function getProjectedPosition(event) {
21477
21499
  const bounds = viewportRef.value?.getBoundingClientRect() ?? { left: 0, top: 0 };
21478
- const offsetX = event?.clientX ?? 0;
21479
- const offsetY = event?.clientY ?? 0;
21500
+ const [offsetX, offsetY] = event ? getMousePosition$1(event) : [0, 0];
21480
21501
  return project({
21481
21502
  x: offsetX - bounds.left,
21482
21503
  y: offsetY - bounds.top
@@ -21510,6 +21531,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
21510
21531
  function onPaneMoveEnd() {
21511
21532
  isPaneMoving.value = false;
21512
21533
  }
21534
+ function onViewportChange() {
21535
+ emit("viewport:change", viewport.value, dimensions.value);
21536
+ }
21513
21537
  const nodeDataById = computed(() => {
21514
21538
  return props.nodes.reduce((acc, node2) => {
21515
21539
  acc[node2.id] = node2.data;
@@ -21687,7 +21711,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
21687
21711
  onSelectionEnd,
21688
21712
  onSelectionContextMenu: onOpenSelectionContextMenu,
21689
21713
  onDragover: onDragOver,
21690
- onDrop
21714
+ onDrop,
21715
+ onViewportChange
21691
21716
  }, {
21692
21717
  "node-canvas-node": withCtx((nodeProps) => [
21693
21718
  renderSlot(_ctx.$slots, "node", normalizeProps(guardReactiveProps({ nodeProps })), () => [
@@ -21794,7 +21819,7 @@ const style0 = {
21794
21819
  const cssModules = {
21795
21820
  "$style": style0
21796
21821
  };
21797
- const Canvas = /* @__PURE__ */ _export_sfc$1(_sfc_main, [["__cssModules", cssModules], ["__scopeId", "data-v-d4a7c14c"]]);
21822
+ const Canvas = /* @__PURE__ */ _export_sfc$1(_sfc_main, [["__cssModules", cssModules], ["__scopeId", "data-v-95b95635"]]);
21798
21823
  function useCanvasMapping({
21799
21824
  nodes,
21800
21825
  connections,
@@ -1,5 +1,4 @@
1
- import { R as useRoute, a0 as useSourceControlStore, Q as useWorkflowsStore, q as computed, b as useRouter, bz as useNodeTypesStore, bZ as START_NODE_TYPE } from "./index-DZ6VpjNj.js";
2
- import { a as useCanvasOperations } from "./useCanvasOperations-u8oSDa_u.js";
1
+ import { R as useRoute, a0 as useSourceControlStore, Q as useWorkflowsStore, q as computed, b as useRouter, b_ as useCanvasOperations, bz as useNodeTypesStore, c0 as START_NODE_TYPE } from "./index-hdsPF3tl.js";
3
2
  function useClearExecutionButtonVisible() {
4
3
  const route = useRoute();
5
4
  const sourceControlStore = useSourceControlStore();
@@ -1,4 +1,4 @@
1
- import { b as useRouter, a as useToast, Q as useWorkflowsStore, p as useSettingsStore, H as useUIStore, a6 as usePageRedirectionHelper, q as computed, aa as EnterpriseEditionFeature, c as useI18n, ct as DEBUG_PAYWALL_MODAL_KEY, aq as h, cu as sanitizeHtml, ai as useMessage, aj as MODAL_CONFIRM, V as VIEWS, ag as useTelemetry, Z as useRootStore, cv as isFullExecutionResponse } from "./index-DZ6VpjNj.js";
1
+ import { b as useRouter, a as useToast, Q as useWorkflowsStore, p as useSettingsStore, H as useUIStore, a6 as usePageRedirectionHelper, q as computed, aa as EnterpriseEditionFeature, c as useI18n, cz as DEBUG_PAYWALL_MODAL_KEY, aq as h, cA as sanitizeHtml, ai as useMessage, aj as MODAL_CONFIRM, V as VIEWS, ag as useTelemetry, Z as useRootStore, cB as isFullExecutionResponse } from "./index-hdsPF3tl.js";
2
2
  const useExecutionDebugging = () => {
3
3
  const telemetry = useTelemetry();
4
4
  const router = useRouter();
@@ -1,5 +1,5 @@
1
- import { c as convertToDisplayDate } from "./dateFormatter-BPfJSa6q.js";
2
- import { b as useRouter, V as VIEWS, ag as useTelemetry, c as useI18n } from "./index-DZ6VpjNj.js";
1
+ import { c as convertToDisplayDate } from "./dateFormatter-LbucaaRt.js";
2
+ import { b as useRouter, V as VIEWS, ag as useTelemetry, c as useI18n } from "./index-hdsPF3tl.js";
3
3
  function useExecutionHelpers() {
4
4
  const i18n = useI18n();
5
5
  const router = useRouter();
@@ -8,7 +8,7 @@ function useExecutionHelpers() {
8
8
  const status = {
9
9
  name: "unknown",
10
10
  createdAt: execution.createdAt?.toString() ?? "",
11
- startTime: formatDate(execution.startedAt),
11
+ startTime: formatDate(execution.startedAt ?? execution.createdAt),
12
12
  label: "Status unknown",
13
13
  runningTime: "",
14
14
  showTimestamp: true,
@@ -1,6 +1,6 @@
1
- import { hD as require$$0, cx as getDefaultExportFromCjs, a as useToast, m as unref, cY as assert, hE as CURL_IMPORT_NOT_SUPPORTED_PROTOCOLS, hF as CURL_IMPORT_NODES_PROTOCOLS, c as useI18n, hG as get } from "./index-DZ6VpjNj.js";
1
+ import { gt as require$$0, cD as getDefaultExportFromCjs, a as useToast, m as unref, d2 as assert, gu as CURL_IMPORT_NOT_SUPPORTED_PROTOCOLS, gv as CURL_IMPORT_NODES_PROTOCOLS, c as useI18n, gw as get } from "./index-hdsPF3tl.js";
2
2
  import { c as commonjsRequire } from "./_commonjs-dynamic-modules-TGKdzP3c.js";
3
- import { i as importCurlEventBus } from "./import-curl-BvX_O56D.js";
3
+ import { i as importCurlEventBus } from "./import-curl-DQ6uPzZ1.js";
4
4
  class CCError extends Error {
5
5
  }
6
6
  const UTF8encoder = new TextEncoder();
@@ -1,4 +1,4 @@
1
- import { R as useRoute, q as computed, V as VIEWS, bR as reactive } from "./index-DZ6VpjNj.js";
1
+ import { R as useRoute, q as computed, V as VIEWS, bS as reactive } from "./index-hdsPF3tl.js";
2
2
  const useProjectPages = () => {
3
3
  const route = useRoute();
4
4
  const isOverviewSubPage = computed(
@@ -1,31 +1,6 @@
1
- import { d as defineComponent, co as resolveDirective, i as createElementBlock, g as openBlock, aA as withDirectives, k as createBaseVNode, t as toDisplayString, m as unref, c as useI18n, Q as useWorkflowsStore, H as useUIStore, dx as clearPopupWindowState, ag as useTelemetry, dy as parse, dz as hasTrimmedItem, p as useSettingsStore, a5 as useWorkflowHelpers, ak as WORKFLOW_SETTINGS_MODAL_KEY, a as useToast, dA as generateNodesGraph, aq as h, bz as useNodeTypesStore, dB as getTriggerNodeServiceName, bA as useNodeHelpers, dC as hasTrimmedData, aP as useExternalHooks, dD as codeNodeEditorEventBus, bS as useCredentialsStore, dE as useAssistantStore, dF as useSchemaPreviewStore, dG as isCommunityPackageName, dH as makeRestApiRequest, O as defineStore, Z as useRootStore, P as usePushConnectionStore, r as ref } from "./index-DZ6VpjNj.js";
2
- import { g as getEasyAiWorkflowJson } from "./easyAiWorkflowUtils-kgtpBx2h.js";
3
- import { g as globalLinkActionsEventBus } from "./global-link-actions-CnWOMvqA.js";
4
- const _hoisted_1 = { "data-test-id": "sanitized-error-message" };
5
- const _hoisted_2 = ["data-action-parameter-node"];
6
- const _sfc_main = /* @__PURE__ */ defineComponent({
7
- __name: "NodeExecutionErrorMessage",
8
- props: {
9
- nodeName: {},
10
- errorMessage: {}
11
- },
12
- setup(__props) {
13
- const i18n = useI18n();
14
- return (_ctx, _cache) => {
15
- const _directive_n8n_html = resolveDirective("n8n-html");
16
- return openBlock(), createElementBlock("div", null, [
17
- withDirectives(createBaseVNode("span", _hoisted_1, null, 512), [
18
- [_directive_n8n_html, _ctx.errorMessage]
19
- ]),
20
- _cache[0] || (_cache[0] = createBaseVNode("br", null, null, -1)),
21
- createBaseVNode("a", {
22
- "data-action": "openNodeDetail",
23
- "data-action-parameter-node": _ctx.nodeName
24
- }, toDisplayString(unref(i18n).baseText("node.executionError.openNode")), 9, _hoisted_2)
25
- ]);
26
- };
27
- }
28
- });
1
+ import { Q as useWorkflowsStore, H as useUIStore, dD as clearPopupWindowState, ag as useTelemetry, bP as parse, dE as hasTrimmedItem, p as useSettingsStore, a5 as useWorkflowHelpers, ak as WORKFLOW_SETTINGS_MODAL_KEY, a as useToast, dF as generateNodesGraph, c as useI18n, dG as getExecutionErrorToastConfiguration, bz as useNodeTypesStore, dH as getTriggerNodeServiceName, bA as useNodeHelpers, dI as hasTrimmedData, aP as useExternalHooks, dJ as codeNodeEditorEventBus, dK as getExecutionErrorMessage, bU as useCredentialsStore, dL as useAssistantStore, dM as useSchemaPreviewStore, dN as isCommunityPackageName, dO as makeRestApiRequest, O as defineStore, Z as useRootStore, P as usePushConnectionStore, r as ref } from "./index-hdsPF3tl.js";
2
+ import { g as getEasyAiWorkflowJson } from "./easyAiWorkflowUtils-_kvYb5hw.js";
3
+ import { g as globalLinkActionsEventBus } from "./global-link-actions-DG0SjhQE.js";
29
4
  async function executionFinished({ data }, options) {
30
5
  const workflowsStore = useWorkflowsStore();
31
6
  const uiStore = useUIStore();
@@ -122,35 +97,6 @@ function getRunExecutionData(execution) {
122
97
  }
123
98
  return runExecutionData;
124
99
  }
125
- function getExecutionError(execution) {
126
- const error = execution.data?.resultData.error;
127
- const i18n = useI18n();
128
- let errorMessage;
129
- if (execution.data?.resultData.lastNodeExecuted && error) {
130
- errorMessage = error.message ?? error.description ?? "";
131
- } else {
132
- errorMessage = i18n.baseText("pushConnection.executionError", {
133
- interpolate: { error: "!" }
134
- });
135
- if (error?.message) {
136
- let nodeName;
137
- if ("node" in error) {
138
- nodeName = typeof error.node === "string" ? error.node : error.node.name;
139
- }
140
- const receivedError = nodeName ? `${nodeName}: ${error.message}` : error.message;
141
- errorMessage = i18n.baseText("pushConnection.executionError", {
142
- interpolate: {
143
- error: `.${i18n.baseText("pushConnection.executionError.details", {
144
- interpolate: {
145
- details: receivedError
146
- }
147
- })}`
148
- }
149
- });
150
- }
151
- }
152
- return errorMessage;
153
- }
154
100
  function getRunDataExecutedErrorMessage(execution) {
155
101
  const i18n = useI18n();
156
102
  if (execution.status === "crashed") {
@@ -161,7 +107,10 @@ function getRunDataExecutedErrorMessage(execution) {
161
107
  interpolate: { activeExecutionId: workflowsStore.activeExecutionId ?? "" }
162
108
  });
163
109
  }
164
- return getExecutionError(execution);
110
+ return getExecutionErrorMessage({
111
+ error: execution.data?.resultData.error,
112
+ lastNodeExecuted: execution.data?.resultData.lastNodeExecuted
113
+ });
165
114
  }
166
115
  function handleExecutionFinishedWithWaitTill(options) {
167
116
  const workflowsStore = useWorkflowsStore();
@@ -189,7 +138,6 @@ function handleExecutionFinishedWithErrorOrCanceled(execution, runExecutionData,
189
138
  const workflowsStore = useWorkflowsStore();
190
139
  const workflowHelpers = useWorkflowHelpers(options);
191
140
  const workflowObject = workflowsStore.getCurrentWorkflow();
192
- const runDataExecutedErrorMessage = getRunDataExecutedErrorMessage(execution);
193
141
  workflowHelpers.setDocumentTitle(workflowObject.name, "ERROR");
194
142
  if (runExecutionData.resultData.error?.name === "ExpressionError" && runExecutionData.resultData.error.functionality === "pairedItem") {
195
143
  const error = runExecutionData.resultData.error;
@@ -222,52 +170,17 @@ function handleExecutionFinishedWithErrorOrCanceled(execution, runExecutionData,
222
170
  });
223
171
  });
224
172
  }
225
- if (runExecutionData.resultData.error?.name === "SubworkflowOperationError") {
226
- const error = runExecutionData.resultData.error;
227
- workflowsStore.subWorkflowExecutionError = error;
173
+ if (execution.status === "canceled") {
228
174
  toast.showMessage({
229
- title: error.message,
230
- message: error.description,
231
- type: "error",
232
- duration: 0
175
+ title: i18n.baseText("nodeView.showMessage.stopExecutionTry.title"),
176
+ type: "success"
233
177
  });
234
- } else if ((runExecutionData.resultData.error?.name === "NodeOperationError" || runExecutionData.resultData.error?.name === "NodeApiError") && runExecutionData.resultData.error.functionality === "configuration-node") {
235
- let title;
236
- const nodeError = runExecutionData.resultData.error;
237
- if (nodeError.node.name) {
238
- title = `Error in sub-node ‘${nodeError.node.name}‘`;
239
- } else {
240
- title = "Problem executing workflow";
241
- }
242
- toast.showMessage({
243
- title,
244
- message: h(_sfc_main, {
245
- errorMessage: nodeError?.description ?? runDataExecutedErrorMessage,
246
- nodeName: nodeError.node.name
247
- }),
248
- type: "error",
249
- duration: 0
178
+ } else if (execution.data?.resultData.error) {
179
+ const { message, title } = getExecutionErrorToastConfiguration({
180
+ error: execution.data.resultData.error,
181
+ lastNodeExecuted: execution.data?.resultData.lastNodeExecuted
250
182
  });
251
- } else {
252
- if (execution.status === "canceled") {
253
- toast.showMessage({
254
- title: i18n.baseText("nodeView.showMessage.stopExecutionTry.title"),
255
- type: "success"
256
- });
257
- } else {
258
- let title;
259
- if (runExecutionData.resultData.lastNodeExecuted) {
260
- title = `Problem in node ‘${runExecutionData.resultData.lastNodeExecuted}‘`;
261
- } else {
262
- title = "Problem executing workflow";
263
- }
264
- toast.showMessage({
265
- title,
266
- message: runDataExecutedErrorMessage,
267
- type: "error",
268
- duration: 0
269
- });
270
- }
183
+ toast.showMessage({ title, message, type: "error", duration: 0 });
271
184
  }
272
185
  }
273
186
  function handleExecutionFinishedSuccessfully(workflowId, options) {
@@ -330,7 +243,6 @@ function setRunExecutionData(execution, runExecutionData) {
330
243
  if (workflowsStore.getWorkflowRunData && !hasTrimmedData(workflowsStore.getWorkflowRunData)) {
331
244
  runExecutionData.resultData.runData = workflowsStore.getWorkflowRunData;
332
245
  }
333
- removeRunningTaskData(runExecutionData.resultData.runData);
334
246
  workflowsStore.executingNode.length = 0;
335
247
  workflowsStore.setWorkflowExecutionData({
336
248
  ...workflowExecution,
@@ -357,13 +269,6 @@ function setRunExecutionData(execution, runExecutionData) {
357
269
  const lineNumber = runExecutionData.resultData?.error?.lineNumber;
358
270
  codeNodeEditorEventBus.emit("highlightLine", lineNumber ?? "last");
359
271
  }
360
- function removeRunningTaskData(runData) {
361
- for (const [nodeName, taskItems] of Object.entries(runData)) {
362
- if (taskItems.some((item) => item.executionStatus === "running")) {
363
- runData[nodeName] = taskItems.filter((item) => item.executionStatus !== "running");
364
- }
365
- }
366
- }
367
272
  async function executionRecovered({ data }, options) {
368
273
  const workflowsStore = useWorkflowsStore();
369
274
  const uiStore = useUIStore();
@@ -421,7 +326,7 @@ async function nodeExecuteAfter({ data: pushData }) {
421
326
  async function nodeExecuteBefore({ data }) {
422
327
  const workflowsStore = useWorkflowsStore();
423
328
  workflowsStore.addExecutingNode(data.nodeName);
424
- workflowsStore.addNodeExecutionData(data);
329
+ workflowsStore.addNodeExecutionStartedData(data);
425
330
  }
426
331
  async function reloadNodeType({ data }) {
427
332
  const nodeTypesStore = useNodeTypesStore();
@@ -1,4 +1,4 @@
1
- import { gU as useTestDefinitionStore, r as ref, q as computed } from "./index-DZ6VpjNj.js";
1
+ import { fJ as useTestDefinitionStore, r as ref, q as computed } from "./index-hdsPF3tl.js";
2
2
  function useTestDefinitionForm() {
3
3
  const evaluationsStore = useTestDefinitionStore();
4
4
  const state = ref({
@@ -1,4 +1,4 @@
1
- import { r as ref, b as useRouter, a5 as useWorkflowHelpers, Q as useWorkflowsStore, H as useUIStore, a as useToast, a3 as useNpsSurveyStore, S as PLACEHOLDER_EMPTY_WORKFLOW_ID, ag as useTelemetry, aP as useExternalHooks, c as useI18n, aJ as useStorage, dO as LOCAL_STORAGE_ACTIVATION_FLAG, dP as WORKFLOW_ACTIVE_MODAL_KEY } from "./index-DZ6VpjNj.js";
1
+ import { r as ref, b as useRouter, a5 as useWorkflowHelpers, Q as useWorkflowsStore, H as useUIStore, a as useToast, a3 as useNpsSurveyStore, S as PLACEHOLDER_EMPTY_WORKFLOW_ID, ag as useTelemetry, aP as useExternalHooks, c as useI18n, aJ as useStorage, dV as LOCAL_STORAGE_ACTIVATION_FLAG, dW as WORKFLOW_ACTIVE_MODAL_KEY } from "./index-hdsPF3tl.js";
2
2
  function useWorkflowActivate() {
3
3
  const updatingWorkflowActivation = ref(false);
4
4
  const router = useRouter();
@@ -1,4 +1,4 @@
1
- import { H as useUIStore, a3 as useNpsSurveyStore, Q as useWorkflowsStore, a5 as useWorkflowHelpers, ai as useMessage, c as useI18n, cl as MODAL_CLOSE, S as PLACEHOLDER_EMPTY_WORKFLOW_ID, cm as MODAL_CANCEL, aj as MODAL_CONFIRM, V as VIEWS } from "./index-DZ6VpjNj.js";
1
+ import { H as useUIStore, a3 as useNpsSurveyStore, Q as useWorkflowsStore, a5 as useWorkflowHelpers, ai as useMessage, c as useI18n, cr as MODAL_CLOSE, S as PLACEHOLDER_EMPTY_WORKFLOW_ID, cs as MODAL_CANCEL, aj as MODAL_CONFIRM, V as VIEWS } from "./index-hdsPF3tl.js";
2
2
  function useWorkflowSaving({ router }) {
3
3
  const uiStore = useUIStore();
4
4
  const npsSurveyStore = useNpsSurveyStore();
package/dist/index.html CHANGED
@@ -1,7 +1,7 @@
1
1
  <!DOCTYPE html>
2
2
  <html lang="en">
3
3
  <head>
4
- <script type="module" crossorigin src="/{{BASE_PATH}}/assets/polyfills-CLZ4X0Ad.js"></script>
4
+ <script type="module" crossorigin src="/{{BASE_PATH}}/assets/polyfills-J2x06Gdp.js"></script>
5
5
 
6
6
  <meta charset="utf-8" />
7
7
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
@@ -16,8 +16,8 @@
16
16
  <script>!function(t,e){var o,n,p,r;e.__SV||(window.posthog=e,e._i=[],e.init=function(i,s,a){function g(t,e){var o=e.split(".");2==o.length&&(t=t[o[0]],e=o[1]),t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}}(p=t.createElement("script")).type="text/javascript",p.async=!0,p.src=s.api_host+"/static/array.js",(r=t.getElementsByTagName("script")[0]).parentNode.insertBefore(p,r);var u=e;for(void 0!==a?u=e[a]=[]:a="posthog",u.people=u.people||[],u.toString=function(t){var e="posthog";return"posthog"!==a&&(e+="."+a),t||(e+=" (stub)"),e},u.people.toString=function(){return u.toString(1)+".people (stub)"},o="capture identify alias people.set people.set_once set_config register register_once unregister opt_out_capturing has_opted_out_capturing opt_in_capturing reset isFeatureEnabled getFeatureFlag onFeatureFlags reloadFeatureFlags".split(" "),n=0;n<o.length;n++)g(u,o[n]);e._i.push([i,s,a])},e.__SV=1)}(document,window.posthog||[])</script>
17
17
 
18
18
  <title>n8n.io - Workflow Automation</title>
19
- <script type="module" crossorigin src="/{{BASE_PATH}}/assets/index-DZ6VpjNj.js"></script>
20
- <link rel="stylesheet" crossorigin href="/{{BASE_PATH}}/assets/index-yNaoC3fo.css">
19
+ <script type="module" crossorigin src="/{{BASE_PATH}}/assets/index-hdsPF3tl.js"></script>
20
+ <link rel="stylesheet" crossorigin href="/{{BASE_PATH}}/assets/index-BA8d2DN9.css">
21
21
  </head>
22
22
  <body>
23
23
  <noscript>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n8n-editor-ui",
3
- "version": "1.93.0",
3
+ "version": "1.94.0",
4
4
  "description": "Workflow Editor UI for n8n",
5
5
  "main": "index.js",
6
6
  "license": "SEE LICENSE IN LICENSE.md",
package/tsconfig.json CHANGED
@@ -14,6 +14,7 @@
14
14
  "@n8n/composables*": ["../@n8n/composables/src*"],
15
15
  "@n8n/chat*": ["../@n8n/chat/src*"],
16
16
  "@n8n/design-system*": ["../@n8n/design-system/src*"],
17
+ "@n8n/stores*": ["../@n8n/stores/src*"],
17
18
  "@n8n/api-types*": ["../../@n8n/api-types/src*"],
18
19
  "@n8n/utils*": ["../../@n8n/utils/src*"]
19
20
  },
package/vite.config.mts CHANGED
@@ -35,6 +35,10 @@ const alias = [
35
35
  find: /^@n8n\/design-system(.+)$/,
36
36
  replacement: resolve(packagesDir, 'frontend', '@n8n', 'design-system', 'src$1'),
37
37
  },
38
+ {
39
+ find: /^@n8n\/stores(.+)$/,
40
+ replacement: resolve(packagesDir, 'frontend', '@n8n', 'stores', 'src$1'),
41
+ },
38
42
  {
39
43
  find: /^@n8n\/utils(.+)$/,
40
44
  replacement: resolve(packagesDir, '@n8n', 'utils', 'src$1'),
@@ -1,4 +0,0 @@
1
- import { hC as _sfc_main } from "./index-DZ6VpjNj.js";
2
- export {
3
- _sfc_main as default
4
- };