n8n-editor-ui 1.101.0 → 1.102.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 (132) hide show
  1. package/dist/assets/{ActionDropdown-BujIG0Jq.js → ActionDropdown-D-JmCYsp.js} +2 -2
  2. package/dist/assets/{AnimatedSpinner-B5cpb6Fs.js → AnimatedSpinner-BiuDg2x2.js} +1 -1
  3. package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-BPigGQTI.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-Bp194Fz4.js} +1 -1
  4. package/dist/assets/{AuthView-BOTPYtpM.js → AuthView-DF-20OPE.js} +2 -2
  5. package/dist/assets/{ChangePasswordView-DbeC55bz.js → ChangePasswordView-DSn8-M1-.js} +3 -3
  6. package/dist/assets/CollectionParameter-Bz5DzZqs.js +4 -0
  7. package/dist/assets/{CredentialsView-DUh5K-2r.js → CredentialsView-IQx76pD4.js} +8 -8
  8. package/dist/assets/{DemoFooter-BXPfbNJE.js → DemoFooter-49OiW0k2.js} +8 -7
  9. package/dist/assets/{EmptySharedSectionActionBox.vue_vue_type_script_setup_true_lang-CDDQIxv5.js → EmptySharedSectionActionBox.vue_vue_type_script_setup_true_lang-FNKd4r6R.js} +1 -1
  10. package/dist/assets/{EntityNotFound-CBUuOOYw.js → EntityNotFound-DScKsOtg.js} +1 -1
  11. package/dist/assets/{EntityUnAuthorised-7xgN3ECo.js → EntityUnAuthorised-DweZmhgI.js} +1 -1
  12. package/dist/assets/{ErrorView-BVfcsoOa.js → ErrorView-CNDVS4gm.js} +4 -4
  13. package/dist/assets/{EvaluationsRootView-BjrpKDj-.js → EvaluationsRootView-81SdPChp.js} +19 -27
  14. package/dist/assets/{EvaluationsView-DdmFZCH-.js → EvaluationsView-BAyQWPF9.js} +7 -7
  15. package/dist/assets/{ExecutionsTime-kMSlccIr.css → ExecutionsTime-DkME6I3E.css} +26 -19
  16. package/dist/assets/{ExecutionsTime.vue_vue_type_script_setup_true_lang-Ctx5Ybnr.js → ExecutionsTime.vue_vue_type_script_setup_true_lang-Qw7S05EC.js} +23 -21
  17. package/dist/assets/{ExecutionsView-8BjGHy2I.js → ExecutionsView--yDyvnL8.js} +15 -16
  18. package/dist/assets/{ExecutionsView-DSsowKj4.css → ExecutionsView-BHBePl1_.css} +1 -1
  19. package/dist/assets/{FileSaver.min-C5wzcK59.js → FileSaver.min-CeGSkamF.js} +1 -1
  20. package/dist/assets/{FixedCollectionParameter-DjlaZyUQ.css → FixedCollectionParameter-CEzpjeQZ.css} +18 -18
  21. package/dist/assets/{FixedCollectionParameter-BrPQ5Vay.js → FixedCollectionParameter-tgbkzIuD.js} +7 -7
  22. package/dist/assets/{ForgotMyPasswordView-L0afefc1.js → ForgotMyPasswordView-CVwKac4K.js} +3 -3
  23. package/dist/assets/{InfoAccordion-CEk3XG5b.js → InfoAccordion-75IQV-_q.js} +1 -1
  24. package/dist/assets/{InsightsChartAverageRuntime-BrwBWr_R.js → InsightsChartAverageRuntime-C4C4zghF.js} +4 -4
  25. package/dist/assets/{InsightsChartFailed-ILKWvikG.js → InsightsChartFailed-DyhWE17m.js} +4 -4
  26. package/dist/assets/{InsightsChartFailureRate-D1AVYwU7.js → InsightsChartFailureRate-B09GcGvY.js} +4 -4
  27. package/dist/assets/{InsightsChartTimeSaved-D49Rwn6-.js → InsightsChartTimeSaved-DGzFyou3.js} +4 -4
  28. package/dist/assets/{InsightsChartTotal-Bs-pUgA3.js → InsightsChartTotal-fIUzF41H.js} +4 -4
  29. package/dist/assets/{InsightsDashboard-BIC4uZpW.js → InsightsDashboard-Qhv7fScv.js} +10 -10
  30. package/dist/assets/{InsightsPaywall-DmwFI-6e.js → InsightsPaywall-C3-la0kD.js} +1 -1
  31. package/dist/assets/{InsightsSummary-D9lEzWNT.js → InsightsSummary-CJgV5s0y.js} +14 -13
  32. package/dist/assets/{InsightsSummary-DzGQpM5h.css → InsightsSummary-DTFIhBF3.css} +25 -27
  33. package/dist/assets/InsightsTableWorkflows-P5OHXu1Y.js +177 -0
  34. package/dist/assets/{Logo-DNxOhbuV.js → Logo-8MWdHUz0.js} +1 -1
  35. package/dist/assets/{LogsPanel-DvWnD7rJ.js → LogsPanel-BabpRONg.js} +279 -212
  36. package/dist/assets/{LogsPanel-D5R6F35L.css → LogsPanel-Bvy4ANV7.css} +106 -61
  37. package/dist/assets/{MainHeader-BVHIuVVT.js → MainHeader-0ppftO6b.js} +10 -10
  38. package/dist/assets/{MainSidebar-CEHr93uL.js → MainSidebar-BnXOkYK4.js} +23 -16
  39. package/dist/assets/{MainSidebar-DqrgzqvZ.css → MainSidebar-CaLHZgDB.css} +2 -2
  40. package/dist/assets/{InsightsTableWorkflows-CC8t-sAL.js → N8nDataTableServer-Cx18Zd1O.js} +9 -181
  41. package/dist/assets/{NodeCreation-Bq5626Ha.js → NodeCreation-DKbc91uY.js} +7 -7
  42. package/dist/assets/{NodeCreator-Dk0sNXFZ.css → NodeCreator-DWE25utr.css} +51 -58
  43. package/dist/assets/{NodeCreator-D7xT3ogw.js → NodeCreator-xRYJHbTG.js} +118 -112
  44. package/dist/assets/NodeDetailsView-CPVE5S8P.js +1155 -0
  45. package/dist/assets/NodeDetailsView-CaTI-1QQ.css +668 -0
  46. package/dist/assets/NodeDetailsViewV2-5pxsZwAo.js +1061 -0
  47. package/dist/assets/NodeDetailsViewV2-BxNx4ZUM.css +506 -0
  48. package/dist/assets/{NodeView-DL8JxnMc.css → NodeView-Cgf2HuDk.css} +263 -110
  49. package/dist/assets/{NodeView-DoR46iB5.js → NodeView-DYjZmKNE.js} +580 -409
  50. package/dist/assets/{ProjectHeader-DSKKwiQ0.js → ProjectHeader-e8JosKaj.js} +5 -5
  51. package/dist/assets/{ProjectSettings-C3sMIDHh.js → ProjectSettings-DNKcVLkd.js} +201 -25
  52. package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-cnANEo9o.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-EuKDPqQH.js} +3 -3
  53. package/dist/assets/{ResourcesListLayout-BVbjqFbc.js → ResourcesListLayout-C4y0iPmg.js} +4 -4
  54. package/dist/assets/{RunData-DG20AzLo.js → RunData-D3xzjO33.js} +124 -99
  55. package/dist/assets/{RunData-B5_okvCv.css → RunData-DuKNwYqe.css} +99 -85
  56. package/dist/assets/{RunDataJson-7okRLIES.js → RunDataJson-D5YFtOcJ.js} +16 -20
  57. package/dist/assets/{RunDataJsonActions-DrgwFS0W.css → RunDataJsonActions-B2jW3_UG.css} +3 -5
  58. package/dist/assets/{RunDataJsonActions-Qkg8HmUd.js → RunDataJsonActions-BWvs4coo.js} +15 -16
  59. package/dist/assets/{RunDataParsedAiContent-DRO1Bjsh.js → RunDataParsedAiContent-BYISiW-I.js} +12 -12
  60. package/dist/assets/{RunDataParsedAiContent-9EEUzCKp.css → RunDataParsedAiContent-wfIiKsq7.css} +16 -13
  61. package/dist/assets/{RunDataSearch-R6qtl0Jf.css → RunDataSearch-2eEalFoi.css} +8 -7
  62. package/dist/assets/{RunDataSearch-D5eQUWvi.js → RunDataSearch-oo3_BoLt.js} +4 -4
  63. package/dist/assets/{RunDataTable-CJmmTtEp.js → RunDataTable-6rCOQNCX.js} +126 -54
  64. package/dist/assets/{RunDataTable-CykHIwNT.css → RunDataTable-CTBtmQIs.css} +84 -44
  65. package/dist/assets/{SamlOnboarding-ClxYfm5z.js → SamlOnboarding-BG-gGcbY.js} +3 -3
  66. package/dist/assets/{SettingsApiView-Ds7FYVrN.js → SettingsApiView-Bmlbp7pD.js} +1 -1
  67. package/dist/assets/{SettingsCommunityNodesView-QKvLs6gi.js → SettingsCommunityNodesView-4DWd4UiC.js} +32 -6
  68. package/dist/assets/{SettingsExternalSecrets-d1KDgYYp.css → SettingsExternalSecrets-BAX9ENm9.css} +9 -6
  69. package/dist/assets/{SettingsExternalSecrets-DGRdvsMy.js → SettingsExternalSecrets-hpUcipWw.js} +17 -13
  70. package/dist/assets/{SettingsLdapView-C_LJwixk.js → SettingsLdapView-7p7L95v9.js} +1 -1
  71. package/dist/assets/{SettingsLogStreamingView-CaEJvgJ9.js → SettingsLogStreamingView-4CpWJqj_.js} +1 -1
  72. package/dist/assets/{SettingsPersonalView-DlwXaGDs.js → SettingsPersonalView-9iP06ihA.js} +11 -3
  73. package/dist/assets/{SettingsSourceControl-B6eULOfX.js → SettingsSourceControl-BGjWhqqJ.js} +5 -5
  74. package/dist/assets/{SettingsSso-5zcg-J4E.js → SettingsSso-ChOyD3kc.js} +1 -1
  75. package/dist/assets/{SettingsUsageAndPlan-CMBvYdjo.js → SettingsUsageAndPlan-jP8nn4Rh.js} +1 -1
  76. package/dist/assets/SettingsUsersView-BhfbqjxW.js +861 -0
  77. package/dist/assets/SettingsUsersView-BuZbf1jq.css +446 -0
  78. package/dist/assets/{SettingsView-Bawwm19P.css → SettingsView-4yzof_Pb.css} +4 -4
  79. package/dist/assets/{SettingsView-BuDKhqwZ.js → SettingsView-DTFEdRdj.js} +14 -14
  80. package/dist/assets/{SetupView-DSaQcQDF.js → SetupView-CXuAO6tx.js} +3 -3
  81. package/dist/assets/{SetupWorkflowCredentialsButton-BWISZAxq.js → SetupWorkflowCredentialsButton-Bj4rSqAV.js} +2 -2
  82. package/dist/assets/{SetupWorkflowFromTemplateView-CfDWCwoA.js → SetupWorkflowFromTemplateView-DG8Ml3A0.js} +8 -12
  83. package/dist/assets/{SigninView-BpjyswHb.js → SigninView-KmmptKWN.js} +7 -3
  84. package/dist/assets/{SignoutView-f_CoUl4S.js → SignoutView-8rAPEX_X.js} +1 -1
  85. package/dist/assets/{SignupView-q3f9g3P9.js → SignupView-ZYUP6f-Y.js} +3 -3
  86. package/dist/assets/{TableBase-DruQl-SO.js → TableBase-7XxrB0dw.js} +1 -1
  87. package/dist/assets/{Tags-DbmKHzWo.js → Tags-C8Jnw74N.js} +1 -1
  88. package/dist/assets/{TemplateDetails-DP_5pkzG.js → TemplateDetails-Bk1ixuRQ.js} +2 -2
  89. package/dist/assets/{TemplateList-y8Aumcsb.js → TemplateList-9SAC8OGn.js} +6 -3
  90. package/dist/assets/{TemplatesCollectionView-VdQpHtxs.js → TemplatesCollectionView-CLZDJ4HM.js} +6 -6
  91. package/dist/assets/{TemplatesSearchView-BUcYRVEK.js → TemplatesSearchView-DRzdGp3s.js} +8 -8
  92. package/dist/assets/{TemplatesView-4DUEEEtD.js → TemplatesView-V6ud-nM5.js} +3 -3
  93. package/dist/assets/{TemplatesWorkflowView--zUXMB8f.js → TemplatesWorkflowView-CLb4CuR2.js} +6 -6
  94. package/dist/assets/{NodeDetailsView-DB-5JPUD.js → TriggerPanel-BOC7PYsi.js} +498 -1415
  95. package/dist/assets/{NodeDetailsView-BaIj2qAa.css → TriggerPanel-DRpKKKun.css} +296 -903
  96. package/dist/assets/{VariablesView-DoWb0Vtv.js → VariablesView-BDzhSaxw.js} +6 -6
  97. package/dist/assets/{VariablesView-Kog_9PMT.css → VariablesView-Bh0OeH4s.css} +6 -6
  98. package/dist/assets/{WorkerView-D56d7XJA.js → WorkerView-C2A7cYkr.js} +9 -9
  99. package/dist/assets/{WorkflowActivator-CQxaDCfA.js → WorkflowActivator-BmIzNsA8.js} +8 -8
  100. package/dist/assets/{WorkflowActivator-BJPsIkXE.css → WorkflowActivator-DhLX6i1H.css} +2 -2
  101. package/dist/assets/{WorkflowExecutionsInfoAccordion-D9p_ZqmA.js → WorkflowExecutionsInfoAccordion-Cn4GRGO_.js} +6 -6
  102. package/dist/assets/{WorkflowExecutionsLandingPage-CymYth6K.js → WorkflowExecutionsLandingPage-s-dIgG6D.js} +3 -3
  103. package/dist/assets/{WorkflowExecutionsPreview-DRvf3WQC.js → WorkflowExecutionsPreview-BE7NfRAa.js} +12 -12
  104. package/dist/assets/{WorkflowExecutionsView-DxiIaUKV.js → WorkflowExecutionsView-DFmBdF-B.js} +16 -16
  105. package/dist/assets/{WorkflowHistory-DBPIq2u7.js → WorkflowHistory-3wO0nQYD.js} +4 -4
  106. package/dist/assets/{WorkflowOnboardingView-D4QKSetf.js → WorkflowOnboardingView-mBVE6x-i.js} +1 -1
  107. package/dist/assets/{WorkflowPreview-D3YRZjYi.js → WorkflowPreview-DlNMFCKn.js} +1 -1
  108. package/dist/assets/{WorkflowsView-ipf8KKwB.css → WorkflowsView-CyJbJBc8.css} +25 -21
  109. package/dist/assets/{WorkflowsView-DPADmBVd.js → WorkflowsView-DsAOuPT0.js} +77 -72
  110. package/dist/assets/{chartjs.utils-Cou_ISuU.js → chartjs.utils-BywXqBmg.js} +2 -2
  111. package/dist/assets/{en-DzZibgm_.js → en-CcKAtA8V.js} +45 -5
  112. package/dist/assets/{global-link-actions-olwfH36z.js → global-link-actions-BzAw9ZbO.js} +1 -1
  113. package/dist/assets/{import-curl-DD21H3kK.js → import-curl-1LWAxRTV.js} +1 -1
  114. package/dist/assets/{index-uJOu4Uio.js → index-B6A1nL2x.js} +1 -1
  115. package/dist/assets/{index-BzamKJpD.css → index-C66_v3sX.css} +1302 -1279
  116. package/dist/assets/{index-7S5ADieN.js → index-V0GOmfo8.js} +40721 -34933
  117. package/dist/assets/{pickBy-DPxZbMic.js → pickBy-CtRItcCT.js} +1 -1
  118. package/dist/assets/{templateActions-DJJfyIhq.js → templateActions-DpIzx0ws.js} +2 -2
  119. package/dist/assets/{useBeforeUnload-DveXGtGN.js → useBeforeUnload-B0EP7Q2i.js} +1 -1
  120. package/dist/assets/{useExecutionDebugging-DM4nhx6D.js → useExecutionDebugging-AwlOA2KI.js} +2 -1
  121. package/dist/assets/{useExecutionHelpers-BfF56crp.js → useExecutionHelpers-DvBwGIzz.js} +1 -1
  122. package/dist/assets/{useImportCurlCommand-BAgQhwtE.js → useImportCurlCommand-DIFC7Epr.js} +2 -2
  123. package/dist/assets/{useKeybindings-CV0VsjNP.js → useKeybindings-CduQ2pi5.js} +4 -4
  124. package/dist/assets/{useProjectPages-DgMGWOaO.js → useProjectPages-DmNmAOdq.js} +1 -1
  125. package/dist/assets/{usePushConnection-D8SE-itT.js → usePushConnection-Dyd5__87.js} +6 -12
  126. package/dist/assets/{useWorkflowActivate-BKz3N1SO.js → useWorkflowActivate-z9iwP6OY.js} +1 -1
  127. package/dist/index.html +2 -2
  128. package/package.json +1 -1
  129. package/vite.config.mts +2 -2
  130. package/dist/assets/CollectionParameter-CExdr4jd.js +0 -4
  131. package/dist/assets/SettingsUsersView-BL3TAhT8.js +0 -338
  132. package/dist/assets/SettingsUsersView-By12E2li.css +0 -143
