n8n-editor-ui 1.97.1 → 1.98.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/dist/assets/{AnimatedSpinner-15ZZp0OO.js → AnimatedSpinner-BiugD1ff.js} +1 -1
  2. package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-CrF4ktlo.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-BChDakRF.js} +1 -1
  3. package/dist/assets/{AuthView-64US-Z-m.js → AuthView-D3YwZZ3s.js} +2 -2
  4. package/dist/assets/{CanvasChatSwitch-CaiSjHFG.css → AuthView-jgkkdJYL.css} +29 -90
  5. package/dist/assets/{ChangePasswordView-Y_vO8rQ4.js → ChangePasswordView-CItQkQJg.js} +3 -3
  6. package/dist/assets/CollectionParameter-Bm8EojJq.js +4 -0
  7. package/dist/assets/{CredentialsView-B90NtMag.js → CredentialsView-DyMOfI6f.js} +7 -7
  8. package/dist/assets/DemoFooter-Dy9DQTdo.js +22 -0
  9. package/dist/assets/{ErrorView-B5-OZKdh.js → ErrorView-BC6y15Eg.js} +1 -1
  10. package/dist/assets/{EvaluationsRootView-6cGJTYGC.js → EvaluationsRootView-BbnDfLFy.js} +25 -18
  11. package/dist/assets/{EvaluationsView-DkIkcLrr.js → EvaluationsView-Qz7rd_By.js} +3 -3
  12. package/dist/assets/{ExecutionsTime--_6xBkkx.css → ExecutionsTime-BDLkVZem.css} +25 -17
  13. package/dist/assets/{ExecutionsTime.vue_vue_type_script_setup_true_lang-hCFNZKpq.js → ExecutionsTime.vue_vue_type_script_setup_true_lang-mrrUdf3t.js} +52 -15
  14. package/dist/assets/{ExecutionsView-cA-SzEOo.js → ExecutionsView-AgniDaEH.js} +8 -8
  15. package/dist/assets/{FileSaver.min-Bv-Q_h7m.js → FileSaver.min-BUciI8xL.js} +1 -1
  16. package/dist/assets/{FixedCollectionParameter-CgLfAVkQ.css → FixedCollectionParameter-DjlaZyUQ.css} +18 -18
  17. package/dist/assets/{FixedCollectionParameter-3cfdvUwK.js → FixedCollectionParameter-NPVvBV3e.js} +2 -2
  18. package/dist/assets/{ForgotMyPasswordView-Cv7uhij6.js → ForgotMyPasswordView-BKsk9OLH.js} +3 -3
  19. package/dist/assets/{InsightsChartAverageRuntime-Cr7taDDn.js → InsightsChartAverageRuntime-Dg7z0rOa.js} +4 -4
  20. package/dist/assets/{InsightsChartFailed-Cm5FrmfQ.js → InsightsChartFailed-i4tYyVRH.js} +4 -4
  21. package/dist/assets/{InsightsChartFailureRate-Ci-cBou0.js → InsightsChartFailureRate-BcWGne0C.js} +4 -4
  22. package/dist/assets/{InsightsChartTimeSaved-CMBBA9I4.js → InsightsChartTimeSaved-DugTjxnw.js} +4 -4
  23. package/dist/assets/{InsightsChartTotal-Dxn2bjBB.js → InsightsChartTotal-DTB7kNLU.js} +4 -4
  24. package/dist/assets/{InsightsDashboard-BvqZMhnh.js → InsightsDashboard-By8MKK7g.js} +10 -10
  25. package/dist/assets/{InsightsPaywall-4Vl-4bws.js → InsightsPaywall-BX7wpP8k.js} +1 -1
  26. package/dist/assets/{InsightsSummary-CTzqNpAf.js → InsightsSummary-DBfE_9FW.js} +1 -1
  27. package/dist/assets/{InsightsTableWorkflows-DgCECSSh.js → InsightsTableWorkflows-Dqy8IF2I.js} +2 -2
  28. package/dist/assets/{Logo-B8GIjJ79.js → Logo-BT-1ZjZS.js} +1 -1
  29. package/dist/assets/{LogsPanel-CsNXIuce.js → LogsPanel-CvLCi2ll.js} +4862 -4640
  30. package/dist/assets/{LogsPanel-D7j-yJQx.css → LogsPanel-nh_D5duX.css} +913 -907
  31. package/dist/assets/{MainHeader-CGwvFs2B.css → MainHeader-BRl77CT3.css} +27 -26
  32. package/dist/assets/{MainHeader-B2RGao3U.js → MainHeader-DptCjd0U.js} +84 -94
  33. package/dist/assets/{MainSidebar-E0ePOcg-.js → MainSidebar-BdESTvVI.js} +32 -20
  34. package/dist/assets/{NodeCreation-B6jElzI2.js → NodeCreation-CNH2xciY.js} +3 -3
  35. package/dist/assets/{NodeCreator-Bd2BI_OU.js → NodeCreator-Bgs-It2X.js} +20 -5
  36. package/dist/assets/{NodeDetailsView-BLMLHNQw.js → NodeDetailsView-DQ4I8u72.js} +628 -2203
  37. package/dist/assets/{NodeDetailsView-6JHPI3t-.css → NodeDetailsView-DWA1ZgwG.css} +349 -1000
  38. package/dist/assets/{NodeView-BdvXMmMp.css → NodeView-Duifly4c.css} +1274 -32
  39. package/dist/assets/{NodeView-C4qNUqxt.js → NodeView-i5dNh-Et.js} +2817 -548
  40. package/dist/assets/{ProjectCardBadge-be4FNX6y.js → ProjectCardBadge-CpBBeiGZ.js} +1 -1
  41. package/dist/assets/{ProjectHeader-CsHp0dpi.js → ProjectHeader-CK7zlcmF.js} +2 -2
  42. package/dist/assets/{ProjectSettings-BgunHp-2.css → ProjectSettings-8tvaQJye.css} +9 -10
  43. package/dist/assets/{ProjectSettings-t5UigWKy.js → ProjectSettings-B8_C-09-.js} +9 -9
  44. package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-Dpfsxn-o.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-XrUyHArT.js} +1 -1
  45. package/dist/assets/{ResourcesListLayout-DLThke_K.js → ResourcesListLayout-BRxlSl_6.js} +2 -2
  46. package/dist/assets/{RunData-XsmLcFYS.css → RunData-B5_okvCv.css} +205 -205
  47. package/dist/assets/{RunData-u5uBr_cv.js → RunData-D6YmSB6p.js} +1085 -1632
  48. package/dist/assets/{RunDataJson-CeZYY8D_.js → RunDataJson-BtfKusCo.js} +6 -6
  49. package/dist/assets/{RunDataJsonActions-BRAsiSnM.js → RunDataJsonActions-CglQIRT9.js} +1 -1
  50. package/dist/assets/{RunDataParsedAiContent-C1lte0Et.js → RunDataParsedAiContent-DPcEKWtn.js} +4 -4
  51. package/dist/assets/{RunDataSearch-BP_FSk35.js → RunDataSearch-CIKPqFBd.js} +1 -1
  52. package/dist/assets/{RunDataTable-CQghTfxP.js → RunDataTable-jsoKHQg5.js} +2 -2
  53. package/dist/assets/{SamlOnboarding-CWTnplHM.js → SamlOnboarding-DmXYxVe5.js} +3 -3
  54. package/dist/assets/{SettingsApiView-BskWDsE-.js → SettingsApiView-Bv94CWU3.js} +1 -1
  55. package/dist/assets/{SettingsCommunityNodesView-JUjLtmC0.js → SettingsCommunityNodesView-CI8V-SCE.js} +4 -4
  56. package/dist/assets/{SettingsExternalSecrets-BOJ40YuL.js → SettingsExternalSecrets-HCqXt9HG.js} +1 -1
  57. package/dist/assets/{SettingsLdapView-CT-V5pbv.js → SettingsLdapView-B3yMhNoR.js} +1 -1
  58. package/dist/assets/{SettingsLogStreamingView-_G1aTzAD.js → SettingsLogStreamingView-CyDcg7pK.js} +1 -1
  59. package/dist/assets/{SettingsPersonalView-CwV8ImYG.css → SettingsPersonalView-Bt8bL5tJ.css} +19 -15
  60. package/dist/assets/{SettingsPersonalView-BzzZLVh4.js → SettingsPersonalView-Cjb8Yd0L.js} +58 -10
  61. package/dist/assets/{SettingsSourceControl-Bte_2m43.js → SettingsSourceControl-B4lNTCoc.js} +2 -2
  62. package/dist/assets/{SettingsSso-Di8rSq_x.js → SettingsSso-CTy78phb.js} +1 -1
  63. package/dist/assets/{SettingsUsageAndPlan-CwaYHjbQ.js → SettingsUsageAndPlan-CfHv2SML.js} +1 -1
  64. package/dist/assets/{SettingsUsersView-DQbemH_k.js → SettingsUsersView-D4szdW0Y.js} +1 -1
  65. package/dist/assets/{SettingsView-DhqdV7_S.js → SettingsView-BCs3728S.js} +1 -1
  66. package/dist/assets/{SetupView-BOZr75Am.js → SetupView-PB2fxBCd.js} +3 -3
  67. package/dist/assets/{SetupWorkflowCredentialsButton-DFtZhM9C.js → SetupWorkflowCredentialsButton-DgTQe_yd.js} +1 -1
  68. package/dist/assets/{SetupWorkflowFromTemplateView-CTMDcuGm.js → SetupWorkflowFromTemplateView-7pQX4cNJ.js} +3 -3
  69. package/dist/assets/{SigninView-DY-vQ0LU.js → SigninView-BqgxybCQ.js} +12 -4
  70. package/dist/assets/{SignoutView-B8rfrg6C.js → SignoutView-CTKn8Q77.js} +1 -1
  71. package/dist/assets/{SignupView-BxrYV76w.js → SignupView-D8_otRzJ.js} +3 -3
  72. package/dist/assets/{TemplateDetails-DVQ2nLZj.js → TemplateDetails-H2-eQcx6.js} +1 -1
  73. package/dist/assets/{TemplateList-DPouUB38.js → TemplateList-CRgrPugd.js} +1 -1
  74. package/dist/assets/{TemplatesCollectionView-O7noND46.js → TemplatesCollectionView-CNoC5FGF.js} +5 -5
  75. package/dist/assets/{TemplatesSearchView-Bg5DxRv0.js → TemplatesSearchView-BDiwWkwZ.js} +30 -3
  76. package/dist/assets/{TemplatesView-BnzdRWmO.js → TemplatesView-GnPEf_mW.js} +1 -1
  77. package/dist/assets/{TemplatesWorkflowView-B_6tDGsp.js → TemplatesWorkflowView-7E6jyqpd.js} +5 -5
  78. package/dist/assets/{VariablesView-BrzvF0ZW.css → VariablesView-2BSJPXRB.css} +5 -5
  79. package/dist/assets/{VariablesView-DzrhNxAe.js → VariablesView-6sWI8yGj.js} +5 -5
  80. package/dist/assets/{WorkerView-CC1X8IeJ.js → WorkerView-Mvump-QA.js} +6 -6
  81. package/dist/assets/{WorkflowActivator-C30ojCUO.js → WorkflowActivator-BaxuVQDl.js} +14 -261
  82. package/dist/assets/{WorkflowExecutionsPreview-D7jTJ8GL.css → WorkflowActivator-C0R6Yly0.css} +162 -160
  83. package/dist/assets/{WorkflowExecutionsInfoAccordion-XaZEx8v7.js → WorkflowExecutionsInfoAccordion-DM72fu7i.js} +3 -3
  84. package/dist/assets/{WorkflowExecutionsLandingPage-8aAYw87x.js → WorkflowExecutionsLandingPage-DX4kL6pX.js} +2 -2
  85. package/dist/assets/WorkflowExecutionsPreview-BgpOEXPG.css +711 -0
  86. package/dist/assets/WorkflowExecutionsPreview-C2vE7SHl.js +812 -0
  87. package/dist/assets/{WorkflowExecutionsView-DR67gC3V.js → WorkflowExecutionsView-CTxicDMq.js} +8 -9
  88. package/dist/assets/{WorkflowExecutionsView-CZziPgtr.css → WorkflowExecutionsView-_l8AgWIb.css} +2 -2
  89. package/dist/assets/{WorkflowHistory-eAJEV9yu.js → WorkflowHistory-CD-Fhy8m.js} +18 -18
  90. package/dist/assets/{WorkflowOnboardingView-BjyAt8Oq.js → WorkflowOnboardingView-DWzhpMMj.js} +1 -1
  91. package/dist/assets/{WorkflowPreview-BxWA_Uiv.js → WorkflowPreview-A5nTeLz1.js} +1 -1
  92. package/dist/assets/{WorkflowsView-iKkH1nVB.js → WorkflowsView-DCmyKz3u.js} +46 -50
  93. package/dist/assets/{WorkflowsView-CQvTAWQ0.css → WorkflowsView-meCWhW8Y.css} +21 -20
  94. package/dist/assets/canvas-viI6yjxT.js +5 -0
  95. package/dist/assets/{chartjs.utils-CC0SyVUG.js → chartjs.utils-DVxFoTPh.js} +2 -2
  96. package/dist/assets/{easyAiWorkflowUtils-H7-jyGZy.js → easyAiWorkflowUtils-CWag2afn.js} +1 -1
  97. package/dist/assets/{en-D5Q1-BWp.js → en-BcWgUFsO.js} +17 -4
  98. package/dist/assets/{global-link-actions-zn0GER90.js → global-link-actions-B10zAHg8.js} +1 -1
  99. package/dist/assets/{import-curl-D7BhanPS.js → import-curl-B1dF12h6.js} +1 -1
  100. package/dist/assets/{index-HDYArLT1.js → index--ag0tEQM.js} +58887 -67576
  101. package/dist/assets/{index-B4xpaMaK.css → index-B-xWz5mo.css} +418 -370
  102. package/dist/assets/{index-CAyQE60i.js → index-BNKFpYX3.js} +1 -1
  103. package/dist/assets/pickBy-Bnnxgs5-.js +27 -0
  104. package/dist/assets/{polyfills-J2x06Gdp.js → polyfills-deFGRMT9.js} +0 -44
  105. package/dist/assets/{templateActions-CxINaftd.js → templateActions-CXnj7CA4.js} +1 -1
  106. package/dist/assets/{useBeforeUnload-DkY263Ue.js → useBeforeUnload-CZLqOCP0.js} +1 -1
  107. package/dist/assets/{useExecutionDebugging-BrUGp6HK.js → useExecutionDebugging-CoJa-NM6.js} +1 -1
  108. package/dist/assets/{useExecutionHelpers-Dulw8xCc.js → useExecutionHelpers-97Ddzif0.js} +1 -1
  109. package/dist/assets/{useImportCurlCommand-CjFFwjFi.js → useImportCurlCommand-t6LpQGpC.js} +2 -2
  110. package/dist/assets/{useProjectPages-DGU7KQ6y.js → useProjectPages-C95x1s47.js} +1 -1
  111. package/dist/assets/{usePushConnection-4FO744xJ.js → usePushConnection-C1qgSYjB.js} +22 -23
  112. package/dist/assets/{useWorkflowActivate-CUShgia-.js → useWorkflowActivate-E5Lz7Bjd.js} +4 -3
  113. package/dist/index.html +3 -3
  114. package/package.json +1 -1
  115. package/tsconfig.json +9 -1
  116. package/vite.config.mts +10 -2
  117. package/dist/assets/AuthView-D4i2WDPk.css +0 -408
  118. package/dist/assets/CanvasChatSwitch-D1N7Xp_1.js +0 -275
  119. package/dist/assets/CollectionParameter-DOqrZmRA.js +0 -4
  120. package/dist/assets/DemoFooter-DpmRLCPd.js +0 -23
  121. package/dist/assets/RunDataAi-D9VLFXIf.css +0 -443
  122. package/dist/assets/RunDataAi-DZzXTVdi.js +0 -466
  123. package/dist/assets/WorkflowActivator-CL2wacc7.css +0 -1084
  124. package/dist/assets/WorkflowExecutionsPreview-CpAsFXP1.js +0 -683
  125. package/dist/assets/canvas-BzAUJmlt.js +0 -24
  126. package/dist/assets/pickBy-2p7dSPXv.js +0 -16
  127. package/dist/assets/useWorkflowSaving-oozcXWTy.js +0 -66
