n8n-editor-ui 1.50.0 → 1.51.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/dist/assets/@vue-flow/{background-D_Un7DUl.js → background-Dvxud2mg.js} +2 -2
  2. package/dist/assets/@vue-flow/{controls-BwRI_oge.js → controls-C3soidEc.js} +2 -2
  3. package/dist/assets/@vue-flow/{core-OODHovzO.js → core-CjwW6FwV.js} +10 -7
  4. package/dist/assets/@vue-flow/{minimap-BK2HcOSp.js → minimap-Bdd7TR2F.js} +2 -2
  5. package/dist/assets/@vue-flow/node-resizer-B3B5vubL.js +1398 -0
  6. package/dist/assets/@vueuse/{core-cLiG7CtG.js → core-DjbzQ1zB.js} +1 -1
  7. package/dist/assets/{AuthView-X1SFBaF1.js → AuthView-D4AY2lG5.js} +4 -4
  8. package/dist/assets/{CanvasControls-0ivxz7Ti.js → CanvasControls-CfTh2Ydp.js} +9 -9
  9. package/dist/assets/{ChangePasswordView-D1AyLiKV.js → ChangePasswordView-D6il8yDq.js} +10 -10
  10. package/dist/assets/{CredentialsView-BrEWpUA6.js → CredentialsView-aMWz0C3L.js} +12 -12
  11. package/dist/assets/{ErrorView-DPtWIG36.js → ErrorView-7hKlN5Su.js} +9 -9
  12. package/dist/assets/{ExecutionsFilter-Ci6gzM02.js → ExecutionsFilter-y_Gmk-5v.js} +35 -38
  13. package/dist/assets/{ExecutionsView-Bkwi-uXS.js → ExecutionsView-oios3cTt.js} +13 -13
  14. package/dist/assets/{FixedCollectionParameter-C5RRl4SC.js → FixedCollectionParameter-D8PZsjZ7.js} +3 -3
  15. package/dist/assets/{ForgotMyPasswordView-CIV9aURd.js → ForgotMyPasswordView-CS5TJm_8.js} +10 -10
  16. package/dist/assets/{MainHeader-D1eKSlie.js → MainHeader-B5fmiuFU.js} +40 -37
  17. package/dist/assets/{MainSidebar-Bdxgc_Q4.js → MainSidebar-DPoI02fO.js} +10 -10
  18. package/dist/assets/{NodeCreation-DhCMWAHz.js → NodeCreation-9z7kz5cV.js} +6 -6
  19. package/dist/assets/{NodeCreator-cioFSjj3.css → NodeCreator-Bz15fuWb.css} +4 -4
  20. package/dist/assets/{NodeCreator-9HUJtyAc.js → NodeCreator-E5ds8YA5.js} +26 -27
  21. package/dist/assets/{NodeViewSwitcher-2Mhemz_y.js → NodeViewSwitcher-DKnME7-U.js} +1333 -812
  22. package/dist/assets/{NodeViewSwitcher-BCjS1poa.css → NodeViewSwitcher-IiB9O97Y.css} +120 -60
  23. package/dist/assets/{ProjectCardBadge-DYzNsr-8.js → ProjectCardBadge-CyR5DZvm.js} +2 -2
  24. package/dist/assets/{ProjectSettings-DytTrufU.js → ProjectSettings-DHWMZyem.js} +10 -10
  25. package/dist/assets/{ProjectTabs-coPTq6VD.js → ProjectTabs-CACEEWLe.js} +3 -3
  26. package/dist/assets/{PushConnectionTracker-Brquv_T8.js → PushConnectionTracker-DqfHYTh2.js} +4 -4
  27. package/dist/assets/{ResourcesListLayout-CFdCGqhE.js → ResourcesListLayout-CTRUR5-L.js} +4 -4
  28. package/dist/assets/{RunDataAi-Bj3_C5yZ.js → RunDataAi-CujvnObq.js} +9 -9
  29. package/dist/assets/{RunDataJson-D2lW8ojA.js → RunDataJson-CIbPVd1F.js} +25 -24
  30. package/dist/assets/{RunDataJsonActions-B_wS0oJY.js → RunDataJsonActions-DgL-lMzr.js} +10 -10
  31. package/dist/assets/{RunDataSchema-CPXsu2BO.js → RunDataSchema-DMZuyqVF.js} +70 -53
  32. package/dist/assets/{RunDataSchema-DTbSxIk6.css → RunDataSchema-ECZtkGiE.css} +32 -32
  33. package/dist/assets/{RunDataSearch-qonVj6CG.js → RunDataSearch-D0zXe7Il.js} +9 -9
  34. package/dist/assets/{RunDataTable-CXm7q60S.js → RunDataTable-BDZKz7Ur.js} +23 -22
  35. package/dist/assets/{SamlOnboarding-BIoCWTNJ.js → SamlOnboarding-P3os3TUc.js} +10 -10
  36. package/dist/assets/{SettingsApiView-CTpFCYz5.js → SettingsApiView-BHHZACtD.js} +9 -9
  37. package/dist/assets/{SettingsCommunityNodesView-DVQFca5A.js → SettingsCommunityNodesView-kGfd429d.js} +11 -11
  38. package/dist/assets/{SettingsExternalSecrets-tKdU0Cyo.js → SettingsExternalSecrets-CxVm3gdj.js} +9 -9
  39. package/dist/assets/{SettingsFakeDoorView-DoqmsIyZ.js → SettingsFakeDoorView-sg4W02we.js} +9 -9
  40. package/dist/assets/{SettingsLdapView-BR3vnWbH.js → SettingsLdapView-DBjl2l35.js} +11 -11
  41. package/dist/assets/{SettingsLogStreamingView-Bp1WSJza.js → SettingsLogStreamingView-DC1Vt1xr.js} +9 -9
  42. package/dist/assets/SettingsPersonalView-DaiUtCj1.js +402 -0
  43. package/dist/assets/{SettingsSourceControl-Be3KrYm-.js → SettingsSourceControl-D1vzkxWU.js} +9 -9
  44. package/dist/assets/{SettingsSso-QGvdjT0O.js → SettingsSso-D149aJS_.js} +9 -9
  45. package/dist/assets/{SettingsUsageAndPlan-NYlFQ5oQ.js → SettingsUsageAndPlan-BZ6FL9zH.js} +9 -9
  46. package/dist/assets/SettingsUsersView-DpPldpCU.js +353 -0
  47. package/dist/assets/{SettingsView-doXMTt0d.js → SettingsView-7POFD9hj.js} +10 -10
  48. package/dist/assets/{SetupView-BMWHud_y.js → SetupView-BdzoKioo.js} +10 -10
  49. package/dist/assets/{SetupWorkflowCredentialsButton-DUoHmZtW.js → SetupWorkflowCredentialsButton-DT4ZQ6H3.js} +10 -10
  50. package/dist/assets/{SetupWorkflowFromTemplateView-V9BeQExr.js → SetupWorkflowFromTemplateView-5dhEbEa9.js} +11 -11
  51. package/dist/assets/{SigninView-ClRBq7kl.js → SigninView-D_x6a4uq.js} +10 -10
  52. package/dist/assets/{SignoutView-BlGE9lkX.js → SignoutView-XPcJ9Rfb.js} +9 -9
  53. package/dist/assets/{SignupView-wMWxfBDi.js → SignupView-CR5gvKxn.js} +10 -10
  54. package/dist/assets/{TemplateDetails-y4lukUpw.js → TemplateDetails-C9Ekw9lR.js} +36 -36
  55. package/dist/assets/{TemplateList-Bt5HGUf8.js → TemplateList-Cp9pj-6d.js} +3 -3
  56. package/dist/assets/{TemplatesCollectionView-CNZC3JKO.js → TemplatesCollectionView-DZAXCw6p.js} +13 -13
  57. package/dist/assets/{TemplatesSearchView-DgebNlAm.js → TemplatesSearchView-CxakoRrB.js} +54 -56
  58. package/dist/assets/{TemplatesView-mI_05KUq.js → TemplatesView-C-YJ-BC4.js} +27 -37
  59. package/dist/assets/{TemplatesWorkflowView-B75XVRs0.js → TemplatesWorkflowView-DETA5Cj8.js} +13 -13
  60. package/dist/assets/{TextWithHighlights-D4eF9kOt.js → TextWithHighlights-D2q_A9ZR.js} +2 -2
  61. package/dist/assets/{VariablesView-G_H7UQIQ.js → VariablesView-WJWXH8Ir.js} +10 -10
  62. package/dist/assets/{WorkerView-BsiJfLYo.js → WorkerView-wIvLi07W.js} +13 -13
  63. package/dist/assets/WorkflowActivator-DkN3MMKq.js +167 -0
  64. package/dist/assets/{WorkflowActivator-CXOAB341.css → WorkflowActivator-cE2ZZAM9.css} +2 -2
  65. package/dist/assets/{WorkflowExecutionsInfoAccordion-xoS58CZa.js → WorkflowExecutionsInfoAccordion-W2Fkf5gF.js} +4 -4
  66. package/dist/assets/{WorkflowExecutionsLandingPage-nivWYbjE.js → WorkflowExecutionsLandingPage-DAbf8PFh.js} +10 -10
  67. package/dist/assets/{WorkflowExecutionsPreview-DTxBSSPe.js → WorkflowExecutionsPreview-BXEnvDw4.js} +13 -13
  68. package/dist/assets/{WorkflowExecutionsView-BhMONfF7.js → WorkflowExecutionsView-LgtLU8Qx.js} +14 -14
  69. package/dist/assets/{WorkflowHistory-B6Z1TABJ.js → WorkflowHistory-BqlZGYdU.js} +11 -11
  70. package/dist/assets/{WorkflowOnboardingView-DNKsVWSn.js → WorkflowOnboardingView-D0_yq6ZI.js} +10 -10
  71. package/dist/assets/{WorkflowPreview-CoBAWZWQ.js → WorkflowPreview-B4znXiwm.js} +3 -3
  72. package/dist/assets/{WorkflowsView-aOaRbWeD.js → WorkflowsView-DKG0j1hb.js} +14 -14
  73. package/dist/assets/{cloud-Cee-Yplf.js → cloud-BvGcpbZS.js} +10 -10
  74. package/dist/assets/{dateFormatter-DqxIOphq.js → dateFormatter-Cz94F6Me.js} +1 -1
  75. package/dist/assets/{dateformat-B0XmVuvm.js → dateformat-BGxyBe2P.js} +1 -1
  76. package/dist/assets/email-providers-DbqVx1jr.js +1 -0
  77. package/dist/assets/{fast-json-stable-stringify-BkuDyKfx.js → fast-json-stable-stringify-Dwd4D7iT.js} +1 -1
  78. package/dist/assets/{file-saver-DmnSLJjs.js → file-saver-EX5V8lV4.js} +1 -1
  79. package/dist/assets/{humanize-duration-BATzEL0p.js → humanize-duration-DTXBersx.js} +1 -1
  80. package/dist/assets/{index-BGdiexS3.css → index-DQ-dNHi3.css} +134 -25
  81. package/dist/assets/{index-C-mVy0Gl.js → index-bKbgEkwQ.js} +1163 -1178
  82. package/dist/assets/{jsonpath-UEgivab5.js → jsonpath-vdx3Kmku.js} +1 -1
  83. package/dist/assets/{n8n-CwcFEeof.js → n8n-BZOg0o2s.js} +666 -593
  84. package/dist/assets/{pinia-BcU9Qewp.js → pinia-6fcdwe0b.js} +1 -1
  85. package/dist/assets/{pushConnection.store-DADRfGHk.js → pushConnection.store-2X3NZvi8.js} +3 -3
  86. package/dist/assets/{qrcode.vue-DI7-KOl3.js → qrcode.vue-DO5L5sO1.js} +1 -1
  87. package/dist/assets/{templateActions-DydpyEkH.js → templateActions-B_GseBMR.js} +1 -1
  88. package/dist/assets/{useExecutionDebugging-D1N49Q2-.js → useExecutionDebugging-Bey9JfcT.js} +2 -2
  89. package/dist/assets/{useExecutionHelpers-M9Md5Dgl.js → useExecutionHelpers-BYv3kLRF.js} +2 -2
  90. package/dist/assets/{usePushConnection-C205DbDr.js → usePushConnection-BKCthfxZ.js} +5 -5
  91. package/dist/assets/{useUserHelpers-CVCKidGW.js → useUserHelpers-CBFICkao.js} +1 -1
  92. package/dist/assets/{useWorkflowActivate-DwWkEDON.js → useWorkflowActivate-0fT4N7sc.js} +2 -2
  93. package/dist/assets/{v3-infinite-loading-DAn86T_B.js → v3-infinite-loading-C4Fo1u2C.js} +1 -1
  94. package/dist/assets/{vendor-CqkvC5oQ.js → vendor-CMkNOP5U.js} +18 -17
  95. package/dist/assets/{vue-agile-DiVtruag.js → vue-agile-RIE3GEnw.js} +2 -2
  96. package/dist/assets/{vue-chartjs-CEoYgQDg.js → vue-chartjs-Bdp9pkPO.js} +1 -1
  97. package/dist/assets/{vue-i18n-CakRshnZ.js → vue-i18n-ia8PeNLb.js} +1 -1
  98. package/dist/assets/{vue-json-pretty-DP0y-sh1.js → vue-json-pretty-Smey0Oxa.js} +2 -2
  99. package/dist/assets/xss-DbqVx1jr.js +1 -0
  100. package/dist/index.html +11 -11
  101. package/package.json +1 -1
  102. package/dist/assets/SettingsPersonalView-DGEm1cdP.js +0 -415
  103. package/dist/assets/SettingsUsersView-ByLVUbAF.js +0 -366
  104. package/dist/assets/WorkflowActivator-CiUncJ1V.js +0 -172
  105. package/dist/assets/email-providers-BXHlM8aX.js +0 -1
  106. package/dist/assets/xss-BXHlM8aX.js +0 -1
  107. /package/dist/{google-auth → static/google-auth}/disabled.dark.png +0 -0
  108. /package/dist/{google-auth → static/google-auth}/disabled.png +0 -0
  109. /package/dist/{google-auth → static/google-auth}/focus.dark.png +0 -0
  110. /package/dist/{google-auth → static/google-auth}/focus.png +0 -0
  111. /package/dist/{google-auth → static/google-auth}/normal.dark.png +0 -0
  112. /package/dist/{google-auth → static/google-auth}/normal.png +0 -0
  113. /package/dist/{google-auth → static/google-auth}/pressed.dark.png +0 -0
  114. /package/dist/{google-auth → static/google-auth}/pressed.png +0 -0
@@ -1,24 +1,25 @@
1
- const __vite__fileDeps=["assets/RunDataTable-CXm7q60S.js","assets/vendor-CqkvC5oQ.js","assets/pinia-BcU9Qewp.js","assets/index-C-mVy0Gl.js","assets/axios-Cp0EV6RZ.js","assets/flatted-D70IerrI.js","assets/n8n-CwcFEeof.js","assets/esprima-next-CPsTzYsC.js","assets/luxon-0uZhUj7B.js","assets/lodash-es-COViF6dG.js","assets/@vueuse/core-cLiG7CtG.js","assets/uuid-sKupIUZ4.js","assets/n8n-HyitiRil.css","assets/@n8n/permissions-DSKt-Zl7.js","assets/dateformat-B0XmVuvm.js","assets/vue-i18n-CakRshnZ.js","assets/@n8n/codemirror-lang-CIGGB1t0.js","assets/@lezer/common-CnY9etib.js","assets/@n8n/codemirror-lang-sql-C41WNa63.js","assets/prettier-_aQB57xD.js","assets/@jsplumb/util-BwtpiQ4c.js","assets/@jsplumb/core-B__RSZHf.js","assets/@jsplumb/common-s1StEx7B.js","assets/@jsplumb/connector-bezier-D659hq4c.js","assets/@jsplumb/browser-ui-BphmFVJY.js","assets/codemirror-lang-html-n8n-CXTCIWzP.js","assets/fast-json-stable-stringify-BkuDyKfx.js","assets/timeago.js-CgQus8nl.js","assets/qrcode.vue-DI7-KOl3.js","assets/vue3-touch-events-DVOgU3fI.js","assets/chart.js-DiBOFLDH.js","assets/index-BGdiexS3.css","assets/TextWithHighlights-D4eF9kOt.js","assets/TextWithHighlights-D6qDtZxR.css","assets/useExecutionDebugging-D1N49Q2-.js","assets/file-saver-DmnSLJjs.js","assets/vue-json-pretty-DP0y-sh1.js","assets/dateFormatter-DqxIOphq.js","assets/RunDataAi-Bj3_C5yZ.js","assets/RunDataAi-HUzSX62R.css","assets/useWorkflowActivate-DwWkEDON.js","assets/pushConnection.store-DADRfGHk.js","assets/@vue-flow/core-OODHovzO.js","assets/@vue-flow/background-D_Un7DUl.js","assets/@vue-flow/controls-BwRI_oge.js","assets/@vue-flow/minimap-BK2HcOSp.js","assets/RunDataTable-ZwoYenSI.css","assets/RunDataJson-D2lW8ojA.js","assets/RunDataJson-DGge2zsB.css","assets/RunDataSchema-CPXsu2BO.js","assets/RunDataSchema-DTbSxIk6.css","assets/RunDataSearch-qonVj6CG.js","assets/RunDataSearch-BA0wlJtp.css","assets/NodeCreation-DhCMWAHz.js","assets/NodeCreation-DZWp-d3f.css","assets/CanvasControls-0ivxz7Ti.js","assets/CanvasControls-CdlXdkgj.css","assets/SetupWorkflowCredentialsButton-DUoHmZtW.js"],__vite__mapDeps=i=>i.map(i=>__vite__fileDeps[i]);
2
- import { a as ref, f as computed, b as watch, Z as defineComponent, ao as resolveComponent, J as openBlock, K as createElementBlock, I as createBaseVNode, a9 as createVNode, $ as normalizeClass, a4 as withCtx, a7 as createTextVNode, a8 as toDisplayString, V as createBlock, U as createCommentVNode, ah as withKeys, ad as withModifiers, n as nextTick, aL as useRouter, aB as pushScopeId, aC as popScopeId, R as Fragment, ag as renderList, av as resolveDirective, a5 as withDirectives, a0 as normalizeStyle, a1 as mergeProps, aa as vShow, _ as renderSlot, Y as Teleport, a6 as resolveDynamicComponent, q as onMounted, m as onBeforeUnmount, u as unref, j as toRef, aO as defineAsyncComponent, aQ as Suspense, ai as createSlots, L as createStaticVNode, a3 as Transition, k as getCurrentInstance, i as inject, aA as useCssModule, a2 as useSlots, X as h, p as provide, x as onUnmounted, aE as useRoute, aV as onBeforeRouteLeave, l as onBeforeMount } from "./vendor-CqkvC5oQ.js";
3
- import { a7 as useLocalStorage } from "./@vueuse/core-cLiG7CtG.js";
4
- import { ah as useDeviceSupport, _ as _export_sfc, N as NodeConnectionType, am as nodeIssuesToString, m as getNodeInputs, k as getConnectionTypes, an as isSingleExecution, f as deepCopy, o as getNodeParameters, ao as isINodePropertyCollectionList, ap as isINodePropertiesList, aq as isINodePropertyOptionsList, ac as displayParameter, ar as sanitizeHtml, as as sanitizeHtml_1, j as jsonParse, h as getNodeOutputs, at as getNodeHints, e as __vitePreload, b as createEventBus, au as N8nActionDropdown, al as FontAwesomeIcon, x as xss, n as nodeConnectionTypes, av as generateNodesGraph } from "./n8n-CwcFEeof.js";
5
- import { m as mapStores, s as storeToRefs, d as defineStore } from "./pinia-BcU9Qewp.js";
1
+ const __vite__fileDeps=["assets/RunDataTable-BDZKz7Ur.js","assets/vendor-CMkNOP5U.js","assets/pinia-6fcdwe0b.js","assets/index-bKbgEkwQ.js","assets/axios-Cp0EV6RZ.js","assets/n8n-BZOg0o2s.js","assets/esprima-next-CPsTzYsC.js","assets/luxon-0uZhUj7B.js","assets/lodash-es-COViF6dG.js","assets/@vueuse/core-DjbzQ1zB.js","assets/uuid-sKupIUZ4.js","assets/n8n-HyitiRil.css","assets/flatted-D70IerrI.js","assets/@n8n/permissions-DSKt-Zl7.js","assets/dateformat-BGxyBe2P.js","assets/vue-i18n-ia8PeNLb.js","assets/@n8n/codemirror-lang-CIGGB1t0.js","assets/@lezer/common-CnY9etib.js","assets/@n8n/codemirror-lang-sql-C41WNa63.js","assets/prettier-_aQB57xD.js","assets/@jsplumb/util-BwtpiQ4c.js","assets/@jsplumb/core-B__RSZHf.js","assets/@jsplumb/common-s1StEx7B.js","assets/@jsplumb/connector-bezier-D659hq4c.js","assets/@jsplumb/browser-ui-BphmFVJY.js","assets/codemirror-lang-html-n8n-CXTCIWzP.js","assets/fast-json-stable-stringify-Dwd4D7iT.js","assets/timeago.js-CgQus8nl.js","assets/qrcode.vue-DO5L5sO1.js","assets/vue3-touch-events-DVOgU3fI.js","assets/chart.js-DiBOFLDH.js","assets/index-DQ-dNHi3.css","assets/TextWithHighlights-D2q_A9ZR.js","assets/TextWithHighlights-D6qDtZxR.css","assets/useExecutionDebugging-Bey9JfcT.js","assets/file-saver-EX5V8lV4.js","assets/vue-json-pretty-Smey0Oxa.js","assets/dateFormatter-Cz94F6Me.js","assets/RunDataAi-CujvnObq.js","assets/RunDataAi-HUzSX62R.css","assets/useWorkflowActivate-0fT4N7sc.js","assets/pushConnection.store-2X3NZvi8.js","assets/@vue-flow/core-CjwW6FwV.js","assets/@vue-flow/background-Dvxud2mg.js","assets/@vue-flow/controls-C3soidEc.js","assets/@vue-flow/minimap-Bdd7TR2F.js","assets/@vue-flow/node-resizer-B3B5vubL.js","assets/RunDataTable-ZwoYenSI.css","assets/RunDataJson-CIbPVd1F.js","assets/RunDataJson-DGge2zsB.css","assets/RunDataSchema-DMZuyqVF.js","assets/RunDataSchema-ECZtkGiE.css","assets/RunDataSearch-D0zXe7Il.js","assets/RunDataSearch-BA0wlJtp.css","assets/NodeCreation-9z7kz5cV.js","assets/NodeCreation-DZWp-d3f.css","assets/CanvasControls-CfTh2Ydp.js","assets/CanvasControls-CdlXdkgj.css","assets/SetupWorkflowCredentialsButton-DT4ZQ6H3.js"],__vite__mapDeps=i=>i.map(i=>__vite__fileDeps[i]);
2
+ import { a as ref, f as computed, b as watch, Z as defineComponent, ao as resolveComponent, J as openBlock, K as createElementBlock, I as createBaseVNode, a9 as createVNode, $ as normalizeClass, a4 as withCtx, a7 as createTextVNode, a8 as toDisplayString, V as createBlock, U as createCommentVNode, ah as withKeys, ad as withModifiers, n as nextTick, aM as useRouter, aB as pushScopeId, aC as popScopeId, R as Fragment, ag as renderList, av as resolveDirective, a5 as withDirectives, a0 as normalizeStyle, a1 as mergeProps, aa as vShow, _ as renderSlot, Y as Teleport, a6 as resolveDynamicComponent, q as onMounted, m as onBeforeUnmount, a2 as useSlots, u as unref, j as toRef, aP as defineAsyncComponent, aR as Suspense, ai as createSlots, L as createStaticVNode, a3 as Transition, k as getCurrentInstance, i as inject, aA as useCssModule, X as h, p as provide, x as onUnmounted, aE as useRoute, aW as onBeforeRouteLeave, l as onBeforeMount } from "./vendor-CMkNOP5U.js";
3
+ import { a7 as useLocalStorage } from "./@vueuse/core-DjbzQ1zB.js";
4
+ import { ai as useDeviceSupport, _ as _export_sfc, N as NodeConnectionType, an as nodeIssuesToString, m as getNodeInputs, k as getConnectionTypes, ao as isSingleExecution, f as deepCopy, o as getNodeParameters, ap as isINodePropertyCollectionList, aq as isINodePropertiesList, ar as isINodePropertyOptionsList, ad as displayParameter, as as sanitizeHtml, at as sanitizeHtml_1, j as jsonParse, h as getNodeOutputs, au as getNodeHints, e as __vitePreload, b as createEventBus, av as N8nActionDropdown, am as FontAwesomeIcon, x as xss, n as nodeConnectionTypes, aw as generateNodesGraph, M as N8nTooltip } from "./n8n-BZOg0o2s.js";
5
+ import { m as mapStores, s as storeToRefs, d as defineStore } from "./pinia-6fcdwe0b.js";
6
6
  import { _ as INTERCEPT_BEFORE_DROP, $ as EVENT_CONNECTION, a0 as EVENT_CONNECTION_MOVED, a1 as EVENT_CONNECTION_DETACHED } from "./@jsplumb/core-B__RSZHf.js";