@@ -1,12 +1,12 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/NodeCreation-Bq5626Ha.js","assets/index-7S5ADieN.js","assets/index-BzamKJpD.css","assets/NodeCreation-32nlvQSy.css","assets/NodeDetailsView-DB-5JPUD.js","assets/RunData-DG20AzLo.js","assets/FileSaver.min-C5wzcK59.js","assets/useKeybindings-CV0VsjNP.js","assets/useKeybindings-BUK7Ngh6.css","assets/useExecutionHelpers-BfF56crp.js","assets/RunData-B5_okvCv.css","assets/RunDataParsedAiContent-DRO1Bjsh.js","assets/RunDataParsedAiContent-9EEUzCKp.css","assets/InfoAccordion-CEk3XG5b.js","assets/InfoAccordion-dxudNqVC.css","assets/useWorkflowActivate-BKz3N1SO.js","assets/ActionDropdown-BujIG0Jq.js","assets/ActionDropdown-BmC0wfMx.css","assets/import-curl-DD21H3kK.js","assets/global-link-actions-olwfH36z.js","assets/useExecutionDebugging-DM4nhx6D.js","assets/useBeforeUnload-DveXGtGN.js","assets/NodeDetailsView-BaIj2qAa.css","assets/SetupWorkflowCredentialsButton-BWISZAxq.js"])))=>i.map(i=>d[i]);
2
- import { _ as _export_sfc$1, i as createElementBlock, g as openBlock, k as createBaseVNode, d as defineComponent, cs as PanelPosition, ct as useVueFlow, bZ as toRef, e as createBlock, w as withCtx, J as renderSlot, f as createCommentVNode, F as Fragment, j as createVNode, c2 as resolveDynamicComponent, m as unref, cu as _sfc_main$Q, x as computed, $ as _sfc_main$R, c as useI18n, cd as KeyboardShortcutTooltip, n as normalizeClass, q as N8nButton, bw as NodeConnectionTypes, cv as getBezierPath, cw as getSmoothStepPath, cx as Position, b_ as inject, cy as CanvasKey, aa as useCssModule, cz as parseCanvasConnectionHandleString, r as ref, o as onMounted, y as renderList, cA as _sfc_main$d$1, O as normalizeStyle, S as useUIStore, bN as useNodeTypesStore, a3 as useWorkflowsStore, ad as useSourceControlStore, al as getResourcePermissions, cB as isNodeWithWorkflowSelector, cC as getSubworkflowId, cD as isPresent, a9 as watch, cE as getMousePosition, aR as STICKY_NODE_TYPE, bG as usePinnedData, cF as NOT_DUPLICATABLE_NODE_TYPES, cG as isExecutable, cH as Teleport, cf as useStyles, bQ as getDefaultExportFromCjs, cI as NODE_SIZE, cJ as CanvasNodeRenderType, cK as GRID_SIZE, ch as useThrottleFn, cL as getRectOfNodes, c5 as onUnmounted, cM as onKeyDown, cN as onKeyUp, cO as useSlots, c7 as useAttrs, cP as getBoundsofRects, cQ as watchEffect, t as toDisplayString, cR as getConnectedEdges, c0 as normalizeProps, D as mergeProps, bL as provide, aJ as h, bh as createSlots, cS as isValidNodeConnectionType, cT as _sfc_main$3$1, cU as CanvasNodeKey, cV as CanvasConnectionMode, cW as mergeModels, cX as useModel, I as onBeforeUnmount, h as resolveComponent, cY as _sfc_main$S, Z as N8nTooltip, bI as useNodeHelpers, cZ as TitledList, l as createTextVNode, c_ as CanvasNodeDirtiness, aL as useNDVStore, c$ as isCommunityPackageName, d0 as NPM_PACKAGE_DOCS_BASE_URL, d1 as BUILTIN_NODES_DOCS_URL, d2 as COMMUNITY_NODES_INSTALLATION_DOCS_URL, d3 as N8nTabs, bf as useExternalHooks, ax as useTelemetry, aq as useTemplateRef, d4 as useElementSize, bW as _sfc_main$T, ar as InlineRename, c8 as useClipboard, aj as useWorkflowHelpers, a as useToast, d5 as OPEN_URL_PANEL_TRIGGER_NODE_TYPES, d6 as PRODUCTION_ONLY_TRIGGER_NODE_TYPES, d7 as MCP_TRIGGER_NODE_TYPE, d8 as FORM_TRIGGER_NODE_TYPE, bF as CHAT_TRIGGER_NODE_TYPE, H as N8nRadioButtons, bg as onClickOutside, d9 as toRef$1, da as tryOnScopeDispose, db as toValue, dc as isIOS, dd as noop$2, de as isObject, df as isClient, R as useDebounce, dg as getNodeInputs, v as useSettingsStore, aN as usePostHog, dh as useCredentialsStore, u as useUsersStore, ae as useProjectsStore, di as OPEN_AI_API_CREDENTIAL_TYPE, dj as AI_CREDITS_EXPERIMENT, dk as N8nCallout, p as N8nText, dl as get$3, dm as set$3, dn as unset, dp as SWITCH_NODE_TYPE, dq as isEqual, dr as captureException, ds as isINodePropertyCollectionList, dt as isINodePropertiesList, du as isINodePropertyOptionsList, dv as displayParameter, bM as useCanvasOperations, dw as getNodeParameters, dx as deepCopy, dy as getUpdatedToolDescription, dz as isDefaultNodeName, dA as makeNodeName, dB as useHistoryStore, dC as useResizeObserver, ap as ProjectTypes, dD as getConnectionTypes, cr as ndvEventBus, bV as withModifiers, dE as _sfc_main$U, a0 as N8nLink, dF as CUSTOM_NODES_DOCS_URL, aT as withDirectives, dG as N8nNotice, aU as vShow, dH as _sfc_main$V, dI as NodeCredentials, dJ as RenameNodeCommand, P as createEventBus, a1 as defineStore, dK as shallowRef, dL as watchOnce, aW as N8nIcon, dM as calculateNodeSize, dN as NodeId, dO as useGetPointerPosition, dP as clamp, dQ as N8nSticky, dR as useNodeCreatorStore, ay as nodeViewEventBus, dS as NODE_CREATOR_OPEN_SOURCES, dT as useBuilderStore, a_ as withKeys, dU as N8nInput, dV as CanvasNodeHandleKey, dW as Transition$1, dX as _sfc_main$f$1, b as useRouter, bH as useLogsStore, bJ as useRunWorkflow, dY as insertSpacersBetweenEndpoints, dZ as createCanvasConnectionHandleString, d_ as useDeviceSupport, d$ as isOutsideSelected, K as nextTick, e0 as _sfc_main$1$4, e1 as MarkerType, e2 as Suspense, c1 as guardReactiveProps, e3 as updateViewportToContainNodes, e4 as useNodeDirtiness, e5 as CUSTOM_API_CALL_KEY, e6 as mapLegacyEndpointsToCanvasConnectionPort, e7 as getNodeOutputs, e8 as getTriggerNodeServiceName, e9 as sanitizeHtml, ea as WAIT_NODE_TYPE, eb as SEND_AND_WAIT_OPERATION, ec as FORM_NODE_TYPE, ed as WAIT_INDEFINITELY, ee as checkOverlap, ef as SIMULATE_NODE_TYPE, eg as SIMULATE_TRIGGER_NODE_TYPE, eh as mapLegacyConnectionsToCanvasConnections, ei as getNodeIconSource, ej as refThrottled, ek as useFocusPanelStore, el as isValueExpression, em as __unplugin_components_3$1, en as __unplugin_components_4, bv as isChatNode, eo as truncateBeforeLast, ep as reactive, a4 as useRoute, ah as useDocumentTitle, ai as useWorkflowSaving, eq as useEnvironmentsStore, er as useExternalSecretsStore, ab as useRootStore, aM as useExecutionsStore, ac as useCanvasStore, ag as useNpsSurveyStore, Q as useTagsStore, a2 as usePushConnectionStore, bd as useTemplatesStore, af as useFoldersStore, es as useAgentRequestStore, et as useWorkflowExtraction, eu as FOCUS_PANEL_EXPERIMENT, a5 as PLACEHOLDER_EMPTY_WORKFLOW_ID, ev as NEW_WORKFLOW_ID, V as VIEWS, bO as START_NODE_TYPE, ew as getNodeViewTab, G as MAIN_HEADER_TABS, ex as VALID_WORKFLOW_IMPORT_URL_REGEX, az as useMessage, aA as MODAL_CONFIRM, ey as jsonParse, bE as MANUAL_CHAT_TRIGGER_NODE_TYPE, ez as EVALUATION_TRIGGER_NODE_TYPE, eA as getBounds, eB as onBeforeRouteLeave, aS as onBeforeMount, aB as WORKFLOW_SETTINGS_MODAL_KEY, eC as onActivated, eD as onDeactivated, eE as defineAsyncComponent, aH as __vitePreload, ao as EnterpriseEditionFeature, eF as EVALUATION_NODE_TYPE, eG as getEasyAiWorkflowJson, eH as getRagStarterWorkflowJson, eI as tryToParseNumber, b3 as sourceControlEventBus, eJ as getNodesWithNormalizedPosition, eK as needsAgentInput, eL as FROM_AI_PARAMETERS_MODAL_KEY, eM as historyBus, eN as DRAG_EVENT_DATA_KEY } from "./index-7S5ADieN.js";
3
- import { N as N8nActionDropdown } from "./ActionDropdown-BujIG0Jq.js";
4
- import { N as N8nBlockUi, u as useKeybindings, c as canvasEventBus } from "./useKeybindings-CV0VsjNP.js";
5
- import { i as importCurlEventBus } from "./import-curl-DD21H3kK.js";
6
- import { g as globalLinkActionsEventBus } from "./global-link-actions-olwfH36z.js";
7
- import { u as useExecutionDebugging } from "./useExecutionDebugging-DM4nhx6D.js";
8
- import { u as useBeforeUnload } from "./useBeforeUnload-DveXGtGN.js";
9
- const _sfc_main$P = {};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/NodeCreation-DKbc91uY.js","assets/index-V0GOmfo8.js","assets/index-C66_v3sX.css","assets/NodeCreation-32nlvQSy.css","assets/NodeDetailsView-CPVE5S8P.js","assets/TriggerPanel-BOC7PYsi.js","assets/RunData-D3xzjO33.js","assets/FileSaver.min-CeGSkamF.js","assets/useKeybindings-CduQ2pi5.js","assets/useKeybindings-BUK7Ngh6.css","assets/useExecutionHelpers-DvBwGIzz.js","assets/RunData-DuKNwYqe.css","assets/RunDataParsedAiContent-BYISiW-I.js","assets/RunDataParsedAiContent-wfIiKsq7.css","assets/InfoAccordion-75IQV-_q.js","assets/InfoAccordion-dxudNqVC.css","assets/TriggerPanel-DRpKKKun.css","assets/useWorkflowActivate-z9iwP6OY.js","assets/ActionDropdown-D-JmCYsp.js","assets/ActionDropdown-BmC0wfMx.css","assets/import-curl-1LWAxRTV.js","assets/global-link-actions-BzAw9ZbO.js","assets/useExecutionDebugging-AwlOA2KI.js","assets/useBeforeUnload-B0EP7Q2i.js","assets/NodeDetailsView-CaTI-1QQ.css","assets/NodeDetailsViewV2-5pxsZwAo.js","assets/NodeDetailsViewV2-BxNx4ZUM.css","assets/SetupWorkflowCredentialsButton-Bj4rSqAV.js"])))=>i.map(i=>d[i]);
2
+ import { _ as _export_sfc$1, h as createElementBlock, g as openBlock, j as createBaseVNode, d as defineComponent, cn as PanelPosition, co as useVueFlow, bT as toRef, e as createBlock, w as withCtx, J as renderSlot, f as createCommentVNode, F as Fragment, i as createVNode, bY as resolveDynamicComponent, l as unref, cp as _sfc_main$R, x as computed, a0 as _sfc_main$S, c as useI18n, c7 as KeyboardShortcutTooltip, n as normalizeClass, q as N8nButton, bo as NodeConnectionTypes, cq as getBezierPath, cr as getSmoothStepPath, cs as Position, bU as inject, ct as CanvasKey, ab as useCssModule, cu as parseCanvasConnectionHandleString, r as ref, o as onMounted, y as renderList, cv as _sfc_main$d$1, P as normalizeStyle, T as useUIStore, bG as useNodeTypesStore, a4 as useWorkflowsStore, ae as useSourceControlStore, am as getResourcePermissions, cw as isNodeWithWorkflowSelector, cx as getSubworkflowId, cy as isPresent, aa as watch, cz as getMousePosition, aS as STICKY_NODE_TYPE, bz as usePinnedData, cA as NOT_DUPLICATABLE_NODE_TYPES, cB as isExecutable, cC as Teleport, c9 as useStyles, bJ as getDefaultExportFromCjs, cD as DEFAULT_NODE_SIZE, cE as CanvasNodeRenderType, cF as GRID_SIZE, cb as useThrottleFn, cG as getRectOfNodes, b$ as onUnmounted, cH as onKeyDown, cI as onKeyUp, cJ as useSlots, c1 as useAttrs, cK as getBoundsofRects, cL as watchEffect, t as toDisplayString, cM as getConnectedEdges, bW as normalizeProps, D as mergeProps, bE as provide, aK as h, bh as createSlots, cN as isValidNodeConnectionType, cO as _sfc_main$3$1, cP as CanvasNodeKey, cQ as CanvasConnectionMode, cR as mergeModels, cS as useModel, I as onBeforeUnmount, cT as _sfc_main$T, N as N8nIcon, $ as N8nTooltip, bB as useNodeHelpers, cU as TitledList, k as createTextVNode, cV as CanvasNodeDirtiness, ar as useTemplateRef, cW as useElementSize, bP as _sfc_main$U, as as InlineRename, cX as toValue, cY as isCommunityPackageName, cZ as NPM_PACKAGE_DOCS_BASE_URL, c_ as BUILTIN_NODES_DOCS_URL, aM as useNDVStore, c$ as COMMUNITY_NODES_INSTALLATION_DOCS_URL, d0 as N8nTabs, bf as useExternalHooks, ay as useTelemetry, c2 as useClipboard, ak as useWorkflowHelpers, a as useToast, d1 as OPEN_URL_PANEL_TRIGGER_NODE_TYPES, d2 as PRODUCTION_ONLY_TRIGGER_NODE_TYPES, d3 as MCP_TRIGGER_NODE_TYPE, d4 as FORM_TRIGGER_NODE_TYPE, bx as CHAT_TRIGGER_NODE_TYPE, O as resolveComponent, H as N8nRadioButtons, bg as onClickOutside, d5 as toRef$1, d6 as tryOnScopeDispose, d7 as toValue$1, d8 as isIOS, d9 as noop$2, da as isObject, db as isClient, S as useDebounce, dc as getNodeInputs, dd as _sfc_main$V, v as useSettingsStore, de as useCredentialsStore, u as useUsersStore, af as useProjectsStore, df as OPEN_AI_API_CREDENTIAL_TYPE, dg as N8nCallout, p as N8nText, bq as get$3, dh as set$3, di as unset, dj as SWITCH_NODE_TYPE, dk as isEqual, dl as captureException, dm as isINodePropertyCollectionList, dn as isINodePropertiesList, dp as isINodePropertyOptionsList, dq as displayParameter, bF as useCanvasOperations, dr as getNodeParameters, ds as deepCopy, dt as getUpdatedToolDescription, du as isDefaultNodeName, dv as makeNodeName, dw as useHistoryStore, aO as usePostHog, dx as useResizeObserver, aq as ProjectTypes, dy as NDV_UI_OVERHAUL_EXPERIMENT, dz as BASE_NODE_SURVEY_URL, cm as ndvEventBus, bO as withModifiers, a1 as N8nLink, dA as CUSTOM_NODES_DOCS_URL, aU as withDirectives, dB as N8nNotice, aV as vShow, dC as _sfc_main$W, dD as NodeCredentials, dE as RenameNodeCommand, Q as createEventBus, a2 as defineStore, cd as shallowRef, dF as watchOnce, dG as calculateNodeSize, dH as NodeId, dI as useGetPointerPosition, dJ as clamp, dK as N8nSticky, dL as useNodeCreatorStore, az as nodeViewEventBus, dM as NODE_CREATOR_OPEN_SOURCES, dN as useBuilderStore, a_ as withKeys, dO as N8nInput, dP as CanvasNodeHandleKey, dQ as Transition$1, dR as _sfc_main$f$1, b as useRouter, bA as useLogsStore, bC as useRunWorkflow, dS as insertSpacersBetweenEndpoints, dT as createCanvasConnectionHandleString, dU as CONFIGURATION_NODE_OFFSET, dV as useDeviceSupport, dW as isOutsideSelected, K as nextTick, dX as _sfc_main$1$4, dY as MarkerType, dZ as Suspense, bX as guardReactiveProps, d_ as updateViewportToContainNodes, d$ as useNodeDirtiness, e0 as CUSTOM_API_CALL_KEY, e1 as mapLegacyEndpointsToCanvasConnectionPort, e2 as getNodeOutputs, e3 as getTriggerNodeServiceName, e4 as sanitizeHtml, e5 as WAIT_NODE_TYPE, e6 as SEND_AND_WAIT_OPERATION, e7 as FORM_NODE_TYPE, e8 as WAIT_INDEFINITELY, e9 as checkOverlap, ea as SIMULATE_NODE_TYPE, eb as SIMULATE_TRIGGER_NODE_TYPE, ec as mapLegacyConnectionsToCanvasConnections, ed as getNodeIconSource, ee as refThrottled, ef as useFocusPanelStore, eg as isValueExpression, eh as __unplugin_components_2$2, ei as __unplugin_components_3$1, bn as isChatNode, ej as truncateBeforeLast, ek as reactive, a5 as useRoute, ai as useDocumentTitle, aj as useWorkflowSaving, el as useEnvironmentsStore, em as useExternalSecretsStore, ac as useRootStore, aN as useExecutionsStore, ad as useCanvasStore, ah as useNpsSurveyStore, R as useTagsStore, a3 as usePushConnectionStore, bd as useTemplatesStore, ag as useFoldersStore, en as useAgentRequestStore, eo as useWorkflowExtraction, ep as FOCUS_PANEL_EXPERIMENT, a6 as PLACEHOLDER_EMPTY_WORKFLOW_ID, eq as NEW_WORKFLOW_ID, V as VIEWS, bH as START_NODE_TYPE, er as getNodeViewTab, G as MAIN_HEADER_TABS, es as VALID_WORKFLOW_IMPORT_URL_REGEX, aA as useMessage, aB as MODAL_CONFIRM, et as jsonParse, bw as MANUAL_CHAT_TRIGGER_NODE_TYPE, eu as EVALUATION_TRIGGER_NODE_TYPE, ev as getBounds, ew as onBeforeRouteLeave, aT as onBeforeMount, aC as WORKFLOW_SETTINGS_MODAL_KEY, ex as onActivated, ey as onDeactivated, ez as defineAsyncComponent, aI as __vitePreload, ap as EnterpriseEditionFeature, eA as EVALUATION_NODE_TYPE, eB as getEasyAiWorkflowJson, eC as getRagStarterWorkflowJson, eD as tryToParseNumber, b3 as sourceControlEventBus, eE as getNodesWithNormalizedPosition, eF as needsAgentInput, eG as FROM_AI_PARAMETERS_MODAL_KEY, eH as historyBus, eI as DRAG_EVENT_DATA_KEY } from "./index-V0GOmfo8.js";
3
+ import { N as N8nActionDropdown } from "./ActionDropdown-D-JmCYsp.js";
4
+ import { N as N8nBlockUi, u as useKeybindings, c as canvasEventBus } from "./useKeybindings-CduQ2pi5.js";
5
+ import { i as importCurlEventBus } from "./import-curl-1LWAxRTV.js";
6
+ import { g as globalLinkActionsEventBus } from "./global-link-actions-BzAw9ZbO.js";
7
+ import { u as useExecutionDebugging } from "./useExecutionDebugging-AwlOA2KI.js";
8
+ import { u as useBeforeUnload } from "./useBeforeUnload-B0EP7Q2i.js";
9
+ const _sfc_main$Q = {};
10
10
  const _hoisted_1$h = {
11
11
  xmlns: "http://www.w3.org/2000/svg",
12
12
  viewBox: "0 0 16 16"
@@ -19,7 +19,7 @@ function _sfc_render$1(_ctx, _cache) {
19
19
  }, null, -1)
20
20
  ]));
21
21
  }