@@ -1,44 +1,25 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/NodeCreation-B6jElzI2.js","assets/index-HDYArLT1.js","assets/index-B4xpaMaK.css","assets/NodeCreation-RKvezEeg.css","assets/NodeDetailsView-BLMLHNQw.js","assets/import-curl-D7BhanPS.js","assets/RunData-u5uBr_cv.js","assets/FileSaver.min-Bv-Q_h7m.js","assets/useExecutionHelpers-Dulw8xCc.js","assets/RunData-XsmLcFYS.css","assets/RunDataAi-DZzXTVdi.js","assets/RunDataParsedAiContent-C1lte0Et.js","assets/RunDataParsedAiContent-9EEUzCKp.css","assets/RunDataAi-D9VLFXIf.css","assets/useWorkflowActivate-CUShgia-.js","assets/NodeDetailsView-6JHPI3t-.css","assets/SetupWorkflowCredentialsButton-DFtZhM9C.js"])))=>i.map(i=>d[i]);
2
- import { d as defineComponent, h as resolveComponent, e as createBlock, g as openBlock, _ as _export_sfc$1, i as createElementBlock, k as createBaseVNode, bX as PanelPosition, bY as useVueFlow, bL as toRef, w as withCtx, x as renderSlot, f as createCommentVNode, F as Fragment, j as createVNode, b7 as resolveDynamicComponent, m as unref, bZ as _sfc_main$H, q as computed, c as useI18n, bQ as KeyboardShortcutTooltip, n as normalizeClass, by as NodeConnectionTypes, b_ as getBezierPath, b$ as getSmoothStepPath, c0 as Position, b1 as inject, c1 as CanvasKey, Y as useCssModule, c2 as parseCanvasConnectionHandleString, r as ref, o as onMounted, D as renderList, c3 as _sfc_main$d$1, B as normalizeStyle, H as useUIStore, bz as useNodeTypesStore, Q as useWorkflowsStore, a0 as useSourceControlStore, a7 as getResourcePermissions, c4 as isNodeWithWorkflowSelector, c5 as getSubworkflowId, c6 as isPresent, X as watch, c7 as getMousePosition, ay as STICKY_NODE_TYPE, bl as usePinnedData, c8 as NOT_DUPLICATABLE_NODE_TYPES, c9 as isExecutable, ca as Teleport, bR as useStyles, bS as N8nActionDropdown, cb as getDefaultExportFromCjs, cc as NODE_SIZE, cd as CanvasNodeRenderType, ce as GRID_SIZE, bU as useThrottleFn, cf as getRectOfNodes, bc as onUnmounted, cg as useActiveElement, ch as useDeviceSupport, ci as useEventListener, cj as onKeyDown, ck as onKeyUp, cl as useSlots, cm as useAttrs, cn as getBoundsofRects, a$ as watchEffect, t as toDisplayString, co as getConnectedEdges, b5 as normalizeProps, b8 as mergeProps, bi as provide, aq as h, aV as createSlots, cp as isValidNodeConnectionType, cq as _sfc_main$3$1, cr as CanvasConnectionMode, cs as CanvasNodeKey, ct as mergeModels, cu as useModel, y as onBeforeUnmount, bA as useNodeHelpers, cv as TitledList, aR as N8nTooltip, l as createTextVNode, cw as CanvasNodeDirtiness, bH as _sfc_main$I, b3 as withModifiers, cx as useGetPointerPosition, cy as clamp, cz as NodeId, cA as useNodeCreatorStore, ah as nodeViewEventBus, cB as NODE_CREATOR_OPEN_SOURCES, cC as useBuilderStore, be as withKeys, cD as CanvasNodeHandleKey, aA as withDirectives, aB as vShow, cE as Transition$1, cF as _sfc_main$f$1, b as useRouter, aY as useLogsStore, bB as useRunWorkflow, cG as useCanvasOperations, cH as CHAT_TRIGGER_NODE_TYPE, bh as N8nButton, cI as insertSpacersBetweenEndpoints, cJ as createCanvasConnectionHandleString, C as createEventBus, cK as isEqual, p as useSettingsStore, z as nextTick, cL as _sfc_main$1$4, cM as MarkerType, cN as Suspense, b6 as guardReactiveProps, cO as updateViewportToContainNodes, cP as useNodeDirtiness, cQ as CUSTOM_API_CALL_KEY, cR as mapLegacyEndpointsToCanvasConnectionPort, bv as getNodeInputs, bx as getNodeOutputs, cS as getTriggerNodeServiceName, cT as sanitizeHtml, cU as WAIT_NODE_TYPE, cV as SEND_AND_WAIT_OPERATION, cW as FORM_NODE_TYPE, cX as WAIT_INDEFINITELY, cY as checkOverlap, cZ as SIMULATE_NODE_TYPE, c_ as SIMULATE_TRIGGER_NODE_TYPE, c$ as mapLegacyConnectionsToCanvasConnections, d0 as getNodeIconSource, d1 as refThrottled, d2 as reactive, R as useRoute, a as useToast, a4 as useDocumentTitle, a5 as useWorkflowHelpers, d3 as useCredentialsStore, d4 as useEnvironmentsStore, d5 as useExternalSecretsStore, Z as useRootStore, at as useExecutionsStore, $ as useCanvasStore, a3 as useNpsSurveyStore, d6 as useHistoryStore, a1 as useProjectsStore, u as useUsersStore, E as useTagsStore, P as usePushConnectionStore, as as useNDVStore, aN as useTemplatesStore, a2 as useFoldersStore, d7 as useAgentRequestStore, d8 as useWorkflowExtraction, bg as useClipboard, S as PLACEHOLDER_EMPTY_WORKFLOW_ID, d9 as NEW_WORKFLOW_ID, V as VIEWS, da as START_NODE_TYPE, db as getNodeViewTab, s as MAIN_HEADER_TABS, dc as VALID_WORKFLOW_IMPORT_URL_REGEX, ai as useMessage, aj as MODAL_CONFIRM, dd as jsonParse, de as MANUAL_CHAT_TRIGGER_NODE_TYPE, df as EVALUATION_TRIGGER_NODE_TYPE, dg as getBounds, dh as onBeforeRouteLeave, az as onBeforeMount, ak as WORKFLOW_SETTINGS_MODAL_KEY, aP as useExternalHooks, di as onActivated, dj as onDeactivated, dk as defineAsyncComponent, dl as N8nCallout, ao as __vitePreload, aa as EnterpriseEditionFeature, dm as EVALUATION_NODE_TYPE, ag as useTelemetry, dn as tryToParseNumber, aF as sourceControlEventBus, dp as getNodesWithNormalizedPosition, dq as historyBus, dr as needsAgentInput, ds as FROM_AI_PARAMETERS_MODAL_KEY, dt as DRAG_EVENT_DATA_KEY } from "./index-HDYArLT1.js";
3
- import { g as globalLinkActionsEventBus } from "./global-link-actions-zn0GER90.js";
4
- import { u as useExecutionDebugging } from "./useExecutionDebugging-BrUGp6HK.js";
5
- import { u as useBeforeUnload } from "./useBeforeUnload-DkY263Ue.js";
6
- import { g as getEasyAiWorkflowJson } from "./easyAiWorkflowUtils-H7-jyGZy.js";
7
- import { u as useClearExecutionButtonVisible, c as canvasEventBus } from "./canvas-BzAUJmlt.js";
8
- import { u as useWorkflowSaving } from "./useWorkflowSaving-oozcXWTy.js";
9
- const _sfc_main$G = /* @__PURE__ */ defineComponent({
10
- __name: "CanvasChatButton",
11
- props: {
12
- type: {},
13
- label: {}
14
- },
15
- setup(__props) {
16
- return (_ctx, _cache) => {
17
- const _component_N8nButton = resolveComponent("N8nButton");
18
- return openBlock(), createBlock(_component_N8nButton, {
19
- label: _ctx.label,
20
- size: "large",
21
- icon: "comment",
22
- type: _ctx.type,
23
- "data-test-id": "workflow-chat-button"
24
- }, null, 8, ["label", "type"]);
25
- };
26
- }
27
- });
28
- const _sfc_main$F = {};
29
- const _hoisted_1$d = {
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/NodeCreation-CNH2xciY.js","assets/index--ag0tEQM.js","assets/index-B-xWz5mo.css","assets/NodeCreation-RKvezEeg.css","assets/NodeDetailsView-DQ4I8u72.js","assets/RunData-D6YmSB6p.js","assets/FileSaver.min-BUciI8xL.js","assets/useExecutionHelpers-97Ddzif0.js","assets/RunData-B5_okvCv.css","assets/RunDataParsedAiContent-DPcEKWtn.js","assets/RunDataParsedAiContent-9EEUzCKp.css","assets/useWorkflowActivate-E5Lz7Bjd.js","assets/import-curl-B1dF12h6.js","assets/global-link-actions-B10zAHg8.js","assets/useExecutionDebugging-CoJa-NM6.js","assets/useBeforeUnload-CZLqOCP0.js","assets/easyAiWorkflowUtils-CWag2afn.js","assets/canvas-viI6yjxT.js","assets/NodeDetailsView-DWA1ZgwG.css","assets/SetupWorkflowCredentialsButton-DgTQe_yd.js"])))=>i.map(i=>d[i]);
2
+ import { _ as _export_sfc$1, i as createElementBlock, g as openBlock, k as createBaseVNode, d as defineComponent, ca as PanelPosition, cb as useVueFlow, bH as toRef, e as createBlock, w as withCtx, x as renderSlot, f as createCommentVNode, F as Fragment, j as createVNode, bO as resolveDynamicComponent, m as unref, cc as _sfc_main$N, q as computed, h as resolveComponent, c as useI18n, bY as KeyboardShortcutTooltip, n as normalizeClass, bb as NodeConnectionTypes, cd as getBezierPath, ce as getSmoothStepPath, cf as Position, bK as inject, cg as CanvasKey, X as useCssModule, ch as parseCanvasConnectionHandleString, r as ref, o as onMounted, C as renderList, ci as _sfc_main$d$1, A as normalizeStyle, G as useUIStore, bt as useNodeTypesStore, P as useWorkflowsStore, $ as useSourceControlStore, a7 as getResourcePermissions, cj as isNodeWithWorkflowSelector, ck as getSubworkflowId, cl as isPresent, W as watch, cm as getMousePosition, aC as STICKY_NODE_TYPE, bl as usePinnedData, cn as NOT_DUPLICATABLE_NODE_TYPES, co as isExecutable, cp as Teleport, b_ as useStyles, b$ as N8nActionDropdown, bw as getDefaultExportFromCjs, cq as NODE_SIZE, cr as CanvasNodeRenderType, cs as GRID_SIZE, c1 as useThrottleFn, ct as getRectOfNodes, bR as onUnmounted, cu as useActiveElement, cv as useDeviceSupport, cw as useEventListener$1, cx as onKeyDown, cy as onKeyUp, cz as useSlots, cA as useAttrs, cB as getBoundsofRects, cC as watchEffect, t as toDisplayString, cD as getConnectedEdges, bM as normalizeProps, bI as mergeProps, bq as provide, au as h, aZ as createSlots, cE as isValidNodeConnectionType, cF as _sfc_main$3$1, cG as CanvasConnectionMode, cH as CanvasNodeKey, cI as mergeModels, cJ as useModel, v as onBeforeUnmount, bn as useNodeHelpers, cK as TitledList, aV as N8nTooltip, l as createTextVNode, cL as CanvasNodeDirtiness, p as useSettingsStore, bs as useCanvasOperations, cM as refDebounced, ac as useTemplateRef, cN as useElementSize, bC as _sfc_main$O, ad as InlineRename, aw as useNDVStore, cO as isCommunityPackageName, cP as NPM_PACKAGE_DOCS_BASE_URL, cQ as BUILTIN_NODES_DOCS_URL, cR as COMMUNITY_NODES_INSTALLATION_DOCS_URL, aT as useExternalHooks, ai as useTelemetry, bU as useClipboard, a5 as useWorkflowHelpers, a as useToast, cS as OPEN_URL_PANEL_TRIGGER_NODE_TYPES, cT as PRODUCTION_ONLY_TRIGGER_NODE_TYPES, cU as MCP_TRIGGER_NODE_TYPE, cV as FORM_TRIGGER_NODE_TYPE, bk as CHAT_TRIGGER_NODE_TYPE, aU as onClickOutside, cW as toRef$1, cX as tryOnScopeDispose, cY as toValue, cZ as isIOS, c_ as noop$2, c$ as isObject, d0 as isClient, E as useDebounce, d1 as getNodeInputs, d2 as SWITCH_NODE_TYPE, d3 as isEqual, d4 as captureException, ay as usePostHog, d5 as useCredentialsStore, u as useUsersStore, a0 as useProjectsStore, d6 as OPEN_AI_API_CREDENTIAL_TYPE, d7 as AI_CREDITS_EXPERIMENT, d8 as useHistoryStore, ab as ProjectTypes, d9 as getConnectionTypes, c9 as ndvEventBus, da as _sfc_main$P, db as CUSTOM_NODES_DOCS_URL, aE as withDirectives, aF as vShow, dc as _sfc_main$Q, dd as NodeCredentials, bB as withModifiers, de as get$3, df as getNodeParameters, dg as deepCopy, dh as set$3, di as unset, dj as getUpdatedToolDescription, dk as RenameNodeCommand, dl as isINodePropertyCollectionList, dm as isINodePropertiesList, dn as isINodePropertyOptionsList, dp as displayParameter, B as createEventBus, dq as useGetPointerPosition, dr as clamp, ds as NodeId, dt as useNodeCreatorStore, aj as nodeViewEventBus, du as NODE_CREATOR_OPEN_SOURCES, dv as useBuilderStore, bT as withKeys, dw as CanvasNodeHandleKey, dx as Transition$1, dy as _sfc_main$f$1, b as useRouter, bm as useLogsStore, bo as useRunWorkflow, bF as N8nButton, dz as insertSpacersBetweenEndpoints, dA as createCanvasConnectionHandleString, y as nextTick, dB as _sfc_main$1$4, dC as MarkerType, dD as Suspense, bN as guardReactiveProps, dE as updateViewportToContainNodes, dF as useNodeDirtiness, dG as CUSTOM_API_CALL_KEY, dH as mapLegacyEndpointsToCanvasConnectionPort, dI as getNodeOutputs, dJ as getTriggerNodeServiceName, dK as sanitizeHtml, dL as WAIT_NODE_TYPE, dM as SEND_AND_WAIT_OPERATION, dN as FORM_NODE_TYPE, dO as WAIT_INDEFINITELY, dP as checkOverlap, dQ as SIMULATE_NODE_TYPE, dR as SIMULATE_TRIGGER_NODE_TYPE, dS as mapLegacyConnectionsToCanvasConnections, dT as getNodeIconSource, dU as refThrottled, ba as isChatNode, dV as truncateBeforeLast, br as N8nText, dW as reactive, Q as useRoute, a3 as useDocumentTitle, a4 as useWorkflowSaving, dX as useEnvironmentsStore, dY as useExternalSecretsStore, Y as useRootStore, ax as useExecutionsStore, Z as useCanvasStore, a2 as useNpsSurveyStore, D as useTagsStore, O as usePushConnectionStore, aR as useTemplatesStore, a1 as useFoldersStore, dZ as useAgentRequestStore, d_ as useWorkflowExtraction, R as PLACEHOLDER_EMPTY_WORKFLOW_ID, d$ as NEW_WORKFLOW_ID, V as VIEWS, bu as START_NODE_TYPE, e0 as getNodeViewTab, s as MAIN_HEADER_TABS, e1 as VALID_WORKFLOW_IMPORT_URL_REGEX, ak as useMessage, al as MODAL_CONFIRM, e2 as jsonParse, bj as MANUAL_CHAT_TRIGGER_NODE_TYPE, e3 as EVALUATION_TRIGGER_NODE_TYPE, e4 as getBounds, e5 as onBeforeRouteLeave, aD as onBeforeMount, am as WORKFLOW_SETTINGS_MODAL_KEY, e6 as onActivated, e7 as onDeactivated, e8 as defineAsyncComponent, e9 as N8nCallout, as as __vitePreload, aa as EnterpriseEditionFeature, ea as EVALUATION_NODE_TYPE, eb as tryToParseNumber, aK as sourceControlEventBus, ec as getNodesWithNormalizedPosition, ed as historyBus, ee as needsAgentInput, ef as FROM_AI_PARAMETERS_MODAL_KEY, eg as DRAG_EVENT_DATA_KEY } from "./index--ag0tEQM.js";
3
+ import { i as importCurlEventBus } from "./import-curl-B1dF12h6.js";
4
+ import { g as globalLinkActionsEventBus } from "./global-link-actions-B10zAHg8.js";
5
+ import { u as useExecutionDebugging } from "./useExecutionDebugging-CoJa-NM6.js";
6
+ import { u as useBeforeUnload } from "./useBeforeUnload-CZLqOCP0.js";
7
+ import { g as getEasyAiWorkflowJson } from "./easyAiWorkflowUtils-CWag2afn.js";
8
+ import { c as canvasEventBus } from "./canvas-viI6yjxT.js";
9
+ const _sfc_main$M = {};
10
+ const _hoisted_1$h = {
30
11
  xmlns: "http://www.w3.org/2000/svg",
31
12
  viewBox: "0 0 16 16"
32
13
  };
33
14
  function _sfc_render$1(_ctx, _cache) {
34
- return openBlock(), createElementBlock("svg", _hoisted_1$d, _cache[0] || (_cache[0] = [
15
+ return openBlock(), createElementBlock("svg", _hoisted_1$h, _cache[0] || (_cache[0] = [
35
16
  createBaseVNode("path", {
36
17
  fill: "currentColor",
37
18
  d: "M1.6.13c-.18-.17-.47-.18-.62 0L.56.57.14.98c-.2.15-.18.44 0 .62l3.63 3.6c.1.1.1.27 0 .37-.2.2-.53.52-.93.94-.56.57-.12 1.62.22 2.11.05.07.12.1.2.1.05-.01.1-.04.15-.08l5.23-5.22c.1-.1.1-.26-.02-.34-.5-.34-1.55-.78-2.12-.22-.42.4-.75.73-.94.93-.1.1-.27.1-.37 0L1.6.13ZM9.5 3.9c.07-.09.2-.1.3-.04l6.07 3.44c.15.08.18.29.05.4l-1.21 1.22a.26.26 0 0 1-.26.07l-2.18-.64a.26.26 0 0 0-.32.33l.76 2.02c.04.1.01.2-.06.27L7.7 15.92a.26.26 0 0 1-.41-.05L3.83 9.8a.26.26 0 0 1 .04-.3l5.62-5.6Z"
38
19
  }, null, -1)
39
20
  ]));
40
21
  }
41
- const TidyUpIcon = /* @__PURE__ */ _export_sfc$1(_sfc_main$F, [["render", _sfc_render$1]]);
22
+ const TidyUpIcon = /* @__PURE__ */ _export_sfc$1(_sfc_main$M, [["render", _sfc_render$1]]);
42
23
  const _sfc_main$1$3 = {
43
24
  name: "ControlButton",
44
25
  compatConfig: { MODE: 3 }
@@ -62,11 +43,11 @@ const _hoisted_1$4$1 = {
62
43
  viewBox: "0 0 32 32"
63
44
  };
64
45
  const _hoisted_2$4$1 = /* @__PURE__ */ createBaseVNode("path", { d: "M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z" }, null, -1);
65
- const _hoisted_3$4 = [
46
+ const _hoisted_3$4$1 = [
66
47
  _hoisted_2$4$1
67
48
  ];
68
49
  function render$4(_ctx, _cache) {
69
- return openBlock(), createElementBlock("svg", _hoisted_1$4$1, _hoisted_3$4);
50
+ return openBlock(), createElementBlock("svg", _hoisted_1$4$1, _hoisted_3$4$1);
70
51
  }
71
52
  const PlusIcon = { render: render$4 };
72
53
  const _hoisted_1$3$1 = {
@@ -105,23 +86,23 @@ function render$1(_ctx, _cache) {
105
86
  return openBlock(), createElementBlock("svg", _hoisted_1$1$2, _hoisted_3$1$1);
106
87
  }
107
88
  const Lock = { render: render$1 };
108
- const _hoisted_1$c = {
89
+ const _hoisted_1$g = {
109
90
  xmlns: "http://www.w3.org/2000/svg",
110
91
  viewBox: "0 0 25 32"
111
92
  };
112
- const _hoisted_2$8 = /* @__PURE__ */ createBaseVNode("path", { d: "M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 0 0 0 13.714v15.238A3.056 3.056 0 0 0 3.048 32h18.285a3.056 3.056 0 0 0 3.048-3.048V13.714a3.056 3.056 0 0 0-3.048-3.047zM12.19 24.533a3.056 3.056 0 0 1-3.047-3.047 3.056 3.056 0 0 1 3.047-3.048 3.056 3.056 0 0 1 3.048 3.048 3.056 3.056 0 0 1-3.048 3.047z" }, null, -1);
113
- const _hoisted_3$5 = [
114
- _hoisted_2$8
93
+ const _hoisted_2$b = /* @__PURE__ */ createBaseVNode("path", { d: "M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 0 0 0 13.714v15.238A3.056 3.056 0 0 0 3.048 32h18.285a3.056 3.056 0 0 0 3.048-3.048V13.714a3.056 3.056 0 0 0-3.048-3.047zM12.19 24.533a3.056 3.056 0 0 1-3.047-3.047 3.056 3.056 0 0 1 3.047-3.048 3.056 3.056 0 0 1 3.048 3.048 3.056 3.056 0 0 1-3.048 3.047z" }, null, -1);
94
+ const _hoisted_3$7 = [
95
+ _hoisted_2$b
115
96
  ];
116
97
  function render(_ctx, _cache) {
117
- return openBlock(), createElementBlock("svg", _hoisted_1$c, _hoisted_3$5);
98
+ return openBlock(), createElementBlock("svg", _hoisted_1$g, _hoisted_3$7);
118
99
  }
119
100
  const Unlock = { render };
120
101
  const __default__$4 = {
121
102
  name: "Controls",
122
103
  compatConfig: { MODE: 3 }
123
104
  };
124
- const _sfc_main$E = /* @__PURE__ */ defineComponent({
105
+ const _sfc_main$L = /* @__PURE__ */ defineComponent({
125
106
  ...__default__$4,
126
107
  props: {
127
108
  showZoom: { type: Boolean, default: true },
@@ -164,7 +145,7 @@ const _sfc_main$E = /* @__PURE__ */ defineComponent({
164
145
  emit("interactionChange", !isInteractive.value);
165
146
  }
166
147
  return (_ctx, _cache) => {
167
- return openBlock(), createBlock(unref(_sfc_main$H), {
148
+ return openBlock(), createBlock(unref(_sfc_main$N), {
168
149
  class: "vue-flow__controls",
169
150
  position: _ctx.position
170
151
  }, {
@@ -237,7 +218,7 @@ const _sfc_main$E = /* @__PURE__ */ defineComponent({
237
218
  };
238
219
  }
239
220
  });
240
- const _sfc_main$D = /* @__PURE__ */ defineComponent({
221
+ const _sfc_main$K = /* @__PURE__ */ defineComponent({
241
222
  __name: "CanvasControlButtons",
242
223
  props: {
243
224
  zoom: { default: 1 },
@@ -267,7 +248,7 @@ const _sfc_main$D = /* @__PURE__ */ defineComponent({
267
248
  return (_ctx, _cache) => {
268
249
  const _component_N8nIconButton = resolveComponent("N8nIconButton");
269
250
  const _component_N8nButton = resolveComponent("N8nButton");
270
- return openBlock(), createBlock(unref(_sfc_main$E), {
251
+ return openBlock(), createBlock(unref(_sfc_main$L), {
271
252
  "show-zoom": false,
272
253
  "show-fit-view": false
273
254
  }, {
@@ -362,24 +343,24 @@ const _sfc_main$D = /* @__PURE__ */ defineComponent({
362
343
  }
363
344
  });
364
345
  const iconButton = "_iconButton_fx9xi_123";
365
- const style0$r = {
346
+ const style0$v = {
366
347
  iconButton
367
348
  };
368
- const cssModules$r = {
369
- "$style": style0$r
349
+ const cssModules$v = {
350
+ "$style": style0$v
370
351
  };
371
- const __unplugin_components_1 = /* @__PURE__ */ _export_sfc$1(_sfc_main$D, [["__cssModules", cssModules$r]]);
352
+ const __unplugin_components_1 = /* @__PURE__ */ _export_sfc$1(_sfc_main$K, [["__cssModules", cssModules$v]]);
372
353
  const EDGE_PADDING_BOTTOM = 130;
373
354
  const EDGE_PADDING_X = 40;
374
355
  const EDGE_BORDER_RADIUS = 16;
375
356
  const HANDLE_SIZE = 20;
376
357
  const isRightOfSourceHandle = (sourceX, targetX) => sourceX - HANDLE_SIZE > targetX;
377
358
  function getEdgeRenderData(props, {
378
- connectionType = NodeConnectionTypes.Main
359
+ connectionType: connectionType2 = NodeConnectionTypes.Main
379
360
  } = {}) {
380
361
  const { targetX, targetY, sourceX, sourceY, sourcePosition, targetPosition } = props;
381
362
  const isConnectorStraight = sourceY === targetY;
382
- if (!isRightOfSourceHandle(sourceX, targetX) || connectionType !== NodeConnectionTypes.Main) {
363
+ if (!isRightOfSourceHandle(sourceX, targetX) || connectionType2 !== NodeConnectionTypes.Main) {
383
364
  const segment = getBezierPath(props);
384
365
  return {
385
366
  segments: [segment],
@@ -425,7 +406,7 @@ function injectStrict(key, fallback) {
425
406
  function useCanvas() {
426
407
  return injectStrict(CanvasKey);
427
408
  }
428
- const _sfc_main$C = /* @__PURE__ */ defineComponent({
409
+ const _sfc_main$J = /* @__PURE__ */ defineComponent({
429
410
  __name: "CanvasConnectionLine",
430
411
  props: {
431
412
  sourceX: {},
@@ -446,7 +427,7 @@ const _sfc_main$C = /* @__PURE__ */ defineComponent({
446
427
  const props = __props;
447
428
  const $style = useCssModule();
448
429
  const { connectingHandle } = useCanvas();
449
- const connectionType = computed(
430
+ const connectionType2 = computed(
450
431
  () => parseCanvasConnectionHandleString(connectingHandle.value?.handleId).type
451
432
  );
452
433
  const classes = computed(() => {
@@ -456,19 +437,19 @@ const _sfc_main$C = /* @__PURE__ */ defineComponent({
456
437
  };
457
438
  });
458
439
  const edgeColor = computed(() => {
459
- if (connectionType.value !== NodeConnectionTypes.Main) {
440
+ if (connectionType2.value !== NodeConnectionTypes.Main) {
460
441
  return "var(--node-type-supplemental-color)";
461
442
  } else {
462
443
  return "var(--color-foreground-xdark)";
463
444
  }
464
445
  });
465
446
  const edgeStyle = computed(() => ({
466
- ...connectionType.value === NodeConnectionTypes.Main ? {} : { strokeDasharray: "8,8" },
447
+ ...connectionType2.value === NodeConnectionTypes.Main ? {} : { strokeDasharray: "8,8" },
467
448
  strokeWidth: 2,
468
449
  stroke: edgeColor.value
469
450
  }));
470
451
  const renderData = computed(
471
- () => getEdgeRenderData(props, { connectionType: connectionType.value })
452
+ () => getEdgeRenderData(props, { connectionType: connectionType2.value })
472
453
  );
473
454
  const segments = computed(() => renderData.value.segments);
474
455
  const isVisible = ref(false);
@@ -492,14 +473,14 @@ const _sfc_main$C = /* @__PURE__ */ defineComponent({
492
473
  });
493
474
  const edge$1 = "_edge_cbk94_123";
494
475
  const visible = "_visible_cbk94_129";
495
- const style0$q = {
476
+ const style0$u = {
496
477
  edge: edge$1,
497
478
  visible
498
479
  };
499
- const cssModules$q = {
500
- "$style": style0$q
480
+ const cssModules$u = {
481
+ "$style": style0$u
501
482
  };
502
- const __unplugin_components_0$5 = /* @__PURE__ */ _export_sfc$1(_sfc_main$C, [["__cssModules", cssModules$q]]);
483
+ const __unplugin_components_0$5 = /* @__PURE__ */ _export_sfc$1(_sfc_main$J, [["__cssModules", cssModules$u]]);
503
484
  const position = ref([0, 0]);
504
485
  const isOpen = ref(false);
505
486
  const target = ref();
@@ -730,7 +711,7 @@ const useContextMenu = (onAction = () => {
730
711
  _dispatchAction
731
712
  };
732
713
  };
733
- const _sfc_main$B = /* @__PURE__ */ defineComponent({
714
+ const _sfc_main$I = /* @__PURE__ */ defineComponent({
734
715
  __name: "ContextMenu",
735
716
  emits: ["action"],
736
717
  setup(__props, { emit: __emit }) {
@@ -798,14 +779,14 @@ const _sfc_main$B = /* @__PURE__ */ defineComponent({
798
779
  });
799
780
  const contextMenu = "_contextMenu_12fz3_123";
800
781
  const activator = "_activator_12fz3_127";
801
- const style0$p = {
782
+ const style0$t = {
802
783
  contextMenu,
803
784
  activator
804
785
  };
805
- const cssModules$p = {
806
- "$style": style0$p
786
+ const cssModules$t = {
787
+ "$style": style0$t
807
788
  };
808
- const ContextMenu = /* @__PURE__ */ _export_sfc$1(_sfc_main$B, [["__cssModules", cssModules$p]]);
789
+ const ContextMenu = /* @__PURE__ */ _export_sfc$1(_sfc_main$I, [["__cssModules", cssModules$t]]);
809
790
  var graph;
810
791
  var hasRequiredGraph;
811
792
  function requireGraph() {
@@ -4823,7 +4804,7 @@ const useKeybindings = (keymap, options) => {
4823
4804
  handler(event);
4824
4805
  }
4825
4806
  }
4826
- useEventListener(document, "keydown", onKeyDown2);
4807
+ useEventListener$1(document, "keydown", onKeyDown2);
4827
4808
  };
4828
4809
  function useShortKeyPress(key, fn, {
4829
4810
  dedupe = true,
@@ -7389,14 +7370,14 @@ const _sfc_main$1$2 = /* @__PURE__ */ defineComponent({
7389
7370
  };
7390
7371
  }
7391
7372
  });
7392
- const _hoisted_1$b = ["width", "height", "viewBox", "aria-labelledby"];
7393
- const _hoisted_2$7 = ["id"];
7394
- const _hoisted_3$3 = ["d", "fill", "stroke", "stroke-width"];
7373
+ const _hoisted_1$f = ["width", "height", "viewBox", "aria-labelledby"];
7374
+ const _hoisted_2$a = ["id"];
7375
+ const _hoisted_3$6 = ["d", "fill", "stroke", "stroke-width"];
7395
7376
  const __default__$3 = {
7396
7377
  name: "MiniMap",
7397
7378
  compatConfig: { MODE: 3 }
7398
7379
  };
7399
- const _sfc_main$A = /* @__PURE__ */ defineComponent({
7380
+ const _sfc_main$H = /* @__PURE__ */ defineComponent({
7400
7381
  ...__default__$3,
7401
7382
  props: {
7402
7383
  nodeColor: { type: [String, Function], default: "#e2e2e2" },
@@ -7559,7 +7540,7 @@ const _sfc_main$A = /* @__PURE__ */ defineComponent({
7559
7540
  emit("nodeMouseleave", param);
7560
7541
  }
7561
7542
  return (_ctx, _cache) => {
7562
- return openBlock(), createBlock(unref(_sfc_main$H), {
7543
+ return openBlock(), createBlock(unref(_sfc_main$N), {
7563
7544
  position: _ctx.position,
7564
7545
  class: normalizeClass(["vue-flow__minimap", { pannable: _ctx.pannable, zoomable: _ctx.zoomable }])
7565
7546
  }, {
@@ -7577,7 +7558,7 @@ const _sfc_main$A = /* @__PURE__ */ defineComponent({
7577
7558
  _ctx.ariaLabel ? (openBlock(), createElementBlock("title", {
7578
7559
  key: 0,
7579
7560
  id: `vue-flow__minimap-${unref(id2)}`
7580
- }, toDisplayString(_ctx.ariaLabel), 9, _hoisted_2$7)) : createCommentVNode("", true),
7561
+ }, toDisplayString(_ctx.ariaLabel), 9, _hoisted_2$a)) : createCommentVNode("", true),
7581
7562
  (openBlock(true), createElementBlock(Fragment, null, renderList(unref(getNodesInitialized), (node2) => {
7582
7563
  return openBlock(), createBlock(_sfc_main$1$2, {
7583
7564
  id: node2.id,
@@ -7609,17 +7590,17 @@ const _sfc_main$A = /* @__PURE__ */ defineComponent({
7609
7590
  stroke: _ctx.maskStrokeColor,
7610
7591
  "stroke-width": _ctx.maskStrokeWidth,
7611
7592
  "fill-rule": "evenodd"
7612
- }, null, 8, _hoisted_3$3)
7613
- ], 8, _hoisted_1$b))
7593
+ }, null, 8, _hoisted_3$6)
7594
+ ], 8, _hoisted_1$f))
7614
7595
  ]),
7615
7596
  _: 1
7616
7597
  }, 8, ["position", "class"]);
7617
7598
  };
7618
7599
  }
7619
7600
  });
7620
- const _hoisted_1$a = ["id", "x", "y", "width", "height", "patternTransform"];
7621
- const _hoisted_2$6 = ["d", "stroke-width"];
7622
- const _sfc_main$z = /* @__PURE__ */ defineComponent({
7601
+ const _hoisted_1$e = ["id", "x", "y", "width", "height", "patternTransform"];
7602
+ const _hoisted_2$9 = ["d", "stroke-width"];
7603
+ const _sfc_main$G = /* @__PURE__ */ defineComponent({
7623
7604
  __name: "CanvasBackgroundStripedPattern",
7624
7605
  props: {
7625
7606
  id: {},
@@ -7644,12 +7625,12 @@ const _sfc_main$z = /* @__PURE__ */ defineComponent({
7644
7625
  createBaseVNode("path", {
7645
7626
  d: `M0 ${scaledGap.value / 2} H${scaledGap.value}`,
7646
7627
  "stroke-width": scaledGap.value / 2
7647
- }, null, 8, _hoisted_2$6)
7648
- ], 8, _hoisted_1$a);
7628
+ }, null, 8, _hoisted_2$9)
7629
+ ], 8, _hoisted_1$e);
7649
7630
  };
7650
7631
  }
7651
7632
  });
7652
- const CanvasBackgroundStripedPattern = /* @__PURE__ */ _export_sfc$1(_sfc_main$z, [["__scopeId", "data-v-161512f5"]]);
7633
+ const CanvasBackgroundStripedPattern = /* @__PURE__ */ _export_sfc$1(_sfc_main$G, [["__scopeId", "data-v-161512f5"]]);
7653
7634
  var BackgroundVariant = /* @__PURE__ */ ((BackgroundVariant2) => {
7654
7635
  BackgroundVariant2["Lines"] = "lines";
7655
7636
  BackgroundVariant2["Dots"] = "dots";
@@ -7673,19 +7654,19 @@ const DefaultBgColors = {
7673
7654
  [BackgroundVariant.Dots]: "#81818a",
7674
7655
  [BackgroundVariant.Lines]: "#eee"
7675
7656
  };
7676
- const _hoisted_1$9 = ["id", "x", "y", "width", "height", "patternTransform"];
7677
- const _hoisted_2$5 = {
7657
+ const _hoisted_1$d = ["id", "x", "y", "width", "height", "patternTransform"];
7658
+ const _hoisted_2$8 = {
7678
7659
  key: 2,
7679
7660
  height: "100",
7680
7661
  width: "100"
7681
7662
  };
7682
- const _hoisted_3$2 = ["fill"];
7683
- const _hoisted_4$1 = ["x", "y", "fill"];
7663
+ const _hoisted_3$5 = ["fill"];
7664
+ const _hoisted_4$4 = ["x", "y", "fill"];
7684
7665
  const __default__$2 = {
7685
7666
  name: "Background",
7686
7667
  compatConfig: { MODE: 3 }
7687
7668
  };
7688
- const _sfc_main$y = /* @__PURE__ */ defineComponent({
7669
+ const _sfc_main$F = /* @__PURE__ */ defineComponent({
7689
7670
  ...__default__$2,
7690
7671
  props: {
7691
7672
  id: {},
@@ -7748,15 +7729,15 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
7748
7729
  color: patternColor.value,
7749
7730
  radius: background.value.size / 2
7750
7731
  }, null, 8, ["color", "radius"])) : createCommentVNode("", true),
7751
- _ctx.bgColor ? (openBlock(), createElementBlock("svg", _hoisted_2$5, [
7732
+ _ctx.bgColor ? (openBlock(), createElementBlock("svg", _hoisted_2$8, [
7752
7733
  createBaseVNode("rect", {
7753
7734
  width: "100%",
7754
7735
  height: "100%",
7755
7736
  fill: _ctx.bgColor
7756
- }, null, 8, _hoisted_3$2)
7737
+ }, null, 8, _hoisted_3$5)
7757
7738
  ])) : createCommentVNode("", true)
7758
7739
  ])
7759
- ], 8, _hoisted_1$9)
7740
+ ], 8, _hoisted_1$d)
7760
7741
  ]),
7761
7742
  createBaseVNode("rect", {
7762
7743
  x: _ctx.x,
@@ -7764,13 +7745,13 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
7764
7745
  width: "100%",
7765
7746
  height: "100%",
7766
7747
  fill: `url(#${patternId.value})`
7767
- }, null, 8, _hoisted_4$1),
7748
+ }, null, 8, _hoisted_4$4),
7768
7749
  renderSlot(_ctx.$slots, "default", { id: patternId.value })
7769
7750
  ], 4);
7770
7751
  };
7771
7752
  }
7772
7753
  });
7773
- const _sfc_main$x = /* @__PURE__ */ defineComponent({
7754
+ const _sfc_main$E = /* @__PURE__ */ defineComponent({
7774
7755
  __name: "CanvasBackground",
7775
7756
  props: {
7776
7757
  striped: { type: Boolean },
@@ -7778,7 +7759,7 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
7778
7759
  },
7779
7760
  setup(__props) {
7780
7761
  return (_ctx, _cache) => {
7781
- return openBlock(), createBlock(unref(_sfc_main$y), {
7762
+ return openBlock(), createBlock(unref(_sfc_main$F), {
7782
7763
  "data-test-id": "canvas-background",
7783
7764
  "pattern-color": "#aaa",
7784
7765
  gap: unref(GRID_SIZE)
@@ -7800,8 +7781,8 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
7800
7781
  };
7801
7782
  }
7802
7783
  });
7803
- const _hoisted_1$8 = ["id"];
7804
- const _sfc_main$w = /* @__PURE__ */ defineComponent({
7784
+ const _hoisted_1$c = ["id"];
7785
+ const _sfc_main$D = /* @__PURE__ */ defineComponent({
7805
7786
  __name: "CanvasArrowHeadMarker",
7806
7787
  props: {
7807
7788
  id: {}
@@ -7828,13 +7809,13 @@ const _sfc_main$w = /* @__PURE__ */ defineComponent({
7828
7809
  stroke: "context-stroke",
7829
7810
  fill: "context-stroke"
7830
7811
  }, null, -1)
7831
- ]), 8, _hoisted_1$8)
7812
+ ]), 8, _hoisted_1$c)
7832
7813
  ])
7833
7814
  ]);
7834
7815
  };
7835
7816
  }
7836
7817
  });
7837
- const _sfc_main$v = /* @__PURE__ */ defineComponent({
7818
+ const _sfc_main$C = /* @__PURE__ */ defineComponent({
7838
7819
  __name: "CanvasEdgeToolbar",
7839
7820
  props: {
7840
7821
  type: {}
@@ -7885,17 +7866,17 @@ const _sfc_main$v = /* @__PURE__ */ defineComponent({
7885
7866
  }
7886
7867
  });
7887
7868
  const canvasEdgeToolbar = "_canvasEdgeToolbar_uogmx_123";
7888
- const style0$o = {
7869
+ const style0$s = {
7889
7870
  canvasEdgeToolbar
7890
7871
  };
7891
- const cssModules$o = {
7892
- "$style": style0$o
7872
+ const cssModules$s = {
7873
+ "$style": style0$s
7893
7874
  };
7894
- const CanvasEdgeToolbar = /* @__PURE__ */ _export_sfc$1(_sfc_main$v, [["__cssModules", cssModules$o]]);
7895
- const _hoisted_1$7 = ["data-source-node-name", "data-target-node-name"];
7896
- const _hoisted_2$4 = ["data-source-node-name", "data-target-node-name", "data-edge-status"];
7875
+ const CanvasEdgeToolbar = /* @__PURE__ */ _export_sfc$1(_sfc_main$C, [["__cssModules", cssModules$s]]);
7876
+ const _hoisted_1$b = ["data-source-node-name", "data-target-node-name"];
7877
+ const _hoisted_2$7 = ["data-source-node-name", "data-target-node-name", "data-edge-status"];
7897
7878
  const delayedHoveredTimeout = 600;
7898
- const _sfc_main$u = /* @__PURE__ */ defineComponent({
7879
+ const _sfc_main$B = /* @__PURE__ */ defineComponent({
7899
7880
  __name: "CanvasEdge",
7900
7881
  props: {
7901
7882
  id: {},
@@ -7938,7 +7919,7 @@ const _sfc_main$u = /* @__PURE__ */ defineComponent({
7938
7919
  const props = __props;
7939
7920
  const data = toRef(props, "data");
7940
7921
  const $style = useCssModule();
7941
- const connectionType = computed(
7922
+ const connectionType2 = computed(
7942
7923
  () => isValidNodeConnectionType(props.data.source.type) ? props.data.source.type : NodeConnectionTypes.Main
7943
7924
  );
7944
7925
  const delayedHovered = ref(props.hovered);
@@ -8000,7 +7981,7 @@ const _sfc_main$u = /* @__PURE__ */ defineComponent({
8000
7981
  }));
8001
7982
  const renderData = computed(
8002
7983
  () => getEdgeRenderData(props, {
8003
- connectionType: connectionType.value
7984
+ connectionType: connectionType2.value
8004
7985
  })
8005
7986
  );
8006
7987
  const segments = computed(() => renderData.value.segments);
@@ -8041,7 +8022,7 @@ const _sfc_main$u = /* @__PURE__ */ defineComponent({
8041
8022
  "interaction-width": 40
8042
8023
  }, null, 8, ["id", "class", "style", "path", "marker-end"]);
8043
8024
  }), 128))
8044
- ], 8, _hoisted_1$7),
8025
+ ], 8, _hoisted_1$b),
8045
8026
  createVNode(unref(_sfc_main$3$1), null, {
8046
8027
  default: withCtx(() => [
8047
8028
  createBaseVNode("div", {
@@ -8056,7 +8037,7 @@ const _sfc_main$u = /* @__PURE__ */ defineComponent({
8056
8037
  }, [
8057
8038
  renderToolbar.value ? (openBlock(), createBlock(CanvasEdgeToolbar, {
8058
8039
  key: 0,
8059
- type: connectionType.value,
8040
+ type: connectionType2.value,
8060
8041
  onAdd: onAdd2,
8061
8042
  onDelete
8062
8043
  }, null, 8, ["type"])) : (openBlock(), createElementBlock("div", {
@@ -8064,7 +8045,7 @@ const _sfc_main$u = /* @__PURE__ */ defineComponent({
8064
8045
  style: normalizeStyle(edgeLabelStyle.value),
8065
8046
  class: normalizeClass(unref($style).edgeLabel)
8066
8047
  }, toDisplayString(_ctx.label), 7))
8067
- ], 46, _hoisted_2$4)
8048
+ ], 46, _hoisted_2$7)
8068
8049
  ]),
8069
8050
  _: 1
8070
8051
  })
@@ -8075,15 +8056,15 @@ const _sfc_main$u = /* @__PURE__ */ defineComponent({
8075
8056
  const edge = "_edge_fyzmo_123";
8076
8057
  const edgeLabelWrapper = "_edgeLabelWrapper_fyzmo_127";
8077
8058
  const edgeLabel = "_edgeLabel_fyzmo_127";
8078
- const style0$n = {
8059
+ const style0$r = {
8079
8060
  edge,
8080
8061
  edgeLabelWrapper,
8081
8062
  edgeLabel
8082
8063
  };
8083
- const cssModules$n = {
8084
- "$style": style0$n
8064
+ const cssModules$r = {
8065
+ "$style": style0$r
8085
8066
  };
8086
- const Edge = /* @__PURE__ */ _export_sfc$1(_sfc_main$u, [["__cssModules", cssModules$n]]);
8067
+ const Edge = /* @__PURE__ */ _export_sfc$1(_sfc_main$B, [["__cssModules", cssModules$r]]);
8087
8068
  function useCanvasNode() {
8088
8069
  const node2 = inject(CanvasNodeKey);
8089
8070
  const data = computed(
@@ -8115,16 +8096,17 @@ function useCanvasNode() {
8115
8096
  const name = computed(() => data.value.name);
8116
8097
  const inputs2 = computed(() => data.value.inputs);
8117
8098
  const outputs = computed(() => data.value.outputs);
8118
- const connections = computed(() => data.value.connections);
8099
+ const connections2 = computed(() => data.value.connections);
8119
8100
  const isDisabled = computed(() => data.value.disabled);
8120
8101
  const isReadOnly = computed(() => node2?.readOnly.value);
8121
8102
  const isSelected = computed(() => node2?.selected.value);
8122
8103
  const pinnedDataCount = computed(() => data.value.pinnedData.count);
8123
8104
  const hasPinnedData = computed(() => data.value.pinnedData.count > 0);
8124
8105
  const issues2 = computed(() => data.value.issues.items ?? []);
8125
- const hasIssues = computed(() => data.value.issues.visible);
8106
+ const hasIssues2 = computed(() => data.value.issues.visible);
8126
8107
  const executionStatus = computed(() => data.value.execution.status);
8127
8108
  const executionWaiting = computed(() => data.value.execution.waiting);
8109
+ const executionWaitingForNext = computed(() => data.value.execution.waitingForNext);
8128
8110
  const executionRunning = computed(() => data.value.execution.running);
8129
8111
  const runDataOutputMap = computed(() => data.value.runData.outputMap);
8130
8112
  const runDataIterations = computed(() => data.value.runData.iterations);
@@ -8139,7 +8121,7 @@ function useCanvasNode() {
8139
8121
  subtitle: subtitle2,
8140
8122
  inputs: inputs2,
8141
8123
  outputs,
8142
- connections,
8124
+ connections: connections2,
8143
8125
  isDisabled,
8144
8126
  isReadOnly,
8145
8127
  isSelected,
@@ -8149,17 +8131,18 @@ function useCanvasNode() {
8149
8131
  runDataOutputMap,
8150
8132
  hasRunData,
8151
8133
  issues: issues2,
8152
- hasIssues,
8134
+ hasIssues: hasIssues2,
8153
8135
  executionStatus,
8154
8136
  executionWaiting,
8137
+ executionWaitingForNext,
8155
8138
  executionRunning,
8156
8139
  render: render2,
8157
8140
  eventBus
8158
8141
  };
8159
8142
  }
8160
- const _hoisted_1$6 = ["title"];
8161
- const _hoisted_2$3 = ["onClick"];
8162
- const _sfc_main$t = /* @__PURE__ */ defineComponent({
8143
+ const _hoisted_1$a = ["title"];
8144
+ const _hoisted_2$6 = ["onClick"];
8145
+ const _sfc_main$A = /* @__PURE__ */ defineComponent({
8163
8146
  __name: "CanvasNodeStickyColorSelector",
8164
8147
  props: {
8165
8148
  "visible": { type: Boolean },
@@ -8223,7 +8206,7 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
8223
8206
  title: unref(i18n).baseText("node.changeColor")
8224
8207
  }, [
8225
8208
  createVNode(_component_FontAwesomeIcon, { icon: "palette" })
8226
- ], 10, _hoisted_1$6)
8209
+ ], 10, _hoisted_1$a)
8227
8210
  ]),
8228
8211
  default: withCtx(() => [
8229
8212
  createBaseVNode("div", {
@@ -8239,7 +8222,7 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
8239
8222
  renderOptions.value.color === color2 ? _ctx.$style.selected : ""
8240
8223
  ]),
8241
8224
  onClick: ($event) => changeColor(color2)
8242
- }, null, 10, _hoisted_2$3);
8225
+ }, null, 10, _hoisted_2$6);
8243
8226
  }), 128))
8244
8227
  ], 2)
8245
8228
  ]),
@@ -8253,7 +8236,7 @@ const content = "_content_3lp7u_129";
8253
8236
  const color = "_color_3lp7u_136";
8254
8237
  const selected$2 = "_selected_3lp7u_148";
8255
8238
  const option = "_option_3lp7u_173";
8256
- const style0$m = {
8239
+ const style0$q = {
8257
8240
  popover,
8258
8241
  content,
8259
8242
  color,
@@ -8267,11 +8250,11 @@ const style0$m = {
8267
8250
  "sticky-color-7": "_sticky-color-7_3lp7u_169",
8268
8251
  option
8269
8252
  };
8270
- const cssModules$m = {
8271
- "$style": style0$m
8253
+ const cssModules$q = {
8254
+ "$style": style0$q
8272
8255
  };
8273
- const __unplugin_components_0$4 = /* @__PURE__ */ _export_sfc$1(_sfc_main$t, [["__cssModules", cssModules$m]]);
8274
- const _sfc_main$s = /* @__PURE__ */ defineComponent({
8256
+ const __unplugin_components_0$4 = /* @__PURE__ */ _export_sfc$1(_sfc_main$A, [["__cssModules", cssModules$q]]);
8257
+ const _sfc_main$z = /* @__PURE__ */ defineComponent({
8275
8258
  __name: "CanvasNodeToolbar",
8276
8259
  props: {
8277
8260
  readOnly: { type: Boolean }
@@ -8406,16 +8389,16 @@ const _sfc_main$s = /* @__PURE__ */ defineComponent({
8406
8389
  const canvasNodeToolbar$1 = "_canvasNodeToolbar_104hp_123";
8407
8390
  const canvasNodeToolbarItems = "_canvasNodeToolbarItems_104hp_130";
8408
8391
  const forceVisible = "_forceVisible_104hp_141";
8409
- const style0$l = {
8392
+ const style0$p = {
8410
8393
  canvasNodeToolbar: canvasNodeToolbar$1,
8411
8394
  canvasNodeToolbarItems,
8412
8395
  forceVisible
8413
8396
  };
8414
- const cssModules$l = {
8415
- "$style": style0$l
8397
+ const cssModules$p = {
8398
+ "$style": style0$p
8416
8399
  };
8417
- const CanvasNodeToolbar = /* @__PURE__ */ _export_sfc$1(_sfc_main$s, [["__cssModules", cssModules$l]]);
8418
- const _sfc_main$r = /* @__PURE__ */ defineComponent({
8400
+ const CanvasNodeToolbar = /* @__PURE__ */ _export_sfc$1(_sfc_main$z, [["__cssModules", cssModules$p]]);
8401
+ const _sfc_main$y = /* @__PURE__ */ defineComponent({
8419
8402
  __name: "CanvasNodeDisabledStrikeThrough",
8420
8403
  setup(__props) {
8421
8404
  const $style = useCssModule();
@@ -8437,20 +8420,20 @@ const _sfc_main$r = /* @__PURE__ */ defineComponent({
8437
8420
  const disabledStrikeThrough = "_disabledStrikeThrough_nl2g7_123";
8438
8421
  const success$2 = "_success_nl2g7_132";
8439
8422
  const warning$2 = "_warning_nl2g7_136";
8440
- const style0$k = {
8423
+ const style0$o = {
8441
8424
  disabledStrikeThrough,
8442
8425
  success: success$2,
8443
8426
  warning: warning$2
8444
8427
  };
8445
- const cssModules$k = {
8446
- "$style": style0$k
8428
+ const cssModules$o = {
8429
+ "$style": style0$o
8447
8430
  };
8448
- const __unplugin_components_3 = /* @__PURE__ */ _export_sfc$1(_sfc_main$r, [["__cssModules", cssModules$k]]);
8449
- const _hoisted_1$5 = { key: 1 };
8450
- const _hoisted_2$2 = ["textContent"];
8451
- const _hoisted_3$1 = { key: 2 };
8452
- const _hoisted_4 = { key: 5 };
8453
- const _sfc_main$q = /* @__PURE__ */ defineComponent({
8431
+ const __unplugin_components_3 = /* @__PURE__ */ _export_sfc$1(_sfc_main$y, [["__cssModules", cssModules$o]]);
8432
+ const _hoisted_1$9 = { key: 1 };
8433
+ const _hoisted_2$5 = ["textContent"];
8434
+ const _hoisted_3$4 = { key: 2 };
8435
+ const _hoisted_4$3 = { key: 5 };
8436
+ const _sfc_main$x = /* @__PURE__ */ defineComponent({
8454
8437
  __name: "CanvasNodeStatusIcons",
8455
8438
  setup(__props) {
8456
8439
  const nodeHelpers = useNodeHelpers();
@@ -8458,9 +8441,10 @@ const _sfc_main$q = /* @__PURE__ */ defineComponent({
8458
8441
  const {
8459
8442
  hasPinnedData,
8460
8443
  issues: issues2,
8461
- hasIssues,
8444
+ hasIssues: hasIssues2,
8462
8445
  executionStatus,
8463
8446
  executionWaiting,
8447
+ executionWaitingForNext,
8464
8448
  executionRunning,
8465
8449
  hasRunData,
8466
8450
  runDataIterations,
@@ -8473,7 +8457,7 @@ const _sfc_main$q = /* @__PURE__ */ defineComponent({
8473
8457
  );
8474
8458
  return (_ctx, _cache) => {
8475
8459
  const _component_FontAwesomeIcon = resolveComponent("FontAwesomeIcon");
8476
- return unref(hasIssues) && !hideNodeIssues.value ? (openBlock(), createElementBlock("div", {
8460
+ return unref(hasIssues2) && !hideNodeIssues.value ? (openBlock(), createElementBlock("div", {
8477
8461
  key: 0,
8478
8462
  class: normalizeClass([_ctx.$style.status, _ctx.$style.issues]),
8479
8463
  "data-test-id": "node-issues"
@@ -8493,7 +8477,7 @@ const _sfc_main$q = /* @__PURE__ */ defineComponent({
8493
8477
  ]),
8494
8478
  _: 1
8495
8479
  })
8496
- ], 2)) : unref(executionWaiting) || unref(executionStatus) === "waiting" ? (openBlock(), createElementBlock("div", _hoisted_1$5, [
8480
+ ], 2)) : unref(executionWaiting) || unref(executionStatus) === "waiting" ? (openBlock(), createElementBlock("div", _hoisted_1$9, [
8497
8481
  createBaseVNode("div", {
8498
8482
  class: normalizeClass([_ctx.$style.status, _ctx.$style.waiting])
8499
8483
  }, [
@@ -8501,7 +8485,7 @@ const _sfc_main$q = /* @__PURE__ */ defineComponent({
8501
8485
  content: withCtx(() => [
8502
8486
  createBaseVNode("div", {
8503
8487
  textContent: toDisplayString(unref(executionWaiting))
8504
- }, null, 8, _hoisted_2$2)
8488
+ }, null, 8, _hoisted_2$5)
8505
8489
  ]),
8506
8490
  default: withCtx(() => [
8507
8491
  createVNode(_component_FontAwesomeIcon, { icon: "clock" })
@@ -8517,7 +8501,7 @@ const _sfc_main$q = /* @__PURE__ */ defineComponent({
8517
8501
  spin: ""
8518
8502
  })
8519
8503
  ], 2)
8520
- ])) : unref(executionStatus) === "unknown" ? (openBlock(), createElementBlock("div", _hoisted_3$1)) : unref(executionRunning) || unref(executionStatus) === "running" ? (openBlock(), createElementBlock("div", {
8504
+ ])) : unref(executionStatus) === "unknown" ? (openBlock(), createElementBlock("div", _hoisted_3$4)) : unref(executionRunning) || unref(executionWaitingForNext) || unref(executionStatus) === "running" ? (openBlock(), createElementBlock("div", {
8521
8505
  key: 3,
8522
8506
  "data-test-id": "canvas-node-status-running",
8523
8507
  class: normalizeClass([_ctx.$style.status, _ctx.$style.running])
@@ -8532,7 +8516,7 @@ const _sfc_main$q = /* @__PURE__ */ defineComponent({
8532
8516
  class: normalizeClass([_ctx.$style.status, _ctx.$style.pinnedData])
8533
8517
  }, [
8534
8518
  createVNode(_component_FontAwesomeIcon, { icon: "thumbtack" })
8535
- ], 2)) : dirtiness.value !== void 0 ? (openBlock(), createElementBlock("div", _hoisted_4, [
8519
+ ], 2)) : dirtiness.value !== void 0 ? (openBlock(), createElementBlock("div", _hoisted_4$3, [
8536
8520
  createVNode(unref(N8nTooltip), {
8537
8521
  "show-after": 500,
8538
8522
  placement: "bottom"
@@ -8578,7 +8562,7 @@ const running$1 = "_running_93vv6_142";
8578
8562
  const issues = "_issues_93vv6_165";
8579
8563
  const count = "_count_93vv6_170";
8580
8564
  const warning$1 = "_warning_93vv6_174";
8581
- const style0$j = {
8565
+ const style0$n = {
8582
8566
  status,
8583
8567
  runData,
8584
8568
  waiting: waiting$1,
@@ -8589,11 +8573,11 @@ const style0$j = {
8589
8573
  count,
8590
8574
  warning: warning$1
8591
8575
  };
8592
- const cssModules$j = {
8593
- "$style": style0$j
8576
+ const cssModules$n = {
8577
+ "$style": style0$n
8594
8578
  };
8595
- const __unplugin_components_2 = /* @__PURE__ */ _export_sfc$1(_sfc_main$q, [["__cssModules", cssModules$j]]);
8596
- const _sfc_main$p = /* @__PURE__ */ defineComponent({
8579
+ const __unplugin_components_2 = /* @__PURE__ */ _export_sfc$1(_sfc_main$x, [["__cssModules", cssModules$n]]);
8580
+ const _sfc_main$w = /* @__PURE__ */ defineComponent({
8597
8581
  __name: "CanvasNodeTooltip",
8598
8582
  props: {
8599
8583
  visible: { type: Boolean }
@@ -8632,18 +8616,18 @@ const _sfc_main$p = /* @__PURE__ */ defineComponent({
8632
8616
  });
8633
8617
  const tooltipTrigger = "_tooltipTrigger_dauyi_123";
8634
8618
  const popper = "_popper_dauyi_131";
8635
- const style0$i = {
8619
+ const style0$m = {
8636
8620
  tooltipTrigger,
8637
8621
  popper
8638
8622
  };
8639
- const cssModules$i = {
8640
- "$style": style0$i
8623
+ const cssModules$m = {
8624
+ "$style": style0$m
8641
8625
  };
8642
- const __unplugin_components_0$3 = /* @__PURE__ */ _export_sfc$1(_sfc_main$p, [["__cssModules", cssModules$i]]);
8626
+ const __unplugin_components_0$3 = /* @__PURE__ */ _export_sfc$1(_sfc_main$w, [["__cssModules", cssModules$m]]);
8643
8627
  function useNodeConnections({
8644
8628
  inputs: inputs2,
8645
8629
  outputs,
8646
- connections
8630
+ connections: connections2
8647
8631
  }) {
8648
8632
  const mainInputs = computed(
8649
8633
  () => unref(inputs2).filter((input) => input.type === NodeConnectionTypes.Main)
@@ -8655,7 +8639,7 @@ function useNodeConnections({
8655
8639
  () => nonMainInputs.value.filter((input) => input.required)
8656
8640
  );
8657
8641
  const mainInputConnections = computed(
8658
- () => unref(connections)[CanvasConnectionMode.Input][NodeConnectionTypes.Main] ?? []
8642
+ () => unref(connections2)[CanvasConnectionMode.Input][NodeConnectionTypes.Main] ?? []
8659
8643
  );
8660
8644
  const mainOutputs = computed(
8661
8645
  () => unref(outputs).filter((output) => output.type === NodeConnectionTypes.Main)
@@ -8664,7 +8648,7 @@ function useNodeConnections({
8664
8648
  () => unref(outputs).filter((output) => output.type !== NodeConnectionTypes.Main)
8665
8649
  );
8666
8650
  const mainOutputConnections = computed(
8667
- () => unref(connections)[CanvasConnectionMode.Output][NodeConnectionTypes.Main] ?? []
8651
+ () => unref(connections2)[CanvasConnectionMode.Output][NodeConnectionTypes.Main] ?? []
8668
8652
  );
8669
8653
  function isValidConnection(connection) {
8670
8654
  const { type: sourceType, mode: sourceMode } = parseCanvasConnectionHandleString(
@@ -8688,217 +8672,2339 @@ function useNodeConnections({
8688
8672
  isValidConnection
8689
8673
  };
8690
8674
  }
8691
- const _hoisted_1$4 = ["data-test-id"];
8692
- const _sfc_main$o = /* @__PURE__ */ defineComponent({
8693
- __name: "CanvasNodeDefault",
8694
- emits: ["open:contextmenu", "activate"],
8675
+ function useNodeSettingsInCanvas() {
8676
+ const settingsStore = useSettingsStore();
8677
+ if (Number.isNaN(settingsStore.experimental__minZoomNodeSettingsInCanvas) || settingsStore.experimental__minZoomNodeSettingsInCanvas <= 0) {
8678
+ return computed(() => void 0);
8679
+ }
8680
+ const { editableWorkflow } = useCanvasOperations();
8681
+ const viewFlow = useVueFlow({ id: editableWorkflow.value.id });
8682
+ const zoom2 = computed(() => viewFlow.viewport.value.zoom);
8683
+ const debouncedZoom = refDebounced(zoom2, 100);
8684
+ return computed(
8685
+ () => debouncedZoom.value > settingsStore.experimental__minZoomNodeSettingsInCanvas ? debouncedZoom.value : void 0
8686
+ );
8687
+ }
8688
+ const _sfc_main$v = /* @__PURE__ */ defineComponent({
8689
+ __name: "NodeTitle",
8690
+ props: {
8691
+ modelValue: { default: "" },
8692
+ nodeType: { default: void 0 },
8693
+ readOnly: { type: Boolean, default: false }
8694
+ },
8695
+ emits: ["update:model-value"],
8695
8696
  setup(__props, { emit: __emit }) {
8696
- const $style = useCssModule();
8697
- const i18n = useI18n();
8698
8697
  const emit = __emit;
8699
- const { initialized, viewport } = useCanvas();
8700
- const {
8701
- id: id2,
8702
- label: label2,
8703
- subtitle: subtitle2,
8704
- inputs: inputs2,
8705
- outputs,
8706
- connections,
8707
- isDisabled,
8708
- isSelected,
8709
- hasPinnedData,
8710
- executionStatus,
8711
- executionWaiting,
8712
- executionRunning,
8713
- hasRunData,
8714
- hasIssues,
8715
- render: render2
8716
- } = useCanvasNode();
8717
- const {
8718
- mainOutputs,
8719
- mainOutputConnections,
8720
- mainInputs,
8721
- mainInputConnections,
8722
- nonMainInputs
8723
- } = useNodeConnections({
8724
- inputs: inputs2,
8725
- outputs,
8726
- connections
8727
- });
8728
- const renderOptions = computed(() => render2.value.options);
8729
- const classes = computed(() => {
8730
- return {
8731
- [$style.node]: true,
8732
- [$style.selected]: isSelected.value,
8733
- [$style.disabled]: isDisabled.value,
8734
- [$style.success]: hasRunData.value,
8735
- [$style.error]: hasIssues.value,
8736
- [$style.pinned]: hasPinnedData.value,
8737
- [$style.waiting]: executionWaiting.value ?? executionStatus.value === "waiting",
8738
- [$style.running]: executionRunning.value,
8739
- [$style.configurable]: renderOptions.value.configurable,
8740
- [$style.configuration]: renderOptions.value.configuration,
8741
- [$style.trigger]: renderOptions.value.trigger,
8742
- [$style.warning]: renderOptions.value.dirtiness !== void 0
8743
- };
8744
- });
8745
- const styles = computed(() => {
8746
- const stylesObject = {};
8747
- if (renderOptions.value.configurable) {
8748
- let spacerCount = 0;
8749
- stylesObject["--configurable-node--input-count"] = nonMainInputs.value.length + spacerCount;
8750
- }
8751
- stylesObject["--canvas-node--main-input-count"] = mainInputs.value.length;
8752
- stylesObject["--canvas-node--main-output-count"] = mainOutputs.value.length;
8753
- return stylesObject;
8754
- });
8755
- const dataTestId = computed(() => {
8756
- let type = "default";
8757
- if (renderOptions.value.configurable) {
8758
- type = "configurable";
8759
- } else if (renderOptions.value.configuration) {
8760
- type = "configuration";
8761
- } else if (renderOptions.value.trigger) {
8762
- type = "trigger";
8763
- }
8764
- return `canvas-${type}-node`;
8765
- });
8766
- const isStrikethroughVisible = computed(() => {
8767
- const isSingleMainInputNode = mainInputs.value.length === 1 && mainInputConnections.value.length <= 1;
8768
- const isSingleMainOutputNode = mainOutputs.value.length === 1 && mainOutputConnections.value.length <= 1;
8769
- return isDisabled.value && isSingleMainInputNode && isSingleMainOutputNode;
8770
- });
8771
- const iconSize = computed(() => renderOptions.value.configuration ? 30 : 40);
8772
- const iconSource = computed(() => renderOptions.value.icon);
8773
- const showTooltip = ref(false);
8774
- watch(initialized, () => {
8775
- if (initialized.value) {
8776
- showTooltip.value = true;
8698
+ function onRename(value) {
8699
+ if (value.trim() !== "") {
8700
+ emit("update:model-value", value.trim());
8777
8701
  }
8778
- });
8779
- watch(viewport, () => {
8780
- showTooltip.value = false;
8781
- setTimeout(() => {
8782
- showTooltip.value = true;
8783
- }, 0);
8784
- });
8785
- function openContextMenu(event) {
8786
- emit("open:contextmenu", event);
8787
- }
8788
- function onActivate(event) {
8789
- emit("activate", id2.value, event);
8790
8702
  }
8703
+ const wrapperRef = useTemplateRef("wrapperRef");
8704
+ const { width } = useElementSize(wrapperRef);
8791
8705
  return (_ctx, _cache) => {
8792
- const _component_CanvasNodeTooltip = __unplugin_components_0$3;
8793
- const _component_NodeIcon = _sfc_main$I;
8794
- const _component_CanvasNodeStatusIcons = __unplugin_components_2;
8795
- const _component_CanvasNodeDisabledStrikeThrough = __unplugin_components_3;
8796
- return openBlock(), createElementBlock("div", {
8797
- class: normalizeClass(classes.value),
8798
- style: normalizeStyle(styles.value),
8799
- "data-test-id": dataTestId.value,
8800
- onContextmenu: openContextMenu,
8801
- onDblclick: withModifiers(onActivate, ["stop"])
8706
+ return openBlock(), createElementBlock("span", {
8707
+ class: normalizeClass(_ctx.$style.container),
8708
+ "data-test-id": "node-title-container"
8802
8709
  }, [
8803
- renderOptions.value.tooltip ? (openBlock(), createBlock(_component_CanvasNodeTooltip, {
8804
- key: 0,
8805
- visible: showTooltip.value
8806
- }, null, 8, ["visible"])) : createCommentVNode("", true),
8807
- createVNode(_component_NodeIcon, {
8808
- "icon-source": iconSource.value,
8809
- size: iconSize.value,
8810
- shrink: false,
8811
- disabled: unref(isDisabled)
8812
- }, null, 8, ["icon-source", "size", "disabled"]),
8813
- !unref(isDisabled) ? (openBlock(), createBlock(_component_CanvasNodeStatusIcons, {
8814
- key: 1,
8815
- class: normalizeClass(unref($style).statusIcons)
8816
- }, null, 8, ["class"])) : createCommentVNode("", true),
8817
- isStrikethroughVisible.value ? (openBlock(), createBlock(_component_CanvasNodeDisabledStrikeThrough, { key: 2 })) : createCommentVNode("", true),
8710
+ createBaseVNode("span", {
8711
+ class: normalizeClass(_ctx.$style.iconWrapper)
8712
+ }, [
8713
+ createVNode(_sfc_main$O, {
8714
+ "node-type": _ctx.nodeType,
8715
+ size: 18
8716
+ }, null, 8, ["node-type"])
8717
+ ], 2),
8818
8718
  createBaseVNode("div", {
8819
- class: normalizeClass(unref($style).description)
8719
+ ref_key: "wrapperRef",
8720
+ ref: wrapperRef,
8721
+ class: normalizeClass(_ctx.$style.textWrapper)
8820
8722
  }, [
8821
- unref(label2) ? (openBlock(), createElementBlock("div", {
8822
- key: 0,
8823
- class: normalizeClass(unref($style).label)
8824
- }, toDisplayString(unref(label2)), 3)) : createCommentVNode("", true),
8825
- unref(isDisabled) ? (openBlock(), createElementBlock("div", {
8826
- key: 1,
8827
- class: normalizeClass(unref($style).disabledLabel)
8828
- }, " (" + toDisplayString(unref(i18n).baseText("node.disabled")) + ") ", 3)) : createCommentVNode("", true),
8829
- unref(subtitle2) ? (openBlock(), createElementBlock("div", {
8830
- key: 2,
8831
- class: normalizeClass(unref($style).subtitle)
8832
- }, toDisplayString(unref(subtitle2)), 3)) : createCommentVNode("", true)
8723
+ createVNode(unref(InlineRename), {
8724
+ "max-width": unref(width),
8725
+ "model-value": _ctx.modelValue,
8726
+ "read-only": _ctx.readOnly,
8727
+ "onUpdate:modelValue": onRename
8728
+ }, null, 8, ["max-width", "model-value", "read-only"])
8833
8729
  ], 2)
8834
- ], 46, _hoisted_1$4);
8730
+ ], 2);
8835
8731
  };
8836
8732
  }
8837
8733
  });
8838
- const node = "_node_1d2zc_123";
8839
- const trigger$1 = "_trigger_1d2zc_156";
8840
- const configuration = "_configuration_1d2zc_159";
8841
- const statusIcons = "_statusIcons_1d2zc_166";
8842
- const configurable = "_configurable_1d2zc_169";
8843
- const description = "_description_1d2zc_180";
8844
- const label$5 = "_label_1d2zc_190";
8845
- const subtitle = "_subtitle_1d2zc_193";
8846
- const selected$1 = "_selected_1d2zc_203";
8847
- const success$1 = "_success_1d2zc_206";
8848
- const warning = "_warning_1d2zc_209";
8849
- const error = "_error_1d2zc_212";
8850
- const pinned = "_pinned_1d2zc_215";
8851
- const disabled = "_disabled_1d2zc_218";
8852
- const running = "_running_1d2zc_221";
8853
- const waiting = "_waiting_1d2zc_225";
8854
- const disabledLabel = "_disabledLabel_1d2zc_242";
8855
- const style0$h = {
8856
- node,
8857
- trigger: trigger$1,
8858
- configuration,
8859
- statusIcons,
8860
- configurable,
8861
- description,
8862
- label: label$5,
8863
- subtitle,
8864
- selected: selected$1,
8865
- success: success$1,
8866
- warning,
8867
- error,
8868
- pinned,
8869
- disabled,
8870
- running,
8871
- waiting,
8872
- disabledLabel
8873
- };
8874
- const cssModules$h = {
8875
- "$style": style0$h
8734
+ const container$3 = "_container_178ym_123";
8735
+ const textWrapper = "_textWrapper_178ym_132";
8736
+ const iconWrapper = "_iconWrapper_178ym_137";
8737
+ const style0$l = {
8738
+ container: container$3,
8739
+ textWrapper,
8740
+ iconWrapper
8876
8741
  };
8877
- const CanvasNodeDefault = /* @__PURE__ */ _export_sfc$1(_sfc_main$o, [["__cssModules", cssModules$h]]);
8878
- var xhtml = "http://www.w3.org/1999/xhtml";
8879
- const namespaces = {
8880
- svg: "http://www.w3.org/2000/svg",
8881
- xhtml,
8882
- xlink: "http://www.w3.org/1999/xlink",
8883
- xml: "http://www.w3.org/XML/1998/namespace",
8884
- xmlns: "http://www.w3.org/2000/xmlns/"
8742
+ const cssModules$l = {
8743
+ "$style": style0$l
8885
8744
  };
8886
- function namespace(name) {
8887
- var prefix = name += "", i = prefix.indexOf(":");
8888
- if (i >= 0 && (prefix = name.slice(0, i)) !== "xmlns")
8889
- name = name.slice(i + 1);
8890
- return namespaces.hasOwnProperty(prefix) ? { space: namespaces[prefix], local: name } : name;
8891
- }
8892
- function creatorInherit(name) {
8893
- return function() {
8894
- var document2 = this.ownerDocument, uri = this.namespaceURI;
8895
- return uri === xhtml && document2.documentElement.namespaceURI === xhtml ? document2.createElement(name) : document2.createElementNS(uri, name);
8896
- };
8897
- }
8898
- function creatorFixed(fullname) {
8899
- return function() {
8900
- return this.ownerDocument.createElementNS(fullname.space, fullname.local);
8901
- };
8745
+ const NodeTitle = /* @__PURE__ */ _export_sfc$1(_sfc_main$v, [["__cssModules", cssModules$l]]);
8746
+ const _sfc_main$u = /* @__PURE__ */ defineComponent({
8747
+ __name: "NodeSettingsTabs",
8748
+ props: {
8749
+ modelValue: { default: "params" },
8750
+ nodeType: { default: void 0 },
8751
+ pushRef: { default: "" }
8752
+ },
8753
+ emits: ["update:model-value"],
8754
+ setup(__props, { emit: __emit }) {
8755
+ const props = __props;
8756
+ const emit = __emit;
8757
+ const externalHooks = useExternalHooks();
8758
+ const ndvStore = useNDVStore();
8759
+ const workflowsStore = useWorkflowsStore();
8760
+ const i18n = useI18n();
8761
+ const telemetry = useTelemetry();
8762
+ const activeNode = computed(() => ndvStore.activeNode);
8763
+ const isCommunityNode = computed(() => {
8764
+ const nodeType = props.nodeType;
8765
+ if (nodeType) {
8766
+ return isCommunityPackageName(nodeType.name);
8767
+ }
8768
+ return false;
8769
+ });
8770
+ const packageName = computed(() => props.nodeType?.name.split(".")[0] ?? "");
8771
+ const documentationUrl = computed(() => {
8772
+ const nodeType = props.nodeType;
8773
+ if (!nodeType) {
8774
+ return "";
8775
+ }
8776
+ if (nodeType.documentationUrl && nodeType.documentationUrl.startsWith("http")) {
8777
+ return nodeType.documentationUrl;
8778
+ }
8779
+ const utmParams = new URLSearchParams({
8780
+ utm_source: "n8n_app",
8781
+ utm_medium: "node_settings_modal-credential_link",
8782
+ utm_campaign: nodeType.name
8783
+ });
8784
+ const primaryDocUrl = nodeType.codex?.resources?.primaryDocumentation?.[0]?.url;
8785
+ if (primaryDocUrl) {
8786
+ return `${primaryDocUrl}?${utmParams.toString()}`;
8787
+ }
8788
+ if (isCommunityNode.value) {
8789
+ return `${NPM_PACKAGE_DOCS_BASE_URL}${packageName.value}`;
8790
+ }
8791
+ return `${BUILTIN_NODES_DOCS_URL}?${utmParams.toString()}`;
8792
+ });
8793
+ const options = computed(() => {
8794
+ const options2 = [
8795
+ {
8796
+ label: i18n.baseText("nodeSettings.parameters"),
8797
+ value: "params"
8798
+ },
8799
+ {
8800
+ label: i18n.baseText("nodeSettings.settings"),
8801
+ value: "settings"
8802
+ }
8803
+ ];
8804
+ if (isCommunityNode.value) {
8805
+ options2.push({
8806
+ icon: "cube",
8807
+ value: "communityNode",
8808
+ align: "right",
8809
+ tooltip: i18n.baseText("generic.communityNode.tooltip", {
8810
+ interpolate: {
8811
+ docUrl: COMMUNITY_NODES_INSTALLATION_DOCS_URL,
8812
+ packageName: packageName.value
8813
+ }
8814
+ })
8815
+ });
8816
+ }
8817
+ if (documentationUrl.value) {
8818
+ options2.push({
8819
+ label: i18n.baseText("nodeSettings.docs"),
8820
+ value: "docs",
8821
+ href: documentationUrl.value,
8822
+ align: "right"
8823
+ });
8824
+ }
8825
+ return options2;
8826
+ });
8827
+ function onTabSelect(tab) {
8828
+ if (tab === "docs" && props.nodeType) {
8829
+ void externalHooks.run("dataDisplay.onDocumentationUrlClick", {
8830
+ nodeType: props.nodeType,
8831
+ documentationUrl: documentationUrl.value
8832
+ });
8833
+ telemetry.track("User clicked ndv link", {
8834
+ node_type: activeNode.value?.type,
8835
+ workflow_id: workflowsStore.workflowId,
8836
+ push_ref: props.pushRef,
8837
+ pane: NodeConnectionTypes.Main,
8838
+ type: "docs"
8839
+ });
8840
+ }
8841
+ if (tab === "settings" && props.nodeType) {
8842
+ telemetry.track("User viewed node settings", {
8843
+ node_type: props.nodeType.name,
8844
+ workflow_id: workflowsStore.workflowId
8845
+ });
8846
+ }
8847
+ if (tab === "settings" || tab === "params") {
8848
+ emit("update:model-value", tab);
8849
+ }
8850
+ }
8851
+ function onTooltipClick(tab, event) {
8852
+ if (tab === "communityNode" && event.target.localName === "a") {
8853
+ telemetry.track("user clicked cnr docs link", { source: "node details view" });
8854
+ }
8855
+ }
8856
+ return (_ctx, _cache) => {
8857
+ const _component_N8nTabs = resolveComponent("N8nTabs");
8858
+ return openBlock(), createBlock(_component_N8nTabs, {
8859
+ options: options.value,
8860
+ "model-value": _ctx.modelValue,
8861
+ "onUpdate:modelValue": onTabSelect,
8862
+ onTooltipClick
8863
+ }, null, 8, ["options", "model-value"]);
8864
+ };
8865
+ }
8866
+ });
8867
+ const _hoisted_1$8 = {
8868
+ key: 0,
8869
+ class: "webhooks"
8870
+ };
8871
+ const _hoisted_2$4 = ["title"];
8872
+ const _hoisted_3$3 = {
8873
+ key: 0,
8874
+ class: "node-webhooks"
8875
+ };
8876
+ const _hoisted_4$2 = {
8877
+ key: 0,
8878
+ class: "url-selection"
8879
+ };
8880
+ const _hoisted_5$2 = {
8881
+ key: 0,
8882
+ class: "webhook-wrapper"
8883
+ };
8884
+ const _hoisted_6$2 = { class: "http-field" };
8885
+ const _hoisted_7$1 = { class: "http-method" };
8886
+ const _hoisted_8$1 = { class: "url-field" };
8887
+ const _hoisted_9$1 = ["onClick"];
8888
+ const _hoisted_10$1 = {
8889
+ key: 1,
8890
+ class: "webhook-wrapper"
8891
+ };
8892
+ const _hoisted_11$1 = { class: "url-field-full-width" };
8893
+ const _hoisted_12 = ["onClick"];
8894
+ const _sfc_main$t = /* @__PURE__ */ defineComponent({
8895
+ __name: "NodeWebhooks",
8896
+ props: {
8897
+ node: {},
8898
+ nodeTypeDescription: {}
8899
+ },
8900
+ setup(__props) {
8901
+ const props = __props;
8902
+ const clipboard = useClipboard();
8903
+ const workflowHelpers = useWorkflowHelpers();
8904
+ const toast = useToast();
8905
+ const i18n = useI18n();
8906
+ const telemetry = useTelemetry();
8907
+ const isMinimized = ref(
8908
+ props.nodeTypeDescription && !OPEN_URL_PANEL_TRIGGER_NODE_TYPES.includes(props.nodeTypeDescription.name)
8909
+ );
8910
+ const showUrlFor = ref("test");
8911
+ const isProductionOnly = computed(() => {
8912
+ return props.nodeTypeDescription && PRODUCTION_ONLY_TRIGGER_NODE_TYPES.includes(props.nodeTypeDescription.name);
8913
+ });
8914
+ const urlOptions = computed(() => [
8915
+ ...isProductionOnly.value ? [] : [{ label: baseText.value.testUrl, value: "test" }],
8916
+ {
8917
+ label: baseText.value.productionUrl,
8918
+ value: "production"
8919
+ }
8920
+ ]);
8921
+ const visibleWebhookUrls = computed(() => {
8922
+ return webhooksNode.value.filter((webhook) => {
8923
+ if (typeof webhook.ndvHideUrl === "string") {
8924
+ return !workflowHelpers.getWebhookExpressionValue(webhook, "ndvHideUrl");
8925
+ }
8926
+ return !webhook.ndvHideUrl;
8927
+ });
8928
+ });
8929
+ const webhooksNode = computed(() => {
8930
+ if (props.nodeTypeDescription?.webhooks === void 0) {
8931
+ return [];
8932
+ }
8933
+ return props.nodeTypeDescription.webhooks.filter(
8934
+ (webhookData) => webhookData.restartWebhook !== true
8935
+ );
8936
+ });
8937
+ const baseText = computed(() => {
8938
+ const nodeType = props.nodeTypeDescription?.name;
8939
+ switch (nodeType) {
8940
+ case CHAT_TRIGGER_NODE_TYPE:
8941
+ return {
8942
+ toggleTitle: i18n.baseText("nodeWebhooks.webhookUrls.chatTrigger"),
8943
+ clickToDisplay: i18n.baseText("nodeWebhooks.clickToDisplayWebhookUrls.formTrigger"),
8944
+ clickToHide: i18n.baseText("nodeWebhooks.clickToHideWebhookUrls.chatTrigger"),
8945
+ clickToCopy: i18n.baseText("nodeWebhooks.clickToCopyWebhookUrls.chatTrigger"),
8946
+ testUrl: i18n.baseText("nodeWebhooks.testUrl"),
8947
+ productionUrl: i18n.baseText("nodeWebhooks.productionUrl"),
8948
+ copyTitle: i18n.baseText("nodeWebhooks.showMessage.title.chatTrigger"),
8949
+ copyMessage: i18n.baseText("nodeWebhooks.showMessage.message.chatTrigger")
8950
+ };
8951
+ case FORM_TRIGGER_NODE_TYPE:
8952
+ return {
8953
+ toggleTitle: i18n.baseText("nodeWebhooks.webhookUrls.formTrigger"),
8954
+ clickToDisplay: i18n.baseText("nodeWebhooks.clickToDisplayWebhookUrls.formTrigger"),
8955
+ clickToHide: i18n.baseText("nodeWebhooks.clickToHideWebhookUrls.formTrigger"),
8956
+ clickToCopy: i18n.baseText("nodeWebhooks.clickToCopyWebhookUrls.formTrigger"),
8957
+ testUrl: i18n.baseText("nodeWebhooks.testUrl"),
8958
+ productionUrl: i18n.baseText("nodeWebhooks.productionUrl"),
8959
+ copyTitle: i18n.baseText("nodeWebhooks.showMessage.title.formTrigger"),
8960
+ copyMessage: i18n.baseText("nodeWebhooks.showMessage.message.formTrigger")
8961
+ };
8962
+ case MCP_TRIGGER_NODE_TYPE:
8963
+ return {
8964
+ toggleTitle: i18n.baseText("nodeWebhooks.webhookUrls.mcpTrigger"),
8965
+ clickToDisplay: i18n.baseText("nodeWebhooks.clickToDisplayWebhookUrls.mcpTrigger"),
8966
+ clickToHide: i18n.baseText("nodeWebhooks.clickToHideWebhookUrls.mcpTrigger"),
8967
+ clickToCopy: i18n.baseText("nodeWebhooks.clickToCopyWebhookUrls.mcpTrigger"),
8968
+ testUrl: i18n.baseText("nodeWebhooks.testUrl"),
8969
+ productionUrl: i18n.baseText("nodeWebhooks.productionUrl"),
8970
+ copyTitle: i18n.baseText("nodeWebhooks.showMessage.title.mcpTrigger"),
8971
+ copyMessage: void 0
8972
+ };
8973
+ default:
8974
+ return {
8975
+ toggleTitle: i18n.baseText("nodeWebhooks.webhookUrls"),
8976
+ clickToDisplay: i18n.baseText("nodeWebhooks.clickToDisplayWebhookUrls"),
8977
+ clickToHide: i18n.baseText("nodeWebhooks.clickToHideWebhookUrls"),
8978
+ clickToCopy: i18n.baseText("nodeWebhooks.clickToCopyWebhookUrls"),
8979
+ testUrl: i18n.baseText("nodeWebhooks.testUrl"),
8980
+ productionUrl: i18n.baseText("nodeWebhooks.productionUrl"),
8981
+ copyTitle: i18n.baseText("nodeWebhooks.showMessage.title"),
8982
+ copyMessage: void 0
8983
+ };
8984
+ }
8985
+ });
8986
+ function copyWebhookUrl(webhookData) {
8987
+ const webhookUrl = getWebhookUrlDisplay(webhookData);
8988
+ void clipboard.copy(webhookUrl);
8989
+ toast.showMessage({
8990
+ title: baseText.value.copyTitle,
8991
+ message: baseText.value.copyMessage,
8992
+ type: "success"
8993
+ });
8994
+ telemetry.track("User copied webhook URL", {
8995
+ pane: "parameters",
8996
+ type: `${showUrlFor.value} url`
8997
+ });
8998
+ }
8999
+ function getWebhookUrlDisplay(webhookData) {
9000
+ if (props.node) {
9001
+ return workflowHelpers.getWebhookUrl(
9002
+ webhookData,
9003
+ props.node,
9004
+ isProductionOnly.value ? "production" : showUrlFor.value
9005
+ );
9006
+ }
9007
+ return "";
9008
+ }
9009
+ function isWebhookMethodVisible(webhook) {
9010
+ try {
9011
+ const method = workflowHelpers.getWebhookExpressionValue(webhook, "httpMethod", false);
9012
+ if (Array.isArray(method) && method.length !== 1) {
9013
+ return false;
9014
+ }
9015
+ } catch (error2) {
9016
+ }
9017
+ if (typeof webhook.ndvHideMethod === "string") {
9018
+ return !workflowHelpers.getWebhookExpressionValue(webhook, "ndvHideMethod");
9019
+ }
9020
+ return !webhook.ndvHideMethod;
9021
+ }
9022
+ function getWebhookHttpMethod(webhook) {
9023
+ const method = workflowHelpers.getWebhookExpressionValue(webhook, "httpMethod", false);
9024
+ if (Array.isArray(method)) {
9025
+ return method[0];
9026
+ }
9027
+ return method;
9028
+ }
9029
+ watch(
9030
+ () => props.node,
9031
+ () => {
9032
+ isMinimized.value = props.nodeTypeDescription && !OPEN_URL_PANEL_TRIGGER_NODE_TYPES.includes(props.nodeTypeDescription.name);
9033
+ }
9034
+ );
9035
+ return (_ctx, _cache) => {
9036
+ const _component_font_awesome_icon = resolveComponent("font-awesome-icon");
9037
+ const _component_n8n_radio_buttons = resolveComponent("n8n-radio-buttons");
9038
+ const _component_el_col = resolveComponent("el-col");
9039
+ const _component_el_row = resolveComponent("el-row");
9040
+ const _component_n8n_tooltip = resolveComponent("n8n-tooltip");
9041
+ const _component_el_collapse_transition = resolveComponent("el-collapse-transition");
9042
+ return webhooksNode.value.length && visibleWebhookUrls.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_1$8, [
9043
+ createBaseVNode("div", {
9044
+ class: normalizeClass(["clickable headline", { expanded: !isMinimized.value }]),
9045
+ title: isMinimized.value ? baseText.value.clickToDisplay : baseText.value.clickToHide,
9046
+ onClick: _cache[0] || (_cache[0] = ($event) => isMinimized.value = !isMinimized.value)
9047
+ }, [
9048
+ createVNode(_component_font_awesome_icon, {
9049
+ icon: "angle-right",
9050
+ class: "minimize-button minimize-icon"
9051
+ }),
9052
+ createTextVNode(" " + toDisplayString(baseText.value.toggleTitle), 1)
9053
+ ], 10, _hoisted_2$4),
9054
+ createVNode(_component_el_collapse_transition, null, {
9055
+ default: withCtx(() => [
9056
+ !isMinimized.value ? (openBlock(), createElementBlock("div", _hoisted_3$3, [
9057
+ !isProductionOnly.value ? (openBlock(), createElementBlock("div", _hoisted_4$2, [
9058
+ createVNode(_component_el_row, null, {
9059
+ default: withCtx(() => [
9060
+ createVNode(_component_el_col, { span: 24 }, {
9061
+ default: withCtx(() => [
9062
+ createVNode(_component_n8n_radio_buttons, {
9063
+ modelValue: showUrlFor.value,
9064
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => showUrlFor.value = $event),
9065
+ options: urlOptions.value
9066
+ }, null, 8, ["modelValue", "options"])
9067
+ ]),
9068
+ _: 1
9069
+ })
9070
+ ]),
9071
+ _: 1
9072
+ })
9073
+ ])) : createCommentVNode("", true),
9074
+ (openBlock(true), createElementBlock(Fragment, null, renderList(visibleWebhookUrls.value, (webhook, index) => {
9075
+ return openBlock(), createBlock(_component_n8n_tooltip, {
9076
+ key: index,
9077
+ class: "item",
9078
+ content: baseText.value.clickToCopy,
9079
+ placement: "left"
9080
+ }, {
9081
+ default: withCtx(() => [
9082
+ isWebhookMethodVisible(webhook) ? (openBlock(), createElementBlock("div", _hoisted_5$2, [
9083
+ createBaseVNode("div", _hoisted_6$2, [
9084
+ createBaseVNode("div", _hoisted_7$1, [
9085
+ createTextVNode(toDisplayString(getWebhookHttpMethod(webhook)), 1),
9086
+ _cache[2] || (_cache[2] = createBaseVNode("br", null, null, -1))
9087
+ ])
9088
+ ]),
9089
+ createBaseVNode("div", _hoisted_8$1, [
9090
+ createBaseVNode("div", {
9091
+ class: "webhook-url left-ellipsis clickable",
9092
+ onClick: ($event) => copyWebhookUrl(webhook)
9093
+ }, [
9094
+ createTextVNode(toDisplayString(getWebhookUrlDisplay(webhook)), 1),
9095
+ _cache[3] || (_cache[3] = createBaseVNode("br", null, null, -1))
9096
+ ], 8, _hoisted_9$1)
9097
+ ])
9098
+ ])) : (openBlock(), createElementBlock("div", _hoisted_10$1, [
9099
+ createBaseVNode("div", _hoisted_11$1, [
9100
+ createBaseVNode("div", {
9101
+ class: "webhook-url left-ellipsis clickable",
9102
+ onClick: ($event) => copyWebhookUrl(webhook)
9103
+ }, [
9104
+ createTextVNode(toDisplayString(getWebhookUrlDisplay(webhook)), 1),
9105
+ _cache[4] || (_cache[4] = createBaseVNode("br", null, null, -1))
9106
+ ], 8, _hoisted_12)
9107
+ ])
9108
+ ]))
9109
+ ]),
9110
+ _: 2
9111
+ }, 1032, ["content"]);
9112
+ }), 128))
9113
+ ])) : createCommentVNode("", true)
9114
+ ]),
9115
+ _: 1
9116
+ })
9117
+ ])) : createCommentVNode("", true);
9118
+ };
9119
+ }
9120
+ });
9121
+ const NodeWebhooks = /* @__PURE__ */ _export_sfc$1(_sfc_main$t, [["__scopeId", "data-v-84b9da4b"]]);
9122
+ const OnClickOutside = /* @__PURE__ */ defineComponent({
9123
+ name: "OnClickOutside",
9124
+ props: ["as", "options"],
9125
+ emits: ["trigger"],
9126
+ setup(props, { slots, emit }) {
9127
+ const target2 = ref();
9128
+ onClickOutside(target2, (e) => {
9129
+ emit("trigger", e);
9130
+ }, props.options);
9131
+ return () => {
9132
+ if (slots.default)
9133
+ return h(props.as || "div", { ref: target2 }, slots.default());
9134
+ };
9135
+ }
9136
+ });
9137
+ function unrefElement(elRef) {
9138
+ var _a;
9139
+ const plain = toValue(elRef);
9140
+ return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;
9141
+ }
9142
+ const defaultWindow = isClient ? window : void 0;
9143
+ function useEventListener(...args) {
9144
+ let target2;
9145
+ let events;
9146
+ let listeners;
9147
+ let options;
9148
+ if (typeof args[0] === "string" || Array.isArray(args[0])) {
9149
+ [events, listeners, options] = args;
9150
+ target2 = defaultWindow;
9151
+ } else {
9152
+ [target2, events, listeners, options] = args;
9153
+ }
9154
+ if (!target2)
9155
+ return noop$2;
9156
+ if (!Array.isArray(events))
9157
+ events = [events];
9158
+ if (!Array.isArray(listeners))
9159
+ listeners = [listeners];
9160
+ const cleanups = [];
9161
+ const cleanup = () => {
9162
+ cleanups.forEach((fn) => fn());
9163
+ cleanups.length = 0;
9164
+ };
9165
+ const register = (el, event, listener, options2) => {
9166
+ el.addEventListener(event, listener, options2);
9167
+ return () => el.removeEventListener(event, listener, options2);
9168
+ };
9169
+ const stopWatch = watch(
9170
+ () => [unrefElement(target2), toValue(options)],
9171
+ ([el, options2]) => {
9172
+ cleanup();
9173
+ if (!el)
9174
+ return;
9175
+ const optionsClone = isObject(options2) ? { ...options2 } : options2;
9176
+ cleanups.push(
9177
+ ...events.flatMap((event) => {
9178
+ return listeners.map((listener) => register(el, event, listener, optionsClone));
9179
+ })
9180
+ );
9181
+ },
9182
+ { immediate: true, flush: "post" }
9183
+ );
9184
+ const stop = () => {
9185
+ stopWatch();
9186
+ cleanup();
9187
+ };
9188
+ tryOnScopeDispose(stop);
9189
+ return stop;
9190
+ }
9191
+ function resolveElement(el) {
9192
+ if (typeof Window !== "undefined" && el instanceof Window)
9193
+ return el.document.documentElement;
9194
+ if (typeof Document !== "undefined" && el instanceof Document)
9195
+ return el.documentElement;
9196
+ return el;
9197
+ }
9198
+ function checkOverflowScroll(ele) {
9199
+ const style = window.getComputedStyle(ele);
9200
+ if (style.overflowX === "scroll" || style.overflowY === "scroll" || style.overflowX === "auto" && ele.clientWidth < ele.scrollWidth || style.overflowY === "auto" && ele.clientHeight < ele.scrollHeight) {
9201
+ return true;
9202
+ } else {
9203
+ const parent = ele.parentNode;
9204
+ if (!parent || parent.tagName === "BODY")
9205
+ return false;
9206
+ return checkOverflowScroll(parent);
9207
+ }
9208
+ }
9209
+ function preventDefault(rawEvent) {
9210
+ const e = rawEvent || window.event;
9211
+ const _target = e.target;
9212
+ if (checkOverflowScroll(_target))
9213
+ return false;
9214
+ if (e.touches.length > 1)
9215
+ return true;
9216
+ if (e.preventDefault)
9217
+ e.preventDefault();
9218
+ return false;
9219
+ }
9220
+ const elInitialOverflow = /* @__PURE__ */ new WeakMap();
9221
+ function useScrollLock(element, initialState = false) {
9222
+ const isLocked = ref(initialState);
9223
+ let stopTouchMoveListener = null;
9224
+ let initialOverflow = "";
9225
+ watch(toRef$1(element), (el) => {
9226
+ const target2 = resolveElement(toValue(el));
9227
+ if (target2) {
9228
+ const ele = target2;
9229
+ if (!elInitialOverflow.get(ele))
9230
+ elInitialOverflow.set(ele, ele.style.overflow);
9231
+ if (ele.style.overflow !== "hidden")
9232
+ initialOverflow = ele.style.overflow;
9233
+ if (ele.style.overflow === "hidden")
9234
+ return isLocked.value = true;
9235
+ if (isLocked.value)
9236
+ return ele.style.overflow = "hidden";
9237
+ }
9238
+ }, {
9239
+ immediate: true
9240
+ });
9241
+ const lock = () => {
9242
+ const el = resolveElement(toValue(element));
9243
+ if (!el || isLocked.value)
9244
+ return;
9245
+ if (isIOS) {
9246
+ stopTouchMoveListener = useEventListener(
9247
+ el,
9248
+ "touchmove",
9249
+ (e) => {
9250
+ preventDefault(e);
9251
+ },
9252
+ { passive: false }
9253
+ );
9254
+ }
9255
+ el.style.overflow = "hidden";
9256
+ isLocked.value = true;
9257
+ };
9258
+ const unlock = () => {
9259
+ const el = resolveElement(toValue(element));
9260
+ if (!el || !isLocked.value)
9261
+ return;
9262
+ isIOS && (stopTouchMoveListener == null ? void 0 : stopTouchMoveListener());
9263
+ el.style.overflow = initialOverflow;
9264
+ elInitialOverflow.delete(el);
9265
+ isLocked.value = false;
9266
+ };
9267
+ tryOnScopeDispose(unlock);
9268
+ return computed({
9269
+ get() {
9270
+ return isLocked.value;
9271
+ },
9272
+ set(v) {
9273
+ if (v)
9274
+ lock();
9275
+ else unlock();
9276
+ }
9277
+ });
9278
+ }
9279
+ function onScrollLock() {
9280
+ let isMounted = false;
9281
+ const state2 = ref(false);
9282
+ return (el, binding) => {
9283
+ state2.value = binding.value;
9284
+ if (isMounted)
9285
+ return;
9286
+ isMounted = true;
9287
+ const isLocked = useScrollLock(el, binding.value);
9288
+ watch(state2, (v) => isLocked.value = v);
9289
+ };
9290
+ }
9291
+ onScrollLock();
9292
+ const _hoisted_1$7 = ["data-test-id"];
9293
+ const _hoisted_2$3 = ["textContent"];
9294
+ const _hoisted_3$2 = ["onClick"];
9295
+ const _hoisted_4$1 = ["onClick"];
9296
+ const _hoisted_5$1 = ["data-node-name"];
9297
+ const _hoisted_6$1 = ["onClick"];
9298
+ const _sfc_main$s = /* @__PURE__ */ defineComponent({
9299
+ __name: "NDVSubConnections",
9300
+ props: {
9301
+ rootNode: {}
9302
+ },
9303
+ emits: ["switchSelectedNode", "openConnectionNodeCreator"],
9304
+ setup(__props, { expose: __expose, emit: __emit }) {
9305
+ const props = __props;
9306
+ const workflowsStore = useWorkflowsStore();
9307
+ const nodeTypesStore = useNodeTypesStore();
9308
+ const nodeHelpers = useNodeHelpers();
9309
+ const i18n = useI18n();
9310
+ const { debounce } = useDebounce();
9311
+ const emit = __emit;
9312
+ const possibleConnections = ref([]);
9313
+ const expandedGroups = ref([]);
9314
+ const shouldShowNodeInputIssues = ref(false);
9315
+ const nodeType = computed(
9316
+ () => nodeTypesStore.getNodeType(props.rootNode.type, props.rootNode.typeVersion)
9317
+ );
9318
+ const nodeData = computed(() => workflowsStore.getNodeByName(props.rootNode.name));
9319
+ const ndvStore = useNDVStore();
9320
+ const workflow = computed(() => workflowsStore.getCurrentWorkflow());
9321
+ const nodeInputIssues = computed(() => {
9322
+ const issues2 = nodeHelpers.getNodeIssues(nodeType.value, props.rootNode, workflow.value, [
9323
+ "typeUnknown",
9324
+ "parameters",
9325
+ "credentials",
9326
+ "execution"
9327
+ ]);
9328
+ return issues2?.input ?? {};
9329
+ });
9330
+ const connectedNodes2 = computed(() => {
9331
+ return possibleConnections.value.reduce(
9332
+ (acc, connection) => {
9333
+ const nodes = getINodesFromNames(
9334
+ workflow.value.getParentNodes(props.rootNode.name, connection.type)
9335
+ );
9336
+ return { ...acc, [connection.type]: nodes };
9337
+ },
9338
+ {}
9339
+ );
9340
+ });
9341
+ function getConnectionConfig(connectionType2) {
9342
+ return possibleConnections.value.find((c) => c.type === connectionType2);
9343
+ }
9344
+ function isMultiConnection(connectionType2) {
9345
+ const connectionConfig = getConnectionConfig(connectionType2);
9346
+ return connectionConfig?.maxConnections !== 1;
9347
+ }
9348
+ function shouldShowConnectionTooltip(connectionType2) {
9349
+ return isMultiConnection(connectionType2) && !expandedGroups.value.includes(connectionType2);
9350
+ }
9351
+ function expandConnectionGroup(connectionType2, isExpanded) {
9352
+ if (!isMultiConnection(connectionType2)) {
9353
+ return;
9354
+ }
9355
+ if (isExpanded) {
9356
+ expandedGroups.value = [...expandedGroups.value, connectionType2];
9357
+ } else {
9358
+ expandedGroups.value = expandedGroups.value.filter((g) => g !== connectionType2);
9359
+ }
9360
+ }
9361
+ function getINodesFromNames(names) {
9362
+ return names.map((name) => {
9363
+ const node2 = workflowsStore.getNodeByName(name);
9364
+ if (node2) {
9365
+ const matchedNodeType = nodeTypesStore.getNodeType(node2.type);
9366
+ if (matchedNodeType) {
9367
+ const issues2 = nodeHelpers.getNodeIssues(matchedNodeType, node2, workflow.value);
9368
+ const stringifiedIssues = issues2 ? nodeHelpers.nodeIssuesToString(issues2, node2) : "";
9369
+ return { node: node2, nodeType: matchedNodeType, issues: stringifiedIssues };
9370
+ }
9371
+ }
9372
+ return null;
9373
+ }).filter((n) => n !== null);
9374
+ }
9375
+ function hasInputIssues(connectionType2) {
9376
+ return shouldShowNodeInputIssues.value && (nodeInputIssues.value[connectionType2] ?? []).length > 0;
9377
+ }
9378
+ function isNodeInputConfiguration(connectionConfig) {
9379
+ if (typeof connectionConfig === "string") return false;
9380
+ return "type" in connectionConfig;
9381
+ }
9382
+ function getPossibleSubInputConnections() {
9383
+ if (!nodeType.value || !props.rootNode) return [];
9384
+ const inputs2 = getNodeInputs(workflow.value, props.rootNode, nodeType.value);
9385
+ const nonMainInputs = inputs2.filter((input) => {
9386
+ if (!isNodeInputConfiguration(input)) return false;
9387
+ return input.type !== "main";
9388
+ });
9389
+ return nonMainInputs;
9390
+ }
9391
+ function onNodeClick(nodeName, connectionType2) {
9392
+ if (isMultiConnection(connectionType2) && !expandedGroups.value.includes(connectionType2)) {
9393
+ expandConnectionGroup(connectionType2, true);
9394
+ return;
9395
+ }
9396
+ emit("switchSelectedNode", nodeName);
9397
+ }
9398
+ function onPlusClick(connectionType2) {
9399
+ const connectionNodes = connectedNodes2.value[connectionType2];
9400
+ if (isMultiConnection(connectionType2) && !expandedGroups.value.includes(connectionType2) && connectionNodes.length >= 1) {
9401
+ expandConnectionGroup(connectionType2, true);
9402
+ return;
9403
+ }
9404
+ emit("openConnectionNodeCreator", props.rootNode.name, connectionType2);
9405
+ }
9406
+ function showNodeInputsIssues() {
9407
+ shouldShowNodeInputIssues.value = false;
9408
+ setTimeout(() => {
9409
+ shouldShowNodeInputIssues.value = true;
9410
+ }, 0);
9411
+ }
9412
+ watch(
9413
+ [nodeData, ndvStore.activeNode],
9414
+ debounce(
9415
+ () => setTimeout(() => {
9416
+ expandedGroups.value = [];
9417
+ possibleConnections.value = getPossibleSubInputConnections();
9418
+ }, 0),
9419
+ { debounceTime: 1e3 }
9420
+ ),
9421
+ { immediate: true }
9422
+ );
9423
+ __expose({
9424
+ showNodeInputsIssues
9425
+ });
9426
+ return (_ctx, _cache) => {
9427
+ const _component_n8n_icon_button = resolveComponent("n8n-icon-button");
9428
+ const _component_n8n_tooltip = resolveComponent("n8n-tooltip");
9429
+ return possibleConnections.value.length ? (openBlock(), createElementBlock("div", {
9430
+ key: 0,
9431
+ class: normalizeClass(_ctx.$style.container)
9432
+ }, [
9433
+ createBaseVNode("div", {
9434
+ class: normalizeClass(_ctx.$style.connections),
9435
+ style: normalizeStyle(`--possible-connections: ${possibleConnections.value.length}`)
9436
+ }, [
9437
+ (openBlock(true), createElementBlock(Fragment, null, renderList(possibleConnections.value, (connection) => {
9438
+ return openBlock(), createElementBlock("div", {
9439
+ key: connection.type,
9440
+ "data-test-id": `subnode-connection-group-${connection.type}`
9441
+ }, [
9442
+ createBaseVNode("div", {
9443
+ class: normalizeClass(_ctx.$style.connectionType)
9444
+ }, [
9445
+ createBaseVNode("span", {
9446
+ class: normalizeClass({
9447
+ [_ctx.$style.connectionLabel]: true,
9448
+ [_ctx.$style.hasIssues]: hasInputIssues(connection.type)
9449
+ }),
9450
+ textContent: toDisplayString(`${connection.displayName}${connection.required ? " *" : ""}`)
9451
+ }, null, 10, _hoisted_2$3),
9452
+ createVNode(unref(OnClickOutside), {
9453
+ onTrigger: ($event) => expandConnectionGroup(connection.type, false)
9454
+ }, {
9455
+ default: withCtx(() => [
9456
+ createBaseVNode("div", {
9457
+ ref_for: true,
9458
+ ref: "connectedNodesWrapper",
9459
+ class: normalizeClass({
9460
+ [_ctx.$style.connectedNodesWrapper]: true,
9461
+ [_ctx.$style.connectedNodesWrapperExpanded]: expandedGroups.value.includes(connection.type)
9462
+ }),
9463
+ style: normalizeStyle(`--nodes-length: ${connectedNodes2.value[connection.type].length}`),
9464
+ onClick: ($event) => expandConnectionGroup(connection.type, true)
9465
+ }, [
9466
+ (connectedNodes2.value[connection.type].length >= 1 ? connection.maxConnections !== 1 : true) ? (openBlock(), createElementBlock("div", {
9467
+ key: 0,
9468
+ class: normalizeClass({
9469
+ [_ctx.$style.plusButton]: true,
9470
+ [_ctx.$style.hasIssues]: hasInputIssues(connection.type)
9471
+ }),
9472
+ onClick: ($event) => onPlusClick(connection.type)
9473
+ }, [
9474
+ createVNode(_component_n8n_tooltip, {
9475
+ placement: "top",
9476
+ teleported: true,
9477
+ offset: 10,
9478
+ "show-after": 300,
9479
+ disabled: shouldShowConnectionTooltip(connection.type) && connectedNodes2.value[connection.type].length >= 1
9480
+ }, {
9481
+ content: withCtx(() => [
9482
+ createTextVNode(" Add " + toDisplayString(connection.displayName) + " ", 1),
9483
+ hasInputIssues(connection.type) ? (openBlock(), createBlock(TitledList, {
9484
+ key: 0,
9485
+ title: `${unref(i18n).baseText("node.issues")}:`,
9486
+ items: nodeInputIssues.value[connection.type]
9487
+ }, null, 8, ["title", "items"])) : createCommentVNode("", true)
9488
+ ]),
9489
+ default: withCtx(() => [
9490
+ createVNode(_component_n8n_icon_button, {
9491
+ size: "medium",
9492
+ icon: "plus",
9493
+ type: "tertiary",
9494
+ "data-test-id": `add-subnode-${connection.type}`
9495
+ }, null, 8, ["data-test-id"])
9496
+ ]),
9497
+ _: 2
9498
+ }, 1032, ["disabled"])
9499
+ ], 10, _hoisted_4$1)) : createCommentVNode("", true),
9500
+ connectedNodes2.value[connection.type].length > 0 ? (openBlock(), createElementBlock("div", {
9501
+ key: 1,
9502
+ class: normalizeClass({
9503
+ [_ctx.$style.connectedNodes]: true,
9504
+ [_ctx.$style.connectedNodesMultiple]: connectedNodes2.value[connection.type].length > 1
9505
+ })
9506
+ }, [
9507
+ (openBlock(true), createElementBlock(Fragment, null, renderList(connectedNodes2.value[connection.type], (node2, index) => {
9508
+ return openBlock(), createElementBlock("div", {
9509
+ key: node2.node.name,
9510
+ class: normalizeClass({ [_ctx.$style.nodeWrapper]: true, [_ctx.$style.hasIssues]: node2.issues }),
9511
+ "data-test-id": "floating-subnode",
9512
+ "data-node-name": node2.node.name,
9513
+ style: normalizeStyle(`--node-index: ${index}`)
9514
+ }, [
9515
+ (openBlock(), createBlock(_component_n8n_tooltip, {
9516
+ key: node2.node.name,
9517
+ placement: "top",
9518
+ teleported: true,
9519
+ offset: 10,
9520
+ "show-after": 300,
9521
+ disabled: shouldShowConnectionTooltip(connection.type)
9522
+ }, {
9523
+ content: withCtx(() => [
9524
+ createTextVNode(toDisplayString(node2.node.name) + " ", 1),
9525
+ node2.issues ? (openBlock(), createBlock(TitledList, {
9526
+ key: 0,
9527
+ title: `${unref(i18n).baseText("node.issues")}:`,
9528
+ items: node2.issues
9529
+ }, null, 8, ["title", "items"])) : createCommentVNode("", true)
9530
+ ]),
9531
+ default: withCtx(() => [
9532
+ createBaseVNode("div", {
9533
+ class: normalizeClass(_ctx.$style.connectedNode),
9534
+ onClick: ($event) => onNodeClick(node2.node.name, connection.type)
9535
+ }, [
9536
+ createVNode(_sfc_main$O, {
9537
+ "node-type": node2.nodeType,
9538
+ "node-name": node2.node.name,
9539
+ "tooltip-position": "top",
9540
+ size: 20,
9541
+ circle: ""
9542
+ }, null, 8, ["node-type", "node-name"])
9543
+ ], 10, _hoisted_6$1)
9544
+ ]),
9545
+ _: 2
9546
+ }, 1032, ["disabled"]))
9547
+ ], 14, _hoisted_5$1);
9548
+ }), 128))
9549
+ ], 2)) : createCommentVNode("", true)
9550
+ ], 14, _hoisted_3$2)
9551
+ ]),
9552
+ _: 2
9553
+ }, 1032, ["onTrigger"])
9554
+ ], 2)
9555
+ ], 8, _hoisted_1$7);
9556
+ }), 128))
9557
+ ], 6)
9558
+ ], 2)) : createCommentVNode("", true);
9559
+ };
9560
+ }
9561
+ });
9562
+ const container$2 = "_container_ac466_140";
9563
+ const connections = "_connections_ac466_148";
9564
+ const connectionType = "_connectionType_ac466_160";
9565
+ const connectionLabel = "_connectionLabel_ac466_167";
9566
+ const hasIssues = "_hasIssues_ac466_173";
9567
+ const connectedNodesWrapper = "_connectedNodesWrapper_ac466_177";
9568
+ const plusButton = "_plusButton_ac466_185";
9569
+ const connectedNodesWrapperExpanded = "_connectedNodesWrapperExpanded_ac466_203";
9570
+ const connectedNodesMultiple = "_connectedNodesMultiple_ac466_209";
9571
+ const connectedNode = "_connectedNode_ac466_177";
9572
+ const connectedNodes = "_connectedNodes_ac466_177";
9573
+ const nodeWrapper = "_nodeWrapper_ac466_247";
9574
+ const style0$k = {
9575
+ container: container$2,
9576
+ connections,
9577
+ connectionType,
9578
+ connectionLabel,
9579
+ hasIssues,
9580
+ connectedNodesWrapper,
9581
+ plusButton,
9582
+ "horizontal-shake": "_horizontal-shake_ac466_1",
9583
+ connectedNodesWrapperExpanded,
9584
+ connectedNodesMultiple,
9585
+ connectedNode,
9586
+ connectedNodes,
9587
+ nodeWrapper
9588
+ };
9589
+ const cssModules$k = {
9590
+ "$style": style0$k
9591
+ };
9592
+ const NDVSubConnections = /* @__PURE__ */ _export_sfc$1(_sfc_main$s, [["__cssModules", cssModules$k]]);
9593
+ function updateDynamicConnections(node2, workflowConnections, parameterData) {
9594
+ const connections2 = { ...workflowConnections };
9595
+ try {
9596
+ if (parameterData.name.includes("conditions") || !connections2[node2.name]?.main) return null;
9597
+ if (node2.type === SWITCH_NODE_TYPE && parameterData.name === "parameters.numberOutputs") {
9598
+ const curentNumberOutputs = node2.parameters?.numberOutputs;
9599
+ const newNumberOutputs = parameterData.value;
9600
+ if (newNumberOutputs < curentNumberOutputs) {
9601
+ connections2[node2.name].main = connections2[node2.name].main.slice(0, newNumberOutputs);
9602
+ return connections2;
9603
+ }
9604
+ }
9605
+ if (node2.type === SWITCH_NODE_TYPE && parameterData.name === "parameters.options.fallbackOutput") {
9606
+ const curentFallbackOutput = node2.parameters?.options?.fallbackOutput;
9607
+ if (curentFallbackOutput === "extra") {
9608
+ if (!parameterData.value || parameterData.value !== "extra") {
9609
+ connections2[node2.name].main = connections2[node2.name].main.slice(0, -1);
9610
+ return connections2;
9611
+ }
9612
+ }
9613
+ }
9614
+ if (node2.type === SWITCH_NODE_TYPE && parameterData.name.includes("parameters.rules.values")) {
9615
+ const { fallbackOutput } = node2.parameters?.options;
9616
+ if (parameterData.value === void 0) {
9617
+ let extractIndex = function(path) {
9618
+ const match = path.match(/parameters\.rules\.values\[(\d+)\]$/);
9619
+ return match ? parseInt(match[1], 10) : null;
9620
+ };
9621
+ const index = extractIndex(parameterData.name);
9622
+ if (index !== null) {
9623
+ connections2[node2.name].main.splice(index, 1);
9624
+ return connections2;
9625
+ }
9626
+ if (parameterData.name === "parameters.rules.values") {
9627
+ if (fallbackOutput === "extra") {
9628
+ connections2[node2.name].main = [
9629
+ connections2[node2.name].main[connections2[node2.name].main.length - 1]
9630
+ ];
9631
+ } else {
9632
+ connections2[node2.name].main = [];
9633
+ }
9634
+ return connections2;
9635
+ }
9636
+ } else if (parameterData.name === "parameters.rules.values") {
9637
+ const curentRulesvalues = node2.parameters?.rules?.values;
9638
+ let lastConnection = void 0;
9639
+ if (fallbackOutput === "extra" && connections2[node2.name].main.length === curentRulesvalues.length + 1) {
9640
+ lastConnection = connections2[node2.name].main.pop();
9641
+ }
9642
+ const currentRulesLength = node2.parameters?.rules?.values?.length;
9643
+ const newRulesLength = parameterData.value?.length;
9644
+ if (newRulesLength - currentRulesLength === 1) {
9645
+ connections2[node2.name].main = [...connections2[node2.name].main, []];
9646
+ if (lastConnection) {
9647
+ connections2[node2.name].main.push(lastConnection);
9648
+ }
9649
+ return connections2;
9650
+ } else {
9651
+ const newRulesvalues = parameterData.value;
9652
+ const updatedConnectionsIndex = [];
9653
+ for (const newRule of newRulesvalues) {
9654
+ const index = curentRulesvalues.findIndex((rule) => isEqual(rule, newRule));
9655
+ if (index !== -1) {
9656
+ updatedConnectionsIndex.push(index);
9657
+ }
9658
+ }
9659
+ const reorderedConnections = [];
9660
+ for (const index of updatedConnectionsIndex) {
9661
+ reorderedConnections.push(connections2[node2.name].main[index] ?? []);
9662
+ }
9663
+ if (lastConnection) {
9664
+ reorderedConnections.push(lastConnection);
9665
+ }
9666
+ connections2[node2.name].main = reorderedConnections;
9667
+ return connections2;
9668
+ }
9669
+ }
9670
+ }
9671
+ } catch (error2) {
9672
+ captureException(error2);
9673
+ }
9674
+ return null;
9675
+ }
9676
+ const _hoisted_1$6 = { class: "mt-xs" };
9677
+ const LANGCHAIN_NODES_PREFIX = "@n8n/n8n-nodes-langchain.";
9678
+ const N8N_NODES_PREFIX = "@n8n/n8n-nodes.";
9679
+ const _sfc_main$r = /* @__PURE__ */ defineComponent({
9680
+ __name: "FreeAiCreditsCallout",
9681
+ setup(__props) {
9682
+ const NODES_WITH_OPEN_AI_API_CREDENTIAL = [
9683
+ `${LANGCHAIN_NODES_PREFIX}openAi`,
9684
+ `${LANGCHAIN_NODES_PREFIX}embeddingsOpenAi`,
9685
+ `${LANGCHAIN_NODES_PREFIX}lmChatOpenAi`,
9686
+ `${N8N_NODES_PREFIX}openAi`
9687
+ ];
9688
+ const showSuccessCallout = ref(false);
9689
+ const claimingCredits = ref(false);
9690
+ const settingsStore = useSettingsStore();
9691
+ const posthogStore = usePostHog();
9692
+ const credentialsStore = useCredentialsStore();
9693
+ const usersStore = useUsersStore();
9694
+ const ndvStore = useNDVStore();
9695
+ const projectsStore = useProjectsStore();
9696
+ const telemetry = useTelemetry();
9697
+ const i18n = useI18n();
9698
+ const toast = useToast();
9699
+ const userHasOpenAiCredentialAlready = computed(
9700
+ () => !!credentialsStore.allCredentials.filter(
9701
+ (credential) => credential.type === OPEN_AI_API_CREDENTIAL_TYPE
9702
+ ).length
9703
+ );
9704
+ const userHasClaimedAiCreditsAlready = computed(
9705
+ () => !!usersStore.currentUser?.settings?.userClaimedAiCredits
9706
+ );
9707
+ const activeNodeHasOpenAiApiCredential = computed(
9708
+ () => ndvStore.activeNode?.type && NODES_WITH_OPEN_AI_API_CREDENTIAL.includes(ndvStore.activeNode.type)
9709
+ );
9710
+ const userCanClaimOpenAiCredits = computed(() => {
9711
+ return settingsStore.isAiCreditsEnabled && activeNodeHasOpenAiApiCredential.value && posthogStore.getVariant(AI_CREDITS_EXPERIMENT.name) === AI_CREDITS_EXPERIMENT.variant && !userHasOpenAiCredentialAlready.value && !userHasClaimedAiCreditsAlready.value;
9712
+ });
9713
+ const onClaimCreditsClicked = async () => {
9714
+ claimingCredits.value = true;
9715
+ try {
9716
+ await credentialsStore.claimFreeAiCredits(projectsStore.currentProject?.id);
9717
+ if (usersStore?.currentUser?.settings) {
9718
+ usersStore.currentUser.settings.userClaimedAiCredits = true;
9719
+ }
9720
+ telemetry.track("User claimed OpenAI credits");
9721
+ showSuccessCallout.value = true;
9722
+ } catch (e) {
9723
+ toast.showError(
9724
+ e,
9725
+ i18n.baseText("freeAi.credits.showError.claim.title"),
9726
+ i18n.baseText("freeAi.credits.showError.claim.message")
9727
+ );
9728
+ } finally {
9729
+ claimingCredits.value = false;
9730
+ }
9731
+ };
9732
+ return (_ctx, _cache) => {
9733
+ const _component_n8n_button = resolveComponent("n8n-button");
9734
+ const _component_n8n_callout = resolveComponent("n8n-callout");
9735
+ const _component_n8n_text = resolveComponent("n8n-text");
9736
+ return openBlock(), createElementBlock("div", _hoisted_1$6, [
9737
+ userCanClaimOpenAiCredits.value && !showSuccessCallout.value ? (openBlock(), createBlock(_component_n8n_callout, {
9738
+ key: 0,
9739
+ theme: "secondary",
9740
+ icon: "exclamation-circle"
9741
+ }, {
9742
+ trailingContent: withCtx(() => [
9743
+ createVNode(_component_n8n_button, {
9744
+ type: "tertiary",
9745
+ size: "small",
9746
+ label: unref(i18n).baseText("freeAi.credits.callout.claim.button.label"),
9747
+ loading: claimingCredits.value,
9748
+ onClick: onClaimCreditsClicked
9749
+ }, null, 8, ["label", "loading"])
9750
+ ]),
9751
+ default: withCtx(() => [
9752
+ createTextVNode(toDisplayString(unref(i18n).baseText("freeAi.credits.callout.claim.title", {
9753
+ interpolate: { credits: unref(settingsStore).aiCreditsQuota }
9754
+ })) + " ", 1)
9755
+ ]),
9756
+ _: 1
9757
+ })) : showSuccessCallout.value ? (openBlock(), createBlock(_component_n8n_callout, {
9758
+ key: 1,
9759
+ theme: "success",
9760
+ icon: "check-circle"
9761
+ }, {
9762
+ default: withCtx(() => [
9763
+ createVNode(_component_n8n_text, { size: "small" }, {
9764
+ default: withCtx(() => [
9765
+ createTextVNode(toDisplayString(unref(i18n).baseText("freeAi.credits.callout.success.title.part1", {
9766
+ interpolate: { credits: unref(settingsStore).aiCreditsQuota }
9767
+ })), 1)
9768
+ ]),
9769
+ _: 1
9770
+ }),
9771
+ _cache[0] || (_cache[0] = createTextVNode("  ")),
9772
+ createVNode(_component_n8n_text, {
9773
+ size: "small",
9774
+ bold: "true"
9775
+ }, {
9776
+ default: withCtx(() => [
9777
+ createTextVNode(toDisplayString(unref(i18n).baseText("freeAi.credits.callout.success.title.part2")), 1)
9778
+ ]),
9779
+ _: 1
9780
+ })
9781
+ ]),
9782
+ _: 1
9783
+ })) : createCommentVNode("", true)
9784
+ ]);
9785
+ };
9786
+ }
9787
+ });
9788
+ const _hoisted_1$5 = { class: "header-side-menu" };
9789
+ const _hoisted_2$2 = { key: 1 };
9790
+ const _hoisted_3$1 = {
9791
+ key: 0,
9792
+ class: "node-is-not-valid"
9793
+ };
9794
+ const _hoisted_4 = { class: "missingNodeTitleContainer mt-s mb-xs" };
9795
+ const _hoisted_5 = { class: "mb-l" };
9796
+ const _hoisted_6 = ["href"];
9797
+ const _hoisted_7 = ["href", "textContent"];
9798
+ const _hoisted_8 = {
9799
+ key: 1,
9800
+ class: "node-parameters-wrapper",
9801
+ "data-test-id": "node-parameters"
9802
+ };
9803
+ const _hoisted_9 = {
9804
+ key: 1,
9805
+ class: "no-parameters"
9806
+ };
9807
+ const _hoisted_10 = {
9808
+ key: 2,
9809
+ class: "parameter-item parameter-notice",
9810
+ "data-test-id": "node-parameters-http-notice"
9811
+ };
9812
+ const _hoisted_11 = {
9813
+ class: "node-version",
9814
+ "data-test-id": "node-version"
9815
+ };
9816
+ const _sfc_main$q = /* @__PURE__ */ defineComponent({
9817
+ __name: "NodeSettings",
9818
+ props: {
9819
+ eventBus: {},
9820
+ dragging: { type: Boolean },
9821
+ pushRef: {},
9822
+ nodeType: {},
9823
+ readOnly: { type: Boolean, default: false },
9824
+ foreignCredentials: { default: () => [] },
9825
+ blockUI: { type: Boolean, default: false },
9826
+ executable: { type: Boolean, default: true },
9827
+ inputSize: { default: 0 },
9828
+ activeNode: {}
9829
+ },
9830
+ emits: ["stopExecution", "redrawRequired", "valueChanged", "switchSelectedNode", "openConnectionNodeCreator", "activate", "execute"],
9831
+ setup(__props, { emit: __emit }) {
9832
+ const props = __props;
9833
+ const emit = __emit;
9834
+ const nodeTypesStore = useNodeTypesStore();
9835
+ const ndvStore = useNDVStore();
9836
+ const workflowsStore = useWorkflowsStore();
9837
+ const credentialsStore = useCredentialsStore();
9838
+ const historyStore = useHistoryStore();
9839
+ const telemetry = useTelemetry();
9840
+ const nodeHelpers = useNodeHelpers();
9841
+ const externalHooks = useExternalHooks();
9842
+ const i18n = useI18n();
9843
+ const nodeValid = ref(true);
9844
+ const openPanel = ref("params");
9845
+ const nodeValues = ref({
9846
+ color: "#ff0000",
9847
+ alwaysOutputData: false,
9848
+ executeOnce: false,
9849
+ notesInFlow: false,
9850
+ onError: "stopWorkflow",
9851
+ retryOnFail: false,
9852
+ maxTries: 3,
9853
+ waitBetweenTries: 1e3,
9854
+ notes: "",
9855
+ parameters: {}
9856
+ });
9857
+ const nodeValuesInitialized = ref(false);
9858
+ const hiddenIssuesInputs = ref([]);
9859
+ const nodeSettings = ref([]);
9860
+ const subConnections = ref(null);
9861
+ const currentWorkflowInstance = computed(() => workflowsStore.getCurrentWorkflow());
9862
+ const currentWorkflow = computed(
9863
+ () => workflowsStore.getWorkflowById(currentWorkflowInstance.value.id)
9864
+ );
9865
+ const hasForeignCredential = computed(() => props.foreignCredentials.length > 0);
9866
+ const isHomeProjectTeam = computed(
9867
+ () => currentWorkflow.value?.homeProject?.type === ProjectTypes.Team
9868
+ );
9869
+ const isReadOnly = computed(
9870
+ () => props.readOnly || hasForeignCredential.value && !isHomeProjectTeam.value
9871
+ );
9872
+ const node2 = computed(() => props.activeNode ?? ndvStore.activeNode);
9873
+ const isTriggerNode = computed(() => !!node2.value && nodeTypesStore.isTriggerNode(node2.value.type));
9874
+ const isToolNode = computed(() => !!node2.value && nodeTypesStore.isToolNode(node2.value.type));
9875
+ const isExecutable2 = computed(() => {
9876
+ if (props.nodeType && node2.value) {
9877
+ const workflowNode = currentWorkflowInstance.value.getNode(node2.value.name);
9878
+ const inputs2 = getNodeInputs(
9879
+ currentWorkflowInstance.value,
9880
+ workflowNode,
9881
+ props.nodeType
9882
+ );
9883
+ const inputNames = getConnectionTypes(inputs2);
9884
+ if (!inputNames.includes(NodeConnectionTypes.Main) && !isToolNode.value && !isTriggerNode.value) {
9885
+ return false;
9886
+ }
9887
+ }
9888
+ return props.executable || props.foreignCredentials.length > 0;
9889
+ });
9890
+ const nodeTypeVersions = computed(() => {
9891
+ if (!node2.value) return [];
9892
+ return nodeTypesStore.getNodeVersions(node2.value.type);
9893
+ });
9894
+ const latestVersion = computed(() => Math.max(...nodeTypeVersions.value));
9895
+ const isLatestNodeVersion = computed(
9896
+ () => !node2.value?.typeVersion || latestVersion.value === node2.value.typeVersion
9897
+ );
9898
+ const executeButtonTooltip = computed(() => {
9899
+ if (node2.value && isLatestNodeVersion.value && props.inputSize > 1 && !nodeHelpers.isSingleExecution(node2.value.type, node2.value.parameters)) {
9900
+ return i18n.baseText("nodeSettings.executeButtonTooltip.times", {
9901
+ interpolate: { inputSize: props.inputSize }
9902
+ });
9903
+ }
9904
+ return "";
9905
+ });
9906
+ const nodeVersionTag = computed(() => {
9907
+ if (!props.nodeType || props.nodeType.hidden) {
9908
+ return i18n.baseText("nodeSettings.deprecated");
9909
+ }
9910
+ if (isLatestNodeVersion.value) {
9911
+ return i18n.baseText("nodeSettings.latest");
9912
+ }
9913
+ return i18n.baseText("nodeSettings.latestVersion", {
9914
+ interpolate: { version: latestVersion.value.toString() }
9915
+ });
9916
+ });
9917
+ const parameters = computed(() => {
9918
+ if (props.nodeType === null) {
9919
+ return [];
9920
+ }
9921
+ return props.nodeType?.properties ?? [];
9922
+ });
9923
+ const parametersSetting = computed(() => parameters.value.filter((item) => item.isNodeSetting));
9924
+ const parametersNoneSetting = computed(
9925
+ () => (
9926
+ // The connection hint notice is visually hidden via CSS in NodeDetails.vue when the node has output connections
9927
+ parameters.value.filter((item) => !item.isNodeSetting)
9928
+ )
9929
+ );
9930
+ const isDisplayingCredentials = computed(
9931
+ () => credentialsStore.getCredentialTypesNodeDescriptions("", props.nodeType).filter((credentialTypeDescription) => displayCredentials(credentialTypeDescription)).length > 0
9932
+ );
9933
+ const showNoParametersNotice = computed(
9934
+ () => !isDisplayingCredentials.value && parametersNoneSetting.value.filter((item) => item.type !== "notice").length === 0
9935
+ );
9936
+ const outputPanelEditMode = computed(() => ndvStore.outputPanelEditMode);
9937
+ const isCommunityNode = computed(() => !!node2.value && isCommunityPackageName(node2.value.type));
9938
+ const usedCredentials = computed(
9939
+ () => Object.values(workflowsStore.usedCredentials).filter(
9940
+ (credential) => Object.values(node2.value?.credentials || []).find(
9941
+ (nodeCredential) => nodeCredential.id === credential.id
9942
+ )
9943
+ )
9944
+ );
9945
+ const credentialOwnerName = computed(() => {
9946
+ const credential = usedCredentials.value ? Object.values(usedCredentials.value).find(
9947
+ (credential2) => credential2.id === props.foreignCredentials[0]
9948
+ ) : void 0;
9949
+ return credentialsStore.getCredentialOwnerName(credential);
9950
+ });
9951
+ const setValue = (name, value) => {
9952
+ const nameParts = name.split(".");
9953
+ let lastNamePart = nameParts.pop();
9954
+ let isArray = false;
9955
+ if (lastNamePart !== void 0 && lastNamePart.includes("[")) {
9956
+ const lastNameParts = lastNamePart.match(/(.*)\[(\d+)\]$/);
9957
+ if (lastNameParts) {
9958
+ nameParts.push(lastNameParts[1]);
9959
+ lastNamePart = lastNameParts[2];
9960
+ isArray = true;
9961
+ }
9962
+ }
9963
+ if (nameParts.length === 0) {
9964
+ if (value === null) {
9965
+ if (lastNamePart) {
9966
+ const { [lastNamePart]: removedNodeValue, ...remainingNodeValues } = nodeValues.value;
9967
+ nodeValues.value = remainingNodeValues;
9968
+ }
9969
+ } else {
9970
+ nodeValues.value = {
9971
+ ...nodeValues.value,
9972
+ [lastNamePart]: value
9973
+ };
9974
+ }
9975
+ } else {
9976
+ if (value === null) {
9977
+ let tempValue = get$3(nodeValues.value, nameParts.join("."));
9978
+ if (lastNamePart && !Array.isArray(tempValue)) {
9979
+ const { [lastNamePart]: removedNodeValue, ...remainingNodeValues } = tempValue;
9980
+ tempValue = remainingNodeValues;
9981
+ }
9982
+ if (isArray && Array.isArray(tempValue) && tempValue.length === 0) {
9983
+ lastNamePart = nameParts.pop();
9984
+ tempValue = get$3(nodeValues.value, nameParts.join("."));
9985
+ if (lastNamePart) {
9986
+ const { [lastNamePart]: removedArrayNodeValue, ...remainingArrayNodeValues } = tempValue;
9987
+ tempValue = remainingArrayNodeValues;
9988
+ }
9989
+ }
9990
+ } else {
9991
+ if (typeof value === "object") {
9992
+ set$3(
9993
+ get$3(nodeValues.value, nameParts.join(".")),
9994
+ lastNamePart,
9995
+ deepCopy(value)
9996
+ );
9997
+ } else {
9998
+ set$3(
9999
+ get$3(nodeValues.value, nameParts.join(".")),
10000
+ lastNamePart,
10001
+ value
10002
+ );
10003
+ }
10004
+ }
10005
+ }
10006
+ nodeValues.value = { ...nodeValues.value };
10007
+ };
10008
+ const removeMismatchedOptionValues = (nodeType, nodeParameterValues, updatedParameter) => {
10009
+ nodeType.properties.forEach((prop) => {
10010
+ const displayOptions = prop.displayOptions;
10011
+ if (!nodeParameterValues?.hasOwnProperty(prop.name) || !displayOptions || !prop.options) {
10012
+ return;
10013
+ }
10014
+ const showCondition = displayOptions.show?.[updatedParameter.name];
10015
+ const hideCondition = displayOptions.hide?.[updatedParameter.name];
10016
+ if (showCondition === void 0 && hideCondition === void 0) {
10017
+ return;
10018
+ }
10019
+ let hasValidOptions = true;
10020
+ if (isINodePropertyCollectionList(prop.options) || isINodePropertiesList(prop.options)) {
10021
+ hasValidOptions = Object.keys(nodeParameterValues).every(
10022
+ (key) => (prop.options ?? []).find((option2) => option2.name === key) !== void 0
10023
+ );
10024
+ } else if (isINodePropertyOptionsList(prop.options)) {
10025
+ hasValidOptions = !!prop.options.find(
10026
+ (option2) => option2.value === nodeParameterValues[prop.name]
10027
+ );
10028
+ }
10029
+ if (!hasValidOptions && displayParameter(nodeParameterValues, prop, node2.value, nodeType)) {
10030
+ unset(nodeParameterValues, prop.name);
10031
+ }
10032
+ });
10033
+ };
10034
+ const valueChanged = (parameterData) => {
10035
+ let newValue;
10036
+ if (parameterData.hasOwnProperty("value")) {
10037
+ newValue = parameterData.value;
10038
+ } else {
10039
+ newValue = get$3(nodeValues.value, parameterData.name);
10040
+ }
10041
+ const nodeNameBefore = parameterData.node || node2.value?.name;
10042
+ if (!nodeNameBefore) {
10043
+ return;
10044
+ }
10045
+ const _node = workflowsStore.getNodeByName(nodeNameBefore);
10046
+ if (_node === null) {
10047
+ return;
10048
+ }
10049
+ if (parameterData.name === "onError") {
10050
+ emit("redrawRequired");
10051
+ }
10052
+ if (parameterData.name === "name") {
10053
+ const sendData = {
10054
+ value: newValue,
10055
+ oldValue: nodeNameBefore,
10056
+ name: parameterData.name
10057
+ };
10058
+ emit("valueChanged", sendData);
10059
+ } else if (parameterData.name === "parameters") {
10060
+ const nodeType = nodeTypesStore.getNodeType(_node.type, _node.typeVersion);
10061
+ if (!nodeType) {
10062
+ return;
10063
+ }
10064
+ let nodeParameters = getNodeParameters(
10065
+ nodeType.properties,
10066
+ _node.parameters,
10067
+ false,
10068
+ false,
10069
+ _node,
10070
+ nodeType
10071
+ );
10072
+ const oldNodeParameters = Object.assign({}, nodeParameters);
10073
+ nodeParameters = deepCopy(nodeParameters);
10074
+ if (parameterData.value && typeof parameterData.value === "object") {
10075
+ for (const parameterName of Object.keys(parameterData.value)) {
10076
+ newValue = parameterData.value[parameterName];
10077
+ const parameterPath = parameterName.split(".").slice(1).join(".");
10078
+ const parameterPathArray = parameterPath.match(/(.*)\[(\d+)\]$/);
10079
+ if (parameterData[parameterName] === void 0 && parameterPathArray !== null) {
10080
+ const path = parameterPathArray[1];
10081
+ const index = parameterPathArray[2];
10082
+ const data = get$3(nodeParameters, path);
10083
+ if (Array.isArray(data)) {
10084
+ data.splice(parseInt(index, 10), 1);
10085
+ set$3(nodeParameters, path, data);
10086
+ }
10087
+ } else {
10088
+ if (newValue === void 0) {
10089
+ unset(nodeParameters, parameterPath);
10090
+ } else {
10091
+ set$3(nodeParameters, parameterPath, newValue);
10092
+ }
10093
+ }
10094
+ void externalHooks.run("nodeSettings.valueChanged", {
10095
+ parameterPath,
10096
+ newValue,
10097
+ parameters: parameters.value,
10098
+ oldNodeParameters
10099
+ });
10100
+ }
10101
+ }
10102
+ nodeParameters = getNodeParameters(
10103
+ nodeType.properties,
10104
+ nodeParameters,
10105
+ true,
10106
+ false,
10107
+ _node,
10108
+ nodeType
10109
+ );
10110
+ for (const key of Object.keys(nodeParameters)) {
10111
+ if (nodeParameters && nodeParameters[key] !== null && nodeParameters[key] !== void 0) {
10112
+ setValue(`parameters.${key}`, nodeParameters[key]);
10113
+ }
10114
+ }
10115
+ if (nodeParameters) {
10116
+ const updateInformation = {
10117
+ name: _node.name,
10118
+ value: nodeParameters
10119
+ };
10120
+ workflowsStore.setNodeParameters(updateInformation);
10121
+ nodeHelpers.updateNodeParameterIssuesByName(_node.name);
10122
+ nodeHelpers.updateNodeCredentialIssuesByName(_node.name);
10123
+ }
10124
+ } else if (parameterData.name.startsWith("parameters.")) {
10125
+ const nodeType = nodeTypesStore.getNodeType(_node.type, _node.typeVersion);
10126
+ if (!nodeType) {
10127
+ return;
10128
+ }
10129
+ let nodeParameters = getNodeParameters(
10130
+ nodeType.properties,
10131
+ _node.parameters,
10132
+ false,
10133
+ false,
10134
+ _node,
10135
+ nodeType
10136
+ );
10137
+ const oldNodeParameters = Object.assign({}, nodeParameters);
10138
+ nodeParameters = deepCopy(nodeParameters);
10139
+ const parameterPath = parameterData.name.split(".").slice(1).join(".");
10140
+ const parameterPathArray = parameterPath.match(/(.*)\[(\d+)\]$/);
10141
+ if (parameterData.value === void 0 && parameterPathArray !== null) {
10142
+ const path = parameterPathArray[1];
10143
+ const index = parameterPathArray[2];
10144
+ const data = get$3(nodeParameters, path);
10145
+ if (Array.isArray(data)) {
10146
+ data.splice(parseInt(index, 10), 1);
10147
+ set$3(nodeParameters, path, data);
10148
+ }
10149
+ } else {
10150
+ if (newValue === void 0) {
10151
+ unset(nodeParameters, parameterPath);
10152
+ } else {
10153
+ set$3(nodeParameters, parameterPath, newValue);
10154
+ }
10155
+ removeMismatchedOptionValues(nodeType, nodeParameters, {
10156
+ name: parameterPath
10157
+ });
10158
+ }
10159
+ nodeParameters = getNodeParameters(
10160
+ nodeType.properties,
10161
+ nodeParameters,
10162
+ true,
10163
+ false,
10164
+ _node,
10165
+ nodeType
10166
+ );
10167
+ if (isToolNode.value) {
10168
+ const updatedDescription = getUpdatedToolDescription(
10169
+ props.nodeType,
10170
+ nodeParameters,
10171
+ node2.value?.parameters
10172
+ );
10173
+ if (updatedDescription && nodeParameters) {
10174
+ nodeParameters.toolDescription = updatedDescription;
10175
+ }
10176
+ }
10177
+ for (const key of Object.keys(nodeParameters)) {
10178
+ if (nodeParameters && nodeParameters[key] !== null && nodeParameters[key] !== void 0) {
10179
+ setValue(`parameters.${key}`, nodeParameters[key]);
10180
+ }
10181
+ }
10182
+ const updateInformation = {
10183
+ name: _node.name,
10184
+ value: nodeParameters
10185
+ };
10186
+ const connections2 = workflowsStore.allConnections;
10187
+ const updatedConnections = updateDynamicConnections(_node, connections2, parameterData);
10188
+ if (updatedConnections) {
10189
+ workflowsStore.setConnections(updatedConnections, true);
10190
+ }
10191
+ workflowsStore.setNodeParameters(updateInformation);
10192
+ void externalHooks.run("nodeSettings.valueChanged", {
10193
+ parameterPath,
10194
+ newValue,
10195
+ parameters: parameters.value,
10196
+ oldNodeParameters
10197
+ });
10198
+ nodeHelpers.updateNodeParameterIssuesByName(_node.name);
10199
+ nodeHelpers.updateNodeCredentialIssuesByName(_node.name);
10200
+ telemetry.trackNodeParametersValuesChange(nodeType.name, parameterData);
10201
+ } else {
10202
+ nodeValues.value = {
10203
+ ...nodeValues.value,
10204
+ [parameterData.name]: newValue
10205
+ };
10206
+ const updateInformation = {
10207
+ name: _node.name,
10208
+ key: parameterData.name,
10209
+ value: newValue
10210
+ };
10211
+ workflowsStore.setNodeValue(updateInformation);
10212
+ }
10213
+ };
10214
+ const setHttpNodeParameters = (parameters2) => {
10215
+ try {
10216
+ valueChanged({
10217
+ node: node2.value?.name,
10218
+ name: "parameters",
10219
+ value: parameters2
10220
+ });
10221
+ } catch {
10222
+ }
10223
+ };
10224
+ const onSwitchSelectedNode = (node22) => {
10225
+ emit("switchSelectedNode", node22);
10226
+ };
10227
+ const onOpenConnectionNodeCreator = (nodeName, connectionType2) => {
10228
+ emit("openConnectionNodeCreator", nodeName, connectionType2);
10229
+ };
10230
+ const populateHiddenIssuesSet = () => {
10231
+ if (!node2.value || !workflowsStore.isNodePristine(node2.value.name)) return;
10232
+ hiddenIssuesInputs.value.push("credentials");
10233
+ parametersNoneSetting.value.forEach((parameter) => {
10234
+ hiddenIssuesInputs.value.push(parameter.name);
10235
+ });
10236
+ workflowsStore.setNodePristine(node2.value.name, false);
10237
+ };
10238
+ const populateSettings = () => {
10239
+ if (isExecutable2.value && !isTriggerNode.value) {
10240
+ nodeSettings.value.push(
10241
+ ...[
10242
+ {
10243
+ displayName: i18n.baseText("nodeSettings.alwaysOutputData.displayName"),
10244
+ name: "alwaysOutputData",
10245
+ type: "boolean",
10246
+ default: false,
10247
+ noDataExpression: true,
10248
+ description: i18n.baseText("nodeSettings.alwaysOutputData.description")
10249
+ },
10250
+ {
10251
+ displayName: i18n.baseText("nodeSettings.executeOnce.displayName"),
10252
+ name: "executeOnce",
10253
+ type: "boolean",
10254
+ default: false,
10255
+ noDataExpression: true,
10256
+ description: i18n.baseText("nodeSettings.executeOnce.description")
10257
+ },
10258
+ {
10259
+ displayName: i18n.baseText("nodeSettings.retryOnFail.displayName"),
10260
+ name: "retryOnFail",
10261
+ type: "boolean",
10262
+ default: false,
10263
+ noDataExpression: true,
10264
+ description: i18n.baseText("nodeSettings.retryOnFail.description")
10265
+ },
10266
+ {
10267
+ displayName: i18n.baseText("nodeSettings.maxTries.displayName"),
10268
+ name: "maxTries",
10269
+ type: "number",
10270
+ typeOptions: {
10271
+ minValue: 2,
10272
+ maxValue: 5
10273
+ },
10274
+ default: 3,
10275
+ displayOptions: {
10276
+ show: {
10277
+ retryOnFail: [true]
10278
+ }
10279
+ },
10280
+ noDataExpression: true,
10281
+ description: i18n.baseText("nodeSettings.maxTries.description")
10282
+ },
10283
+ {
10284
+ displayName: i18n.baseText("nodeSettings.waitBetweenTries.displayName"),
10285
+ name: "waitBetweenTries",
10286
+ type: "number",
10287
+ typeOptions: {
10288
+ minValue: 0,
10289
+ maxValue: 5e3
10290
+ },
10291
+ default: 1e3,
10292
+ displayOptions: {
10293
+ show: {
10294
+ retryOnFail: [true]
10295
+ }
10296
+ },
10297
+ noDataExpression: true,
10298
+ description: i18n.baseText("nodeSettings.waitBetweenTries.description")
10299
+ },
10300
+ {
10301
+ displayName: i18n.baseText("nodeSettings.onError.displayName"),
10302
+ name: "onError",
10303
+ type: "options",
10304
+ options: [
10305
+ {
10306
+ name: i18n.baseText("nodeSettings.onError.options.stopWorkflow.displayName"),
10307
+ value: "stopWorkflow",
10308
+ description: i18n.baseText("nodeSettings.onError.options.stopWorkflow.description")
10309
+ },
10310
+ {
10311
+ name: i18n.baseText("nodeSettings.onError.options.continueRegularOutput.displayName"),
10312
+ value: "continueRegularOutput",
10313
+ description: i18n.baseText(
10314
+ "nodeSettings.onError.options.continueRegularOutput.description"
10315
+ )
10316
+ },
10317
+ {
10318
+ name: i18n.baseText("nodeSettings.onError.options.continueErrorOutput.displayName"),
10319
+ value: "continueErrorOutput",
10320
+ description: i18n.baseText(
10321
+ "nodeSettings.onError.options.continueErrorOutput.description"
10322
+ )
10323
+ }
10324
+ ],
10325
+ default: "stopWorkflow",
10326
+ description: i18n.baseText("nodeSettings.onError.description"),
10327
+ noDataExpression: true
10328
+ }
10329
+ ]
10330
+ );
10331
+ }
10332
+ nodeSettings.value.push(
10333
+ ...[
10334
+ {
10335
+ displayName: i18n.baseText("nodeSettings.notes.displayName"),
10336
+ name: "notes",
10337
+ type: "string",
10338
+ typeOptions: {
10339
+ rows: 5
10340
+ },
10341
+ default: "",
10342
+ noDataExpression: true,
10343
+ description: i18n.baseText("nodeSettings.notes.description")
10344
+ },
10345
+ {
10346
+ displayName: i18n.baseText("nodeSettings.notesInFlow.displayName"),
10347
+ name: "notesInFlow",
10348
+ type: "boolean",
10349
+ default: false,
10350
+ noDataExpression: true,
10351
+ description: i18n.baseText("nodeSettings.notesInFlow.description")
10352
+ }
10353
+ ]
10354
+ );
10355
+ };
10356
+ const onParameterBlur = (parameterName) => {
10357
+ hiddenIssuesInputs.value = hiddenIssuesInputs.value.filter((name) => name !== parameterName);
10358
+ };
10359
+ const onWorkflowActivate = () => {
10360
+ hiddenIssuesInputs.value = [];
10361
+ emit("activate");
10362
+ };
10363
+ const onNodeExecute = () => {
10364
+ hiddenIssuesInputs.value = [];
10365
+ subConnections.value?.showNodeInputsIssues();
10366
+ emit("execute");
10367
+ };
10368
+ const credentialSelected = (updateInformation) => {
10369
+ workflowsStore.updateNodeProperties(updateInformation);
10370
+ const node22 = workflowsStore.getNodeByName(updateInformation.name);
10371
+ if (node22) {
10372
+ nodeHelpers.updateNodeCredentialIssues(node22);
10373
+ }
10374
+ void externalHooks.run("nodeSettings.credentialSelected", { updateInformation });
10375
+ };
10376
+ const nameChanged = (name) => {
10377
+ if (node2.value) {
10378
+ historyStore.pushCommandToUndo(new RenameNodeCommand(node2.value.name, name, Date.now()));
10379
+ }
10380
+ valueChanged({
10381
+ value: name,
10382
+ name: "name"
10383
+ });
10384
+ };
10385
+ const setNodeValues = () => {
10386
+ if (!node2.value) {
10387
+ nodeValuesInitialized.value = true;
10388
+ return;
10389
+ }
10390
+ if (props.nodeType !== null) {
10391
+ nodeValid.value = true;
10392
+ const foundNodeSettings = [];
10393
+ if (node2.value.color) {
10394
+ foundNodeSettings.push("color");
10395
+ nodeValues.value = {
10396
+ ...nodeValues.value,
10397
+ color: node2.value.color
10398
+ };
10399
+ }
10400
+ if (node2.value.notes) {
10401
+ foundNodeSettings.push("notes");
10402
+ nodeValues.value = {
10403
+ ...nodeValues.value,
10404
+ notes: node2.value.notes
10405
+ };
10406
+ }
10407
+ if (node2.value.alwaysOutputData) {
10408
+ foundNodeSettings.push("alwaysOutputData");
10409
+ nodeValues.value = {
10410
+ ...nodeValues.value,
10411
+ alwaysOutputData: node2.value.alwaysOutputData
10412
+ };
10413
+ }
10414
+ if (node2.value.executeOnce) {
10415
+ foundNodeSettings.push("executeOnce");
10416
+ nodeValues.value = {
10417
+ ...nodeValues.value,
10418
+ executeOnce: node2.value.executeOnce
10419
+ };
10420
+ }
10421
+ if (node2.value.continueOnFail) {
10422
+ foundNodeSettings.push("onError");
10423
+ nodeValues.value = {
10424
+ ...nodeValues.value,
10425
+ onError: "continueRegularOutput"
10426
+ };
10427
+ }
10428
+ if (node2.value.onError) {
10429
+ foundNodeSettings.push("onError");
10430
+ nodeValues.value = {
10431
+ ...nodeValues.value,
10432
+ onError: node2.value.onError
10433
+ };
10434
+ }
10435
+ if (node2.value.notesInFlow) {
10436
+ foundNodeSettings.push("notesInFlow");
10437
+ nodeValues.value = {
10438
+ ...nodeValues.value,
10439
+ notesInFlow: node2.value.notesInFlow
10440
+ };
10441
+ }
10442
+ if (node2.value.retryOnFail) {
10443
+ foundNodeSettings.push("retryOnFail");
10444
+ nodeValues.value = {
10445
+ ...nodeValues.value,
10446
+ retryOnFail: node2.value.retryOnFail
10447
+ };
10448
+ }
10449
+ if (node2.value.maxTries) {
10450
+ foundNodeSettings.push("maxTries");
10451
+ nodeValues.value = {
10452
+ ...nodeValues.value,
10453
+ maxTries: node2.value.maxTries
10454
+ };
10455
+ }
10456
+ if (node2.value.waitBetweenTries) {
10457
+ foundNodeSettings.push("waitBetweenTries");
10458
+ nodeValues.value = {
10459
+ ...nodeValues.value,
10460
+ waitBetweenTries: node2.value.waitBetweenTries
10461
+ };
10462
+ }
10463
+ for (const nodeSetting of nodeSettings.value) {
10464
+ if (!foundNodeSettings.includes(nodeSetting.name)) {
10465
+ nodeValues.value = {
10466
+ ...nodeValues.value,
10467
+ [nodeSetting.name]: nodeSetting.default
10468
+ };
10469
+ }
10470
+ }
10471
+ nodeValues.value = {
10472
+ ...nodeValues.value,
10473
+ parameters: deepCopy(node2.value.parameters)
10474
+ };
10475
+ } else {
10476
+ nodeValid.value = false;
10477
+ }
10478
+ nodeValuesInitialized.value = true;
10479
+ };
10480
+ const onMissingNodeTextClick = (event) => {
10481
+ if (event.target.localName === "a") {
10482
+ telemetry.track("user clicked cnr browse button", {
10483
+ source: "cnr missing node modal"
10484
+ });
10485
+ }
10486
+ };
10487
+ const onMissingNodeLearnMoreLinkClick = () => {
10488
+ telemetry.track("user clicked cnr docs link", {
10489
+ source: "missing node modal source",
10490
+ package_name: node2.value?.type.split(".")[0],
10491
+ node_type: node2.value?.type
10492
+ });
10493
+ };
10494
+ const onStopExecution = () => {
10495
+ emit("stopExecution");
10496
+ };
10497
+ const openSettings = () => {
10498
+ openPanel.value = "settings";
10499
+ };
10500
+ const onTabSelect = (tab) => {
10501
+ openPanel.value = tab;
10502
+ };
10503
+ watch(node2, () => {
10504
+ setNodeValues();
10505
+ });
10506
+ onMounted(() => {
10507
+ populateHiddenIssuesSet();
10508
+ populateSettings();
10509
+ setNodeValues();
10510
+ props.eventBus?.on("openSettings", openSettings);
10511
+ nodeHelpers.updateNodeParameterIssues(node2.value, props.nodeType);
10512
+ importCurlEventBus.on("setHttpNodeParameters", setHttpNodeParameters);
10513
+ ndvEventBus.on("updateParameterValue", valueChanged);
10514
+ });
10515
+ onBeforeUnmount(() => {
10516
+ props.eventBus?.off("openSettings", openSettings);
10517
+ importCurlEventBus.off("setHttpNodeParameters", setHttpNodeParameters);
10518
+ ndvEventBus.off("updateParameterValue", valueChanged);
10519
+ });
10520
+ function displayCredentials(credentialTypeDescription) {
10521
+ if (credentialTypeDescription.displayOptions === void 0) {
10522
+ return true;
10523
+ }
10524
+ return !!node2.value && nodeHelpers.displayParameter(node2.value.parameters, credentialTypeDescription, "", node2.value);
10525
+ }
10526
+ return (_ctx, _cache) => {
10527
+ const _component_font_awesome_icon = resolveComponent("font-awesome-icon");
10528
+ const _component_n8n_text = resolveComponent("n8n-text");
10529
+ const _component_i18n_t = resolveComponent("i18n-t");
10530
+ const _component_n8n_link = resolveComponent("n8n-link");
10531
+ const _component_n8n_notice = resolveComponent("n8n-notice");
10532
+ const _component_n8n_block_ui = resolveComponent("n8n-block-ui");
10533
+ return openBlock(), createElementBlock("div", {
10534
+ class: normalizeClass({
10535
+ "node-settings": true,
10536
+ dragging: _ctx.dragging
10537
+ }),
10538
+ onKeydown: _cache[0] || (_cache[0] = withModifiers(() => {
10539
+ }, ["stop"]))
10540
+ }, [
10541
+ createBaseVNode("div", {
10542
+ class: normalizeClass(_ctx.$style.header)
10543
+ }, [
10544
+ createBaseVNode("div", _hoisted_1$5, [
10545
+ node2.value ? (openBlock(), createBlock(NodeTitle, {
10546
+ key: 0,
10547
+ class: "node-name",
10548
+ "model-value": node2.value.name,
10549
+ "node-type": _ctx.nodeType,
10550
+ "read-only": isReadOnly.value,
10551
+ "onUpdate:modelValue": nameChanged
10552
+ }, null, 8, ["model-value", "node-type", "read-only"])) : createCommentVNode("", true),
10553
+ isExecutable2.value ? (openBlock(), createElementBlock("div", _hoisted_2$2, [
10554
+ !_ctx.blockUI && node2.value && nodeValid.value ? (openBlock(), createBlock(_sfc_main$P, {
10555
+ key: 0,
10556
+ "data-test-id": "node-execute-button",
10557
+ "node-name": node2.value.name,
10558
+ disabled: outputPanelEditMode.value.enabled && !isTriggerNode.value,
10559
+ tooltip: executeButtonTooltip.value,
10560
+ size: "small",
10561
+ "telemetry-source": "parameters",
10562
+ onExecute: onNodeExecute,
10563
+ onStopExecution,
10564
+ onValueChanged: valueChanged
10565
+ }, null, 8, ["node-name", "disabled", "tooltip"])) : createCommentVNode("", true)
10566
+ ])) : createCommentVNode("", true)
10567
+ ]),
10568
+ node2.value && nodeValid.value ? (openBlock(), createBlock(_sfc_main$u, {
10569
+ key: 0,
10570
+ "model-value": openPanel.value,
10571
+ "node-type": _ctx.nodeType,
10572
+ "push-ref": _ctx.pushRef,
10573
+ "onUpdate:modelValue": onTabSelect
10574
+ }, null, 8, ["model-value", "node-type", "push-ref"])) : createCommentVNode("", true)
10575
+ ], 2),
10576
+ node2.value && !nodeValid.value ? (openBlock(), createElementBlock("div", _hoisted_3$1, [
10577
+ createBaseVNode("p", {
10578
+ class: normalizeClass(_ctx.$style.warningIcon)
10579
+ }, [
10580
+ createVNode(_component_font_awesome_icon, { icon: "exclamation-triangle" })
10581
+ ], 2),
10582
+ createBaseVNode("div", _hoisted_4, [
10583
+ createVNode(_component_n8n_text, {
10584
+ size: "large",
10585
+ color: "text-dark",
10586
+ bold: ""
10587
+ }, {
10588
+ default: withCtx(() => [
10589
+ createTextVNode(toDisplayString(unref(i18n).baseText("nodeSettings.communityNodeUnknown.title")), 1)
10590
+ ]),
10591
+ _: 1
10592
+ })
10593
+ ]),
10594
+ isCommunityNode.value ? (openBlock(), createElementBlock("div", {
10595
+ key: 0,
10596
+ class: normalizeClass(_ctx.$style.descriptionContainer)
10597
+ }, [
10598
+ createBaseVNode("div", _hoisted_5, [
10599
+ createVNode(_component_i18n_t, {
10600
+ keypath: "nodeSettings.communityNodeUnknown.description",
10601
+ tag: "span",
10602
+ onClick: onMissingNodeTextClick
10603
+ }, {
10604
+ action: withCtx(() => [
10605
+ createBaseVNode("a", {
10606
+ href: `https://www.npmjs.com/package/${node2.value.type.split(".")[0]}`,
10607
+ target: "_blank"
10608
+ }, toDisplayString(node2.value.type.split(".")[0]), 9, _hoisted_6)
10609
+ ]),
10610
+ _: 1
10611
+ })
10612
+ ]),
10613
+ createVNode(_component_n8n_link, {
10614
+ to: unref(COMMUNITY_NODES_INSTALLATION_DOCS_URL),
10615
+ onClick: onMissingNodeLearnMoreLinkClick
10616
+ }, {
10617
+ default: withCtx(() => [
10618
+ createTextVNode(toDisplayString(unref(i18n).baseText("nodeSettings.communityNodeUnknown.installLink.text")), 1)
10619
+ ]),
10620
+ _: 1
10621
+ }, 8, ["to"])
10622
+ ], 2)) : (openBlock(), createBlock(_component_i18n_t, {
10623
+ key: 1,
10624
+ keypath: "nodeSettings.nodeTypeUnknown.description",
10625
+ tag: "span"
10626
+ }, {
10627
+ action: withCtx(() => [
10628
+ createBaseVNode("a", {
10629
+ href: unref(CUSTOM_NODES_DOCS_URL),
10630
+ target: "_blank",
10631
+ textContent: toDisplayString(unref(i18n).baseText("nodeSettings.nodeTypeUnknown.description.customNode"))
10632
+ }, null, 8, _hoisted_7)
10633
+ ]),
10634
+ _: 1
10635
+ }))
10636
+ ])) : createCommentVNode("", true),
10637
+ node2.value && nodeValid.value ? (openBlock(), createElementBlock("div", _hoisted_8, [
10638
+ hasForeignCredential.value && !isHomeProjectTeam.value ? (openBlock(), createBlock(_component_n8n_notice, {
10639
+ key: 0,
10640
+ content: unref(i18n).baseText("nodeSettings.hasForeignCredential", {
10641
+ interpolate: { owner: credentialOwnerName.value }
10642
+ })
10643
+ }, null, 8, ["content"])) : createCommentVNode("", true),
10644
+ createVNode(_sfc_main$r),
10645
+ withDirectives(createBaseVNode("div", null, [
10646
+ createVNode(NodeWebhooks, {
10647
+ node: node2.value,
10648
+ "node-type-description": _ctx.nodeType
10649
+ }, null, 8, ["node", "node-type-description"]),
10650
+ nodeValuesInitialized.value ? (openBlock(), createBlock(_sfc_main$Q, {
10651
+ key: 0,
10652
+ parameters: parametersNoneSetting.value,
10653
+ "hide-delete": true,
10654
+ "node-values": nodeValues.value,
10655
+ "is-read-only": isReadOnly.value,
10656
+ "hidden-issues-inputs": hiddenIssuesInputs.value,
10657
+ path: "parameters",
10658
+ onValueChanged: valueChanged,
10659
+ onActivate: onWorkflowActivate,
10660
+ onParameterBlur
10661
+ }, {
10662
+ default: withCtx(() => [
10663
+ createVNode(NodeCredentials, {
10664
+ node: node2.value,
10665
+ readonly: isReadOnly.value,
10666
+ "show-all": true,
10667
+ "hide-issues": hiddenIssuesInputs.value.includes("credentials"),
10668
+ onCredentialSelected: credentialSelected,
10669
+ onValueChanged: valueChanged,
10670
+ onBlur: onParameterBlur
10671
+ }, null, 8, ["node", "readonly", "hide-issues"])
10672
+ ]),
10673
+ _: 1
10674
+ }, 8, ["parameters", "node-values", "is-read-only", "hidden-issues-inputs"])) : createCommentVNode("", true),
10675
+ showNoParametersNotice.value ? (openBlock(), createElementBlock("div", _hoisted_9, [
10676
+ createVNode(_component_n8n_text, null, {
10677
+ default: withCtx(() => [
10678
+ createTextVNode(toDisplayString(unref(i18n).baseText("nodeSettings.thisNodeDoesNotHaveAnyParameters")), 1)
10679
+ ]),
10680
+ _: 1
10681
+ })
10682
+ ])) : createCommentVNode("", true),
10683
+ unref(nodeHelpers).isCustomApiCallSelected(nodeValues.value) ? (openBlock(), createElementBlock("div", _hoisted_10, [
10684
+ createVNode(_component_n8n_notice, {
10685
+ content: unref(i18n).baseText("nodeSettings.useTheHttpRequestNode", {
10686
+ interpolate: { nodeTypeDisplayName: _ctx.nodeType?.displayName ?? "" }
10687
+ })
10688
+ }, null, 8, ["content"])
10689
+ ])) : createCommentVNode("", true)
10690
+ ], 512), [
10691
+ [vShow, openPanel.value === "params"]
10692
+ ]),
10693
+ withDirectives(createBaseVNode("div", null, [
10694
+ createVNode(_sfc_main$Q, {
10695
+ parameters: parametersSetting.value,
10696
+ "node-values": nodeValues.value,
10697
+ "is-read-only": isReadOnly.value,
10698
+ "hide-delete": true,
10699
+ "hidden-issues-inputs": hiddenIssuesInputs.value,
10700
+ path: "parameters",
10701
+ onValueChanged: valueChanged,
10702
+ onParameterBlur
10703
+ }, null, 8, ["parameters", "node-values", "is-read-only", "hidden-issues-inputs"]),
10704
+ createVNode(_sfc_main$Q, {
10705
+ parameters: nodeSettings.value,
10706
+ "hide-delete": true,
10707
+ "node-values": nodeValues.value,
10708
+ "is-read-only": isReadOnly.value,
10709
+ "hidden-issues-inputs": hiddenIssuesInputs.value,
10710
+ path: "",
10711
+ onValueChanged: valueChanged,
10712
+ onParameterBlur
10713
+ }, null, 8, ["parameters", "node-values", "is-read-only", "hidden-issues-inputs"]),
10714
+ createBaseVNode("div", _hoisted_11, [
10715
+ createTextVNode(toDisplayString(unref(i18n).baseText("nodeSettings.nodeVersion", {
10716
+ interpolate: {
10717
+ node: _ctx.nodeType?.displayName,
10718
+ version: (node2.value.typeVersion ?? latestVersion.value).toString()
10719
+ }
10720
+ })) + " ", 1),
10721
+ createBaseVNode("span", null, "(" + toDisplayString(nodeVersionTag.value) + ")", 1)
10722
+ ])
10723
+ ], 512), [
10724
+ [vShow, openPanel.value === "settings"]
10725
+ ])
10726
+ ])) : createCommentVNode("", true),
10727
+ node2.value ? (openBlock(), createBlock(NDVSubConnections, {
10728
+ key: 2,
10729
+ ref_key: "subConnections",
10730
+ ref: subConnections,
10731
+ "root-node": node2.value,
10732
+ onSwitchSelectedNode,
10733
+ onOpenConnectionNodeCreator
10734
+ }, null, 8, ["root-node"])) : createCommentVNode("", true),
10735
+ createVNode(_component_n8n_block_ui, { show: _ctx.blockUI }, null, 8, ["show"])
10736
+ ], 34);
10737
+ };
10738
+ }
10739
+ });
10740
+ const header = "_header_13al3_123";
10741
+ const warningIcon = "_warningIcon_13al3_127";
10742
+ const descriptionContainer = "_descriptionContainer_13al3_132";
10743
+ const style0$j = {
10744
+ header,
10745
+ warningIcon,
10746
+ descriptionContainer
10747
+ };
10748
+ const cssModules$j = {
10749
+ "$style": style0$j
10750
+ };
10751
+ const NodeSettings = /* @__PURE__ */ _export_sfc$1(_sfc_main$q, [["__cssModules", cssModules$j], ["__scopeId", "data-v-114fd48f"]]);
10752
+ const _sfc_main$p = /* @__PURE__ */ defineComponent({
10753
+ __name: "CanvasNodeNodeSettings",
10754
+ props: {
10755
+ nodeId: {}
10756
+ },
10757
+ setup(__props) {
10758
+ const settingsEventBus = createEventBus();
10759
+ const nodeTypesStore = useNodeTypesStore();
10760
+ const workflowsStore = useWorkflowsStore();
10761
+ const activeNode = computed(() => workflowsStore.getNodeById(__props.nodeId));
10762
+ const activeNodeType = computed(() => {
10763
+ if (activeNode.value) {
10764
+ return nodeTypesStore.getNodeType(activeNode.value.type, activeNode.value.typeVersion);
10765
+ }
10766
+ return null;
10767
+ });
10768
+ return (_ctx, _cache) => {
10769
+ return openBlock(), createBlock(NodeSettings, {
10770
+ "event-bus": unref(settingsEventBus),
10771
+ dragging: false,
10772
+ "active-node": activeNode.value,
10773
+ "node-type": activeNodeType.value,
10774
+ "push-ref": "",
10775
+ "foreign-credentials": [],
10776
+ "read-only": false,
10777
+ "block-u-i": false,
10778
+ executable: false,
10779
+ "input-size": 0
10780
+ }, null, 8, ["event-bus", "active-node", "node-type"]);
10781
+ };
10782
+ }
10783
+ });
10784
+ const _hoisted_1$4 = ["data-test-id"];
10785
+ const _sfc_main$o = /* @__PURE__ */ defineComponent({
10786
+ __name: "CanvasNodeDefault",
10787
+ emits: ["open:contextmenu", "activate"],
10788
+ setup(__props, { emit: __emit }) {
10789
+ const $style = useCssModule();
10790
+ const i18n = useI18n();
10791
+ const emit = __emit;
10792
+ const { initialized, viewport } = useCanvas();
10793
+ const {
10794
+ id: id2,
10795
+ label: label2,
10796
+ subtitle: subtitle2,
10797
+ inputs: inputs2,
10798
+ outputs,
10799
+ connections: connections2,
10800
+ isDisabled,
10801
+ isSelected,
10802
+ hasPinnedData,
10803
+ executionStatus,
10804
+ executionWaiting,
10805
+ executionWaitingForNext,
10806
+ executionRunning,
10807
+ hasRunData,
10808
+ hasIssues: hasIssues2,
10809
+ render: render2
10810
+ } = useCanvasNode();
10811
+ const {
10812
+ mainOutputs,
10813
+ mainOutputConnections,
10814
+ mainInputs,
10815
+ mainInputConnections,
10816
+ nonMainInputs
10817
+ } = useNodeConnections({
10818
+ inputs: inputs2,
10819
+ outputs,
10820
+ connections: connections2
10821
+ });
10822
+ const renderOptions = computed(() => render2.value.options);
10823
+ const nodeSettingsZoom = useNodeSettingsInCanvas();
10824
+ const classes = computed(() => {
10825
+ return {
10826
+ [$style.node]: true,
10827
+ [$style.selected]: isSelected.value,
10828
+ [$style.disabled]: isDisabled.value,
10829
+ [$style.success]: hasRunData.value,
10830
+ [$style.error]: hasIssues2.value,
10831
+ [$style.pinned]: hasPinnedData.value,
10832
+ [$style.waiting]: executionWaiting.value ?? executionStatus.value === "waiting",
10833
+ [$style.running]: executionRunning.value || executionWaitingForNext.value,
10834
+ [$style.configurable]: renderOptions.value.configurable,
10835
+ [$style.configuration]: renderOptions.value.configuration,
10836
+ [$style.trigger]: renderOptions.value.trigger,
10837
+ [$style.warning]: renderOptions.value.dirtiness !== void 0,
10838
+ [$style.settingsView]: nodeSettingsZoom.value !== void 0
10839
+ };
10840
+ });
10841
+ const styles = computed(() => {
10842
+ const stylesObject = {};
10843
+ if (renderOptions.value.configurable) {
10844
+ let spacerCount = 0;
10845
+ stylesObject["--configurable-node--input-count"] = nonMainInputs.value.length + spacerCount;
10846
+ }
10847
+ if (nodeSettingsZoom.value !== void 0) {
10848
+ stylesObject["--zoom"] = nodeSettingsZoom.value;
10849
+ }
10850
+ stylesObject["--canvas-node--main-input-count"] = mainInputs.value.length;
10851
+ stylesObject["--canvas-node--main-output-count"] = mainOutputs.value.length;
10852
+ return stylesObject;
10853
+ });
10854
+ const dataTestId = computed(() => {
10855
+ let type = "default";
10856
+ if (renderOptions.value.configurable) {
10857
+ type = "configurable";
10858
+ } else if (renderOptions.value.configuration) {
10859
+ type = "configuration";
10860
+ } else if (renderOptions.value.trigger) {
10861
+ type = "trigger";
10862
+ }
10863
+ return `canvas-${type}-node`;
10864
+ });
10865
+ const isStrikethroughVisible = computed(() => {
10866
+ const isSingleMainInputNode = mainInputs.value.length === 1 && mainInputConnections.value.length <= 1;
10867
+ const isSingleMainOutputNode = mainOutputs.value.length === 1 && mainOutputConnections.value.length <= 1;
10868
+ return isDisabled.value && isSingleMainInputNode && isSingleMainOutputNode;
10869
+ });
10870
+ const iconSize = computed(() => renderOptions.value.configuration ? 30 : 40);
10871
+ const iconSource = computed(() => renderOptions.value.icon);
10872
+ const showTooltip = ref(false);
10873
+ watch(initialized, () => {
10874
+ if (initialized.value) {
10875
+ showTooltip.value = true;
10876
+ }
10877
+ });
10878
+ watch(viewport, () => {
10879
+ showTooltip.value = false;
10880
+ setTimeout(() => {
10881
+ showTooltip.value = true;
10882
+ }, 0);
10883
+ });
10884
+ function openContextMenu(event) {
10885
+ emit("open:contextmenu", event);
10886
+ }
10887
+ function onActivate(event) {
10888
+ emit("activate", id2.value, event);
10889
+ }
10890
+ return (_ctx, _cache) => {
10891
+ const _component_CanvasNodeTooltip = __unplugin_components_0$3;
10892
+ const _component_NodeIcon = _sfc_main$O;
10893
+ const _component_CanvasNodeStatusIcons = __unplugin_components_2;
10894
+ const _component_CanvasNodeDisabledStrikeThrough = __unplugin_components_3;
10895
+ return openBlock(), createElementBlock("div", {
10896
+ class: normalizeClass(classes.value),
10897
+ style: normalizeStyle(styles.value),
10898
+ "data-test-id": dataTestId.value,
10899
+ onContextmenu: openContextMenu,
10900
+ onDblclick: withModifiers(onActivate, ["stop"])
10901
+ }, [
10902
+ unref(nodeSettingsZoom) !== void 0 ? (openBlock(), createBlock(_sfc_main$p, {
10903
+ key: 0,
10904
+ "node-id": unref(id2)
10905
+ }, null, 8, ["node-id"])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
10906
+ renderOptions.value.tooltip ? (openBlock(), createBlock(_component_CanvasNodeTooltip, {
10907
+ key: 0,
10908
+ visible: showTooltip.value
10909
+ }, null, 8, ["visible"])) : createCommentVNode("", true),
10910
+ createVNode(_component_NodeIcon, {
10911
+ "icon-source": iconSource.value,
10912
+ size: iconSize.value,
10913
+ shrink: false,
10914
+ disabled: unref(isDisabled)
10915
+ }, null, 8, ["icon-source", "size", "disabled"]),
10916
+ !unref(isDisabled) ? (openBlock(), createBlock(_component_CanvasNodeStatusIcons, {
10917
+ key: 1,
10918
+ class: normalizeClass(unref($style).statusIcons)
10919
+ }, null, 8, ["class"])) : createCommentVNode("", true),
10920
+ isStrikethroughVisible.value ? (openBlock(), createBlock(_component_CanvasNodeDisabledStrikeThrough, { key: 2 })) : createCommentVNode("", true),
10921
+ createBaseVNode("div", {
10922
+ class: normalizeClass(unref($style).description)
10923
+ }, [
10924
+ unref(label2) ? (openBlock(), createElementBlock("div", {
10925
+ key: 0,
10926
+ class: normalizeClass(unref($style).label)
10927
+ }, toDisplayString(unref(label2)), 3)) : createCommentVNode("", true),
10928
+ unref(isDisabled) ? (openBlock(), createElementBlock("div", {
10929
+ key: 1,
10930
+ class: normalizeClass(unref($style).disabledLabel)
10931
+ }, " (" + toDisplayString(unref(i18n).baseText("node.disabled")) + ") ", 3)) : createCommentVNode("", true),
10932
+ unref(subtitle2) ? (openBlock(), createElementBlock("div", {
10933
+ key: 2,
10934
+ class: normalizeClass(unref($style).subtitle)
10935
+ }, toDisplayString(unref(subtitle2)), 3)) : createCommentVNode("", true)
10936
+ ], 2)
10937
+ ], 64))
10938
+ ], 46, _hoisted_1$4);
10939
+ };
10940
+ }
10941
+ });
10942
+ const node = "_node_jt24t_123";
10943
+ const trigger$1 = "_trigger_jt24t_156";
10944
+ const settingsView = "_settingsView_jt24t_159";
10945
+ const configuration = "_configuration_jt24t_172";
10946
+ const statusIcons = "_statusIcons_jt24t_179";
10947
+ const configurable = "_configurable_jt24t_182";
10948
+ const description = "_description_jt24t_193";
10949
+ const label$5 = "_label_jt24t_203";
10950
+ const subtitle = "_subtitle_jt24t_206";
10951
+ const selected$1 = "_selected_jt24t_216";
10952
+ const success$1 = "_success_jt24t_219";
10953
+ const warning = "_warning_jt24t_222";
10954
+ const error = "_error_jt24t_225";
10955
+ const pinned = "_pinned_jt24t_228";
10956
+ const disabled$1 = "_disabled_jt24t_231";
10957
+ const running = "_running_jt24t_234";
10958
+ const waiting = "_waiting_jt24t_238";
10959
+ const disabledLabel = "_disabledLabel_jt24t_255";
10960
+ const style0$i = {
10961
+ node,
10962
+ trigger: trigger$1,
10963
+ settingsView,
10964
+ configuration,
10965
+ statusIcons,
10966
+ configurable,
10967
+ description,
10968
+ label: label$5,
10969
+ subtitle,
10970
+ selected: selected$1,
10971
+ success: success$1,
10972
+ warning,
10973
+ error,
10974
+ pinned,
10975
+ disabled: disabled$1,
10976
+ running,
10977
+ waiting,
10978
+ disabledLabel
10979
+ };
10980
+ const cssModules$i = {
10981
+ "$style": style0$i
10982
+ };
10983
+ const CanvasNodeDefault = /* @__PURE__ */ _export_sfc$1(_sfc_main$o, [["__cssModules", cssModules$i]]);
10984
+ var xhtml = "http://www.w3.org/1999/xhtml";
10985
+ const namespaces = {
10986
+ svg: "http://www.w3.org/2000/svg",
10987
+ xhtml,
10988
+ xlink: "http://www.w3.org/1999/xlink",
10989
+ xml: "http://www.w3.org/XML/1998/namespace",
10990
+ xmlns: "http://www.w3.org/2000/xmlns/"
10991
+ };
10992
+ function namespace(name) {
10993
+ var prefix = name += "", i = prefix.indexOf(":");
10994
+ if (i >= 0 && (prefix = name.slice(0, i)) !== "xmlns")
10995
+ name = name.slice(i + 1);
10996
+ return namespaces.hasOwnProperty(prefix) ? { space: namespaces[prefix], local: name } : name;
10997
+ }
10998
+ function creatorInherit(name) {
10999
+ return function() {
11000
+ var document2 = this.ownerDocument, uri = this.namespaceURI;
11001
+ return uri === xhtml && document2.documentElement.namespaceURI === xhtml ? document2.createElement(name) : document2.createElementNS(uri, name);
11002
+ };
11003
+ }
11004
+ function creatorFixed(fullname) {
11005
+ return function() {
11006
+ return this.ownerDocument.createElementNS(fullname.space, fullname.local);
11007
+ };
8902
11008
  }
8903
11009
  function creator(name) {
8904
11010
  var fullname = namespace(name);
@@ -10353,14 +12459,14 @@ const _sfc_main$m = /* @__PURE__ */ defineComponent({
10353
12459
  });
10354
12460
  const sticky = "_sticky_1jyj2_123";
10355
12461
  const selected = "_selected_1jyj2_130";
10356
- const style0$g = {
12462
+ const style0$h = {
10357
12463
  sticky,
10358
12464
  selected
10359
12465
  };
10360
- const cssModules$g = {
10361
- "$style": style0$g
12466
+ const cssModules$h = {
12467
+ "$style": style0$h
10362
12468
  };
10363
- const CanvasNodeStickyNote = /* @__PURE__ */ _export_sfc$1(_sfc_main$m, [["__cssModules", cssModules$g]]);
12469
+ const CanvasNodeStickyNote = /* @__PURE__ */ _export_sfc$1(_sfc_main$m, [["__cssModules", cssModules$h]]);
10364
12470
  const _hoisted_1$3 = ["textContent"];
10365
12471
  const _sfc_main$l = /* @__PURE__ */ defineComponent({
10366
12472
  __name: "CanvasNodeAddNodes",
@@ -10428,17 +12534,17 @@ const _sfc_main$l = /* @__PURE__ */ defineComponent({
10428
12534
  }
10429
12535
  });
10430
12536
  const addNodes = "_addNodes_1qfrq_123";
10431
- const button = "_button_1qfrq_131";
12537
+ const button$1 = "_button_1qfrq_131";
10432
12538
  const label$4 = "_label_1qfrq_152";
10433
- const style0$f = {
12539
+ const style0$g = {
10434
12540
  addNodes,
10435
- button,
12541
+ button: button$1,
10436
12542
  label: label$4
10437
12543
  };
10438
- const cssModules$f = {
10439
- "$style": style0$f
12544
+ const cssModules$g = {
12545
+ "$style": style0$g
10440
12546
  };
10441
- const CanvasNodeAddNodes = /* @__PURE__ */ _export_sfc$1(_sfc_main$l, [["__cssModules", cssModules$f]]);
12547
+ const CanvasNodeAddNodes = /* @__PURE__ */ _export_sfc$1(_sfc_main$l, [["__cssModules", cssModules$g]]);
10442
12548
  const _sfc_main$k = /* @__PURE__ */ defineComponent({
10443
12549
  __name: "CanvasNodeAIPrompt",
10444
12550
  emits: ["delete"],
@@ -10520,7 +12626,7 @@ const form_textarea = "_form_textarea_145fr_153";
10520
12626
  const form_footer = "_form_footer_145fr_170";
10521
12627
  const or = "_or_145fr_176";
10522
12628
  const or_text = "_or_text_145fr_185";
10523
- const style0$e = {
12629
+ const style0$f = {
10524
12630
  container: container$1,
10525
12631
  promptContainer,
10526
12632
  focused,
@@ -10530,10 +12636,10 @@ const style0$e = {
10530
12636
  or,
10531
12637
  or_text
10532
12638
  };
10533
- const cssModules$e = {
10534
- "$style": style0$e
12639
+ const cssModules$f = {
12640
+ "$style": style0$f
10535
12641
  };
10536
- const CanvasNodeAIPrompt = /* @__PURE__ */ _export_sfc$1(_sfc_main$k, [["__cssModules", cssModules$e]]);
12642
+ const CanvasNodeAIPrompt = /* @__PURE__ */ _export_sfc$1(_sfc_main$k, [["__cssModules", cssModules$f]]);
10537
12643
  const _sfc_main$j = /* @__PURE__ */ defineComponent({
10538
12644
  __name: "CanvasNodeRenderer",
10539
12645
  setup(__props) {
@@ -10577,13 +12683,13 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
10577
12683
  }
10578
12684
  });
10579
12685
  const rectangle = "_rectangle_rd2w6_123";
10580
- const style0$d = {
12686
+ const style0$e = {
10581
12687
  rectangle
10582
12688
  };
10583
- const cssModules$d = {
10584
- "$style": style0$d
12689
+ const cssModules$e = {
12690
+ "$style": style0$e
10585
12691
  };
10586
- const __unplugin_components_0$2 = /* @__PURE__ */ _export_sfc$1(_sfc_main$i, [["__cssModules", cssModules$d]]);
12692
+ const __unplugin_components_0$2 = /* @__PURE__ */ _export_sfc$1(_sfc_main$i, [["__cssModules", cssModules$e]]);
10587
12693
  function useCanvasNodeHandle() {
10588
12694
  const handle2 = inject(CanvasNodeHandleKey);
10589
12695
  const label2 = computed(() => handle2?.label.value ?? "");
@@ -10636,15 +12742,15 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
10636
12742
  const handle$4 = "_handle_1v80z_123";
10637
12743
  const label$3 = "_label_1v80z_130";
10638
12744
  const required$3 = "_required_1v80z_143";
10639
- const style0$c = {
12745
+ const style0$d = {
10640
12746
  handle: handle$4,
10641
12747
  label: label$3,
10642
12748
  required: required$3
10643
12749
  };
10644
- const cssModules$c = {
10645
- "$style": style0$c
12750
+ const cssModules$d = {
12751
+ "$style": style0$d
10646
12752
  };
10647
- const CanvasHandleMainInput = /* @__PURE__ */ _export_sfc$1(_sfc_main$h, [["__cssModules", cssModules$c]]);
12753
+ const CanvasHandleMainInput = /* @__PURE__ */ _export_sfc$1(_sfc_main$h, [["__cssModules", cssModules$d]]);
10648
12754
  const _hoisted_1$2 = ["viewBox"];
10649
12755
  const _hoisted_2$1 = ["x1", "y1", "x2", "y2"];
10650
12756
  const _hoisted_3 = ["transform"];
@@ -10774,17 +12880,17 @@ const secondary = "_secondary_hyidj_126";
10774
12880
  const line = "_line_hyidj_126";
10775
12881
  const plus$1 = "_plus_hyidj_129";
10776
12882
  const success = "_success_hyidj_135";
10777
- const style0$b = {
12883
+ const style0$c = {
10778
12884
  wrapper: wrapper$1,
10779
12885
  secondary,
10780
12886
  line,
10781
12887
  plus: plus$1,
10782
12888
  success
10783
12889
  };
10784
- const cssModules$b = {
10785
- "$style": style0$b
12890
+ const cssModules$c = {
12891
+ "$style": style0$c
10786
12892
  };
10787
- const CanvasHandlePlus = /* @__PURE__ */ _export_sfc$1(_sfc_main$g, [["__cssModules", cssModules$b]]);
12893
+ const CanvasHandlePlus = /* @__PURE__ */ _export_sfc$1(_sfc_main$g, [["__cssModules", cssModules$c]]);
10788
12894
  const _sfc_main$f = /* @__PURE__ */ defineComponent({
10789
12895
  __name: "CanvasHandleDot",
10790
12896
  props: {
@@ -10799,13 +12905,13 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
10799
12905
  }
10800
12906
  });
10801
12907
  const dot = "_dot_gdjps_123";
10802
- const style0$a = {
12908
+ const style0$b = {
10803
12909
  dot
10804
12910
  };
10805
- const cssModules$a = {
10806
- "$style": style0$a
12911
+ const cssModules$b = {
12912
+ "$style": style0$b
10807
12913
  };
10808
- const __unplugin_components_0$1 = /* @__PURE__ */ _export_sfc$1(_sfc_main$f, [["__cssModules", cssModules$a]]);
12914
+ const __unplugin_components_0$1 = /* @__PURE__ */ _export_sfc$1(_sfc_main$f, [["__cssModules", cssModules$b]]);
10809
12915
  const handleClasses$2 = "source";
10810
12916
  const _sfc_main$e = /* @__PURE__ */ defineComponent({
10811
12917
  __name: "CanvasHandleMainOutput",
@@ -10899,7 +13005,7 @@ const label$2 = "_label_1u904_129";
10899
13005
  const required$2 = "_required_1u904_143";
10900
13006
  const outputLabel = "_outputLabel_1u904_148";
10901
13007
  const runDataLabel = "_runDataLabel_1u904_156";
10902
- const style0$9 = {
13008
+ const style0$a = {
10903
13009
  handle: handle$3,
10904
13010
  connected,
10905
13011
  label: label$2,
@@ -10907,10 +13013,10 @@ const style0$9 = {
10907
13013
  outputLabel,
10908
13014
  runDataLabel
10909
13015
  };
10910
- const cssModules$9 = {
10911
- "$style": style0$9
13016
+ const cssModules$a = {
13017
+ "$style": style0$a
10912
13018
  };
10913
- const CanvasHandleMainOutput = /* @__PURE__ */ _export_sfc$1(_sfc_main$e, [["__cssModules", cssModules$9]]);
13019
+ const CanvasHandleMainOutput = /* @__PURE__ */ _export_sfc$1(_sfc_main$e, [["__cssModules", cssModules$a]]);
10914
13020
  const _sfc_main$d = /* @__PURE__ */ defineComponent({
10915
13021
  __name: "CanvasHandleDiamond",
10916
13022
  props: {
@@ -10925,13 +13031,13 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
10925
13031
  }
10926
13032
  });
10927
13033
  const diamond = "_diamond_kuwdo_123";
10928
- const style0$8 = {
13034
+ const style0$9 = {
10929
13035
  diamond
10930
13036
  };
10931
- const cssModules$8 = {
10932
- "$style": style0$8
13037
+ const cssModules$9 = {
13038
+ "$style": style0$9
10933
13039
  };
10934
- const __unplugin_components_0 = /* @__PURE__ */ _export_sfc$1(_sfc_main$d, [["__cssModules", cssModules$8]]);
13040
+ const __unplugin_components_0 = /* @__PURE__ */ _export_sfc$1(_sfc_main$d, [["__cssModules", cssModules$9]]);
10935
13041
  const handleClasses$1 = "target";
10936
13042
  const _sfc_main$c = /* @__PURE__ */ defineComponent({
10937
13043
  __name: "CanvasHandleNonMainInput",
@@ -10993,15 +13099,15 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
10993
13099
  const handle$2 = "_handle_3v1rt_123";
10994
13100
  const label$1 = "_label_3v1rt_130";
10995
13101
  const required$1 = "_required_3v1rt_143";
10996
- const style0$7 = {
13102
+ const style0$8 = {
10997
13103
  handle: handle$2,
10998
13104
  label: label$1,
10999
13105
  required: required$1
11000
13106
  };
11001
- const cssModules$7 = {
11002
- "$style": style0$7
13107
+ const cssModules$8 = {
13108
+ "$style": style0$8
11003
13109
  };
11004
- const CanvasHandleNonMainInput = /* @__PURE__ */ _export_sfc$1(_sfc_main$c, [["__cssModules", cssModules$7]]);
13110
+ const CanvasHandleNonMainInput = /* @__PURE__ */ _export_sfc$1(_sfc_main$c, [["__cssModules", cssModules$8]]);
11005
13111
  const handleClasses = "source";
11006
13112
  const _sfc_main$b = /* @__PURE__ */ defineComponent({
11007
13113
  __name: "CanvasHandleNonMainOutput",
@@ -11030,16 +13136,16 @@ const handle$1 = "_handle_1x1ua_123";
11030
13136
  const label = "_label_1x1ua_130";
11031
13137
  const required = "_required_1x1ua_142";
11032
13138
  const plus = "_plus_1x1ua_147";
11033
- const style0$6 = {
13139
+ const style0$7 = {
11034
13140
  handle: handle$1,
11035
13141
  label,
11036
13142
  required,
11037
13143
  plus
11038
13144
  };
11039
- const cssModules$6 = {
11040
- "$style": style0$6
13145
+ const cssModules$7 = {
13146
+ "$style": style0$7
11041
13147
  };
11042
- const CanvasHandleNonMainOutput = /* @__PURE__ */ _export_sfc$1(_sfc_main$b, [["__cssModules", cssModules$6]]);
13148
+ const CanvasHandleNonMainOutput = /* @__PURE__ */ _export_sfc$1(_sfc_main$b, [["__cssModules", cssModules$7]]);
11043
13149
  const _sfc_main$a = /* @__PURE__ */ defineComponent({
11044
13150
  ...{
11045
13151
  inheritAttrs: false
@@ -11161,7 +13267,7 @@ const top = "_top_5ceyz_140";
11161
13267
  const right = "_right_5ceyz_144";
11162
13268
  const left = "_left_5ceyz_148";
11163
13269
  const bottom = "_bottom_5ceyz_152";
11164
- const style0$5 = {
13270
+ const style0$6 = {
11165
13271
  handle,
11166
13272
  inputs,
11167
13273
  main,
@@ -11171,10 +13277,10 @@ const style0$5 = {
11171
13277
  left,
11172
13278
  bottom
11173
13279
  };
11174
- const cssModules$5 = {
11175
- "$style": style0$5
13280
+ const cssModules$6 = {
13281
+ "$style": style0$6
11176
13282
  };
11177
- const CanvasHandleRenderer = /* @__PURE__ */ _export_sfc$1(_sfc_main$a, [["__cssModules", cssModules$5]]);
13283
+ const CanvasHandleRenderer = /* @__PURE__ */ _export_sfc$1(_sfc_main$a, [["__cssModules", cssModules$6]]);
11178
13284
  const _sfc_main$9 = /* @__PURE__ */ defineComponent({
11179
13285
  __name: "CanvasNodeTrigger",
11180
13286
  props: {
@@ -11198,17 +13304,21 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
11198
13304
  const workflowsStore = useWorkflowsStore();
11199
13305
  const logsStore = useLogsStore();
11200
13306
  const { runEntireWorkflow } = useRunWorkflow({ router });
11201
- const { startChat } = useCanvasOperations({ router });
13307
+ const { startChat } = useCanvasOperations();
11202
13308
  const isChatOpen = computed(() => logsStore.isOpen);
11203
13309
  const isExecuting = computed(() => workflowsStore.isWorkflowRunning);
11204
13310
  const testId = computed(() => `execute-workflow-button-${__props.name}`);
13311
+ async function handleClickExecute() {
13312
+ workflowsStore.setSelectedTriggerNodeName(__props.name);
13313
+ await runEntireWorkflow("node", __props.name);
13314
+ }
11205
13315
  return (_ctx, _cache) => {
11206
13316
  const _component_FontAwesomeIcon = resolveComponent("FontAwesomeIcon");
11207
13317
  return openBlock(), createElementBlock("div", {
11208
13318
  class: normalizeClass(containerClass.value),
11209
- onClick: _cache[3] || (_cache[3] = withModifiers(() => {
13319
+ onClick: _cache[2] || (_cache[2] = withModifiers(() => {
11210
13320
  }, ["stop", "prevent"])),
11211
- onMousedown: _cache[4] || (_cache[4] = withModifiers(() => {
13321
+ onMousedown: _cache[3] || (_cache[3] = withModifiers(() => {
11212
13322
  }, ["stop", "prevent"]))
11213
13323
  }, [
11214
13324
  createBaseVNode("div", null, [
@@ -11225,6 +13335,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
11225
13335
  isChatOpen.value ? (openBlock(), createBlock(unref(N8nButton), {
11226
13336
  key: 0,
11227
13337
  type: "secondary",
13338
+ icon: "comment",
11228
13339
  size: "large",
11229
13340
  disabled: isExecuting.value,
11230
13341
  "data-test-id": testId.value,
@@ -11238,6 +13349,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
11238
13349
  default: withCtx(() => [
11239
13350
  createVNode(unref(N8nButton), {
11240
13351
  type: "primary",
13352
+ icon: "comment",
11241
13353
  size: "large",
11242
13354
  disabled: isExecuting.value,
11243
13355
  "data-test-id": testId.value,
@@ -11250,11 +13362,12 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
11250
13362
  ], 64)) : (openBlock(), createBlock(unref(N8nButton), {
11251
13363
  key: 1,
11252
13364
  type: "primary",
13365
+ icon: "flask",
11253
13366
  size: "large",
11254
13367
  disabled: isExecuting.value,
11255
13368
  "data-test-id": testId.value,
11256
13369
  label: unref(i18n).baseText("nodeView.runButtonText.executeWorkflow"),
11257
- onClickCapture: _cache[2] || (_cache[2] = ($event) => unref(runEntireWorkflow)("node", _ctx.name))
13370
+ onClickCapture: handleClickExecute
11258
13371
  }, null, 8, ["disabled", "data-test-id", "label"]))
11259
13372
  ], 64)) : createCommentVNode("", true)
11260
13373
  ])
@@ -11266,16 +13379,16 @@ const container = "_container_ze6b9_123";
11266
13379
  const interactive = "_interactive_ze6b9_144";
11267
13380
  const hovered = "_hovered_ze6b9_144";
11268
13381
  const bolt = "_bolt_ze6b9_150";
11269
- const style0$4 = {
13382
+ const style0$5 = {
11270
13383
  container,
11271
13384
  interactive,
11272
13385
  hovered,
11273
13386
  bolt
11274
13387
  };
11275
- const cssModules$4 = {
11276
- "$style": style0$4
13388
+ const cssModules$5 = {
13389
+ "$style": style0$5
11277
13390
  };
11278
- const CanvasNodeTrigger = /* @__PURE__ */ _export_sfc$1(_sfc_main$9, [["__cssModules", cssModules$4]]);
13391
+ const CanvasNodeTrigger = /* @__PURE__ */ _export_sfc$1(_sfc_main$9, [["__cssModules", cssModules$5]]);
11279
13392
  const _hoisted_1$1 = ["data-test-id", "data-node-name", "data-node-type"];
11280
13393
  const _sfc_main$8 = /* @__PURE__ */ defineComponent({
11281
13394
  __name: "CanvasNode",
@@ -11315,7 +13428,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
11315
13428
  const nodeClasses = ref([]);
11316
13429
  const inputs2 = computed(() => props.data.inputs);
11317
13430
  const outputs = computed(() => props.data.outputs);
11318
- const connections = computed(() => props.data.connections);
13431
+ const connections2 = computed(() => props.data.connections);
11319
13432
  const {
11320
13433
  mainInputs,
11321
13434
  nonMainInputs,
@@ -11326,7 +13439,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
11326
13439
  } = useNodeConnections({
11327
13440
  inputs: inputs2,
11328
13441
  outputs,
11329
- connections
13442
+ connections: connections2
11330
13443
  });
11331
13444
  const isDisabled = computed(() => props.data.disabled);
11332
13445
  const classes = computed(() => ({
@@ -11375,7 +13488,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
11375
13488
  index: endpoint.index
11376
13489
  });
11377
13490
  const handleType = mode === CanvasConnectionMode.Input ? "target" : "source";
11378
- const connectionsCount = connections.value[mode][endpoint.type]?.[endpoint.index]?.length ?? 0;
13491
+ const connectionsCount = connections2.value[mode][endpoint.type]?.[endpoint.index]?.length ?? 0;
11379
13492
  const isConnecting = connectingHandle.value?.nodeId === props.id && connectingHandle.value?.handleType === handleType && connectingHandle.value?.handleId === handleId;
11380
13493
  return {
11381
13494
  ...endpoint,
@@ -11563,54 +13676,51 @@ const canvasNode = "_canvasNode_1ftik_123";
11563
13676
  const trigger = "_trigger_1ftik_123";
11564
13677
  const canvasNodeToolbar = "_canvasNodeToolbar_1ftik_123";
11565
13678
  const showToolbar = "_showToolbar_1ftik_123";
11566
- const style0$3 = {
13679
+ const style0$4 = {
11567
13680
  canvasNode,
11568
13681
  trigger,
11569
13682
  canvasNodeToolbar,
11570
13683
  showToolbar
11571
13684
  };
11572
- const cssModules$3 = {
11573
- "$style": style0$3
13685
+ const cssModules$4 = {
13686
+ "$style": style0$4
11574
13687
  };
11575
- const Node = /* @__PURE__ */ _export_sfc$1(_sfc_main$8, [["__cssModules", cssModules$3]]);
13688
+ const Node = /* @__PURE__ */ _export_sfc$1(_sfc_main$8, [["__cssModules", cssModules$4]]);
11576
13689
  function useViewportAutoAdjust(viewportRef, viewport, setViewport) {
11577
- const settingsStore = useSettingsStore();
11578
- if (settingsStore.isNewLogsEnabled) {
11579
- const canvasRect = ref();
11580
- watch(
11581
- viewportRef,
11582
- (vp, _, onCleanUp) => {
11583
- if (!vp) {
11584
- return;
11585
- }
11586
- const resizeObserver = new ResizeObserver((entries) => {
11587
- const entry = entries[0];
11588
- if (entry) {
11589
- canvasRect.value = entry.contentRect;
11590
- }
11591
- });
11592
- canvasRect.value = {
11593
- x: vp.offsetLeft,
11594
- y: vp.offsetTop,
11595
- width: vp.offsetWidth,
11596
- height: vp.offsetHeight
11597
- };
11598
- resizeObserver.observe(vp);
11599
- onCleanUp(() => resizeObserver.disconnect());
11600
- },
11601
- { immediate: true }
11602
- );
11603
- watch(canvasRect, async (newRect, oldRect) => {
11604
- if (!newRect || !oldRect) {
13690
+ const canvasRect = ref();
13691
+ watch(
13692
+ viewportRef,
13693
+ (vp, _, onCleanUp) => {
13694
+ if (!vp) {
11605
13695
  return;
11606
13696
  }
11607
- await setViewport({
11608
- x: viewport.value.x + (newRect.width - oldRect.width) / 2,
11609
- y: viewport.value.y + (newRect.height - oldRect.height) / 2,
11610
- zoom: viewport.value.zoom
13697
+ const resizeObserver = new ResizeObserver((entries) => {
13698
+ const entry = entries[0];
13699
+ if (entry) {
13700
+ canvasRect.value = entry.contentRect;
13701
+ }
11611
13702
  });
13703
+ canvasRect.value = {
13704
+ x: vp.offsetLeft,
13705
+ y: vp.offsetTop,
13706
+ width: vp.offsetWidth,
13707
+ height: vp.offsetHeight
13708
+ };
13709
+ resizeObserver.observe(vp);
13710
+ onCleanUp(() => resizeObserver.disconnect());
13711
+ },
13712
+ { immediate: true }
13713
+ );
13714
+ watch(canvasRect, async (newRect, oldRect) => {
13715
+ if (!newRect || !oldRect) {
13716
+ return;
13717
+ }
13718
+ await setViewport({
13719
+ x: viewport.value.x + (newRect.width - oldRect.width) / 2,
13720
+ y: viewport.value.y + (newRect.height - oldRect.height) / 2,
13721
+ zoom: viewport.value.zoom
11612
13722
  });
11613
- }
13723
+ });
11614
13724
  }
11615
13725
  const renameKeyCode = " ";
11616
13726
  const defaultZoom = 1;
@@ -12231,14 +14341,14 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
12231
14341
  createVNode(_component_CanvasConnectionLine, normalizeProps(guardReactiveProps(connectionLineProps)), null, 16)
12232
14342
  ]),
12233
14343
  default: withCtx(() => [
12234
- createVNode(_sfc_main$w, { id: arrowHeadMarkerId.value }, null, 8, ["id"]),
12235
- createVNode(_sfc_main$x, {
14344
+ createVNode(_sfc_main$D, { id: arrowHeadMarkerId.value }, null, 8, ["id"]),
14345
+ createVNode(_sfc_main$E, {
12236
14346
  viewport: unref(viewport),
12237
14347
  striped: _ctx.readOnly
12238
14348
  }, null, 8, ["viewport", "striped"]),
12239
14349
  createVNode(Transition$1, { name: "minimap" }, {
12240
14350
  default: withCtx(() => [
12241
- withDirectives(createVNode(unref(_sfc_main$A), {
14351
+ withDirectives(createVNode(unref(_sfc_main$H), {
12242
14352
  "data-test-id": "canvas-minimap",
12243
14353
  "aria-label": "n8n Minimap",
12244
14354
  height: 120,
@@ -12283,17 +14393,17 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
12283
14393
  });
12284
14394
  const canvas$1 = "_canvas_1fjji_123";
12285
14395
  const ready = "_ready_1fjji_129";
12286
- const style0$2 = {
14396
+ const style0$3 = {
12287
14397
  canvas: canvas$1,
12288
14398
  ready
12289
14399
  };
12290
- const cssModules$2 = {
12291
- "$style": style0$2
14400
+ const cssModules$3 = {
14401
+ "$style": style0$3
12292
14402
  };
12293
- const Canvas = /* @__PURE__ */ _export_sfc$1(_sfc_main$7, [["__cssModules", cssModules$2], ["__scopeId", "data-v-ff688b7e"]]);
14403
+ const Canvas = /* @__PURE__ */ _export_sfc$1(_sfc_main$7, [["__cssModules", cssModules$3], ["__scopeId", "data-v-ff688b7e"]]);
12294
14404
  function useCanvasMapping({
12295
14405
  nodes,
12296
- connections,
14406
+ connections: connections2,
12297
14407
  workflowObject
12298
14408
  }) {
12299
14409
  const i18n = useI18n();
@@ -12502,6 +14612,12 @@ function useCanvasMapping({
12502
14612
  return acc;
12503
14613
  }, {})
12504
14614
  );
14615
+ const nodeExecutionWaitingForNextById = computed(
14616
+ () => nodes.value.reduce((acc, node2) => {
14617
+ acc[node2.id] = node2.name === workflowsStore.lastAddedExecutingNode && workflowsStore.executingNode.length === 0 && workflowsStore.isWorkflowRunning;
14618
+ return acc;
14619
+ }, {})
14620
+ );
12505
14621
  const nodeExecutionStatusById = computed(
12506
14622
  () => nodes.value.reduce((acc, node2) => {
12507
14623
  const tasks = workflowsStore.getWorkflowRunData?.[node2.name] ?? [];
@@ -12522,15 +14638,15 @@ function useCanvasMapping({
12522
14638
  const outputData = { iterations: 0, total: 0 };
12523
14639
  for (const runIteration of nodeExecutionRunDataById.value[nodeId] ?? []) {
12524
14640
  const data = runIteration.data ?? {};
12525
- for (const connectionType of Object.keys(data)) {
12526
- const connectionTypeData = data[connectionType] ?? {};
12527
- acc[nodeId][connectionType] = acc[nodeId][connectionType] ?? {};
14641
+ for (const connectionType2 of Object.keys(data)) {
14642
+ const connectionTypeData = data[connectionType2] ?? {};
14643
+ acc[nodeId][connectionType2] = acc[nodeId][connectionType2] ?? {};
12528
14644
  for (const outputIndex of Object.keys(connectionTypeData)) {
12529
14645
  const parsedOutputIndex = parseInt(outputIndex, 10);
12530
14646
  const connectionTypeOutputIndexData = connectionTypeData[parsedOutputIndex] ?? [];
12531
- acc[nodeId][connectionType][outputIndex] = acc[nodeId][connectionType][outputIndex] ?? { ...outputData };
12532
- acc[nodeId][connectionType][outputIndex].iterations += 1;
12533
- acc[nodeId][connectionType][outputIndex].total += connectionTypeOutputIndexData.length;
14647
+ acc[nodeId][connectionType2][outputIndex] = acc[nodeId][connectionType2][outputIndex] ?? { ...outputData };
14648
+ acc[nodeId][connectionType2][outputIndex].iterations += 1;
14649
+ acc[nodeId][connectionType2][outputIndex].total += connectionTypeOutputIndexData.length;
12534
14650
  }
12535
14651
  }
12536
14652
  }
@@ -12704,6 +14820,7 @@ function useCanvasMapping({
12704
14820
  execution: {
12705
14821
  status: nodeExecutionStatusById.value[node2.id],
12706
14822
  waiting: nodeExecutionWaitingById.value[node2.id],
14823
+ waitingForNext: nodeExecutionWaitingForNextById.value[node2.id],
12707
14824
  running: nodeExecutionRunningById.value[node2.id]
12708
14825
  },
12709
14826
  runData: {
@@ -12724,7 +14841,7 @@ function useCanvasMapping({
12724
14841
  })
12725
14842
  ]);
12726
14843
  const mappedConnections = computed(() => {
12727
- return mapLegacyConnectionsToCanvasConnections(connections.value ?? [], nodes.value ?? []).map(
14844
+ return mapLegacyConnectionsToCanvasConnections(connections2.value ?? [], nodes.value ?? []).map(
12728
14845
  (connection) => {
12729
14846
  const type = getConnectionType();
12730
14847
  const label2 = getConnectionLabel(connection);
@@ -12794,6 +14911,7 @@ function useCanvasMapping({
12794
14911
  return {
12795
14912
  additionalNodePropertiesById,
12796
14913
  nodeExecutionRunDataOutputMapById,
14914
+ nodeExecutionWaitingForNextById,
12797
14915
  nodeIssuesById,
12798
14916
  nodeHasIssuesById,
12799
14917
  connections: mappedConnections,
@@ -12824,10 +14942,10 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
12824
14942
  const nodes = computed(() => {
12825
14943
  return props.showFallbackNodes ? [...props.workflow.nodes, ...props.fallbackNodes] : props.workflow.nodes;
12826
14944
  });
12827
- const connections = computed(() => props.workflow.connections);
14945
+ const connections2 = computed(() => props.workflow.connections);
12828
14946
  const { nodes: mappedNodes, connections: mappedConnections } = useCanvasMapping({
12829
14947
  nodes,
12830
- connections,
14948
+ connections: connections2,
12831
14949
  workflowObject
12832
14950
  });
12833
14951
  const initialFitViewDone = ref(false);
@@ -12863,25 +14981,32 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
12863
14981
  });
12864
14982
  const wrapper = "_wrapper_17o0o_123";
12865
14983
  const canvas = "_canvas_17o0o_131";
12866
- const style0$1 = {
14984
+ const style0$2 = {
12867
14985
  wrapper,
12868
14986
  canvas
12869
14987
  };
12870
- const cssModules$1 = {
12871
- "$style": style0$1
14988
+ const cssModules$2 = {
14989
+ "$style": style0$2
12872
14990
  };
12873
- const WorkflowCanvas = /* @__PURE__ */ _export_sfc$1(_sfc_main$6, [["__cssModules", cssModules$1]]);
14991
+ const WorkflowCanvas = /* @__PURE__ */ _export_sfc$1(_sfc_main$6, [["__cssModules", cssModules$2]]);
12874
14992
  const _sfc_main$5 = /* @__PURE__ */ defineComponent({
12875
14993
  __name: "CanvasRunWorkflowButton",
12876
14994
  props: {
14995
+ selectedTriggerNodeName: {},
14996
+ triggerNodes: {},
12877
14997
  waitingForWebhook: { type: Boolean },
12878
14998
  executing: { type: Boolean },
12879
- disabled: { type: Boolean }
14999
+ disabled: { type: Boolean },
15000
+ getNodeType: { type: Function }
12880
15001
  },
12881
- emits: ["mouseenter", "mouseleave", "click"],
12882
- setup(__props) {
15002
+ emits: ["mouseenter", "mouseleave", "execute", "selectTriggerNode"],
15003
+ setup(__props, { emit: __emit }) {
15004
+ const emit = __emit;
12883
15005
  const props = __props;
12884
15006
  const i18n = useI18n();
15007
+ const selectableTriggerNodes = computed(
15008
+ () => props.triggerNodes.filter((node2) => !node2.disabled && !isChatNode(node2))
15009
+ );
12885
15010
  const label2 = computed(() => {
12886
15011
  if (!props.executing) {
12887
15012
  return i18n.baseText("nodeView.runButtonText.executeWorkflow");
@@ -12891,32 +15016,164 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
12891
15016
  }
12892
15017
  return i18n.baseText("nodeView.runButtonText.executingWorkflow");
12893
15018
  });
15019
+ const actions2 = computed(
15020
+ () => props.triggerNodes.filter((node2) => !isChatNode(node2)).toSorted((a, b) => {
15021
+ const [aX, aY] = a.position;
15022
+ const [bX, bY] = b.position;
15023
+ return aY === bY ? aX - bX : aY - bY;
15024
+ }).map((node2) => ({
15025
+ label: truncateBeforeLast(node2.name, 25),
15026
+ disabled: !!node2.disabled,
15027
+ id: node2.name,
15028
+ checked: props.selectedTriggerNodeName === node2.name
15029
+ }))
15030
+ );
15031
+ const isSplitButton = computed(
15032
+ () => selectableTriggerNodes.value.length > 1 && props.selectedTriggerNodeName !== void 0
15033
+ );
15034
+ function getNodeTypeByName(name) {
15035
+ const node2 = props.triggerNodes.find((trigger2) => trigger2.name === name);
15036
+ if (!node2) {
15037
+ return null;
15038
+ }
15039
+ return props.getNodeType(node2.type, node2.typeVersion);
15040
+ }
12894
15041
  return (_ctx, _cache) => {
12895
- const _component_N8nButton = resolveComponent("N8nButton");
12896
- return openBlock(), createBlock(KeyboardShortcutTooltip, {
12897
- label: label2.value,
12898
- shortcut: { metaKey: true, keys: [""] },
12899
- disabled: _ctx.executing
12900
- }, {
12901
- default: withCtx(() => [
12902
- createVNode(_component_N8nButton, {
12903
- loading: _ctx.executing,
12904
- label: label2.value,
12905
- disabled: _ctx.disabled,
12906
- size: "large",
12907
- icon: "flask",
12908
- type: "primary",
12909
- "data-test-id": "execute-workflow-button",
12910
- onMouseenter: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("mouseenter", $event)),
12911
- onMouseleave: _cache[1] || (_cache[1] = ($event) => _ctx.$emit("mouseleave", $event)),
12912
- onClick: _cache[2] || (_cache[2] = withModifiers(($event) => _ctx.$emit("click", $event), ["stop"]))
12913
- }, null, 8, ["loading", "label", "disabled"])
12914
- ]),
12915
- _: 1
12916
- }, 8, ["label", "disabled"]);
15042
+ const _component_I18nT = resolveComponent("I18nT");
15043
+ const _component_NodeIcon = _sfc_main$O;
15044
+ return openBlock(), createElementBlock("div", {
15045
+ class: normalizeClass([_ctx.$style.component, isSplitButton.value ? _ctx.$style.split : ""])
15046
+ }, [
15047
+ createVNode(KeyboardShortcutTooltip, {
15048
+ label: label2.value,
15049
+ shortcut: { metaKey: true, keys: ["↵"] },
15050
+ disabled: _ctx.executing
15051
+ }, {
15052
+ default: withCtx(() => [
15053
+ createVNode(unref(N8nButton), {
15054
+ class: normalizeClass(_ctx.$style.button),
15055
+ loading: _ctx.executing,
15056
+ disabled: _ctx.disabled,
15057
+ size: "large",
15058
+ icon: "flask",
15059
+ type: "primary",
15060
+ "data-test-id": "execute-workflow-button",
15061
+ onMouseenter: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("mouseenter", $event)),
15062
+ onMouseleave: _cache[1] || (_cache[1] = ($event) => _ctx.$emit("mouseleave", $event)),
15063
+ onClick: _cache[2] || (_cache[2] = ($event) => emit("execute"))
15064
+ }, {
15065
+ default: withCtx(() => [
15066
+ createBaseVNode("span", {
15067
+ class: normalizeClass(_ctx.$style.buttonContent)
15068
+ }, [
15069
+ createTextVNode(toDisplayString(label2.value) + " ", 1),
15070
+ isSplitButton.value ? (openBlock(), createBlock(unref(N8nText), {
15071
+ key: 0,
15072
+ class: normalizeClass(_ctx.$style.subText),
15073
+ bold: false
15074
+ }, {
15075
+ default: withCtx(() => [
15076
+ createVNode(_component_I18nT, { keypath: "nodeView.runButtonText.from" }, {
15077
+ nodeName: withCtx(() => [
15078
+ createVNode(unref(N8nText), {
15079
+ bold: "",
15080
+ size: "mini"
15081
+ }, {
15082
+ default: withCtx(() => [
15083
+ createTextVNode(toDisplayString(unref(truncateBeforeLast)(props.selectedTriggerNodeName ?? "", 25)), 1)
15084
+ ]),
15085
+ _: 1
15086
+ })
15087
+ ]),
15088
+ _: 1
15089
+ })
15090
+ ]),
15091
+ _: 1
15092
+ }, 8, ["class"])) : createCommentVNode("", true)
15093
+ ], 2)
15094
+ ]),
15095
+ _: 1
15096
+ }, 8, ["class", "loading", "disabled"])
15097
+ ]),
15098
+ _: 1
15099
+ }, 8, ["label", "disabled"]),
15100
+ isSplitButton.value ? (openBlock(), createBlock(unref(N8nActionDropdown), {
15101
+ key: 0,
15102
+ class: normalizeClass(_ctx.$style.menu),
15103
+ items: actions2.value,
15104
+ disabled: _ctx.disabled,
15105
+ placement: "top",
15106
+ onSelect: _cache[3] || (_cache[3] = ($event) => emit("selectTriggerNode", $event))
15107
+ }, {
15108
+ activator: withCtx(() => [
15109
+ createVNode(unref(N8nButton), {
15110
+ type: "primary",
15111
+ size: "large",
15112
+ disabled: _ctx.disabled || _ctx.executing,
15113
+ class: normalizeClass(_ctx.$style.chevron),
15114
+ "aria-label": "Select trigger node",
15115
+ icon: "angle-down"
15116
+ }, null, 8, ["disabled", "class"])
15117
+ ]),
15118
+ menuItem: withCtx((item) => [
15119
+ createBaseVNode("div", {
15120
+ class: normalizeClass([_ctx.$style.menuItem, item.disabled ? _ctx.$style.disabled : ""])
15121
+ }, [
15122
+ createVNode(_component_NodeIcon, {
15123
+ class: normalizeClass(_ctx.$style.menuIcon),
15124
+ size: 16,
15125
+ "node-type": getNodeTypeByName(item.id)
15126
+ }, null, 8, ["class", "node-type"]),
15127
+ createBaseVNode("span", null, [
15128
+ createVNode(_component_I18nT, { keypath: "nodeView.runButtonText.from" }, {
15129
+ nodeName: withCtx(() => [
15130
+ createVNode(unref(N8nText), {
15131
+ bold: "",
15132
+ size: "small"
15133
+ }, {
15134
+ default: withCtx(() => [
15135
+ createTextVNode(toDisplayString(item.label), 1)
15136
+ ]),
15137
+ _: 2
15138
+ }, 1024)
15139
+ ]),
15140
+ _: 2
15141
+ }, 1024)
15142
+ ])
15143
+ ], 2)
15144
+ ]),
15145
+ _: 1
15146
+ }, 8, ["class", "items", "disabled"])) : createCommentVNode("", true)
15147
+ ], 2);
12917
15148
  };
12918
15149
  }
12919
15150
  });
15151
+ const component = "_component_18nok_123";
15152
+ const split = "_split_18nok_129";
15153
+ const button = "_button_18nok_129";
15154
+ const chevron = "_chevron_18nok_136";
15155
+ const menu = "_menu_18nok_153";
15156
+ const menuItem = "_menuItem_18nok_157";
15157
+ const disabled = "_disabled_18nok_163";
15158
+ const menuIcon = "_menuIcon_18nok_163";
15159
+ const buttonContent = "_buttonContent_18nok_167";
15160
+ const subText = "_subText_18nok_174";
15161
+ const style0$1 = {
15162
+ component,
15163
+ split,
15164
+ button,
15165
+ chevron,
15166
+ menu,
15167
+ menuItem,
15168
+ disabled,
15169
+ menuIcon,
15170
+ buttonContent,
15171
+ subText
15172
+ };
15173
+ const cssModules$1 = {
15174
+ "$style": style0$1
15175
+ };
15176
+ const CanvasRunWorkflowButton = /* @__PURE__ */ _export_sfc$1(_sfc_main$5, [["__cssModules", cssModules$1]]);
12920
15177
  const state = reactive({
12921
15178
  customActions: {},
12922
15179
  delegatedClickHandler: null
@@ -13018,27 +15275,12 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
13018
15275
  };
13019
15276
  }
13020
15277
  });
13021
- const _sfc_main$2 = /* @__PURE__ */ defineComponent({
13022
- __name: "CanvasClearExecutionDataButton",
13023
- setup(__props) {
13024
- const i18n = useI18n();
13025
- return (_ctx, _cache) => {
13026
- const _component_N8nIconButton = resolveComponent("N8nIconButton");
13027
- return openBlock(), createBlock(_component_N8nIconButton, {
13028
- title: unref(i18n).baseText("nodeView.deletesTheCurrentExecutionData"),
13029
- icon: "trash",
13030
- size: "large",
13031
- "data-test-id": "clear-execution-data-button"
13032
- }, null, 8, ["title"]);
13033
- };
13034
- }
13035
- });
13036
15278
  const _hoisted_1 = { "data-action": "reload" };
13037
15279
  const _hoisted_2 = {
13038
15280
  href: "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.wait/",
13039
15281
  target: "_blank"
13040
15282
  };
13041
- const _sfc_main$1 = /* @__PURE__ */ defineComponent({
15283
+ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
13042
15284
  __name: "NodeViewUnfinishedWorkflowMessage",
13043
15285
  setup(__props) {
13044
15286
  const i18 = useI18n();
@@ -13052,6 +15294,25 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
13052
15294
  };
13053
15295
  }
13054
15296
  });
15297
+ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
15298
+ __name: "CanvasChatButton",
15299
+ props: {
15300
+ label: {},
15301
+ type: {}
15302
+ },
15303
+ setup(__props) {
15304
+ return (_ctx, _cache) => {
15305
+ const _component_N8nButton = resolveComponent("N8nButton");
15306
+ return openBlock(), createBlock(_component_N8nButton, {
15307
+ label: _ctx.label,
15308
+ size: "large",
15309
+ icon: "comment",
15310
+ type: _ctx.type,
15311
+ "data-test-id": "workflow-chat-button"
15312
+ }, null, 8, ["label", "type"]);
15313
+ };
15314
+ }
15315
+ });
13055
15316
  const _sfc_main = /* @__PURE__ */ defineComponent({
13056
15317
  ...{
13057
15318
  name: "NodeView"
@@ -13059,13 +15320,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
13059
15320
  __name: "NodeView",
13060
15321
  setup(__props) {
13061
15322
  const LazyNodeCreation = defineAsyncComponent(
13062
- async () => await __vitePreload(() => import("./NodeCreation-B6jElzI2.js").then((n) => n.N), true ? __vite__mapDeps([0,1,2,3]) : void 0)
15323
+ async () => await __vitePreload(() => import("./NodeCreation-CNH2xciY.js").then((n) => n.N), true ? __vite__mapDeps([0,1,2,3]) : void 0)
13063
15324
  );
13064
15325
  const LazyNodeDetailsView = defineAsyncComponent(
13065
- async () => await __vitePreload(() => import("./NodeDetailsView-BLMLHNQw.js"), true ? __vite__mapDeps([4,1,2,5,6,7,8,9,10,11,12,13,14,15]) : void 0)
15326
+ async () => await __vitePreload(() => import("./NodeDetailsView-DQ4I8u72.js"), true ? __vite__mapDeps([4,1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18]) : void 0)
13066
15327
  );
13067
15328
  const LazySetupWorkflowCredentialsButton = defineAsyncComponent(
13068
- async () => await __vitePreload(() => import("./SetupWorkflowCredentialsButton-DFtZhM9C.js"), true ? __vite__mapDeps([16,1,2]) : void 0)
15329
+ async () => await __vitePreload(() => import("./SetupWorkflowCredentialsButton-DgTQe_yd.js"), true ? __vite__mapDeps([19,1,2]) : void 0)
13069
15330
  );
13070
15331
  const $style = useCssModule();
13071
15332
  const router = useRouter();
@@ -13076,7 +15337,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
13076
15337
  const toast = useToast();
13077
15338
  const message = useMessage();
13078
15339
  const documentTitle = useDocumentTitle();
13079
- const workflowHelpers = useWorkflowHelpers({ router });
15340
+ const workflowHelpers = useWorkflowHelpers();
15341
+ const workflowSaving = useWorkflowSaving({ router });
13080
15342
  const nodeHelpers = useNodeHelpers();
13081
15343
  const nodeTypesStore = useNodeTypesStore();
13082
15344
  const uiStore = useUIStore();
@@ -13149,7 +15411,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
13149
15411
  editableWorkflowObject,
13150
15412
  lastClickPosition,
13151
15413
  startChat
13152
- } = useCanvasOperations({ router });
15414
+ } = useCanvasOperations();
13153
15415
  const { extractWorkflow } = useWorkflowExtraction();
13154
15416
  const { applyExecutionData } = useExecutionDebugging();
13155
15417
  useClipboard({ onPaste: onClipboardPaste });
@@ -13571,7 +15833,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
13571
15833
  if (workflowIsSaved || workflowIsArchived) {
13572
15834
  return;
13573
15835
  }
13574
- const saved = await workflowHelpers.saveCurrentWorkflow();
15836
+ const saved = await workflowSaving.saveCurrentWorkflow();
13575
15837
  if (saved) {
13576
15838
  canvasEventBus.emit("saved:workflow");
13577
15839
  }
@@ -13603,6 +15865,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
13603
15865
  }
13604
15866
  async function onOpenRenameNodeModal(id2) {
13605
15867
  const currentName = workflowsStore.getNodeById(id2)?.name ?? "";
15868
+ const activeElement = document.activeElement;
15869
+ if (activeElement && activeElement.tagName === "INPUT") {
15870
+ return;
15871
+ }
13606
15872
  if (!keyBindingsEnabled.value || document.querySelector(".rename-prompt")) return;
13607
15873
  try {
13608
15874
  const promptResponsePromise = message.prompt(
@@ -13687,8 +15953,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
13687
15953
  revertCreateConnection(connection);
13688
15954
  }
13689
15955
  function onCreateConnectionCancelled(event, position2, mouseEvent) {
13690
- const preventDefault = (mouseEvent?.target).classList?.contains("clickable");
13691
- if (preventDefault) {
15956
+ const preventDefault2 = (mouseEvent?.target).classList?.contains("clickable");
15957
+ if (preventDefault2) {
13692
15958
  return;
13693
15959
  }
13694
15960
  uiStore.lastInteractedWithNodeId = event.nodeId;
@@ -13757,7 +16023,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
13757
16023
  nodeViewEventBus.off("importWorkflowUrl", onImportWorkflowUrlEvent);
13758
16024
  nodeViewEventBus.off("openChat", onOpenChat);
13759
16025
  }
13760
- async function onAddNodesAndConnections({ nodes, connections }, dragAndDrop = false, position2) {
16026
+ async function onAddNodesAndConnections({ nodes, connections: connections2 }, dragAndDrop = false, position2) {
13761
16027
  if (!checkIfEditingIsAllowed()) {
13762
16028
  return;
13763
16029
  }
@@ -13769,7 +16035,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
13769
16035
  telemetry: true
13770
16036
  });
13771
16037
  const offsetIndex = editableWorkflow.value.nodes.length - nodes.length;
13772
- const mappedConnections = connections.map(({ from, to }) => {
16038
+ const mappedConnections = connections2.map(({ from, to }) => {
13773
16039
  const fromNode = editableWorkflow.value.nodes[offsetIndex + from.nodeIndex];
13774
16040
  const toNode = editableWorkflow.value.nodes[offsetIndex + to.nodeIndex];
13775
16041
  const type = from.type ?? to.type ?? NodeConnectionTypes.Main;
@@ -13813,8 +16079,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
13813
16079
  setNodeActiveByName(nodeName);
13814
16080
  selectNodes([node2.id]);
13815
16081
  }
13816
- async function onOpenSelectiveNodeCreator(node2, connectionType) {
13817
- nodeCreatorStore.openSelectiveNodeCreator({ node: node2, connectionType });
16082
+ async function onOpenSelectiveNodeCreator(node2, connectionType2) {
16083
+ nodeCreatorStore.openSelectiveNodeCreator({ node: node2, connectionType: connectionType2 });
13818
16084
  }
13819
16085
  async function onOpenNodeCreatorForTriggerNodes(source) {
13820
16086
  nodeCreatorStore.openNodeCreatorForTriggerNodes(source);
@@ -13867,7 +16133,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
13867
16133
  const isStopWaitingForWebhookButtonVisible = computed(
13868
16134
  () => isWorkflowRunning.value && isExecutionWaitingForWebhook.value
13869
16135
  );
13870
- const isClearExecutionButtonVisible = useClearExecutionButtonVisible();
13871
16136
  async function onRunWorkflowToNode(id2) {
13872
16137
  const node2 = workflowsStore.getNodeById(id2);
13873
16138
  if (!node2) return;
@@ -13949,7 +16214,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
13949
16214
  if (data.waitTill) {
13950
16215
  toast.showMessage({
13951
16216
  title: i18n.baseText("nodeView.thisExecutionHasntFinishedYet"),
13952
- message: h(_sfc_main$1),
16217
+ message: h(_sfc_main$2),
13953
16218
  type: "warning",
13954
16219
  duration: 0
13955
16220
  });
@@ -13971,10 +16236,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
13971
16236
  async function onStopWaitingForWebhook() {
13972
16237
  await stopWaitingForWebhook();
13973
16238
  }
13974
- async function onClearExecutionData() {
13975
- workflowsStore.workflowExecutionData = null;
13976
- nodeHelpers.updateNodesExecutionIssues();
13977
- }
13978
16239
  function onRunWorkflowButtonMouseEnter() {
13979
16240
  nodeViewEventBus.emit("runWorkflowButton:mouseenter");
13980
16241
  }
@@ -14208,10 +16469,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
14208
16469
  key: "openSelectiveNodeCreator",
14209
16470
  action: ({
14210
16471
  creatorview: creatorView,
14211
- connectiontype: connectionType,
16472
+ connectiontype: connectionType2,
14212
16473
  node: node2
14213
16474
  }) => {
14214
- nodeCreatorStore.openSelectiveNodeCreator({ node: node2, connectionType, creatorView });
16475
+ nodeCreatorStore.openSelectiveNodeCreator({ node: node2, connectionType: connectionType2, creatorView });
14215
16476
  }
14216
16477
  });
14217
16478
  registerCustomAction({
@@ -14390,7 +16651,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
14390
16651
  }
14391
16652
  });
14392
16653
  return (_ctx, _cache) => {
14393
- const _component_CanvasChatButton = _sfc_main$G;
14394
16654
  return unref(editableWorkflow) && unref(editableWorkflowObject) && !isLoading.value ? (openBlock(), createBlock(WorkflowCanvas, {
14395
16655
  key: 0,
14396
16656
  id: unref(editableWorkflow).id,
@@ -14457,32 +16717,38 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
14457
16717
  key: 0,
14458
16718
  class: normalizeClass(unref($style).executionButtons)
14459
16719
  }, [
14460
- isRunWorkflowButtonVisible.value ? (openBlock(), createBlock(_sfc_main$5, {
16720
+ isRunWorkflowButtonVisible.value ? (openBlock(), createBlock(CanvasRunWorkflowButton, {
14461
16721
  key: 0,
14462
16722
  "waiting-for-webhook": isExecutionWaitingForWebhook.value,
14463
16723
  disabled: isExecutionDisabled.value,
14464
16724
  executing: isWorkflowRunning.value,
16725
+ "trigger-nodes": triggerNodes.value,
16726
+ "get-node-type": unref(nodeTypesStore).getNodeType,
16727
+ "selected-trigger-node-name": unref(workflowsStore).selectedTriggerNodeName,
14465
16728
  onMouseenter: onRunWorkflowButtonMouseEnter,
14466
16729
  onMouseleave: onRunWorkflowButtonMouseLeave,
14467
- onClick: _cache[0] || (_cache[0] = ($event) => unref(runEntireWorkflow)("main"))
14468
- }, null, 8, ["waiting-for-webhook", "disabled", "executing"])) : createCommentVNode("", true),
16730
+ onExecute: _cache[0] || (_cache[0] = ($event) => unref(runEntireWorkflow)("main")),
16731
+ onSelectTriggerNode: unref(workflowsStore).setSelectedTriggerNodeName
16732
+ }, null, 8, ["waiting-for-webhook", "disabled", "executing", "trigger-nodes", "get-node-type", "selected-trigger-node-name", "onSelectTriggerNode"])) : createCommentVNode("", true),
14469
16733
  containsChatTriggerNodes.value ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
14470
- isLogsPanelOpen.value ? (openBlock(), createBlock(_component_CanvasChatButton, {
16734
+ isLogsPanelOpen.value ? (openBlock(), createBlock(_sfc_main$1, {
14471
16735
  key: 0,
14472
16736
  type: "tertiary",
14473
16737
  label: unref(i18n).baseText("chat.hide"),
16738
+ class: normalizeClass(unref($style).chatButton),
14474
16739
  onClick: _cache[1] || (_cache[1] = ($event) => unref(logsStore).toggleOpen(false))
14475
- }, null, 8, ["label"])) : (openBlock(), createBlock(KeyboardShortcutTooltip, {
16740
+ }, null, 8, ["label", "class"])) : (openBlock(), createBlock(KeyboardShortcutTooltip, {
14476
16741
  key: 1,
14477
16742
  label: unref(i18n).baseText("chat.open"),
14478
16743
  shortcut: { keys: ["c"] }
14479
16744
  }, {
14480
16745
  default: withCtx(() => [
14481
- createVNode(_component_CanvasChatButton, {
14482
- type: "primary",
16746
+ createVNode(_sfc_main$1, {
16747
+ type: isRunWorkflowButtonVisible.value ? "secondary" : "primary",
14483
16748
  label: unref(i18n).baseText("chat.open"),
16749
+ class: normalizeClass(unref($style).chatButton),
14484
16750
  onClick: onOpenChat
14485
- }, null, 8, ["label"])
16751
+ }, null, 8, ["type", "label", "class"])
14486
16752
  ]),
14487
16753
  _: 1
14488
16754
  }, 8, ["label"]))
@@ -14495,10 +16761,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
14495
16761
  isStopWaitingForWebhookButtonVisible.value ? (openBlock(), createBlock(_sfc_main$3, {
14496
16762
  key: 3,
14497
16763
  onClick: onStopWaitingForWebhook
14498
- })) : createCommentVNode("", true),
14499
- unref(isClearExecutionButtonVisible) && !unref(settingsStore).isNewLogsEnabled ? (openBlock(), createBlock(_sfc_main$2, {
14500
- key: 4,
14501
- onClick: onClearExecutionData
14502
16764
  })) : createCommentVNode("", true)
14503
16765
  ], 2)) : createCommentVNode("", true),
14504
16766
  isReadOnlyEnvironment.value ? (openBlock(), createBlock(unref(N8nCallout), {
@@ -14546,11 +16808,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
14546
16808
  };
14547
16809
  }
14548
16810
  });
14549
- const executionButtons = "_executionButtons_8gz1l_123";
14550
- const setupCredentialsButtonWrapper = "_setupCredentialsButtonWrapper_8gz1l_161";
14551
- const readOnlyEnvironmentNotification = "_readOnlyEnvironmentNotification_8gz1l_167";
16811
+ const executionButtons = "_executionButtons_1d2c1_123";
16812
+ const chatButton = "_chatButton_1d2c1_160";
16813
+ const setupCredentialsButtonWrapper = "_setupCredentialsButtonWrapper_1d2c1_164";
16814
+ const readOnlyEnvironmentNotification = "_readOnlyEnvironmentNotification_1d2c1_170";
14552
16815
  const style0 = {
14553
16816
  executionButtons,
16817
+ chatButton,
14554
16818
  setupCredentialsButtonWrapper,
14555
16819
  readOnlyEnvironmentNotification
14556
16820
  };
@@ -14558,6 +16822,11 @@ const cssModules = {
14558
16822
  "$style": style0
14559
16823
  };
14560
16824
  const NodeView = /* @__PURE__ */ _export_sfc$1(_sfc_main, [["__cssModules", cssModules]]);
16825
+ const NodeView$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
16826
+ __proto__: null,
16827
+ default: NodeView
16828
+ }, Symbol.toStringTag, { value: "Module" }));
14561
16829
  export {
14562
- NodeView as default
16830
+ NodeSettings as N,
16831
+ NodeView$1 as a
14563
16832
  };