7
- import { e as useUIStore, a2 as useNodeTypesStore, m as useWorkflowsStore, l as useSourceControlStore, v as useI18n, a3 as NOT_DUPLICATABLE_NODE_TYPES, a4 as getMousePosition, L as STICKY_NODE_TYPE, a5 as usePinnedData, k as useCanvasStore, a6 as getRelativePosition, a7 as _sfc_main$L, J as useNDVStore, a8 as isCommunityPackageName, a9 as NPM_PACKAGE_DOCS_BASE_URL, aa as BUILTIN_NODES_DOCS_URL, ab as COMMUNITY_NODES_INSTALLATION_DOCS_URL, a1 as useExternalHooks, w as useTelemetry, ac as useClipboard, p as useWorkflowHelpers, u as useToast, ad as OPEN_URL_PANEL_TRIGGER_NODE_TYPES, ae as PRODUCTION_ONLY_TRIGGER_NODE_TYPES, af as FORM_TRIGGER_NODE_TYPE, ag as CHAT_TRIGGER_NODE_TYPE, ah as useNodeHelpers, d as useDebounce, ai as TitledList, aj as useRunWorkflow, x as useMessage, ak as MANUAL_TRIGGER_NODE_TYPE, al as WEBHOOK_NODE_TYPE, A as nodeViewEventBus, C as MODAL_CONFIRM, am as NodeCredentials, an as _sfc_main$M, ao as useWorkflowsEEStore, ap as useCredentialsStore, aq as useHistoryStore, ar as CUSTOM_NODES_DOCS_URL, as as MAIN_NODE_PANEL_WIDTH, at as importCurlEventBus, au as RenameNodeCommand, av as SHOULD_CLEAR_NODE_OUTPUTS, aw as isPresent, ax as ndvEventBus, R as useStorage, ay as LOCAL_STORAGE_MAIN_PANEL_RELATIVE_WIDTH, j as useRootStore, az as MAX_DISPLAY_DATA_SIZE, aA as sanitizeHtml$1, aB as JsonEditor, aC as MAX_DISPLAY_DATA_SIZE_SCHEMA_VIEW, aD as MAX_DISPLAY_ITEMS_AUTO_ALL, aE as DATA_PINNING_DOCS_URL, aF as DATA_EDITING_DOCS_URL, aG as HTML_NODE_TYPE, aH as executionDataToJson, aI as NODE_TYPES_EXCLUDED_FROM_OUTPUT_NAME_APPEND, aJ as isEmpty, aK as LOCAL_STORAGE_PIN_DATA_DISCOVERY_NDV_FLAG, aL as dataPinningEventBus, aM as LOCAL_STORAGE_PIN_DATA_DISCOVERY_CANVAS_FLAG, aN as clearJsonKey, aO as searchInObject, aP as TEST_PIN_DATA, aQ as useNodeType, aR as START_NODE_TYPE, aS as CRON_NODE_TYPE, aT as INTERVAL_NODE_TYPE, aU as CopyInput, aV as isTriggerPanelObject, aW as getTriggerNodeServiceName, V as VIEWS, F as WORKFLOW_SETTINGS_MODAL_KEY, b as useSettingsStore, aX as EXECUTABLE_TRIGGER_NODE_TYPES, aY as BASE_NODE_SURVEY_URL, E as EnterpriseEditionFeature, aZ as NODE_CONNECTION_TYPE_ALLOW_MULTIPLE, a_ as getAnchorPosition, a$ as isValidNodeConnectionType, b0 as getEndpointScope, b1 as getInputEndpointUUID, b2 as getInputEndpointStyle, b3 as getScope, b4 as getInputNameOverlay, b5 as NODE_INSERT_SPACER_BETWEEN_INPUT_GROUPS, b6 as NODE_MIN_INPUT_ITEMS_COUNT, b7 as getOutputEndpointUUID, b8 as getOutputEndpointStyle, b9 as getOutputNameOverlay, ba as NO_OP_NODE_TYPE, bb as WAIT_TIME_UNLIMITED, bc as SIMULATE_NODE_TYPE, bd as SIMULATE_TRIGGER_NODE_TYPE, be as CUSTOM_API_CALL_KEY, bf as EnableNodeToggleCommand, bg as GRID_SIZE, bh as isString, bi as isNumber, bj as assert, bk as QUICKSTART_NOTE_NAME, bl as CORE_NODES_CATEGORY, bm as DEFAULT_SUBCATEGORY, bn as AI_SUBCATEGORY, bo as AI_CATEGORY_AGENTS, bp as i18n, Z as useTemplatesStore, bq as AI_CATEGORY_CHAINS, br as AI_NODE_CREATOR_VIEW, bs as AI_OTHERS_NODE_CREATOR_VIEW, bt as AI_CATEGORY_DOCUMENT_LOADERS, bu as AI_CATEGORY_LANGUAGE_MODELS, bv as AI_CATEGORY_MEMORY, bw as AI_CATEGORY_OUTPUTPARSER, bx as AI_CATEGORY_RETRIEVERS, by as AI_CATEGORY_TEXT_SPLITTERS, bz as AI_CATEGORY_TOOLS, bA as AI_WORKFLOW_TOOL_LANGCHAIN_NODE_TYPE, bB as AI_CODE_TOOL_LANGCHAIN_NODE_TYPE, bC as AI_CATEGORY_EMBEDDING, bD as AI_CATEGORY_VECTOR_STORES, bE as AI_UNCATEGORIZED_CATEGORY, bF as TRIGGER_NODE_CREATOR_VIEW, bG as EMAIL_IMAP_NODE_TYPE, bH as SCHEDULE_TRIGGER_NODE_TYPE, bI as EXECUTE_WORKFLOW_TRIGGER_NODE_TYPE, bJ as MANUAL_CHAT_TRIGGER_NODE_TYPE, bK as OTHER_TRIGGER_NODES_SUBCATEGORY, bL as REGULAR_NODE_CREATOR_VIEW, bM as RSS_READ_NODE_TYPE, bN as EMAIL_SEND_NODE_TYPE, bO as TRANSFORM_DATA_SUBCATEGORY, bP as SET_NODE_TYPE, bQ as CODE_NODE_TYPE, bR as DATETIME_NODE_TYPE, bS as FILTER_NODE_TYPE, bT as REMOVE_DUPLICATES_NODE_TYPE, bU as SPLIT_OUT_NODE_TYPE, bV as LIMIT_NODE_TYPE, bW as SUMMARIZE_NODE_TYPE, bX as AGGREGATE_NODE_TYPE, bY as MERGE_NODE_TYPE, bZ as MARKDOWN_NODE_TYPE, b_ as XML_NODE_TYPE, b$ as CRYPTO_NODE_TYPE, c0 as EXTRACT_FROM_FILE_NODE_TYPE, c1 as CONVERT_TO_FILE_NODE_TYPE, c2 as COMPRESSION_NODE_TYPE, c3 as EDIT_IMAGE_NODE_TYPE, c4 as FLOWS_CONTROL_SUBCATEGORY, c5 as IF_NODE_TYPE, c6 as SPLIT_IN_BATCHES_NODE_TYPE, c7 as HELPERS_SUBCATEGORY, c8 as HTTP_REQUEST_NODE_TYPE, c9 as AI_CATEGORY_ROOT_NODES, ca as AI_CODE_NODE_TYPE, cb as CanvasConnectionMode, cc as isValidCanvasConnectionMode, O as STORES, cd as NODE_CREATOR_OPEN_SOURCES, ce as MOUSE_EVENT_BUTTON, cf as MOUSE_EVENT_BUTTONS, cg as KeyboardShortcutTooltip, ch as getNodeViewTab, I as MAIN_HEADER_TABS, P as PLACEHOLDER_EMPTY_WORKFLOW_ID, ci as MODAL_CANCEL, cj as useGlobalLinkActions, y as useTitleChange, o as useNpsSurveyStore, n as useProjectsStore, K as useExecutionsStore, ck as useExternalSecretsStore, cl as useEnvironmentsStore, a as useUsersStore, c as useTagsStore, cm as getBackgroundStyles, X as sourceControlEventBus, cn as historyBus, co as WORKFLOW_LM_CHAT_MODAL_KEY, cp as N8nAddInputEndpointType, cq as getFixedNodesList, cr as tryToParseNumber, cs as MoveNodeCommand, ct as UPDATE_WEBHOOK_ID_NODE_TYPES, cu as getNewNodePosition, cv as DRAG_EVENT_DATA_KEY, cw as MAX_X_TO_PUSH_DOWNSTREAM_NODES, cx as PUSH_NODES_OFFSET, cy as NODE_SIZE, cz as resetConnectionAfterPull, cA as resetConnection, cB as moveBackInputLabelPosition, cC as hideOutputNameLabel, cD as addConnectionActionsOverlay, cE as getOverlay, cF as OVERLAY_ENDPOINT_ARROW_ID, cG as getConnectorPaintStyleData, cH as AddConnectionCommand, cI as addConnectionTestData, cJ as showOrHideItemsLabel, cK as showOrHideMidpointArrow, cL as isJSPlumbConnection, cM as hideConnectionActions, cN as showConnectionActions, cO as resetInputLabelPosition, cP as getConnectionInfo, cQ as showOutputNameLabel, cR as RemoveConnectionCommand, cS as isJSPlumbEndpointElement, cT as EVENT_PLUS_ENDPOINT_CLICK, cU as EVENT_ADD_INPUT_ENDPOINT_CLICK, cV as N8nPlusEndpointType, cW as usePostHog, cX as CANVAS_AUTO_ADD_MANUAL_TRIGGER_EXPERIMENT, cY as addClassesToOverlays, cZ as OVERLAY_RUN_ITEMS_ID, c_ as getJSPlumbEndpoints, c$ as RemoveNodeCommand, d0 as useDataSchema, d1 as getConnectorLengths, d2 as isElementIntersection, d3 as calculateElementIntersection, d4 as showDropConnectionState, d5 as showPullConnectionState, d6 as CanvasNodeKey, d7 as CanvasNodeHandleKey, d8 as AddNodeCommand } from "./index-C-mVy0Gl.js";
8
- import { u as useExecutionDebugging } from "./useExecutionDebugging-D1N49Q2-.js";
7
+ import { e as useUIStore, a2 as useNodeTypesStore, m as useWorkflowsStore, l as useSourceControlStore, v as useI18n, a3 as NOT_DUPLICATABLE_NODE_TYPES, a4 as getMousePosition, L as STICKY_NODE_TYPE, a5 as usePinnedData, k as useCanvasStore, a6 as getRelativePosition, a7 as _sfc_main$O, J as useNDVStore, a8 as isCommunityPackageName, a9 as NPM_PACKAGE_DOCS_BASE_URL, aa as BUILTIN_NODES_DOCS_URL, ab as COMMUNITY_NODES_INSTALLATION_DOCS_URL, a1 as useExternalHooks, w as useTelemetry, ac as useClipboard, p as useWorkflowHelpers, u as useToast, ad as OPEN_URL_PANEL_TRIGGER_NODE_TYPES, ae as PRODUCTION_ONLY_TRIGGER_NODE_TYPES, af as FORM_TRIGGER_NODE_TYPE, ag as CHAT_TRIGGER_NODE_TYPE, ah as useNodeHelpers, d as useDebounce, ai as TitledList, aj as useRunWorkflow, x as useMessage, ak as MANUAL_TRIGGER_NODE_TYPE, al as WEBHOOK_NODE_TYPE, A as nodeViewEventBus, C as MODAL_CONFIRM, am as NodeCredentials, an as _sfc_main$P, ao as useWorkflowsEEStore, ap as useCredentialsStore, aq as useHistoryStore, ar as CUSTOM_NODES_DOCS_URL, as as MAIN_NODE_PANEL_WIDTH, at as importCurlEventBus, au as RenameNodeCommand, av as SHOULD_CLEAR_NODE_OUTPUTS, aw as isPresent, ax as ndvEventBus, R as useStorage, ay as LOCAL_STORAGE_MAIN_PANEL_RELATIVE_WIDTH, j as useRootStore, az as MAX_DISPLAY_DATA_SIZE, aA as sanitizeHtml$1, aB as JsonEditor, aC as MAX_DISPLAY_DATA_SIZE_SCHEMA_VIEW, aD as MAX_DISPLAY_ITEMS_AUTO_ALL, aE as DATA_PINNING_DOCS_URL, aF as DATA_EDITING_DOCS_URL, aG as HTML_NODE_TYPE, aH as executionDataToJson, aI as NODE_TYPES_EXCLUDED_FROM_OUTPUT_NAME_APPEND, aJ as isEmpty, aK as LOCAL_STORAGE_PIN_DATA_DISCOVERY_NDV_FLAG, aL as dataPinningEventBus, aM as LOCAL_STORAGE_PIN_DATA_DISCOVERY_CANVAS_FLAG, aN as clearJsonKey, aO as searchInObject, aP as TEST_PIN_DATA, aQ as useNodeType, aR as START_NODE_TYPE, aS as CRON_NODE_TYPE, aT as INTERVAL_NODE_TYPE, aU as CopyInput, aV as isTriggerPanelObject, aW as getTriggerNodeServiceName, V as VIEWS, F as WORKFLOW_SETTINGS_MODAL_KEY, b as useSettingsStore, aX as EXECUTABLE_TRIGGER_NODE_TYPES, aY as BASE_NODE_SURVEY_URL, E as EnterpriseEditionFeature, aZ as NODE_CONNECTION_TYPE_ALLOW_MULTIPLE, a_ as getAnchorPosition, a$ as isValidNodeConnectionType, b0 as getEndpointScope, b1 as getInputEndpointUUID, b2 as getInputEndpointStyle, b3 as getScope, b4 as getInputNameOverlay, b5 as NODE_INSERT_SPACER_BETWEEN_INPUT_GROUPS, b6 as NODE_MIN_INPUT_ITEMS_COUNT, b7 as getOutputEndpointUUID, b8 as getOutputEndpointStyle, b9 as getOutputNameOverlay, ba as NO_OP_NODE_TYPE, bb as WAIT_TIME_UNLIMITED, bc as SIMULATE_NODE_TYPE, bd as SIMULATE_TRIGGER_NODE_TYPE, be as CUSTOM_API_CALL_KEY, bf as EnableNodeToggleCommand, bg as GRID_SIZE, bh as isString, bi as isNumber, bj as assert, bk as QUICKSTART_NOTE_NAME, bl as CORE_NODES_CATEGORY, bm as DEFAULT_SUBCATEGORY, bn as AI_SUBCATEGORY, bo as AI_CATEGORY_AGENTS, bp as i18n, Z as useTemplatesStore, bq as AI_CATEGORY_CHAINS, br as AI_NODE_CREATOR_VIEW, bs as AI_OTHERS_NODE_CREATOR_VIEW, bt as AI_CATEGORY_DOCUMENT_LOADERS, bu as AI_CATEGORY_LANGUAGE_MODELS, bv as AI_CATEGORY_MEMORY, bw as AI_CATEGORY_OUTPUTPARSER, bx as AI_CATEGORY_RETRIEVERS, by as AI_CATEGORY_TEXT_SPLITTERS, bz as AI_CATEGORY_TOOLS, bA as AI_WORKFLOW_TOOL_LANGCHAIN_NODE_TYPE, bB as AI_CODE_TOOL_LANGCHAIN_NODE_TYPE, bC as AI_CATEGORY_EMBEDDING, bD as AI_CATEGORY_VECTOR_STORES, bE as AI_UNCATEGORIZED_CATEGORY, bF as TRIGGER_NODE_CREATOR_VIEW, bG as EMAIL_IMAP_NODE_TYPE, bH as SCHEDULE_TRIGGER_NODE_TYPE, bI as EXECUTE_WORKFLOW_TRIGGER_NODE_TYPE, bJ as MANUAL_CHAT_TRIGGER_NODE_TYPE, bK as OTHER_TRIGGER_NODES_SUBCATEGORY, bL as REGULAR_NODE_CREATOR_VIEW, bM as RSS_READ_NODE_TYPE, bN as EMAIL_SEND_NODE_TYPE, bO as TRANSFORM_DATA_SUBCATEGORY, bP as SET_NODE_TYPE, bQ as CODE_NODE_TYPE, bR as DATETIME_NODE_TYPE, bS as FILTER_NODE_TYPE, bT as REMOVE_DUPLICATES_NODE_TYPE, bU as SPLIT_OUT_NODE_TYPE, bV as LIMIT_NODE_TYPE, bW as SUMMARIZE_NODE_TYPE, bX as AGGREGATE_NODE_TYPE, bY as MERGE_NODE_TYPE, bZ as MARKDOWN_NODE_TYPE, b_ as XML_NODE_TYPE, b$ as CRYPTO_NODE_TYPE, c0 as EXTRACT_FROM_FILE_NODE_TYPE, c1 as CONVERT_TO_FILE_NODE_TYPE, c2 as COMPRESSION_NODE_TYPE, c3 as EDIT_IMAGE_NODE_TYPE, c4 as FLOWS_CONTROL_SUBCATEGORY, c5 as IF_NODE_TYPE, c6 as SPLIT_IN_BATCHES_NODE_TYPE, c7 as HELPERS_SUBCATEGORY, c8 as HTTP_REQUEST_NODE_TYPE, c9 as AI_CATEGORY_ROOT_NODES, ca as AI_CODE_NODE_TYPE, cb as CanvasConnectionMode, cc as isValidCanvasConnectionMode, cd as PUSH_NODES_OFFSET, O as STORES, ce as NODE_CREATOR_OPEN_SOURCES, cf as isVueFlowConnection, cg as MOUSE_EVENT_BUTTON, ch as MOUSE_EVENT_BUTTONS, ci as KeyboardShortcutTooltip, cj as getNodeViewTab, I as MAIN_HEADER_TABS, P as PLACEHOLDER_EMPTY_WORKFLOW_ID, ck as MODAL_CANCEL, cl as useGlobalLinkActions, y as useTitleChange, o as useNpsSurveyStore, n as useProjectsStore, K as useExecutionsStore, cm as useExternalSecretsStore, cn as useEnvironmentsStore, a as useUsersStore, c as useTagsStore, co as getBackgroundStyles, X as sourceControlEventBus, cp as historyBus, cq as WORKFLOW_LM_CHAT_MODAL_KEY, cr as N8nAddInputEndpointType, cs as getFixedNodesList, ct as tryToParseNumber, cu as MoveNodeCommand, cv as UPDATE_WEBHOOK_ID_NODE_TYPES, cw as getNewNodePosition, cx as DRAG_EVENT_DATA_KEY, cy as MAX_X_TO_PUSH_DOWNSTREAM_NODES, cz as NODE_SIZE, cA as resetConnectionAfterPull, cB as resetConnection, cC as moveBackInputLabelPosition, cD as hideOutputNameLabel, cE as addConnectionActionsOverlay, cF as getOverlay, cG as OVERLAY_ENDPOINT_ARROW_ID, cH as getConnectorPaintStyleData, cI as AddConnectionCommand, cJ as addConnectionTestData, cK as showOrHideItemsLabel, cL as showOrHideMidpointArrow, cM as isJSPlumbConnection, cN as hideConnectionActions, cO as showConnectionActions, cP as resetInputLabelPosition, cQ as getConnectionInfo, cR as showOutputNameLabel, cS as RemoveConnectionCommand, cT as isJSPlumbEndpointElement, cU as EVENT_PLUS_ENDPOINT_CLICK, cV as EVENT_ADD_INPUT_ENDPOINT_CLICK, cW as N8nPlusEndpointType, cX as usePostHog, cY as CANVAS_AUTO_ADD_MANUAL_TRIGGER_EXPERIMENT, cZ as addClassesToOverlays, c_ as OVERLAY_RUN_ITEMS_ID, c$ as getJSPlumbEndpoints, d0 as RemoveNodeCommand, d1 as useDataSchema, d2 as getConnectorLengths, d3 as isElementIntersection, d4 as calculateElementIntersection, d5 as showDropConnectionState, d6 as showPullConnectionState, d7 as CanvasNodeKey, d8 as CanvasNodeRenderType, d9 as CanvasNodeHandleKey, da as AddNodeCommand } from "./index-bKbgEkwQ.js";
8
+ import { u as useExecutionDebugging } from "./useExecutionDebugging-Bey9JfcT.js";
9
9
  import { g as get, s as set, A as unset, e as isEqual, y as isObject, B as sortBy, C as difference } from "./lodash-es-COViF6dG.js";
10
- import { F as FileSaver_minExports } from "./file-saver-DmnSLJjs.js";
11
- import { V as VueJsonPretty } from "./vue-json-pretty-DP0y-sh1.js";
12
- import { c as convertToDisplayDateComponents } from "./dateFormatter-DqxIOphq.js";
13
- import RunDataAi from "./RunDataAi-Bj3_C5yZ.js";
14
- import { u as useWorkflowActivate } from "./useWorkflowActivate-DwWkEDON.js";
10
+ import { F as FileSaver_minExports } from "./file-saver-EX5V8lV4.js";
11
+ import { V as VueJsonPretty } from "./vue-json-pretty-Smey0Oxa.js";
12
+ import { c as convertToDisplayDateComponents } from "./dateFormatter-Cz94F6Me.js";
13
+ import RunDataAi from "./RunDataAi-CujvnObq.js";
14
+ import { u as useWorkflowActivate } from "./useWorkflowActivate-0fT4N7sc.js";
15
15
  import { v as v4 } from "./uuid-sKupIUZ4.js";
16
- import { u as usePushConnectionStore } from "./pushConnection.store-DADRfGHk.js";
16
+ import { u as usePushConnectionStore } from "./pushConnection.store-2X3NZvi8.js";
17
17
  import { g as ready, f as EVENT_CONNECTION_ABORT, h as EVENT_DRAG_MOVE, a as EVENT_CONNECTION_MOUSEOVER, E as EVENT_CONNECTION_MOUSEOUT, b as EVENT_ENDPOINT_MOUSEOVER, d as EVENT_ENDPOINT_MOUSEOUT, i as EVENT_CONNECTION_DRAG } from "./@jsplumb/browser-ui-BphmFVJY.js";
18
- import { c as _sfc_main$f$1, d as Position, e as getBezierPath, f as _sfc_main$d$1, h as _sfc_main$3$1, P as PanelPosition, u as useVueFlow, i as _sfc_main$1$1 } from "./@vue-flow/core-OODHovzO.js";
19
- import { _ as _sfc_main$N } from "./@vue-flow/background-D_Un7DUl.js";
20
- import { _ as _sfc_main$P } from "./@vue-flow/controls-BwRI_oge.js";
21
- import { _ as _sfc_main$O } from "./@vue-flow/minimap-BK2HcOSp.js";
18
+ import { e as _sfc_main$f$1, f as Position, h as getBezierPath, i as _sfc_main$d$1, j as _sfc_main$3$1, P as PanelPosition, u as useVueFlow, k as _sfc_main$1$1 } from "./@vue-flow/core-CjwW6FwV.js";
19
+ import { _ as _sfc_main$R } from "./@vue-flow/background-Dvxud2mg.js";
20
+ import { _ as _sfc_main$T } from "./@vue-flow/controls-C3soidEc.js";
21
+ import { _ as _sfc_main$S } from "./@vue-flow/minimap-Bdd7TR2F.js";
22
+ import { _ as _sfc_main$Q } from "./@vue-flow/node-resizer-B3B5vubL.js";
22
23
  const position = ref([0, 0]);
23
24
  const isOpen = ref(false);
24
25
  const target = ref({ source: "canvas" });
@@ -432,7 +433,7 @@ function useUniqueNodeName() {
432
433
  }
433
434
  return { uniqueNodeName };
434
435
  }