22
- const TidyUpIcon = /* @__PURE__ */ _export_sfc$1(_sfc_main$P, [["render", _sfc_render$1]]);
22
+ const TidyUpIcon = /* @__PURE__ */ _export_sfc$1(_sfc_main$Q, [["render", _sfc_render$1]]);
23
23
  const _sfc_main$1$3 = {
24
24
  name: "ControlButton",
25
25
  compatConfig: { MODE: 3 }
@@ -102,7 +102,7 @@ const __default__$4 = {
102
102
  name: "Controls",
103
103
  compatConfig: { MODE: 3 }
104
104
  };
105
- const _sfc_main$O = /* @__PURE__ */ defineComponent({
105
+ const _sfc_main$P = /* @__PURE__ */ defineComponent({
106
106
  ...__default__$4,
107
107
  props: {
108
108
  showZoom: { type: Boolean, default: true },
@@ -145,7 +145,7 @@ const _sfc_main$O = /* @__PURE__ */ defineComponent({
145
145
  emit("interactionChange", !isInteractive.value);
146
146
  }
147
147
  return (_ctx, _cache) => {
148
- return openBlock(), createBlock(unref(_sfc_main$Q), {
148
+ return openBlock(), createBlock(unref(_sfc_main$R), {
149
149
  class: "vue-flow__controls",
150
150
  position: _ctx.position
151
151
  }, {
@@ -218,7 +218,7 @@ const _sfc_main$O = /* @__PURE__ */ defineComponent({
218
218
  };
219
219
  }
220
220
  });
221
- const _sfc_main$N = /* @__PURE__ */ defineComponent({
221
+ const _sfc_main$O = /* @__PURE__ */ defineComponent({
222
222
  __name: "CanvasControlButtons",
223
223
  props: {
224
224
  zoom: { default: 1 },
@@ -246,9 +246,9 @@ const _sfc_main$N = /* @__PURE__ */ defineComponent({
246
246
  emit("tidy-up");
247
247
  }
248
248
  return (_ctx, _cache) => {
249
- const _component_N8nIconButton = _sfc_main$R;
249
+ const _component_N8nIconButton = _sfc_main$S;
250
250
  const _component_N8nButton = N8nButton;
251
- return openBlock(), createBlock(unref(_sfc_main$O), {
251
+ return openBlock(), createBlock(unref(_sfc_main$P), {
252
252
  "show-zoom": false,
253
253
  "show-fit-view": false
254
254
  }, {
@@ -261,7 +261,7 @@ const _sfc_main$N = /* @__PURE__ */ defineComponent({
261
261
  createVNode(_component_N8nIconButton, {
262
262
  type: "tertiary",
263
263
  size: "large",
264
- icon: "expand",
264
+ icon: "maximize",
265
265
  "data-test-id": "zoom-to-fit",
266
266
  onClick: onZoomToFit
267
267
  })
@@ -276,7 +276,7 @@ const _sfc_main$N = /* @__PURE__ */ defineComponent({
276
276
  createVNode(_component_N8nIconButton, {
277
277
  type: "tertiary",
278
278
  size: "large",
279
- icon: "search-plus",
279
+ icon: "zoom-in",
280
280
  "data-test-id": "zoom-in-button",
281
281
  onClick: onZoomIn
282
282
  })
@@ -291,7 +291,7 @@ const _sfc_main$N = /* @__PURE__ */ defineComponent({
291
291
  createVNode(_component_N8nIconButton, {
292
292
  type: "tertiary",
293
293
  size: "large",
294
- icon: "search-minus",
294
+ icon: "zoom-out",
295
295
  "data-test-id": "zoom-out-button",
296
296
  onClick: onZoomOut
297
297
  })
@@ -307,7 +307,7 @@ const _sfc_main$N = /* @__PURE__ */ defineComponent({
307
307
  createVNode(_component_N8nIconButton, {
308
308
  type: "tertiary",
309
309
  size: "large",
310
- icon: "undo",
310
+ icon: "undo-2",
311
311
  "data-test-id": "reset-zoom-button",
312
312
  onClick: onResetZoom
313
313
  })
@@ -343,13 +343,13 @@ const _sfc_main$N = /* @__PURE__ */ defineComponent({
343
343
  }
344
344
  });
345
345
  const iconButton = "_iconButton_fx9xi_123";
346
- const style0$y = {
346
+ const style0$z = {
347
347
  iconButton
348
348
  };
349
- const cssModules$y = {
350
- "$style": style0$y
349
+ const cssModules$z = {
350
+ "$style": style0$z
351
351
  };
352
- const __unplugin_components_1 = /* @__PURE__ */ _export_sfc$1(_sfc_main$N, [["__cssModules", cssModules$y]]);
352
+ const __unplugin_components_1 = /* @__PURE__ */ _export_sfc$1(_sfc_main$O, [["__cssModules", cssModules$z]]);
353
353
  const EDGE_PADDING_BOTTOM = 130;
354
354
  const EDGE_PADDING_X = 40;
355
355
  const EDGE_BORDER_RADIUS = 16;
@@ -406,7 +406,7 @@ function injectStrict(key, fallback) {
406
406
  function useCanvas() {
407
407
  return injectStrict(CanvasKey);
408
408
  }
409
- const _sfc_main$M = /* @__PURE__ */ defineComponent({
409
+ const _sfc_main$N = /* @__PURE__ */ defineComponent({
410
410
  __name: "CanvasConnectionLine",
411
411
  props: {
412
412
  sourceX: {},
@@ -473,14 +473,14 @@ const _sfc_main$M = /* @__PURE__ */ defineComponent({
473
473
  });
474
474
  const edge$1 = "_edge_cbk94_123";
475
475
  const visible = "_visible_cbk94_129";
476
- const style0$x = {
476
+ const style0$y = {
477
477
  edge: edge$1,
478
478
  visible
479
479
  };
480
- const cssModules$x = {
481
- "$style": style0$x
480
+ const cssModules$y = {
481
+ "$style": style0$y
482
482
  };
483
- const __unplugin_components_0$4 = /* @__PURE__ */ _export_sfc$1(_sfc_main$M, [["__cssModules", cssModules$x]]);
483
+ const __unplugin_components_0$4 = /* @__PURE__ */ _export_sfc$1(_sfc_main$N, [["__cssModules", cssModules$y]]);
484
484
  const position = ref([0, 0]);
485
485
  const isOpen = ref(false);
486
486
  const target = ref();
@@ -711,7 +711,7 @@ const useContextMenu = (onAction = () => {
711
711
  _dispatchAction
712
712
  };
713
713
  };
714
- const _sfc_main$L = /* @__PURE__ */ defineComponent({
714
+ const _sfc_main$M = /* @__PURE__ */ defineComponent({
715
715
  __name: "ContextMenu",
716
716
  emits: ["action"],
717
717
  setup(__props, { emit: __emit }) {
@@ -779,14 +779,14 @@ const _sfc_main$L = /* @__PURE__ */ defineComponent({
779
779
  });
780
780
  const contextMenu = "_contextMenu_12fz3_123";
781
781
  const activator = "_activator_12fz3_127";
782
- const style0$w = {
782
+ const style0$x = {
783
783
  contextMenu,
784
784
  activator
785
785
  };
786
- const cssModules$w = {
787
- "$style": style0$w
786
+ const cssModules$x = {
787
+ "$style": style0$x
788
788
  };
789
- const ContextMenu = /* @__PURE__ */ _export_sfc$1(_sfc_main$L, [["__cssModules", cssModules$w]]);
789
+ const ContextMenu = /* @__PURE__ */ _export_sfc$1(_sfc_main$M, [["__cssModules", cssModules$x]]);
790
790
  var graph;
791
791
  var hasRequiredGraph;
792
792
  function requireGraph() {
@@ -4290,12 +4290,12 @@ function requireDagre() {
4290
4290
  }
4291
4291
  var dagreExports = requireDagre();
4292
4292
  const dagre = /* @__PURE__ */ getDefaultExportFromCjs(dagreExports);
4293
- const NODE_X_SPACING = GRID_SIZE * 6;
4294
- const NODE_Y_SPACING = GRID_SIZE * 5;
4293
+ const NODE_X_SPACING = GRID_SIZE * 8;
4294
+ const NODE_Y_SPACING = GRID_SIZE * 6;
4295
4295
  const SUBGRAPH_SPACING = GRID_SIZE * 8;
4296
- const AI_X_SPACING = GRID_SIZE * 2;
4297
- const AI_Y_SPACING = GRID_SIZE * 6;
4298
- const STICKY_BOTTOM_PADDING = GRID_SIZE * 3;
4296
+ const AI_X_SPACING = GRID_SIZE * 3;
4297
+ const AI_Y_SPACING = GRID_SIZE * 8;
4298
+ const STICKY_BOTTOM_PADDING = GRID_SIZE * 4;
4299
4299
  function useCanvasLayout({ id: canvasId } = {}) {
4300
4300
  const {
4301
4301
  findNode,
@@ -4575,7 +4575,7 @@ function useCanvasLayout({ id: canvasId } = {}) {
4575
4575
  const aiGraphBoundingBox = compositeBoundingBox(
4576
4576
  aiNodes.map((nodeId) => boundingBoxByNodeId[nodeId]).filter(isPresent)
4577
4577
  );
4578
- const aiNodeVerticalCorrection = aiGraphBoundingBox.height / 2 - NODE_SIZE / 2;
4578
+ const aiNodeVerticalCorrection = aiGraphBoundingBox.height / 2 - DEFAULT_NODE_SIZE[0] / 2;
4579
4579
  aiGraphBoundingBox.y += aiNodeVerticalCorrection;
4580
4580
  const hasConflictingNodes = Object.entries(boundingBoxByNodeId).filter(([id2]) => !graph2.hasNode(id2)).some(
4581
4581
  ([, nodeBoundingBox]) => intersects(aiGraphBoundingBox, nodeBoundingBox, NODE_Y_SPACING)
@@ -7301,7 +7301,7 @@ const __default__$3 = {
7301
7301
  name: "MiniMap",
7302
7302
  compatConfig: { MODE: 3 }
7303
7303
  };
7304
- const _sfc_main$K = /* @__PURE__ */ defineComponent({
7304
+ const _sfc_main$L = /* @__PURE__ */ defineComponent({
7305
7305
  ...__default__$3,
7306
7306
  props: {
7307
7307
  nodeColor: { type: [String, Function], default: "#e2e2e2" },
@@ -7464,7 +7464,7 @@ const _sfc_main$K = /* @__PURE__ */ defineComponent({
7464
7464
  emit("nodeMouseleave", param);
7465
7465
  }
7466
7466
  return (_ctx, _cache) => {
7467
- return openBlock(), createBlock(unref(_sfc_main$Q), {
7467
+ return openBlock(), createBlock(unref(_sfc_main$R), {
7468
7468
  position: _ctx.position,
7469
7469
  class: normalizeClass(["vue-flow__minimap", { pannable: _ctx.pannable, zoomable: _ctx.zoomable }])
7470
7470
  }, {
@@ -7524,7 +7524,7 @@ const _sfc_main$K = /* @__PURE__ */ defineComponent({
7524
7524
  });
7525
7525
  const _hoisted_1$e = ["id", "x", "y", "width", "height", "patternTransform"];
7526
7526
  const _hoisted_2$9 = ["d", "stroke-width"];
7527
- const _sfc_main$J = /* @__PURE__ */ defineComponent({
7527
+ const _sfc_main$K = /* @__PURE__ */ defineComponent({
7528
7528
  __name: "CanvasBackgroundStripedPattern",
7529
7529
  props: {
7530
7530
  id: {},
@@ -7554,7 +7554,7 @@ const _sfc_main$J = /* @__PURE__ */ defineComponent({
7554
7554
  };
7555
7555
  }
7556
7556
  });
7557
- const CanvasBackgroundStripedPattern = /* @__PURE__ */ _export_sfc$1(_sfc_main$J, [["__scopeId", "data-v-161512f5"]]);
7557
+ const CanvasBackgroundStripedPattern = /* @__PURE__ */ _export_sfc$1(_sfc_main$K, [["__scopeId", "data-v-efb5a8d2"]]);
7558
7558
  var BackgroundVariant = /* @__PURE__ */ ((BackgroundVariant2) => {
7559
7559
  BackgroundVariant2["Lines"] = "lines";
7560
7560
  BackgroundVariant2["Dots"] = "dots";
@@ -7590,7 +7590,7 @@ const __default__$2 = {
7590
7590
  name: "Background",
7591
7591
  compatConfig: { MODE: 3 }
7592
7592
  };
7593
- const _sfc_main$I = /* @__PURE__ */ defineComponent({
7593
+ const _sfc_main$J = /* @__PURE__ */ defineComponent({
7594
7594
  ...__default__$2,
7595
7595
  props: {
7596
7596
  id: {},
@@ -7675,7 +7675,7 @@ const _sfc_main$I = /* @__PURE__ */ defineComponent({
7675
7675
  };
7676
7676
  }
7677
7677
  });
7678
- const _sfc_main$H = /* @__PURE__ */ defineComponent({
7678
+ const _sfc_main$I = /* @__PURE__ */ defineComponent({
7679
7679
  __name: "CanvasBackground",
7680
7680
  props: {
7681
7681
  striped: { type: Boolean },
@@ -7683,7 +7683,7 @@ const _sfc_main$H = /* @__PURE__ */ defineComponent({
7683
7683
  },
7684
7684
  setup(__props) {
7685
7685
  return (_ctx, _cache) => {
7686
- return openBlock(), createBlock(unref(_sfc_main$I), {
7686
+ return openBlock(), createBlock(unref(_sfc_main$J), {
7687
7687
  "data-test-id": "canvas-background",
7688
7688
  "pattern-color": "#aaa",
7689
7689
  gap: unref(GRID_SIZE)
@@ -7706,7 +7706,7 @@ const _sfc_main$H = /* @__PURE__ */ defineComponent({
7706
7706
  }
7707
7707
  });
7708
7708
  const _hoisted_1$c = ["id"];
7709
- const _sfc_main$G = /* @__PURE__ */ defineComponent({
7709
+ const _sfc_main$H = /* @__PURE__ */ defineComponent({
7710
7710
  __name: "CanvasArrowHeadMarker",
7711
7711
  props: {
7712
7712
  id: {}
@@ -7739,7 +7739,7 @@ const _sfc_main$G = /* @__PURE__ */ defineComponent({
7739
7739
  };
7740
7740
  }
7741
7741
  });
7742
- const _sfc_main$F = /* @__PURE__ */ defineComponent({
7742
+ const _sfc_main$G = /* @__PURE__ */ defineComponent({
7743
7743
  __name: "CanvasEdgeToolbar",
7744
7744
  props: {
7745
7745
  type: {}
@@ -7761,7 +7761,7 @@ const _sfc_main$F = /* @__PURE__ */ defineComponent({
7761
7761
  emit("delete");
7762
7762
  }
7763
7763
  return (_ctx, _cache) => {
7764
- const _component_N8nIconButton = _sfc_main$R;
7764
+ const _component_N8nIconButton = _sfc_main$S;
7765
7765
  return openBlock(), createElementBlock("div", {
7766
7766
  class: normalizeClass(classes.value),
7767
7767
  "data-test-id": "canvas-edge-toolbar"
@@ -7772,6 +7772,7 @@ const _sfc_main$F = /* @__PURE__ */ defineComponent({
7772
7772
  "data-test-id": "add-connection-button",
7773
7773
  type: "tertiary",
7774
7774
  size: "small",
7775
+ "icon-size": "medium",
7775
7776
  icon: "plus",
7776
7777
  title: unref(i18n).baseText("node.add"),
7777
7778
  onClick: onAdd2
@@ -7781,7 +7782,8 @@ const _sfc_main$F = /* @__PURE__ */ defineComponent({
7781
7782
  class: "canvas-edge-toolbar-button",
7782
7783
  type: "tertiary",
7783
7784
  size: "small",
7784
- icon: "trash",
7785
+ "icon-size": "medium",
7786
+ icon: "trash-2",
7785
7787
  title: unref(i18n).baseText("node.delete"),
7786
7788
  onClick: onDelete
7787
7789
  }, null, 8, ["title"])
@@ -7790,17 +7792,17 @@ const _sfc_main$F = /* @__PURE__ */ defineComponent({
7790
7792
  }
7791
7793
  });
7792
7794
  const canvasEdgeToolbar = "_canvasEdgeToolbar_uogmx_123";
7793
- const style0$v = {
7795
+ const style0$w = {
7794
7796
  canvasEdgeToolbar
7795
7797
  };
7796
- const cssModules$v = {
7797
- "$style": style0$v
7798
+ const cssModules$w = {
7799
+ "$style": style0$w
7798
7800
  };
7799
- const CanvasEdgeToolbar = /* @__PURE__ */ _export_sfc$1(_sfc_main$F, [["__cssModules", cssModules$v]]);
7801
+ const CanvasEdgeToolbar = /* @__PURE__ */ _export_sfc$1(_sfc_main$G, [["__cssModules", cssModules$w]]);
7800
7802
  const _hoisted_1$b = ["data-source-node-name", "data-target-node-name"];
7801
7803
  const _hoisted_2$7 = ["data-source-node-name", "data-target-node-name", "data-edge-status"];
7802
7804
  const delayedHoveredTimeout = 600;
7803
- const _sfc_main$E = /* @__PURE__ */ defineComponent({
7805
+ const _sfc_main$F = /* @__PURE__ */ defineComponent({
7804
7806
  __name: "CanvasEdge",
7805
7807
  props: {
7806
7808
  id: {},
@@ -7980,15 +7982,15 @@ const _sfc_main$E = /* @__PURE__ */ defineComponent({
7980
7982
  const edge = "_edge_fyzmo_123";
7981
7983
  const edgeLabelWrapper = "_edgeLabelWrapper_fyzmo_127";
7982
7984
  const edgeLabel = "_edgeLabel_fyzmo_127";
7983
- const style0$u = {
7985
+ const style0$v = {
7984
7986
  edge,
7985
7987
  edgeLabelWrapper,
7986
7988
  edgeLabel
7987
7989
  };
7988
- const cssModules$u = {
7989
- "$style": style0$u
7990
+ const cssModules$v = {
7991
+ "$style": style0$v
7990
7992
  };
7991
- const Edge = /* @__PURE__ */ _export_sfc$1(_sfc_main$E, [["__cssModules", cssModules$u]]);
7993
+ const Edge = /* @__PURE__ */ _export_sfc$1(_sfc_main$F, [["__cssModules", cssModules$v]]);
7992
7994
  function useCanvasNode() {
7993
7995
  const node2 = inject(CanvasNodeKey);
7994
7996
  const data = computed(
@@ -8066,7 +8068,7 @@ function useCanvasNode() {
8066
8068
  }
8067
8069
  const _hoisted_1$a = ["title"];
8068
8070
  const _hoisted_2$6 = ["onClick"];
8069
- const _sfc_main$D = /* @__PURE__ */ defineComponent({
8071
+ const _sfc_main$E = /* @__PURE__ */ defineComponent({
8070
8072
  __name: "CanvasNodeStickyColorSelector",
8071
8073
  props: {
8072
8074
  "visible": { type: Boolean },
@@ -8109,8 +8111,8 @@ const _sfc_main$D = /* @__PURE__ */ defineComponent({
8109
8111
  eventBus.value?.off("update:sticky:color", showPopover);
8110
8112
  });
8111
8113
  return (_ctx, _cache) => {
8112
- const _component_FontAwesomeIcon = resolveComponent("FontAwesomeIcon");
8113
- const _component_N8nPopover = _sfc_main$S;
8114
+ const _component_N8nIcon = N8nIcon;
8115
+ const _component_N8nPopover = _sfc_main$T;
8114
8116
  return openBlock(), createBlock(_component_N8nPopover, {
8115
8117
  visible: isPopoverVisible.value,
8116
8118
  "onUpdate:visible": _cache[0] || (_cache[0] = ($event) => isPopoverVisible.value = $event),
@@ -8129,7 +8131,7 @@ const _sfc_main$D = /* @__PURE__ */ defineComponent({
8129
8131
  "data-test-id": "change-sticky-color",
8130
8132
  title: unref(i18n).baseText("node.changeColor")
8131
8133
  }, [
8132
- createVNode(_component_FontAwesomeIcon, { icon: "palette" })
8134
+ createVNode(_component_N8nIcon, { icon: "palette" })
8133
8135
  ], 10, _hoisted_1$a)
8134
8136
  ]),
8135
8137
  default: withCtx(() => [
@@ -8160,7 +8162,7 @@ const content$1 = "_content_3lp7u_129";
8160
8162
  const color = "_color_3lp7u_136";
8161
8163
  const selected$2 = "_selected_3lp7u_148";
8162
8164
  const option = "_option_3lp7u_173";
8163
- const style0$t = {
8165
+ const style0$u = {
8164
8166
  popover,
8165
8167
  content: content$1,
8166
8168
  color,
@@ -8174,11 +8176,11 @@ const style0$t = {
8174
8176
  "sticky-color-7": "_sticky-color-7_3lp7u_169",
8175
8177
  option
8176
8178
  };
8177
- const cssModules$t = {
8178
- "$style": style0$t
8179
+ const cssModules$u = {
8180
+ "$style": style0$u
8179
8181
  };
8180
- const __unplugin_components_2$1 = /* @__PURE__ */ _export_sfc$1(_sfc_main$D, [["__cssModules", cssModules$t]]);
8181
- const _sfc_main$C = /* @__PURE__ */ defineComponent({
8182
+ const __unplugin_components_2$1 = /* @__PURE__ */ _export_sfc$1(_sfc_main$E, [["__cssModules", cssModules$u]]);
8183
+ const _sfc_main$D = /* @__PURE__ */ defineComponent({
8182
8184
  __name: "CanvasNodeToolbar",
8183
8185
  props: {
8184
8186
  readOnly: { type: Boolean }
@@ -8239,7 +8241,7 @@ const _sfc_main$C = /* @__PURE__ */ defineComponent({
8239
8241
  isHovered.value = false;
8240
8242
  }
8241
8243
  return (_ctx, _cache) => {
8242
- const _component_N8nIconButton = _sfc_main$R;
8244
+ const _component_N8nIconButton = _sfc_main$S;
8243
8245
  const _component_N8nTooltip = N8nTooltip;
8244
8246
  const _component_CanvasNodeStickyColorSelector = __unplugin_components_2$1;
8245
8247
  return openBlock(), createElementBlock("div", {
@@ -8277,7 +8279,7 @@ const _sfc_main$C = /* @__PURE__ */ defineComponent({
8277
8279
  type: "tertiary",
8278
8280
  text: "",
8279
8281
  size: "small",
8280
- icon: "power-off",
8282
+ icon: "power",
8281
8283
  title: nodeDisabledTitle.value,
8282
8284
  onClick: onToggleNode
8283
8285
  }, null, 8, ["title"])) : createCommentVNode("", true),
@@ -8287,7 +8289,7 @@ const _sfc_main$C = /* @__PURE__ */ defineComponent({
8287
8289
  type: "tertiary",
8288
8290
  size: "small",
8289
8291
  text: "",
8290
- icon: "trash",
8292
+ icon: "trash-2",
8291
8293
  title: unref(i18n).baseText("node.delete"),
8292
8294
  onClick: onDeleteNode
8293
8295
  }, null, 8, ["title"])) : createCommentVNode("", true),
@@ -8302,7 +8304,7 @@ const _sfc_main$C = /* @__PURE__ */ defineComponent({
8302
8304
  type: "tertiary",
8303
8305
  size: "small",
8304
8306
  text: "",
8305
- icon: "ellipsis-h",
8307
+ icon: "ellipsis",
8306
8308
  onClick: onOpenContextMenu
8307
8309
  })
8308
8310
  ], 2)
@@ -8313,20 +8315,20 @@ const _sfc_main$C = /* @__PURE__ */ defineComponent({
8313
8315
  const canvasNodeToolbar$1 = "_canvasNodeToolbar_104hp_123";
8314
8316
  const canvasNodeToolbarItems = "_canvasNodeToolbarItems_104hp_130";
8315
8317
  const forceVisible = "_forceVisible_104hp_141";
8316
- const style0$s = {
8318
+ const style0$t = {
8317
8319
  canvasNodeToolbar: canvasNodeToolbar$1,
8318
8320
  canvasNodeToolbarItems,
8319
8321
  forceVisible
8320
8322
  };
8321
- const cssModules$s = {
8322
- "$style": style0$s
8323
+ const cssModules$t = {
8324
+ "$style": style0$t
8323
8325
  };
8324
- const CanvasNodeToolbar = /* @__PURE__ */ _export_sfc$1(_sfc_main$C, [["__cssModules", cssModules$s]]);
8326
+ const CanvasNodeToolbar = /* @__PURE__ */ _export_sfc$1(_sfc_main$D, [["__cssModules", cssModules$t]]);
8325
8327
  const _hoisted_1$9 = { key: 1 };
8326
8328
  const _hoisted_2$5 = ["textContent"];
8327
8329
  const _hoisted_3$4 = { key: 2 };
8328
8330
  const _hoisted_4$3 = { key: 5 };
8329
- const _sfc_main$B = /* @__PURE__ */ defineComponent({
8331
+ const _sfc_main$C = /* @__PURE__ */ defineComponent({
8330
8332
  __name: "CanvasNodeStatusIcons",
8331
8333
  setup(__props) {
8332
8334
  const nodeHelpers = useNodeHelpers();
@@ -8344,12 +8346,17 @@ const _sfc_main$B = /* @__PURE__ */ defineComponent({
8344
8346
  isDisabled,
8345
8347
  render: render2
8346
8348
  } = useCanvasNode();
8349
+ const { isExecuting } = useCanvas();
8347
8350
  const hideNodeIssues = computed(() => false);
8348
8351
  const dirtiness = computed(
8349
8352
  () => render2.value.type === CanvasNodeRenderType.Default ? render2.value.options.dirtiness : void 0
8350
8353
  );
8354
+ const isNodeExecuting = computed(() => {
8355
+ if (!isExecuting.value) return false;
8356
+ return executionRunning.value || executionWaitingForNext.value || executionStatus.value === "running";
8357
+ });
8351
8358
  return (_ctx, _cache) => {
8352
- const _component_FontAwesomeIcon = resolveComponent("FontAwesomeIcon");
8359
+ const _component_N8nIcon = N8nIcon;
8353
8360
  return unref(hasIssues2) && !hideNodeIssues.value ? (openBlock(), createElementBlock("div", {
8354
8361
  key: 0,
8355
8362
  class: normalizeClass([_ctx.$style.status, _ctx.$style.issues]),
@@ -8366,7 +8373,7 @@ const _sfc_main$B = /* @__PURE__ */ defineComponent({
8366
8373
  }, null, 8, ["title", "items"])
8367
8374
  ]),
8368
8375
  default: withCtx(() => [
8369
- createVNode(_component_FontAwesomeIcon, { icon: "exclamation-triangle" })
8376
+ createVNode(_component_N8nIcon, { icon: "triangle-alert" })
8370
8377
  ]),
8371
8378
  _: 1
8372
8379
  })
@@ -8381,7 +8388,7 @@ const _sfc_main$B = /* @__PURE__ */ defineComponent({
8381
8388
  }, null, 8, _hoisted_2$5)
8382
8389
  ]),
8383
8390
  default: withCtx(() => [
8384
- createVNode(_component_FontAwesomeIcon, { icon: "clock" })
8391
+ createVNode(_component_N8nIcon, { icon: "clock" })
8385
8392
  ]),
8386
8393
  _: 1
8387
8394
  })
@@ -8389,18 +8396,18 @@ const _sfc_main$B = /* @__PURE__ */ defineComponent({
8389
8396
  createBaseVNode("div", {
8390
8397
  class: normalizeClass([_ctx.$style.status, _ctx.$style["node-waiting-spinner"]])
8391
8398
  }, [
8392
- createVNode(_component_FontAwesomeIcon, {
8393
- icon: "sync-alt",
8399
+ createVNode(_component_N8nIcon, {
8400
+ icon: "refresh-cw",
8394
8401
  spin: ""
8395
8402
  })
8396
8403
  ], 2)
8397
- ])) : unref(executionStatus) === "unknown" ? (openBlock(), createElementBlock("div", _hoisted_3$4)) : unref(executionRunning) || unref(executionWaitingForNext) || unref(executionStatus) === "running" ? (openBlock(), createElementBlock("div", {
8404
+ ])) : unref(executionStatus) === "unknown" ? (openBlock(), createElementBlock("div", _hoisted_3$4)) : isNodeExecuting.value ? (openBlock(), createElementBlock("div", {
8398
8405
  key: 3,
8399
8406
  "data-test-id": "canvas-node-status-running",
8400
8407
  class: normalizeClass([_ctx.$style.status, _ctx.$style.running])
8401
8408
  }, [
8402
- createVNode(_component_FontAwesomeIcon, {
8403
- icon: "sync-alt",
8409
+ createVNode(_component_N8nIcon, {
8410
+ icon: "refresh-cw",
8404
8411
  spin: ""
8405
8412
  })
8406
8413
  ], 2)) : unref(hasPinnedData) && !unref(nodeHelpers).isProductionExecutionPreview.value && !unref(isDisabled) ? (openBlock(), createElementBlock("div", {
@@ -8408,7 +8415,7 @@ const _sfc_main$B = /* @__PURE__ */ defineComponent({
8408
8415
  "data-test-id": "canvas-node-status-pinned",
8409
8416
  class: normalizeClass([_ctx.$style.status, _ctx.$style.pinnedData])
8410
8417
  }, [
8411
- createVNode(_component_FontAwesomeIcon, { icon: "thumbtack" })
8418
+ createVNode(_component_N8nIcon, { icon: "pin" })
8412
8419
  ], 2)) : dirtiness.value !== void 0 ? (openBlock(), createElementBlock("div", _hoisted_4$3, [
8413
8420
  createVNode(unref(N8nTooltip), {
8414
8421
  "show-after": 500,
@@ -8424,7 +8431,7 @@ const _sfc_main$B = /* @__PURE__ */ defineComponent({
8424
8431
  "data-test-id": "canvas-node-status-warning",
8425
8432
  class: normalizeClass([_ctx.$style.status, _ctx.$style.warning])
8426
8433
  }, [
8427
- createVNode(_component_FontAwesomeIcon, { icon: "triangle" }),
8434
+ createVNode(_component_N8nIcon, { icon: "triangle" }),
8428
8435
  unref(runDataIterations) > 1 ? (openBlock(), createElementBlock("span", {
8429
8436
  key: 0,
8430
8437
  class: normalizeClass(_ctx.$style.count)
@@ -8438,7 +8445,7 @@ const _sfc_main$B = /* @__PURE__ */ defineComponent({
8438
8445
  "data-test-id": "canvas-node-status-success",
8439
8446
  class: normalizeClass([_ctx.$style.status, _ctx.$style.runData])
8440
8447
  }, [
8441
- createVNode(_component_FontAwesomeIcon, { icon: "check" }),
8448
+ createVNode(_component_N8nIcon, { icon: "check" }),
8442
8449
  unref(runDataIterations) > 1 ? (openBlock(), createElementBlock("span", {
8443
8450
  key: 0,
8444
8451
  class: normalizeClass(_ctx.$style.count)
@@ -8455,7 +8462,7 @@ const running$1 = "_running_93vv6_142";
8455
8462
  const issues = "_issues_93vv6_165";
8456
8463
  const count = "_count_93vv6_170";
8457
8464
  const warning$2 = "_warning_93vv6_174";
8458
- const style0$r = {
8465
+ const style0$s = {
8459
8466
  status,
8460
8467
  runData,
8461
8468
  waiting: waiting$1,
@@ -8466,11 +8473,11 @@ const style0$r = {
8466
8473
  count,
8467
8474
  warning: warning$2
8468
8475
  };
8469
- const cssModules$r = {
8470
- "$style": style0$r
8476
+ const cssModules$s = {
8477
+ "$style": style0$s
8471
8478
  };
8472
- const __unplugin_components_3 = /* @__PURE__ */ _export_sfc$1(_sfc_main$B, [["__cssModules", cssModules$r]]);
8473
- const _sfc_main$A = /* @__PURE__ */ defineComponent({
8479
+ const __unplugin_components_3 = /* @__PURE__ */ _export_sfc$1(_sfc_main$C, [["__cssModules", cssModules$s]]);
8480
+ const _sfc_main$B = /* @__PURE__ */ defineComponent({
8474
8481
  __name: "CanvasNodeDisabledStrikeThrough",
8475
8482
  setup(__props) {
8476
8483
  const $style = useCssModule();
@@ -8492,16 +8499,16 @@ const _sfc_main$A = /* @__PURE__ */ defineComponent({
8492
8499
  const disabledStrikeThrough = "_disabledStrikeThrough_nl2g7_123";
8493
8500
  const success$2 = "_success_nl2g7_132";
8494
8501
  const warning$1 = "_warning_nl2g7_136";
8495
- const style0$q = {
8502
+ const style0$r = {
8496
8503
  disabledStrikeThrough,
8497
8504
  success: success$2,
8498
8505
  warning: warning$1
8499
8506
  };
8500
- const cssModules$q = {
8501
- "$style": style0$q
8507
+ const cssModules$r = {
8508
+ "$style": style0$r
8502
8509
  };
8503
- const __unplugin_components_2 = /* @__PURE__ */ _export_sfc$1(_sfc_main$A, [["__cssModules", cssModules$q]]);
8504
- const _sfc_main$z = /* @__PURE__ */ defineComponent({
8510
+ const __unplugin_components_2 = /* @__PURE__ */ _export_sfc$1(_sfc_main$B, [["__cssModules", cssModules$r]]);
8511
+ const _sfc_main$A = /* @__PURE__ */ defineComponent({
8505
8512
  __name: "CanvasNodeTooltip",
8506
8513
  props: {
8507
8514
  visible: { type: Boolean }
@@ -8540,14 +8547,14 @@ const _sfc_main$z = /* @__PURE__ */ defineComponent({
8540
8547
  });
8541
8548
  const tooltipTrigger = "_tooltipTrigger_dauyi_123";
8542
8549
  const popper = "_popper_dauyi_131";
8543
- const style0$p = {
8550
+ const style0$q = {
8544
8551
  tooltipTrigger,
8545
8552
  popper
8546
8553
  };
8547
- const cssModules$p = {
8548
- "$style": style0$p
8554
+ const cssModules$q = {
8555
+ "$style": style0$q
8549
8556
  };
8550
- const __unplugin_components_0$3 = /* @__PURE__ */ _export_sfc$1(_sfc_main$z, [["__cssModules", cssModules$p]]);
8557
+ const __unplugin_components_0$3 = /* @__PURE__ */ _export_sfc$1(_sfc_main$A, [["__cssModules", cssModules$q]]);
8551
8558
  function useNodeConnections({
8552
8559
  inputs: inputs2,
8553
8560
  outputs,
@@ -8596,12 +8603,108 @@ function useNodeConnections({
8596
8603
  isValidConnection
8597
8604
  };
8598
8605
  }
8606
+ const _sfc_main$z = /* @__PURE__ */ defineComponent({
8607
+ __name: "NodeTitle",
8608
+ props: {
8609
+ modelValue: { default: "" },
8610
+ nodeType: { default: void 0 },
8611
+ readOnly: { type: Boolean, default: false }
8612
+ },
8613
+ emits: ["update:model-value"],
8614
+ setup(__props, { emit: __emit }) {
8615
+ const emit = __emit;
8616
+ function onRename(value) {
8617
+ if (value.trim() !== "") {
8618
+ emit("update:model-value", value.trim());
8619
+ }
8620
+ }
8621
+ const wrapperRef = useTemplateRef("wrapperRef");
8622
+ const { width } = useElementSize(wrapperRef);
8623
+ return (_ctx, _cache) => {
8624
+ return openBlock(), createElementBlock("span", {
8625
+ class: normalizeClass(_ctx.$style.container),
8626
+ "data-test-id": "node-title-container"
8627
+ }, [
8628
+ createBaseVNode("span", {
8629
+ class: normalizeClass(_ctx.$style.iconWrapper)
8630
+ }, [
8631
+ createVNode(_sfc_main$U, {
8632
+ "node-type": _ctx.nodeType,
8633
+ size: 18,
8634
+ "show-tooltip": true,
8635
+ "tooltip-position": "left"
8636
+ }, null, 8, ["node-type"])
8637
+ ], 2),
8638
+ createBaseVNode("div", {
8639
+ ref_key: "wrapperRef",
8640
+ ref: wrapperRef,
8641
+ class: normalizeClass(_ctx.$style.textWrapper)
8642
+ }, [
8643
+ createVNode(unref(InlineRename), {
8644
+ "max-width": unref(width),
8645
+ "model-value": _ctx.modelValue,
8646
+ "read-only": _ctx.readOnly,
8647
+ "onUpdate:modelValue": onRename
8648
+ }, null, 8, ["max-width", "model-value", "read-only"])
8649
+ ], 2)
8650
+ ], 2);
8651
+ };
8652
+ }
8653
+ });
8654
+ const container$4 = "_container_178ym_123";
8655
+ const textWrapper = "_textWrapper_178ym_132";
8656
+ const iconWrapper = "_iconWrapper_178ym_137";
8657
+ const style0$p = {
8658
+ container: container$4,
8659
+ textWrapper,
8660
+ iconWrapper
8661
+ };
8662
+ const cssModules$p = {
8663
+ "$style": style0$p
8664
+ };
8665
+ const NodeTitle = /* @__PURE__ */ _export_sfc$1(_sfc_main$z, [["__cssModules", cssModules$p]]);
8666
+ const useNodeDocsUrl = ({
8667
+ nodeType: nodeTypeRef
8668
+ }) => {
8669
+ const packageName = computed(() => toValue(nodeTypeRef)?.name.split(".")[0] ?? "");
8670
+ const isCommunityNode = computed(() => {
8671
+ const nodeType = toValue(nodeTypeRef);
8672
+ if (nodeType) {
8673
+ return isCommunityPackageName(nodeType.name);
8674
+ }
8675
+ return false;
8676
+ });
8677
+ const docsUrl = computed(() => {
8678
+ const nodeType = toValue(nodeTypeRef);
8679
+ if (!nodeType) {
8680
+ return "";
8681
+ }
8682
+ if (nodeType.documentationUrl?.startsWith("http")) {
8683
+ return nodeType.documentationUrl;
8684
+ }
8685
+ const utmParams = new URLSearchParams({
8686
+ utm_source: "n8n_app",
8687
+ utm_medium: "node_settings_modal-credential_link",
8688
+ utm_campaign: nodeType.name
8689
+ });
8690
+ const primaryDocUrl = nodeType.codex?.resources?.primaryDocumentation?.[0]?.url;
8691
+ if (primaryDocUrl) {
8692
+ return `${primaryDocUrl}?${utmParams.toString()}`;
8693
+ }
8694
+ if (isCommunityNode.value) {
8695
+ return `${NPM_PACKAGE_DOCS_BASE_URL}${packageName.value}`;
8696
+ }
8697
+ return `${BUILTIN_NODES_DOCS_URL}?${utmParams.toString()}`;
8698
+ });
8699
+ return { docsUrl };
8700
+ };
8599
8701
  const _sfc_main$y = /* @__PURE__ */ defineComponent({
8600
8702
  __name: "NodeSettingsTabs",
8601
8703
  props: {
8602
8704
  modelValue: { default: "params" },
8603
8705
  nodeType: { default: void 0 },
8604
- pushRef: { default: "" }
8706
+ pushRef: { default: "" },
8707
+ hideDocs: { type: Boolean }
8605
8708
  },
8606
8709
  emits: ["update:model-value"],
8607
8710
  setup(__props, { emit: __emit }) {
@@ -8612,6 +8715,7 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
8612
8715
  const workflowsStore = useWorkflowsStore();
8613
8716
  const i18n = useI18n();
8614
8717
  const telemetry = useTelemetry();
8718
+ const { docsUrl } = useNodeDocsUrl({ nodeType: () => props.nodeType });
8615
8719
  const activeNode = computed(() => ndvStore.activeNode);
8616
8720
  const isCommunityNode = computed(() => {
8617
8721
  const nodeType = props.nodeType;
@@ -8622,26 +8726,10 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
8622
8726
  });
8623
8727
  const packageName = computed(() => props.nodeType?.name.split(".")[0] ?? "");
8624
8728
  const documentationUrl = computed(() => {
8625
- const nodeType = props.nodeType;
8626
- if (!nodeType) {
8729
+ if (props.hideDocs) {
8627
8730
  return "";
8628
8731
  }
8629
- if (nodeType.documentationUrl && nodeType.documentationUrl.startsWith("http")) {
8630
- return nodeType.documentationUrl;
8631
- }
8632
- const utmParams = new URLSearchParams({
8633
- utm_source: "n8n_app",
8634
- utm_medium: "node_settings_modal-credential_link",
8635
- utm_campaign: nodeType.name
8636
- });
8637
- const primaryDocUrl = nodeType.codex?.resources?.primaryDocumentation?.[0]?.url;
8638
- if (primaryDocUrl) {
8639
- return `${primaryDocUrl}?${utmParams.toString()}`;
8640
- }
8641
- if (isCommunityNode.value) {
8642
- return `${NPM_PACKAGE_DOCS_BASE_URL}${packageName.value}`;
8643
- }
8644
- return `${BUILTIN_NODES_DOCS_URL}?${utmParams.toString()}`;
8732
+ return docsUrl.value;
8645
8733
  });
8646
8734
  const options = computed(() => {
8647
8735
  const options2 = [
@@ -8656,7 +8744,7 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
8656
8744
  ];
8657
8745
  if (isCommunityNode.value) {
8658
8746
  options2.push({
8659
- icon: "cube",
8747
+ icon: "box",
8660
8748
  value: "communityNode",
8661
8749
  align: "right",
8662
8750
  tooltip: i18n.baseText("generic.communityNode.tooltip", {
@@ -8707,8 +8795,7 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
8707
8795
  }
8708
8796
  }
8709
8797
  return (_ctx, _cache) => {
8710
- const _component_N8nTabs = N8nTabs;
8711
- return openBlock(), createBlock(_component_N8nTabs, {
8798
+ return openBlock(), createBlock(unref(N8nTabs), {
8712
8799
  options: options.value,
8713
8800
  "model-value": _ctx.modelValue,
8714
8801
  "onUpdate:modelValue": onTabSelect,
@@ -8717,66 +8804,6 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
8717
8804
  };
8718
8805
  }
8719
8806
  });
8720
- const _sfc_main$x = /* @__PURE__ */ defineComponent({
8721
- __name: "NodeTitle",
8722
- props: {
8723
- modelValue: { default: "" },
8724
- nodeType: { default: void 0 },
8725
- readOnly: { type: Boolean, default: false }
8726
- },
8727
- emits: ["update:model-value"],
8728
- setup(__props, { emit: __emit }) {
8729
- const emit = __emit;
8730
- function onRename(value) {
8731
- if (value.trim() !== "") {
8732
- emit("update:model-value", value.trim());
8733
- }
8734
- }
8735
- const wrapperRef = useTemplateRef("wrapperRef");
8736
- const { width } = useElementSize(wrapperRef);
8737
- return (_ctx, _cache) => {
8738
- return openBlock(), createElementBlock("span", {
8739
- class: normalizeClass(_ctx.$style.container),
8740
- "data-test-id": "node-title-container"
8741
- }, [
8742
- createBaseVNode("span", {
8743
- class: normalizeClass(_ctx.$style.iconWrapper)
8744
- }, [
8745
- createVNode(_sfc_main$T, {
8746
- "node-type": _ctx.nodeType,
8747
- size: 18,
8748
- "show-tooltip": true,
8749
- "tooltip-position": "left"
8750
- }, null, 8, ["node-type"])
8751
- ], 2),
8752
- createBaseVNode("div", {
8753
- ref_key: "wrapperRef",
8754
- ref: wrapperRef,
8755
- class: normalizeClass(_ctx.$style.textWrapper)
8756
- }, [
8757
- createVNode(unref(InlineRename), {
8758
- "max-width": unref(width),
8759
- "model-value": _ctx.modelValue,
8760
- "read-only": _ctx.readOnly,
8761
- "onUpdate:modelValue": onRename
8762
- }, null, 8, ["max-width", "model-value", "read-only"])
8763
- ], 2)
8764
- ], 2);
8765
- };
8766
- }
8767
- });
8768
- const container$4 = "_container_178ym_123";
8769
- const textWrapper = "_textWrapper_178ym_132";
8770
- const iconWrapper = "_iconWrapper_178ym_137";
8771
- const style0$o = {
8772
- container: container$4,
8773
- textWrapper,
8774
- iconWrapper
8775
- };
8776
- const cssModules$o = {
8777
- "$style": style0$o
8778
- };
8779
- const NodeTitle = /* @__PURE__ */ _export_sfc$1(_sfc_main$x, [["__cssModules", cssModules$o]]);
8780
8807
  const _hoisted_1$8 = {
8781
8808
  key: 0,
8782
8809
  class: "webhooks"
@@ -8804,7 +8831,7 @@ const _hoisted_10 = {
8804
8831
  };
8805
8832
  const _hoisted_11 = { class: "url-field-full-width" };
8806
8833
  const _hoisted_12 = ["onClick"];
8807
- const _sfc_main$w = /* @__PURE__ */ defineComponent({
8834
+ const _sfc_main$x = /* @__PURE__ */ defineComponent({
8808
8835
  __name: "NodeWebhooks",
8809
8836
  props: {
8810
8837
  node: {},
@@ -8946,7 +8973,7 @@ const _sfc_main$w = /* @__PURE__ */ defineComponent({
8946
8973
  }
8947
8974
  );
8948
8975
  return (_ctx, _cache) => {
8949
- const _component_font_awesome_icon = resolveComponent("font-awesome-icon");
8976
+ const _component_n8n_icon = N8nIcon;
8950
8977
  const _component_n8n_radio_buttons = N8nRadioButtons;
8951
8978
  const _component_el_col = resolveComponent("el-col");
8952
8979
  const _component_el_row = resolveComponent("el-row");
@@ -8958,8 +8985,8 @@ const _sfc_main$w = /* @__PURE__ */ defineComponent({
8958
8985
  title: isMinimized.value ? baseText.value.clickToDisplay : baseText.value.clickToHide,
8959
8986
  onClick: _cache[0] || (_cache[0] = ($event) => isMinimized.value = !isMinimized.value)
8960
8987
  }, [
8961
- createVNode(_component_font_awesome_icon, {
8962
- icon: "angle-right",
8988
+ createVNode(_component_n8n_icon, {
8989
+ icon: "chevron-right",
8963
8990
  class: "minimize-button minimize-icon"
8964
8991
  }),
8965
8992
  createTextVNode(" " + toDisplayString(baseText.value.toggleTitle), 1)
@@ -9031,7 +9058,7 @@ const _sfc_main$w = /* @__PURE__ */ defineComponent({
9031
9058
  };
9032
9059
  }
9033
9060
  });
9034
- const NodeWebhooks = /* @__PURE__ */ _export_sfc$1(_sfc_main$w, [["__scopeId", "data-v-84b9da4b"]]);
9061
+ const NodeWebhooks = /* @__PURE__ */ _export_sfc$1(_sfc_main$x, [["__scopeId", "data-v-0dd27b5e"]]);
9035
9062
  const OnClickOutside = /* @__PURE__ */ defineComponent({
9036
9063
  name: "OnClickOutside",
9037
9064
  props: ["as", "options"],
@@ -9049,7 +9076,7 @@ const OnClickOutside = /* @__PURE__ */ defineComponent({
9049
9076
  });
9050
9077
  function unrefElement(elRef) {
9051
9078
  var _a;
9052
- const plain = toValue(elRef);
9079
+ const plain = toValue$1(elRef);
9053
9080
  return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;
9054
9081
  }
9055
9082
  const defaultWindow = isClient ? window : void 0;
@@ -9080,7 +9107,7 @@ function useEventListener(...args) {
9080
9107
  return () => el.removeEventListener(event, listener, options2);
9081
9108
  };
9082
9109
  const stopWatch = watch(
9083
- () => [unrefElement(target2), toValue(options)],
9110
+ () => [unrefElement(target2), toValue$1(options)],
9084
9111
  ([el, options2]) => {
9085
9112
  cleanup();
9086
9113
  if (!el)
@@ -9136,7 +9163,7 @@ function useScrollLock(element, initialState = false) {
9136
9163
  let stopTouchMoveListener = null;
9137
9164
  let initialOverflow = "";
9138
9165
  watch(toRef$1(element), (el) => {
9139
- const target2 = resolveElement(toValue(el));
9166
+ const target2 = resolveElement(toValue$1(el));
9140
9167
  if (target2) {
9141
9168
  const ele = target2;
9142
9169
  if (!elInitialOverflow.get(ele))
@@ -9152,7 +9179,7 @@ function useScrollLock(element, initialState = false) {
9152
9179
  immediate: true
9153
9180
  });
9154
9181
  const lock = () => {
9155
- const el = resolveElement(toValue(element));
9182
+ const el = resolveElement(toValue$1(element));
9156
9183
  if (!el || isLocked.value)
9157
9184
  return;
9158
9185
  if (isIOS) {
@@ -9169,7 +9196,7 @@ function useScrollLock(element, initialState = false) {
9169
9196
  isLocked.value = true;
9170
9197
  };
9171
9198
  const unlock = () => {
9172
- const el = resolveElement(toValue(element));
9199
+ const el = resolveElement(toValue$1(element));
9173
9200
  if (!el || !isLocked.value)
9174
9201
  return;
9175
9202
  isIOS && (stopTouchMoveListener == null ? void 0 : stopTouchMoveListener());
@@ -9208,7 +9235,7 @@ const _hoisted_3$2 = ["onClick"];
9208
9235
  const _hoisted_4$1 = ["onClick"];
9209
9236
  const _hoisted_5$1 = ["data-node-name"];
9210
9237
  const _hoisted_6$1 = ["onClick"];
9211
- const _sfc_main$v = /* @__PURE__ */ defineComponent({
9238
+ const _sfc_main$w = /* @__PURE__ */ defineComponent({
9212
9239
  __name: "NDVSubConnections",
9213
9240
  props: {
9214
9241
  rootNode: {}
@@ -9368,7 +9395,7 @@ const _sfc_main$v = /* @__PURE__ */ defineComponent({
9368
9395
  showNodeInputsIssues
9369
9396
  });
9370
9397
  return (_ctx, _cache) => {
9371
- const _component_n8n_icon_button = _sfc_main$R;
9398
+ const _component_n8n_icon_button = _sfc_main$S;
9372
9399
  const _component_n8n_tooltip = N8nTooltip;
9373
9400
  return possibleConnections.value.length ? (openBlock(), createElementBlock("div", {
9374
9401
  key: 0,
@@ -9477,7 +9504,7 @@ const _sfc_main$v = /* @__PURE__ */ defineComponent({
9477
9504
  class: normalizeClass(_ctx.$style.connectedNode),
9478
9505
  onClick: ($event) => onNodeClick(node2.node.name, getConnectionContext(connection, index))
9479
9506
  }, [
9480
- createVNode(_sfc_main$T, {
9507
+ createVNode(_sfc_main$U, {
9481
9508
  "node-type": node2.nodeType,
9482
9509
  "node-name": node2.node.name,
9483
9510
  "tooltip-position": "top",
@@ -9515,7 +9542,7 @@ const connectedNodesMultiple = "_connectedNodesMultiple_ac466_209";
9515
9542
  const connectedNode = "_connectedNode_ac466_177";
9516
9543
  const connectedNodes = "_connectedNodes_ac466_177";
9517
9544
  const nodeWrapper = "_nodeWrapper_ac466_247";
9518
- const style0$n = {
9545
+ const style0$o = {
9519
9546
  container: container$3,
9520
9547
  connections,
9521
9548
  connectionType,
@@ -9530,10 +9557,65 @@ const style0$n = {
9530
9557
  connectedNodes,
9531
9558
  nodeWrapper
9532
9559
  };
9560
+ const cssModules$o = {
9561
+ "$style": style0$o
9562
+ };
9563
+ const NDVSubConnections = /* @__PURE__ */ _export_sfc$1(_sfc_main$w, [["__cssModules", cssModules$o]]);
9564
+ const _sfc_main$v = /* @__PURE__ */ defineComponent({
9565
+ __name: "NodeSettingsHeader",
9566
+ props: {
9567
+ nodeName: {},
9568
+ hideExecute: { type: Boolean },
9569
+ hideTabs: { type: Boolean },
9570
+ disableExecute: { type: Boolean },
9571
+ executeButtonTooltip: {},
9572
+ selectedTab: {},
9573
+ nodeType: {},
9574
+ pushRef: {}
9575
+ },
9576
+ emits: ["execute", "stop-execution", "value-changed", "tab-changed"],
9577
+ setup(__props, { emit: __emit }) {
9578
+ const emit = __emit;
9579
+ return (_ctx, _cache) => {
9580
+ return openBlock(), createElementBlock("div", {
9581
+ class: normalizeClass(_ctx.$style.header)
9582
+ }, [
9583
+ !_ctx.hideTabs ? (openBlock(), createBlock(_sfc_main$y, {
9584
+ key: 0,
9585
+ "hide-docs": "",
9586
+ "model-value": _ctx.selectedTab,
9587
+ "node-type": _ctx.nodeType,
9588
+ "push-ref": _ctx.pushRef,
9589
+ class: normalizeClass(_ctx.$style.tabs),
9590
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => emit("tab-changed", $event))
9591
+ }, null, 8, ["model-value", "node-type", "push-ref", "class"])) : createCommentVNode("", true),
9592
+ !_ctx.hideExecute ? (openBlock(), createBlock(_sfc_main$V, {
9593
+ key: 1,
9594
+ "data-test-id": "node-execute-button",
9595
+ "node-name": _ctx.nodeName,
9596
+ disabled: _ctx.disableExecute,
9597
+ tooltip: _ctx.executeButtonTooltip,
9598
+ class: normalizeClass(_ctx.$style.execute),
9599
+ size: "small",
9600
+ "telemetry-source": "parameters",
9601
+ onExecute: _cache[1] || (_cache[1] = ($event) => emit("execute")),
9602
+ onStopExecution: _cache[2] || (_cache[2] = ($event) => emit("stop-execution")),
9603
+ onValueChanged: _cache[3] || (_cache[3] = ($event) => emit("value-changed", $event))
9604
+ }, null, 8, ["node-name", "disabled", "tooltip", "class"])) : createCommentVNode("", true)
9605
+ ], 2);
9606
+ };
9607
+ }
9608
+ });
9609
+ const header$2 = "_header_1mro3_123";
9610
+ const tabs = "_tabs_1mro3_135";
9611
+ const style0$n = {
9612
+ header: header$2,
9613
+ tabs
9614
+ };
9533
9615
  const cssModules$n = {
9534
9616
  "$style": style0$n
9535
9617
  };
9536
- const NDVSubConnections = /* @__PURE__ */ _export_sfc$1(_sfc_main$v, [["__cssModules", cssModules$n]]);
9618
+ const NodeSettingsHeader = /* @__PURE__ */ _export_sfc$1(_sfc_main$v, [["__cssModules", cssModules$n]]);
9537
9619
  const _hoisted_1$6 = { class: "mt-xs" };
9538
9620
  const LANGCHAIN_NODES_PREFIX = "@n8n/n8n-nodes-langchain.";
9539
9621
  const N8N_NODES_PREFIX = "@n8n/n8n-nodes.";
@@ -9549,7 +9631,6 @@ const _sfc_main$u = /* @__PURE__ */ defineComponent({
9549
9631
  const showSuccessCallout = ref(false);
9550
9632
  const claimingCredits = ref(false);
9551
9633
  const settingsStore = useSettingsStore();
9552
- const posthogStore = usePostHog();
9553
9634
  const credentialsStore = useCredentialsStore();
9554
9635
  const usersStore = useUsersStore();
9555
9636
  const ndvStore = useNDVStore();
@@ -9569,7 +9650,7 @@ const _sfc_main$u = /* @__PURE__ */ defineComponent({
9569
9650
  () => ndvStore.activeNode?.type && NODES_WITH_OPEN_AI_API_CREDENTIAL.includes(ndvStore.activeNode.type)
9570
9651
  );
9571
9652
  const userCanClaimOpenAiCredits = computed(() => {
9572
- return settingsStore.isAiCreditsEnabled && activeNodeHasOpenAiApiCredential.value && posthogStore.getVariant(AI_CREDITS_EXPERIMENT.name) === AI_CREDITS_EXPERIMENT.variant && !userHasOpenAiCredentialAlready.value && !userHasClaimedAiCreditsAlready.value;
9653
+ return settingsStore.isAiCreditsEnabled && activeNodeHasOpenAiApiCredential.value && !userHasOpenAiCredentialAlready.value && !userHasClaimedAiCreditsAlready.value;
9573
9654
  });
9574
9655
  const onClaimCreditsClicked = async () => {
9575
9656
  claimingCredits.value = true;
@@ -9598,7 +9679,7 @@ const _sfc_main$u = /* @__PURE__ */ defineComponent({
9598
9679
  userCanClaimOpenAiCredits.value && !showSuccessCallout.value ? (openBlock(), createBlock(_component_n8n_callout, {
9599
9680
  key: 0,
9600
9681
  theme: "secondary",
9601
- icon: "exclamation-circle"
9682
+ icon: "circle-alert"
9602
9683
  }, {
9603
9684
  trailingContent: withCtx(() => [
9604
9685
  createVNode(_component_n8n_button, {
@@ -9618,7 +9699,7 @@ const _sfc_main$u = /* @__PURE__ */ defineComponent({
9618
9699
  })) : showSuccessCallout.value ? (openBlock(), createBlock(_component_n8n_callout, {
9619
9700
  key: 1,
9620
9701
  theme: "success",
9621
- icon: "check-circle"
9702
+ icon: "circle-check"
9622
9703
  }, {
9623
9704
  default: withCtx(() => [
9624
9705
  createVNode(_component_n8n_text, { size: "small" }, {
@@ -9941,7 +10022,7 @@ function useNodeSettingsParameters() {
9941
10022
  }
9942
10023
  const _hoisted_1$5 = { class: "header-side-menu" };
9943
10024
  const _hoisted_2$2 = {
9944
- key: 0,
10025
+ key: 2,
9945
10026
  class: "node-is-not-valid"
9946
10027
  };
9947
10028
  const _hoisted_3$1 = { class: "missingNodeTitleContainer mt-s mb-xs" };
@@ -9967,7 +10048,6 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
9967
10048
  eventBus: {},
9968
10049
  dragging: { type: Boolean },
9969
10050
  pushRef: {},
9970
- nodeType: {},
9971
10051
  readOnly: { type: Boolean, default: false },
9972
10052
  foreignCredentials: { default: () => [] },
9973
10053
  blockUI: { type: Boolean, default: false },
@@ -9987,6 +10067,7 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
9987
10067
  const workflowsStore = useWorkflowsStore();
9988
10068
  const credentialsStore = useCredentialsStore();
9989
10069
  const historyStore = useHistoryStore();
10070
+ const posthogStore = usePostHog();
9990
10071
  const telemetry = useTelemetry();
9991
10072
  const nodeHelpers = useNodeHelpers();
9992
10073
  const externalHooks = useExternalHooks();
@@ -10018,23 +10099,14 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10018
10099
  () => props.readOnly || hasForeignCredential.value && !isHomeProjectTeam.value
10019
10100
  );
10020
10101
  const node2 = computed(() => props.activeNode ?? ndvStore.activeNode);
10102
+ const nodeType = computed(
10103
+ () => node2.value ? nodeTypesStore.getNodeType(node2.value.type, node2.value.typeVersion) : null
10104
+ );
10021
10105
  const isTriggerNode = computed(() => !!node2.value && nodeTypesStore.isTriggerNode(node2.value.type));
10022
10106
  const isToolNode = computed(() => !!node2.value && nodeTypesStore.isToolNode(node2.value.type));
10023
- const isExecutable2 = computed(() => {
10024
- if (props.nodeType && node2.value) {
10025
- const workflowNode = currentWorkflowInstance.value.getNode(node2.value.name);
10026
- const inputs2 = getNodeInputs(
10027
- currentWorkflowInstance.value,
10028
- workflowNode,
10029
- props.nodeType
10030
- );
10031
- const inputNames = getConnectionTypes(inputs2);
10032
- if (!inputNames.includes(NodeConnectionTypes.Main) && !isToolNode.value && !isTriggerNode.value) {
10033
- return false;
10034
- }
10035
- }
10036
- return props.executable || props.foreignCredentials.length > 0;
10037
- });
10107
+ const isExecutable2 = computed(
10108
+ () => nodeHelpers.isNodeExecutable(node2.value, props.executable, props.foreignCredentials)
10109
+ );
10038
10110
  const nodeTypeVersions = computed(() => {
10039
10111
  if (!node2.value) return [];
10040
10112
  return nodeTypesStore.getNodeVersions(node2.value.type);
@@ -10052,7 +10124,7 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10052
10124
  return "";
10053
10125
  });
10054
10126
  const nodeVersionTag = computed(() => {
10055
- if (!props.nodeType || props.nodeType.hidden) {
10127
+ if (!nodeType.value || nodeType.value.hidden) {
10056
10128
  return i18n.baseText("nodeSettings.deprecated");
10057
10129
  }
10058
10130
  if (isLatestNodeVersion.value) {
@@ -10063,10 +10135,10 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10063
10135
  });
10064
10136
  });
10065
10137
  const parameters = computed(() => {
10066
- if (props.nodeType === null) {
10138
+ if (nodeType.value === null) {
10067
10139
  return [];
10068
10140
  }
10069
- return props.nodeType?.properties ?? [];
10141
+ return nodeType.value?.properties ?? [];
10070
10142
  });
10071
10143
  const parametersSetting = computed(() => parameters.value.filter((item) => item.isNodeSetting));
10072
10144
  const parametersNoneSetting = computed(() => {
@@ -10074,7 +10146,7 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10074
10146
  return props.isEmbeddedInCanvas ? parameters.value.filter(shouldShowParameter) : paramsToShow;
10075
10147
  });
10076
10148
  const isDisplayingCredentials = computed(
10077
- () => credentialsStore.getCredentialTypesNodeDescriptions("", props.nodeType).filter((credentialTypeDescription) => displayCredentials(credentialTypeDescription)).length > 0
10149
+ () => credentialsStore.getCredentialTypesNodeDescriptions("", nodeType.value).filter((credentialTypeDescription) => displayCredentials(credentialTypeDescription)).length > 0
10078
10150
  );
10079
10151
  const showNoParametersNotice = computed(
10080
10152
  () => !isDisplayingCredentials.value && parametersNoneSetting.value.filter((item) => item.type !== "notice").length === 0
@@ -10094,6 +10166,18 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10094
10166
  ) : void 0;
10095
10167
  return credentialsStore.getCredentialOwnerName(credential);
10096
10168
  });
10169
+ const isNDVV2 = computed(
10170
+ () => posthogStore.isVariantEnabled(
10171
+ NDV_UI_OVERHAUL_EXPERIMENT.name,
10172
+ NDV_UI_OVERHAUL_EXPERIMENT.variant
10173
+ )
10174
+ );
10175
+ const featureRequestUrl = computed(() => {
10176
+ if (!nodeType.value) {
10177
+ return "";
10178
+ }
10179
+ return `${BASE_NODE_SURVEY_URL}${nodeType.value.name}`;
10180
+ });
10097
10181
  const valueChanged = (parameterData) => {
10098
10182
  let newValue;
10099
10183
  if (parameterData.hasOwnProperty("value")) {
@@ -10120,17 +10204,17 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10120
10204
  };
10121
10205
  emit("valueChanged", sendData);
10122
10206
  } else if (parameterData.name === "parameters") {
10123
- const nodeType = nodeTypesStore.getNodeType(_node.type, _node.typeVersion);
10124
- if (!nodeType) {
10207
+ const _nodeType = nodeTypesStore.getNodeType(_node.type, _node.typeVersion);
10208
+ if (!_nodeType) {
10125
10209
  return;
10126
10210
  }
10127
10211
  let nodeParameters = getNodeParameters(
10128
- nodeType.properties,
10212
+ _nodeType.properties,
10129
10213
  _node.parameters,
10130
10214
  false,
10131
10215
  false,
10132
10216
  _node,
10133
- nodeType
10217
+ _nodeType
10134
10218
  );
10135
10219
  const oldNodeParameters = Object.assign({}, nodeParameters);
10136
10220
  nodeParameters = deepCopy(nodeParameters);
@@ -10141,7 +10225,7 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10141
10225
  parameterName,
10142
10226
  newValue,
10143
10227
  nodeParameters,
10144
- nodeType,
10228
+ _nodeType,
10145
10229
  _node.typeVersion
10146
10230
  );
10147
10231
  void externalHooks.run("nodeSettings.valueChanged", {
@@ -10153,12 +10237,12 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10153
10237
  }
10154
10238
  }
10155
10239
  nodeParameters = getNodeParameters(
10156
- nodeType.properties,
10240
+ _nodeType.properties,
10157
10241
  nodeParameters,
10158
10242
  true,
10159
10243
  false,
10160
10244
  _node,
10161
- nodeType
10245
+ _nodeType
10162
10246
  );
10163
10247
  for (const key of Object.keys(nodeParameters)) {
10164
10248
  if (nodeParameters?.[key] !== null && nodeParameters?.[key] !== void 0) {
@@ -10365,7 +10449,7 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10365
10449
  nodeValuesInitialized.value = true;
10366
10450
  return;
10367
10451
  }
10368
- if (props.nodeType !== null) {
10452
+ if (nodeType.value !== null) {
10369
10453
  nodeValid.value = true;
10370
10454
  const foundNodeSettings = [];
10371
10455
  if (node2.value.color) {
@@ -10478,6 +10562,18 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10478
10562
  const onTabSelect = (tab) => {
10479
10563
  openPanel.value = tab;
10480
10564
  };
10565
+ const onFeatureRequestClick = () => {
10566
+ window.open(featureRequestUrl.value, "_blank");
10567
+ if (node2.value) {
10568
+ telemetry.track("User clicked ndv link", {
10569
+ node_type: node2.value.type,
10570
+ workflow_id: workflowsStore.workflowId,
10571
+ push_ref: props.pushRef,
10572
+ pane: NodeConnectionTypes.Main,
10573
+ type: "i-wish-this-node-would"
10574
+ });
10575
+ }
10576
+ };
10481
10577
  watch(node2, () => {
10482
10578
  setNodeValues();
10483
10579
  });
@@ -10487,7 +10583,7 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10487
10583
  setNodeValues();
10488
10584
  props.eventBus?.on("openSettings", openSettings);
10489
10585
  if (node2.value !== null) {
10490
- nodeHelpers.updateNodeParameterIssues(node2.value, props.nodeType);
10586
+ nodeHelpers.updateNodeParameterIssues(node2.value, nodeType.value);
10491
10587
  }
10492
10588
  importCurlEventBus.on("setHttpNodeParameters", setHttpNodeParameters);
10493
10589
  ndvEventBus.on("updateParameterValue", valueChanged);
@@ -10510,12 +10606,12 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10510
10606
  }
10511
10607
  return (_ctx, _cache) => {
10512
10608
  const _component_NodeTitle = NodeTitle;
10513
- const _component_NodeSettingsTabs = _sfc_main$y;
10514
- const _component_font_awesome_icon = resolveComponent("font-awesome-icon");
10609
+ const _component_n8n_icon = N8nIcon;
10515
10610
  const _component_n8n_text = N8nText;
10516
10611
  const _component_i18n_t = resolveComponent("i18n-t");
10517
10612
  const _component_n8n_link = N8nLink;
10518
10613
  const _component_n8n_notice = N8nNotice;
10614
+ const _component_N8nIcon = N8nIcon;
10519
10615
  const _component_n8n_block_ui = N8nBlockUi;
10520
10616
  return openBlock(), createElementBlock("div", {
10521
10617
  class: normalizeClass({
@@ -10526,7 +10622,8 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10526
10622
  onKeydown: _cache[1] || (_cache[1] = withModifiers(() => {
10527
10623
  }, ["stop"]))
10528
10624
  }, [
10529
- createBaseVNode("div", {
10625
+ !isNDVV2.value ? (openBlock(), createElementBlock("div", {
10626
+ key: 0,
10530
10627
  class: normalizeClass(_ctx.$style.header)
10531
10628
  }, [
10532
10629
  createBaseVNode("div", _hoisted_1$5, [
@@ -10534,12 +10631,12 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10534
10631
  key: 0,
10535
10632
  class: "node-name",
10536
10633
  "model-value": node2.value.name,
10537
- "node-type": _ctx.nodeType,
10634
+ "node-type": nodeType.value,
10538
10635
  "read-only": isReadOnly.value,
10539
10636
  "onUpdate:modelValue": nameChanged
10540
10637
  }, null, 8, ["model-value", "node-type", "read-only"])) : createCommentVNode("", true),
10541
10638
  isExecutable2.value || slots.actions ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
10542
- isExecutable2.value && !_ctx.blockUI && node2.value && nodeValid.value ? (openBlock(), createBlock(_sfc_main$U, {
10639
+ isExecutable2.value && !_ctx.blockUI && node2.value && nodeValid.value ? (openBlock(), createBlock(_sfc_main$V, {
10543
10640
  key: 0,
10544
10641
  "data-test-id": "node-execute-button",
10545
10642
  "node-name": node2.value.name,
@@ -10554,19 +10651,33 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10554
10651
  renderSlot(_ctx.$slots, "actions", {}, void 0, true)
10555
10652
  ], 64)) : createCommentVNode("", true)
10556
10653
  ]),
10557
- node2.value && nodeValid.value ? (openBlock(), createBlock(_component_NodeSettingsTabs, {
10654
+ node2.value && nodeValid.value ? (openBlock(), createBlock(_sfc_main$y, {
10558
10655
  key: 0,
10559
10656
  "model-value": openPanel.value,
10560
- "node-type": _ctx.nodeType,
10657
+ "node-type": nodeType.value,
10561
10658
  "push-ref": _ctx.pushRef,
10562
10659
  "onUpdate:modelValue": onTabSelect
10563
10660
  }, null, 8, ["model-value", "node-type", "push-ref"])) : createCommentVNode("", true)
10564
- ], 2),
10661
+ ], 2)) : node2.value ? (openBlock(), createBlock(NodeSettingsHeader, {
10662
+ key: 1,
10663
+ "selected-tab": openPanel.value,
10664
+ "node-name": node2.value.name,
10665
+ "node-type": nodeType.value,
10666
+ "execute-button-tooltip": executeButtonTooltip.value,
10667
+ "hide-execute": !isExecutable2.value || _ctx.blockUI || !node2.value || !nodeValid.value,
10668
+ "disable-execute": outputPanelEditMode.value.enabled && !isTriggerNode.value,
10669
+ "hide-tabs": !nodeValid.value,
10670
+ "push-ref": _ctx.pushRef,
10671
+ onExecute: onNodeExecute,
10672
+ onStopExecution,
10673
+ onValueChanged: valueChanged,
10674
+ onTabChanged: onTabSelect
10675
+ }, null, 8, ["selected-tab", "node-name", "node-type", "execute-button-tooltip", "hide-execute", "disable-execute", "hide-tabs", "push-ref"])) : createCommentVNode("", true),
10565
10676
  node2.value && !nodeValid.value ? (openBlock(), createElementBlock("div", _hoisted_2$2, [
10566
10677
  createBaseVNode("p", {
10567
10678
  class: normalizeClass(_ctx.$style.warningIcon)
10568
10679
  }, [
10569
- createVNode(_component_font_awesome_icon, { icon: "exclamation-triangle" })
10680
+ createVNode(_component_n8n_icon, { icon: "triangle-alert" })
10570
10681
  ], 2),
10571
10682
  createBaseVNode("div", _hoisted_3$1, [
10572
10683
  createVNode(_component_n8n_text, {
@@ -10624,13 +10735,14 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10624
10735
  }))
10625
10736
  ])) : createCommentVNode("", true),
10626
10737
  node2.value && nodeValid.value ? (openBlock(), createElementBlock("div", {
10627
- key: 1,
10738
+ key: 3,
10628
10739
  ref_key: "nodeParameterWrapper",
10629
10740
  ref: nodeParameterWrapper,
10630
10741
  class: normalizeClass([
10631
10742
  "node-parameters-wrapper",
10632
10743
  shouldShowStaticScrollbar.value ? "with-static-scrollbar" : "",
10633
- _ctx.noWheel && shouldShowStaticScrollbar.value ? "nowheel" : ""
10744
+ _ctx.noWheel && shouldShowStaticScrollbar.value ? "nowheel" : "",
10745
+ { "ndv-v2": isNDVV2.value }
10634
10746
  ]),
10635
10747
  "data-test-id": "node-parameters",
10636
10748
  onWheel: _cache[0] || (_cache[0] = ($event) => _ctx.noWheel ? handleWheelEvent : void 0)
@@ -10645,9 +10757,9 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10645
10757
  withDirectives(createBaseVNode("div", null, [
10646
10758
  createVNode(NodeWebhooks, {
10647
10759
  node: node2.value,
10648
- "node-type-description": _ctx.nodeType
10760
+ "node-type-description": nodeType.value
10649
10761
  }, null, 8, ["node", "node-type-description"]),
10650
- nodeValuesInitialized.value ? (openBlock(), createBlock(_sfc_main$V, {
10762
+ nodeValuesInitialized.value ? (openBlock(), createBlock(_sfc_main$W, {
10651
10763
  key: 0,
10652
10764
  parameters: parametersNoneSetting.value,
10653
10765
  "hide-delete": true,
@@ -10685,7 +10797,7 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10685
10797
  unref(nodeHelpers).isCustomApiCallSelected(unref(nodeValues)) ? (openBlock(), createElementBlock("div", _hoisted_8, [
10686
10798
  createVNode(_component_n8n_notice, {
10687
10799
  content: unref(i18n).baseText("nodeSettings.useTheHttpRequestNode", {
10688
- interpolate: { nodeTypeDisplayName: _ctx.nodeType?.displayName ?? "" }
10800
+ interpolate: { nodeTypeDisplayName: nodeType.value?.displayName ?? "" }
10689
10801
  })
10690
10802
  }, null, 8, ["content"])
10691
10803
  ])) : createCommentVNode("", true)
@@ -10693,7 +10805,7 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10693
10805
  [vShow, openPanel.value === "params"]
10694
10806
  ]),
10695
10807
  withDirectives(createBaseVNode("div", null, [
10696
- createVNode(_sfc_main$V, {
10808
+ createVNode(_sfc_main$W, {
10697
10809
  parameters: parametersSetting.value,
10698
10810
  "node-values": unref(nodeValues),
10699
10811
  "is-read-only": isReadOnly.value,
@@ -10703,7 +10815,7 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10703
10815
  onValueChanged: valueChanged,
10704
10816
  onParameterBlur
10705
10817
  }, null, 8, ["parameters", "node-values", "is-read-only", "hidden-issues-inputs"]),
10706
- createVNode(_sfc_main$V, {
10818
+ createVNode(_sfc_main$W, {
10707
10819
  parameters: nodeSettings.value,
10708
10820
  "hide-delete": true,
10709
10821
  "node-values": unref(nodeValues),
@@ -10716,7 +10828,7 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10716
10828
  createBaseVNode("div", _hoisted_9, [
10717
10829
  createTextVNode(toDisplayString(unref(i18n).baseText("nodeSettings.nodeVersion", {
10718
10830
  interpolate: {
10719
- node: _ctx.nodeType?.displayName,
10831
+ node: nodeType.value?.displayName,
10720
10832
  version: (node2.value.typeVersion ?? latestVersion.value).toString()
10721
10833
  }
10722
10834
  })) + " ", 1),
@@ -10724,10 +10836,22 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10724
10836
  ])
10725
10837
  ], 512), [
10726
10838
  [vShow, openPanel.value === "settings"]
10727
- ])
10839
+ ]),
10840
+ isNDVV2.value && featureRequestUrl.value ? (openBlock(), createElementBlock("div", {
10841
+ key: 1,
10842
+ class: normalizeClass(_ctx.$style.featureRequest)
10843
+ }, [
10844
+ createBaseVNode("a", {
10845
+ target: "_blank",
10846
+ onClick: onFeatureRequestClick
10847
+ }, [
10848
+ createVNode(_component_N8nIcon, { icon: "lightbulb" }),
10849
+ createTextVNode(" " + toDisplayString(unref(i18n).baseText("ndv.featureRequest")), 1)
10850
+ ])
10851
+ ], 2)) : createCommentVNode("", true)
10728
10852
  ], 34)) : createCommentVNode("", true),
10729
10853
  node2.value && !props.isEmbeddedInCanvas ? (openBlock(), createBlock(NDVSubConnections, {
10730
- key: 2,
10854
+ key: 4,
10731
10855
  ref_key: "subConnections",
10732
10856
  ref: subConnections,
10733
10857
  "root-node": node2.value,
@@ -10739,18 +10863,20 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10739
10863
  };
10740
10864
  }
10741
10865
  });
10742
- const header$1 = "_header_13al3_123";
10743
- const warningIcon = "_warningIcon_13al3_127";
10744
- const descriptionContainer = "_descriptionContainer_13al3_132";
10866
+ const header$1 = "_header_1vh2c_123";
10867
+ const warningIcon = "_warningIcon_1vh2c_127";
10868
+ const descriptionContainer = "_descriptionContainer_1vh2c_132";
10869
+ const featureRequest = "_featureRequest_1vh2c_137";
10745
10870
  const style0$m = {
10746
10871
  header: header$1,
10747
10872
  warningIcon,
10748
- descriptionContainer
10873
+ descriptionContainer,
10874
+ featureRequest
10749
10875
  };
10750
10876
  const cssModules$m = {
10751
10877
  "$style": style0$m
10752
10878
  };
10753
- const NodeSettings = /* @__PURE__ */ _export_sfc$1(_sfc_main$t, [["__cssModules", cssModules$m], ["__scopeId", "data-v-8e2785e0"]]);
10879
+ const NodeSettings = /* @__PURE__ */ _export_sfc$1(_sfc_main$t, [["__cssModules", cssModules$m], ["__scopeId", "data-v-a75f342f"]]);
10754
10880
  const _sfc_main$s = /* @__PURE__ */ defineComponent({
10755
10881
  __name: "ExperimentalCanvasNodeSettings",
10756
10882
  props: {
@@ -10759,16 +10885,9 @@ const _sfc_main$s = /* @__PURE__ */ defineComponent({
10759
10885
  },
10760
10886
  setup(__props) {
10761
10887
  const settingsEventBus = createEventBus();
10762
- const nodeTypesStore = useNodeTypesStore();
10763
10888
  const workflowsStore = useWorkflowsStore();
10764
10889
  const { renameNode } = useCanvasOperations();
10765
10890
  const activeNode = computed(() => workflowsStore.getNodeById(__props.nodeId));
10766
- const activeNodeType = computed(() => {
10767
- if (activeNode.value) {
10768
- return nodeTypesStore.getNodeType(activeNode.value.type, activeNode.value.typeVersion);
10769
- }
10770
- return null;
10771
- });
10772
10891
  function handleValueChanged(parameterData) {
10773
10892
  if (parameterData.name === "name" && parameterData.oldValue) {
10774
10893
  void renameNode(parameterData.oldValue, parameterData.value);
@@ -10779,7 +10898,6 @@ const _sfc_main$s = /* @__PURE__ */ defineComponent({
10779
10898
  "event-bus": unref(settingsEventBus),
10780
10899
  dragging: false,
10781
10900
  "active-node": activeNode.value,
10782
- "node-type": activeNodeType.value,
10783
10901
  "push-ref": "",
10784
10902
  "foreign-credentials": [],
10785
10903
  "read-only": false,
@@ -10794,7 +10912,7 @@ const _sfc_main$s = /* @__PURE__ */ defineComponent({
10794
10912
  renderSlot(_ctx.$slots, "actions")
10795
10913
  ]),
10796
10914
  _: 3
10797
- }, 8, ["event-bus", "active-node", "node-type", "no-wheel"]);
10915
+ }, 8, ["event-bus", "active-node", "no-wheel"]);
10798
10916
  };
10799
10917
  }
10800
10918
  });
@@ -10901,8 +11019,8 @@ const _sfc_main$r = /* @__PURE__ */ defineComponent({
10901
11019
  /* to not interrupt panning while allowing scroll of the settings pane, allow wheel event while panning */
10902
11020
  }, {
10903
11021
  actions: withCtx(() => [
10904
- createVNode(unref(_sfc_main$R), {
10905
- icon: "compress",
11022
+ createVNode(unref(_sfc_main$S), {
11023
+ icon: "minimize-2",
10906
11024
  type: "secondary",
10907
11025
  text: "",
10908
11026
  size: "mini",
@@ -10926,7 +11044,7 @@ const _sfc_main$r = /* @__PURE__ */ defineComponent({
10926
11044
  "read-only": ""
10927
11045
  }, null, 8, ["model-value", "node-type"])) : createCommentVNode("", true),
10928
11046
  createVNode(unref(N8nIcon), {
10929
- icon: "expand",
11047
+ icon: "maximize-2",
10930
11048
  size: "large"
10931
11049
  })
10932
11050
  ], 2))
@@ -11053,7 +11171,7 @@ const _sfc_main$q = /* @__PURE__ */ defineComponent({
11053
11171
  }
11054
11172
  return (_ctx, _cache) => {
11055
11173
  const _component_CanvasNodeTooltip = __unplugin_components_0$3;
11056
- const _component_NodeIcon = _sfc_main$T;
11174
+ const _component_NodeIcon = _sfc_main$U;
11057
11175
  const _component_CanvasNodeDisabledStrikeThrough = __unplugin_components_2;
11058
11176
  const _component_CanvasNodeStatusIcons = __unplugin_components_3;
11059
11177
  return unref(experimentalNdvStore).isActive(unref(viewport).zoom) ? (openBlock(), createBlock(ExperimentalInPlaceNodeSettings, {
@@ -11105,24 +11223,24 @@ const _sfc_main$q = /* @__PURE__ */ defineComponent({
11105
11223
  };
11106
11224
  }
11107
11225
  });
11108
- const node = "_node_1gj9w_123";
11109
- const trigger$1 = "_trigger_1gj9w_145";
11110
- const configuration = "_configuration_1gj9w_148";
11111
- const statusIcons = "_statusIcons_1gj9w_153";
11112
- const configurable = "_configurable_1gj9w_156";
11113
- const icon = "_icon_1gj9w_156";
11114
- const description = "_description_1gj9w_159";
11115
- const label$5 = "_label_1gj9w_172";
11116
- const subtitle = "_subtitle_1gj9w_175";
11117
- const running = "_running_1gj9w_181";
11118
- const selected$1 = "_selected_1gj9w_188";
11119
- const success$1 = "_success_1gj9w_191";
11120
- const warning = "_warning_1gj9w_197";
11121
- const error = "_error_1gj9w_200";
11122
- const pinned = "_pinned_1gj9w_203";
11123
- const disabled$1 = "_disabled_1gj9w_209";
11124
- const waiting = "_waiting_1gj9w_222";
11125
- const disabledLabel = "_disabledLabel_1gj9w_241";
11226
+ const node = "_node_15pfo_123";
11227
+ const trigger$1 = "_trigger_15pfo_145";
11228
+ const configuration = "_configuration_15pfo_148";
11229
+ const statusIcons = "_statusIcons_15pfo_153";
11230
+ const configurable = "_configurable_15pfo_156";
11231
+ const icon = "_icon_15pfo_156";
11232
+ const description = "_description_15pfo_159";
11233
+ const label$5 = "_label_15pfo_172";
11234
+ const subtitle = "_subtitle_15pfo_175";
11235
+ const running = "_running_15pfo_181";
11236
+ const selected$1 = "_selected_15pfo_188";
11237
+ const success$1 = "_success_15pfo_191";
11238
+ const warning = "_warning_15pfo_197";
11239
+ const error = "_error_15pfo_200";
11240
+ const pinned = "_pinned_15pfo_203";
11241
+ const disabled$1 = "_disabled_15pfo_209";
11242
+ const waiting = "_waiting_15pfo_222";
11243
+ const disabledLabel = "_disabledLabel_15pfo_242";
11126
11244
  const style0$k = {
11127
11245
  node,
11128
11246
  trigger: trigger$1,
@@ -12660,7 +12778,7 @@ const _sfc_main$n = /* @__PURE__ */ defineComponent({
12660
12778
  );
12661
12779
  }
12662
12780
  return (_ctx, _cache) => {
12663
- const _component_FontAwesomeIcon = resolveComponent("FontAwesomeIcon");
12781
+ const _component_N8nIcon = N8nIcon;
12664
12782
  const _component_N8nTooltip = N8nTooltip;
12665
12783
  return openBlock(), createElementBlock("div", {
12666
12784
  ref: "container",
@@ -12683,9 +12801,10 @@ const _sfc_main$n = /* @__PURE__ */ defineComponent({
12683
12801
  "data-test-id": "canvas-plus-button",
12684
12802
  onClick: withModifiers(onClick, ["stop"])
12685
12803
  }, [
12686
- createVNode(_component_FontAwesomeIcon, {
12804
+ createVNode(_component_N8nIcon, {
12687
12805
  icon: "plus",
12688
- size: "lg"
12806
+ color: "foreground-xdark",
12807
+ size: 40
12689
12808
  })
12690
12809
  ], 2)
12691
12810
  ]),
@@ -12699,9 +12818,9 @@ const _sfc_main$n = /* @__PURE__ */ defineComponent({
12699
12818
  };
12700
12819
  }
12701
12820
  });
12702
- const addNodes = "_addNodes_1qfrq_123";
12703
- const button$1 = "_button_1qfrq_131";
12704
- const label$4 = "_label_1qfrq_152";
12821
+ const addNodes = "_addNodes_kytyq_123";
12822
+ const button$1 = "_button_kytyq_131";
12823
+ const label$4 = "_label_kytyq_145";
12705
12824
  const style0$i = {
12706
12825
  addNodes,
12707
12826
  button: button$1,
@@ -12935,6 +13054,7 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
12935
13054
  const emit = __emit;
12936
13055
  const style = useCssModule();
12937
13056
  const classes = computed(() => [
13057
+ "canvas-handle-plus-wrapper",
12938
13058
  style.wrapper,
12939
13059
  style[props.position],
12940
13060
  style[props.type],
@@ -13031,11 +13151,13 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
13031
13151
  rx: "4",
13032
13152
  fill: "var(--color-foreground-xlight)"
13033
13153
  }, null, 2),
13034
- createBaseVNode("path", {
13035
- class: normalizeClass([_ctx.handleClasses, "clickable"]),
13036
- fill: "var(--color-foreground-xdark)",
13037
- d: "m16.40655,10.89837l-3.30491,0l0,-3.30491c0,-0.40555 -0.32889,-0.73443 -0.73443,-0.73443l-0.73443,0c-0.40554,0 -0.73442,0.32888 -0.73442,0.73443l0,3.30491l-3.30491,0c-0.40555,0 -0.73443,0.32888 -0.73443,0.73442l0,0.73443c0,0.40554 0.32888,0.73443 0.73443,0.73443l3.30491,0l0,3.30491c0,0.40554 0.32888,0.73442 0.73442,0.73442l0.73443,0c0.40554,0 0.73443,-0.32888 0.73443,-0.73442l0,-3.30491l3.30491,0c0.40554,0 0.73442,-0.32889 0.73442,-0.73443l0,-0.73443c0,-0.40554 -0.32888,-0.73442 -0.73442,-0.73442z"
13038
- }, null, 2)
13154
+ _cache[0] || (_cache[0] = createBaseVNode("path", {
13155
+ stroke: "currentColor",
13156
+ "stroke-linecap": "round",
13157
+ "stroke-linejoin": "round",
13158
+ d: "M8 12h8m-4-4v8",
13159
+ class: "source clickable"
13160
+ }, null, -1))
13039
13161
  ], 10, _hoisted_3)
13040
13162
  ], 14, _hoisted_1$2);
13041
13163
  };
@@ -13479,7 +13601,7 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
13479
13601
  await runEntireWorkflow("node", __props.name);
13480
13602
  }
13481
13603
  return (_ctx, _cache) => {
13482
- const _component_FontAwesomeIcon = resolveComponent("FontAwesomeIcon");
13604
+ const _component_N8nIcon = N8nIcon;
13483
13605
  return openBlock(), createElementBlock("div", {
13484
13606
  class: normalizeClass(containerClass.value),
13485
13607
  onClick: _cache[2] || (_cache[2] = withModifiers(() => {
@@ -13491,9 +13613,9 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
13491
13613
  createBaseVNode("div", {
13492
13614
  class: normalizeClass(_ctx.$style.bolt)
13493
13615
  }, [
13494
- createVNode(_component_FontAwesomeIcon, {
13495
- icon: "bolt",
13496
- size: "lg"
13616
+ createVNode(_component_N8nIcon, {
13617
+ icon: "bolt-filled",
13618
+ size: "large"
13497
13619
  })
13498
13620
  ], 2),
13499
13621
  !_ctx.readOnly ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
@@ -13501,7 +13623,7 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
13501
13623
  isChatOpen.value ? (openBlock(), createBlock(unref(N8nButton), {
13502
13624
  key: 0,
13503
13625
  type: "secondary",
13504
- icon: "comment",
13626
+ icon: "message-circle",
13505
13627
  size: "large",
13506
13628
  disabled: isExecuting.value,
13507
13629
  "data-test-id": testId.value,
@@ -13515,7 +13637,7 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
13515
13637
  default: withCtx(() => [
13516
13638
  createVNode(unref(N8nButton), {
13517
13639
  type: "primary",
13518
- icon: "comment",
13640
+ icon: "message-circle",
13519
13641
  size: "large",
13520
13642
  disabled: isExecuting.value,
13521
13643
  "data-test-id": testId.value,
@@ -13528,7 +13650,7 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
13528
13650
  ], 64)) : (openBlock(), createBlock(unref(N8nButton), {
13529
13651
  key: 1,
13530
13652
  type: "primary",
13531
- icon: "flask",
13653
+ icon: "flask-conical",
13532
13654
  size: "large",
13533
13655
  disabled: isExecuting.value,
13534
13656
  "data-test-id": testId.value,
@@ -13656,7 +13778,7 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
13656
13778
  const handleType = mode === CanvasConnectionMode.Input ? "target" : "source";
13657
13779
  const connectionsCount = connections2.value[mode][endpoint.type]?.[endpoint.index]?.length ?? 0;
13658
13780
  const isConnecting = connectingHandle.value?.nodeId === props.id && connectingHandle.value?.handleType === handleType && connectingHandle.value?.handleId === handleId;
13659
- const offsetValue = position2 === Position.Bottom ? `${GRID_SIZE * (2 + index * 2)}px` : `${100 / (endpoints.length + 1) * (index + 1)}%`;
13781
+ const offsetValue = position2 === Position.Bottom ? `${GRID_SIZE * 2 * (1 + index * 2) + CONFIGURATION_NODE_OFFSET}px` : `${100 / (endpoints.length + 1) * (index + 1)}%`;
13660
13782
  return {
13661
13783
  ...endpoint,
13662
13784
  handleId,
@@ -14513,14 +14635,14 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
14513
14635
  createVNode(_component_CanvasConnectionLine, normalizeProps(guardReactiveProps(connectionLineProps)), null, 16)
14514
14636
  ]),
14515
14637
  default: withCtx(() => [
14516
- createVNode(_sfc_main$G, { id: arrowHeadMarkerId.value }, null, 8, ["id"]),
14517
- createVNode(_sfc_main$H, {
14638
+ createVNode(_sfc_main$H, { id: arrowHeadMarkerId.value }, null, 8, ["id"]),
14639
+ createVNode(_sfc_main$I, {
14518
14640
  viewport: unref(viewport),
14519
14641
  striped: _ctx.readOnly
14520
14642
  }, null, 8, ["viewport", "striped"]),
14521
14643
  createVNode(Transition$1, { name: "minimap" }, {
14522
14644
  default: withCtx(() => [
14523
- withDirectives(createVNode(unref(_sfc_main$K), {
14645
+ withDirectives(createVNode(unref(_sfc_main$L), {
14524
14646
  "data-test-id": "canvas-minimap",
14525
14647
  "aria-label": "n8n Minimap",
14526
14648
  height: 120,
@@ -15116,7 +15238,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
15116
15238
  { immediate: true }
15117
15239
  );
15118
15240
  return (_ctx, _cache) => {
15119
- const _component_N8nIconButton = _sfc_main$R;
15241
+ const _component_N8nIconButton = _sfc_main$S;
15120
15242
  return openBlock(), createElementBlock("div", {
15121
15243
  class: normalizeClass([_ctx.$style.component, content2.value === void 0 ? _ctx.$style.closed : ""])
15122
15244
  }, [
@@ -15134,7 +15256,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
15134
15256
  }, {
15135
15257
  actions: withCtx(() => [
15136
15258
  createVNode(_component_N8nIconButton, {
15137
- icon: "expand",
15259
+ icon: "maximize-2",
15138
15260
  type: "secondary",
15139
15261
  text: "",
15140
15262
  size: "mini",
@@ -15213,8 +15335,9 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
15213
15335
  nodes: _ctx.executing ? unref(mappedNodesThrottled) : unref(mappedNodes),
15214
15336
  connections: _ctx.executing ? unref(mappedConnectionsThrottled) : unref(mappedConnections),
15215
15337
  "event-bus": _ctx.eventBus,
15216
- "read-only": _ctx.readOnly
15217
- }, _ctx.$attrs), null, 16, ["id", "nodes", "connections", "event-bus", "read-only"])) : createCommentVNode("", true)
15338
+ "read-only": _ctx.readOnly,
15339
+ executing: _ctx.executing
15340
+ }, _ctx.$attrs), null, 16, ["id", "nodes", "connections", "event-bus", "read-only", "executing"])) : createCommentVNode("", true)
15218
15341
  ], 2),
15219
15342
  renderSlot(_ctx.$slots, "default"),
15220
15343
  unref(settingsStore).experimental__dockedNodeSettingsEnabled && !props.readOnly ? (openBlock(), createBlock(ExperimentalNodeDetailsDrawer, {
@@ -15238,29 +15361,61 @@ const WorkflowCanvas = /* @__PURE__ */ _export_sfc$1(_sfc_main$7, [["__cssModule
15238
15361
  const _sfc_main$6 = /* @__PURE__ */ defineComponent({
15239
15362
  ...{ name: "FocusPanel" },
15240
15363
  __name: "FocusPanel",
15364
+ props: {
15365
+ executable: { type: Boolean }
15366
+ },
15241
15367
  setup(__props) {
15368
+ const props = __props;
15242
15369
  const locale = useI18n();
15370
+ const nodeHelpers = useNodeHelpers();
15243
15371
  const focusPanelStore = useFocusPanelStore();
15372
+ const nodeTypesStore = useNodeTypesStore();
15373
+ const nodeSettingsParameters = useNodeSettingsParameters();
15244
15374
  const focusedNodeParameter = computed(() => focusPanelStore.focusedNodeParameters[0]);
15375
+ const resolvedParameter = computed(
15376
+ () => focusedNodeParameter.value && focusPanelStore.isRichParameter(focusedNodeParameter.value) ? focusedNodeParameter.value : void 0
15377
+ );
15245
15378
  const focusPanelActive = computed(() => focusPanelStore.focusPanelActive);
15379
+ const isExecutable2 = computed(() => {
15380
+ if (!resolvedParameter.value) return false;
15381
+ const foreignCredentials = nodeHelpers.getForeignCredentialsIfSharingEnabled(
15382
+ resolvedParameter.value.node.credentials
15383
+ );
15384
+ return nodeHelpers.isNodeExecutable(
15385
+ resolvedParameter.value.node,
15386
+ props.executable,
15387
+ foreignCredentials
15388
+ );
15389
+ });
15390
+ const isToolNode = computed(
15391
+ () => resolvedParameter.value ? nodeTypesStore.isToolNode(resolvedParameter.value?.node.type) : false
15392
+ );
15246
15393
  const expressionModeEnabled = computed(
15247
- () => focusedNodeParameter.value && isValueExpression(focusedNodeParameter.value.parameter, focusedNodeParameter.value.value)
15394
+ () => resolvedParameter.value && isValueExpression(resolvedParameter.value.parameter, resolvedParameter.value.value)
15248
15395
  );
15249
15396
  function optionSelected() {
15250
15397
  }
15251
- function valueChanged() {
15252
- }
15253
- function executeFocusedNode() {
15398
+ function valueChanged(value) {
15399
+ if (resolvedParameter.value === void 0) {
15400
+ return;
15401
+ }
15402
+ nodeSettingsParameters.updateNodeParameter(
15403
+ { value, name: resolvedParameter.value.parameterPath },
15404
+ value,
15405
+ resolvedParameter.value.node,
15406
+ isToolNode.value
15407
+ );
15254
15408
  }
15255
15409
  return (_ctx, _cache) => {
15256
15410
  const _component_n8n_icon = N8nIcon;
15257
- const _component_n8n_button = N8nButton;
15258
- const _component_N8nTooltip = N8nTooltip;
15259
- const _component_ParameterOptions = __unplugin_components_3$1;
15260
- const _component_ExpressionEditorModalInput = __unplugin_components_4;
15411
+ const _component_NodeExecuteButton = _sfc_main$V;
15412
+ const _component_ParameterOptions = __unplugin_components_2$2;
15413
+ const _component_ExpressionEditorModalInput = __unplugin_components_3$1;
15261
15414
  return focusPanelActive.value ? (openBlock(), createElementBlock("div", {
15262
15415
  key: 0,
15263
- class: normalizeClass(_ctx.$style.container)
15416
+ class: normalizeClass(_ctx.$style.container),
15417
+ onKeydown: _cache[3] || (_cache[3] = withModifiers(() => {
15418
+ }, ["stop"]))
15264
15419
  }, [
15265
15420
  createBaseVNode("div", {
15266
15421
  class: normalizeClass(_ctx.$style.header)
@@ -15285,7 +15440,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
15285
15440
  })
15286
15441
  ], 2)
15287
15442
  ], 2),
15288
- focusedNodeParameter.value ? (openBlock(), createElementBlock("div", {
15443
+ resolvedParameter.value ? (openBlock(), createElementBlock("div", {
15289
15444
  key: 0,
15290
15445
  class: normalizeClass(_ctx.$style.content)
15291
15446
  }, [
@@ -15300,7 +15455,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
15300
15455
  size: "small"
15301
15456
  }, {
15302
15457
  default: withCtx(() => [
15303
- createTextVNode(toDisplayString(focusedNodeParameter.value.parameter.displayName), 1)
15458
+ createTextVNode(toDisplayString(resolvedParameter.value.parameter.displayName), 1)
15304
15459
  ]),
15305
15460
  _: 1
15306
15461
  }),
@@ -15309,29 +15464,22 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
15309
15464
  size: "xsmall"
15310
15465
  }, {
15311
15466
  default: withCtx(() => [
15312
- createTextVNode(toDisplayString(focusedNodeParameter.value.nodeName), 1)
15467
+ createTextVNode(toDisplayString(resolvedParameter.value.node.name), 1)
15313
15468
  ]),
15314
15469
  _: 1
15315
15470
  })
15316
15471
  ], 2),
15317
- createVNode(_component_N8nTooltip, null, {
15318
- content: withCtx(() => [
15319
- createVNode(unref(N8nText), { size: "small" }, {
15320
- default: withCtx(() => [
15321
- createTextVNode(toDisplayString(unref(locale).baseText("nodeView.focusPanel.executeButtonTooltip")), 1)
15322
- ]),
15323
- _: 1
15324
- })
15325
- ]),
15326
- default: withCtx(() => [
15327
- createVNode(_component_n8n_button, mergeProps({ icon: "play", square: true }, {
15328
- size: "small",
15329
- type: "primary",
15330
- onClick: executeFocusedNode
15331
- }), null, 16)
15332
- ]),
15333
- _: 1
15334
- })
15472
+ createVNode(_component_NodeExecuteButton, {
15473
+ "data-test-id": "node-execute-button",
15474
+ "node-name": resolvedParameter.value.node.name,
15475
+ tooltip: `Execute ${resolvedParameter.value.node.name}`,
15476
+ disabled: !isExecutable2.value,
15477
+ size: "small",
15478
+ icon: "play",
15479
+ square: true,
15480
+ "hide-label": true,
15481
+ "telemetry-source": "focus"
15482
+ }, null, 8, ["node-name", "tooltip", "disabled"])
15335
15483
  ], 2),
15336
15484
  createBaseVNode("div", {
15337
15485
  class: normalizeClass(_ctx.$style.parameterDetailsWrapper)
@@ -15339,38 +15487,39 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
15339
15487
  createBaseVNode("div", {
15340
15488
  class: normalizeClass(_ctx.$style.parameterOptionsWrapper)
15341
15489
  }, [
15342
- _cache[2] || (_cache[2] = createBaseVNode("div", null, null, -1)),
15490
+ _cache[4] || (_cache[4] = createBaseVNode("div", null, null, -1)),
15343
15491
  createVNode(_component_ParameterOptions, {
15344
- parameter: focusedNodeParameter.value.parameter,
15345
- value: focusedNodeParameter.value.value,
15492
+ parameter: resolvedParameter.value.parameter,
15493
+ value: resolvedParameter.value.value,
15346
15494
  "is-read-only": false,
15347
15495
  "onUpdate:modelValue": optionSelected
15348
15496
  }, null, 8, ["parameter", "value"])
15349
15497
  ], 2),
15350
- createBaseVNode("div", {
15498
+ typeof resolvedParameter.value.value === "string" ? (openBlock(), createElementBlock("div", {
15499
+ key: 0,
15351
15500
  class: normalizeClass(_ctx.$style.editorContainer)
15352
15501
  }, [
15353
15502
  expressionModeEnabled.value ? (openBlock(), createBlock(_component_ExpressionEditorModalInput, {
15354
15503
  key: 0,
15355
- "model-value": focusedNodeParameter.value.value,
15504
+ "model-value": resolvedParameter.value.value,
15356
15505
  class: normalizeClass(_ctx.$style.editor),
15357
15506
  "is-read-only": false,
15358
- path: focusedNodeParameter.value.parameterPath,
15507
+ path: resolvedParameter.value.parameterPath,
15359
15508
  "data-test-id": "expression-modal-input",
15360
15509
  "target-node-parameter-context": {
15361
- nodeName: focusedNodeParameter.value.nodeName,
15362
- parameterPath: focusedNodeParameter.value.parameterPath
15510
+ nodeName: resolvedParameter.value.node.name,
15511
+ parameterPath: resolvedParameter.value.parameterPath
15363
15512
  },
15364
- onChange: valueChanged
15513
+ onChange: _cache[1] || (_cache[1] = ($event) => valueChanged($event.value))
15365
15514
  }, null, 8, ["model-value", "class", "path", "target-node-parameter-context"])) : (openBlock(), createBlock(unref(N8nInput), {
15366
15515
  key: 1,
15367
- modelValue: focusedNodeParameter.value.value,
15368
- "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => focusedNodeParameter.value.value = $event),
15516
+ "model-value": resolvedParameter.value.value,
15369
15517
  class: normalizeClass(_ctx.$style.editor),
15370
15518
  type: "textarea",
15371
- resize: "none"
15372
- }, null, 8, ["modelValue", "class"]))
15373
- ], 2)
15519
+ resize: "none",
15520
+ "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => valueChanged($event))
15521
+ }, null, 8, ["model-value", "class"]))
15522
+ ], 2)) : createCommentVNode("", true)
15374
15523
  ], 2)
15375
15524
  ], 2)) : (openBlock(), createElementBlock("div", {
15376
15525
  key: 1,
@@ -15387,23 +15536,23 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
15387
15536
  })
15388
15537
  ], 2)
15389
15538
  ], 2))
15390
- ], 2)) : createCommentVNode("", true);
15539
+ ], 34)) : createCommentVNode("", true);
15391
15540
  };
15392
15541
  }
15393
15542
  });
15394
- const container = "_container_1s06k_123";
15395
- const closeButton = "_closeButton_1s06k_131";
15396
- const header = "_header_1s06k_135";
15397
- const content = "_content_1s06k_143";
15398
- const emptyContent = "_emptyContent_1s06k_149";
15399
- const emptyText = "_emptyText_1s06k_154";
15400
- const tabHeader = "_tabHeader_1s06k_157";
15401
- const tabHeaderText = "_tabHeaderText_1s06k_164";
15402
- const buttonWrapper = "_buttonWrapper_1s06k_169";
15403
- const parameterDetailsWrapper = "_parameterDetailsWrapper_1s06k_174";
15404
- const parameterOptionsWrapper = "_parameterOptionsWrapper_1s06k_181";
15405
- const editorContainer = "_editorContainer_1s06k_185";
15406
- const editor = "_editor_1s06k_185";
15543
+ const container = "_container_1shes_123";
15544
+ const closeButton = "_closeButton_1shes_132";
15545
+ const header = "_header_1shes_136";
15546
+ const content = "_content_1shes_144";
15547
+ const emptyContent = "_emptyContent_1shes_150";
15548
+ const emptyText = "_emptyText_1shes_155";
15549
+ const tabHeader = "_tabHeader_1shes_158";
15550
+ const tabHeaderText = "_tabHeaderText_1shes_165";
15551
+ const buttonWrapper = "_buttonWrapper_1shes_170";
15552
+ const parameterDetailsWrapper = "_parameterDetailsWrapper_1shes_175";
15553
+ const parameterOptionsWrapper = "_parameterOptionsWrapper_1shes_182";
15554
+ const editorContainer = "_editorContainer_1shes_186";
15555
+ const editor = "_editor_1shes_186";
15407
15556
  const style0$2 = {
15408
15557
  container,
15409
15558
  closeButton,
@@ -15474,7 +15623,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
15474
15623
  }
15475
15624
  return (_ctx, _cache) => {
15476
15625
  const _component_I18nT = resolveComponent("I18nT");
15477
- const _component_NodeIcon = _sfc_main$T;
15626
+ const _component_NodeIcon = _sfc_main$U;
15478
15627
  return openBlock(), createElementBlock("div", {
15479
15628
  class: normalizeClass([_ctx.$style.component, isSplitButton.value ? _ctx.$style.split : ""])
15480
15629
  }, [
@@ -15489,7 +15638,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
15489
15638
  loading: _ctx.executing,
15490
15639
  disabled: _ctx.disabled,
15491
15640
  size: "large",
15492
- icon: "flask",
15641
+ icon: "flask-conical",
15493
15642
  type: "primary",
15494
15643
  "data-test-id": "execute-workflow-button",
15495
15644
  onMouseenter: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("mouseenter", $event)),
@@ -15550,7 +15699,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
15550
15699
  disabled: _ctx.disabled,
15551
15700
  class: normalizeClass(_ctx.$style.chevron),
15552
15701
  "aria-label": "Select trigger node",
15553
- icon: "angle-down"
15702
+ icon: "chevron-down"
15554
15703
  }, null, 8, ["disabled", "class"])
15555
15704
  ]),
15556
15705
  menuItem: withCtx((item) => [
@@ -15686,9 +15835,9 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
15686
15835
  () => props.stopping ? i18n.baseText("nodeView.stoppingCurrentExecution") : i18n.baseText("nodeView.stopCurrentExecution")
15687
15836
  );
15688
15837
  return (_ctx, _cache) => {
15689
- const _component_N8nIconButton = _sfc_main$R;
15838
+ const _component_N8nIconButton = _sfc_main$S;
15690
15839
  return openBlock(), createBlock(_component_N8nIconButton, {
15691
- icon: "stop",
15840
+ icon: "square",
15692
15841
  size: "large",
15693
15842
  class: "stop-execution",
15694
15843
  type: "secondary",
@@ -15704,10 +15853,10 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
15704
15853
  setup(__props) {
15705
15854
  const i18n = useI18n();
15706
15855
  return (_ctx, _cache) => {
15707
- const _component_N8nIconButton = _sfc_main$R;
15856
+ const _component_N8nIconButton = _sfc_main$S;
15708
15857
  return openBlock(), createBlock(_component_N8nIconButton, {
15709
15858
  class: "stop-execution",
15710
- icon: "stop",
15859
+ icon: "square",
15711
15860
  size: "large",
15712
15861
  title: unref(i18n).baseText("nodeView.stopWaitingForWebhookCall"),
15713
15862
  type: "secondary",
@@ -15747,7 +15896,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
15747
15896
  return openBlock(), createBlock(_component_N8nButton, {
15748
15897
  label: _ctx.label,
15749
15898
  size: "large",
15750
- icon: "comment",
15899
+ icon: "message-circle",
15751
15900
  type: _ctx.type,
15752
15901
  "data-test-id": "workflow-chat-button"
15753
15902
  }, null, 8, ["label", "type"]);
@@ -15761,13 +15910,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
15761
15910
  __name: "NodeView",
15762
15911
  setup(__props) {
15763
15912
  const LazyNodeCreation = defineAsyncComponent(
15764
- async () => await __vitePreload(() => import("./NodeCreation-Bq5626Ha.js").then((n) => n.N), true ? __vite__mapDeps([0,1,2,3]) : void 0)
15913
+ async () => await __vitePreload(() => import("./NodeCreation-DKbc91uY.js").then((n) => n.N), true ? __vite__mapDeps([0,1,2,3]) : void 0)
15765
15914
  );
15766
15915
  const LazyNodeDetailsView = defineAsyncComponent(
15767
- async () => await __vitePreload(() => import("./NodeDetailsView-DB-5JPUD.js"), true ? __vite__mapDeps([4,1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22]) : void 0)
15916
+ async () => await __vitePreload(() => import("./NodeDetailsView-CPVE5S8P.js"), true ? __vite__mapDeps([4,1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]) : void 0)
15917
+ );
15918
+ const LazyNodeDetailsViewV2 = defineAsyncComponent(
15919
+ async () => await __vitePreload(() => import("./NodeDetailsViewV2-5pxsZwAo.js"), true ? __vite__mapDeps([25,1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,26]) : void 0)
15768
15920
  );
15769
15921
  const LazySetupWorkflowCredentialsButton = defineAsyncComponent(
15770
- async () => await __vitePreload(() => import("./SetupWorkflowCredentialsButton-BWISZAxq.js"), true ? __vite__mapDeps([23,1,2]) : void 0)
15922
+ async () => await __vitePreload(() => import("./SetupWorkflowCredentialsButton-Bj4rSqAV.js"), true ? __vite__mapDeps([27,1,2]) : void 0)
15771
15923
  );
15772
15924
  const $style = useCssModule();
15773
15925
  const router = useRouter();
@@ -15804,6 +15956,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
15804
15956
  const templatesStore = useTemplatesStore();
15805
15957
  const builderStore = useBuilderStore();
15806
15958
  const foldersStore = useFoldersStore();
15959
+ const posthogStore = usePostHog();
15807
15960
  const agentRequestStore = useAgentRequestStore();
15808
15961
  const logsStore = useLogsStore();
15809
15962
  const { addBeforeUnloadEventBindings, removeBeforeUnloadEventBindings } = useBeforeUnload({
@@ -15881,6 +16034,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
15881
16034
  const isReadOnlyEnvironment = computed(() => {
15882
16035
  return sourceControlStore.preferences.branchReadOnly;
15883
16036
  });
16037
+ const isNDVV2 = computed(
16038
+ () => posthogStore.isVariantEnabled(
16039
+ NDV_UI_OVERHAUL_EXPERIMENT.name,
16040
+ NDV_UI_OVERHAUL_EXPERIMENT.variant
16041
+ )
16042
+ );
15884
16043
  const isCanvasReadOnly = computed(() => {
15885
16044
  return isDemoRoute.value || isReadOnlyEnvironment.value || !(workflowPermissions.value.update ?? projectPermissions.value.workflow.update) || editableWorkflow.value.isArchived;
15886
16045
  });
@@ -16078,9 +16237,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
16078
16237
  `User opened workflow from onboarding template with ID ${editableWorkflow.value.meta?.onboardingId}`,
16079
16238
  {
16080
16239
  workflow_id: workflowId.value
16081
- },
16082
- {
16083
- withPostHog: true
16084
16240
  }
16085
16241
  );
16086
16242
  }
@@ -16146,17 +16302,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
16146
16302
  fitView();
16147
16303
  }
16148
16304
  function trackOpenWorkflowTemplate(templateId) {
16149
- telemetry.track(
16150
- "User inserted workflow template",
16151
- {
16152
- source: "workflow",
16153
- template_id: tryToParseNumber(templateId),
16154
- wf_template_repo_session_id: templatesStore.previousSessionId
16155
- },
16156
- {
16157
- withPostHog: true
16158
- }
16159
- );
16305
+ telemetry.track("User inserted workflow template", {
16306
+ source: "workflow",
16307
+ template_id: tryToParseNumber(templateId),
16308
+ wf_template_repo_session_id: templatesStore.previousSessionId
16309
+ });
16160
16310
  }
16161
16311
  const triggerNodes = computed(() => {
16162
16312
  return editableWorkflow.value.nodes.filter(
@@ -16299,7 +16449,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
16299
16449
  toggleNodesPinned(ids, source);
16300
16450
  }
16301
16451
  async function onSaveWorkflow() {
16302
- const workflowIsSaved = !uiStore.stateIsDirty;
16452
+ const workflowIsSaved = !uiStore.stateIsDirty && !workflowsStore.isNewWorkflow;
16303
16453
  const workflowIsArchived = workflowsStore.workflow.isArchived;
16304
16454
  if (workflowIsSaved || workflowIsArchived) {
16305
16455
  return;
@@ -16329,9 +16479,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
16329
16479
  async function onCreateWorkflow() {
16330
16480
  await router.push({ name: VIEWS.NEW_WORKFLOW });
16331
16481
  }
16332
- function onRenameNode(parameterData) {
16333
- if (parameterData.name === "name" && parameterData.oldValue) {
16334
- void renameNode(parameterData.oldValue, parameterData.value);
16482
+ function onRenameNode(name) {
16483
+ if (ndvStore.activeNode?.name) {
16484
+ void renameNode(ndvStore.activeNode.name, name);
16335
16485
  }
16336
16486
  }
16337
16487
  async function onOpenRenameNodeModal(id2) {
@@ -17152,7 +17302,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
17152
17302
  "onUpdate:node:parameters": onUpdateNodeParameters,
17153
17303
  "onUpdate:node:inputs": onUpdateNodeInputs,
17154
17304
  "onUpdate:node:outputs": onUpdateNodeOutputs,
17155
- "onUpdate:logsOpen": _cache[2] || (_cache[2] = ($event) => unref(logsStore).toggleOpen($event)),
17305
+ "onUpdate:logsOpen": _cache[3] || (_cache[3] = ($event) => unref(logsStore).toggleOpen($event)),
17156
17306
  "onUpdate:logs:inputOpen": unref(logsStore).toggleInputOpen,
17157
17307
  "onUpdate:logs:outputOpen": unref(logsStore).toggleOutputOpen,
17158
17308
  "onUpdate:hasRangeSelection": unref(canvasStore).setHasRangeSelection,
@@ -17174,7 +17324,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
17174
17324
  "onDuplicate:nodes": onDuplicateNodes,
17175
17325
  "onCopy:nodes": onCopyNodes,
17176
17326
  "onCut:nodes": onCutNodes,
17177
- "onRun:workflow": _cache[3] || (_cache[3] = ($event) => unref(runEntireWorkflow)("main")),
17327
+ "onRun:workflow": _cache[4] || (_cache[4] = ($event) => unref(runEntireWorkflow)("main")),
17178
17328
  "onSave:workflow": onSaveWorkflow,
17179
17329
  "onCreate:workflow": onCreateWorkflow,
17180
17330
  "onViewport:change": onViewportChange,
@@ -17183,7 +17333,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
17183
17333
  onTidyUp,
17184
17334
  "onToggle:focusPanel": onToggleFocusPanel,
17185
17335
  onExtractWorkflow,
17186
- onStartChat: _cache[4] || (_cache[4] = ($event) => unref(startChat)())
17336
+ onStartChat: _cache[5] || (_cache[5] = ($event) => unref(startChat)())
17187
17337
  }, {
17188
17338
  default: withCtx(() => [
17189
17339
  (openBlock(), createBlock(Suspense, null, {
@@ -17269,24 +17419,44 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
17269
17419
  })),
17270
17420
  (openBlock(), createBlock(Suspense, null, {
17271
17421
  default: withCtx(() => [
17272
- createVNode(unref(LazyNodeDetailsView), {
17422
+ !isNDVV2.value ? (openBlock(), createBlock(unref(LazyNodeDetailsView), {
17423
+ key: 0,
17273
17424
  "workflow-object": unref(editableWorkflowObject),
17274
17425
  "read-only": isCanvasReadOnly.value,
17275
17426
  "is-production-execution-preview": isProductionExecutionPreview.value,
17276
17427
  renaming: false,
17277
- onValueChanged: onRenameNode,
17428
+ onValueChanged: _cache[2] || (_cache[2] = ($event) => onRenameNode($event.value)),
17429
+ onStopExecution,
17430
+ onSwitchSelectedNode: onSwitchActiveNode,
17431
+ onOpenConnectionNodeCreator: onOpenSelectiveNodeCreator,
17432
+ onSaveKeyboardShortcut: onSaveWorkflow
17433
+ }, null, 8, ["workflow-object", "read-only", "is-production-execution-preview"])) : createCommentVNode("", true)
17434
+ ]),
17435
+ _: 1
17436
+ })),
17437
+ (openBlock(), createBlock(Suspense, null, {
17438
+ default: withCtx(() => [
17439
+ isNDVV2.value ? (openBlock(), createBlock(unref(LazyNodeDetailsViewV2), {
17440
+ key: 0,
17441
+ "workflow-object": unref(editableWorkflowObject),
17442
+ "read-only": isCanvasReadOnly.value,
17443
+ "is-production-execution-preview": isProductionExecutionPreview.value,
17444
+ onRenameNode,
17278
17445
  onStopExecution,
17279
17446
  onSwitchSelectedNode: onSwitchActiveNode,
17280
17447
  onOpenConnectionNodeCreator: onOpenSelectiveNodeCreator,
17281
17448
  onSaveKeyboardShortcut: onSaveWorkflow
17282
- }, null, 8, ["workflow-object", "read-only", "is-production-execution-preview"])
17449
+ }, null, 8, ["workflow-object", "read-only", "is-production-execution-preview"])) : createCommentVNode("", true)
17283
17450
  ]),
17284
17451
  _: 1
17285
17452
  }))
17286
17453
  ]),
17287
17454
  _: 1
17288
17455
  }, 8, ["id", "workflow", "workflow-object", "fallback-nodes", "show-fallback-nodes", "event-bus", "read-only", "executing", "key-bindings", "onUpdate:logs:inputOpen", "onUpdate:logs:outputOpen", "onUpdate:hasRangeSelection"])) : createCommentVNode("", true),
17289
- isFocusPanelFeatureEnabled.value ? (openBlock(), createBlock(FocusPanel, { key: 1 })) : createCommentVNode("", true)
17456
+ isFocusPanelFeatureEnabled.value ? (openBlock(), createBlock(FocusPanel, {
17457
+ key: 1,
17458
+ executable: !isCanvasReadOnly.value
17459
+ }, null, 8, ["executable"])) : createCommentVNode("", true)
17290
17460
  ], 2);
17291
17461
  };
17292
17462
  }
@@ -17313,6 +17483,7 @@ const NodeView$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePr
17313
17483
  }, Symbol.toStringTag, { value: "Module" }));
17314
17484
  export {
17315
17485
  NodeSettings as N,
17316
- NodeView$1 as a,
17486
+ useNodeDocsUrl as a,
17487
+ NodeView$1 as b,
17317
17488
  useExperimentalNdvStore as u
17318
17489
  };