435
- const _sfc_main$K = /* @__PURE__ */ defineComponent({
436
+ const _sfc_main$N = /* @__PURE__ */ defineComponent({
436
437
  __name: "NodeTitle",
437
438
  props: {
438
439
  modelValue: { default: "" },
@@ -475,7 +476,7 @@ const _sfc_main$K = /* @__PURE__ */ defineComponent({
475
476
  createBaseVNode("span", {
476
477
  class: normalizeClass(_ctx.$style.iconWrapper)
477
478
  }, [
478
- createVNode(_sfc_main$L, {
479
+ createVNode(_sfc_main$O, {
479
480
  "node-type": _ctx.nodeType,
480
481
  size: 18
481
482
  }, null, 8, ["node-type"])
@@ -562,7 +563,7 @@ const iconWrapper = "_iconWrapper_9bi3m_26";
562
563
  const editIconContainer = "_editIconContainer_9bi3m_39";
563
564
  const editButtons = "_editButtons_9bi3m_45";
564
565
  const editContainer = "_editContainer_9bi3m_53";
565
- const style0$r = {
566
+ const style0$t = {
566
567
  container: container$3,
567
568
  title: title$3,
568
569
  hoverable,
@@ -572,11 +573,11 @@ const style0$r = {
572
573
  editButtons,
573
574
  editContainer
574
575
  };
575
- const cssModules$t = {
576
- "$style": style0$r
576
+ const cssModules$v = {
577
+ "$style": style0$t
577
578
  };
578
- const NodeTitle = /* @__PURE__ */ _export_sfc(_sfc_main$K, [["__cssModules", cssModules$t]]);
579
- const _sfc_main$J = /* @__PURE__ */ defineComponent({
579
+ const NodeTitle = /* @__PURE__ */ _export_sfc(_sfc_main$N, [["__cssModules", cssModules$v]]);
580
+ const _sfc_main$M = /* @__PURE__ */ defineComponent({
580
581
  __name: "NodeSettingsTabs",
581
582
  props: {
582
583
  modelValue: { default: "params" },
@@ -702,7 +703,7 @@ const _sfc_main$J = /* @__PURE__ */ defineComponent({
702
703
  };
703
704
  }
704
705
  });
705
- const _sfc_main$I = defineComponent({
706
+ const _sfc_main$L = defineComponent({
706
707
  name: "NodeWebhooks",
707
708
  props: [
708
709
  "node",
@@ -850,12 +851,12 @@ const _sfc_main$I = defineComponent({
850
851
  }
851
852
  });
852
853
  const _withScopeId$6 = (n) => (pushScopeId("data-v-36c5dbc7"), n = n(), popScopeId(), n);
853
- const _hoisted_1$m = {
854
+ const _hoisted_1$n = {
854
855
  key: 0,
855
856
  class: "webhooks"
856
857
  };
857
858
  const _hoisted_2$g = ["title"];
858
- const _hoisted_3$b = {
859
+ const _hoisted_3$c = {
859
860
  key: 0,
860
861
  class: "node-webhooks"
861
862
  };
@@ -880,14 +881,14 @@ const _hoisted_12$2 = {
880
881
  const _hoisted_13$2 = { class: "url-field-full-width" };
881
882
  const _hoisted_14$2 = ["onClick"];
882
883
  const _hoisted_15$2 = /* @__PURE__ */ _withScopeId$6(() => /* @__PURE__ */ createBaseVNode("br", null, null, -1));
883
- function _sfc_render$d(_ctx, _cache, $props, $setup, $data, $options) {
884
+ function _sfc_render$c(_ctx, _cache, $props, $setup, $data, $options) {
884
885
  const _component_font_awesome_icon = resolveComponent("font-awesome-icon");
885
886
  const _component_n8n_radio_buttons = resolveComponent("n8n-radio-buttons");
886
887
  const _component_el_col = resolveComponent("el-col");
887
888
  const _component_el_row = resolveComponent("el-row");
888
889
  const _component_n8n_tooltip = resolveComponent("n8n-tooltip");
889
890
  const _component_el_collapse_transition = resolveComponent("el-collapse-transition");
890
- return _ctx.webhooksNode.length && _ctx.visibleWebhookUrls.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_1$m, [
891
+ return _ctx.webhooksNode.length && _ctx.visibleWebhookUrls.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_1$n, [
891
892
  createBaseVNode("div", {
892
893
  class: normalizeClass(["clickable headline", { expanded: !_ctx.isMinimized }]),
893
894
  title: _ctx.isMinimized ? _ctx.baseText.clickToDisplay : _ctx.baseText.clickToHide,
@@ -901,7 +902,7 @@ function _sfc_render$d(_ctx, _cache, $props, $setup, $data, $options) {
901
902
  ], 10, _hoisted_2$g),
902
903
  createVNode(_component_el_collapse_transition, null, {
903
904
  default: withCtx(() => [
904
- !_ctx.isMinimized ? (openBlock(), createElementBlock("div", _hoisted_3$b, [
905
+ !_ctx.isMinimized ? (openBlock(), createElementBlock("div", _hoisted_3$c, [
905
906
  !_ctx.isProductionOnly ? (openBlock(), createElementBlock("div", _hoisted_4$8, [
906
907
  createVNode(_component_el_row, null, {
907
908
  default: withCtx(() => [
@@ -964,14 +965,14 @@ function _sfc_render$d(_ctx, _cache, $props, $setup, $data, $options) {
964
965
  })
965
966
  ])) : createCommentVNode("", true);
966
967
  }
967
- const NodeWebhooks = /* @__PURE__ */ _export_sfc(_sfc_main$I, [["render", _sfc_render$d], ["__scopeId", "data-v-36c5dbc7"]]);
968
- const _hoisted_1$l = ["data-test-id"];
968
+ const NodeWebhooks = /* @__PURE__ */ _export_sfc(_sfc_main$L, [["render", _sfc_render$c], ["__scopeId", "data-v-36c5dbc7"]]);
969
+ const _hoisted_1$m = ["data-test-id"];
969
970
  const _hoisted_2$f = ["textContent"];
970
- const _hoisted_3$a = ["onClick"];
971
+ const _hoisted_3$b = ["onClick"];
971
972
  const _hoisted_4$7 = ["onClick"];
972
973
  const _hoisted_5$8 = ["data-node-name"];
973
974
  const _hoisted_6$7 = ["onClick"];
974
- const _sfc_main$H = /* @__PURE__ */ defineComponent({
975
+ const _sfc_main$K = /* @__PURE__ */ defineComponent({
975
976
  __name: "NDVSubConnections",
976
977
  props: {
977
978
  rootNode: {}
@@ -1204,7 +1205,7 @@ const _sfc_main$H = /* @__PURE__ */ defineComponent({
1204
1205
  class: normalizeClass(_ctx.$style.connectedNode),
1205
1206
  onClick: ($event) => onNodeClick(node2.node.name, connection.type)
1206
1207
  }, [
1207
- createVNode(_sfc_main$L, {
1208
+ createVNode(_sfc_main$O, {
1208
1209
  "node-type": node2.nodeType,
1209
1210
  "node-name": node2.node.name,
1210
1211
  "tooltip-position": "top",
@@ -1218,11 +1219,11 @@ const _sfc_main$H = /* @__PURE__ */ defineComponent({
1218
1219
  ], 14, _hoisted_5$8);
1219
1220
  }), 128))
1220
1221
  ], 2)) : createCommentVNode("", true)
1221
- ], 14, _hoisted_3$a)), [
1222
+ ], 14, _hoisted_3$b)), [
1222
1223
  [_directive_on_click_outside, () => expandConnectionGroup(connection.type, false)]
1223
1224
  ])
1224
1225
  ], 2)
1225
- ], 8, _hoisted_1$l);
1226
+ ], 8, _hoisted_1$m);
1226
1227
  }), 128))
1227
1228
  ], 6)
1228
1229
  ], 2);
@@ -1241,7 +1242,7 @@ const connectedNodesMultiple = "_connectedNodesMultiple_tfxh3_87";
1241
1242
  const connectedNode$1 = "_connectedNode_tfxh3_55";
1242
1243
  const connectedNodes = "_connectedNodes_tfxh3_55";
1243
1244
  const nodeWrapper = "_nodeWrapper_tfxh3_125";
1244
- const style0$q = {
1245
+ const style0$s = {
1245
1246
  container: container$2,
1246
1247
  connections,
1247
1248
  connectionType,
@@ -1256,14 +1257,14 @@ const style0$q = {
1256
1257
  connectedNodes,
1257
1258
  nodeWrapper
1258
1259
  };
1259
- const cssModules$s = {
1260
- "$style": style0$q
1260
+ const cssModules$u = {
1261
+ "$style": style0$s
1261
1262
  };
1262
- const NDVSubConnections = /* @__PURE__ */ _export_sfc(_sfc_main$H, [["__cssModules", cssModules$s]]);
1263
+ const NDVSubConnections = /* @__PURE__ */ _export_sfc(_sfc_main$K, [["__cssModules", cssModules$u]]);
1263
1264
  const NODE_TEST_STEP_POPUP_COUNT_KEY = "N8N_NODE_TEST_STEP_POPUP_COUNT";
1264
1265
  const MAX_POPUP_COUNT = 10;
1265
1266
  const POPUP_UPDATE_DELAY = 3e3;
1266
- const _sfc_main$G = defineComponent({
1267
+ const _sfc_main$J = defineComponent({
1267
1268
  inheritAttrs: false,
1268
1269
  props: {
1269
1270
  nodeName: {
@@ -1496,7 +1497,7 @@ const _sfc_main$G = defineComponent({
1496
1497
  }
1497
1498
  }
1498
1499
  });
1499
- function _sfc_render$c(_ctx, _cache, $props, $setup, $data, $options) {
1500
+ function _sfc_render$b(_ctx, _cache, $props, $setup, $data, $options) {
1500
1501
  const _component_n8n_button = resolveComponent("n8n-button");
1501
1502
  const _component_n8n_tooltip = resolveComponent("n8n-tooltip");
1502
1503
  return openBlock(), createElementBlock("div", null, [
@@ -1527,14 +1528,14 @@ function _sfc_render$c(_ctx, _cache, $props, $setup, $data, $options) {
1527
1528
  }, 8, ["disabled"])
1528
1529
  ]);
1529
1530
  }
1530
- const NodeExecuteButton = /* @__PURE__ */ _export_sfc(_sfc_main$G, [["render", _sfc_render$c]]);
1531
- const _sfc_main$F = defineComponent({
1531
+ const NodeExecuteButton = /* @__PURE__ */ _export_sfc(_sfc_main$J, [["render", _sfc_render$b]]);
1532
+ const _sfc_main$I = defineComponent({
1532
1533
  name: "NodeSettings",
1533
1534
  components: {
1534
1535
  NodeTitle,
1535
1536
  NodeCredentials,
1536
- ParameterInputList: _sfc_main$M,
1537
- NodeSettingsTabs: _sfc_main$J,
1537
+ ParameterInputList: _sfc_main$P,
1538
+ NodeSettingsTabs: _sfc_main$M,
1538
1539
  NodeWebhooks,
1539
1540
  NDVSubConnections,
1540
1541
  NodeExecuteButton
@@ -2337,15 +2338,15 @@ const _sfc_main$F = defineComponent({
2337
2338
  const header$2 = "_header_1pn0y_1";
2338
2339
  const warningIcon = "_warningIcon_1pn0y_5";
2339
2340
  const descriptionContainer = "_descriptionContainer_1pn0y_10";
2340
- const style0$p = {
2341
+ const style0$r = {
2341
2342
  header: header$2,
2342
2343
  warningIcon,
2343
2344
  descriptionContainer
2344
2345
  };
2345
2346
  const _withScopeId$5 = (n) => (pushScopeId("data-v-6b8146a9"), n = n(), popScopeId(), n);
2346
- const _hoisted_1$k = { class: "header-side-menu" };
2347
+ const _hoisted_1$l = { class: "header-side-menu" };
2347
2348
  const _hoisted_2$e = { key: 1 };
2348
- const _hoisted_3$9 = {
2349
+ const _hoisted_3$a = {
2349
2350
  key: 0,
2350
2351
  class: "node-is-not-valid"
2351
2352
  };
@@ -2371,7 +2372,7 @@ const _hoisted_11$2 = {
2371
2372
  class: "node-version",
2372
2373
  "data-test-id": "node-version"
2373
2374
  };
2374
- function _sfc_render$b(_ctx, _cache, $props, $setup, $data, $options) {
2375
+ function _sfc_render$a(_ctx, _cache, $props, $setup, $data, $options) {
2375
2376
  var _a, _b;
2376
2377
  const _component_NodeTitle = resolveComponent("NodeTitle");
2377
2378
  const _component_NodeExecuteButton = resolveComponent("NodeExecuteButton");
@@ -2397,7 +2398,7 @@ function _sfc_render$b(_ctx, _cache, $props, $setup, $data, $options) {
2397
2398
  createBaseVNode("div", {
2398
2399
  class: normalizeClass(_ctx.$style.header)
2399
2400
  }, [
2400
- createBaseVNode("div", _hoisted_1$k, [
2401
+ createBaseVNode("div", _hoisted_1$l, [
2401
2402
  _ctx.node ? (openBlock(), createBlock(_component_NodeTitle, {
2402
2403
  key: 0,
2403
2404
  class: "node-name",
@@ -2428,7 +2429,7 @@ function _sfc_render$b(_ctx, _cache, $props, $setup, $data, $options) {
2428
2429
  "onUpdate:modelValue": _ctx.onTabSelect
2429
2430
  }, null, 8, ["model-value", "node-type", "push-ref", "onUpdate:modelValue"])) : createCommentVNode("", true)
2430
2431
  ], 2),
2431
- _ctx.node && !_ctx.nodeValid ? (openBlock(), createElementBlock("div", _hoisted_3$9, [
2432
+ _ctx.node && !_ctx.nodeValid ? (openBlock(), createElementBlock("div", _hoisted_3$a, [
2432
2433
  createBaseVNode("p", {
2433
2434
  class: normalizeClass(_ctx.$style.warningIcon)
2434
2435
  }, [
@@ -2588,11 +2589,11 @@ function _sfc_render$b(_ctx, _cache, $props, $setup, $data, $options) {
2588
2589
  createVNode(_component_n8n_block_ui, { show: _ctx.blockUI }, null, 8, ["show"])
2589
2590
  ], 34);
2590
2591
  }
2591
- const cssModules$r = {
2592
- "$style": style0$p
2592
+ const cssModules$t = {
2593
+ "$style": style0$r
2593
2594
  };
2594
- const NodeSettings = /* @__PURE__ */ _export_sfc(_sfc_main$F, [["render", _sfc_render$b], ["__cssModules", cssModules$r], ["__scopeId", "data-v-6b8146a9"]]);
2595
- const _sfc_main$E = /* @__PURE__ */ defineComponent({
2595
+ const NodeSettings = /* @__PURE__ */ _export_sfc(_sfc_main$I, [["render", _sfc_render$a], ["__cssModules", cssModules$t], ["__scopeId", "data-v-6b8146a9"]]);
2596
+ const _sfc_main$H = /* @__PURE__ */ defineComponent({
2596
2597
  __name: "Draggable",
2597
2598
  props: {
2598
2599
  type: {},
@@ -2715,16 +2716,16 @@ const _sfc_main$E = /* @__PURE__ */ defineComponent({
2715
2716
  });
2716
2717
  const dragging$1 = "_dragging_r2v9t_1";
2717
2718
  const draggable$1 = "_draggable_r2v9t_6";
2718
- const style0$o = {
2719
+ const style0$q = {
2719
2720
  dragging: dragging$1,
2720
2721
  draggable: draggable$1,
2721
2722
  "draggable-data-transfer": "_draggable-data-transfer_r2v9t_14"
2722
2723
  };
2723
- const cssModules$q = {
2724
- "$style": style0$o
2724
+ const cssModules$s = {
2725
+ "$style": style0$q
2725
2726
  };
2726
- const Draggable = /* @__PURE__ */ _export_sfc(_sfc_main$E, [["__cssModules", cssModules$q]]);
2727
- const _sfc_main$D = defineComponent({
2727
+ const Draggable = /* @__PURE__ */ _export_sfc(_sfc_main$H, [["__cssModules", cssModules$s]]);
2728
+ const _sfc_main$G = defineComponent({
2728
2729
  components: {
2729
2730
  Draggable
2730
2731
  },
@@ -2755,7 +2756,7 @@ const rightArrow = "_rightArrow_1fum9_20 _arrow_1fum9_28";
2755
2756
  const visible$1 = "_visible_1fum9_24";
2756
2757
  const arrow = "_arrow_1fum9_28";
2757
2758
  const grid = "_grid_1fum9_46";
2758
- const style0$n = {
2759
+ const style0$p = {
2759
2760
  dragContainer,
2760
2761
  dragButton,
2761
2762
  leftArrow,
@@ -2764,7 +2765,7 @@ const style0$n = {
2764
2765
  arrow,
2765
2766
  grid
2766
2767
  };
2767
- const _hoisted_1$j = /* @__PURE__ */ createBaseVNode("div", null, [
2768
+ const _hoisted_1$k = /* @__PURE__ */ createBaseVNode("div", null, [
2768
2769
  /* @__PURE__ */ createBaseVNode("div"),
2769
2770
  /* @__PURE__ */ createBaseVNode("div"),
2770
2771
  /* @__PURE__ */ createBaseVNode("div"),
@@ -2778,11 +2779,11 @@ const _hoisted_2$d = /* @__PURE__ */ createBaseVNode("div", null, [
2778
2779
  /* @__PURE__ */ createBaseVNode("div"),
2779
2780
  /* @__PURE__ */ createBaseVNode("div")
2780
2781
  ], -1);
2781
- const _hoisted_3$8 = [
2782
- _hoisted_1$j,
2782
+ const _hoisted_3$9 = [
2783
+ _hoisted_1$k,
2783
2784
  _hoisted_2$d
2784
2785
  ];
2785
- function _sfc_render$a(_ctx, _cache, $props, $setup, $data, $options) {
2786
+ function _sfc_render$9(_ctx, _cache, $props, $setup, $data, $options) {
2786
2787
  const _component_font_awesome_icon = resolveComponent("font-awesome-icon");
2787
2788
  const _component_Draggable = resolveComponent("Draggable");
2788
2789
  return openBlock(), createBlock(_component_Draggable, {
@@ -2810,24 +2811,24 @@ function _sfc_render$a(_ctx, _cache, $props, $setup, $data, $options) {
2810
2811
  ], 2)) : createCommentVNode("", true),
2811
2812
  createBaseVNode("div", {
2812
2813
  class: normalizeClass(_ctx.$style.grid)
2813
- }, _hoisted_3$8, 2)
2814
+ }, _hoisted_3$9, 2)
2814
2815
  ], 2)
2815
2816
  ]),
2816
2817
  _: 1
2817
2818
  }, 8, ["class", "onDrag", "onDragstart", "onDragend"]);
2818
2819
  }
2819
- const cssModules$p = {
2820
- "$style": style0$n
2820
+ const cssModules$r = {
2821
+ "$style": style0$p
2821
2822
  };
2822
- const PanelDragButton = /* @__PURE__ */ _export_sfc(_sfc_main$D, [["render", _sfc_render$a], ["__cssModules", cssModules$p]]);
2823
- const _hoisted_1$i = ["data-node-name", "data-node-placement", "onClick"];
2823
+ const PanelDragButton = /* @__PURE__ */ _export_sfc(_sfc_main$G, [["render", _sfc_render$9], ["__cssModules", cssModules$r]]);
2824
+ const _hoisted_1$j = ["data-node-name", "data-node-placement", "onClick"];
2824
2825
  var FloatingNodePosition = /* @__PURE__ */ ((FloatingNodePosition2) => {
2825
2826
  FloatingNodePosition2["top"] = "outputSub";
2826
2827
  FloatingNodePosition2["right"] = "outputMain";
2827
2828
  FloatingNodePosition2["left"] = "inputMain";
2828
2829
  return FloatingNodePosition2;
2829
2830
  })(FloatingNodePosition || {});
2830
- const _sfc_main$C = /* @__PURE__ */ defineComponent({
2831
+ const _sfc_main$F = /* @__PURE__ */ defineComponent({
2831
2832
  __name: "NDVFloatingNodes",
2832
2833
  props: {
2833
2834
  rootNode: {}
@@ -2948,14 +2949,14 @@ const _sfc_main$C = /* @__PURE__ */ defineComponent({
2948
2949
  "data-node-placement": connectionGroup,
2949
2950
  onClick: ($event) => emit("switchSelectedNode", node2.name)
2950
2951
  }, [
2951
- createVNode(_sfc_main$L, {
2952
+ createVNode(_sfc_main$O, {
2952
2953
  "node-type": nodeType,
2953
2954
  "node-name": node2.name,
2954
2955
  "tooltip-position": tooltipPositionMapper[connectionGroup],
2955
2956
  size: 35,
2956
2957
  circle: ""
2957
2958
  }, null, 8, ["node-type", "node-name", "tooltip-position"])
2958
- ], 10, _hoisted_1$i)
2959
+ ], 10, _hoisted_1$j)
2959
2960
  ]),
2960
2961
  _: 2
2961
2962
  }, 1032, ["placement"])) : createCommentVNode("", true)
@@ -2974,7 +2975,7 @@ const outputSub = "_outputSub_1sze0_29";
2974
2975
  const outputMain = "_outputMain_1sze0_40";
2975
2976
  const inputMain = "_inputMain_1sze0_40";
2976
2977
  const connectedNode = "_connectedNode_1sze0_63";
2977
- const style0$m = {
2978
+ const style0$o = {
2978
2979
  floatingNodes,
2979
2980
  nodesList,
2980
2981
  inputSub,
@@ -2983,315 +2984,342 @@ const style0$m = {
2983
2984
  inputMain,
2984
2985
  connectedNode
2985
2986
  };
2986
- const cssModules$o = {
2987
- "$style": style0$m
2987
+ const cssModules$q = {
2988
+ "$style": style0$o
2988
2989
  };
2989
- const NDVFloatingNodes = /* @__PURE__ */ _export_sfc(_sfc_main$C, [["__cssModules", cssModules$o]]);
2990
+ const NDVFloatingNodes = /* @__PURE__ */ _export_sfc(_sfc_main$F, [["__cssModules", cssModules$q]]);
2990
2991
  const SIDE_MARGIN = 24;
2991
2992
  const SIDE_PANELS_MARGIN = 80;
2992
2993
  const MIN_PANEL_WIDTH = 280;
2993
2994
  const PANEL_WIDTH = 320;
2994
2995
  const PANEL_WIDTH_LARGE = 420;
2995
- const initialMainPanelWidth = {
2996
- regular: MAIN_NODE_PANEL_WIDTH,
2997
- dragless: MAIN_NODE_PANEL_WIDTH,
2998
- unknown: MAIN_NODE_PANEL_WIDTH,
2999
- inputless: MAIN_NODE_PANEL_WIDTH,
3000
- wide: MAIN_NODE_PANEL_WIDTH * 2
3001
- };
3002
- const _sfc_main$B = defineComponent({
3003
- name: "NDVDraggablePanels",
3004
- components: {
3005
- PanelDragButton,
3006
- NDVFloatingNodes
3007
- },
2996
+ const _sfc_main$E = /* @__PURE__ */ defineComponent({
2997
+ __name: "NDVDraggablePanels",
3008
2998
  props: {
3009
- isDraggable: {
3010
- type: Boolean
3011
- },
3012
- hideInputAndOutput: {
3013
- type: Boolean
3014
- },
3015
- position: {
3016
- type: Number
3017
- },
3018
- nodeType: {
3019
- type: Object,
3020
- default: () => ({})
3021
- }
3022
- },
3023
- setup() {
3024
- const { callDebounced } = useDebounce();
3025
- return { callDebounced };
2999
+ isDraggable: { type: Boolean },
3000
+ hideInputAndOutput: { type: Boolean },
3001
+ nodeType: {}
3026
3002
  },
3027
- data() {
3028
- return {
3029
- windowWidth: 1,
3030
- isDragging: false,
3031
- MIN_PANEL_WIDTH,
3032
- initialized: false
3003
+ emits: ["init", "dragstart", "dragend", "switchSelectedNode", "close"],
3004
+ setup(__props, { emit: __emit }) {
3005
+ const MIN_WINDOW_WIDTH = 2 * (SIDE_MARGIN + SIDE_PANELS_MARGIN) + MIN_PANEL_WIDTH;
3006
+ const initialMainPanelWidth = {
3007
+ regular: MAIN_NODE_PANEL_WIDTH,
3008
+ dragless: MAIN_NODE_PANEL_WIDTH,
3009
+ unknown: MAIN_NODE_PANEL_WIDTH,
3010
+ inputless: MAIN_NODE_PANEL_WIDTH,
3011
+ wide: MAIN_NODE_PANEL_WIDTH * 2
3033
3012
  };
3034
- },
3035
- mounted() {
3036
- this.setTotalWidth();
3037
- if (this.mainPanelDimensions.relativeLeft === 1 && this.mainPanelDimensions.relativeRight === 1) {
3038
- this.setMainPanelWidth();
3039
- this.setPositions(this.getInitialLeftPosition(this.mainPanelDimensions.relativeWidth));
3040
- this.restorePositionData();
3041
- }
3042
- window.addEventListener("resize", this.setTotalWidth);
3043
- this.$emit("init", { position: this.mainPanelDimensions.relativeLeft });
3044
- setTimeout(() => {
3045
- this.initialized = true;
3046
- }, 0);
3047
- ndvEventBus.on("setPositionByName", this.setPositionByName);
3048
- },
3049
- beforeUnmount() {
3050
- window.removeEventListener("resize", this.setTotalWidth);
3051
- ndvEventBus.off("setPositionByName", this.setPositionByName);
3052
- },
3053
- computed: {
3054
- ...mapStores(useNDVStore),
3055
- mainPanelDimensions() {
3056
- return this.ndvStore.getMainPanelDimensions(this.currentNodePaneType);
3057
- },
3058
- activeNode() {
3059
- return this.ndvStore.activeNode;
3060
- },
3061
- supportedResizeDirections() {
3062
- const supportedDirections = ["right"];
3063
- if (this.isDraggable)
3064
- supportedDirections.push("left");
3065
- return supportedDirections;
3066
- },
3067
- currentNodePaneType() {
3068
- if (!this.hasInputSlot)
3013
+ const { callDebounced } = useDebounce();
3014
+ const ndvStore = useNDVStore();
3015
+ const props = __props;
3016
+ const windowWidth = ref(1);
3017
+ const isDragging = ref(false);
3018
+ const initialized = ref(false);
3019
+ const emit = __emit;
3020
+ const slots = useSlots();
3021
+ onMounted(() => {
3022
+ setTotalWidth();
3023
+ if (mainPanelDimensions.value.relativeLeft === 1 && mainPanelDimensions.value.relativeRight === 1) {
3024
+ setMainPanelWidth();
3025
+ setPositions(getInitialLeftPosition(mainPanelDimensions.value.relativeWidth));
3026
+ restorePositionData();
3027
+ }
3028
+ window.addEventListener("resize", setTotalWidth);
3029
+ emit("init", { position: mainPanelDimensions.value.relativeLeft });
3030
+ setTimeout(() => {
3031
+ initialized.value = true;
3032
+ }, 0);
3033
+ ndvEventBus.on("setPositionByName", setPositionByName);
3034
+ });
3035
+ onBeforeUnmount(() => {
3036
+ window.removeEventListener("resize", setTotalWidth);
3037
+ ndvEventBus.off("setPositionByName", setPositionByName);
3038
+ });
3039
+ watch(windowWidth, (width) => {
3040
+ const minRelativeWidth = pxToRelativeWidth(MIN_PANEL_WIDTH);
3041
+ const isBelowMinWidthMainPanel = mainPanelDimensions.value.relativeWidth < minRelativeWidth;
3042
+ if (isBelowMinWidthMainPanel) {
3043
+ setMainPanelWidth(minRelativeWidth);
3044
+ }
3045
+ const isBelowMinLeft = minimumLeftPosition.value > mainPanelDimensions.value.relativeLeft;
3046
+ const isMaxRight = maximumRightPosition.value > mainPanelDimensions.value.relativeRight;
3047
+ if (width > MIN_WINDOW_WIDTH && isBelowMinLeft && isMaxRight) {
3048
+ setMainPanelWidth(minRelativeWidth);
3049
+ setPositions(getInitialLeftPosition(mainPanelDimensions.value.relativeWidth));
3050
+ }
3051
+ setPositions(mainPanelDimensions.value.relativeLeft);
3052
+ });
3053
+ const currentNodePaneType = computed(() => {
3054
+ if (!hasInputSlot.value)
3069
3055
  return "inputless";
3070
- if (!this.isDraggable)
3056
+ if (!props.isDraggable)
3071
3057
  return "dragless";
3072
- if (this.nodeType === null)
3058
+ if (props.nodeType === null)
3073
3059
  return "unknown";
3074
- return get(this, "nodeType.parameterPane") || "regular";
3075
- },
3076
- hasInputSlot() {
3077
- return this.$slots.input !== void 0;
3078
- },
3079
- inputPanelMargin() {
3080
- return this.pxToRelativeWidth(SIDE_PANELS_MARGIN);
3081
- },
3082
- minWindowWidth() {
3083
- return 2 * (SIDE_MARGIN + SIDE_PANELS_MARGIN) + MIN_PANEL_WIDTH;
3084
- },
3085
- minimumLeftPosition() {
3086
- if (this.windowWidth < this.minWindowWidth)
3087
- return this.pxToRelativeWidth(1);
3088
- if (!this.hasInputSlot)
3089
- return this.pxToRelativeWidth(SIDE_MARGIN);
3090
- return this.pxToRelativeWidth(SIDE_MARGIN + 20) + this.inputPanelMargin;
3091
- },
3092
- maximumRightPosition() {
3093
- if (this.windowWidth < this.minWindowWidth)
3094
- return this.pxToRelativeWidth(1);
3095
- return this.pxToRelativeWidth(SIDE_MARGIN + 20) + this.inputPanelMargin;
3096
- },
3097
- canMoveLeft() {
3098
- return this.mainPanelDimensions.relativeLeft > this.minimumLeftPosition;
3099
- },
3100
- canMoveRight() {
3101
- return this.mainPanelDimensions.relativeRight > this.maximumRightPosition;
3102
- },
3103
- mainPanelStyles() {
3104
- return {
3105
- left: `${this.relativeWidthToPx(this.mainPanelDimensions.relativeLeft)}px`,
3106
- right: `${this.relativeWidthToPx(this.mainPanelDimensions.relativeRight)}px`
3107
- };
3108
- },
3109
- inputPanelStyles() {
3060
+ return props.nodeType.parameterPane ?? "regular";
3061
+ });
3062
+ const mainPanelDimensions = computed(
3063
+ () => {
3064
+ return ndvStore.getMainPanelDimensions(currentNodePaneType.value);
3065
+ }
3066
+ );
3067
+ const calculatedPositions = computed(
3068
+ () => {
3069
+ const hasInput = slots.input !== void 0;
3070
+ const outputPanelRelativeLeft = mainPanelDimensions.value.relativeLeft + mainPanelDimensions.value.relativeWidth;
3071
+ const inputPanelRelativeRight = hasInput ? 1 - outputPanelRelativeLeft + mainPanelDimensions.value.relativeWidth : 1 - pxToRelativeWidth(SIDE_MARGIN);
3072
+ return {
3073
+ inputPanelRelativeRight,
3074
+ outputPanelRelativeLeft
3075
+ };
3076
+ }
3077
+ );
3078
+ const outputPanelRelativeTranslate = computed(() => {
3079
+ const panelMinLeft = 1 - pxToRelativeWidth(MIN_PANEL_WIDTH + SIDE_MARGIN);
3080
+ const currentRelativeLeftDelta = calculatedPositions.value.outputPanelRelativeLeft - panelMinLeft;
3081
+ return currentRelativeLeftDelta > 0 ? currentRelativeLeftDelta : 0;
3082
+ });
3083
+ const supportedResizeDirections = computed(() => {
3084
+ const supportedDirections = ["right"];
3085
+ if (props.isDraggable)
3086
+ supportedDirections.push("left");
3087
+ return supportedDirections;
3088
+ });
3089
+ const hasInputSlot = computed(() => {
3090
+ return slots.input !== void 0;
3091
+ });
3092
+ const inputPanelMargin = computed(() => pxToRelativeWidth(SIDE_PANELS_MARGIN));
3093
+ const minimumLeftPosition = computed(() => {
3094
+ if (windowWidth.value < MIN_WINDOW_WIDTH)
3095
+ return pxToRelativeWidth(1);
3096
+ if (!hasInputSlot.value)
3097
+ return pxToRelativeWidth(SIDE_MARGIN);
3098
+ return pxToRelativeWidth(SIDE_MARGIN + 20) + inputPanelMargin.value;
3099
+ });
3100
+ const maximumRightPosition = computed(() => {
3101
+ if (windowWidth.value < MIN_WINDOW_WIDTH)
3102
+ return pxToRelativeWidth(1);
3103
+ return pxToRelativeWidth(SIDE_MARGIN + 20) + inputPanelMargin.value;
3104
+ });
3105
+ const canMoveLeft = computed(() => {
3106
+ return mainPanelDimensions.value.relativeLeft > minimumLeftPosition.value;
3107
+ });
3108
+ const canMoveRight = computed(() => {
3109
+ return mainPanelDimensions.value.relativeRight > maximumRightPosition.value;
3110
+ });
3111
+ const mainPanelStyles = computed(() => {
3110
3112
  return {
3111
- right: `${this.relativeWidthToPx(this.calculatedPositions.inputPanelRelativeRight)}px`
3113
+ left: `${relativeWidthToPx(mainPanelDimensions.value.relativeLeft)}px`,
3114
+ right: `${relativeWidthToPx(mainPanelDimensions.value.relativeRight)}px`
3112
3115
  };
3113
- },
3114
- outputPanelStyles() {
3116
+ });
3117
+ const inputPanelStyles = computed(() => {
3115
3118
  return {
3116
- left: `${this.relativeWidthToPx(this.calculatedPositions.outputPanelRelativeLeft)}px`,
3117
- transform: `translateX(-${this.relativeWidthToPx(this.outputPanelRelativeTranslate)}px)`
3119
+ right: `${relativeWidthToPx(calculatedPositions.value.inputPanelRelativeRight)}px`
3118
3120
  };
3119
- },
3120
- calculatedPositions() {
3121
- const hasInput = this.$slots.input !== void 0;
3122
- const outputPanelRelativeLeft = this.mainPanelDimensions.relativeLeft + this.mainPanelDimensions.relativeWidth;
3123
- const inputPanelRelativeRight = hasInput ? 1 - outputPanelRelativeLeft + this.mainPanelDimensions.relativeWidth : 1 - this.pxToRelativeWidth(SIDE_MARGIN);
3121
+ });
3122
+ const outputPanelStyles = computed(() => {
3124
3123
  return {
3125
- inputPanelRelativeRight,
3126
- outputPanelRelativeLeft
3124
+ left: `${relativeWidthToPx(calculatedPositions.value.outputPanelRelativeLeft)}px`,
3125
+ transform: `translateX(-${relativeWidthToPx(outputPanelRelativeTranslate.value)}px)`
3127
3126
  };
3128
- },
3129
- outputPanelRelativeTranslate() {
3130
- const panelMinLeft = 1 - this.pxToRelativeWidth(MIN_PANEL_WIDTH + SIDE_MARGIN);
3131
- const currentRelativeLeftDelta = this.calculatedPositions.outputPanelRelativeLeft - panelMinLeft;
3132
- return currentRelativeLeftDelta > 0 ? currentRelativeLeftDelta : 0;
3133
- },
3134
- hasDoubleWidth() {
3135
- return get(this, "nodeType.parameterPane") === "wide";
3136
- },
3137
- fixedPanelWidth() {
3138
- const multiplier = this.hasDoubleWidth ? 2 : 1;
3139
- if (this.windowWidth > 1700) {
3127
+ });
3128
+ const hasDoubleWidth = computed(() => {
3129
+ var _a;
3130
+ return ((_a = props.nodeType) == null ? void 0 : _a.parameterPane) === "wide";
3131
+ });
3132
+ const fixedPanelWidth = computed(() => {
3133
+ const multiplier = hasDoubleWidth.value ? 2 : 1;
3134
+ if (windowWidth.value > 1700) {
3140
3135
  return PANEL_WIDTH_LARGE * multiplier;
3141
3136
  }
3142
3137
  return PANEL_WIDTH * multiplier;
3143
- },
3144
- isBelowMinWidthMainPanel() {
3145
- const minRelativeWidth = this.pxToRelativeWidth(MIN_PANEL_WIDTH);
3146
- return this.mainPanelDimensions.relativeWidth < minRelativeWidth;
3147
- }
3148
- },
3149
- watch: {
3150
- windowWidth(windowWidth) {
3151
- const minRelativeWidth = this.pxToRelativeWidth(MIN_PANEL_WIDTH);
3152
- if (this.isBelowMinWidthMainPanel) {
3153
- this.setMainPanelWidth(minRelativeWidth);
3154
- }
3155
- const isBelowMinLeft = this.minimumLeftPosition > this.mainPanelDimensions.relativeLeft;
3156
- const isMaxRight = this.maximumRightPosition > this.mainPanelDimensions.relativeRight;
3157
- if (windowWidth > this.minWindowWidth && isBelowMinLeft && isMaxRight) {
3158
- this.setMainPanelWidth(minRelativeWidth);
3159
- this.setPositions(this.getInitialLeftPosition(this.mainPanelDimensions.relativeWidth));
3160
- }
3161
- this.setPositions(this.mainPanelDimensions.relativeLeft);
3162
- }
3163
- },
3164
- methods: {
3165
- onSwitchSelectedNode(node2) {
3166
- this.$emit("switchSelectedNode", node2);
3167
- },
3168
- getInitialLeftPosition(width) {
3169
- if (this.currentNodePaneType === "dragless")
3170
- return this.pxToRelativeWidth(SIDE_MARGIN + 1 + this.fixedPanelWidth);
3171
- return this.hasInputSlot ? 0.5 - width / 2 : this.minimumLeftPosition;
3172
- },
3173
- setMainPanelWidth(relativeWidth) {
3174
- const mainPanelRelativeWidth = relativeWidth || this.pxToRelativeWidth(initialMainPanelWidth[this.currentNodePaneType]);
3175
- this.ndvStore.setMainPanelDimensions({
3176
- panelType: this.currentNodePaneType,
3138
+ });
3139
+ const onSwitchSelectedNode = (node2) => emit("switchSelectedNode", node2);
3140
+ function getInitialLeftPosition(width) {
3141
+ if (currentNodePaneType.value === "dragless")
3142
+ return pxToRelativeWidth(SIDE_MARGIN + 1 + fixedPanelWidth.value);
3143
+ return hasInputSlot.value ? 0.5 - width / 2 : minimumLeftPosition.value;
3144
+ }
3145
+ function setMainPanelWidth(relativeWidth) {
3146
+ const mainPanelRelativeWidth = relativeWidth || pxToRelativeWidth(initialMainPanelWidth[currentNodePaneType.value]);
3147
+ ndvStore.setMainPanelDimensions({
3148
+ panelType: currentNodePaneType.value,
3177
3149
  dimensions: {
3178
3150
  relativeWidth: mainPanelRelativeWidth
3179
3151
  }
3180
3152
  });
3181
- },
3182
- setPositions(relativeLeft) {
3183
- const mainPanelRelativeLeft = relativeLeft || 1 - this.calculatedPositions.inputPanelRelativeRight;
3184
- const mainPanelRelativeRight = 1 - mainPanelRelativeLeft - this.mainPanelDimensions.relativeWidth;
3185
- const isMaxRight = this.maximumRightPosition > mainPanelRelativeRight;
3186
- const isMinLeft = this.minimumLeftPosition > mainPanelRelativeLeft;
3187
- const isInputless = this.currentNodePaneType === "inputless";
3153
+ }
3154
+ function setPositions(relativeLeft) {
3155
+ const mainPanelRelativeLeft = relativeLeft || 1 - calculatedPositions.value.inputPanelRelativeRight;
3156
+ const mainPanelRelativeRight = 1 - mainPanelRelativeLeft - mainPanelDimensions.value.relativeWidth;
3157
+ const isMaxRight = maximumRightPosition.value > mainPanelRelativeRight;
3158
+ const isMinLeft = minimumLeftPosition.value > mainPanelRelativeLeft;
3159
+ const isInputless = currentNodePaneType.value === "inputless";
3188
3160
  if (isMinLeft) {
3189
- this.ndvStore.setMainPanelDimensions({
3190
- panelType: this.currentNodePaneType,
3161
+ ndvStore.setMainPanelDimensions({
3162
+ panelType: currentNodePaneType.value,
3191
3163
  dimensions: {
3192
- relativeLeft: this.minimumLeftPosition,
3193
- relativeRight: 1 - this.mainPanelDimensions.relativeWidth - this.minimumLeftPosition
3164
+ relativeLeft: minimumLeftPosition.value,
3165
+ relativeRight: 1 - mainPanelDimensions.value.relativeWidth - minimumLeftPosition.value
3194
3166
  }
3195
3167
  });
3196
3168
  return;
3197
3169
  }
3198
3170
  if (isMaxRight) {
3199
- this.ndvStore.setMainPanelDimensions({
3200
- panelType: this.currentNodePaneType,
3171
+ ndvStore.setMainPanelDimensions({
3172
+ panelType: currentNodePaneType.value,
3201
3173
  dimensions: {
3202
- relativeLeft: 1 - this.mainPanelDimensions.relativeWidth - this.maximumRightPosition,
3203
- relativeRight: this.maximumRightPosition
3174
+ relativeLeft: 1 - mainPanelDimensions.value.relativeWidth - maximumRightPosition.value,
3175
+ relativeRight: maximumRightPosition.value
3204
3176
  }
3205
3177
  });
3206
3178
  return;
3207
3179
  }
3208
- this.ndvStore.setMainPanelDimensions({
3209
- panelType: this.currentNodePaneType,
3180
+ ndvStore.setMainPanelDimensions({
3181
+ panelType: currentNodePaneType.value,
3210
3182
  dimensions: {
3211
- relativeLeft: isInputless ? this.minimumLeftPosition : mainPanelRelativeLeft,
3183
+ relativeLeft: isInputless ? minimumLeftPosition.value : mainPanelRelativeLeft,
3212
3184
  relativeRight: mainPanelRelativeRight
3213
3185
  }
3214
3186
  });
3215
- },
3216
- setPositionByName(position2) {
3187
+ }
3188
+ function setPositionByName(position2) {
3217
3189
  const positionByName = {
3218
- minLeft: this.minimumLeftPosition,
3219
- maxRight: this.maximumRightPosition,
3220
- initial: this.getInitialLeftPosition(this.mainPanelDimensions.relativeWidth)
3190
+ minLeft: minimumLeftPosition.value,
3191
+ maxRight: maximumRightPosition.value,
3192
+ initial: getInitialLeftPosition(mainPanelDimensions.value.relativeWidth)
3221
3193
  };
3222
- this.setPositions(positionByName[position2]);
3223
- },
3224
- pxToRelativeWidth(px) {
3225
- return px / this.windowWidth;
3226
- },
3227
- relativeWidthToPx(relativeWidth) {
3228
- return relativeWidth * this.windowWidth;
3229
- },
3230
- onResizeStart() {
3231
- this.setTotalWidth();
3232
- },
3233
- onResizeEnd() {
3234
- this.storePositionData();
3235
- },
3236
- onResizeDebounced(data) {
3237
- if (this.initialized) {
3238
- void this.callDebounced(this.onResize, { debounceTime: 10, trailing: true }, data);
3194
+ setPositions(positionByName[position2]);
3195
+ }
3196
+ function pxToRelativeWidth(px) {
3197
+ return px / windowWidth.value;
3198
+ }
3199
+ function relativeWidthToPx(relativeWidth) {
3200
+ return relativeWidth * windowWidth.value;
3201
+ }
3202
+ function onResizeStart() {
3203
+ setTotalWidth();
3204
+ }
3205
+ function onResizeEnd() {
3206
+ storePositionData();
3207
+ }
3208
+ function onResizeDebounced(data) {
3209
+ if (initialized.value) {
3210
+ void callDebounced(onResize, { debounceTime: 10, trailing: true }, data);
3239
3211
  }
3240
- },
3241
- onResize({ direction, x, width }) {
3242
- const relativeDistance = this.pxToRelativeWidth(x);
3243
- const relativeWidth = this.pxToRelativeWidth(width);
3244
- if (direction === "left" && relativeDistance <= this.minimumLeftPosition)
3212
+ }
3213
+ function onResize({ direction, x, width }) {
3214
+ const relativeDistance = pxToRelativeWidth(x);
3215
+ const relativeWidth = pxToRelativeWidth(width);
3216
+ if (direction === "left" && relativeDistance <= minimumLeftPosition.value)
3245
3217
  return;
3246
- if (direction === "right" && 1 - relativeDistance <= this.maximumRightPosition)
3218
+ if (direction === "right" && 1 - relativeDistance <= maximumRightPosition.value)
3247
3219
  return;
3248
3220
  if (width <= MIN_PANEL_WIDTH)
3249
3221
  return;
3250
- this.setMainPanelWidth(relativeWidth);
3251
- this.setPositions(
3252
- direction === "left" ? relativeDistance : this.mainPanelDimensions.relativeLeft
3253
- );
3254
- },
3255
- restorePositionData() {
3222
+ setMainPanelWidth(relativeWidth);
3223
+ setPositions(direction === "left" ? relativeDistance : mainPanelDimensions.value.relativeLeft);
3224
+ }
3225
+ function restorePositionData() {
3256
3226
  const storedPanelWidthData = useStorage(
3257
- `${LOCAL_STORAGE_MAIN_PANEL_RELATIVE_WIDTH}_${this.currentNodePaneType}`
3227
+ `${LOCAL_STORAGE_MAIN_PANEL_RELATIVE_WIDTH}_${currentNodePaneType.value}`
3258
3228
  ).value;
3259
3229
  if (storedPanelWidthData) {
3260
3230
  const parsedWidth = parseFloat(storedPanelWidthData);
3261
- this.setMainPanelWidth(parsedWidth);
3262
- const initialPosition = this.getInitialLeftPosition(parsedWidth);
3263
- this.setPositions(initialPosition);
3231
+ setMainPanelWidth(parsedWidth);
3232
+ const initialPosition = getInitialLeftPosition(parsedWidth);
3233
+ setPositions(initialPosition);
3264
3234
  return true;
3265
3235
  }
3266
3236
  return false;
3267
- },
3268
- storePositionData() {
3269
- useStorage(`${LOCAL_STORAGE_MAIN_PANEL_RELATIVE_WIDTH}_${this.currentNodePaneType}`).value = this.mainPanelDimensions.relativeWidth.toString();
3270
- },
3271
- onDragStart() {
3272
- this.isDragging = true;
3273
- this.$emit("dragstart", { position: this.mainPanelDimensions.relativeLeft });
3274
- },
3275
- onDrag(position2) {
3276
- const relativeLeft = this.pxToRelativeWidth(position2[0]) - this.mainPanelDimensions.relativeWidth / 2;
3277
- this.setPositions(relativeLeft);
3278
- },
3279
- onDragEnd() {
3237
+ }
3238
+ function storePositionData() {
3239
+ useStorage(`${LOCAL_STORAGE_MAIN_PANEL_RELATIVE_WIDTH}_${currentNodePaneType.value}`).value = mainPanelDimensions.value.relativeWidth.toString();
3240
+ }
3241
+ function onDragStart() {
3242
+ isDragging.value = true;
3243
+ emit("dragstart", { position: mainPanelDimensions.value.relativeLeft });
3244
+ }
3245
+ function onDrag(position2) {
3246
+ const relativeLeft = pxToRelativeWidth(position2[0]) - mainPanelDimensions.value.relativeWidth / 2;
3247
+ setPositions(relativeLeft);
3248
+ }
3249
+ function onDragEnd() {
3280
3250
  setTimeout(() => {
3281
- this.isDragging = false;
3282
- this.$emit("dragend", {
3283
- windowWidth: this.windowWidth,
3284
- position: this.mainPanelDimensions.relativeLeft
3251
+ isDragging.value = false;
3252
+ emit("dragend", {
3253
+ windowWidth: windowWidth.value,
3254
+ position: mainPanelDimensions.value.relativeLeft
3285
3255
  });
3286
3256
  }, 0);
3287
- this.storePositionData();
3288
- },
3289
- setTotalWidth() {
3290
- this.windowWidth = window.innerWidth;
3291
- },
3292
- close() {
3293
- this.$emit("close");
3257
+ storePositionData();
3258
+ }
3259
+ function setTotalWidth() {
3260
+ windowWidth.value = window.innerWidth;
3294
3261
  }
3262
+ return (_ctx, _cache) => {
3263
+ const _component_n8n_resize_wrapper = resolveComponent("n8n-resize-wrapper");
3264
+ return openBlock(), createElementBlock("div", null, [
3265
+ unref(ndvStore).activeNode ? (openBlock(), createBlock(NDVFloatingNodes, {
3266
+ key: 0,
3267
+ "root-node": unref(ndvStore).activeNode,
3268
+ onSwitchSelectedNode
3269
+ }, null, 8, ["root-node"])) : createCommentVNode("", true),
3270
+ !_ctx.hideInputAndOutput ? (openBlock(), createElementBlock("div", {
3271
+ key: 1,
3272
+ class: normalizeClass(_ctx.$style.inputPanel),
3273
+ style: normalizeStyle(inputPanelStyles.value)
3274
+ }, [
3275
+ renderSlot(_ctx.$slots, "input")
3276
+ ], 6)) : createCommentVNode("", true),
3277
+ !_ctx.hideInputAndOutput ? (openBlock(), createElementBlock("div", {
3278
+ key: 2,
3279
+ class: normalizeClass(_ctx.$style.outputPanel),
3280
+ style: normalizeStyle(outputPanelStyles.value)
3281
+ }, [
3282
+ renderSlot(_ctx.$slots, "output")
3283
+ ], 6)) : createCommentVNode("", true),
3284
+ createBaseVNode("div", {
3285
+ class: normalizeClass(_ctx.$style.mainPanel),
3286
+ style: normalizeStyle(mainPanelStyles.value)
3287
+ }, [
3288
+ createVNode(_component_n8n_resize_wrapper, {
3289
+ "is-resizing-enabled": currentNodePaneType.value !== "unknown",
3290
+ width: relativeWidthToPx(mainPanelDimensions.value.relativeWidth),
3291
+ "min-width": MIN_PANEL_WIDTH,
3292
+ "grid-size": 20,
3293
+ "supported-directions": supportedResizeDirections.value,
3294
+ onResize: onResizeDebounced,
3295
+ onResizestart: onResizeStart,
3296
+ onResizeend: onResizeEnd
3297
+ }, {
3298
+ default: withCtx(() => [
3299
+ createBaseVNode("div", {
3300
+ class: normalizeClass(_ctx.$style.dragButtonContainer)
3301
+ }, [
3302
+ !_ctx.hideInputAndOutput && _ctx.isDraggable ? (openBlock(), createBlock(PanelDragButton, {
3303
+ key: 0,
3304
+ class: normalizeClass({ [_ctx.$style.draggable]: true, [_ctx.$style.visible]: isDragging.value }),
3305
+ "can-move-left": canMoveLeft.value,
3306
+ "can-move-right": canMoveRight.value,
3307
+ onDragstart: onDragStart,
3308
+ onDrag,
3309
+ onDragend: onDragEnd
3310
+ }, null, 8, ["class", "can-move-left", "can-move-right"])) : createCommentVNode("", true)
3311
+ ], 2),
3312
+ createBaseVNode("div", {
3313
+ class: normalizeClass({ [_ctx.$style.mainPanelInner]: true, [_ctx.$style.dragging]: isDragging.value })
3314
+ }, [
3315
+ renderSlot(_ctx.$slots, "main")
3316
+ ], 2)
3317
+ ]),
3318
+ _: 3
3319
+ }, 8, ["is-resizing-enabled", "width", "supported-directions"])
3320
+ ], 6)
3321
+ ]);
3322
+ };
3295
3323
  }
3296
3324
  });
3297
3325
  const dataPanel = "_dataPanel_a6j4o_1";
@@ -3303,7 +3331,7 @@ const mainPanelInner = "_mainPanelInner_a6j4o_34";
3303
3331
  const dragging = "_dragging_a6j4o_41";
3304
3332
  const dragButtonContainer = "_dragButtonContainer_a6j4o_54";
3305
3333
  const visible = "_visible_a6j4o_70";
3306
- const style0$l = {
3334
+ const style0$n = {
3307
3335
  dataPanel,
3308
3336
  inputPanel,
3309
3337
  outputPanel,
@@ -3315,73 +3343,10 @@ const style0$l = {
3315
3343
  dragButtonContainer,
3316
3344
  visible
3317
3345
  };
3318
- function _sfc_render$9(_ctx, _cache, $props, $setup, $data, $options) {
3319
- const _component_NDVFloatingNodes = resolveComponent("NDVFloatingNodes");
3320
- const _component_PanelDragButton = resolveComponent("PanelDragButton");
3321
- const _component_n8n_resize_wrapper = resolveComponent("n8n-resize-wrapper");
3322
- return openBlock(), createElementBlock("div", null, [
3323
- _ctx.activeNode ? (openBlock(), createBlock(_component_NDVFloatingNodes, {
3324
- key: 0,
3325
- "root-node": _ctx.activeNode,
3326
- onSwitchSelectedNode: _ctx.onSwitchSelectedNode
3327
- }, null, 8, ["root-node", "onSwitchSelectedNode"])) : createCommentVNode("", true),
3328
- !_ctx.hideInputAndOutput ? (openBlock(), createElementBlock("div", {
3329
- key: 1,
3330
- class: normalizeClass(_ctx.$style.inputPanel),
3331
- style: normalizeStyle(_ctx.inputPanelStyles)
3332
- }, [
3333
- renderSlot(_ctx.$slots, "input")
3334
- ], 6)) : createCommentVNode("", true),
3335
- !_ctx.hideInputAndOutput ? (openBlock(), createElementBlock("div", {
3336
- key: 2,
3337
- class: normalizeClass(_ctx.$style.outputPanel),
3338
- style: normalizeStyle(_ctx.outputPanelStyles)
3339
- }, [
3340
- renderSlot(_ctx.$slots, "output")
3341
- ], 6)) : createCommentVNode("", true),
3342
- createBaseVNode("div", {
3343
- class: normalizeClass(_ctx.$style.mainPanel),
3344
- style: normalizeStyle(_ctx.mainPanelStyles)
3345
- }, [
3346
- createVNode(_component_n8n_resize_wrapper, {
3347
- "is-resizing-enabled": _ctx.currentNodePaneType !== "unknown",
3348
- width: _ctx.relativeWidthToPx(_ctx.mainPanelDimensions.relativeWidth),
3349
- "min-width": _ctx.MIN_PANEL_WIDTH,
3350
- "grid-size": 20,
3351
- "supported-directions": _ctx.supportedResizeDirections,
3352
- onResize: _ctx.onResizeDebounced,
3353
- onResizestart: _ctx.onResizeStart,
3354
- onResizeend: _ctx.onResizeEnd
3355
- }, {
3356
- default: withCtx(() => [
3357
- createBaseVNode("div", {
3358
- class: normalizeClass(_ctx.$style.dragButtonContainer)
3359
- }, [
3360
- !_ctx.hideInputAndOutput && _ctx.isDraggable ? (openBlock(), createBlock(_component_PanelDragButton, {
3361
- key: 0,
3362
- class: normalizeClass({ [_ctx.$style.draggable]: true, [_ctx.$style.visible]: _ctx.isDragging }),
3363
- "can-move-left": _ctx.canMoveLeft,
3364
- "can-move-right": _ctx.canMoveRight,
3365
- onDragstart: _ctx.onDragStart,
3366
- onDrag: _ctx.onDrag,
3367
- onDragend: _ctx.onDragEnd
3368
- }, null, 8, ["class", "can-move-left", "can-move-right", "onDragstart", "onDrag", "onDragend"])) : createCommentVNode("", true)
3369
- ], 2),
3370
- createBaseVNode("div", {
3371
- class: normalizeClass({ [_ctx.$style.mainPanelInner]: true, [_ctx.$style.dragging]: _ctx.isDragging })
3372
- }, [
3373
- renderSlot(_ctx.$slots, "main")
3374
- ], 2)
3375
- ]),
3376
- _: 3
3377
- }, 8, ["is-resizing-enabled", "width", "min-width", "supported-directions", "onResize", "onResizestart", "onResizeend"])
3378
- ], 6)
3379
- ]);
3380
- }
3381
- const cssModules$n = {
3382
- "$style": style0$l
3346
+ const cssModules$p = {
3347
+ "$style": style0$n
3383
3348
  };
3384
- const NDVDraggablePanels = /* @__PURE__ */ _export_sfc(_sfc_main$B, [["render", _sfc_render$9], ["__cssModules", cssModules$n]]);
3349
+ const NDVDraggablePanels = /* @__PURE__ */ _export_sfc(_sfc_main$E, [["__cssModules", cssModules$p]]);
3385
3350
  const sanitizeOptions = {
3386
3351
  allowVulnerableTags: false,
3387
3352
  enforceHtmlBoundary: false,
@@ -3395,7 +3360,7 @@ const sanitizeOptions = {
3395
3360
  head: ""
3396
3361
  }
3397
3362
  };
3398
- const _sfc_main$A = {
3363
+ const _sfc_main$D = {
3399
3364
  name: "RunDataHtml",
3400
3365
  props: {
3401
3366
  inputHtml: {
@@ -3409,21 +3374,21 @@ const _sfc_main$A = {
3409
3374
  }
3410
3375
  }
3411
3376
  };
3412
- const _hoisted_1$h = ["srcdoc"];
3377
+ const _hoisted_1$i = ["srcdoc"];
3413
3378
  function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) {
3414
3379
  return openBlock(), createElementBlock("iframe", {
3415
3380
  class: "__html-display",
3416
3381
  srcdoc: $options.sanitizedHtml
3417
- }, null, 8, _hoisted_1$h);
3382
+ }, null, 8, _hoisted_1$i);
3418
3383
  }
3419
- const RunDataHtml$1 = /* @__PURE__ */ _export_sfc(_sfc_main$A, [["render", _sfc_render$8]]);
3384
+ const RunDataHtml$1 = /* @__PURE__ */ _export_sfc(_sfc_main$D, [["render", _sfc_render$8]]);
3420
3385
  const RunDataHtml$2 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
3421
3386
  __proto__: null,
3422
3387
  default: RunDataHtml$1
3423
3388
  }, Symbol.toStringTag, { value: "Module" }));
3424
- const _hoisted_1$g = { key: 0 };
3389
+ const _hoisted_1$h = { key: 0 };
3425
3390
  const _hoisted_2$c = { key: 1 };
3426
- const _hoisted_3$7 = { key: 2 };
3391
+ const _hoisted_3$8 = { key: 2 };
3427
3392
  const _hoisted_4$5 = {
3428
3393
  key: 0,
3429
3394
  controls: "",
@@ -3437,7 +3402,7 @@ const _hoisted_6$5 = {
3437
3402
  };
3438
3403
  const _hoisted_7$4 = ["src", "type"];
3439
3404
  const _hoisted_8$4 = ["src"];
3440
- const _sfc_main$z = /* @__PURE__ */ defineComponent({
3405
+ const _sfc_main$C = /* @__PURE__ */ defineComponent({
3441
3406
  __name: "BinaryDataDisplayEmbed",
3442
3407
  props: {
3443
3408
  binaryData: {}
@@ -3479,7 +3444,7 @@ const _sfc_main$z = /* @__PURE__ */ defineComponent({
3479
3444
  });
3480
3445
  return (_ctx, _cache) => {
3481
3446
  return openBlock(), createElementBlock("span", null, [
3482
- isLoading.value ? (openBlock(), createElementBlock("div", _hoisted_1$g, "Loading binary data...")) : error2.value ? (openBlock(), createElementBlock("div", _hoisted_2$c, "Error loading binary data")) : (openBlock(), createElementBlock("span", _hoisted_3$7, [
3447
+ isLoading.value ? (openBlock(), createElementBlock("div", _hoisted_1$h, "Loading binary data...")) : error2.value ? (openBlock(), createElementBlock("div", _hoisted_2$c, "Error loading binary data")) : (openBlock(), createElementBlock("span", _hoisted_3$8, [
3483
3448
  _ctx.binaryData.fileType === "video" ? (openBlock(), createElementBlock("video", _hoisted_4$5, [
3484
3449
  createBaseVNode("source", {
3485
3450
  src: embedSource.value,
@@ -3510,9 +3475,9 @@ const _sfc_main$z = /* @__PURE__ */ defineComponent({
3510
3475
  };
3511
3476
  }
3512
3477
  });
3513
- const _hoisted_1$f = { class: "binary-data-window-wrapper" };
3478
+ const _hoisted_1$g = { class: "binary-data-window-wrapper" };
3514
3479
  const _hoisted_2$b = { key: 0 };
3515
- const _sfc_main$y = /* @__PURE__ */ defineComponent({
3480
+ const _sfc_main$B = /* @__PURE__ */ defineComponent({
3516
3481
  __name: "BinaryDataDisplay",
3517
3482
  props: {
3518
3483
  displayData: {},
@@ -3570,8 +3535,8 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
3570
3535
  label: _ctx.$locale.baseText("binaryDataDisplay.backToList"),
3571
3536
  onClick: withModifiers(closeWindow, ["stop"])
3572
3537
  }, null, 8, ["title", "label"]),
3573
- createBaseVNode("div", _hoisted_1$f, [
3574
- !binaryData.value ? (openBlock(), createElementBlock("div", _hoisted_2$b, toDisplayString(_ctx.$locale.baseText("binaryDataDisplay.noDataFoundToDisplay")), 1)) : (openBlock(), createBlock(_sfc_main$z, {
3538
+ createBaseVNode("div", _hoisted_1$g, [
3539
+ !binaryData.value ? (openBlock(), createElementBlock("div", _hoisted_2$b, toDisplayString(_ctx.$locale.baseText("binaryDataDisplay.noDataFoundToDisplay")), 1)) : (openBlock(), createBlock(_sfc_main$C, {
3575
3540
  key: 1,
3576
3541
  "binary-data": binaryData.value
3577
3542
  }, null, 8, ["binary-data"]))
@@ -3580,9 +3545,9 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
3580
3545
  };
3581
3546
  }
3582
3547
  });
3583
- const _hoisted_1$e = { class: "node-error-view" };
3548
+ const _hoisted_1$f = { class: "node-error-view" };
3584
3549
  const _hoisted_2$a = { class: "node-error-view__header" };
3585
- const _hoisted_3$6 = {
3550
+ const _hoisted_3$7 = {
3586
3551
  class: "node-error-view__header-message",
3587
3552
  "data-test-id": "node-error-message"
3588
3553
  };
@@ -3688,7 +3653,7 @@ const _hoisted_58 = {
3688
3653
  };
3689
3654
  const _hoisted_59 = { class: "node-error-view__details-label" };
3690
3655
  const _hoisted_60 = { class: "node-error-view__details-value" };
3691
- const _sfc_main$x = /* @__PURE__ */ defineComponent({
3656
+ const _sfc_main$A = /* @__PURE__ */ defineComponent({
3692
3657
  __name: "NodeErrorView",
3693
3658
  props: {
3694
3659
  error: {}
@@ -3954,9 +3919,9 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
3954
3919
  const _component_n8n_icon_button = resolveComponent("n8n-icon-button");
3955
3920
  const _component_n8n_tooltip = resolveComponent("n8n-tooltip");
3956
3921
  const _component_font_awesome_icon = resolveComponent("font-awesome-icon");
3957
- return openBlock(), createElementBlock("div", _hoisted_1$e, [
3922
+ return openBlock(), createElementBlock("div", _hoisted_1$f, [
3958
3923
  createBaseVNode("div", _hoisted_2$a, [
3959
- createBaseVNode("div", _hoisted_3$6, [
3924
+ createBaseVNode("div", _hoisted_3$7, [
3960
3925
  createBaseVNode("div", null, toDisplayString(getErrorMessage()), 1)
3961
3926
  ]),
3962
3927
  _ctx.error.description || ((_a = _ctx.error.context) == null ? void 0 : _a.descriptionKey) ? (openBlock(), createElementBlock("div", {
@@ -4125,10 +4090,10 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
4125
4090
  };
4126
4091
  }
4127
4092
  });
4128
- const _hoisted_1$d = { key: 0 };
4093
+ const _hoisted_1$e = { key: 0 };
4129
4094
  const _hoisted_2$9 = { key: 1 };
4130
- const _hoisted_3$5 = { key: 2 };
4131
- const _sfc_main$w = /* @__PURE__ */ defineComponent({
4095
+ const _hoisted_3$6 = { key: 2 };
4096
+ const _sfc_main$z = /* @__PURE__ */ defineComponent({
4132
4097
  __name: "RunDataPinButton",
4133
4098
  props: {
4134
4099
  tooltipContentsVisibility: {},
@@ -4154,7 +4119,7 @@ const _sfc_main$w = /* @__PURE__ */ defineComponent({
4154
4119
  visible: visible2.value
4155
4120
  }, {
4156
4121
  content: withCtx(() => [
4157
- props.tooltipContentsVisibility.binaryDataTooltipContent ? (openBlock(), createElementBlock("div", _hoisted_1$d, toDisplayString(unref(locale).baseText("ndv.pinData.pin.binary")), 1)) : props.tooltipContentsVisibility.pinDataDiscoveryTooltipContent ? (openBlock(), createElementBlock("div", _hoisted_2$9, toDisplayString(unref(locale).baseText("node.discovery.pinData.ndv")), 1)) : (openBlock(), createElementBlock("div", _hoisted_3$5, [
4122
+ props.tooltipContentsVisibility.binaryDataTooltipContent ? (openBlock(), createElementBlock("div", _hoisted_1$e, toDisplayString(unref(locale).baseText("ndv.pinData.pin.binary")), 1)) : props.tooltipContentsVisibility.pinDataDiscoveryTooltipContent ? (openBlock(), createElementBlock("div", _hoisted_2$9, toDisplayString(unref(locale).baseText("node.discovery.pinData.ndv")), 1)) : (openBlock(), createElementBlock("div", _hoisted_3$6, [
4158
4123
  createBaseVNode("strong", null, toDisplayString(unref(locale).baseText("ndv.pinData.pin.title")), 1),
4159
4124
  createVNode(_component_n8n_text, {
4160
4125
  size: "small",
@@ -4193,29 +4158,29 @@ const _sfc_main$w = /* @__PURE__ */ defineComponent({
4193
4158
  }
4194
4159
  });
4195
4160
  const pinDataButton = "_pinDataButton_9p8um_1";
4196
- const style0$k = {
4161
+ const style0$m = {
4197
4162
  pinDataButton
4198
4163
  };
4199
- const cssModules$m = {
4200
- "$style": style0$k
4164
+ const cssModules$o = {
4165
+ "$style": style0$m
4201
4166
  };
4202
- const RunDataPinButton = /* @__PURE__ */ _export_sfc(_sfc_main$w, [["__cssModules", cssModules$m]]);
4167
+ const RunDataPinButton = /* @__PURE__ */ _export_sfc(_sfc_main$z, [["__cssModules", cssModules$o]]);
4203
4168
  const RunDataTable = defineAsyncComponent(
4204
- async () => await __vitePreload(() => import("./RunDataTable-CXm7q60S.js"), true ? __vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46]) : void 0)
4169
+ async () => await __vitePreload(() => import("./RunDataTable-BDZKz7Ur.js"), true ? __vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47]) : void 0)
4205
4170
  );
4206
- const RunDataJson = defineAsyncComponent(async () => await __vitePreload(() => import("./RunDataJson-D2lW8ojA.js"), true ? __vite__mapDeps([47,6,7,8,4,1,9,10,11,12,36,3,2,5,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,37,38,39,40,41,42,43,44,45,48]) : void 0));
4171
+ const RunDataJson = defineAsyncComponent(async () => await __vitePreload(() => import("./RunDataJson-CIbPVd1F.js"), true ? __vite__mapDeps([48,5,6,7,4,1,8,9,10,11,36,3,2,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,37,38,39,40,41,42,43,44,45,46,49]) : void 0));
4207
4172
  const RunDataSchema = defineAsyncComponent(
4208
- async () => await __vitePreload(() => import("./RunDataSchema-CPXsu2BO.js"), true ? __vite__mapDeps([49,1,9,3,2,4,5,6,7,8,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,50]) : void 0)
4173
+ async () => await __vitePreload(() => import("./RunDataSchema-DMZuyqVF.js"), true ? __vite__mapDeps([50,1,8,3,2,4,5,6,7,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,51]) : void 0)
4209
4174
  );
4210
4175
  const RunDataHtml = defineAsyncComponent(async () => await __vitePreload(() => Promise.resolve().then(() => RunDataHtml$2), true ? void 0 : void 0));
4211
4176
  const RunDataSearch = defineAsyncComponent(
4212
- async () => await __vitePreload(() => import("./RunDataSearch-qonVj6CG.js"), true ? __vite__mapDeps([51,1,3,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,52]) : void 0)
4177
+ async () => await __vitePreload(() => import("./RunDataSearch-D0zXe7Il.js"), true ? __vite__mapDeps([52,1,3,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,53]) : void 0)
4213
4178
  );
4214
- const _sfc_main$v = defineComponent({
4179
+ const _sfc_main$y = defineComponent({
4215
4180
  name: "RunData",
4216
4181
  components: {
4217
- BinaryDataDisplay: _sfc_main$y,
4218
- NodeErrorView: _sfc_main$x,
4182
+ BinaryDataDisplay: _sfc_main$B,
4183
+ NodeErrorView: _sfc_main$A,
4219
4184
  JsonEditor,
4220
4185
  RunDataTable,
4221
4186
  RunDataJson,
@@ -5199,7 +5164,7 @@ const editModeActions = "_editModeActions_1ozut_261";
5199
5164
  const stretchVertically = "_stretchVertically_1ozut_268";
5200
5165
  const uiBlocker = "_uiBlocker_1ozut_272";
5201
5166
  const hintCallout = "_hintCallout_1ozut_277";
5202
- const style0$j = {
5167
+ const style0$l = {
5203
5168
  infoIcon,
5204
5169
  center,
5205
5170
  container: container$1,
@@ -5237,13 +5202,13 @@ const style0$j = {
5237
5202
  uiBlocker,
5238
5203
  hintCallout
5239
5204
  };
5240
- const _withScopeId$4 = (n) => (pushScopeId("data-v-da2aa5ea"), n = n(), popScopeId(), n);
5241
- const _hoisted_1$c = {
5205
+ const _withScopeId$4 = (n) => (pushScopeId("data-v-09e06d98"), n = n(), popScopeId(), n);
5206
+ const _hoisted_1$d = {
5242
5207
  key: 0,
5243
5208
  class: "ml-4xs"
5244
5209
  };
5245
5210
  const _hoisted_2$8 = { key: 0 };
5246
- const _hoisted_3$4 = ["innerHTML"];
5211
+ const _hoisted_3$5 = ["innerHTML"];
5247
5212
  const _hoisted_4$3 = ["data-test-id"];
5248
5213
  const _hoisted_5$4 = { key: 0 };
5249
5214
  const _hoisted_6$3 = { key: 1 };
@@ -5251,7 +5216,7 @@ const _hoisted_7$2 = { key: 2 };
5251
5216
  const _hoisted_8$2 = { key: 3 };
5252
5217
  const _hoisted_9$2 = { key: 4 };
5253
5218
  function _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {
5254
- var _a, _b, _c, _d, _e;
5219
+ var _a, _b, _c, _d, _e, _f;
5255
5220
  const _component_n8n_link = resolveComponent("n8n-link");
5256
5221
  const _component_n8n_callout = resolveComponent("n8n-callout");
5257
5222
  const _component_BinaryDataDisplay = resolveComponent("BinaryDataDisplay");
@@ -5303,7 +5268,7 @@ function _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {
5303
5268
  ]),
5304
5269
  default: withCtx(() => [
5305
5270
  createTextVNode(toDisplayString(_ctx.$locale.baseText("runData.pindata.thisDataIsPinned")) + " ", 1),
5306
- !_ctx.isReadOnlyRoute && !_ctx.readOnlyEnv ? (openBlock(), createElementBlock("span", _hoisted_1$c, [
5271
+ !_ctx.isReadOnlyRoute && !_ctx.readOnlyEnv ? (openBlock(), createElementBlock("span", _hoisted_1$d, [
5307
5272
  createVNode(_component_n8n_link, {
5308
5273
  theme: "secondary",
5309
5274
  size: "small",
@@ -5587,12 +5552,12 @@ function _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {
5587
5552
  error: _ctx.subworkflowExecutionError,
5588
5553
  class: normalizeClass(_ctx.$style.errorDisplay)
5589
5554
  }, null, 8, ["error", "class"])
5590
- ], 2)) : !_ctx.hasNodeRun ? (openBlock(), createElementBlock("div", {
5555
+ ], 2)) : !_ctx.hasNodeRun && !(_ctx.isInputSchemaView && ((_e = _ctx.node) == null ? void 0 : _e.disabled)) ? (openBlock(), createElementBlock("div", {
5591
5556
  key: 3,
5592
5557
  class: normalizeClass(_ctx.$style.center)
5593
5558
  }, [
5594
5559
  renderSlot(_ctx.$slots, "node-not-run", {}, void 0, true)
5595
- ], 2)) : _ctx.paneType === "input" && ((_e = _ctx.node) == null ? void 0 : _e.disabled) ? (openBlock(), createElementBlock("div", {
5560
+ ], 2)) : _ctx.paneType === "input" && !_ctx.isInputSchemaView && ((_f = _ctx.node) == null ? void 0 : _f.disabled) ? (openBlock(), createElementBlock("div", {
5596
5561
  key: 4,
5597
5562
  class: normalizeClass(_ctx.$style.center)
5598
5563
  }, [
@@ -5705,7 +5670,7 @@ function _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {
5705
5670
  innerHTML: _ctx.$locale.baseText("ndv.output.tooMuchData.message", {
5706
5671
  interpolate: { size: _ctx.dataSizeInMB }
5707
5672
  })
5708
- }, null, 8, _hoisted_3$4)
5673
+ }, null, 8, _hoisted_3$5)
5709
5674
  ]),
5710
5675
  _: 1
5711
5676
  }),
@@ -6016,11 +5981,11 @@ function _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {
6016
5981
  }, null, 8, ["show", "class"])
6017
5982
  ], 34);
6018
5983
  }
6019
- const cssModules$l = {
6020
- "$style": style0$j
5984
+ const cssModules$n = {
5985
+ "$style": style0$l
6021
5986
  };
6022
- const RunData = /* @__PURE__ */ _export_sfc(_sfc_main$v, [["render", _sfc_render$7], ["__cssModules", cssModules$l], ["__scopeId", "data-v-da2aa5ea"]]);
6023
- const _sfc_main$u = defineComponent({
5987
+ const RunData = /* @__PURE__ */ _export_sfc(_sfc_main$y, [["render", _sfc_render$7], ["__cssModules", cssModules$n], ["__scopeId", "data-v-09e06d98"]]);
5988
+ const _sfc_main$x = defineComponent({
6024
5989
  props: {
6025
5990
  taskData: {},
6026
5991
  // ITaskData
@@ -6047,9 +6012,9 @@ const _sfc_main$u = defineComponent({
6047
6012
  }
6048
6013
  }
6049
6014
  });
6050
- const _hoisted_1$b = ["innerHTML"];
6015
+ const _hoisted_1$c = ["innerHTML"];
6051
6016
  const _hoisted_2$7 = /* @__PURE__ */ createBaseVNode("br", null, null, -1);
6052
- const _hoisted_3$3 = /* @__PURE__ */ createBaseVNode("br", null, null, -1);
6017
+ const _hoisted_3$4 = /* @__PURE__ */ createBaseVNode("br", null, null, -1);
6053
6018
  function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {
6054
6019
  const _component_n8n_info_tip = resolveComponent("n8n-info-tip");
6055
6020
  const _component_n8n_text = resolveComponent("n8n-text");
@@ -6065,7 +6030,7 @@ function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {
6065
6030
  innerHTML: _ctx.$locale.baseText(
6066
6031
  _ctx.hasPinData ? "ndv.output.staleDataWarning.pinData" : "ndv.output.staleDataWarning.regular"
6067
6032
  )
6068
- }, null, 8, _hoisted_1$b)
6033
+ }, null, 8, _hoisted_1$c)
6069
6034
  ]),
6070
6035
  _: 1
6071
6036
  })) : _ctx.runMetadata ? (openBlock(), createBlock(_component_n8n_info_tip, {
@@ -6097,7 +6062,7 @@ function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {
6097
6062
  _: 1
6098
6063
  }),
6099
6064
  createTextVNode(" " + toDisplayString(_ctx.runMetadata.startTime), 1),
6100
- _hoisted_3$3,
6065
+ _hoisted_3$4,
6101
6066
  createVNode(_component_n8n_text, {
6102
6067
  bold: true,
6103
6068
  size: "small"
@@ -6113,9 +6078,9 @@ function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {
6113
6078
  _: 1
6114
6079
  }, 8, ["theme", "data-test-id"])) : createCommentVNode("", true);
6115
6080
  }
6116
- const RunInfo = /* @__PURE__ */ _export_sfc(_sfc_main$u, [["render", _sfc_render$6]]);
6117
- const _hoisted_1$a = /* @__PURE__ */ createBaseVNode("br", null, null, -1);
6118
- const _sfc_main$t = /* @__PURE__ */ defineComponent({
6081
+ const RunInfo = /* @__PURE__ */ _export_sfc(_sfc_main$x, [["render", _sfc_render$6]]);
6082
+ const _hoisted_1$b = /* @__PURE__ */ createBaseVNode("br", null, null, -1);
6083
+ const _sfc_main$w = /* @__PURE__ */ defineComponent({
6119
6084
  __name: "OutputPanel",
6120
6085
  props: {
6121
6086
  workflow: {},
@@ -6365,7 +6330,7 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
6365
6330
  key: 0,
6366
6331
  onClick: insertTestData
6367
6332
  }, [
6368
- _hoisted_1$a,
6333
+ _hoisted_1$b,
6369
6334
  createTextVNode(" " + toDisplayString(_ctx.$locale.baseText("generic.or")) + " ", 1),
6370
6335
  createVNode(_component_n8n_text, {
6371
6336
  tag: "a",
@@ -6454,19 +6419,19 @@ const titleSection$1 = "_titleSection_f1tu5_11";
6454
6419
  const title$2 = "_title_f1tu5_11";
6455
6420
  const noOutputData$1 = "_noOutputData_f1tu5_27";
6456
6421
  const recoveredOutputData$1 = "_recoveredOutputData_f1tu5_37";
6457
- const style0$i = {
6422
+ const style0$k = {
6458
6423
  outputTypeSelect,
6459
6424
  titleSection: titleSection$1,
6460
6425
  title: title$2,
6461
6426
  noOutputData: noOutputData$1,
6462
6427
  recoveredOutputData: recoveredOutputData$1
6463
6428
  };
6464
- const cssModules$k = {
6465
- "$style": style0$i
6429
+ const cssModules$m = {
6430
+ "$style": style0$k
6466
6431
  };
6467
- const OutputPanel = /* @__PURE__ */ _export_sfc(_sfc_main$t, [["__cssModules", cssModules$k]]);
6468
- const _hoisted_1$9 = { key: 0 };
6469
- const _sfc_main$s = /* @__PURE__ */ defineComponent({
6432
+ const OutputPanel = /* @__PURE__ */ _export_sfc(_sfc_main$w, [["__cssModules", cssModules$m]]);
6433
+ const _hoisted_1$a = { key: 0 };
6434
+ const _sfc_main$v = /* @__PURE__ */ defineComponent({
6470
6435
  __name: "InputNodeSelect",
6471
6436
  props: {
6472
6437
  nodes: {},
@@ -6564,7 +6529,7 @@ const _sfc_main$s = /* @__PURE__ */ defineComponent({
6564
6529
  prefix: withCtx(() => {
6565
6530
  var _a;
6566
6531
  return [
6567
- createVNode(_sfc_main$L, {
6532
+ createVNode(_sfc_main$O, {
6568
6533
  disabled: (_a = selectedInputNode.value) == null ? void 0 : _a.disabled,
6569
6534
  "node-type": selectedInputNodeType.value,
6570
6535
  size: 14,
@@ -6582,7 +6547,7 @@ const _sfc_main$s = /* @__PURE__ */ defineComponent({
6582
6547
  "data-test-id": "ndv-input-option"
6583
6548
  }, {
6584
6549
  default: withCtx(() => [
6585
- createVNode(_sfc_main$L, {
6550
+ createVNode(_sfc_main$O, {
6586
6551
  disabled: node2.disabled,
6587
6552
  "node-type": type,
6588
6553
  size: 14,
@@ -6593,7 +6558,7 @@ const _sfc_main$s = /* @__PURE__ */ defineComponent({
6593
6558
  class: normalizeClass(_ctx.$style.title)
6594
6559
  }, [
6595
6560
  createTextVNode(toDisplayString(title2(node2.name)) + " ", 1),
6596
- node2.disabled ? (openBlock(), createElementBlock("span", _hoisted_1$9, "(" + toDisplayString(unref(i18n2).baseText("node.disabled")) + ")", 1)) : createCommentVNode("", true)
6561
+ node2.disabled ? (openBlock(), createElementBlock("span", _hoisted_1$a, "(" + toDisplayString(unref(i18n2).baseText("node.disabled")) + ")", 1)) : createCommentVNode("", true)
6597
6562
  ], 2),
6598
6563
  createBaseVNode("span", {
6599
6564
  class: normalizeClass(_ctx.$style.subtitle)
@@ -6614,7 +6579,7 @@ const icon = "_icon_68vpa_18";
6614
6579
  const title$1 = "_title_68vpa_22";
6615
6580
  const disabled$1 = "_disabled_68vpa_31";
6616
6581
  const subtitle = "_subtitle_68vpa_35";
6617
- const style0$h = {
6582
+ const style0$j = {
6618
6583
  select,
6619
6584
  node: node$1,
6620
6585
  icon,
@@ -6622,12 +6587,12 @@ const style0$h = {
6622
6587
  disabled: disabled$1,
6623
6588
  subtitle
6624
6589
  };
6625
- const cssModules$j = {
6626
- "$style": style0$h
6590
+ const cssModules$l = {
6591
+ "$style": style0$j
6627
6592
  };
6628
- const InputNodeSelect = /* @__PURE__ */ _export_sfc(_sfc_main$s, [["__cssModules", cssModules$j]]);
6629
- const _sfc_main$r = {};
6630
- const _hoisted_1$8 = {
6593
+ const InputNodeSelect = /* @__PURE__ */ _export_sfc(_sfc_main$v, [["__cssModules", cssModules$l]]);
6594
+ const _sfc_main$u = {};
6595
+ const _hoisted_1$9 = {
6631
6596
  width: "112",
6632
6597
  height: "80",
6633
6598
  viewBox: "0 0 112 80",
@@ -6640,10 +6605,10 @@ const _hoisted_5$3 = [
6640
6605
  _hoisted_2$6
6641
6606
  ];
6642
6607
  function _sfc_render$5(_ctx, _cache) {
6643
- return openBlock(), createElementBlock("svg", _hoisted_1$8, _hoisted_5$3);
6608
+ return openBlock(), createElementBlock("svg", _hoisted_1$9, _hoisted_5$3);
6644
6609
  }
6645
- const WireMeUp = /* @__PURE__ */ _export_sfc(_sfc_main$r, [["render", _sfc_render$5]]);
6646
- const _sfc_main$q = defineComponent({
6610
+ const WireMeUp = /* @__PURE__ */ _export_sfc(_sfc_main$u, [["render", _sfc_render$5]]);
6611
+ const _sfc_main$t = defineComponent({
6647
6612
  name: "InputPanel",
6648
6613
  components: { RunData, NodeExecuteButton, WireMeUp, InputNodeSelect },
6649
6614
  props: {
@@ -6921,7 +6886,7 @@ const noOutputData = "_noOutputData_17wvq_18";
6921
6886
  const recoveredOutputData = "_recoveredOutputData_17wvq_28";
6922
6887
  const notConnected = "_notConnected_17wvq_37";
6923
6888
  const title = "_title_17wvq_5";
6924
- const style0$g = {
6889
+ const style0$i = {
6925
6890
  mappedNode,
6926
6891
  titleSection,
6927
6892
  inputModeTab,
@@ -6930,7 +6895,7 @@ const style0$g = {
6930
6895
  notConnected,
6931
6896
  title
6932
6897
  };
6933
- const _hoisted_1$7 = ["innerHTML"];
6898
+ const _hoisted_1$8 = ["innerHTML"];
6934
6899
  function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
6935
6900
  const _component_n8n_radio_buttons = resolveComponent("n8n-radio-buttons");
6936
6901
  const _component_InputNodeSelect = resolveComponent("InputNodeSelect");
@@ -7015,7 +6980,7 @@ function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
7015
6980
  innerHTML: _ctx.$locale.baseText("dataMapping.dragFromPreviousHint", {
7016
6981
  interpolate: { name: _ctx.focusedMappableInput }
7017
6982
  })
7018
- }, null, 8, _hoisted_1$7)
6983
+ }, null, 8, _hoisted_1$8)
7019
6984
  ]),
7020
6985
  default: withCtx(() => [
7021
6986
  createVNode(_component_NodeExecuteButton, {
@@ -7134,16 +7099,16 @@ function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
7134
7099
  } : void 0
7135
7100
  ]), 1032, ["node", "nodes", "workflow", "run-index", "linked-runs", "can-link-runs", "too-much-data-title", "no-data-in-branch-message", "is-executing", "executing-message", "push-ref", "override-outputs", "mapping-enabled", "distance-from-active", "is-production-execution-preview", "is-pane-active", "onActivatePane", "onLinkRun", "onUnlinkRun", "onRunChange"]);
7136
7101
  }
7137
- const cssModules$i = {
7138
- "$style": style0$g
7102
+ const cssModules$k = {
7103
+ "$style": style0$i
7139
7104
  };
7140
- const InputPanel = /* @__PURE__ */ _export_sfc(_sfc_main$q, [["render", _sfc_render$4], ["__cssModules", cssModules$i]]);
7141
- const _sfc_main$p = defineComponent({
7105
+ const InputPanel = /* @__PURE__ */ _export_sfc(_sfc_main$t, [["render", _sfc_render$4], ["__cssModules", cssModules$k]]);
7106
+ const _sfc_main$s = defineComponent({
7142
7107
  name: "TriggerPanel",
7143
7108
  components: {
7144
7109
  NodeExecuteButton,
7145
7110
  CopyInput,
7146
- NodeIcon: _sfc_main$L
7111
+ NodeIcon: _sfc_main$O
7147
7112
  },
7148
7113
  props: {
7149
7114
  nodeName: {
@@ -7445,7 +7410,7 @@ const header = "_header_1evnm_18";
7445
7410
  const action = "_action_1evnm_25";
7446
7411
  const shake$1 = "_shake_1evnm_29";
7447
7412
  const accordion = "_accordion_1evnm_50";
7448
- const style0$f = {
7413
+ const style0$h = {
7449
7414
  container,
7450
7415
  header,
7451
7416
  action,
@@ -7453,9 +7418,9 @@ const style0$f = {
7453
7418
  accordion
7454
7419
  };
7455
7420
  const _withScopeId$3 = (n) => (pushScopeId("data-v-36b80c39"), n = n(), popScopeId(), n);
7456
- const _hoisted_1$6 = { key: "empty" };
7421
+ const _hoisted_1$7 = { key: "empty" };
7457
7422
  const _hoisted_2$5 = { key: "listening" };
7458
- const _hoisted_3$2 = { key: 0 };
7423
+ const _hoisted_3$3 = { key: 0 };
7459
7424
  const _hoisted_4$2 = { key: 1 };
7460
7425
  const _hoisted_5$2 = { key: 0 };
7461
7426
  const _hoisted_6$2 = { key: "default" };
@@ -7484,7 +7449,7 @@ function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
7484
7449
  mode: "out-in"
7485
7450
  }, {
7486
7451
  default: withCtx(() => [
7487
- _ctx.hasIssues || _ctx.hideContent ? (openBlock(), createElementBlock("div", _hoisted_1$6)) : _ctx.isListeningForEvents ? (openBlock(), createElementBlock("div", _hoisted_2$5, [
7452
+ _ctx.hasIssues || _ctx.hideContent ? (openBlock(), createElementBlock("div", _hoisted_1$7)) : _ctx.isListeningForEvents ? (openBlock(), createElementBlock("div", _hoisted_2$5, [
7488
7453
  createVNode(_component_n8n_pulse, null, {
7489
7454
  default: withCtx(() => [
7490
7455
  createVNode(_component_NodeIcon, {
@@ -7494,7 +7459,7 @@ function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
7494
7459
  ]),
7495
7460
  _: 1
7496
7461
  }),
7497
- _ctx.isWebhookNode ? (openBlock(), createElementBlock("div", _hoisted_3$2, [
7462
+ _ctx.isWebhookNode ? (openBlock(), createElementBlock("div", _hoisted_3$3, [
7498
7463
  createVNode(_component_n8n_text, {
7499
7464
  tag: "div",
7500
7465
  size: "large",
@@ -7650,11 +7615,11 @@ function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
7650
7615
  })
7651
7616
  ], 2);
7652
7617
  }
7653
- const cssModules$h = {
7654
- "$style": style0$f
7618
+ const cssModules$j = {
7619
+ "$style": style0$h
7655
7620
  };
7656
- const TriggerPanel = /* @__PURE__ */ _export_sfc(_sfc_main$p, [["render", _sfc_render$3], ["__cssModules", cssModules$h], ["__scopeId", "data-v-36b80c39"]]);
7657
- const _sfc_main$o = /* @__PURE__ */ defineComponent({
7621
+ const TriggerPanel = /* @__PURE__ */ _export_sfc(_sfc_main$s, [["render", _sfc_render$3], ["__cssModules", cssModules$j], ["__scopeId", "data-v-36b80c39"]]);
7622
+ const _sfc_main$r = /* @__PURE__ */ defineComponent({
7658
7623
  __name: "NodeDetailsView",
7659
7624
  props: {
7660
7625
  workflowObject: {},
@@ -8325,15 +8290,15 @@ const style1 = {
8325
8290
  backToCanvas,
8326
8291
  featureRequest
8327
8292
  };
8328
- const cssModules$g = {
8293
+ const cssModules$i = {
8329
8294
  "$style": style1
8330
8295
  };
8331
- const NodeDetailsView = /* @__PURE__ */ _export_sfc(_sfc_main$o, [["__cssModules", cssModules$g]]);
8296
+ const NodeDetailsView = /* @__PURE__ */ _export_sfc(_sfc_main$r, [["__cssModules", cssModules$i]]);
8332
8297
  const NodeDetailsView$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
8333
8298
  __proto__: null,
8334
8299
  default: NodeDetailsView
8335
8300
  }, Symbol.toStringTag, { value: "Module" }));
8336
- const _sfc_main$n = /* @__PURE__ */ defineComponent({
8301
+ const _sfc_main$q = /* @__PURE__ */ defineComponent({
8337
8302
  __name: "ContextMenu",
8338
8303
  emits: ["action"],
8339
8304
  setup(__props, { emit: __emit }) {
@@ -8399,14 +8364,14 @@ const _sfc_main$n = /* @__PURE__ */ defineComponent({
8399
8364
  });
8400
8365
  const contextMenu = "_contextMenu_1t4kq_1";
8401
8366
  const activator = "_activator_1t4kq_5";
8402
- const style0$e = {
8367
+ const style0$g = {
8403
8368
  contextMenu,
8404
8369
  activator
8405
8370
  };
8406
- const cssModules$f = {
8407
- "$style": style0$e
8371
+ const cssModules$h = {
8372
+ "$style": style0$g
8408
8373
  };
8409
- const ContextMenu = /* @__PURE__ */ _export_sfc(_sfc_main$n, [["__cssModules", cssModules$f]]);
8374
+ const ContextMenu = /* @__PURE__ */ _export_sfc(_sfc_main$q, [["__cssModules", cssModules$h]]);
8410
8375
  function useNodeBase({
8411
8376
  name,
8412
8377
  instance,
@@ -8897,12 +8862,12 @@ function useNodeBase({
8897
8862
  outputs: outputs2
8898
8863
  };
8899
8864
  }
8900
- const _sfc_main$m = defineComponent({
8865
+ const _sfc_main$p = defineComponent({
8901
8866
  name: "Node",
8902
8867
  components: {
8903
8868
  TitledList,
8904
8869
  FontAwesomeIcon,
8905
- NodeIcon: _sfc_main$L
8870
+ NodeIcon: _sfc_main$O
8906
8871
  },
8907
8872
  props: {
8908
8873
  isProductionExecutionPreview: {
@@ -9479,9 +9444,9 @@ const _sfc_main$m = defineComponent({
9479
9444
  }
9480
9445
  });
9481
9446
  const _withScopeId$2 = (n) => (pushScopeId("data-v-45f1741d"), n = n(), popScopeId(), n);
9482
- const _hoisted_1$5 = ["id", "data-name", "data-node-type"];
9447
+ const _hoisted_1$6 = ["id", "data-name", "data-node-type"];
9483
9448
  const _hoisted_2$4 = { class: "select-background" };
9484
- const _hoisted_3$1 = {
9449
+ const _hoisted_3$2 = {
9485
9450
  key: 0,
9486
9451
  class: "trigger-icon"
9487
9452
  };
@@ -9560,7 +9525,7 @@ function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
9560
9525
  style: normalizeStyle(_ctx.nodeStyle),
9561
9526
  onClick: _cache[0] || (_cache[0] = withModifiers((...args) => _ctx.onClick && _ctx.onClick(...args), ["left"]))
9562
9527
  }, [
9563
- _ctx.isTriggerNode ? (openBlock(), createElementBlock("i", _hoisted_3$1, [
9528
+ _ctx.isTriggerNode ? (openBlock(), createElementBlock("i", _hoisted_3$2, [
9564
9529
  createVNode(_component_n8n_tooltip, { placement: "bottom" }, {
9565
9530
  content: withCtx(() => [
9566
9531
  createBaseVNode("span", {
@@ -9741,10 +9706,10 @@ function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
9741
9706
  ], 544)), [
9742
9707
  [vShow, !_ctx.hideActions]
9743
9708
  ]) : createCommentVNode("", true)
9744
- ], 46, _hoisted_1$5)) : createCommentVNode("", true);
9709
+ ], 46, _hoisted_1$6)) : createCommentVNode("", true);
9745
9710
  }
9746
- const Node = /* @__PURE__ */ _export_sfc(_sfc_main$m, [["render", _sfc_render$2], ["__scopeId", "data-v-45f1741d"]]);
9747
- const _sfc_main$l = defineComponent({
9711
+ const Node$1 = /* @__PURE__ */ _export_sfc(_sfc_main$p, [["render", _sfc_render$2], ["__scopeId", "data-v-45f1741d"]]);
9712
+ const _sfc_main$o = defineComponent({
9748
9713
  name: "Sticky",
9749
9714
  props: {
9750
9715
  nodeViewScale: {
@@ -10011,16 +9976,16 @@ const _sfc_main$l = defineComponent({
10011
9976
  }
10012
9977
  }
10013
9978
  });
10014
- const _withScopeId$1 = (n) => (pushScopeId("data-v-4f480943"), n = n(), popScopeId(), n);
10015
- const _hoisted_1$4 = ["id", "data-name"];
9979
+ const _withScopeId$1 = (n) => (pushScopeId("data-v-679f99cc"), n = n(), popScopeId(), n);
9980
+ const _hoisted_1$5 = ["id", "data-name"];
10016
9981
  const _hoisted_2$3 = { class: "select-sticky-background" };
10017
- const _hoisted_3 = ["title"];
9982
+ const _hoisted_3$1 = ["title"];
10018
9983
  const _hoisted_4 = ["title"];
10019
9984
  const _hoisted_5 = { class: "content" };
10020
9985
  const _hoisted_6 = ["onClick"];
10021
9986
  function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
10022
9987
  var _a, _b;
10023
- const _component_n8n_sticky = resolveComponent("n8n-sticky");
9988
+ const _component_N8nResizeableSticky = resolveComponent("N8nResizeableSticky");
10024
9989
  const _component_font_awesome_icon = resolveComponent("font-awesome-icon");
10025
9990
  const _component_n8n_popover = resolveComponent("n8n-popover");
10026
9991
  const _directive_touch = resolveDirective("touch");
@@ -10049,7 +10014,7 @@ function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
10049
10014
  onClick: _cache[0] || (_cache[0] = withModifiers((...args) => _ctx.mouseLeftClick && _ctx.mouseLeftClick(...args), ["left"])),
10050
10015
  onContextmenu: _cache[1] || (_cache[1] = (...args) => _ctx.onContextMenu && _ctx.onContextMenu(...args))
10051
10016
  }, [
10052
- _ctx.node ? (openBlock(), createBlock(_component_n8n_sticky, {
10017
+ _ctx.node ? (openBlock(), createBlock(_component_N8nResizeableSticky, {
10053
10018
  key: 0,
10054
10019
  id: _ctx.node.id,
10055
10020
  "model-value": _ctx.node.parameters.content,
@@ -10081,7 +10046,7 @@ function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
10081
10046
  title: _ctx.$locale.baseText("node.delete")
10082
10047
  }, [
10083
10048
  createVNode(_component_font_awesome_icon, { icon: "trash" })
10084
- ], 8, _hoisted_3)), [
10049
+ ], 8, _hoisted_3$1)), [
10085
10050
  [_directive_touch, _ctx.deleteNode, "tap"]
10086
10051
  ]),
10087
10052
  createVNode(_component_n8n_popover, {
@@ -10128,9 +10093,9 @@ function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
10128
10093
  [vShow, _ctx.showActions]
10129
10094
  ])
10130
10095
  ], 6)
10131
- ], 12, _hoisted_1$4);
10096
+ ], 12, _hoisted_1$5);
10132
10097
  }
10133
- const Sticky = /* @__PURE__ */ _export_sfc(_sfc_main$l, [["render", _sfc_render$1], ["__scopeId", "data-v-4f480943"]]);
10098
+ const Sticky = /* @__PURE__ */ _export_sfc(_sfc_main$o, [["render", _sfc_render$1], ["__scopeId", "data-v-679f99cc"]]);
10134
10099
  const SEQUENTIAL_BONUS = 60;
10135
10100
  const SEPARATOR_BONUS = 30;
10136
10101
  const CAMEL_BONUS = 30;
@@ -10960,10 +10925,19 @@ const useViewStacks = defineStore("nodeCreatorViewStacks", () => {
10960
10925
  return stack.items ? extendItemsWithUUID(stack.items) : [];
10961
10926
  }
10962
10927
  if (stack.search && searchBaseItems.value) {
10963
- const searchBase = searchBaseItems.value.length > 0 ? searchBaseItems.value : flattenCreateElements(stack.baselineItems ?? []);
10928
+ let searchBase = searchBaseItems.value;
10964
10929
  const canvasHasAINodes = useCanvasStore().aiNodes.length > 0;
10965
- const filteredNodes = isAiRootView(stack) || canvasHasAINodes ? searchBase : filterOutAiNodes(searchBase);
10966
- const searchResults = extendItemsWithUUID(searchNodes(stack.search || "", filteredNodes));
10930
+ if (searchBaseItems.value.length === 0) {
10931
+ searchBase = flattenCreateElements(stack.baselineItems ?? []);
10932
+ }
10933
+ if (
10934
+ // Filter-out AI sub-nodes if canvas has no AI nodes and the root view is not AI
10935
+ !(isAiRootView(stack) || canvasHasAINodes) || // or if the source is a plus endpoint or a node connection drop
10936
+ ["plus_endpoint", "node_connection_drop"].includes(nodeCreatorStore.openSource)
10937
+ ) {
10938
+ searchBase = filterOutAiNodes(searchBase);
10939
+ }
10940
+ const searchResults = extendItemsWithUUID(searchNodes(stack.search || "", searchBase));
10967
10941
  const groupedNodes = groupIfAiNodes(searchResults, false) ?? searchResults;
10968
10942
  stack.activeIndex = groupedNodes.some((node2) => node2.type === "section") ? 1 : 0;
10969
10943
  return groupedNodes;
@@ -11031,11 +11005,24 @@ const useViewStacks = defineStore("nodeCreatorViewStacks", () => {
11031
11005
  function isAiRootView(stack) {
11032
11006
  return stack.rootView === AI_NODE_CREATOR_VIEW;
11033
11007
  }
11008
+ function filterAiRootNodes(items) {
11009
+ return items.filter((node2) => {
11010
+ var _a, _b;
11011
+ if (node2.type !== "node")
11012
+ return false;
11013
+ return (_b = (_a = node2.properties.codex) == null ? void 0 : _a.subcategories) == null ? void 0 : _b[AI_SUBCATEGORY].includes(
11014
+ AI_CATEGORY_ROOT_NODES
11015
+ );
11016
+ });
11017
+ }
11034
11018
  function groupIfAiNodes(items, sortAlphabetically = true) {
11035
11019
  const aiNodes = items.filter((node2) => isAINode(node2));
11036
- if (aiNodes.length > 0) {
11020
+ const canvasHasAINodes = useCanvasStore().aiNodes.length > 0;
11021
+ if (aiNodes.length > 0 && (canvasHasAINodes || isAiRootView(getLastActiveStack()))) {
11037
11022
  const sectionsMap = /* @__PURE__ */ new Map();
11038
- aiNodes.forEach((node2) => {
11023
+ const aiRootNodes = filterAiRootNodes(aiNodes);
11024
+ const aiSubNodes = difference(aiNodes, aiRootNodes);
11025
+ aiSubNodes.forEach((node2) => {
11039
11026
  var _a, _b, _c, _d, _e, _f;
11040
11027
  const section = (_c = (_b = (_a = node2.properties.codex) == null ? void 0 : _a.subcategories) == null ? void 0 : _b[AI_SUBCATEGORY]) == null ? void 0 : _c[0];
11041
11028
  if (section) {
@@ -11051,26 +11038,12 @@ const useViewStacks = defineStore("nodeCreatorViewStacks", () => {
11051
11038
  }
11052
11039
  });
11053
11040
  const nonAiNodes = difference(items, aiNodes);
11054
- const nonAiTriggerNodes = nonAiNodes.filter(
11055
- (item) => item.type === "node" && useNodeTypesStore().isTriggerNode(item.properties.name)
11056
- );
11057
- const nonAiRegularNodes = difference(nonAiNodes, nonAiTriggerNodes);
11058
- if (nonAiNodes.length > 0) {
11059
- let sectionKey = "";
11060
- if (nonAiRegularNodes.length && nonAiTriggerNodes.length) {
11061
- sectionKey = i18n2.baseText("nodeCreator.actionsCategory.regularAndTriggers");
11062
- } else {
11063
- sectionKey = nonAiRegularNodes.length ? i18n2.baseText("nodeCreator.actionsCategory.regularNodes") : i18n2.baseText("nodeCreator.actionsCategory.triggerNodes");
11064
- }
11065
- const nodesKeys = nonAiNodes.map((node2) => node2.key);
11066
- sectionsMap.set(sectionKey, {
11067
- key: sectionKey,
11068
- title: sectionKey,
11069
- items: [...nodesKeys]
11070
- });
11071
- }
11072
11041
  const sections = Array.from(sectionsMap.values());
11073
- return groupItemsInSections(items, sections, sortAlphabetically);
11042
+ return [
11043
+ ...nonAiNodes,
11044
+ ...aiRootNodes,
11045
+ ...groupItemsInSections(aiSubNodes, sections, sortAlphabetically)
11046
+ ];
11074
11047
  }
11075
11048
  return items;
11076
11049
  }
@@ -11227,23 +11200,41 @@ function mapLegacyConnectionsToCanvasConnections(legacyConnections, nodes) {
11227
11200
  const mappedConnections = [];
11228
11201
  Object.keys(legacyConnections).forEach((fromNodeName) => {
11229
11202
  var _a;
11230
- const fromId = (_a = nodes.find((node2) => node2.name === fromNodeName)) == null ? void 0 : _a.id;
11231
- const fromConnectionTypes = Object.keys(legacyConnections[fromNodeName]);
11203
+ const fromId = ((_a = nodes.find((node2) => node2.name === fromNodeName)) == null ? void 0 : _a.id) ?? "";
11204
+ const fromConnectionTypes = Object.keys(
11205
+ legacyConnections[fromNodeName]
11206
+ );
11232
11207
  fromConnectionTypes.forEach((fromConnectionType) => {
11233
11208
  const fromPorts = legacyConnections[fromNodeName][fromConnectionType];
11234
11209
  fromPorts.forEach((toPorts, fromIndex) => {
11235
11210
  toPorts.forEach((toPort) => {
11236
11211
  var _a2;
11237
- const toId = (_a2 = nodes.find((node2) => node2.name === toPort.node)) == null ? void 0 : _a2.id;
11212
+ const toId = ((_a2 = nodes.find((node2) => node2.name === toPort.node)) == null ? void 0 : _a2.id) ?? "";
11238
11213
  const toConnectionType = toPort.type;
11239
11214
  const toIndex = toPort.index;
11215
+ const sourceHandle = createCanvasConnectionHandleString({
11216
+ mode: CanvasConnectionMode.Output,
11217
+ type: fromConnectionType,
11218
+ index: fromIndex
11219
+ });
11220
+ const targetHandle = createCanvasConnectionHandleString({
11221
+ mode: CanvasConnectionMode.Input,
11222
+ type: toConnectionType,
11223
+ index: toIndex
11224
+ });
11225
+ const connectionId = createCanvasConnectionId({
11226
+ source: fromId,
11227
+ sourceHandle,
11228
+ target: toId,
11229
+ targetHandle
11230
+ });
11240
11231
  if (fromId && toId) {
11241
11232
  mappedConnections.push({
11242
- id: `[${fromId}/${fromConnectionType}/${fromIndex}][${toId}/${toConnectionType}/${toIndex}]`,
11233
+ id: connectionId,
11243
11234
  source: fromId,
11244
11235
  target: toId,
11245
- sourceHandle: `${CanvasConnectionMode.Output}/${fromConnectionType}/${fromIndex}`,
11246
- targetHandle: `${CanvasConnectionMode.Input}/${toConnectionType}/${toIndex}`,
11236
+ sourceHandle,
11237
+ targetHandle,
11247
11238
  data: {
11248
11239
  fromNodeName,
11249
11240
  source: {
@@ -11277,6 +11268,14 @@ function parseCanvasConnectionHandleString(handle2) {
11277
11268
  index: resolvedIndex
11278
11269
  };
11279
11270
  }
11271
+ function getVueFlowConnectorLengths(connection) {
11272
+ const connectionId = createCanvasConnectionId(connection);
11273
+ const edgeRef = document.getElementById(connectionId);
11274
+ if (!edgeRef) {
11275
+ return [PUSH_NODES_OFFSET, PUSH_NODES_OFFSET];
11276
+ }
11277
+ return [edgeRef.clientWidth, edgeRef.clientHeight];
11278
+ }
11280
11279
  function createCanvasConnectionHandleString({
11281
11280
  mode,
11282
11281
  type = NodeConnectionType.Main,
@@ -11284,6 +11283,9 @@ function createCanvasConnectionHandleString({
11284
11283
  }) {
11285
11284
  return `${mode}/${type}/${index}`;
11286
11285
  }
11286
+ function createCanvasConnectionId(connection) {
11287
+ return `[${connection.source}/${connection.sourceHandle}][${connection.target}/${connection.targetHandle}]`;
11288
+ }
11287
11289
  function mapCanvasConnectionToLegacyConnection(sourceNode, targetNode, connection) {
11288
11290
  const sourceNodeName = (sourceNode == null ? void 0 : sourceNode.name) ?? "";
11289
11291
  const { type: sourceType, index: sourceIndex } = parseCanvasConnectionHandleString(
@@ -11382,15 +11384,15 @@ const useNodeCreatorStore = defineStore(STORES.NODE_CREATOR, () => {
11382
11384
  });
11383
11385
  } else if (connectionType2 && nodeData) {
11384
11386
  openNodeCreatorForConnectingNode({
11385
- index: 0,
11386
- endpointUuid: createCanvasConnectionHandleString({
11387
- mode: "inputs",
11388
- type: connectionType2,
11389
- index: 0
11390
- }),
11391
- eventSource: NODE_CREATOR_OPEN_SOURCES.NOTICE_ERROR_MESSAGE,
11392
- outputType: connectionType2,
11393
- sourceId: nodeData.id
11387
+ connection: {
11388
+ source: nodeData.id,
11389
+ sourceHandle: createCanvasConnectionHandleString({
11390
+ mode: "inputs",
11391
+ type: connectionType2,
11392
+ index: 0
11393
+ })
11394
+ },
11395
+ eventSource: NODE_CREATOR_OPEN_SOURCES.NOTICE_ERROR_MESSAGE
11394
11396
  });
11395
11397
  }
11396
11398
  });
@@ -11447,28 +11449,44 @@ const useNodeCreatorStore = defineStore(STORES.NODE_CREATOR, () => {
11447
11449
  workflow_id: workflowId
11448
11450
  });
11449
11451
  }
11450
- function openNodeCreatorForConnectingNode(info) {
11451
- var _a;
11452
- const type = info.outputType ?? NodeConnectionType.Main;
11453
- const sourceNode = workflowsStore.getNodeById(info.sourceId);
11452
+ function openNodeCreatorForConnectingNode({
11453
+ connection,
11454
+ eventSource,
11455
+ nodeCreatorView
11456
+ }) {
11457
+ const sourceNode = workflowsStore.getNodeById(connection.source);
11454
11458
  if (!sourceNode) {
11455
11459
  return;
11456
11460
  }
11461
+ const { type, index, mode } = parseCanvasConnectionHandleString(connection.sourceHandle);
11457
11462
  uiStore.lastSelectedNode = sourceNode.name;
11458
- uiStore.lastSelectedNodeEndpointUuid = info.endpointUuid ?? null;
11459
- uiStore.lastSelectedNodeOutputIndex = info.index;
11463
+ uiStore.lastSelectedNodeEndpointUuid = connection.sourceHandle ?? null;
11464
+ uiStore.lastSelectedNodeOutputIndex = index;
11465
+ if (isVueFlowConnection(connection)) {
11466
+ uiStore.lastSelectedNodeConnection = connection;
11467
+ }
11460
11468
  openNodeCreator({
11461
- source: info.eventSource,
11469
+ source: eventSource,
11462
11470
  createNodeActive: true,
11463
- nodeCreatorView: info.nodeCreatorView
11471
+ nodeCreatorView
11464
11472
  });
11465
- const isOutput = ((_a = info.connection) == null ? void 0 : _a.endpoints[0].parameters.connection) === "source";
11473
+ const isOutput = mode === CanvasConnectionMode.Output;
11466
11474
  const isScopedConnection = type !== NodeConnectionType.Main && nodeConnectionTypes.includes(type);
11467
11475
  if (isScopedConnection) {
11468
11476
  useViewStacks().gotoCompatibleConnectionView(type, isOutput, getNodeCreatorFilter(sourceNode.name, type)).catch(() => {
11469
11477
  });
11470
11478
  }
11471
11479
  }
11480
+ function openNodeCreatorForTriggerNodes(source) {
11481
+ ndvStore.activeNodeName = null;
11482
+ setSelectedView(TRIGGER_NODE_CREATOR_VIEW);
11483
+ setShowScrim(true);
11484
+ openNodeCreator({
11485
+ source,
11486
+ createNodeActive: true,
11487
+ nodeCreatorView: TRIGGER_NODE_CREATOR_VIEW
11488
+ });
11489
+ }
11472
11490
  function getNodeCreatorFilter(nodeName, outputType) {
11473
11491
  let filter;
11474
11492
  const workflow = workflowsStore.getCurrentWorkflow();
@@ -11504,11 +11522,12 @@ const useNodeCreatorStore = defineStore(STORES.NODE_CREATOR, () => {
11504
11522
  openNodeCreator,
11505
11523
  openSelectiveNodeCreator,
11506
11524
  openNodeCreatorForConnectingNode,
11525
+ openNodeCreatorForTriggerNodes,
11507
11526
  allNodeCreatorNodes
11508
11527
  };
11509
11528
  });
11510
- const _hoisted_1$3 = ["textContent"];
11511
- const _sfc_main$k = /* @__PURE__ */ defineComponent({
11529
+ const _hoisted_1$4 = ["textContent"];
11530
+ const _sfc_main$n = /* @__PURE__ */ defineComponent({
11512
11531
  __name: "CanvasAddButton",
11513
11532
  props: {
11514
11533
  showTooltip: { type: Boolean },
@@ -11557,23 +11576,23 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
11557
11576
  createBaseVNode("p", {
11558
11577
  class: normalizeClass(_ctx.$style.label),
11559
11578
  textContent: toDisplayString(_ctx.$locale.baseText("nodeView.canvasAddButton.addFirstStep"))
11560
- }, null, 10, _hoisted_1$3)
11579
+ }, null, 10, _hoisted_1$4)
11561
11580
  ], 6);
11562
11581
  };
11563
11582
  }
11564
11583
  });
11565
11584
  const canvasAddButton = "_canvasAddButton_1easi_1";
11566
- const button = "_button_1easi_13";
11567
- const label$4 = "_label_1easi_34";
11568
- const style0$d = {
11585
+ const button$1 = "_button_1easi_13";
11586
+ const label$5 = "_label_1easi_34";
11587
+ const style0$f = {
11569
11588
  canvasAddButton,
11570
- button,
11571
- label: label$4
11589
+ button: button$1,
11590
+ label: label$5
11572
11591
  };
11573
- const cssModules$e = {
11574
- "$style": style0$d
11592
+ const cssModules$g = {
11593
+ "$style": style0$f
11575
11594
  };
11576
- const CanvasAddButton = /* @__PURE__ */ _export_sfc(_sfc_main$k, [["__cssModules", cssModules$e]]);
11595
+ const CanvasAddButton = /* @__PURE__ */ _export_sfc(_sfc_main$n, [["__cssModules", cssModules$g]]);
11577
11596
  function useCanvasPanning(elementRef, options = {}) {
11578
11597
  const uiStore = useUIStore();
11579
11598
  const moveLastPosition = ref([0, 0]);
@@ -11637,19 +11656,19 @@ function useCanvasPanning(elementRef, options = {}) {
11637
11656
  };
11638
11657
  }
11639
11658
  const NodeCreation = defineAsyncComponent(
11640
- async () => await __vitePreload(() => import("./NodeCreation-DhCMWAHz.js").then((n) => n.N), true ? __vite__mapDeps([53,6,7,8,4,1,9,10,11,12,3,2,5,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,54]) : void 0)
11659
+ async () => await __vitePreload(() => import("./NodeCreation-9z7kz5cV.js").then((n) => n.N), true ? __vite__mapDeps([54,5,6,7,4,1,8,9,10,11,3,2,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,55]) : void 0)
11641
11660
  );
11642
11661
  const CanvasControls = defineAsyncComponent(
11643
- async () => await __vitePreload(() => import("./CanvasControls-0ivxz7Ti.js"), true ? __vite__mapDeps([55,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,56]) : void 0)
11662
+ async () => await __vitePreload(() => import("./CanvasControls-CfTh2Ydp.js"), true ? __vite__mapDeps([56,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,57]) : void 0)
11644
11663
  );
11645
11664
  const SetupWorkflowCredentialsButton = defineAsyncComponent(
11646
- async () => await __vitePreload(() => import("./SetupWorkflowCredentialsButton-DUoHmZtW.js"), true ? __vite__mapDeps([57,1,3,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]) : void 0)
11665
+ async () => await __vitePreload(() => import("./SetupWorkflowCredentialsButton-DT4ZQ6H3.js"), true ? __vite__mapDeps([58,1,3,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]) : void 0)
11647
11666
  );
11648
- const _sfc_main$j = defineComponent({
11667
+ const _sfc_main$m = defineComponent({
11649
11668
  name: "NodeView",
11650
11669
  components: {
11651
11670
  NodeDetailsView,
11652
- Node,
11671
+ Node: Node$1,
11653
11672
  Sticky,
11654
11673
  CanvasAddButton,
11655
11674
  KeyboardShortcutTooltip,
@@ -13487,7 +13506,7 @@ const _sfc_main$j = defineComponent({
13487
13506
  }
13488
13507
  this.$telemetry.trackNodesPanel("nodeView.addNodeButton", trackProperties);
13489
13508
  }
13490
- if (trackHistory) {
13509
+ if (trackHistory && !isAutoAdd) {
13491
13510
  this.deselectAllNodes();
13492
13511
  setTimeout(() => {
13493
13512
  this.nodeSelectedByName(
@@ -15115,8 +15134,8 @@ const style2 = {
15115
15134
  shake,
15116
15135
  setupCredentialsButtonWrapper
15117
15136
  };
15118
- const _withScopeId = (n) => (pushScopeId("data-v-18db1a5a"), n = n(), popScopeId(), n);
15119
- const _hoisted_1$2 = ["textContent"];
15137
+ const _withScopeId = (n) => (pushScopeId("data-v-6169c2fe"), n = n(), popScopeId(), n);
15138
+ const _hoisted_1$3 = ["textContent"];
15120
15139
  const _hoisted_2$2 = {
15121
15140
  key: 0,
15122
15141
  class: "workflow-execute-wrapper"
@@ -15204,7 +15223,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
15204
15223
  "custom-tooltip": withCtx(() => [
15205
15224
  createBaseVNode("span", {
15206
15225
  textContent: toDisplayString(_ctx.$locale.baseText("nodeView.canvasAddButton.addATriggerNodeBeforeExecuting"))
15207
- }, null, 8, _hoisted_1$2)
15226
+ }, null, 8, _hoisted_1$3)
15208
15227
  ]),
15209
15228
  _: 2
15210
15229
  }, 1032, ["name", "is-read-only", "instance", "is-active", "hide-actions", "is-production-execution-preview", "workflow", "disable-pointer-events", "hide-node-issues", "onDeselectAllNodes", "onDeselectNode", "onNodeSelected", "onRunWorkflow", "onMoved", "onRun"]);
@@ -15344,15 +15363,16 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
15344
15363
  ], 32)
15345
15364
  ], 2);
15346
15365
  }
15347
- const cssModules$d = {
15366
+ const cssModules$f = {
15348
15367
  "$style": style2
15349
15368
  };
15350
- const NodeViewV1 = /* @__PURE__ */ _export_sfc(_sfc_main$j, [["render", _sfc_render], ["__cssModules", cssModules$d], ["__scopeId", "data-v-18db1a5a"]]);
15369
+ const NodeViewV1 = /* @__PURE__ */ _export_sfc(_sfc_main$m, [["render", _sfc_render], ["__cssModules", cssModules$f], ["__scopeId", "data-v-6169c2fe"]]);
15351
15370
  function useCanvasNode() {
15352
15371
  const node2 = inject(CanvasNodeKey);
15353
15372
  const data = computed(
15354
15373
  () => (node2 == null ? void 0 : node2.data.value) ?? {
15355
15374
  id: "",
15375
+ name: "",
15356
15376
  type: "",
15357
15377
  typeVersion: 1,
15358
15378
  disabled: false,
@@ -15366,12 +15386,14 @@ function useCanvasNode() {
15366
15386
  },
15367
15387
  runData: { count: 0, visible: false },
15368
15388
  render: {
15369
- type: "default",
15389
+ type: CanvasNodeRenderType.Default,
15370
15390
  options: {}
15371
15391
  }
15372
15392
  }
15373
15393
  );
15394
+ const id = computed(() => (node2 == null ? void 0 : node2.id.value) ?? "");
15374
15395
  const label2 = computed(() => (node2 == null ? void 0 : node2.label.value) ?? "");
15396
+ const name = computed(() => data.value.name);
15375
15397
  const inputs = computed(() => data.value.inputs);
15376
15398
  const outputs2 = computed(() => data.value.outputs);
15377
15399
  const connections2 = computed(() => data.value.connections);
@@ -15386,9 +15408,11 @@ function useCanvasNode() {
15386
15408
  const executionRunning = computed(() => data.value.execution.running);
15387
15409
  const runDataCount = computed(() => data.value.runData.count);
15388
15410
  const hasRunData = computed(() => data.value.runData.visible);
15389
- const renderOptions = computed(() => data.value.render.options);
15411
+ const render = computed(() => data.value.render);
15390
15412
  return {
15391
15413
  node: node2,
15414
+ id,
15415
+ name,
15392
15416
  label: label2,
15393
15417
  inputs,
15394
15418
  outputs: outputs2,
@@ -15404,19 +15428,25 @@ function useCanvasNode() {
15404
15428
  executionStatus,
15405
15429
  executionWaiting,
15406
15430
  executionRunning,
15407
- renderOptions
15431
+ render
15408
15432
  };
15409
15433
  }
15410
15434
  const workflowRunning = false;
15411
15435
  const nodeDisabledTitle = "Test";
15412
- const _sfc_main$i = /* @__PURE__ */ defineComponent({
15436
+ const _sfc_main$l = /* @__PURE__ */ defineComponent({
15413
15437
  __name: "CanvasNodeToolbar",
15414
15438
  emits: ["delete", "toggle", "run"],
15415
15439
  setup(__props, { emit: __emit }) {
15416
15440
  const emit = __emit;
15417
15441
  const $style = useCssModule();
15418
15442
  const i18n2 = useI18n();
15419
- const { renderOptions } = useCanvasNode();
15443
+ const { render } = useCanvasNode();
15444
+ const isExecuteNodeVisible = computed(() => {
15445
+ return render.value.type === CanvasNodeRenderType.Default && "configuration" in render.value.options && !render.value.options.configuration;
15446
+ });
15447
+ const isDisableNodeVisible = computed(() => {
15448
+ return render.value.type === CanvasNodeRenderType.Default;
15449
+ });
15420
15450
  function executeNode() {
15421
15451
  emit("run");
15422
15452
  }
@@ -15436,7 +15466,7 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
15436
15466
  createBaseVNode("div", {
15437
15467
  class: normalizeClass(unref($style).canvasNodeToolbarItems)
15438
15468
  }, [
15439
- !unref(renderOptions).configuration ? (openBlock(), createBlock(_component_N8nIconButton, {
15469
+ isExecuteNodeVisible.value ? (openBlock(), createBlock(_component_N8nIconButton, {
15440
15470
  key: 0,
15441
15471
  "data-test-id": "execute-node-button",
15442
15472
  type: "tertiary",
@@ -15447,7 +15477,8 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
15447
15477
  title: unref(i18n2).baseText("node.testStep"),
15448
15478
  onClick: executeNode
15449
15479
  }, null, 8, ["title"])) : createCommentVNode("", true),
15450
- createVNode(_component_N8nIconButton, {
15480
+ isDisableNodeVisible.value ? (openBlock(), createBlock(_component_N8nIconButton, {
15481
+ key: 1,
15451
15482
  "data-test-id": "disable-node-button",
15452
15483
  type: "tertiary",
15453
15484
  text: "",
@@ -15455,7 +15486,7 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
15455
15486
  icon: "power-off",
15456
15487
  title: nodeDisabledTitle,
15457
15488
  onClick: onToggleNode
15458
- }),
15489
+ })) : createCommentVNode("", true),
15459
15490
  createVNode(_component_N8nIconButton, {
15460
15491
  "data-test-id": "delete-node-button",
15461
15492
  type: "tertiary",
@@ -15480,14 +15511,14 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
15480
15511
  });
15481
15512
  const canvasNodeToolbar$1 = "_canvasNodeToolbar_1ljrn_1";
15482
15513
  const canvasNodeToolbarItems = "_canvasNodeToolbarItems_1ljrn_5";
15483
- const style0$c = {
15514
+ const style0$e = {
15484
15515
  canvasNodeToolbar: canvasNodeToolbar$1,
15485
15516
  canvasNodeToolbarItems
15486
15517
  };
15487
- const cssModules$c = {
15488
- "$style": style0$c
15518
+ const cssModules$e = {
15519
+ "$style": style0$e
15489
15520
  };
15490
- const CanvasNodeToolbar = /* @__PURE__ */ _export_sfc(_sfc_main$i, [["__cssModules", cssModules$c]]);
15521
+ const CanvasNodeToolbar = /* @__PURE__ */ _export_sfc(_sfc_main$l, [["__cssModules", cssModules$e]]);
15491
15522
  function useNodeConnections({
15492
15523
  inputs,
15493
15524
  outputs: outputs2,
@@ -15514,6 +15545,18 @@ function useNodeConnections({
15514
15545
  const mainOutputConnections = computed(
15515
15546
  () => unref(connections2).output[NodeConnectionType.Main] ?? []
15516
15547
  );
15548
+ function isValidConnection(connection) {
15549
+ const { type: sourceType, mode: sourceMode } = parseCanvasConnectionHandleString(
15550
+ connection.sourceHandle
15551
+ );
15552
+ const { type: targetType, mode: targetMode } = parseCanvasConnectionHandleString(
15553
+ connection.targetHandle
15554
+ );
15555
+ const isSameNode = connection.source === connection.target;
15556
+ const isSameMode = sourceMode === targetMode;
15557
+ const isSameType = sourceType === targetType;
15558
+ return !isSameNode && !isSameMode && isSameType;
15559
+ }
15517
15560
  return {
15518
15561
  mainInputs,
15519
15562
  nonMainInputs,
@@ -15521,10 +15564,11 @@ function useNodeConnections({
15521
15564
  mainInputConnections,
15522
15565
  mainOutputs,
15523
15566
  nonMainOutputs,
15524
- mainOutputConnections
15567
+ mainOutputConnections,
15568
+ isValidConnection
15525
15569
  };
15526
15570
  }
15527
- const _sfc_main$h = /* @__PURE__ */ defineComponent({
15571
+ const _sfc_main$k = /* @__PURE__ */ defineComponent({
15528
15572
  __name: "CanvasNodeDisabledStrikeThrough",
15529
15573
  setup(__props) {
15530
15574
  const $style = useCssModule();
@@ -15558,17 +15602,17 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
15558
15602
  });
15559
15603
  const disabledStrikeThrough = "_disabledStrikeThrough_8cj0z_1";
15560
15604
  const success$1 = "_success_8cj0z_10";
15561
- const style0$b = {
15605
+ const style0$d = {
15562
15606
  disabledStrikeThrough,
15563
15607
  success: success$1
15564
15608
  };
15565
- const cssModules$b = {
15566
- "$style": style0$b
15609
+ const cssModules$d = {
15610
+ "$style": style0$d
15567
15611
  };
15568
- const CanvasNodeDisabledStrikeThrough = /* @__PURE__ */ _export_sfc(_sfc_main$h, [["__cssModules", cssModules$b]]);
15569
- const _hoisted_1$1 = ["textContent"];
15612
+ const CanvasNodeDisabledStrikeThrough = /* @__PURE__ */ _export_sfc(_sfc_main$k, [["__cssModules", cssModules$d]]);
15613
+ const _hoisted_1$2 = ["textContent"];
15570
15614
  const _hoisted_2$1 = { key: 3 };
15571
- const _sfc_main$g = /* @__PURE__ */ defineComponent({
15615
+ const _sfc_main$j = /* @__PURE__ */ defineComponent({
15572
15616
  __name: "CanvasNodeStatusIcons",
15573
15617
  setup(__props) {
15574
15618
  const nodeHelpers = useNodeHelpers();
@@ -15615,7 +15659,7 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
15615
15659
  content: withCtx(() => [
15616
15660
  createBaseVNode("div", {
15617
15661
  textContent: toDisplayString(unref(executionWaiting))
15618
- }, null, 8, _hoisted_1$1)
15662
+ }, null, 8, _hoisted_1$2)
15619
15663
  ]),
15620
15664
  default: withCtx(() => [
15621
15665
  createVNode(_component_FontAwesomeIcon, { icon: "clock" })
@@ -15661,7 +15705,7 @@ const pinnedData = "_pinnedData_zk3it_12";
15661
15705
  const running$1 = "_running_zk3it_16";
15662
15706
  const issues = "_issues_zk3it_20";
15663
15707
  const count = "_count_zk3it_25";
15664
- const style0$a = {
15708
+ const style0$c = {
15665
15709
  status,
15666
15710
  runData,
15667
15711
  pinnedData,
@@ -15669,13 +15713,14 @@ const style0$a = {
15669
15713
  issues,
15670
15714
  count
15671
15715
  };
15672
- const cssModules$a = {
15673
- "$style": style0$a
15716
+ const cssModules$c = {
15717
+ "$style": style0$c
15674
15718
  };
15675
- const CanvasNodeStatusIcons = /* @__PURE__ */ _export_sfc(_sfc_main$g, [["__cssModules", cssModules$a]]);
15676
- const _hoisted_1 = ["data-test-id"];
15677
- const _hoisted_2 = { key: 0 };
15678
- const _sfc_main$f = /* @__PURE__ */ defineComponent({
15719
+ const CanvasNodeStatusIcons = /* @__PURE__ */ _export_sfc(_sfc_main$j, [["__cssModules", cssModules$c]]);
15720
+ const _hoisted_1$1 = ["data-test-id"];
15721
+ const _hoisted_2 = ["innerHTML"];
15722
+ const _hoisted_3 = { key: 0 };
15723
+ const _sfc_main$i = /* @__PURE__ */ defineComponent({
15679
15724
  __name: "CanvasNodeDefault",
15680
15725
  setup(__props) {
15681
15726
  const $style = useCssModule();
@@ -15691,13 +15736,14 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
15691
15736
  executionRunning,
15692
15737
  hasRunData,
15693
15738
  hasIssues: hasIssues2,
15694
- renderOptions
15739
+ render
15695
15740
  } = useCanvasNode();
15696
15741
  const { mainOutputs, nonMainInputs, requiredNonMainInputs } = useNodeConnections({
15697
15742
  inputs,
15698
15743
  outputs: outputs2,
15699
15744
  connections: connections2
15700
15745
  });
15746
+ const renderOptions = computed(() => render.value.options);
15701
15747
  const classes = computed(() => {
15702
15748
  return {
15703
15749
  [$style.node]: true,
@@ -15738,56 +15784,223 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
15738
15784
  return `canvas-${type}-node`;
15739
15785
  });
15740
15786
  return (_ctx, _cache) => {
15787
+ const _component_FontAwesomeIcon = resolveComponent("FontAwesomeIcon");
15741
15788
  return openBlock(), createElementBlock("div", {
15742
15789
  class: normalizeClass(classes.value),
15743
15790
  style: normalizeStyle(styles.value),
15744
15791
  "data-test-id": dataTestId.value
15745
15792
  }, [
15746
15793
  renderSlot(_ctx.$slots, "default"),
15794
+ renderOptions.value.trigger ? (openBlock(), createBlock(unref(N8nTooltip), {
15795
+ key: 0,
15796
+ placement: "bottom"
15797
+ }, {
15798
+ content: withCtx(() => [
15799
+ createBaseVNode("span", {
15800
+ innerHTML: _ctx.$locale.baseText("node.thisIsATriggerNode")
15801
+ }, null, 8, _hoisted_2)
15802
+ ]),
15803
+ default: withCtx(() => [
15804
+ createBaseVNode("div", {
15805
+ class: normalizeClass(unref($style).triggerIcon)
15806
+ }, [
15807
+ createVNode(_component_FontAwesomeIcon, {
15808
+ icon: "bolt",
15809
+ size: "lg"
15810
+ })
15811
+ ], 2)
15812
+ ]),
15813
+ _: 1
15814
+ })) : createCommentVNode("", true),
15747
15815
  createVNode(CanvasNodeStatusIcons, {
15748
15816
  class: normalizeClass(unref($style).statusIcons)
15749
15817
  }, null, 8, ["class"]),
15750
- unref(isDisabled) ? (openBlock(), createBlock(CanvasNodeDisabledStrikeThrough, { key: 0 })) : createCommentVNode("", true),
15818
+ unref(isDisabled) ? (openBlock(), createBlock(CanvasNodeDisabledStrikeThrough, { key: 1 })) : createCommentVNode("", true),
15751
15819
  unref(label2) ? (openBlock(), createElementBlock("div", {
15752
- key: 1,
15820
+ key: 2,
15753
15821
  class: normalizeClass(unref($style).label)
15754
15822
  }, [
15755
15823
  createTextVNode(toDisplayString(unref(label2)) + " ", 1),
15756
- unref(isDisabled) ? (openBlock(), createElementBlock("div", _hoisted_2, "(" + toDisplayString(unref(i18n2).baseText("node.disabled")) + ")", 1)) : createCommentVNode("", true)
15824
+ unref(isDisabled) ? (openBlock(), createElementBlock("div", _hoisted_3, "(" + toDisplayString(unref(i18n2).baseText("node.disabled")) + ")", 1)) : createCommentVNode("", true)
15757
15825
  ], 2)) : createCommentVNode("", true)
15758
- ], 14, _hoisted_1);
15826
+ ], 14, _hoisted_1$1);
15759
15827
  };
15760
15828
  }
15761
15829
  });
15762
- const node = "_node_ihclb_1";
15763
- const configuration = "_configuration_ihclb_24";
15764
- const statusIcons = "_statusIcons_ihclb_31";
15765
- const configurable = "_configurable_ihclb_34";
15766
- const label$3 = "_label_ihclb_41";
15767
- const selected = "_selected_ihclb_49";
15768
- const success = "_success_ihclb_52";
15769
- const error = "_error_ihclb_55";
15770
- const pinned = "_pinned_ihclb_58";
15771
- const disabled = "_disabled_ihclb_61";
15772
- const running = "_running_ihclb_64";
15773
- const style0$9 = {
15830
+ const node = "_node_tn88s_1";
15831
+ const trigger = "_trigger_tn88s_26";
15832
+ const configuration = "_configuration_tn88s_29";
15833
+ const statusIcons = "_statusIcons_tn88s_36";
15834
+ const configurable = "_configurable_tn88s_39";
15835
+ const label$4 = "_label_tn88s_46";
15836
+ const selected = "_selected_tn88s_54";
15837
+ const success = "_success_tn88s_57";
15838
+ const error = "_error_tn88s_60";
15839
+ const pinned = "_pinned_tn88s_63";
15840
+ const disabled = "_disabled_tn88s_66";
15841
+ const running = "_running_tn88s_69";
15842
+ const triggerIcon = "_triggerIcon_tn88s_90";
15843
+ const style0$b = {
15774
15844
  node,
15845
+ trigger,
15775
15846
  configuration,
15776
15847
  statusIcons,
15777
15848
  configurable,
15778
- label: label$3,
15849
+ label: label$4,
15779
15850
  selected,
15780
15851
  success,
15781
15852
  error,
15782
15853
  pinned,
15783
15854
  disabled,
15784
- running
15855
+ running,
15856
+ triggerIcon
15857
+ };
15858
+ const cssModules$b = {
15859
+ "$style": style0$b
15860
+ };
15861
+ const CanvasNodeDefault = /* @__PURE__ */ _export_sfc(_sfc_main$i, [["__cssModules", cssModules$b]]);
15862
+ const _sfc_main$h = /* @__PURE__ */ defineComponent({
15863
+ __name: "CanvasNodeStickyNote",
15864
+ emits: ["update", "move", "dblclick"],
15865
+ setup(__props, { emit: __emit }) {
15866
+ const emit = __emit;
15867
+ const { id, render } = useCanvasNode();
15868
+ const renderOptions = computed(() => render.value.options);
15869
+ function onResize(event) {
15870
+ emit("move", {
15871
+ x: event.params.x,
15872
+ y: event.params.y
15873
+ });
15874
+ emit("update", {
15875
+ ...event.params.width ? { width: event.params.width } : {},
15876
+ ...event.params.height ? { height: event.params.height } : {}
15877
+ });
15878
+ }
15879
+ const isActive = ref(false);
15880
+ function onInputChange(value) {
15881
+ emit("update", {
15882
+ content: value
15883
+ });
15884
+ }
15885
+ function onEdit(edit) {
15886
+ isActive.value = edit;
15887
+ }
15888
+ function onDoubleClick(event) {
15889
+ emit("dblclick", event);
15890
+ }
15891
+ return (_ctx, _cache) => {
15892
+ const _component_N8nSticky = resolveComponent("N8nSticky");
15893
+ return openBlock(), createElementBlock(Fragment, null, [
15894
+ createVNode(unref(_sfc_main$Q), {
15895
+ "min-height": 80,
15896
+ "min-width": 150,
15897
+ height: renderOptions.value.height,
15898
+ width: renderOptions.value.width,
15899
+ onResize
15900
+ }, null, 8, ["height", "width"]),
15901
+ createVNode(_component_N8nSticky, {
15902
+ id: unref(id),
15903
+ "data-test-id": "canvas-sticky-note-node",
15904
+ height: renderOptions.value.height,
15905
+ width: renderOptions.value.width,
15906
+ class: normalizeClass(_ctx.$style.sticky),
15907
+ "model-value": renderOptions.value.content,
15908
+ background: renderOptions.value.color,
15909
+ "edit-mode": isActive.value,
15910
+ onEdit,
15911
+ onDblclick: onDoubleClick,
15912
+ "onUpdate:modelValue": onInputChange
15913
+ }, null, 8, ["id", "height", "width", "class", "model-value", "background", "edit-mode"])
15914
+ ], 64);
15915
+ };
15916
+ }
15917
+ });
15918
+ const sticky = "_sticky_1bbax_1";
15919
+ const style0$a = {
15920
+ sticky
15921
+ };
15922
+ const cssModules$a = {
15923
+ "$style": style0$a
15924
+ };
15925
+ const CanvasNodeStickyNote = /* @__PURE__ */ _export_sfc(_sfc_main$h, [["__cssModules", cssModules$a]]);
15926
+ const _hoisted_1 = ["textContent"];
15927
+ const _sfc_main$g = /* @__PURE__ */ defineComponent({
15928
+ __name: "CanvasNodeAddNodes",
15929
+ setup(__props) {
15930
+ const nodeCreatorStore = useNodeCreatorStore();
15931
+ const isTooltipVisible = ref(false);
15932
+ onMounted(() => {
15933
+ nodeViewEventBus.on("runWorkflowButton:mouseenter", onShowTooltip);
15934
+ nodeViewEventBus.on("runWorkflowButton:mouseleave", onHideTooltip);
15935
+ });
15936
+ onBeforeUnmount(() => {
15937
+ nodeViewEventBus.off("runWorkflowButton:mouseenter", onShowTooltip);
15938
+ nodeViewEventBus.off("runWorkflowButton:mouseleave", onHideTooltip);
15939
+ });
15940
+ function onShowTooltip() {
15941
+ isTooltipVisible.value = true;
15942
+ }
15943
+ function onHideTooltip() {
15944
+ isTooltipVisible.value = false;
15945
+ }
15946
+ function onClick() {
15947
+ nodeCreatorStore.openNodeCreatorForTriggerNodes(
15948
+ NODE_CREATOR_OPEN_SOURCES.TRIGGER_PLACEHOLDER_BUTTON
15949
+ );
15950
+ }
15951
+ return (_ctx, _cache) => {
15952
+ const _component_FontAwesomeIcon = resolveComponent("FontAwesomeIcon");
15953
+ const _component_N8nTooltip = resolveComponent("N8nTooltip");
15954
+ return openBlock(), createElementBlock("div", {
15955
+ ref: "container",
15956
+ class: normalizeClass(_ctx.$style.addNodes),
15957
+ "data-test-id": "canvas-add-button"
15958
+ }, [
15959
+ createVNode(_component_N8nTooltip, {
15960
+ placement: "top",
15961
+ visible: isTooltipVisible.value,
15962
+ disabled: unref(nodeCreatorStore).showScrim,
15963
+ "popper-class": _ctx.$style.tooltip,
15964
+ "show-after": 700
15965
+ }, {
15966
+ content: withCtx(() => [
15967
+ createTextVNode(toDisplayString(_ctx.$locale.baseText("nodeView.canvasAddButton.addATriggerNodeBeforeExecuting")), 1)
15968
+ ]),
15969
+ default: withCtx(() => [
15970
+ createBaseVNode("button", {
15971
+ class: normalizeClass(_ctx.$style.button),
15972
+ "data-test-id": "canvas-plus-button",
15973
+ onClick
15974
+ }, [
15975
+ createVNode(_component_FontAwesomeIcon, {
15976
+ icon: "plus",
15977
+ size: "lg"
15978
+ })
15979
+ ], 2)
15980
+ ]),
15981
+ _: 1
15982
+ }, 8, ["visible", "disabled", "popper-class"]),
15983
+ createBaseVNode("p", {
15984
+ class: normalizeClass(_ctx.$style.label),
15985
+ textContent: toDisplayString(_ctx.$locale.baseText("nodeView.canvasAddButton.addFirstStep"))
15986
+ }, null, 10, _hoisted_1)
15987
+ ], 2);
15988
+ };
15989
+ }
15990
+ });
15991
+ const addNodes = "_addNodes_13pm7_1";
15992
+ const button = "_button_13pm7_9";
15993
+ const label$3 = "_label_13pm7_30";
15994
+ const style0$9 = {
15995
+ addNodes,
15996
+ button,
15997
+ label: label$3
15785
15998
  };
15786
15999
  const cssModules$9 = {
15787
16000
  "$style": style0$9
15788
16001
  };
15789
- const CanvasNodeDefault = /* @__PURE__ */ _export_sfc(_sfc_main$f, [["__cssModules", cssModules$9]]);
15790
- const _sfc_main$e = /* @__PURE__ */ defineComponent({
16002
+ const CanvasNodeAddNodes = /* @__PURE__ */ _export_sfc(_sfc_main$g, [["__cssModules", cssModules$9]]);
16003
+ const _sfc_main$f = /* @__PURE__ */ defineComponent({
15791
16004
  __name: "CanvasNodeRenderer",
15792
16005
  setup(__props) {
15793
16006
  const node2 = inject(CanvasNodeKey);
@@ -15795,6 +16008,12 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
15795
16008
  const Render = () => {
15796
16009
  let Component;
15797
16010
  switch (node2 == null ? void 0 : node2.data.value.render.type) {
16011
+ case CanvasNodeRenderType.StickyNote:
16012
+ Component = CanvasNodeStickyNote;
16013
+ break;
16014
+ case CanvasNodeRenderType.AddNodes:
16015
+ Component = CanvasNodeAddNodes;
16016
+ break;
15798
16017
  default:
15799
16018
  Component = CanvasNodeDefault;
15800
16019
  }
@@ -15805,7 +16024,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
15805
16024
  };
15806
16025
  }
15807
16026
  });
15808
- const _sfc_main$d = /* @__PURE__ */ defineComponent({
16027
+ const _sfc_main$e = /* @__PURE__ */ defineComponent({
15809
16028
  __name: "CanvasHandleMainInput",
15810
16029
  setup(__props) {
15811
16030
  const handle2 = inject(CanvasNodeHandleKey);
@@ -15831,8 +16050,8 @@ const style0$8 = {
15831
16050
  const cssModules$8 = {
15832
16051
  "$style": style0$8
15833
16052
  };
15834
- const CanvasHandleMainInput = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["__cssModules", cssModules$8]]);
15835
- const _sfc_main$c = /* @__PURE__ */ defineComponent({
16053
+ const CanvasHandleMainInput = /* @__PURE__ */ _export_sfc(_sfc_main$e, [["__cssModules", cssModules$8]]);
16054
+ const _sfc_main$d = /* @__PURE__ */ defineComponent({
15836
16055
  __name: "CanvasHandleMainOutput",
15837
16056
  setup(__props) {
15838
16057
  const handle2 = inject(CanvasNodeHandleKey);
@@ -15865,8 +16084,8 @@ const style0$7 = {
15865
16084
  const cssModules$7 = {
15866
16085
  "$style": style0$7
15867
16086
  };
15868
- const CanvasHandleMainOutput = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["__cssModules", cssModules$7]]);
15869
- const _sfc_main$b = /* @__PURE__ */ defineComponent({
16087
+ const CanvasHandleMainOutput = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["__cssModules", cssModules$7]]);
16088
+ const _sfc_main$c = /* @__PURE__ */ defineComponent({
15870
16089
  __name: "CanvasHandleNonMain",
15871
16090
  setup(__props) {
15872
16091
  const handle2 = inject(CanvasNodeHandleKey);
@@ -15897,8 +16116,8 @@ const style0$6 = {
15897
16116
  const cssModules$6 = {
15898
16117
  "$style": style0$6
15899
16118
  };
15900
- const CanvasHandleNonMain = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["__cssModules", cssModules$6]]);
15901
- const _sfc_main$a = /* @__PURE__ */ defineComponent({
16119
+ const CanvasHandleNonMain = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["__cssModules", cssModules$6]]);
16120
+ const _sfc_main$b = /* @__PURE__ */ defineComponent({
15902
16121
  __name: "HandleRenderer",
15903
16122
  props: {
15904
16123
  mode: {},
@@ -15906,7 +16125,8 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
15906
16125
  type: {},
15907
16126
  index: {},
15908
16127
  position: {},
15909
- offset: {}
16128
+ offset: {},
16129
+ isValidConnection: { type: Function }
15910
16130
  },
15911
16131
  setup(__props) {
15912
16132
  const props = __props;
@@ -15943,13 +16163,14 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
15943
16163
  position: _ctx.position,
15944
16164
  style: normalizeStyle(_ctx.offset),
15945
16165
  "connectable-start": isConnectableStart.value,
15946
- "connectable-end": isConnectableEnd.value
16166
+ "connectable-end": isConnectableEnd.value,
16167
+ "is-valid-connection": _ctx.isValidConnection
15947
16168
  }, {
15948
16169
  default: withCtx(() => [
15949
16170
  createVNode(Render, { label: label2.value }, null, 8, ["label"])
15950
16171
  ]),
15951
16172
  _: 1
15952
- }, 8, ["id", "class", "type", "position", "style", "connectable-start", "connectable-end"]);
16173
+ }, 8, ["id", "class", "type", "position", "style", "connectable-start", "connectable-end", "is-valid-connection"]);
15953
16174
  };
15954
16175
  }
15955
16176
  });
@@ -15960,8 +16181,8 @@ const style0$5 = {
15960
16181
  const cssModules$5 = {
15961
16182
  "$style": style0$5
15962
16183
  };
15963
- const HandleRenderer = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__cssModules", cssModules$5]]);
15964
- const _sfc_main$9 = /* @__PURE__ */ defineComponent({
16184
+ const HandleRenderer = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["__cssModules", cssModules$5]]);
16185
+ const _sfc_main$a = /* @__PURE__ */ defineComponent({
15965
16186
  __name: "CanvasNode",
15966
16187
  props: {
15967
16188
  id: {},
@@ -15984,7 +16205,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
15984
16205
  data: {},
15985
16206
  events: {}
15986
16207
  },
15987
- emits: ["delete", "run", "select", "toggle", "activate"],
16208
+ emits: ["delete", "run", "select", "toggle", "activate", "update", "move"],
15988
16209
  setup(__props, { emit: __emit }) {
15989
16210
  const emit = __emit;
15990
16211
  const props = __props;
@@ -15992,7 +16213,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
15992
16213
  const inputs = computed(() => props.data.inputs);
15993
16214
  const outputs2 = computed(() => props.data.outputs);
15994
16215
  const connections2 = computed(() => props.data.connections);
15995
- const { mainInputs, nonMainInputs, mainOutputs, nonMainOutputs } = useNodeConnections({
16216
+ const { mainInputs, nonMainInputs, mainOutputs, nonMainOutputs, isValidConnection } = useNodeConnections({
15996
16217
  inputs,
15997
16218
  outputs: outputs2,
15998
16219
  connections: connections2
@@ -16001,12 +16222,6 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
16001
16222
  const nodeType = computed(() => {
16002
16223
  return nodeTypesStore.getNodeType(props.data.type, props.data.typeVersion);
16003
16224
  });
16004
- watch(
16005
- () => props.selected,
16006
- (selected22) => {
16007
- emit("select", props.id, selected22);
16008
- }
16009
- );
16010
16225
  const inputsWithPosition = computed(() => {
16011
16226
  return [
16012
16227
  ...mainInputs.value.map(mapEndpointWithPosition(Position.Left, "top")),
@@ -16019,6 +16234,9 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
16019
16234
  ...nonMainOutputs.value.map(mapEndpointWithPosition(Position.Top, "left"))
16020
16235
  ];
16021
16236
  });
16237
+ const nodeIconSize = computed(
16238
+ () => "configuration" in data.value.render.options && data.value.render.options.configuration ? 30 : 40
16239
+ );
16022
16240
  const mapEndpointWithPosition = (position2, offsetAxis) => (endpoint, index, endpoints) => {
16023
16241
  return {
16024
16242
  ...endpoint,
@@ -16028,17 +16246,6 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
16028
16246
  }
16029
16247
  };
16030
16248
  };
16031
- const id = toRef(props, "id");
16032
- const data = toRef(props, "data");
16033
- const label2 = toRef(props, "label");
16034
- const selected2 = toRef(props, "selected");
16035
- provide(CanvasNodeKey, {
16036
- id,
16037
- data,
16038
- label: label2,
16039
- selected: selected2,
16040
- nodeType
16041
- });
16042
16249
  function onDelete() {
16043
16250
  emit("delete", props.id);
16044
16251
  }
@@ -16051,6 +16258,29 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
16051
16258
  function onActivate() {
16052
16259
  emit("activate", props.id);
16053
16260
  }
16261
+ function onUpdate(parameters) {
16262
+ emit("update", props.id, parameters);
16263
+ }
16264
+ function onMove(position2) {
16265
+ emit("move", props.id, position2);
16266
+ }
16267
+ const id = toRef(props, "id");
16268
+ const data = toRef(props, "data");
16269
+ const label2 = toRef(props, "label");
16270
+ const selected2 = toRef(props, "selected");
16271
+ provide(CanvasNodeKey, {
16272
+ id,
16273
+ data,
16274
+ label: label2,
16275
+ selected: selected2,
16276
+ nodeType
16277
+ });
16278
+ watch(
16279
+ () => props.selected,
16280
+ (selected22) => {
16281
+ emit("select", props.id, selected22);
16282
+ }
16283
+ );
16054
16284
  return (_ctx, _cache) => {
16055
16285
  return openBlock(), createElementBlock("div", {
16056
16286
  class: normalizeClass(_ctx.$style.canvasNode),
@@ -16065,8 +16295,9 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
16065
16295
  label: source.label,
16066
16296
  index: source.index,
16067
16297
  position: source.position,
16068
- offset: source.offset
16069
- }, null, 8, ["type", "label", "index", "position", "offset"]);
16298
+ offset: source.offset,
16299
+ "is-valid-connection": unref(isValidConnection)
16300
+ }, null, 8, ["type", "label", "index", "position", "offset", "is-valid-connection"]);
16070
16301
  }), 128)),
16071
16302
  (openBlock(true), createElementBlock(Fragment, null, renderList(inputsWithPosition.value, (target2) => {
16072
16303
  return openBlock(), createBlock(HandleRenderer, {
@@ -16077,8 +16308,9 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
16077
16308
  label: target2.label,
16078
16309
  index: target2.index,
16079
16310
  position: target2.position,
16080
- offset: target2.offset
16081
- }, null, 8, ["type", "label", "index", "position", "offset"]);
16311
+ offset: target2.offset,
16312
+ "is-valid-connection": unref(isValidConnection)
16313
+ }, null, 8, ["type", "label", "index", "position", "offset", "is-valid-connection"]);
16082
16314
  }), 128)),
16083
16315
  nodeType.value ? (openBlock(), createBlock(CanvasNodeToolbar, {
16084
16316
  key: 0,
@@ -16088,20 +16320,22 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
16088
16320
  onToggle: onDisabledToggle,
16089
16321
  onRun
16090
16322
  }, null, 8, ["class"])) : createCommentVNode("", true),
16091
- nodeType.value ? (openBlock(), createBlock(_sfc_main$e, {
16092
- key: 1,
16093
- onDblclick: onActivate
16323
+ createVNode(_sfc_main$f, {
16324
+ onDblclick: onActivate,
16325
+ onMove,
16326
+ onUpdate
16094
16327
  }, {
16095
16328
  default: withCtx(() => [
16096
- createVNode(_sfc_main$L, {
16329
+ nodeType.value ? (openBlock(), createBlock(_sfc_main$O, {
16330
+ key: 0,
16097
16331
  "node-type": nodeType.value,
16098
- size: 40,
16332
+ size: nodeIconSize.value,
16099
16333
  shrink: false,
16100
16334
  disabled: isDisabled.value
16101
- }, null, 8, ["node-type", "disabled"])
16335
+ }, null, 8, ["node-type", "size", "disabled"])) : createCommentVNode("", true)
16102
16336
  ]),
16103
16337
  _: 1
16104
- })) : createCommentVNode("", true)
16338
+ })
16105
16339
  ], 2);
16106
16340
  };
16107
16341
  }
@@ -16115,17 +16349,25 @@ const style0$4 = {
16115
16349
  const cssModules$4 = {
16116
16350
  "$style": style0$4
16117
16351
  };
16118
- const CanvasNode = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["__cssModules", cssModules$4]]);
16119
- const _sfc_main$8 = /* @__PURE__ */ defineComponent({
16352
+ const Node = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__cssModules", cssModules$4]]);
16353
+ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
16120
16354
  __name: "CanvasEdgeToolbar",
16121
- emits: ["delete"],
16355
+ props: {
16356
+ type: {}
16357
+ },
16358
+ emits: ["add", "delete"],
16122
16359
  setup(__props, { emit: __emit }) {
16123
16360
  const emit = __emit;
16361
+ const props = __props;
16124
16362
  const $style = useCssModule();
16125
16363
  const i18n2 = useI18n();
16126
16364
  const classes = computed(() => ({
16127
16365
  [$style.canvasEdgeToolbar]: true
16128
16366
  }));
16367
+ const isAddButtonVisible = computed(() => props.type === NodeConnectionType.Main);
16368
+ function onAdd() {
16369
+ emit("add");
16370
+ }
16129
16371
  function onDelete() {
16130
16372
  emit("delete");
16131
16373
  }
@@ -16135,6 +16377,15 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
16135
16377
  class: normalizeClass(classes.value),
16136
16378
  "data-test-id": "canvas-edge-toolbar"
16137
16379
  }, [
16380
+ isAddButtonVisible.value ? (openBlock(), createBlock(_component_N8nIconButton, {
16381
+ key: 0,
16382
+ "data-test-id": "add-connection-button",
16383
+ type: "tertiary",
16384
+ size: "small",
16385
+ icon: "plus",
16386
+ title: unref(i18n2).baseText("node.add"),
16387
+ onClick: onAdd
16388
+ }, null, 8, ["title"])) : createCommentVNode("", true),
16138
16389
  createVNode(_component_N8nIconButton, {
16139
16390
  "data-test-id": "delete-connection-button",
16140
16391
  type: "tertiary",
@@ -16147,15 +16398,15 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
16147
16398
  };
16148
16399
  }
16149
16400
  });
16150
- const canvasEdgeToolbar = "_canvasEdgeToolbar_szqhv_1";
16401
+ const canvasEdgeToolbar = "_canvasEdgeToolbar_gool4_1";
16151
16402
  const style0$3 = {
16152
16403
  canvasEdgeToolbar
16153
16404
  };
16154
16405
  const cssModules$3 = {
16155
16406
  "$style": style0$3
16156
16407
  };
16157
- const CanvasEdgeToolbar = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["__cssModules", cssModules$3]]);
16158
- const _sfc_main$7 = /* @__PURE__ */ defineComponent({
16408
+ const CanvasEdgeToolbar = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["__cssModules", cssModules$3]]);
16409
+ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
16159
16410
  __name: "CanvasEdge",
16160
16411
  props: {
16161
16412
  id: {},
@@ -16190,11 +16441,14 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
16190
16441
  targetY: {},
16191
16442
  hovered: { type: Boolean }
16192
16443
  },
16193
- emits: ["delete"],
16444
+ emits: ["add", "delete"],
16194
16445
  setup(__props, { emit: __emit }) {
16195
16446
  const emit = __emit;
16196
16447
  const props = __props;
16197
16448
  const $style = useCssModule();
16449
+ const connectionType2 = computed(
16450
+ () => isValidNodeConnectionType(props.data.source.type) ? props.data.source.type : NodeConnectionType.Main
16451
+ );
16198
16452
  const isFocused = computed(() => props.selected || props.hovered);
16199
16453
  const status2 = computed(() => props.data.status);
16200
16454
  const statusColor = computed(() => {
@@ -16253,6 +16507,9 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
16253
16507
  sourceHandle: props.sourceHandleId,
16254
16508
  targetHandle: props.targetHandleId
16255
16509
  }));
16510
+ function onAdd() {
16511
+ emit("add", connection.value);
16512
+ }
16256
16513
  function onDelete() {
16257
16514
  emit("delete", connection.value);
16258
16515
  }
@@ -16273,10 +16530,12 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
16273
16530
  createVNode(unref(_sfc_main$3$1), null, {
16274
16531
  default: withCtx(() => [
16275
16532
  createVNode(CanvasEdgeToolbar, {
16533
+ type: connectionType2.value,
16276
16534
  class: normalizeClass(edgeToolbarClasses.value),
16277
16535
  style: normalizeStyle(edgeToolbarStyle.value),
16536
+ onAdd,
16278
16537
  onDelete
16279
- }, null, 8, ["class", "style"])
16538
+ }, null, 8, ["type", "class", "style"])
16280
16539
  ]),
16281
16540
  _: 1
16282
16541
  })
@@ -16295,35 +16554,32 @@ const style0$2 = {
16295
16554
  const cssModules$2 = {
16296
16555
  "$style": style0$2
16297
16556
  };
16298
- const CanvasEdge = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__cssModules", cssModules$2]]);
16299
- const _sfc_main$6 = /* @__PURE__ */ defineComponent({
16557
+ const Edge = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["__cssModules", cssModules$2]]);
16558
+ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
16300
16559
  __name: "Canvas",
16301
16560
  props: {
16302
16561
  id: { default: "canvas" },
16303
- elements: { default: () => [] },
16562
+ nodes: { default: () => [] },
16304
16563
  connections: { default: () => [] },
16305
- controlsPosition: { default: PanelPosition.BottomLeft }
16564
+ controlsPosition: { default: PanelPosition.BottomLeft },
16565
+ eventBus: { default: () => createEventBus() }
16306
16566
  },
16307
- emits: ["update:modelValue", "update:node:position", "update:node:active", "update:node:enabled", "update:node:selected", "run:node", "delete:node", "delete:connection", "create:connection:start", "create:connection", "create:connection:end", "create:connection:cancelled", "click:pane"],
16567
+ emits: ["update:modelValue", "update:node:position", "update:node:active", "update:node:enabled", "update:node:selected", "update:node:parameters", "run:node", "delete:node", "delete:connection", "create:connection:start", "create:connection", "create:connection:end", "create:connection:cancelled", "click:connection:add", "click:pane"],
16308
16568
  setup(__props, { emit: __emit }) {
16309
16569
  const $style = useCssModule();
16310
16570
  const emit = __emit;
16311
16571
  const props = __props;
16312
- const { getSelectedEdges, getSelectedNodes, viewportRef, project } = useVueFlow({
16572
+ const { getSelectedEdges, getSelectedNodes, viewportRef, fitView, project } = useVueFlow({
16313
16573
  id: props.id
16314
16574
  });
16315
- const hoveredEdges = ref({});
16316
- onMounted(() => {
16317
- document.addEventListener("keydown", onKeyDown);
16318
- });
16319
- onUnmounted(() => {
16320
- document.removeEventListener("keydown", onKeyDown);
16321
- });
16322
16575
  function onNodeDragStop(e) {
16323
16576
  e.nodes.forEach((node2) => {
16324
- emit("update:node:position", node2.id, node2.position);
16577
+ onUpdateNodePosition(node2.id, node2.position);
16325
16578
  });
16326
16579
  }
16580
+ function onUpdateNodePosition(id, position2) {
16581
+ emit("update:node:position", id, position2);
16582
+ }
16327
16583
  function onSelectionDragStop(e) {
16328
16584
  onNodeDragStop(e);
16329
16585
  }
@@ -16341,6 +16597,9 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
16341
16597
  function onDeleteNode(id) {
16342
16598
  emit("delete:node", id);
16343
16599
  }
16600
+ function onUpdateNodeParameters(id, parameters) {
16601
+ emit("update:node:parameters", id, parameters);
16602
+ }
16344
16603
  const connectionCreated = ref(false);
16345
16604
  const connectionEventData = ref();
16346
16605
  const isConnection = (data) => !!data && connectionCreated.value;
@@ -16365,6 +16624,16 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
16365
16624
  function onDeleteConnection(connection) {
16366
16625
  emit("delete:connection", connection);
16367
16626
  }
16627
+ function onClickConnectionAdd(connection) {
16628
+ emit("click:connection:add", connection);
16629
+ }
16630
+ const hoveredEdges = ref({});
16631
+ function onMouseEnterEdge(event) {
16632
+ hoveredEdges.value[event.edge.id] = true;
16633
+ }
16634
+ function onMouseLeaveEdge(event) {
16635
+ hoveredEdges.value[event.edge.id] = false;
16636
+ }
16368
16637
  function onRunNode(id) {
16369
16638
  emit("run:node", id);
16370
16639
  }
@@ -16374,12 +16643,6 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
16374
16643
  getSelectedNodes.value.forEach(({ id }) => onDeleteNode(id));
16375
16644
  }
16376
16645
  }
16377
- function onMouseEnterEdge(event) {
16378
- hoveredEdges.value[event.edge.id] = true;
16379
- }
16380
- function onMouseLeaveEdge(event) {
16381
- hoveredEdges.value[event.edge.id] = false;
16382
- }
16383
16646
  function onClickPane(event) {
16384
16647
  var _a;
16385
16648
  const bounds = ((_a = viewportRef.value) == null ? void 0 : _a.getBoundingClientRect()) ?? { left: 0, top: 0 };
@@ -16389,10 +16652,21 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
16389
16652
  });
16390
16653
  emit("click:pane", position2);
16391
16654
  }
16655
+ async function onFitView() {
16656
+ await fitView();
16657
+ }
16658
+ onMounted(() => {
16659
+ document.addEventListener("keydown", onKeyDown);
16660
+ props.eventBus.on("fitView", onFitView);
16661
+ });
16662
+ onUnmounted(() => {
16663
+ props.eventBus.off("fitView", onFitView);
16664
+ document.removeEventListener("keydown", onKeyDown);
16665
+ });
16392
16666
  return (_ctx, _cache) => {
16393
16667
  return openBlock(), createBlock(unref(_sfc_main$1$1), {
16394
16668
  id: _ctx.id,
16395
- nodes: _ctx.elements,
16669
+ nodes: _ctx.nodes,
16396
16670
  edges: _ctx.connections,
16397
16671
  "apply-changes": false,
16398
16672
  "fit-view-on-init": "",
@@ -16412,31 +16686,34 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
16412
16686
  onPaneClick: onClickPane
16413
16687
  }, {
16414
16688
  "node-canvas-node": withCtx((canvasNodeProps) => [
16415
- createVNode(CanvasNode, mergeProps(canvasNodeProps, {
16689
+ createVNode(Node, mergeProps(canvasNodeProps, {
16416
16690
  onDelete: onDeleteNode,
16417
16691
  onRun: onRunNode,
16418
16692
  onSelect: onSelectNode,
16419
16693
  onToggle: onToggleNodeEnabled,
16420
- onActivate: onSetNodeActive
16694
+ onActivate: onSetNodeActive,
16695
+ onUpdate: onUpdateNodeParameters,
16696
+ onMove: onUpdateNodePosition
16421
16697
  }), null, 16)
16422
16698
  ]),
16423
16699
  "edge-canvas-edge": withCtx((canvasEdgeProps) => [
16424
- createVNode(CanvasEdge, mergeProps(canvasEdgeProps, {
16700
+ createVNode(Edge, mergeProps(canvasEdgeProps, {
16425
16701
  hovered: hoveredEdges.value[canvasEdgeProps.id],
16702
+ onAdd: onClickConnectionAdd,
16426
16703
  onDelete: onDeleteConnection
16427
16704
  }), null, 16, ["hovered"])
16428
16705
  ]),
16429
16706
  default: withCtx(() => [
16430
- createVNode(unref(_sfc_main$N), {
16707
+ createVNode(unref(_sfc_main$R), {
16431
16708
  "data-test-id": "canvas-background",
16432
16709
  "pattern-color": "#aaa",
16433
16710
  gap: 16
16434
16711
  }),
16435
- createVNode(unref(_sfc_main$O), {
16712
+ createVNode(unref(_sfc_main$S), {
16436
16713
  "data-test-id": "canvas-minimap",
16437
16714
  pannable: ""
16438
16715
  }),
16439
- createVNode(unref(_sfc_main$P), {
16716
+ createVNode(unref(_sfc_main$T), {
16440
16717
  "data-test-id": "canvas-controls",
16441
16718
  class: normalizeClass(unref($style).canvasControls),
16442
16719
  position: _ctx.controlsPosition
@@ -16448,27 +16725,57 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
16448
16725
  }
16449
16726
  });
16450
16727
  function useCanvasMapping({
16451
- workflow,
16728
+ nodes,
16729
+ connections: connections2,
16452
16730
  workflowObject
16453
16731
  }) {
16454
16732
  const i18n2 = useI18n();
16455
16733
  const workflowsStore = useWorkflowsStore();
16456
16734
  const nodeTypesStore = useNodeTypesStore();
16457
- const renderTypeByNodeType = computed(
16458
- () => workflow.value.nodes.reduce((acc, node2) => {
16459
- acc[node2.type] = {
16460
- type: "default",
16461
- options: {
16462
- trigger: nodeTypesStore.isTriggerNode(node2.type),
16463
- configuration: nodeTypesStore.isConfigNode(workflowObject.value, node2, node2.type),
16464
- configurable: nodeTypesStore.isConfigurableNode(workflowObject.value, node2, node2.type)
16465
- }
16466
- };
16735
+ function createStickyNoteRenderType(node2) {
16736
+ return {
16737
+ type: CanvasNodeRenderType.StickyNote,
16738
+ options: {
16739
+ width: node2.parameters.width,
16740
+ height: node2.parameters.height,
16741
+ color: node2.parameters.color,
16742
+ content: node2.parameters.content
16743
+ }
16744
+ };
16745
+ }
16746
+ function createAddNodesRenderType() {
16747
+ return {
16748
+ type: CanvasNodeRenderType.AddNodes,
16749
+ options: {}
16750
+ };
16751
+ }
16752
+ function createDefaultNodeRenderType(node2) {
16753
+ return {
16754
+ type: CanvasNodeRenderType.Default,
16755
+ options: {
16756
+ trigger: nodeTypesStore.isTriggerNode(node2.type),
16757
+ configuration: nodeTypesStore.isConfigNode(workflowObject.value, node2, node2.type),
16758
+ configurable: nodeTypesStore.isConfigurableNode(workflowObject.value, node2, node2.type)
16759
+ }
16760
+ };
16761
+ }
16762
+ const renderTypeByNodeId = computed(
16763
+ () => nodes.value.reduce((acc, node2) => {
16764
+ switch (node2.type) {
16765
+ case `${CanvasNodeRenderType.StickyNote}`:
16766
+ acc[node2.id] = createStickyNoteRenderType(node2);
16767
+ break;
16768
+ case `${CanvasNodeRenderType.AddNodes}`:
16769
+ acc[node2.id] = createAddNodesRenderType();
16770
+ break;
16771
+ default:
16772
+ acc[node2.id] = createDefaultNodeRenderType(node2);
16773
+ }
16467
16774
  return acc;
16468
16775
  }, {}) ?? {}
16469
16776
  );
16470
16777
  const nodeInputsById = computed(
16471
- () => workflow.value.nodes.reduce((acc, node2) => {
16778
+ () => nodes.value.reduce((acc, node2) => {
16472
16779
  const nodeTypeDescription = nodeTypesStore.getNodeType(node2.type);
16473
16780
  const workflowObjectNode = workflowObject.value.getNode(node2.name);
16474
16781
  acc[node2.id] = workflowObjectNode && nodeTypeDescription ? mapLegacyEndpointsToCanvasConnectionPort(
@@ -16482,7 +16789,7 @@ function useCanvasMapping({
16482
16789
  }, {})
16483
16790
  );
16484
16791
  const nodeOutputsById = computed(
16485
- () => workflow.value.nodes.reduce((acc, node2) => {
16792
+ () => nodes.value.reduce((acc, node2) => {
16486
16793
  const nodeTypeDescription = nodeTypesStore.getNodeType(node2.type);
16487
16794
  const workflowObjectNode = workflowObject.value.getNode(node2.name);
16488
16795
  acc[node2.id] = workflowObjectNode && nodeTypeDescription ? mapLegacyEndpointsToCanvasConnectionPort(
@@ -16496,32 +16803,32 @@ function useCanvasMapping({
16496
16803
  }, {})
16497
16804
  );
16498
16805
  const nodePinnedDataById = computed(
16499
- () => workflow.value.nodes.reduce((acc, node2) => {
16806
+ () => nodes.value.reduce((acc, node2) => {
16500
16807
  acc[node2.id] = workflowsStore.pinDataByNodeName(node2.name);
16501
16808
  return acc;
16502
16809
  }, {})
16503
16810
  );
16504
16811
  const nodeExecutionRunningById = computed(
16505
- () => workflow.value.nodes.reduce((acc, node2) => {
16812
+ () => nodes.value.reduce((acc, node2) => {
16506
16813
  acc[node2.id] = workflowsStore.isNodeExecuting(node2.name);
16507
16814
  return acc;
16508
16815
  }, {})
16509
16816
  );
16510
16817
  const nodeExecutionStatusById = computed(
16511
- () => workflow.value.nodes.reduce((acc, node2) => {
16818
+ () => nodes.value.reduce((acc, node2) => {
16512
16819
  var _a, _b;
16513
16820
  acc[node2.id] = ((_b = (_a = workflowsStore.getWorkflowRunData) == null ? void 0 : _a[node2.name]) == null ? void 0 : _b.filter(Boolean)[0].executionStatus) ?? "new";
16514
16821
  return acc;
16515
16822
  }, {})
16516
16823
  );
16517
16824
  const nodeExecutionRunDataById = computed(
16518
- () => workflow.value.nodes.reduce((acc, node2) => {
16825
+ () => nodes.value.reduce((acc, node2) => {
16519
16826
  acc[node2.id] = workflowsStore.getWorkflowResultDataByNodeName(node2.name);
16520
16827
  return acc;
16521
16828
  }, {})
16522
16829
  );
16523
16830
  const nodeIssuesById = computed(
16524
- () => workflow.value.nodes.reduce((acc, node2) => {
16831
+ () => nodes.value.reduce((acc, node2) => {
16525
16832
  var _a;
16526
16833
  const issues2 = [];
16527
16834
  const nodeExecutionRunData = (_a = workflowsStore.getWorkflowRunData) == null ? void 0 : _a[node2.name];
@@ -16542,7 +16849,7 @@ function useCanvasMapping({
16542
16849
  }, {})
16543
16850
  );
16544
16851
  const nodeHasIssuesById = computed(
16545
- () => workflow.value.nodes.reduce((acc, node2) => {
16852
+ () => nodes.value.reduce((acc, node2) => {
16546
16853
  if (["crashed", "error"].includes(nodeExecutionStatusById.value[node2.id])) {
16547
16854
  acc[node2.id] = true;
16548
16855
  } else if (nodePinnedDataById.value[node2.id]) {
@@ -16554,7 +16861,7 @@ function useCanvasMapping({
16554
16861
  }, {})
16555
16862
  );
16556
16863
  const nodeExecutionWaitingById = computed(
16557
- () => workflow.value.nodes.reduce((acc, node2) => {
16864
+ () => nodes.value.reduce((acc, node2) => {
16558
16865
  var _a, _b, _c, _d;
16559
16866
  const isExecutionSummary = (execution) => "waitTill" in execution;
16560
16867
  const workflowExecution = workflowsStore.getWorkflowExecution;
@@ -16578,13 +16885,26 @@ function useCanvasMapping({
16578
16885
  return acc;
16579
16886
  }, {})
16580
16887
  );
16581
- const elements = computed(() => [
16582
- ...workflow.value.nodes.map((node2) => {
16888
+ const additionalNodePropertiesById = computed(() => {
16889
+ return nodes.value.reduce((acc, node2) => {
16890
+ if (node2.type === STICKY_NODE_TYPE) {
16891
+ acc[node2.id] = {
16892
+ style: {
16893
+ zIndex: -1
16894
+ }
16895
+ };
16896
+ }
16897
+ return acc;
16898
+ }, {});
16899
+ });
16900
+ const mappedNodes = computed(() => [
16901
+ ...nodes.value.map((node2) => {
16583
16902
  var _a, _b;
16584
16903
  const inputConnections = workflowObject.value.connectionsByDestinationNode[node2.name] ?? {};
16585
16904
  const outputConnections = workflowObject.value.connectionsBySourceNode[node2.name] ?? {};
16586
16905
  const data = {
16587
16906
  id: node2.id,
16907
+ name: node2.name,
16588
16908
  type: node2.type,
16589
16909
  typeVersion: node2.typeVersion,
16590
16910
  disabled: !!node2.disabled,
@@ -16611,42 +16931,39 @@ function useCanvasMapping({
16611
16931
  count: ((_b = nodeExecutionRunDataById.value[node2.id]) == null ? void 0 : _b.length) ?? 0,
16612
16932
  visible: !!nodeExecutionRunDataById.value[node2.id]
16613
16933
  },
16614
- render: renderTypeByNodeType.value[node2.type] ?? { type: "default", options: {} }
16934
+ render: renderTypeByNodeId.value[node2.id] ?? { type: "default", options: {} }
16615
16935
  };
16616
16936
  return {
16617
16937
  id: node2.id,
16618
16938
  label: node2.name,
16619
16939
  type: "canvas-node",
16620
16940
  position: { x: node2.position[0], y: node2.position[1] },
16621
- data
16941
+ data,
16942
+ ...additionalNodePropertiesById.value[node2.id]
16622
16943
  };
16623
16944
  })
16624
16945
  ]);
16625
- const connections2 = computed(() => {
16626
- const mappedConnections = mapLegacyConnectionsToCanvasConnections(
16627
- workflow.value.connections ?? [],
16628
- workflow.value.nodes ?? []
16946
+ const mappedConnections = computed(() => {
16947
+ return mapLegacyConnectionsToCanvasConnections(connections2.value ?? [], nodes.value ?? []).map(
16948
+ (connection) => {
16949
+ const type = getConnectionType(connection);
16950
+ const label2 = getConnectionLabel(connection);
16951
+ const data = getConnectionData(connection);
16952
+ return {
16953
+ ...connection,
16954
+ data,
16955
+ type,
16956
+ label: label2,
16957
+ animated: data.status === "running"
16958
+ };
16959
+ }
16629
16960
  );
16630
- return mappedConnections.map((connection) => {
16631
- const type = getConnectionType(connection);
16632
- const label2 = getConnectionLabel(connection);
16633
- const data = getConnectionData(connection);
16634
- return {
16635
- ...connection,
16636
- data,
16637
- type,
16638
- label: label2,
16639
- animated: data.status === "running"
16640
- };
16641
- });
16642
16961
  });
16643
16962
  function getConnectionData(connection) {
16644
- const fromNode = workflow.value.nodes.find(
16645
- (node2) => {
16646
- var _a;
16647
- return node2.name === ((_a = connection.data) == null ? void 0 : _a.fromNodeName);
16648
- }
16649
- );
16963
+ const fromNode = nodes.value.find((node2) => {
16964
+ var _a;
16965
+ return node2.name === ((_a = connection.data) == null ? void 0 : _a.fromNodeName);
16966
+ });
16650
16967
  let status2;
16651
16968
  if (fromNode) {
16652
16969
  if (nodeExecutionRunningById.value[fromNode.id]) {
@@ -16669,12 +16986,10 @@ function useCanvasMapping({
16669
16986
  }
16670
16987
  function getConnectionLabel(connection) {
16671
16988
  var _a, _b;
16672
- const fromNode = workflow.value.nodes.find(
16673
- (node2) => {
16674
- var _a2;
16675
- return node2.name === ((_a2 = connection.data) == null ? void 0 : _a2.fromNodeName);
16676
- }
16677
- );
16989
+ const fromNode = nodes.value.find((node2) => {
16990
+ var _a2;
16991
+ return node2.name === ((_a2 = connection.data) == null ? void 0 : _a2.fromNodeName);
16992
+ });
16678
16993
  if (!fromNode) {
16679
16994
  return "";
16680
16995
  }
@@ -16694,26 +17009,36 @@ function useCanvasMapping({
16694
17009
  return "";
16695
17010
  }
16696
17011
  return {
16697
- connections: connections2,
16698
- elements
17012
+ connections: mappedConnections,
17013
+ nodes: mappedNodes
16699
17014
  };
16700
17015
  }
16701
- const _sfc_main$5 = /* @__PURE__ */ defineComponent({
17016
+ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
16702
17017
  ...{
16703
17018
  inheritAttrs: false
16704
17019
  },
16705
17020
  __name: "WorkflowCanvas",
16706
17021
  props: {
16707
- id: {},
17022
+ id: { default: "canvas" },
16708
17023
  workflow: {},
16709
- workflowObject: {}
17024
+ workflowObject: {},
17025
+ fallbackNodes: { default: () => [] },
17026
+ eventBus: {}
16710
17027
  },
16711
17028
  setup(__props) {
16712
17029
  const props = __props;
16713
17030
  const $style = useCssModule();
16714
17031
  const workflow = toRef(props, "workflow");
16715
17032
  const workflowObject = toRef(props, "workflowObject");
16716
- const { elements, connections: connections2 } = useCanvasMapping({ workflow, workflowObject });
17033
+ const nodes = computed(
17034
+ () => props.workflow.nodes.length > 0 ? props.workflow.nodes : props.fallbackNodes
17035
+ );
17036
+ const connections2 = computed(() => props.workflow.connections);
17037
+ const { nodes: mappedNodes, connections: mappedConnections } = useCanvasMapping({
17038
+ nodes,
17039
+ connections: connections2,
17040
+ workflowObject
17041
+ });
16717
17042
  return (_ctx, _cache) => {
16718
17043
  return openBlock(), createElementBlock("div", {
16719
17044
  class: normalizeClass(unref($style).wrapper)
@@ -16721,11 +17046,12 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
16721
17046
  createBaseVNode("div", {
16722
17047
  class: normalizeClass(unref($style).canvas)
16723
17048
  }, [
16724
- workflow.value ? (openBlock(), createBlock(_sfc_main$6, mergeProps({
17049
+ workflow.value ? (openBlock(), createBlock(_sfc_main$7, mergeProps({
16725
17050
  key: 0,
16726
- elements: unref(elements),
16727
- connections: unref(connections2)
16728
- }, _ctx.$attrs), null, 16, ["elements", "connections"])) : createCommentVNode("", true)
17051
+ nodes: unref(mappedNodes),
17052
+ connections: unref(mappedConnections),
17053
+ "event-bus": _ctx.eventBus
17054
+ }, _ctx.$attrs), null, 16, ["nodes", "connections", "event-bus"])) : createCommentVNode("", true)
16729
17055
  ], 2),
16730
17056
  renderSlot(_ctx.$slots, "default")
16731
17057
  ], 2);
@@ -16741,14 +17067,15 @@ const style0$1 = {
16741
17067
  const cssModules$1 = {
16742
17068
  "$style": style0$1
16743
17069
  };
16744
- const WorkflowCanvas = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__cssModules", cssModules$1]]);
16745
- const _sfc_main$4 = /* @__PURE__ */ defineComponent({
16746
- __name: "CanvasExecuteWorkflowButton",
17070
+ const WorkflowCanvas = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["__cssModules", cssModules$1]]);
17071
+ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
17072
+ __name: "CanvasRunWorkflowButton",
16747
17073
  props: {
16748
17074
  waitingForWebhook: { type: Boolean },
16749
- executing: { type: Boolean }
17075
+ executing: { type: Boolean },
17076
+ disabled: { type: Boolean }
16750
17077
  },
16751
- emits: ["click"],
17078
+ emits: ["mouseenter", "mouseleave", "click"],
16752
17079
  setup(__props) {
16753
17080
  const props = __props;
16754
17081
  const i18n2 = useI18n();
@@ -16771,12 +17098,15 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
16771
17098
  createVNode(_component_N8nButton, {
16772
17099
  loading: _ctx.executing,
16773
17100
  label: label2.value,
17101
+ disabled: _ctx.disabled,
16774
17102
  size: "large",
16775
17103
  icon: "flask",
16776
17104
  type: "primary",
16777
17105
  "data-test-id": "execute-workflow-button",
16778
- onClick: _cache[0] || (_cache[0] = withModifiers(($event) => _ctx.$emit("click", $event), ["stop"]))
16779
- }, null, 8, ["loading", "label"])
17106
+ onMouseenter: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("mouseenter", $event)),
17107
+ onMouseleave: _cache[1] || (_cache[1] = ($event) => _ctx.$emit("mouseleave", $event)),
17108
+ onClick: _cache[2] || (_cache[2] = withModifiers(($event) => _ctx.$emit("click", $event), ["stop"]))
17109
+ }, null, 8, ["loading", "label", "disabled"])
16780
17110
  ]),
16781
17111
  _: 1
16782
17112
  }, 8, ["label"]);
@@ -16900,6 +17230,19 @@ function useCanvasOperations({
16900
17230
  function setNodeActiveByName(name) {
16901
17231
  ndvStore.activeNodeName = name;
16902
17232
  }
17233
+ function setNodeParameters(id, parameters) {
17234
+ const node2 = workflowsStore.getNodeById(id);
17235
+ if (!node2) {
17236
+ return;
17237
+ }
17238
+ workflowsStore.setNodeParameters(
17239
+ {
17240
+ name: node2.name,
17241
+ value: parameters
17242
+ },
17243
+ true
17244
+ );
17245
+ }
16903
17246
  function setNodeSelected(id) {
16904
17247
  if (!id) {
16905
17248
  uiStore.lastSelectedNode = "";
@@ -16918,7 +17261,7 @@ function useCanvasOperations({
16918
17261
  }
16919
17262
  nodeHelpers.disableNodes([node2], trackHistory);
16920
17263
  }
16921
- async function addNodes(nodes, {
17264
+ async function addNodes2(nodes, {
16922
17265
  dragAndDrop,
16923
17266
  position: position2
16924
17267
  } = {}) {
@@ -16976,6 +17319,7 @@ function useCanvasOperations({
16976
17319
  workflowsStore.addNode(newNodeData);
16977
17320
  nodeHelpers.matchCredentials(newNodeData);
16978
17321
  const lastSelectedNode = uiStore.getLastSelectedNode;
17322
+ const lastSelectedNodeConnection = uiStore.lastSelectedNodeConnection;
16979
17323
  const lastSelectedNodeOutputIndex = uiStore.lastSelectedNodeOutputIndex;
16980
17324
  const lastSelectedNodeEndpointUuid = uiStore.lastSelectedNodeEndpointUuid;
16981
17325
  historyStore.startRecordingUndo();
@@ -17011,11 +17355,35 @@ function useCanvasOperations({
17011
17355
  } else {
17012
17356
  createConnection({
17013
17357
  source: lastSelectedNode.id,
17014
- sourceHandle: `outputs/${NodeConnectionType.Main}/${outputIndex}`,
17358
+ sourceHandle: createCanvasConnectionHandleString({
17359
+ mode: CanvasConnectionMode.Output,
17360
+ type: NodeConnectionType.Main,
17361
+ index: outputIndex
17362
+ }),
17015
17363
  target: newNodeData.id,
17016
- targetHandle: `inputs/${NodeConnectionType.Main}/0`
17364
+ targetHandle: createCanvasConnectionHandleString({
17365
+ mode: CanvasConnectionMode.Input,
17366
+ type: NodeConnectionType.Main,
17367
+ index: 0
17368
+ })
17017
17369
  });
17018
17370
  }
17371
+ if (lastSelectedNodeConnection) {
17372
+ deleteConnection(lastSelectedNodeConnection, { trackHistory: options.trackHistory });
17373
+ const targetNode = workflowsStore.getNodeById(lastSelectedNodeConnection.target);
17374
+ if (targetNode) {
17375
+ createConnection({
17376
+ source: newNodeData.id,
17377
+ sourceHandle: createCanvasConnectionHandleString({
17378
+ mode: CanvasConnectionMode.Input,
17379
+ type: NodeConnectionType.Main,
17380
+ index: 0
17381
+ }),
17382
+ target: lastSelectedNodeConnection.target,
17383
+ targetHandle: lastSelectedNodeConnection.targetHandle
17384
+ });
17385
+ }
17386
+ }
17019
17387
  }
17020
17388
  historyStore.stopRecordingUndo();
17021
17389
  return newNodeData;
@@ -17044,7 +17412,7 @@ function useCanvasOperations({
17044
17412
  const nodeType = nodeTypesStore.getNodeType(newNodeData.type, newNodeData.typeVersion);
17045
17413
  const nodeParameters = getNodeParameters(
17046
17414
  (nodeType == null ? void 0 : nodeType.properties) ?? [],
17047
- {},
17415
+ node2.parameters ?? {},
17048
17416
  true,
17049
17417
  false,
17050
17418
  newNodeData
@@ -17118,9 +17486,8 @@ function useCanvasOperations({
17118
17486
  node2.position
17119
17487
  );
17120
17488
  } else if (lastSelectedNode) {
17121
- const lastSelectedConnection = canvasStore.lastSelectedConnection;
17122
- if (lastSelectedConnection) {
17123
- const [diffX] = getConnectorLengths(lastSelectedConnection);
17489
+ if (uiStore.lastSelectedNodeConnection) {
17490
+ const [diffX] = getVueFlowConnectorLengths(uiStore.lastSelectedNodeConnection);
17124
17491
  if (diffX <= MAX_X_TO_PUSH_DOWNSTREAM_NODES) {
17125
17492
  pushDownstreamNodes(lastSelectedNode.name, PUSH_NODES_OFFSET, {
17126
17493
  trackHistory: options.trackHistory
@@ -17135,7 +17502,7 @@ function useCanvasOperations({
17135
17502
  canvasStore.newNodeInsertPosition = null;
17136
17503
  } else {
17137
17504
  let yOffset = 0;
17138
- if (lastSelectedConnection) {
17505
+ if (uiStore.lastSelectedNodeConnection) {
17139
17506
  const sourceNodeType = nodeTypesStore.getNodeType(
17140
17507
  lastSelectedNode.type,
17141
17508
  lastSelectedNode.typeVersion
@@ -17156,8 +17523,10 @@ function useCanvasOperations({
17156
17523
  (output) => output === NodeConnectionType.Main
17157
17524
  );
17158
17525
  if (sourceNodeOutputMainOutputs.length > 1) {
17526
+ const { index: sourceOutputIndex } = parseCanvasConnectionHandleString(
17527
+ uiStore.lastSelectedNodeConnection.sourceHandle
17528
+ );
17159
17529
  const offset = offsets[sourceNodeOutputMainOutputs.length - 2];
17160
- const sourceOutputIndex = lastSelectedConnection.__meta ? lastSelectedConnection.__meta.sourceOutputIndex : 0;
17161
17530
  yOffset = offset[sourceOutputIndex];
17162
17531
  }
17163
17532
  }
@@ -17265,24 +17634,17 @@ function useCanvasOperations({
17265
17634
  );
17266
17635
  for (const nodeName of checkNodes) {
17267
17636
  const node2 = workflowsStore.nodesByName[nodeName];
17268
- const oldPosition = node2.position;
17269
17637
  if (node2.position[0] < sourceNode.position[0]) {
17270
17638
  continue;
17271
17639
  }
17272
- const updateInformation = {
17273
- name: nodeName,
17274
- properties: {
17275
- position: [node2.position[0] + margin, node2.position[1]]
17276
- }
17277
- };
17278
- workflowsStore.updateNodeProperties(updateInformation);
17279
- updateNodePosition(node2.id, { x: node2.position[0], y: node2.position[1] });
17280
- if (trackHistory && oldPosition[0] !== updateInformation.properties.position[0] || oldPosition[1] !== updateInformation.properties.position[1]) {
17281
- historyStore.pushCommandToUndo(
17282
- new MoveNodeCommand(nodeName, oldPosition, updateInformation.properties.position),
17283
- trackHistory
17284
- );
17285
- }
17640
+ updateNodePosition(
17641
+ node2.id,
17642
+ {
17643
+ x: node2.position[0] + margin,
17644
+ y: node2.position[1]
17645
+ },
17646
+ { trackHistory }
17647
+ );
17286
17648
  }
17287
17649
  }
17288
17650
  async function loadNodeTypesProperties(nodeInfos) {
@@ -17367,9 +17729,13 @@ function useCanvasOperations({
17367
17729
  }
17368
17730
  function isConnectionAllowed(sourceNode, targetNode, connectionType2) {
17369
17731
  var _a, _b;
17732
+ const blocklist = [STICKY_NODE_TYPE];
17370
17733
  if (sourceNode.id === targetNode.id) {
17371
17734
  return false;
17372
17735
  }
17736
+ if (blocklist.includes(sourceNode.type) || blocklist.includes(targetNode.type)) {
17737
+ return false;
17738
+ }
17373
17739
  const targetNodeType = nodeTypesStore.getNodeType(targetNode.type, targetNode.typeVersion);
17374
17740
  if ((_a = targetNodeType == null ? void 0 : targetNodeType.inputs) == null ? void 0 : _a.length) {
17375
17741
  const workflowNode = editableWorkflowObject.value.getNode(targetNode.name);
@@ -17421,11 +17787,12 @@ function useCanvasOperations({
17421
17787
  editableWorkflowObject,
17422
17788
  triggerNodes,
17423
17789
  initializeNodeDataWithDefaultCredentials,
17424
- addNodes,
17790
+ addNodes: addNodes2,
17425
17791
  updateNodePosition,
17426
17792
  setNodeActive,
17427
17793
  setNodeActiveByName,
17428
17794
  setNodeSelected,
17795
+ setNodeParameters,
17429
17796
  toggleNodeDisabled,
17430
17797
  renameNode,
17431
17798
  revertRenameNode,
@@ -17438,7 +17805,7 @@ function useCanvasOperations({
17438
17805
  isConnectionAllowed
17439
17806
  };
17440
17807
  }
17441
- const _sfc_main$3 = /* @__PURE__ */ defineComponent({
17808
+ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
17442
17809
  __name: "CanvasStopCurrentExecutionButton",
17443
17810
  props: {
17444
17811
  stopping: { type: Boolean }
@@ -17463,7 +17830,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
17463
17830
  };
17464
17831
  }
17465
17832
  });
17466
- const _sfc_main$2 = /* @__PURE__ */ defineComponent({
17833
+ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
17467
17834
  __name: "CanvasStopWaitingForWebhookButton",
17468
17835
  setup(__props) {
17469
17836
  const i18n2 = useI18n();
@@ -17480,11 +17847,26 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
17480
17847
  };
17481
17848
  }
17482
17849
  });
17850
+ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
17851
+ __name: "CanvasClearExecutionDataButton",
17852
+ setup(__props) {
17853
+ const i18n2 = useI18n();
17854
+ return (_ctx, _cache) => {
17855
+ const _component_n8n_icon_button = resolveComponent("n8n-icon-button");
17856
+ return openBlock(), createBlock(_component_n8n_icon_button, {
17857
+ title: unref(i18n2).baseText("nodeView.deletesTheCurrentExecutionData"),
17858
+ icon: "trash",
17859
+ size: "large",
17860
+ "data-test-id": "clear-execution-data-button"
17861
+ }, null, 8, ["title"]);
17862
+ };
17863
+ }
17864
+ });
17483
17865
  const _sfc_main$1 = /* @__PURE__ */ defineComponent({
17484
17866
  __name: "NodeView.v2",
17485
17867
  setup(__props) {
17486
17868
  const NodeCreation2 = defineAsyncComponent(
17487
- async () => await __vitePreload(() => import("./NodeCreation-DhCMWAHz.js").then((n) => n.N), true ? __vite__mapDeps([53,6,7,8,4,1,9,10,11,12,3,2,5,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,54]) : void 0)
17869
+ async () => await __vitePreload(() => import("./NodeCreation-9z7kz5cV.js").then((n) => n.N), true ? __vite__mapDeps([54,5,6,7,4,1,8,9,10,11,3,2,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,55]) : void 0)
17488
17870
  );
17489
17871
  const NodeDetailsView2 = defineAsyncComponent(
17490
17872
  async () => await __vitePreload(() => Promise.resolve().then(() => NodeDetailsView$1), true ? void 0 : void 0)
@@ -17521,6 +17903,8 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
17521
17903
  const tagsStore = useTagsStore();
17522
17904
  const pushConnectionStore = usePushConnectionStore();
17523
17905
  const ndvStore = useNDVStore();
17906
+ const templatesStore = useTemplatesStore();
17907
+ const canvasEventBus = createEventBus();
17524
17908
  const lastClickPosition = ref([450, 450]);
17525
17909
  const { runWorkflow, stopCurrentExecution, stopWaitingForWebhook } = useRunWorkflow({ router });
17526
17910
  const {
@@ -17530,9 +17914,10 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
17530
17914
  setNodeActive,
17531
17915
  setNodeSelected,
17532
17916
  toggleNodeDisabled,
17917
+ setNodeParameters,
17533
17918
  deleteNode,
17534
17919
  revertDeleteNode,
17535
- addNodes,
17920
+ addNodes: addNodes2,
17536
17921
  createConnection,
17537
17922
  deleteConnection,
17538
17923
  revertDeleteConnection,
@@ -17560,6 +17945,21 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
17560
17945
  const isReadOnlyEnvironment = computed(() => {
17561
17946
  return sourceControlStore.preferences.branchReadOnly;
17562
17947
  });
17948
+ const isCanvasReadOnly = computed(() => {
17949
+ return isLoading.value || isDemoRoute.value || isReadOnlyEnvironment.value;
17950
+ });
17951
+ const fallbackNodes = computed(
17952
+ () => isCanvasReadOnly.value ? [] : [
17953
+ {
17954
+ id: CanvasNodeRenderType.AddNodes,
17955
+ name: CanvasNodeRenderType.AddNodes,
17956
+ type: CanvasNodeRenderType.AddNodes,
17957
+ typeVersion: 1,
17958
+ position: [0, 0],
17959
+ parameters: {}
17960
+ }
17961
+ ]
17962
+ );
17563
17963
  async function initializeData() {
17564
17964
  isLoading.value = true;
17565
17965
  canvasStore.startLoading();
@@ -17613,6 +18013,8 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
17613
18013
  if (isBlankRedirect.value) {
17614
18014
  isBlankRedirect.value = false;
17615
18015
  } else if (route.name === VIEWS.TEMPLATE_IMPORT) {
18016
+ const templateId = route.params.id;
18017
+ await openWorkflowTemplate(templateId.toString());
17616
18018
  } else {
17617
18019
  historyStore.reset();
17618
18020
  if (!workflowId.value || isNewWorkflowRoute.value) {
@@ -17638,6 +18040,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
17638
18040
  nodeHelpers.updateNodesCredentialsIssues();
17639
18041
  nodeHelpers.updateNodesParameterIssues();
17640
18042
  await loadCredentials();
18043
+ canvasEventBus.emit("fitView");
17641
18044
  uiStore.nodeViewInitialized = true;
17642
18045
  toast.showNotificationForViews([VIEWS.WORKFLOW, VIEWS.NEW_WORKFLOW]);
17643
18046
  }
@@ -17658,7 +18061,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
17658
18061
  }
17659
18062
  const manualTriggerNode = canvasStore.getAutoAddManualTriggerNode();
17660
18063
  if (manualTriggerNode) {
17661
- await addNodes([manualTriggerNode]);
18064
+ await addNodes2([manualTriggerNode]);
17662
18065
  uiStore.lastSelectedNode = manualTriggerNode.name;
17663
18066
  }
17664
18067
  }
@@ -17681,7 +18084,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
17681
18084
  const selectedExecution = executionsStore.activeExecution;
17682
18085
  resetWorkspace();
17683
18086
  await workflowHelpers.initState(data);
17684
- await addNodes(data.nodes);
18087
+ await addNodes2(data.nodes);
17685
18088
  workflowsStore.setConnections(data.connections);
17686
18089
  if (data.sharedWithProjects) {
17687
18090
  workflowsEEStore.setWorkflowSharedWith({
@@ -17728,6 +18131,68 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
17728
18131
  workflowsStore.workflow.homeProject = homeProject;
17729
18132
  workflowsStore.workflow.scopes = scopes;
17730
18133
  }
18134
+ async function openWorkflowTemplate(templateId) {
18135
+ resetWorkspace();
18136
+ canvasStore.startLoading();
18137
+ canvasStore.setLoadingText(i18n2.baseText("nodeView.loadingTemplate"));
18138
+ workflowsStore.currentWorkflowExecutions = [];
18139
+ executionsStore.activeExecution = null;
18140
+ let data;
18141
+ try {
18142
+ void externalHooks.run("template.requested", { templateId });
18143
+ data = await templatesStore.getFixedWorkflowTemplate(templateId);
18144
+ if (!data) {
18145
+ throw new Error(
18146
+ i18n2.baseText("nodeView.workflowTemplateWithIdCouldNotBeFound", {
18147
+ interpolate: { templateId }
18148
+ })
18149
+ );
18150
+ }
18151
+ } catch (error2) {
18152
+ toast.showError(error2, i18n2.baseText("nodeView.couldntImportWorkflow"));
18153
+ await router.replace({ name: VIEWS.NEW_WORKFLOW });
18154
+ return;
18155
+ }
18156
+ trackOpenWorkflowTemplate(templateId);
18157
+ isBlankRedirect.value = true;
18158
+ await router.replace({ name: VIEWS.NEW_WORKFLOW, query: { templateId } });
18159
+ const convertedNodes = data.workflow.nodes.map(workflowsStore.convertTemplateNodeToNodeUi);
18160
+ workflowsStore.setConnections(data.workflow.connections);
18161
+ await addNodes2(convertedNodes);
18162
+ await workflowsStore.getNewWorkflowData(data.name, projectsStore.currentProjectId);
18163
+ workflowsStore.addToWorkflowMetadata({ templateId });
18164
+ uiStore.stateIsDirty = true;
18165
+ canvasEventBus.emit("fitView");
18166
+ canvasStore.stopLoading();
18167
+ void externalHooks.run("template.open", {
18168
+ templateId,
18169
+ templateName: data.name,
18170
+ workflow: data.workflow
18171
+ });
18172
+ }
18173
+ function trackOpenWorkflowTemplate(templateId) {
18174
+ telemetry.track(
18175
+ "User inserted workflow template",
18176
+ {
18177
+ source: "workflow",
18178
+ template_id: tryToParseNumber(templateId),
18179
+ wf_template_repo_session_id: templatesStore.previousSessionId
18180
+ },
18181
+ {
18182
+ withPostHog: true
18183
+ }
18184
+ );
18185
+ }
18186
+ const triggerNodes = computed(() => {
18187
+ return editableWorkflow.value.nodes.filter(
18188
+ (node2) => node2.type === START_NODE_TYPE || nodeTypesStore.isTriggerNode(node2.type)
18189
+ );
18190
+ });
18191
+ const containsTriggerNodes = computed(() => triggerNodes.value.length > 0);
18192
+ const allTriggerNodesDisabled = computed(() => {
18193
+ const disabledTriggerNodes = triggerNodes.value.filter((node2) => node2.disabled);
18194
+ return disabledTriggerNodes.length === triggerNodes.value.length;
18195
+ });
17731
18196
  function onUpdateNodePosition(id, position2) {
17732
18197
  updateNodePosition(id, position2, { trackHistory: true });
17733
18198
  }
@@ -17760,6 +18225,9 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
17760
18225
  }) {
17761
18226
  await revertRenameNode(currentName, newName);
17762
18227
  }
18228
+ function onUpdateNodeParameters(id, parameters) {
18229
+ setNodeParameters(id, parameters);
18230
+ }
17763
18231
  async function loadCredentials() {
17764
18232
  var _a, _b, _c;
17765
18233
  let options;
@@ -17781,14 +18249,13 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
17781
18249
  createConnection(connection);
17782
18250
  }
17783
18251
  function onCreateConnectionCancelled(event) {
17784
- const { type, index } = parseCanvasConnectionHandleString(event.handleId);
17785
18252
  setTimeout(() => {
17786
18253
  nodeCreatorStore.openNodeCreatorForConnectingNode({
17787
- index,
17788
- endpointUuid: event.handleId,
17789
- eventSource: NODE_CREATOR_OPEN_SOURCES.NODE_CONNECTION_DROP,
17790
- outputType: type,
17791
- sourceId: event.nodeId
18254
+ connection: {
18255
+ source: event.nodeId,
18256
+ sourceHandle: event.handleId
18257
+ },
18258
+ eventSource: NODE_CREATOR_OPEN_SOURCES.NODE_CONNECTION_DROP
17792
18259
  });
17793
18260
  });
17794
18261
  }
@@ -17804,10 +18271,11 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
17804
18271
  if (!checkIfEditingIsAllowed()) {
17805
18272
  return;
17806
18273
  }
17807
- await addNodes(nodes, { dragAndDrop, position: position2 });
18274
+ await addNodes2(nodes, { dragAndDrop, position: position2 });
17808
18275
  await addConnections(connections2, {
17809
18276
  offsetIndex: editableWorkflow.value.nodes.length - nodes.length
17810
18277
  });
18278
+ uiStore.lastSelectedNodeConnection = null;
17811
18279
  }
17812
18280
  async function onSwitchActiveNode(nodeName) {
17813
18281
  setNodeActiveByName(nodeName);
@@ -17818,15 +18286,31 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
17818
18286
  function onOpenNodeCreator(options) {
17819
18287
  nodeCreatorStore.openNodeCreator(options);
17820
18288
  }
18289
+ function onClickConnectionAdd(connection) {
18290
+ nodeCreatorStore.openNodeCreatorForConnectingNode({
18291
+ connection,
18292
+ eventSource: NODE_CREATOR_OPEN_SOURCES.NODE_CONNECTION_ACTION
18293
+ });
18294
+ }
17821
18295
  const isStoppingExecution = ref(false);
17822
18296
  const isWorkflowRunning = computed(() => uiStore.isActionActive.workflowRunning);
17823
18297
  const isExecutionWaitingForWebhook = computed(() => workflowsStore.executionWaitingForWebhook);
18298
+ const isExecutionDisabled = computed(() => {
18299
+ if (containsChatTriggerNodes.value && isOnlyChatTriggerNodeActive.value && !chatTriggerNodePinnedData.value) {
18300
+ return true;
18301
+ }
18302
+ return !containsTriggerNodes.value || allTriggerNodesDisabled.value;
18303
+ });
17824
18304
  const isStopExecutionButtonVisible = computed(
17825
18305
  () => isWorkflowRunning.value && !isExecutionWaitingForWebhook.value
17826
18306
  );
17827
18307
  const isStopWaitingForWebhookButtonVisible = computed(
17828
18308
  () => isWorkflowRunning.value && isExecutionWaitingForWebhook.value
17829
18309
  );
18310
+ const isClearExecutionButtonVisible = computed(
18311
+ () => !isReadOnlyRoute.value && !isReadOnlyEnvironment.value && !isWorkflowRunning.value && !allTriggerNodesDisabled.value && workflowExecutionData.value
18312
+ );
18313
+ const workflowExecutionData = computed(() => workflowsStore.workflowExecutionData);
17830
18314
  async function onRunWorkflow() {
17831
18315
  trackRunWorkflow();
17832
18316
  await runWorkflow({});
@@ -17874,6 +18358,32 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
17874
18358
  async function onStopWaitingForWebhook() {
17875
18359
  await stopWaitingForWebhook();
17876
18360
  }
18361
+ async function onClearExecutionData() {
18362
+ workflowsStore.workflowExecutionData = null;
18363
+ nodeHelpers.updateNodesExecutionIssues();
18364
+ }
18365
+ function onRunWorkflowButtonMouseEnter() {
18366
+ nodeViewEventBus.emit("runWorkflowButton:mouseenter");
18367
+ }
18368
+ function onRunWorkflowButtonMouseLeave() {
18369
+ nodeViewEventBus.emit("runWorkflowButton:mouseleave");
18370
+ }
18371
+ const chatTriggerNode = computed(() => {
18372
+ return editableWorkflow.value.nodes.find((node2) => node2.type === CHAT_TRIGGER_NODE_TYPE);
18373
+ });
18374
+ const containsChatTriggerNodes = computed(() => {
18375
+ return !isExecutionWaitingForWebhook.value && !!editableWorkflow.value.nodes.find(
18376
+ (node2) => [MANUAL_CHAT_TRIGGER_NODE_TYPE, CHAT_TRIGGER_NODE_TYPE].includes(node2.type) && node2.disabled !== true
18377
+ );
18378
+ });
18379
+ const isOnlyChatTriggerNodeActive = computed(() => {
18380
+ return triggerNodes.value.every((node2) => node2.disabled || node2.type === CHAT_TRIGGER_NODE_TYPE);
18381
+ });
18382
+ const chatTriggerNodePinnedData = computed(() => {
18383
+ if (!chatTriggerNode.value)
18384
+ return null;
18385
+ return workflowsStore.pinDataByNodeName(chatTriggerNode.value.name);
18386
+ });
17877
18387
  function addKeyboardEventBindings() {
17878
18388
  }
17879
18389
  function removeKeyboardEventBindings() {
@@ -18095,34 +18605,45 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
18095
18605
  key: 0,
18096
18606
  workflow: unref(editableWorkflow),
18097
18607
  "workflow-object": unref(editableWorkflowObject),
18608
+ "fallback-nodes": fallbackNodes.value,
18609
+ "event-bus": unref(canvasEventBus),
18098
18610
  "onUpdate:node:position": onUpdateNodePosition,
18099
18611
  "onUpdate:node:active": onSetNodeActive,
18100
18612
  "onUpdate:node:selected": onSetNodeSelected,
18101
18613
  "onUpdate:node:enabled": onToggleNodeDisabled,
18614
+ "onUpdate:node:parameters": onUpdateNodeParameters,
18102
18615
  "onRun:node": onRunWorkflowToNode,
18103
18616
  "onDelete:node": onDeleteNode,
18104
18617
  "onCreate:connection": onCreateConnection,
18105
18618
  "onCreate:connection:cancelled": onCreateConnectionCancelled,
18106
18619
  "onDelete:connection": onDeleteConnection,
18620
+ "onClick:connection:add": onClickConnectionAdd,
18107
18621
  "onClick:pane": onClickPane
18108
18622
  }, {
18109
18623
  default: withCtx(() => [
18110
18624
  createBaseVNode("div", {
18111
18625
  class: normalizeClass(unref($style).executionButtons)
18112
18626
  }, [
18113
- createVNode(_sfc_main$4, {
18627
+ createVNode(_sfc_main$5, {
18114
18628
  "waiting-for-webhook": isExecutionWaitingForWebhook.value,
18629
+ disabled: isExecutionDisabled.value,
18115
18630
  executing: isWorkflowRunning.value,
18631
+ onMouseenter: onRunWorkflowButtonMouseEnter,
18632
+ onMouseleave: onRunWorkflowButtonMouseLeave,
18116
18633
  onClick: onRunWorkflow
18117
- }, null, 8, ["waiting-for-webhook", "executing"]),
18118
- isStopExecutionButtonVisible.value ? (openBlock(), createBlock(_sfc_main$3, {
18634
+ }, null, 8, ["waiting-for-webhook", "disabled", "executing"]),
18635
+ isStopExecutionButtonVisible.value ? (openBlock(), createBlock(_sfc_main$4, {
18119
18636
  key: 0,
18120
18637
  stopping: isStoppingExecution.value,
18121
18638
  onClick: onStopExecution
18122
18639
  }, null, 8, ["stopping"])) : createCommentVNode("", true),
18123
- isStopWaitingForWebhookButtonVisible.value ? (openBlock(), createBlock(_sfc_main$2, {
18640
+ isStopWaitingForWebhookButtonVisible.value ? (openBlock(), createBlock(_sfc_main$3, {
18124
18641
  key: 1,
18125
18642
  onClick: onStopWaitingForWebhook
18643
+ })) : createCommentVNode("", true),
18644
+ isClearExecutionButtonVisible.value ? (openBlock(), createBlock(_sfc_main$2, {
18645
+ key: 2,
18646
+ onClick: onClearExecutionData
18126
18647
  })) : createCommentVNode("", true)
18127
18648
  ], 2),
18128
18649
  (openBlock(), createBlock(Suspense, null, {
@@ -18154,7 +18675,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
18154
18675
  }))
18155
18676
  ]),
18156
18677
  _: 1
18157
- }, 8, ["workflow", "workflow-object"])) : createCommentVNode("", true);
18678
+ }, 8, ["workflow", "workflow-object", "fallback-nodes", "event-bus"])) : createCommentVNode("", true);
18158
18679
  };
18159
18680
  }
18160
18681
  });