n8n-editor-ui 1.103.0 → 1.104.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 (127) hide show
  1. package/dist/assets/{ActionDropdown-oe2q-18e.js → ActionDropdown-Ct6XJ0cl.js} +1 -1
  2. package/dist/assets/{AnimatedSpinner-DNQK2Lvb.js → AnimatedSpinner-CIyQ3zKd.js} +1 -1
  3. package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-CTPMm7Da.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-xv6FYiyR.js} +1 -1
  4. package/dist/assets/{AuthView-BLYDBurX.js → AuthView-dJdngoqx.js} +2 -2
  5. package/dist/assets/{ChangePasswordView-D_oe3bys.js → ChangePasswordView-C74U84q5.js} +3 -3
  6. package/dist/assets/CollectionParameter-DCn5Jtcj.js +4 -0
  7. package/dist/assets/ConsumedTokensDetails.vue_vue_type_script_setup_true_lang-CkASni2S.js +44 -0
  8. package/dist/assets/{CredentialsView-yjXzQeha.js → CredentialsView-jouDB3H1.js} +8 -8
  9. package/dist/assets/{DemoFooter-CLoho_f5.js → DemoFooter-CHlbEpB-.js} +9 -8
  10. package/dist/assets/{EmptySharedSectionActionBox.vue_vue_type_script_setup_true_lang-Dtt1q_gN.js → EmptySharedSectionActionBox.vue_vue_type_script_setup_true_lang-CbDihlsO.js} +1 -1
  11. package/dist/assets/{EntityNotFound-DKLj80gn.js → EntityNotFound-Dtqj9thX.js} +1 -1
  12. package/dist/assets/{EntityUnAuthorised-BUd46dmn.js → EntityUnAuthorised-BBsbc6du.js} +1 -1
  13. package/dist/assets/{ErrorView-DOjK08aR.js → ErrorView-BN4Jm32q.js} +1 -1
  14. package/dist/assets/{EvaluationsRootView-Cms0XlYE.js → EvaluationsRootView-B70WfmnQ.js} +5 -3
  15. package/dist/assets/{EvaluationsView-6l_Invxt.css → EvaluationsView-BTyYfInB.css} +6 -6
  16. package/dist/assets/{EvaluationsView-X9pjkssi.js → EvaluationsView-DQd7op3j.js} +53 -40
  17. package/dist/assets/{ExecutionsTime-DkME6I3E.css → ExecutionsTime-Bo7IOE5K.css} +6 -6
  18. package/dist/assets/{ExecutionsTime.vue_vue_type_script_setup_true_lang-CQDOSq4d.js → ExecutionsTime.vue_vue_type_script_setup_true_lang-C_2brmCr.js} +15 -12
  19. package/dist/assets/{ExecutionsView-NLnln1YQ.js → ExecutionsView-CKPZTnZV.js} +21 -18
  20. package/dist/assets/{FileSaver.min-BoHgd5iv.js → FileSaver.min-BvxTURBB.js} +1 -1
  21. package/dist/assets/{FixedCollectionParameter-BfKt_vOb.js → FixedCollectionParameter-CA-CigeR.js} +1 -1
  22. package/dist/assets/{ForgotMyPasswordView-OP-Zoaqi.js → ForgotMyPasswordView-YyVmo-nw.js} +3 -3
  23. package/dist/assets/{InfoAccordion-KgxR9XUm.js → InfoAccordion-BNmUe2V9.js} +1 -1
  24. package/dist/assets/{InsightsChartAverageRuntime-COSI3_o5.js → InsightsChartAverageRuntime-C9sCNhzD.js} +5 -4
  25. package/dist/assets/{InsightsChartFailed-zPbPiVrK.js → InsightsChartFailed-DWA6YbZj.js} +5 -4
  26. package/dist/assets/{InsightsChartFailureRate-BijFuiun.js → InsightsChartFailureRate-CfknGtrr.js} +5 -4
  27. package/dist/assets/{InsightsChartTimeSaved-QPkPrxuo.js → InsightsChartTimeSaved-DtLO9DJx.js} +5 -4
  28. package/dist/assets/{InsightsChartTotal-CAIfpPOZ.js → InsightsChartTotal-yX_QJ-44.js} +5 -4
  29. package/dist/assets/{InsightsDashboard-D8_DXUIT.js → InsightsDashboard-BlYvn96O.js} +19 -19
  30. package/dist/assets/{InsightsDashboard-CXbI-Jyg.css → InsightsDashboard-C27Avzrv.css} +2 -2
  31. package/dist/assets/{InsightsPaywall-BlFkYC7C.js → InsightsPaywall-BCfIY_xn.js} +3 -3
  32. package/dist/assets/{InsightsSummary-DT-p4HNY.js → InsightsSummary-OiO7efWD.js} +9 -4
  33. package/dist/assets/{InsightsTableWorkflows-RGpSnp7n.css → InsightsTableWorkflows-BTHSCwX8.css} +27 -3
  34. package/dist/assets/{InsightsTableWorkflows-CN4YWTtH.js → InsightsTableWorkflows-pTl3m7wx.js} +80 -26
  35. package/dist/assets/{Logo-BhBstNGh.js → Logo-8g4P9vyv.js} +1 -1
  36. package/dist/assets/{LogsPanel-Bvy4ANV7.css → LogsPanel-D0xdq4fV.css} +21 -21
  37. package/dist/assets/{LogsPanel-Ceg5ubnO.js → LogsPanel-so01MtIR.js} +16 -11
  38. package/dist/assets/{MainHeader-4a5SCN9a.js → MainHeader-CcUlKfHC.js} +17 -16
  39. package/dist/assets/{MainHeader-DYYEm7nF.css → MainHeader-qSHM1Rvp.css} +12 -12
  40. package/dist/assets/{MainSidebar-CaLHZgDB.css → MainSidebar-D74VZmM5.css} +7 -8
  41. package/dist/assets/{MainSidebar-PaqIlcl_.js → MainSidebar-DOGhP_oY.js} +26 -25
  42. package/dist/assets/{N8nDataTableServer-OWjVTbuy.js → N8nDataTableServer-9HerjyzX.js} +20 -10
  43. package/dist/assets/{NodeCreation-vn1s6ViE.js → NodeCreation-CVbCKnet.js} +11 -9
  44. package/dist/assets/{NodeCreator-8yXN9-3-.js → NodeCreator-BOosPF8_.js} +114 -197
  45. package/dist/assets/{NodeCreator-DWE25utr.css → NodeCreator-CkvY2niF.css} +0 -128
  46. package/dist/assets/{NodeDetailsView-Bfqrvndc.js → NodeDetailsView-KFidngJi.js} +21 -16
  47. package/dist/assets/{NodeDetailsViewV2-DvXkio7Z.js → NodeDetailsViewV2-BL4KKqW-.js} +21 -16
  48. package/dist/assets/{NodeView-4YXAVrWh.js → NodeView-BzC6ELga.js} +2068 -746
  49. package/dist/assets/{NodeView-hst6fesm.css → NodeView-G2qfXaOy.css} +755 -71
  50. package/dist/assets/{ProjectHeader-BXo_XGDO.js → ProjectHeader-B9-GdGvC.js} +2 -2
  51. package/dist/assets/{ProjectSettings-Z5Kp6E53.js → ProjectSettings-CE4_geFa.js} +7 -5
  52. package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-DK8Mp74c.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-Bb8zUJvi.js} +1 -1
  53. package/dist/assets/{ResourcesListLayout-DoL3gqUA.js → ResourcesListLayout-ClTEnqVS.js} +3 -3
  54. package/dist/assets/{RunDataJson-CI2PEX1Z.js → RunDataJson-fXQKTIFD.js} +6 -7
  55. package/dist/assets/{RunDataJsonActions-CdUL1gL3.js → RunDataJsonActions-CMP1sUPZ.js} +1 -1
  56. package/dist/assets/{RunDataParsedAiContent-B6Ss5mvl.js → RunDataParsedAiContent-CHK6Y4ET.js} +2 -2
  57. package/dist/assets/{RunDataSearch-DKaXYju2.js → RunDataSearch-CAZGWZzz.js} +1 -1
  58. package/dist/assets/{RunDataTable-BQ3rdzoF.js → RunDataTable-CeqmA-n3.js} +17 -17
  59. package/dist/assets/{SamlOnboarding-C_au26AK.js → SamlOnboarding-BrdzPMSK.js} +3 -3
  60. package/dist/assets/{SettingsApiView-aoaIK5C5.js → SettingsApiView-Cj2YYKAl.js} +5 -4
  61. package/dist/assets/{SettingsCommunityNodesView-Bii1jYzp.js → SettingsCommunityNodesView-ChB--kZD.js} +4 -3
  62. package/dist/assets/{SettingsExternalSecrets-DzoOLUAJ.js → SettingsExternalSecrets-BjghCvkE.js} +5 -3
  63. package/dist/assets/{SettingsLdapView-CkLOtGjj.js → SettingsLdapView-DIB1-nTk.js} +1 -1
  64. package/dist/assets/{SettingsLogStreamingView-CKBVxNwk.js → SettingsLogStreamingView-BOOGkcwK.js} +1 -1
  65. package/dist/assets/{SettingsPersonalView-gOoSkTpX.js → SettingsPersonalView-DaNZTNUy.js} +1 -1
  66. package/dist/assets/{SettingsSourceControl-C6XS-Myv.js → SettingsSourceControl-B5fQRT0V.js} +10 -8
  67. package/dist/assets/{SettingsSso-CobNvKat.js → SettingsSso-CWX-T13W.js} +1 -1
  68. package/dist/assets/{SettingsUsageAndPlan-3r39YZW1.js → SettingsUsageAndPlan-Cnnf9k6X.js} +15 -10
  69. package/dist/assets/{SettingsUsageAndPlan-D6TiPwUx.css → SettingsUsageAndPlan-ZZQpCmyQ.css} +3 -3
  70. package/dist/assets/{SettingsUsersView-DrrH1dLq.js → SettingsUsersView-BLDi4lpv.js} +105 -44
  71. package/dist/assets/{SettingsUsersView-B81cHl3f.css → SettingsUsersView-RQTdLxyb.css} +11 -7
  72. package/dist/assets/{SettingsView-D_wEAbZb.js → SettingsView-Dtc8MEv6.js} +1 -1
  73. package/dist/assets/{SetupView-CU1QrNSu.js → SetupView-C4C-2Idz.js} +3 -3
  74. package/dist/assets/{SetupWorkflowCredentialsButton-Do2E5w2d.js → SetupWorkflowCredentialsButton-Pzrxag-k.js} +1 -1
  75. package/dist/assets/{SetupWorkflowFromTemplateView-cuwHIvkB.js → SetupWorkflowFromTemplateView-CRsZDYct.js} +3 -3
  76. package/dist/assets/{SigninView-DA11h2Kr.js → SigninView-COyoSAUi.js} +3 -3
  77. package/dist/assets/{SignoutView-VJrMh5w7.js → SignoutView-B0t9kc5s.js} +1 -1
  78. package/dist/assets/{SignupView-BNTIWYSE.js → SignupView-BN8MCOnb.js} +3 -3
  79. package/dist/assets/{TableBase-B5rreQVh.js → TableBase-BmhIwPwZ.js} +1 -1
  80. package/dist/assets/{Tags-SJm7l2s6.js → Tags-DeTgaVsD.js} +1 -1
  81. package/dist/assets/{TemplateDetails-B6-Nkya8.js → TemplateDetails-Bh-WSvQ-.js} +2 -2
  82. package/dist/assets/{TemplateList-C4Dqsvfp.js → TemplateList-DxvJMjPE.js} +1 -1
  83. package/dist/assets/{TemplatesCollectionView-BMGZ939P.js → TemplatesCollectionView-BhilAS_8.js} +6 -6
  84. package/dist/assets/{TemplatesSearchView-CIo8eprI.js → TemplatesSearchView-CWxnTQ8Z.js} +3 -3
  85. package/dist/assets/{TemplatesView-MshXkM2_.js → TemplatesView-Co-FQLhr.js} +1 -1
  86. package/dist/assets/{TemplatesWorkflowView-LWBGoJBO.js → TemplatesWorkflowView-DAWgsT0T.js} +6 -6
  87. package/dist/assets/{TriggerPanel-DRpKKKun.css → TriggerPanel-DJv04feX.css} +1 -354
  88. package/dist/assets/{TriggerPanel-C-0JCegt.js → TriggerPanel-JaXhe1VW.js} +133 -981
  89. package/dist/assets/{VariablesView-omKbxNoc.js → VariablesView-JnfEn1f-.js} +5 -5
  90. package/dist/assets/VueMarkdown-DDKnTMgT.js +1570 -0
  91. package/dist/assets/{WorkerView-DPnCbr1B.js → WorkerView-DZG4C_Qp.js} +6 -5
  92. package/dist/assets/{WorkflowActivator-Hn_uDFPH.js → WorkflowActivator-C8hP37n7.js} +2 -2
  93. package/dist/assets/{WorkflowExecutionsInfoAccordion-DWSeluMM.js → WorkflowExecutionsInfoAccordion-DCNvkxhh.js} +2 -2
  94. package/dist/assets/{WorkflowExecutionsLandingPage-BMcxBJEl.js → WorkflowExecutionsLandingPage-DVp6SoPy.js} +3 -3
  95. package/dist/assets/{WorkflowExecutionsPreview-Csq6C8Vh.js → WorkflowExecutionsPreview-CKYWZWv1.js} +5 -5
  96. package/dist/assets/{WorkflowExecutionsView-6L7iZJq1.js → WorkflowExecutionsView-BIkweP3p.js} +8 -8
  97. package/dist/assets/{WorkflowHistory-B0t-0Z77.js → WorkflowHistory-C0LrWJW0.js} +6 -6
  98. package/dist/assets/{WorkflowOnboardingView-DuI2I9MQ.js → WorkflowOnboardingView-CWMUgnLK.js} +1 -1
  99. package/dist/assets/{WorkflowPreview-D4kwrMFk.js → WorkflowPreview-DmYMBSH3.js} +1 -1
  100. package/dist/assets/{WorkflowsView-WU-IKn4K.js → WorkflowsView-jEphnf90.js} +125 -17
  101. package/dist/assets/aiTemplatesStarterCollection.store-oECEA5nR.js +794 -0
  102. package/dist/assets/{chartjs.utils-Bc5bGj66.js → chartjs.utils-CP28DnUQ.js} +2 -2
  103. package/dist/assets/{en-FjyeYndD.js → en-BX7CKkqE.js} +22 -6
  104. package/dist/assets/{global-link-actions-BZz1vmQq.js → global-link-actions-BjpAG7gt.js} +1 -1
  105. package/dist/assets/{import-curl-jc1UtwMR.js → import-curl-BD22LJ4z.js} +1 -1
  106. package/dist/assets/{index-C6LoGNAx.css → index-BWpYwmXd.css} +548 -948
  107. package/dist/assets/{index-Cohi4onR.js → index-CjbtyS1n.js} +1 -1
  108. package/dist/assets/{index-CAU8Zeff.js → index-Cm5yBbby.js} +48318 -42852
  109. package/dist/assets/{pickBy-Bmcb35Dl.js → pickBy-DA-1tKxT.js} +1 -1
  110. package/dist/assets/{templateActions-Bsj8nngl.js → templateActions-D9IAsJ2m.js} +1 -1
  111. package/dist/assets/{typescript.worker-CUj0Nj-S.js → typescript.worker-KwUz68Jx.js} +2499 -157
  112. package/dist/assets/{useBeforeUnload-aOI6YxZR.js → useBeforeUnload-BR-V9Uaz.js} +1 -1
  113. package/dist/assets/{useExecutionDebugging-dVW9cpg5.js → useExecutionDebugging-C8zR-uFJ.js} +1 -1
  114. package/dist/assets/{useExecutionHelpers-BIfEl-h7.js → useExecutionHelpers-DQcWcZ8o.js} +1 -1
  115. package/dist/assets/{useImportCurlCommand-B4EFH3RG.js → useImportCurlCommand-B3-fEq8S.js} +9 -9
  116. package/dist/assets/{RunData-D0dKnadD.css → useKeybindings-2A271Jke.css} +134 -2
  117. package/dist/assets/{RunData-B9jGswDT.js → useKeybindings-DetzdpXy.js} +223 -1644
  118. package/dist/assets/{useProjectPages-4b50pSat.js → useProjectPages-qXIMd_UF.js} +1 -1
  119. package/dist/assets/{usePushConnection-CKW8UPyl.js → usePushConnection-Duvg6z8O.js} +10 -2
  120. package/dist/assets/{useWorkflowActivate-C39vU0rW.js → useWorkflowActivate-BE4Ckf9k.js} +1 -1
  121. package/dist/index.html +3 -7
  122. package/index.html +1 -5
  123. package/package.json +1 -1
  124. package/vite.config.mts +23 -3
  125. package/dist/assets/CollectionParameter-DMWMZwmI.js +0 -4
  126. package/dist/assets/useKeybindings-0d48UFTt.js +0 -188
  127. package/dist/assets/useKeybindings-BUK7Ngh6.css +0 -133
@@ -1,25 +1,26 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/NodeCreation-vn1s6ViE.js","assets/index-CAU8Zeff.js","assets/index-C6LoGNAx.css","assets/NodeCreation-CxN6JIS_.css","assets/NodeDetailsView-Bfqrvndc.js","assets/TriggerPanel-C-0JCegt.js","assets/RunData-B9jGswDT.js","assets/FileSaver.min-BoHgd5iv.js","assets/useKeybindings-0d48UFTt.js","assets/useKeybindings-BUK7Ngh6.css","assets/useExecutionHelpers-BIfEl-h7.js","assets/RunData-D0dKnadD.css","assets/RunDataParsedAiContent-B6Ss5mvl.js","assets/RunDataParsedAiContent-wfIiKsq7.css","assets/InfoAccordion-KgxR9XUm.js","assets/InfoAccordion-dxudNqVC.css","assets/TriggerPanel-DRpKKKun.css","assets/useWorkflowActivate-C39vU0rW.js","assets/ActionDropdown-oe2q-18e.js","assets/ActionDropdown-BmC0wfMx.css","assets/import-curl-jc1UtwMR.js","assets/global-link-actions-BZz1vmQq.js","assets/useExecutionDebugging-dVW9cpg5.js","assets/useBeforeUnload-aOI6YxZR.js","assets/NodeDetailsView-CaTI-1QQ.css","assets/NodeDetailsViewV2-DvXkio7Z.js","assets/NodeDetailsViewV2-BxNx4ZUM.css","assets/SetupWorkflowCredentialsButton-Do2E5w2d.js"])))=>i.map(i=>d[i]);
2
- import { _ as _export_sfc$1, h as createElementBlock, g as openBlock, j as createBaseVNode, d as defineComponent, cn as PanelPosition, co as useVueFlow, bT as toRef, e as createBlock, w as withCtx, J as renderSlot, f as createCommentVNode, F as Fragment, i as createVNode, bY as resolveDynamicComponent, l as unref, cp as _sfc_main$R, x as computed, a0 as _sfc_main$S, c as useI18n, c7 as KeyboardShortcutTooltip, n as normalizeClass, q as N8nButton, $ as N8nTooltip, bo as NodeConnectionTypes, cq as getBezierPath, cr as getSmoothStepPath, cs as Position, bU as inject, ct as CanvasKey, ab as useCssModule, cu as parseCanvasConnectionHandleString, r as ref, o as onMounted, y as renderList, cv as _sfc_main$d$1, P as normalizeStyle, T as useUIStore, bG as useNodeTypesStore, a4 as useWorkflowsStore, ae as useSourceControlStore, am as getResourcePermissions, cw as isNodeWithWorkflowSelector, cx as getSubworkflowId, cy as isPresent, aa as watch, cz as getMousePosition, aQ as STICKY_NODE_TYPE, bz as usePinnedData, cA as NOT_DUPLICATABLE_NODE_TYPES, cB as isExecutable, cC as Teleport, c9 as useStyles, bJ as getDefaultExportFromCjs, cD as DEFAULT_NODE_SIZE, cE as CanvasNodeRenderType, cF as GRID_SIZE, cb as useThrottleFn, cG as getRectOfNodes, b$ as onUnmounted, cH as onKeyDown, cI as onKeyUp, cJ as useSlots, c1 as useAttrs, cK as getBoundsofRects, cL as watchEffect, t as toDisplayString, cM as getConnectedEdges, bW as normalizeProps, D as mergeProps, bE as provide, aK as h, bf as createSlots, cN as isValidNodeConnectionType, cO as _sfc_main$3$1, cP as CanvasNodeKey, cQ as CanvasConnectionMode, cR as mergeModels, cS as useModel, I as onBeforeUnmount, cT as _sfc_main$T, N as N8nIcon, bB as useNodeHelpers, cU as TitledList, k as createTextVNode, cV as CanvasNodeDirtiness, ar as useTemplateRef, cW as useElementSize, bP as _sfc_main$U, as as InlineRename, cX as toValue, cY as isCommunityPackageName, cZ as NPM_PACKAGE_DOCS_BASE_URL, c_ as BUILTIN_NODES_DOCS_URL, aM as useNDVStore, c$ as COMMUNITY_NODES_INSTALLATION_DOCS_URL, d0 as N8nTabs, bd as useExternalHooks, ay as useTelemetry, c2 as useClipboard, ak as useWorkflowHelpers, a as useToast, d1 as OPEN_URL_PANEL_TRIGGER_NODE_TYPES, d2 as PRODUCTION_ONLY_TRIGGER_NODE_TYPES, d3 as MCP_TRIGGER_NODE_TYPE, d4 as FORM_TRIGGER_NODE_TYPE, bx as CHAT_TRIGGER_NODE_TYPE, O as resolveComponent, H as N8nRadioButtons, be as onClickOutside, d5 as toRef$1, d6 as tryOnScopeDispose, d7 as toValue$1, d8 as isIOS, d9 as noop$2, da as isObject, db as isClient, S as useDebounce, dc as getNodeInputs, dd as _sfc_main$V, v as useSettingsStore, de as useCredentialsStore, u as useUsersStore, af as useProjectsStore, df as OPEN_AI_API_CREDENTIAL_TYPE, dg as N8nCallout, p as N8nText, dh as useHistoryStore, di as usePostHog, dj as useNodeSettingsParameters, dk as useResizeObserver, aq as ProjectTypes, dl as NDV_UI_OVERHAUL_EXPERIMENT, dm as BASE_NODE_SURVEY_URL, cm as ndvEventBus, bO as withModifiers, a1 as N8nLink, dn as CUSTOM_NODES_DOCS_URL, aS as withDirectives, dp as N8nNotice, aT as vShow, dq as _sfc_main$W, dr as NodeCredentials, bq as get$3, ds as getNodeParameters, dt as deepCopy, du as nameIsParameter, dv as RenameNodeCommand, bF as useCanvasOperations, Q as createEventBus, dw as useEnvironmentsStore, dx as ExpressionLocalResolveContextSymbol, dy as watchOnce, dz as calculateNodeSize, dA as NodeId, dB as useGetPointerPosition, dC as clamp, dD as N8nSticky, dE as useNodeCreatorStore, bb as useTemplatesStore, V as VIEWS, dF as isExtraTemplateLinksExperimentEnabled, az as nodeViewEventBus, bj as trackTemplatesClick, bk as TemplateClickSource, dG as NODE_CREATOR_OPEN_SOURCES, dH as useBuilderStore, aY as withKeys, dI as N8nInput, dJ as CanvasNodeHandleKey, dK as Transition$1, dL as _sfc_main$f$1, b as useRouter, bA as useLogsStore, bC as useRunWorkflow, dM as insertSpacersBetweenEndpoints, dN as createCanvasConnectionHandleString, dO as CONFIGURATION_NODE_OFFSET, dP as isEqual, dQ as useDeviceSupport, dR as isOutsideSelected, K as nextTick, dS as _sfc_main$1$4, dT as MarkerType, dU as Suspense, bX as guardReactiveProps, dV as updateViewportToContainNodes, dW as useNodeDirtiness, dX as CUSTOM_API_CALL_KEY, dY as mapLegacyEndpointsToCanvasConnectionPort, dZ as getNodeOutputs, d_ as getTriggerNodeServiceName, d$ as sanitizeHtml, e0 as WAIT_NODE_TYPE, e1 as SEND_AND_WAIT_OPERATION, e2 as FORM_NODE_TYPE, e3 as WAIT_INDEFINITELY, e4 as checkOverlap, e5 as SIMULATE_NODE_TYPE, e6 as SIMULATE_TRIGGER_NODE_TYPE, e7 as mapLegacyConnectionsToCanvasConnections, e8 as getNodeIconSource, e9 as refThrottled, ea as useFocusPanelStore, eb as HTML_NODE_TYPE, ec as isValueExpression, ed as isResourceLocatorValue, ee as AI_TRANSFORM_NODE_TYPE, ef as useResolvedExpression, eg as __unplugin_components_2$2, eh as __unplugin_components_3$1, ei as __unplugin_components_4, ej as __unplugin_components_5, ek as __unplugin_components_6, el as __unplugin_components_7, em as __unplugin_components_8, en as __unplugin_components_9, eo as getParameterTypeOption, ep as htmlEditorEventBus, eq as parseFromExpression, er as isValidParameterOption, es as formatAsExpression, et as hasFocusOnInput, eu as isFocusableEl, bn as isChatNode, ev as truncateBeforeLast, ew as reactive, a5 as useRoute, ai as useDocumentTitle, aj as useWorkflowSaving, ex as useExternalSecretsStore, ac as useRootStore, aN as useExecutionsStore, ad as useCanvasStore, ah as useNpsSurveyStore, R as useTagsStore, a3 as usePushConnectionStore, ag as useFoldersStore, ey as useAgentRequestStore, ez as useWorkflowExtraction, eA as FOCUS_PANEL_EXPERIMENT, a6 as PLACEHOLDER_EMPTY_WORKFLOW_ID, eB as NEW_WORKFLOW_ID, bH as START_NODE_TYPE, eC as getNodeViewTab, G as MAIN_HEADER_TABS, eD as VALID_WORKFLOW_IMPORT_URL_REGEX, aA as useMessage, aB as MODAL_CONFIRM, eE as jsonParse, bw as MANUAL_CHAT_TRIGGER_NODE_TYPE, eF as EVALUATION_TRIGGER_NODE_TYPE, eG as getBounds, eH as onBeforeRouteLeave, aR as onBeforeMount, aC as WORKFLOW_SETTINGS_MODAL_KEY, eI as onActivated, eJ as onDeactivated, eK as defineAsyncComponent, aI as __vitePreload, ap as EnterpriseEditionFeature, eL as EVALUATION_NODE_TYPE, eM as getEasyAiWorkflowJson, eN as getRagStarterWorkflowJson, eO as tryToParseNumber, b1 as sourceControlEventBus, eP as getNodesWithNormalizedPosition, eQ as needsAgentInput, eR as FROM_AI_PARAMETERS_MODAL_KEY, eS as historyBus, eT as DRAG_EVENT_DATA_KEY } from "./index-CAU8Zeff.js";
3
- import { u as useExperimentalNdvStore, N as N8nBlockUi, a as useKeybindings, c as canvasEventBus } from "./useKeybindings-0d48UFTt.js";
4
- import { N as N8nActionDropdown } from "./ActionDropdown-oe2q-18e.js";
5
- import { i as importCurlEventBus } from "./import-curl-jc1UtwMR.js";
6
- import { g as globalLinkActionsEventBus } from "./global-link-actions-BZz1vmQq.js";
7
- import { u as useExecutionDebugging } from "./useExecutionDebugging-dVW9cpg5.js";
8
- import { u as useBeforeUnload } from "./useBeforeUnload-aOI6YxZR.js";
9
- const _sfc_main$Q = {};
10
- const _hoisted_1$g = {
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/NodeCreation-CVbCKnet.js","assets/index-Cm5yBbby.js","assets/index-BWpYwmXd.css","assets/NodeCreation-CxN6JIS_.css","assets/NodeDetailsView-KFidngJi.js","assets/TriggerPanel-JaXhe1VW.js","assets/useKeybindings-DetzdpXy.js","assets/FileSaver.min-BvxTURBB.js","assets/useExecutionHelpers-DQcWcZ8o.js","assets/useKeybindings-2A271Jke.css","assets/RunDataParsedAiContent-CHK6Y4ET.js","assets/VueMarkdown-DDKnTMgT.js","assets/RunDataParsedAiContent-wfIiKsq7.css","assets/ConsumedTokensDetails.vue_vue_type_script_setup_true_lang-CkASni2S.js","assets/InfoAccordion-BNmUe2V9.js","assets/InfoAccordion-dxudNqVC.css","assets/TriggerPanel-DJv04feX.css","assets/useWorkflowActivate-BE4Ckf9k.js","assets/ActionDropdown-Ct6XJ0cl.js","assets/ActionDropdown-BmC0wfMx.css","assets/import-curl-BD22LJ4z.js","assets/global-link-actions-BjpAG7gt.js","assets/useExecutionDebugging-C8zR-uFJ.js","assets/useBeforeUnload-BR-V9Uaz.js","assets/aiTemplatesStarterCollection.store-oECEA5nR.js","assets/NodeDetailsView-CaTI-1QQ.css","assets/NodeDetailsViewV2-BL4KKqW-.js","assets/NodeDetailsViewV2-BxNx4ZUM.css","assets/SetupWorkflowCredentialsButton-Pzrxag-k.js"])))=>i.map(i=>d[i]);
2
+ import { _ as _export_sfc$1, h as createElementBlock, g as openBlock, j as createBaseVNode, d as defineComponent, cn as PanelPosition, co as useVueFlow, bT as toRef, e as createBlock, w as withCtx, J as renderSlot, f as createCommentVNode, F as Fragment, i as createVNode, bY as resolveDynamicComponent, l as unref, cp as _sfc_main$X, x as computed, a0 as _sfc_main$Y, c as useI18n, c7 as KeyboardShortcutTooltip, n as normalizeClass, q as N8nButton, $ as N8nTooltip, bp as NodeConnectionTypes, cq as getBezierPath, cr as getSmoothStepPath, cs as Position, bU as inject, ct as CanvasKey, ac as useCssModule, cu as parseCanvasConnectionHandleString, r as ref, o as onMounted, y as renderList, cv as _sfc_main$d$1, P as normalizeStyle, T as useUIStore, bH as useNodeTypesStore, a5 as useWorkflowsStore, af as useSourceControlStore, an as getResourcePermissions, cw as isNodeWithWorkflowSelector, cx as getSubworkflowId, cy as isPresent, ab as watch, cz as getMousePosition, aR as STICKY_NODE_TYPE, bA as usePinnedData, cA as NOT_DUPLICATABLE_NODE_TYPES, cB as isExecutable, cC as Teleport, c9 as useStyles, bK as getDefaultExportFromCjs, cD as DEFAULT_NODE_SIZE, cE as CanvasNodeRenderType, cF as GRID_SIZE, cb as useThrottleFn, cG as getRectOfNodes, b$ as onUnmounted, cH as onKeyDown, cI as onKeyUp, cJ as useSlots, c1 as useAttrs, cK as getBoundsofRects, cL as watchEffect, t as toDisplayString, cM as getConnectedEdges, bW as normalizeProps, D as mergeProps, bF as provide, aL as h, bg as createSlots, cN as isValidNodeConnectionType, cO as _sfc_main$3$1, cP as CanvasNodeKey, cQ as CanvasConnectionMode, cR as mergeModels, cS as useModel, I as onBeforeUnmount, cT as _sfc_main$Z, N as N8nIcon, bC as useNodeHelpers, cU as TitledList, k as createTextVNode, cV as CanvasNodeDirtiness, aN as useNDVStore, cW as N8nSelect, cX as _sfc_main$_, bQ as _sfc_main$$, cY as truncate, cZ as createStaticVNode, c_ as usePostHog, bI as START_NODE_TYPE, c$ as MANUAL_TRIGGER_NODE_TYPE, d0 as CRON_NODE_TYPE, d1 as INTERVAL_NODE_TYPE, d2 as getNodeInputs, d3 as getNodeOutputs, d4 as uniqBy, c5 as waitingNodeTooltip, d5 as NDV_UI_OVERHAUL_EXPERIMENT, c4 as resolveDirective, p as N8nText, aT as withDirectives, d6 as _sfc_main$10, a1 as I18nT, bP as withModifiers, H as N8nRadioButtons, az as useTelemetry, as as useTemplateRef, d7 as useElementSize, at as InlineRename, b as useRouter, d8 as useCommunityNodesStore, a2 as N8nLink, V as VIEWS, d9 as captureException, da as N8nNotice, db as i18n, dc as toValue, dd as isCommunityPackageName, de as NPM_PACKAGE_DOCS_BASE_URL, df as BUILTIN_NODES_DOCS_URL, dg as COMMUNITY_NODES_INSTALLATION_DOCS_URL, u as useUsersStore, dh as N8nTabs, be as useExternalHooks, c2 as useClipboard, al as useWorkflowHelpers, a as useToast, di as OPEN_URL_PANEL_TRIGGER_NODE_TYPES, dj as PRODUCTION_ONLY_TRIGGER_NODE_TYPES, dk as MCP_TRIGGER_NODE_TYPE, dl as FORM_TRIGGER_NODE_TYPE, by as CHAT_TRIGGER_NODE_TYPE, O as resolveComponent, bf as onClickOutside, dm as toRef$1, dn as tryOnScopeDispose, dp as toValue$1, dq as isIOS, dr as noop$2, ds as isObject, dt as isClient, S as useDebounce, v as useSettingsStore, du as useCredentialsStore, ag as useProjectsStore, dv as OPEN_AI_API_CREDENTIAL_TYPE, dw as N8nCallout, dx as useHistoryStore, dy as useNodeSettingsParameters, dz as useResizeObserver, ar as ProjectTypes, dA as BASE_NODE_SURVEY_URL, cm as ndvEventBus, dB as CUSTOM_NODES_DOCS_URL, aU as vShow, dC as _sfc_main$11, dD as NodeCredentials, br as get$3, dE as getNodeParameters, dF as deepCopy, dG as nameIsParameter, dH as RenameNodeCommand, bG as useCanvasOperations, Q as createEventBus, cl as useActiveElement, dI as useEnvironmentsStore, dJ as watchOnce, dK as Transition$1, dL as ExpressionLocalResolveContextSymbol, dM as calculateNodeSize, dN as NodeId, dO as useGetPointerPosition, dP as clamp, dQ as N8nSticky, dR as useNodeCreatorStore, bc as useTemplatesStore, dS as isExtraTemplateLinksExperimentEnabled, aA as nodeViewEventBus, bk as trackTemplatesClick, bl as TemplateClickSource, dT as NODE_CREATOR_OPEN_SOURCES, dU as useBuilderStore, ak as useWorkflowSaving, aZ as withKeys, dV as N8nInput, dW as CanvasNodeHandleKey, dX as _sfc_main$f$1, bB as useLogsStore, bD as useRunWorkflow, dY as insertSpacersBetweenEndpoints, dZ as createCanvasConnectionHandleString, d_ as CONFIGURATION_NODE_OFFSET, d$ as isEqual, e0 as useDeviceSupport, e1 as isOutsideSelected, K as nextTick, e2 as _sfc_main$1$4, e3 as MarkerType, e4 as Suspense, bX as guardReactiveProps, e5 as updateViewportToContainNodes, e6 as useNodeDirtiness, e7 as CUSTOM_API_CALL_KEY, e8 as mapLegacyEndpointsToCanvasConnectionPort, e9 as getTriggerNodeServiceName, ea as sanitizeHtml, eb as WAIT_NODE_TYPE, ec as SEND_AND_WAIT_OPERATION, ed as FORM_NODE_TYPE, ee as WAIT_INDEFINITELY, ef as checkOverlap, eg as SIMULATE_NODE_TYPE, eh as SIMULATE_TRIGGER_NODE_TYPE, ei as mapLegacyConnectionsToCanvasConnections, ej as getNodeIconSource, ek as refThrottled, el as useFocusPanelStore, em as HTML_NODE_TYPE, en as isValueExpression, eo as isResourceLocatorValue, ep as AI_TRANSFORM_NODE_TYPE, eq as useResolvedExpression, er as InfoTip, es as __unplugin_components_2$3, et as __unplugin_components_3$1, eu as __unplugin_components_4, ev as __unplugin_components_5, ew as __unplugin_components_6, ex as __unplugin_components_7, ey as __unplugin_components_8, ez as __unplugin_components_9, c8 as N8nResizeWrapper, eA as getParameterTypeOption, eB as htmlEditorEventBus, eC as parseFromExpression, eD as isValidParameterOption, eE as formatAsExpression, eF as hasFocusOnInput, eG as isFocusableEl, bo as isChatNode, eH as truncateBeforeLast, eI as reactive, a6 as useRoute, aj as useDocumentTitle, eJ as useExternalSecretsStore, ad as useRootStore, aO as useExecutionsStore, ae as useCanvasStore, ai as useNpsSurveyStore, R as useTagsStore, a4 as usePushConnectionStore, ah as useFoldersStore, eK as useAgentRequestStore, eL as useWorkflowExtraction, eM as FOCUS_PANEL_EXPERIMENT, a7 as PLACEHOLDER_EMPTY_WORKFLOW_ID, eN as NEW_WORKFLOW_ID, eO as getNodeViewTab, G as MAIN_HEADER_TABS, eP as VALID_WORKFLOW_IMPORT_URL_REGEX, aB as useMessage, aC as MODAL_CONFIRM, eQ as jsonParse, bx as MANUAL_CHAT_TRIGGER_NODE_TYPE, eR as EVALUATION_TRIGGER_NODE_TYPE, eS as getBounds, eT as onBeforeRouteLeave, aS as onBeforeMount, aD as WORKFLOW_SETTINGS_MODAL_KEY, eU as onActivated, eV as onDeactivated, eW as defineAsyncComponent, aJ as __vitePreload, aq as EnterpriseEditionFeature, eX as EVALUATION_NODE_TYPE, eY as getEasyAiWorkflowJson, eZ as getRagStarterWorkflowJson, e_ as tryToParseNumber, b2 as sourceControlEventBus, e$ as getNodesWithNormalizedPosition, f0 as needsAgentInput, f1 as FROM_AI_PARAMETERS_MODAL_KEY, f2 as historyBus, f3 as DRAG_EVENT_DATA_KEY } from "./index-Cm5yBbby.js";
3
+ import { u as useExperimentalNdvStore, R as RunData, N as N8nBlockUi, a as useKeybindings, c as canvasEventBus } from "./useKeybindings-DetzdpXy.js";
4
+ import { N as N8nActionDropdown } from "./ActionDropdown-Ct6XJ0cl.js";
5
+ import { i as importCurlEventBus } from "./import-curl-BD22LJ4z.js";
6
+ import { g as globalLinkActionsEventBus } from "./global-link-actions-BjpAG7gt.js";
7
+ import { u as useExecutionDebugging } from "./useExecutionDebugging-C8zR-uFJ.js";
8
+ import { u as useBeforeUnload } from "./useBeforeUnload-BR-V9Uaz.js";
9
+ import { u as useAITemplatesStarterCollectionStore } from "./aiTemplatesStarterCollection.store-oECEA5nR.js";
10
+ const _sfc_main$W = {};
11
+ const _hoisted_1$i = {
11
12
  xmlns: "http://www.w3.org/2000/svg",
12
13
  viewBox: "0 0 16 16"
13
14
  };
14
- function _sfc_render$1(_ctx, _cache) {
15
- return openBlock(), createElementBlock("svg", _hoisted_1$g, _cache[0] || (_cache[0] = [
15
+ function _sfc_render$2(_ctx, _cache) {
16
+ return openBlock(), createElementBlock("svg", _hoisted_1$i, _cache[0] || (_cache[0] = [
16
17
  createBaseVNode("path", {
17
18
  fill: "currentColor",
18
19
  d: "M1.6.13c-.18-.17-.47-.18-.62 0L.56.57.14.98c-.2.15-.18.44 0 .62l3.63 3.6c.1.1.1.27 0 .37-.2.2-.53.52-.93.94-.56.57-.12 1.62.22 2.11.05.07.12.1.2.1.05-.01.1-.04.15-.08l5.23-5.22c.1-.1.1-.26-.02-.34-.5-.34-1.55-.78-2.12-.22-.42.4-.75.73-.94.93-.1.1-.27.1-.37 0L1.6.13ZM9.5 3.9c.07-.09.2-.1.3-.04l6.07 3.44c.15.08.18.29.05.4l-1.21 1.22a.26.26 0 0 1-.26.07l-2.18-.64a.26.26 0 0 0-.32.33l.76 2.02c.04.1.01.2-.06.27L7.7 15.92a.26.26 0 0 1-.41-.05L3.83 9.8a.26.26 0 0 1 .04-.3l5.62-5.6Z"
19
20
  }, null, -1)
20
21
  ]));
21
22
  }
22
- const TidyUpIcon = /* @__PURE__ */ _export_sfc$1(_sfc_main$Q, [["render", _sfc_render$1]]);
23
+ const TidyUpIcon = /* @__PURE__ */ _export_sfc$1(_sfc_main$W, [["render", _sfc_render$2]]);
23
24
  const _sfc_main$1$3 = {
24
25
  name: "ControlButton",
25
26
  compatConfig: { MODE: 3 }
@@ -32,12 +33,12 @@ const _export_sfc = (sfc, props) => {
32
33
  return target2;
33
34
  };
34
35
  const _hoisted_1$5$1 = { class: "vue-flow__controls-button" };
35
- function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
36
+ function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
36
37
  return openBlock(), createElementBlock("button", _hoisted_1$5$1, [
37
38
  renderSlot(_ctx.$slots, "default")
38
39
  ]);
39
40
  }
40
- const ControlButton = /* @__PURE__ */ _export_sfc(_sfc_main$1$3, [["render", _sfc_render]]);
41
+ const ControlButton = /* @__PURE__ */ _export_sfc(_sfc_main$1$3, [["render", _sfc_render$1]]);
41
42
  const _hoisted_1$4$1 = {
42
43
  xmlns: "http://www.w3.org/2000/svg",
43
44
  viewBox: "0 0 32 32"
@@ -86,7 +87,7 @@ function render$1(_ctx, _cache) {
86
87
  return openBlock(), createElementBlock("svg", _hoisted_1$1$2, _hoisted_3$1$1);
87
88
  }
88
89
  const Lock = { render: render$1 };
89
- const _hoisted_1$f = {
90
+ const _hoisted_1$h = {
90
91
  xmlns: "http://www.w3.org/2000/svg",
91
92
  viewBox: "0 0 25 32"
92
93
  };
@@ -95,14 +96,14 @@ const _hoisted_3$7 = [
95
96
  _hoisted_2$b
96
97
  ];
97
98
  function render(_ctx, _cache) {
98
- return openBlock(), createElementBlock("svg", _hoisted_1$f, _hoisted_3$7);
99
+ return openBlock(), createElementBlock("svg", _hoisted_1$h, _hoisted_3$7);
99
100
  }
100
101
  const Unlock = { render };
101
102
  const __default__$4 = {
102
103
  name: "Controls",
103
104
  compatConfig: { MODE: 3 }
104
105
  };
105
- const _sfc_main$P = /* @__PURE__ */ defineComponent({
106
+ const _sfc_main$V = /* @__PURE__ */ defineComponent({
106
107
  ...__default__$4,
107
108
  props: {
108
109
  showZoom: { type: Boolean, default: true },
@@ -145,7 +146,7 @@ const _sfc_main$P = /* @__PURE__ */ defineComponent({
145
146
  emit("interactionChange", !isInteractive.value);
146
147
  }
147
148
  return (_ctx, _cache) => {
148
- return openBlock(), createBlock(unref(_sfc_main$R), {
149
+ return openBlock(), createBlock(unref(_sfc_main$X), {
149
150
  class: "vue-flow__controls",
150
151
  position: _ctx.position
151
152
  }, {
@@ -218,7 +219,7 @@ const _sfc_main$P = /* @__PURE__ */ defineComponent({
218
219
  };
219
220
  }
220
221
  });
221
- const _sfc_main$O = /* @__PURE__ */ defineComponent({
222
+ const _sfc_main$U = /* @__PURE__ */ defineComponent({
222
223
  __name: "CanvasControlButtons",
223
224
  props: {
224
225
  zoom: { default: 1 },
@@ -228,7 +229,7 @@ const _sfc_main$O = /* @__PURE__ */ defineComponent({
228
229
  setup(__props, { emit: __emit }) {
229
230
  const props = __props;
230
231
  const emit = __emit;
231
- const i18n = useI18n();
232
+ const i18n2 = useI18n();
232
233
  const experimentalNdvStore = useExperimentalNdvStore();
233
234
  const isResetZoomVisible = computed(() => props.zoom !== 1);
234
235
  function onResetZoom() {
@@ -247,16 +248,16 @@ const _sfc_main$O = /* @__PURE__ */ defineComponent({
247
248
  emit("tidy-up");
248
249
  }
249
250
  return (_ctx, _cache) => {
250
- const _component_N8nIconButton = _sfc_main$S;
251
+ const _component_N8nIconButton = _sfc_main$Y;
251
252
  const _component_N8nButton = N8nButton;
252
253
  const _component_N8nTooltip = N8nTooltip;
253
- return openBlock(), createBlock(unref(_sfc_main$P), {
254
+ return openBlock(), createBlock(unref(_sfc_main$V), {
254
255
  "show-zoom": false,
255
256
  "show-fit-view": false
256
257
  }, {
257
258
  default: withCtx(() => [
258
259
  createVNode(KeyboardShortcutTooltip, {
259
- label: unref(i18n).baseText("nodeView.zoomToFit"),
260
+ label: unref(i18n2).baseText("nodeView.zoomToFit"),
260
261
  shortcut: { keys: ["1"] }
261
262
  }, {
262
263
  default: withCtx(() => [
@@ -271,7 +272,7 @@ const _sfc_main$O = /* @__PURE__ */ defineComponent({
271
272
  _: 1
272
273
  }, 8, ["label"]),
273
274
  createVNode(KeyboardShortcutTooltip, {
274
- label: unref(i18n).baseText("nodeView.zoomIn"),
275
+ label: unref(i18n2).baseText("nodeView.zoomIn"),
275
276
  shortcut: { keys: ["+"] }
276
277
  }, {
277
278
  default: withCtx(() => [
@@ -286,7 +287,7 @@ const _sfc_main$O = /* @__PURE__ */ defineComponent({
286
287
  _: 1
287
288
  }, 8, ["label"]),
288
289
  createVNode(KeyboardShortcutTooltip, {
289
- label: unref(i18n).baseText("nodeView.zoomOut"),
290
+ label: unref(i18n2).baseText("nodeView.zoomOut"),
290
291
  shortcut: { keys: ["-"] }
291
292
  }, {
292
293
  default: withCtx(() => [
@@ -302,7 +303,7 @@ const _sfc_main$O = /* @__PURE__ */ defineComponent({
302
303
  }, 8, ["label"]),
303
304
  isResetZoomVisible.value ? (openBlock(), createBlock(KeyboardShortcutTooltip, {
304
305
  key: 0,
305
- label: unref(i18n).baseText("nodeView.resetZoom"),
306
+ label: unref(i18n2).baseText("nodeView.resetZoom"),
306
307
  shortcut: { keys: ["0"] }
307
308
  }, {
308
309
  default: withCtx(() => [
@@ -318,7 +319,7 @@ const _sfc_main$O = /* @__PURE__ */ defineComponent({
318
319
  }, 8, ["label"])) : createCommentVNode("", true),
319
320
  !_ctx.readOnly ? (openBlock(), createBlock(KeyboardShortcutTooltip, {
320
321
  key: 1,
321
- label: unref(i18n).baseText("nodeView.tidyUp"),
322
+ label: unref(i18n2).baseText("nodeView.tidyUp"),
322
323
  shortcut: { shiftKey: true, altKey: true, keys: ["T"] }
323
324
  }, {
324
325
  default: withCtx(() => [
@@ -341,7 +342,7 @@ const _sfc_main$O = /* @__PURE__ */ defineComponent({
341
342
  unref(experimentalNdvStore).isActive(props.zoom) ? (openBlock(), createBlock(_component_N8nTooltip, {
342
343
  key: 2,
343
344
  placement: "top",
344
- content: unref(i18n).baseText("nodeView.expandAllNodes")
345
+ content: unref(i18n2).baseText("nodeView.expandAllNodes")
345
346
  }, {
346
347
  default: withCtx(() => [
347
348
  createVNode(_component_N8nIconButton, {
@@ -356,7 +357,7 @@ const _sfc_main$O = /* @__PURE__ */ defineComponent({
356
357
  unref(experimentalNdvStore).isActive(props.zoom) ? (openBlock(), createBlock(_component_N8nTooltip, {
357
358
  key: 3,
358
359
  placement: "top",
359
- content: unref(i18n).baseText("nodeView.collapseAllNodes")
360
+ content: unref(i18n2).baseText("nodeView.collapseAllNodes")
360
361
  }, {
361
362
  default: withCtx(() => [
362
363
  createVNode(_component_N8nIconButton, {
@@ -375,13 +376,13 @@ const _sfc_main$O = /* @__PURE__ */ defineComponent({
375
376
  }
376
377
  });
377
378
  const iconButton = "_iconButton_fx9xi_123";
378
- const style0$z = {
379
+ const style0$D = {
379
380
  iconButton
380
381
  };
381
- const cssModules$z = {
382
- "$style": style0$z
382
+ const cssModules$D = {
383
+ "$style": style0$D
383
384
  };
384
- const __unplugin_components_1 = /* @__PURE__ */ _export_sfc$1(_sfc_main$O, [["__cssModules", cssModules$z]]);
385
+ const __unplugin_components_1 = /* @__PURE__ */ _export_sfc$1(_sfc_main$U, [["__cssModules", cssModules$D]]);
385
386
  const EDGE_PADDING_BOTTOM = 130;
386
387
  const EDGE_PADDING_X = 40;
387
388
  const EDGE_BORDER_RADIUS = 16;
@@ -438,7 +439,7 @@ function injectStrict(key, fallback) {
438
439
  function useCanvas() {
439
440
  return injectStrict(CanvasKey);
440
441
  }
441
- const _sfc_main$N = /* @__PURE__ */ defineComponent({
442
+ const _sfc_main$T = /* @__PURE__ */ defineComponent({
442
443
  __name: "CanvasConnectionLine",
443
444
  props: {
444
445
  sourceX: {},
@@ -505,14 +506,14 @@ const _sfc_main$N = /* @__PURE__ */ defineComponent({
505
506
  });
506
507
  const edge$1 = "_edge_cbk94_123";
507
508
  const visible = "_visible_cbk94_129";
508
- const style0$y = {
509
+ const style0$C = {
509
510
  edge: edge$1,
510
511
  visible
511
512
  };
512
- const cssModules$y = {
513
- "$style": style0$y
513
+ const cssModules$C = {
514
+ "$style": style0$C
514
515
  };
515
- const __unplugin_components_0$4 = /* @__PURE__ */ _export_sfc$1(_sfc_main$N, [["__cssModules", cssModules$y]]);
516
+ const __unplugin_components_0$4 = /* @__PURE__ */ _export_sfc$1(_sfc_main$T, [["__cssModules", cssModules$C]]);
516
517
  const position = ref([0, 0]);
517
518
  const isOpen = ref(false);
518
519
  const target = ref();
@@ -525,7 +526,7 @@ const useContextMenu = (onAction = () => {
525
526
  const nodeTypesStore = useNodeTypesStore();
526
527
  const workflowsStore = useWorkflowsStore();
527
528
  const sourceControlStore = useSourceControlStore();
528
- const i18n = useI18n();
529
+ const i18n2 = useI18n();
529
530
  const workflowPermissions = computed(
530
531
  () => getResourcePermissions(workflowsStore.workflow.scopes).workflow
531
532
  );
@@ -590,20 +591,20 @@ const useContextMenu = (onAction = () => {
590
591
  const i18nOptions = {
591
592
  adjustToNumber: nodes.length,
592
593
  interpolate: {
593
- subject: onlyStickies ? i18n.baseText("contextMenu.sticky", { adjustToNumber: nodes.length }) : i18n.baseText("contextMenu.node", { adjustToNumber: nodes.length })
594
+ subject: onlyStickies ? i18n2.baseText("contextMenu.sticky", { adjustToNumber: nodes.length }) : i18n2.baseText("contextMenu.node", { adjustToNumber: nodes.length })
594
595
  }
595
596
  };
596
597
  const selectionActions = [
597
598
  {
598
599
  id: "select_all",
599
600
  divided: true,
600
- label: i18n.baseText("contextMenu.selectAll"),
601
+ label: i18n2.baseText("contextMenu.selectAll"),
601
602
  shortcut: { metaKey: true, keys: ["A"] },
602
603
  disabled: nodes.length === workflowsStore.allNodes.length
603
604
  },
604
605
  {
605
606
  id: "deselect_all",
606
- label: i18n.baseText("contextMenu.deselectAll"),
607
+ label: i18n2.baseText("contextMenu.deselectAll"),
607
608
  disabled: nodes.length === 0
608
609
  }
609
610
  ];
@@ -611,7 +612,7 @@ const useContextMenu = (onAction = () => {
611
612
  {
612
613
  id: "extract_sub_workflow",
613
614
  divided: true,
614
- label: i18n.baseText("contextMenu.extract", { adjustToNumber: nodes.length }),
615
+ label: i18n2.baseText("contextMenu.extract", { adjustToNumber: nodes.length }),
615
616
  shortcut: { altKey: true, keys: ["X"] },
616
617
  disabled: isReadOnly.value
617
618
  }
@@ -620,7 +621,7 @@ const useContextMenu = (onAction = () => {
620
621
  {
621
622
  id: "tidy_up",
622
623
  divided: true,
623
- label: i18n.baseText(
624
+ label: i18n2.baseText(
624
625
  nodes.length < 2 ? "contextMenu.tidyUpWorkflow" : "contextMenu.tidyUpSelection"
625
626
  ),
626
627
  shortcut: { shiftKey: true, altKey: true, keys: ["T"] }
@@ -631,13 +632,13 @@ const useContextMenu = (onAction = () => {
631
632
  {
632
633
  id: "add_node",
633
634
  shortcut: { keys: ["Tab"] },
634
- label: i18n.baseText("contextMenu.addNode"),
635
+ label: i18n2.baseText("contextMenu.addNode"),
635
636
  disabled: isReadOnly.value
636
637
  },
637
638
  {
638
639
  id: "add_sticky",
639
640
  shortcut: { shiftKey: true, keys: ["s"] },
640
- label: i18n.baseText("contextMenu.addSticky"),
641
+ label: i18n2.baseText("contextMenu.addSticky"),
641
642
  disabled: isReadOnly.value
642
643
  },
643
644
  ...layoutActions,
@@ -647,24 +648,24 @@ const useContextMenu = (onAction = () => {
647
648
  const menuActions = [
648
649
  !onlyStickies && {
649
650
  id: "toggle_activation",
650
- label: nodes.every((node2) => node2.disabled) ? i18n.baseText("contextMenu.activate", i18nOptions) : i18n.baseText("contextMenu.deactivate", i18nOptions),
651
+ label: nodes.every((node2) => node2.disabled) ? i18n2.baseText("contextMenu.activate", i18nOptions) : i18n2.baseText("contextMenu.deactivate", i18nOptions),
651
652
  shortcut: { keys: ["D"] },
652
653
  disabled: isReadOnly.value
653
654
  },
654
655
  !onlyStickies && {
655
656
  id: "toggle_pin",
656
- label: nodes.every((node2) => hasPinData(node2)) ? i18n.baseText("contextMenu.unpin", i18nOptions) : i18n.baseText("contextMenu.pin", i18nOptions),
657
+ label: nodes.every((node2) => hasPinData(node2)) ? i18n2.baseText("contextMenu.unpin", i18nOptions) : i18n2.baseText("contextMenu.pin", i18nOptions),
657
658
  shortcut: { keys: ["p"] },
658
659
  disabled: isReadOnly.value || !nodes.every((n) => usePinnedData(n).canPinNode(true))
659
660
  },
660
661
  {
661
662
  id: "copy",
662
- label: i18n.baseText("contextMenu.copy", i18nOptions),
663
+ label: i18n2.baseText("contextMenu.copy", i18nOptions),
663
664
  shortcut: { metaKey: true, keys: ["C"] }
664
665
  },
665
666
  {
666
667
  id: "duplicate",
667
- label: i18n.baseText("contextMenu.duplicate", i18nOptions),
668
+ label: i18n2.baseText("contextMenu.duplicate", i18nOptions),
668
669
  shortcut: { metaKey: true, keys: ["D"] },
669
670
  disabled: isReadOnly.value || !nodes.every(canDuplicateNode)
670
671
  },
@@ -674,7 +675,7 @@ const useContextMenu = (onAction = () => {
674
675
  {
675
676
  id: "delete",
676
677
  divided: true,
677
- label: i18n.baseText("contextMenu.delete", i18nOptions),
678
+ label: i18n2.baseText("contextMenu.delete", i18nOptions),
678
679
  shortcut: { keys: ["Del"] },
679
680
  disabled: isReadOnly.value
680
681
  }
@@ -683,29 +684,29 @@ const useContextMenu = (onAction = () => {
683
684
  const singleNodeActions = onlyStickies ? [
684
685
  {
685
686
  id: "open",
686
- label: i18n.baseText("contextMenu.editSticky"),
687
+ label: i18n2.baseText("contextMenu.editSticky"),
687
688
  shortcut: { keys: ["↵"] },
688
689
  disabled: isReadOnly.value
689
690
  },
690
691
  {
691
692
  id: "change_color",
692
- label: i18n.baseText("contextMenu.changeColor"),
693
+ label: i18n2.baseText("contextMenu.changeColor"),
693
694
  disabled: isReadOnly.value
694
695
  }
695
696
  ] : [
696
697
  {
697
698
  id: "open",
698
- label: i18n.baseText("contextMenu.open"),
699
+ label: i18n2.baseText("contextMenu.open"),
699
700
  shortcut: { keys: ["↵"] }
700
701
  },
701
702
  {
702
703
  id: "execute",
703
- label: i18n.baseText("contextMenu.test"),
704
+ label: i18n2.baseText("contextMenu.test"),
704
705
  disabled: isReadOnly.value || !isExecutable$1(nodes[0])
705
706
  },
706
707
  {
707
708
  id: "rename",
708
- label: i18n.baseText("contextMenu.rename"),
709
+ label: i18n2.baseText("contextMenu.rename"),
709
710
  shortcut: { keys: ["Space"] },
710
711
  disabled: isReadOnly.value
711
712
  }
@@ -713,7 +714,7 @@ const useContextMenu = (onAction = () => {
713
714
  if (isNodeWithWorkflowSelector(nodes[0])) {
714
715
  singleNodeActions.push({
715
716
  id: "open_sub_workflow",
716
- label: i18n.baseText("contextMenu.openSubworkflow"),
717
+ label: i18n2.baseText("contextMenu.openSubworkflow"),
717
718
  shortcut: { shiftKey: true, metaKey: true, keys: ["O"] },
718
719
  disabled: !canOpenSubworkflow.value
719
720
  });
@@ -743,7 +744,7 @@ const useContextMenu = (onAction = () => {
743
744
  _dispatchAction
744
745
  };
745
746
  };
746
- const _sfc_main$M = /* @__PURE__ */ defineComponent({
747
+ const _sfc_main$S = /* @__PURE__ */ defineComponent({
747
748
  __name: "ContextMenu",
748
749
  emits: ["action"],
749
750
  setup(__props, { emit: __emit }) {
@@ -811,14 +812,14 @@ const _sfc_main$M = /* @__PURE__ */ defineComponent({
811
812
  });
812
813
  const contextMenu = "_contextMenu_12fz3_123";
813
814
  const activator = "_activator_12fz3_127";
814
- const style0$x = {
815
+ const style0$B = {
815
816
  contextMenu,
816
817
  activator
817
818
  };
818
- const cssModules$x = {
819
- "$style": style0$x
819
+ const cssModules$B = {
820
+ "$style": style0$B
820
821
  };
821
- const ContextMenu = /* @__PURE__ */ _export_sfc$1(_sfc_main$M, [["__cssModules", cssModules$x]]);
822
+ const ContextMenu = /* @__PURE__ */ _export_sfc$1(_sfc_main$S, [["__cssModules", cssModules$B]]);
822
823
  var graph;
823
824
  var hasRequiredGraph;
824
825
  function requireGraph() {
@@ -4903,11 +4904,11 @@ function selection_select$1(select2) {
4903
4904
  function array$1(x) {
4904
4905
  return x == null ? [] : Array.isArray(x) ? x : Array.from(x);
4905
4906
  }
4906
- function empty$1() {
4907
+ function empty$2() {
4907
4908
  return [];
4908
4909
  }
4909
4910
  function selectorAll$1(selector2) {
4910
- return selector2 == null ? empty$1 : function() {
4911
+ return selector2 == null ? empty$2 : function() {
4911
4912
  return this.querySelectorAll(selector2);
4912
4913
  };
4913
4914
  }
@@ -5545,7 +5546,7 @@ Selection$1.prototype = selection.prototype = {
5545
5546
  dispatch: selection_dispatch$1,
5546
5547
  [Symbol.iterator]: selection_iterator$1
5547
5548
  };
5548
- function select$1(selector2) {
5549
+ function select$2(selector2) {
5549
5550
  return typeof selector2 === "string" ? new Selection$1([[document.querySelector(selector2)]], [document.documentElement]) : new Selection$1([[selector2]], root$1);
5550
5551
  }
5551
5552
  function sourceEvent$1(event) {
@@ -5577,7 +5578,7 @@ function noevent$1(event) {
5577
5578
  event.stopImmediatePropagation();
5578
5579
  }
5579
5580
  function dragDisable(view) {
5580
- var root2 = view.document.documentElement, selection2 = select$1(view).on("dragstart.drag", noevent$1, nonpassivecapture$1);
5581
+ var root2 = view.document.documentElement, selection2 = select$2(view).on("dragstart.drag", noevent$1, nonpassivecapture$1);
5581
5582
  if ("onselectstart" in root2) {
5582
5583
  selection2.on("selectstart.drag", noevent$1, nonpassivecapture$1);
5583
5584
  } else {
@@ -5586,7 +5587,7 @@ function dragDisable(view) {
5586
5587
  }
5587
5588
  }
5588
5589
  function yesdrag$1(view, noclick) {
5589
- var root2 = view.document.documentElement, selection2 = select$1(view).on("dragstart.drag", null);
5590
+ var root2 = view.document.documentElement, selection2 = select$2(view).on("dragstart.drag", null);
5590
5591
  if (noclick) {
5591
5592
  selection2.on("click.drag", noevent$1, nonpassivecapture$1);
5592
5593
  setTimeout(function() {
@@ -7086,7 +7087,7 @@ function zoom() {
7086
7087
  return this;
7087
7088
  },
7088
7089
  emit: function(type) {
7089
- var d = select$1(this.that).datum();
7090
+ var d = select$2(this.that).datum();
7090
7091
  listeners.call(
7091
7092
  type,
7092
7093
  this.that,
@@ -7124,7 +7125,7 @@ function zoom() {
7124
7125
  }
7125
7126
  function mousedowned(event, ...args) {
7126
7127
  if (touchending || !filter2.apply(this, arguments)) return;
7127
- var currentTarget = event.currentTarget, g = gesture(this, args, true).event(event), v = select$1(event.view).on("mousemove.zoom", mousemoved, true).on("mouseup.zoom", mouseupped, true), p = pointer$1(event, currentTarget), x0 = event.clientX, y0 = event.clientY;
7128
+ var currentTarget = event.currentTarget, g = gesture(this, args, true).event(event), v = select$2(event.view).on("mousemove.zoom", mousemoved, true).on("mouseup.zoom", mouseupped, true), p = pointer$1(event, currentTarget), x0 = event.clientX, y0 = event.clientY;
7128
7129
  dragDisable(event.view);
7129
7130
  nopropagation$1(event);
7130
7131
  g.mouse = [p, this.__zoom.invert(p)];
@@ -7149,8 +7150,8 @@ function zoom() {
7149
7150
  if (!filter2.apply(this, arguments)) return;
7150
7151
  var t0 = this.__zoom, p0 = pointer$1(event.changedTouches ? event.changedTouches[0] : event, this), p1 = t0.invert(p0), k1 = t0.k * (event.shiftKey ? 0.5 : 2), t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent);
7151
7152
  noevent$2(event);
7152
- if (duration > 0) select$1(this).transition().duration(duration).call(schedule2, t1, p0, event);
7153
- else select$1(this).call(zoom2.transform, t1, p0, event);
7153
+ if (duration > 0) select$2(this).transition().duration(duration).call(schedule2, t1, p0, event);
7154
+ else select$2(this).call(zoom2.transform, t1, p0, event);
7154
7155
  }
7155
7156
  function touchstarted(event, ...args) {
7156
7157
  if (!filter2.apply(this, arguments)) return;
@@ -7210,7 +7211,7 @@ function zoom() {
7210
7211
  if (g.taps === 2) {
7211
7212
  t = pointer$1(t, this);
7212
7213
  if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) {
7213
- var p = select$1(this).on("dblclick.zoom");
7214
+ var p = select$2(this).on("dblclick.zoom");
7214
7215
  if (p) p.apply(this, arguments);
7215
7216
  }
7216
7217
  }
@@ -7326,14 +7327,14 @@ const _sfc_main$1$2 = /* @__PURE__ */ defineComponent({
7326
7327
  };
7327
7328
  }
7328
7329
  });
7329
- const _hoisted_1$e = ["width", "height", "viewBox", "aria-labelledby"];
7330
+ const _hoisted_1$g = ["width", "height", "viewBox", "aria-labelledby"];
7330
7331
  const _hoisted_2$a = ["id"];
7331
7332
  const _hoisted_3$6 = ["d", "fill", "stroke", "stroke-width"];
7332
7333
  const __default__$3 = {
7333
7334
  name: "MiniMap",
7334
7335
  compatConfig: { MODE: 3 }
7335
7336
  };
7336
- const _sfc_main$L = /* @__PURE__ */ defineComponent({
7337
+ const _sfc_main$R = /* @__PURE__ */ defineComponent({
7337
7338
  ...__default__$3,
7338
7339
  props: {
7339
7340
  nodeColor: { type: [String, Function], default: "#e2e2e2" },
@@ -7429,7 +7430,7 @@ const _sfc_main$L = /* @__PURE__ */ defineComponent({
7429
7430
  watchEffect(
7430
7431
  (onCleanup) => {
7431
7432
  if (el.value) {
7432
- const selection2 = select$1(el.value);
7433
+ const selection2 = select$2(el.value);
7433
7434
  const zoomHandler = (event) => {
7434
7435
  if (event.sourceEvent.type !== "wheel" || !d3Selection.value || !d3Zoom.value) {
7435
7436
  return;
@@ -7496,7 +7497,7 @@ const _sfc_main$L = /* @__PURE__ */ defineComponent({
7496
7497
  emit("nodeMouseleave", param);
7497
7498
  }
7498
7499
  return (_ctx, _cache) => {
7499
- return openBlock(), createBlock(unref(_sfc_main$R), {
7500
+ return openBlock(), createBlock(unref(_sfc_main$X), {
7500
7501
  position: _ctx.position,
7501
7502
  class: normalizeClass(["vue-flow__minimap", { pannable: _ctx.pannable, zoomable: _ctx.zoomable }])
7502
7503
  }, {
@@ -7547,16 +7548,16 @@ const _sfc_main$L = /* @__PURE__ */ defineComponent({
7547
7548
  "stroke-width": _ctx.maskStrokeWidth,
7548
7549
  "fill-rule": "evenodd"
7549
7550
  }, null, 8, _hoisted_3$6)
7550
- ], 8, _hoisted_1$e))
7551
+ ], 8, _hoisted_1$g))
7551
7552
  ]),
7552
7553
  _: 1
7553
7554
  }, 8, ["position", "class"]);
7554
7555
  };
7555
7556
  }
7556
7557
  });
7557
- const _hoisted_1$d = ["id", "x", "y", "width", "height", "patternTransform"];
7558
+ const _hoisted_1$f = ["id", "x", "y", "width", "height", "patternTransform"];
7558
7559
  const _hoisted_2$9 = ["d", "stroke-width"];
7559
- const _sfc_main$K = /* @__PURE__ */ defineComponent({
7560
+ const _sfc_main$Q = /* @__PURE__ */ defineComponent({
7560
7561
  __name: "CanvasBackgroundStripedPattern",
7561
7562
  props: {
7562
7563
  id: {},
@@ -7582,11 +7583,11 @@ const _sfc_main$K = /* @__PURE__ */ defineComponent({
7582
7583
  d: `M0 ${scaledGap.value / 2} H${scaledGap.value}`,
7583
7584
  "stroke-width": scaledGap.value / 2
7584
7585
  }, null, 8, _hoisted_2$9)
7585
- ], 8, _hoisted_1$d);
7586
+ ], 8, _hoisted_1$f);
7586
7587
  };
7587
7588
  }
7588
7589
  });
7589
- const CanvasBackgroundStripedPattern = /* @__PURE__ */ _export_sfc$1(_sfc_main$K, [["__scopeId", "data-v-efb5a8d2"]]);
7590
+ const CanvasBackgroundStripedPattern = /* @__PURE__ */ _export_sfc$1(_sfc_main$Q, [["__scopeId", "data-v-efb5a8d2"]]);
7590
7591
  var BackgroundVariant = /* @__PURE__ */ ((BackgroundVariant2) => {
7591
7592
  BackgroundVariant2["Lines"] = "lines";
7592
7593
  BackgroundVariant2["Dots"] = "dots";
@@ -7610,7 +7611,7 @@ const DefaultBgColors = {
7610
7611
  [BackgroundVariant.Dots]: "#81818a",
7611
7612
  [BackgroundVariant.Lines]: "#eee"
7612
7613
  };
7613
- const _hoisted_1$c = ["id", "x", "y", "width", "height", "patternTransform"];
7614
+ const _hoisted_1$e = ["id", "x", "y", "width", "height", "patternTransform"];
7614
7615
  const _hoisted_2$8 = {
7615
7616
  key: 2,
7616
7617
  height: "100",
@@ -7622,7 +7623,7 @@ const __default__$2 = {
7622
7623
  name: "Background",
7623
7624
  compatConfig: { MODE: 3 }
7624
7625
  };
7625
- const _sfc_main$J = /* @__PURE__ */ defineComponent({
7626
+ const _sfc_main$P = /* @__PURE__ */ defineComponent({
7626
7627
  ...__default__$2,
7627
7628
  props: {
7628
7629
  id: {},
@@ -7693,7 +7694,7 @@ const _sfc_main$J = /* @__PURE__ */ defineComponent({
7693
7694
  }, null, 8, _hoisted_3$5)
7694
7695
  ])) : createCommentVNode("", true)
7695
7696
  ])
7696
- ], 8, _hoisted_1$c)
7697
+ ], 8, _hoisted_1$e)
7697
7698
  ]),
7698
7699
  createBaseVNode("rect", {
7699
7700
  x: _ctx.x,
@@ -7707,7 +7708,7 @@ const _sfc_main$J = /* @__PURE__ */ defineComponent({
7707
7708
  };
7708
7709
  }
7709
7710
  });
7710
- const _sfc_main$I = /* @__PURE__ */ defineComponent({
7711
+ const _sfc_main$O = /* @__PURE__ */ defineComponent({
7711
7712
  __name: "CanvasBackground",
7712
7713
  props: {
7713
7714
  striped: { type: Boolean },
@@ -7715,7 +7716,7 @@ const _sfc_main$I = /* @__PURE__ */ defineComponent({
7715
7716
  },
7716
7717
  setup(__props) {
7717
7718
  return (_ctx, _cache) => {
7718
- return openBlock(), createBlock(unref(_sfc_main$J), {
7719
+ return openBlock(), createBlock(unref(_sfc_main$P), {
7719
7720
  "data-test-id": "canvas-background",
7720
7721
  "pattern-color": "#aaa",
7721
7722
  gap: unref(GRID_SIZE)
@@ -7737,8 +7738,8 @@ const _sfc_main$I = /* @__PURE__ */ defineComponent({
7737
7738
  };
7738
7739
  }
7739
7740
  });
7740
- const _hoisted_1$b = ["id"];
7741
- const _sfc_main$H = /* @__PURE__ */ defineComponent({
7741
+ const _hoisted_1$d = ["id"];
7742
+ const _sfc_main$N = /* @__PURE__ */ defineComponent({
7742
7743
  __name: "CanvasArrowHeadMarker",
7743
7744
  props: {
7744
7745
  id: {}
@@ -7765,13 +7766,13 @@ const _sfc_main$H = /* @__PURE__ */ defineComponent({
7765
7766
  stroke: "context-stroke",
7766
7767
  fill: "context-stroke"
7767
7768
  }, null, -1)
7768
- ]), 8, _hoisted_1$b)
7769
+ ]), 8, _hoisted_1$d)
7769
7770
  ])
7770
7771
  ]);
7771
7772
  };
7772
7773
  }
7773
7774
  });
7774
- const _sfc_main$G = /* @__PURE__ */ defineComponent({
7775
+ const _sfc_main$M = /* @__PURE__ */ defineComponent({
7775
7776
  __name: "CanvasEdgeToolbar",
7776
7777
  props: {
7777
7778
  type: {}
@@ -7781,7 +7782,7 @@ const _sfc_main$G = /* @__PURE__ */ defineComponent({
7781
7782
  const emit = __emit;
7782
7783
  const props = __props;
7783
7784
  const $style = useCssModule();
7784
- const i18n = useI18n();
7785
+ const i18n2 = useI18n();
7785
7786
  const classes = computed(() => ({
7786
7787
  [$style.canvasEdgeToolbar]: true
7787
7788
  }));
@@ -7793,7 +7794,7 @@ const _sfc_main$G = /* @__PURE__ */ defineComponent({
7793
7794
  emit("delete");
7794
7795
  }
7795
7796
  return (_ctx, _cache) => {
7796
- const _component_N8nIconButton = _sfc_main$S;
7797
+ const _component_N8nIconButton = _sfc_main$Y;
7797
7798
  return openBlock(), createElementBlock("div", {
7798
7799
  class: normalizeClass(classes.value),
7799
7800
  "data-test-id": "canvas-edge-toolbar"
@@ -7806,7 +7807,7 @@ const _sfc_main$G = /* @__PURE__ */ defineComponent({
7806
7807
  size: "small",
7807
7808
  "icon-size": "medium",
7808
7809
  icon: "plus",
7809
- title: unref(i18n).baseText("node.add"),
7810
+ title: unref(i18n2).baseText("node.add"),
7810
7811
  onClick: onAdd2
7811
7812
  }, null, 8, ["title"])) : createCommentVNode("", true),
7812
7813
  createVNode(_component_N8nIconButton, {
@@ -7816,7 +7817,7 @@ const _sfc_main$G = /* @__PURE__ */ defineComponent({
7816
7817
  size: "small",
7817
7818
  "icon-size": "medium",
7818
7819
  icon: "trash-2",
7819
- title: unref(i18n).baseText("node.delete"),
7820
+ title: unref(i18n2).baseText("node.delete"),
7820
7821
  onClick: onDelete
7821
7822
  }, null, 8, ["title"])
7822
7823
  ], 2);
@@ -7824,17 +7825,17 @@ const _sfc_main$G = /* @__PURE__ */ defineComponent({
7824
7825
  }
7825
7826
  });
7826
7827
  const canvasEdgeToolbar = "_canvasEdgeToolbar_uogmx_123";
7827
- const style0$w = {
7828
+ const style0$A = {
7828
7829
  canvasEdgeToolbar
7829
7830
  };
7830
- const cssModules$w = {
7831
- "$style": style0$w
7831
+ const cssModules$A = {
7832
+ "$style": style0$A
7832
7833
  };
7833
- const CanvasEdgeToolbar = /* @__PURE__ */ _export_sfc$1(_sfc_main$G, [["__cssModules", cssModules$w]]);
7834
- const _hoisted_1$a = ["data-source-node-name", "data-target-node-name"];
7834
+ const CanvasEdgeToolbar = /* @__PURE__ */ _export_sfc$1(_sfc_main$M, [["__cssModules", cssModules$A]]);
7835
+ const _hoisted_1$c = ["data-source-node-name", "data-target-node-name"];
7835
7836
  const _hoisted_2$7 = ["data-source-node-name", "data-target-node-name", "data-edge-status"];
7836
7837
  const delayedHoveredTimeout = 600;
7837
- const _sfc_main$F = /* @__PURE__ */ defineComponent({
7838
+ const _sfc_main$L = /* @__PURE__ */ defineComponent({
7838
7839
  __name: "CanvasEdge",
7839
7840
  props: {
7840
7841
  id: {},
@@ -7980,7 +7981,7 @@ const _sfc_main$F = /* @__PURE__ */ defineComponent({
7980
7981
  "interaction-width": 40
7981
7982
  }, null, 8, ["id", "class", "style", "path", "marker-end"]);
7982
7983
  }), 128))
7983
- ], 8, _hoisted_1$a),
7984
+ ], 8, _hoisted_1$c),
7984
7985
  createVNode(unref(_sfc_main$3$1), null, {
7985
7986
  default: withCtx(() => [
7986
7987
  createBaseVNode("div", {
@@ -8014,15 +8015,15 @@ const _sfc_main$F = /* @__PURE__ */ defineComponent({
8014
8015
  const edge = "_edge_fyzmo_123";
8015
8016
  const edgeLabelWrapper = "_edgeLabelWrapper_fyzmo_127";
8016
8017
  const edgeLabel = "_edgeLabel_fyzmo_127";
8017
- const style0$v = {
8018
+ const style0$z = {
8018
8019
  edge,
8019
8020
  edgeLabelWrapper,
8020
8021
  edgeLabel
8021
8022
  };
8022
- const cssModules$v = {
8023
- "$style": style0$v
8023
+ const cssModules$z = {
8024
+ "$style": style0$z
8024
8025
  };
8025
- const Edge = /* @__PURE__ */ _export_sfc$1(_sfc_main$F, [["__cssModules", cssModules$v]]);
8026
+ const Edge = /* @__PURE__ */ _export_sfc$1(_sfc_main$L, [["__cssModules", cssModules$z]]);
8026
8027
  function useCanvasNode() {
8027
8028
  const node2 = inject(CanvasNodeKey);
8028
8029
  const data = computed(
@@ -8098,9 +8099,9 @@ function useCanvasNode() {
8098
8099
  eventBus
8099
8100
  };
8100
8101
  }
8101
- const _hoisted_1$9 = ["title"];
8102
+ const _hoisted_1$b = ["title"];
8102
8103
  const _hoisted_2$6 = ["onClick"];
8103
- const _sfc_main$E = /* @__PURE__ */ defineComponent({
8104
+ const _sfc_main$K = /* @__PURE__ */ defineComponent({
8104
8105
  __name: "CanvasNodeStickyColorSelector",
8105
8106
  props: {
8106
8107
  "visible": { type: Boolean },
@@ -8109,7 +8110,7 @@ const _sfc_main$E = /* @__PURE__ */ defineComponent({
8109
8110
  emits: /* @__PURE__ */ mergeModels(["update"], ["update:visible"]),
8110
8111
  setup(__props, { emit: __emit }) {
8111
8112
  const emit = __emit;
8112
- const i18n = useI18n();
8113
+ const i18n2 = useI18n();
8113
8114
  const { render: render2, eventBus } = useCanvasNode();
8114
8115
  const renderOptions = computed(() => render2.value.options);
8115
8116
  const autoHideTimeout = ref(null);
@@ -8144,7 +8145,7 @@ const _sfc_main$E = /* @__PURE__ */ defineComponent({
8144
8145
  });
8145
8146
  return (_ctx, _cache) => {
8146
8147
  const _component_N8nIcon = N8nIcon;
8147
- const _component_N8nPopover = _sfc_main$T;
8148
+ const _component_N8nPopover = _sfc_main$Z;
8148
8149
  return openBlock(), createBlock(_component_N8nPopover, {
8149
8150
  visible: isPopoverVisible.value,
8150
8151
  "onUpdate:visible": _cache[0] || (_cache[0] = ($event) => isPopoverVisible.value = $event),
@@ -8161,10 +8162,10 @@ const _sfc_main$E = /* @__PURE__ */ defineComponent({
8161
8162
  createBaseVNode("div", {
8162
8163
  class: normalizeClass(_ctx.$style.option),
8163
8164
  "data-test-id": "change-sticky-color",
8164
- title: unref(i18n).baseText("node.changeColor")
8165
+ title: unref(i18n2).baseText("node.changeColor")
8165
8166
  }, [
8166
8167
  createVNode(_component_N8nIcon, { icon: "palette" })
8167
- ], 10, _hoisted_1$9)
8168
+ ], 10, _hoisted_1$b)
8168
8169
  ]),
8169
8170
  default: withCtx(() => [
8170
8171
  createBaseVNode("div", {
@@ -8194,7 +8195,7 @@ const content$1 = "_content_3lp7u_129";
8194
8195
  const color = "_color_3lp7u_136";
8195
8196
  const selected$2 = "_selected_3lp7u_148";
8196
8197
  const option = "_option_3lp7u_173";
8197
- const style0$u = {
8198
+ const style0$y = {
8198
8199
  popover,
8199
8200
  content: content$1,
8200
8201
  color,
@@ -8208,11 +8209,11 @@ const style0$u = {
8208
8209
  "sticky-color-7": "_sticky-color-7_3lp7u_169",
8209
8210
  option
8210
8211
  };
8211
- const cssModules$u = {
8212
- "$style": style0$u
8212
+ const cssModules$y = {
8213
+ "$style": style0$y
8213
8214
  };
8214
- const __unplugin_components_2$1 = /* @__PURE__ */ _export_sfc$1(_sfc_main$E, [["__cssModules", cssModules$u]]);
8215
- const _sfc_main$D = /* @__PURE__ */ defineComponent({
8215
+ const __unplugin_components_2$2 = /* @__PURE__ */ _export_sfc$1(_sfc_main$K, [["__cssModules", cssModules$y]]);
8216
+ const _sfc_main$J = /* @__PURE__ */ defineComponent({
8216
8217
  __name: "CanvasNodeToolbar",
8217
8218
  props: {
8218
8219
  readOnly: { type: Boolean }
@@ -8222,7 +8223,7 @@ const _sfc_main$D = /* @__PURE__ */ defineComponent({
8222
8223
  const emit = __emit;
8223
8224
  const props = __props;
8224
8225
  const $style = useCssModule();
8225
- const i18n = useI18n();
8226
+ const i18n2 = useI18n();
8226
8227
  const { isExecuting } = useCanvas();
8227
8228
  const { isDisabled, render: render2, name } = useCanvasNode();
8228
8229
  const workflowsStore = useWorkflowsStore();
@@ -8231,7 +8232,7 @@ const _sfc_main$D = /* @__PURE__ */ defineComponent({
8231
8232
  const node2 = computed(() => name.value ? workflowsStore.getNodeByName(name.value) : null);
8232
8233
  const isToolNode = computed(() => !!node2.value && nodeTypesStore.isToolNode(node2.value.type));
8233
8234
  const nodeDisabledTitle = computed(() => {
8234
- return isDisabled.value ? i18n.baseText("node.enable") : i18n.baseText("node.disable");
8235
+ return isDisabled.value ? i18n2.baseText("node.enable") : i18n2.baseText("node.disable");
8235
8236
  });
8236
8237
  const isStickyColorSelectorOpen = ref(false);
8237
8238
  const isHovered = ref(false);
@@ -8282,9 +8283,9 @@ const _sfc_main$D = /* @__PURE__ */ defineComponent({
8282
8283
  }
8283
8284
  }
8284
8285
  return (_ctx, _cache) => {
8285
- const _component_N8nIconButton = _sfc_main$S;
8286
+ const _component_N8nIconButton = _sfc_main$Y;
8286
8287
  const _component_N8nTooltip = N8nTooltip;
8287
- const _component_CanvasNodeStickyColorSelector = __unplugin_components_2$1;
8288
+ const _component_CanvasNodeStickyColorSelector = __unplugin_components_2$2;
8288
8289
  return openBlock(), createElementBlock("div", {
8289
8290
  "data-test-id": "canvas-node-toolbar",
8290
8291
  class: normalizeClass(classes.value),
@@ -8294,28 +8295,28 @@ const _sfc_main$D = /* @__PURE__ */ defineComponent({
8294
8295
  createBaseVNode("div", {
8295
8296
  class: normalizeClass(unref($style).canvasNodeToolbarItems)
8296
8297
  }, [
8297
- createVNode(_component_N8nTooltip, {
8298
+ isExecuteNodeVisible.value ? (openBlock(), createBlock(_component_N8nTooltip, {
8299
+ key: 0,
8298
8300
  placement: "top",
8299
8301
  disabled: !unref(isDisabled),
8300
- content: unref(i18n).baseText("ndv.execute.deactivated")
8302
+ content: unref(i18n2).baseText("ndv.execute.deactivated")
8301
8303
  }, {
8302
8304
  default: withCtx(() => [
8303
- isExecuteNodeVisible.value ? (openBlock(), createBlock(_component_N8nIconButton, {
8304
- key: 0,
8305
+ createVNode(_component_N8nIconButton, {
8305
8306
  "data-test-id": "execute-node-button",
8306
8307
  type: "tertiary",
8307
8308
  text: "",
8308
8309
  size: "small",
8309
8310
  icon: "play",
8310
8311
  disabled: unref(isExecuting) || unref(isDisabled),
8311
- title: unref(i18n).baseText("node.testStep"),
8312
+ title: unref(i18n2).baseText("node.testStep"),
8312
8313
  onClick: executeNode
8313
- }, null, 8, ["disabled", "title"])) : createCommentVNode("", true)
8314
+ }, null, 8, ["disabled", "title"])
8314
8315
  ]),
8315
8316
  _: 1
8316
- }, 8, ["disabled", "content"]),
8317
+ }, 8, ["disabled", "content"])) : createCommentVNode("", true),
8317
8318
  isDisableNodeVisible.value ? (openBlock(), createBlock(_component_N8nIconButton, {
8318
- key: 0,
8319
+ key: 1,
8319
8320
  "data-test-id": "disable-node-button",
8320
8321
  type: "tertiary",
8321
8322
  text: "",
@@ -8325,17 +8326,17 @@ const _sfc_main$D = /* @__PURE__ */ defineComponent({
8325
8326
  onClick: onToggleNode
8326
8327
  }, null, 8, ["title"])) : createCommentVNode("", true),
8327
8328
  isDeleteNodeVisible.value ? (openBlock(), createBlock(_component_N8nIconButton, {
8328
- key: 1,
8329
+ key: 2,
8329
8330
  "data-test-id": "delete-node-button",
8330
8331
  type: "tertiary",
8331
8332
  size: "small",
8332
8333
  text: "",
8333
8334
  icon: "trash-2",
8334
- title: unref(i18n).baseText("node.delete"),
8335
+ title: unref(i18n2).baseText("node.delete"),
8335
8336
  onClick: onDeleteNode
8336
8337
  }, null, 8, ["title"])) : createCommentVNode("", true),
8337
8338
  isFocusNodeVisible.value ? (openBlock(), createBlock(_component_N8nIconButton, {
8338
- key: 2,
8339
+ key: 3,
8339
8340
  type: "tertiary",
8340
8341
  size: "small",
8341
8342
  text: "",
@@ -8343,7 +8344,7 @@ const _sfc_main$D = /* @__PURE__ */ defineComponent({
8343
8344
  onClick: onFocusNode
8344
8345
  })) : createCommentVNode("", true),
8345
8346
  isStickyNoteChangeColorVisible.value ? (openBlock(), createBlock(_component_CanvasNodeStickyColorSelector, {
8346
- key: 3,
8347
+ key: 4,
8347
8348
  visible: isStickyColorSelectorOpen.value,
8348
8349
  "onUpdate:visible": _cache[0] || (_cache[0] = ($event) => isStickyColorSelectorOpen.value = $event),
8349
8350
  onUpdate: onChangeStickyColor
@@ -8364,24 +8365,24 @@ const _sfc_main$D = /* @__PURE__ */ defineComponent({
8364
8365
  const canvasNodeToolbar$1 = "_canvasNodeToolbar_104hp_123";
8365
8366
  const canvasNodeToolbarItems = "_canvasNodeToolbarItems_104hp_130";
8366
8367
  const forceVisible = "_forceVisible_104hp_141";
8367
- const style0$t = {
8368
+ const style0$x = {
8368
8369
  canvasNodeToolbar: canvasNodeToolbar$1,
8369
8370
  canvasNodeToolbarItems,
8370
8371
  forceVisible
8371
8372
  };
8372
- const cssModules$t = {
8373
- "$style": style0$t
8373
+ const cssModules$x = {
8374
+ "$style": style0$x
8374
8375
  };
8375
- const CanvasNodeToolbar = /* @__PURE__ */ _export_sfc$1(_sfc_main$D, [["__cssModules", cssModules$t]]);
8376
- const _hoisted_1$8 = { key: 1 };
8376
+ const CanvasNodeToolbar = /* @__PURE__ */ _export_sfc$1(_sfc_main$J, [["__cssModules", cssModules$x]]);
8377
+ const _hoisted_1$a = { key: 1 };
8377
8378
  const _hoisted_2$5 = ["textContent"];
8378
8379
  const _hoisted_3$4 = { key: 2 };
8379
8380
  const _hoisted_4$3 = { key: 5 };
8380
- const _sfc_main$C = /* @__PURE__ */ defineComponent({
8381
+ const _sfc_main$I = /* @__PURE__ */ defineComponent({
8381
8382
  __name: "CanvasNodeStatusIcons",
8382
8383
  setup(__props) {
8383
8384
  const nodeHelpers = useNodeHelpers();
8384
- const i18n = useI18n();
8385
+ const i18n2 = useI18n();
8385
8386
  const {
8386
8387
  hasPinnedData,
8387
8388
  issues: issues2,
@@ -8417,7 +8418,7 @@ const _sfc_main$C = /* @__PURE__ */ defineComponent({
8417
8418
  }, {
8418
8419
  content: withCtx(() => [
8419
8420
  createVNode(TitledList, {
8420
- title: `${unref(i18n).baseText("node.issues")}:`,
8421
+ title: `${unref(i18n2).baseText("node.issues")}:`,
8421
8422
  items: unref(issues2)
8422
8423
  }, null, 8, ["title", "items"])
8423
8424
  ]),
@@ -8426,7 +8427,7 @@ const _sfc_main$C = /* @__PURE__ */ defineComponent({
8426
8427
  ]),
8427
8428
  _: 1
8428
8429
  })
8429
- ], 2)) : unref(executionWaiting) || unref(executionStatus) === "waiting" ? (openBlock(), createElementBlock("div", _hoisted_1$8, [
8430
+ ], 2)) : unref(executionWaiting) || unref(executionStatus) === "waiting" ? (openBlock(), createElementBlock("div", _hoisted_1$a, [
8430
8431
  createBaseVNode("div", {
8431
8432
  class: normalizeClass([_ctx.$style.status, _ctx.$style.waiting])
8432
8433
  }, [
@@ -8471,7 +8472,7 @@ const _sfc_main$C = /* @__PURE__ */ defineComponent({
8471
8472
  placement: "bottom"
8472
8473
  }, {
8473
8474
  content: withCtx(() => [
8474
- createTextVNode(toDisplayString(unref(i18n).baseText(
8475
+ createTextVNode(toDisplayString(unref(i18n2).baseText(
8475
8476
  dirtiness.value === unref(CanvasNodeDirtiness).PARAMETERS_UPDATED ? "node.dirty" : "node.subjectToChange"
8476
8477
  )), 1)
8477
8478
  ]),
@@ -8504,16 +8505,16 @@ const _sfc_main$C = /* @__PURE__ */ defineComponent({
8504
8505
  }
8505
8506
  });
8506
8507
  const status = "_status_93vv6_123";
8507
- const runData = "_runData_93vv6_130";
8508
+ const runData$1 = "_runData_93vv6_130";
8508
8509
  const waiting$1 = "_waiting_93vv6_134";
8509
8510
  const pinnedData = "_pinnedData_93vv6_138";
8510
8511
  const running$1 = "_running_93vv6_142";
8511
8512
  const issues = "_issues_93vv6_165";
8512
8513
  const count = "_count_93vv6_170";
8513
8514
  const warning$2 = "_warning_93vv6_174";
8514
- const style0$s = {
8515
+ const style0$w = {
8515
8516
  status,
8516
- runData,
8517
+ runData: runData$1,
8517
8518
  waiting: waiting$1,
8518
8519
  pinnedData,
8519
8520
  running: running$1,
@@ -8522,11 +8523,11 @@ const style0$s = {
8522
8523
  count,
8523
8524
  warning: warning$2
8524
8525
  };
8525
- const cssModules$s = {
8526
- "$style": style0$s
8526
+ const cssModules$w = {
8527
+ "$style": style0$w
8527
8528
  };
8528
- const __unplugin_components_3 = /* @__PURE__ */ _export_sfc$1(_sfc_main$C, [["__cssModules", cssModules$s]]);
8529
- const _sfc_main$B = /* @__PURE__ */ defineComponent({
8529
+ const __unplugin_components_3 = /* @__PURE__ */ _export_sfc$1(_sfc_main$I, [["__cssModules", cssModules$w]]);
8530
+ const _sfc_main$H = /* @__PURE__ */ defineComponent({
8530
8531
  __name: "CanvasNodeDisabledStrikeThrough",
8531
8532
  setup(__props) {
8532
8533
  const $style = useCssModule();
@@ -8548,16 +8549,16 @@ const _sfc_main$B = /* @__PURE__ */ defineComponent({
8548
8549
  const disabledStrikeThrough = "_disabledStrikeThrough_nl2g7_123";
8549
8550
  const success$2 = "_success_nl2g7_132";
8550
8551
  const warning$1 = "_warning_nl2g7_136";
8551
- const style0$r = {
8552
+ const style0$v = {
8552
8553
  disabledStrikeThrough,
8553
8554
  success: success$2,
8554
8555
  warning: warning$1
8555
8556
  };
8556
- const cssModules$r = {
8557
- "$style": style0$r
8557
+ const cssModules$v = {
8558
+ "$style": style0$v
8558
8559
  };
8559
- const __unplugin_components_2 = /* @__PURE__ */ _export_sfc$1(_sfc_main$B, [["__cssModules", cssModules$r]]);
8560
- const _sfc_main$A = /* @__PURE__ */ defineComponent({
8560
+ const __unplugin_components_2$1 = /* @__PURE__ */ _export_sfc$1(_sfc_main$H, [["__cssModules", cssModules$v]]);
8561
+ const _sfc_main$G = /* @__PURE__ */ defineComponent({
8561
8562
  __name: "CanvasNodeTooltip",
8562
8563
  props: {
8563
8564
  visible: { type: Boolean }
@@ -8596,14 +8597,14 @@ const _sfc_main$A = /* @__PURE__ */ defineComponent({
8596
8597
  });
8597
8598
  const tooltipTrigger = "_tooltipTrigger_dauyi_123";
8598
8599
  const popper = "_popper_dauyi_131";
8599
- const style0$q = {
8600
+ const style0$u = {
8600
8601
  tooltipTrigger,
8601
8602
  popper
8602
8603
  };
8603
- const cssModules$q = {
8604
- "$style": style0$q
8604
+ const cssModules$u = {
8605
+ "$style": style0$u
8605
8606
  };
8606
- const __unplugin_components_0$3 = /* @__PURE__ */ _export_sfc$1(_sfc_main$A, [["__cssModules", cssModules$q]]);
8607
+ const __unplugin_components_0$3 = /* @__PURE__ */ _export_sfc$1(_sfc_main$G, [["__cssModules", cssModules$u]]);
8607
8608
  function useNodeConnections({
8608
8609
  inputs: inputs2,
8609
8610
  outputs,
@@ -8652,151 +8653,1156 @@ function useNodeConnections({
8652
8653
  isValidConnection
8653
8654
  };
8654
8655
  }
8655
- const _sfc_main$z = /* @__PURE__ */ defineComponent({
8656
- __name: "NodeTitle",
8656
+ const _hoisted_1$9 = { key: 0 };
8657
+ const _sfc_main$F = /* @__PURE__ */ defineComponent({
8658
+ __name: "InputNodeSelect",
8657
8659
  props: {
8658
- modelValue: { default: "" },
8659
- nodeType: { default: void 0 },
8660
- readOnly: { type: Boolean, default: false }
8660
+ nodes: {},
8661
+ workflow: {},
8662
+ modelValue: {}
8661
8663
  },
8662
8664
  emits: ["update:model-value"],
8663
8665
  setup(__props, { emit: __emit }) {
8666
+ const props = __props;
8664
8667
  const emit = __emit;
8665
- function onRename(value) {
8666
- if (value.trim() !== "") {
8667
- emit("update:model-value", value.trim());
8668
+ const i18n2 = useI18n();
8669
+ const workflowsStore = useWorkflowsStore();
8670
+ const nodeTypesStore = useNodeTypesStore();
8671
+ const ndvStore = useNDVStore();
8672
+ const selectedInputNode = computed(() => workflowsStore.getNodeByName(props.modelValue ?? ""));
8673
+ const selectedInputNodeType = computed(() => {
8674
+ const node2 = selectedInputNode.value;
8675
+ if (!node2) return null;
8676
+ return nodeTypesStore.getNodeType(node2.type, node2.typeVersion);
8677
+ });
8678
+ const inputNodes = computed(
8679
+ () => props.nodes?.map((node2) => {
8680
+ const fullNode = workflowsStore.getNodeByName(node2.name);
8681
+ if (!fullNode) return null;
8682
+ return {
8683
+ node: fullNode,
8684
+ type: nodeTypesStore.getNodeType(fullNode.type, fullNode.typeVersion),
8685
+ depth: node2.depth
8686
+ };
8687
+ }).filter(isPresent) ?? []
8688
+ );
8689
+ const activeNode = computed(() => ndvStore.activeNode);
8690
+ const activeNodeType = computed(() => {
8691
+ const node2 = activeNode.value;
8692
+ if (!node2) return null;
8693
+ return nodeTypesStore.getNodeType(node2.type, node2.typeVersion);
8694
+ });
8695
+ const isMultiInputNode = computed(() => {
8696
+ const nodeType = activeNodeType.value;
8697
+ return nodeType !== null && nodeType.inputs.length > 1;
8698
+ });
8699
+ const connectedTo = (nodeName) => {
8700
+ const connections2 = ndvStore.ndvNodeInputNumber[nodeName];
8701
+ if (!connections2) return "";
8702
+ if (connections2.length === 1) {
8703
+ return `Input ${ndvStore.ndvNodeInputNumber[nodeName]}`;
8668
8704
  }
8705
+ return `Inputs ${ndvStore.ndvNodeInputNumber[nodeName].join(", ")}`;
8706
+ };
8707
+ function getMultipleNodesText(nodeName) {
8708
+ if (!nodeName || !isMultiInputNode.value || !activeNode.value || !activeNodeType.value?.inputNames)
8709
+ return "";
8710
+ const activeNodeConnections = props.workflow.connectionsByDestinationNode[activeNode.value.name].main || [];
8711
+ const connectedInputIndexes = activeNodeConnections.reduce((acc, node2, index) => {
8712
+ if (node2?.[0] && node2[0].node === nodeName) return [...acc, index];
8713
+ return acc;
8714
+ }, []);
8715
+ const connectedInputs = connectedInputIndexes.map(
8716
+ (inputIndex) => activeNodeType.value?.inputNames?.[inputIndex]
8717
+ );
8718
+ if (connectedInputs.length === 0) return "";
8719
+ return `(${connectedInputs.join(" & ")})`;
8720
+ }
8721
+ function title2(nodeName, length = 30) {
8722
+ return truncate(nodeName, length);
8723
+ }
8724
+ function subtitle2(nodeName, depth) {
8725
+ const multipleNodesText = getMultipleNodesText(nodeName);
8726
+ if (multipleNodesText) return multipleNodesText;
8727
+ return i18n2.baseText("ndv.input.nodeDistance", { adjustToNumber: depth });
8728
+ }
8729
+ function onInputNodeChange(value) {
8730
+ emit("update:model-value", value);
8669
8731
  }
8670
- const wrapperRef = useTemplateRef("wrapperRef");
8671
- const { width } = useElementSize(wrapperRef);
8672
8732
  return (_ctx, _cache) => {
8673
- return openBlock(), createElementBlock("span", {
8674
- class: normalizeClass(_ctx.$style.container),
8675
- "data-test-id": "node-title-container"
8733
+ const _component_n8n_option = _sfc_main$_;
8734
+ const _component_n8n_select = N8nSelect;
8735
+ return openBlock(), createBlock(_component_n8n_select, {
8736
+ "model-value": _ctx.modelValue,
8737
+ "no-data-text": unref(i18n2).baseText("ndv.input.noNodesFound"),
8738
+ placeholder: unref(i18n2).baseText("ndv.input.parentNodes"),
8739
+ class: normalizeClass(_ctx.$style.select),
8740
+ teleported: "",
8741
+ size: "small",
8742
+ filterable: "",
8743
+ "data-test-id": "ndv-input-select",
8744
+ "onUpdate:modelValue": onInputNodeChange
8745
+ }, {
8746
+ prefix: withCtx(() => [
8747
+ createVNode(_sfc_main$$, {
8748
+ disabled: selectedInputNode.value?.disabled,
8749
+ "node-type": selectedInputNodeType.value,
8750
+ size: 14,
8751
+ shrink: false
8752
+ }, null, 8, ["disabled", "node-type"])
8753
+ ]),
8754
+ default: withCtx(() => [
8755
+ (openBlock(true), createElementBlock(Fragment, null, renderList(inputNodes.value, ({ node: node2, type, depth }) => {
8756
+ return openBlock(), createBlock(_component_n8n_option, {
8757
+ key: node2.name,
8758
+ value: node2.name,
8759
+ class: normalizeClass([_ctx.$style.node, { [_ctx.$style.disabled]: node2.disabled }]),
8760
+ label: `${title2(node2.name)} ${getMultipleNodesText(node2.name)}`,
8761
+ "data-test-id": "ndv-input-option"
8762
+ }, {
8763
+ default: withCtx(() => [
8764
+ createVNode(_sfc_main$$, {
8765
+ disabled: node2.disabled,
8766
+ "node-type": type,
8767
+ size: 14,
8768
+ shrink: false,
8769
+ class: normalizeClass(_ctx.$style.icon)
8770
+ }, null, 8, ["disabled", "node-type", "class"]),
8771
+ createBaseVNode("span", {
8772
+ class: normalizeClass(_ctx.$style.title)
8773
+ }, [
8774
+ createTextVNode(toDisplayString(title2(node2.name)) + " ", 1),
8775
+ node2.disabled ? (openBlock(), createElementBlock("span", _hoisted_1$9, "(" + toDisplayString(unref(i18n2).baseText("node.disabled")) + ")", 1)) : createCommentVNode("", true)
8776
+ ], 2),
8777
+ createBaseVNode("span", {
8778
+ class: normalizeClass(_ctx.$style.subtitle)
8779
+ }, toDisplayString(connectedTo(node2.name) ? connectedTo(node2.name) : subtitle2(node2.name, depth)), 3)
8780
+ ]),
8781
+ _: 2
8782
+ }, 1032, ["value", "class", "label"]);
8783
+ }), 128))
8784
+ ]),
8785
+ _: 1
8786
+ }, 8, ["model-value", "no-data-text", "placeholder", "class"]);
8787
+ };
8788
+ }
8789
+ });
8790
+ const select$1 = "_select_wv0ev_123";
8791
+ const node$1 = "_node_wv0ev_132";
8792
+ const icon$1 = "_icon_wv0ev_140";
8793
+ const title$2 = "_title_wv0ev_144";
8794
+ const disabled$2 = "_disabled_wv0ev_153";
8795
+ const subtitle$1 = "_subtitle_wv0ev_157";
8796
+ const style0$t = {
8797
+ select: select$1,
8798
+ node: node$1,
8799
+ icon: icon$1,
8800
+ title: title$2,
8801
+ disabled: disabled$2,
8802
+ subtitle: subtitle$1
8803
+ };
8804
+ const cssModules$t = {
8805
+ "$style": style0$t
8806
+ };
8807
+ const InputNodeSelect = /* @__PURE__ */ _export_sfc$1(_sfc_main$F, [["__cssModules", cssModules$t]]);
8808
+ const _sfc_main$E = /* @__PURE__ */ defineComponent({
8809
+ __name: "NDVEmptyState",
8810
+ props: {
8811
+ title: {}
8812
+ },
8813
+ setup(__props) {
8814
+ return (_ctx, _cache) => {
8815
+ return openBlock(), createElementBlock("article", {
8816
+ class: normalizeClass(_ctx.$style.empty)
8676
8817
  }, [
8677
- createBaseVNode("span", {
8678
- class: normalizeClass(_ctx.$style.iconWrapper)
8679
- }, [
8680
- createVNode(_sfc_main$U, {
8681
- "node-type": _ctx.nodeType,
8682
- size: 18,
8683
- "show-tooltip": true,
8684
- "tooltip-position": "left"
8685
- }, null, 8, ["node-type"])
8686
- ], 2),
8687
- createBaseVNode("div", {
8688
- ref_key: "wrapperRef",
8689
- ref: wrapperRef,
8690
- class: normalizeClass(_ctx.$style.textWrapper)
8818
+ renderSlot(_ctx.$slots, "icon"),
8819
+ createBaseVNode("h1", {
8820
+ class: normalizeClass(_ctx.$style.title)
8821
+ }, toDisplayString(_ctx.title), 3),
8822
+ createBaseVNode("p", {
8823
+ class: normalizeClass(_ctx.$style.description)
8691
8824
  }, [
8692
- createVNode(unref(InlineRename), {
8693
- "max-width": unref(width),
8694
- "model-value": _ctx.modelValue,
8695
- "read-only": _ctx.readOnly,
8696
- "onUpdate:modelValue": onRename
8697
- }, null, 8, ["max-width", "model-value", "read-only"])
8825
+ renderSlot(_ctx.$slots, "description")
8698
8826
  ], 2)
8699
8827
  ], 2);
8700
8828
  };
8701
8829
  }
8702
8830
  });
8703
- const container$4 = "_container_178ym_123";
8704
- const textWrapper = "_textWrapper_178ym_132";
8705
- const iconWrapper = "_iconWrapper_178ym_137";
8706
- const style0$p = {
8707
- container: container$4,
8708
- textWrapper,
8709
- iconWrapper
8831
+ const empty$1 = "_empty_1x72k_2";
8832
+ const title$1 = "_title_1x72k_13";
8833
+ const description$1 = "_description_1x72k_20";
8834
+ const style0$s = {
8835
+ empty: empty$1,
8836
+ title: title$1,
8837
+ description: description$1
8710
8838
  };
8711
- const cssModules$p = {
8712
- "$style": style0$p
8839
+ const cssModules$s = {
8840
+ "$style": style0$s
8713
8841
  };
8714
- const NodeTitle = /* @__PURE__ */ _export_sfc$1(_sfc_main$z, [["__cssModules", cssModules$p]]);
8715
- const useNodeDocsUrl = ({
8716
- nodeType: nodeTypeRef
8717
- }) => {
8718
- const packageName = computed(() => toValue(nodeTypeRef)?.name.split(".")[0] ?? "");
8719
- const isCommunityNode = computed(() => {
8720
- const nodeType = toValue(nodeTypeRef);
8721
- if (nodeType) {
8722
- return isCommunityPackageName(nodeType.name);
8723
- }
8724
- return false;
8725
- });
8726
- const docsUrl = computed(() => {
8727
- const nodeType = toValue(nodeTypeRef);
8728
- if (!nodeType) {
8729
- return "";
8730
- }
8731
- if (nodeType.documentationUrl?.startsWith("http")) {
8732
- return nodeType.documentationUrl;
8733
- }
8734
- const utmParams = new URLSearchParams({
8735
- utm_source: "n8n_app",
8736
- utm_medium: "node_settings_modal-credential_link",
8737
- utm_campaign: nodeType.name
8738
- });
8739
- const primaryDocUrl = nodeType.codex?.resources?.primaryDocumentation?.[0]?.url;
8740
- if (primaryDocUrl) {
8741
- return `${primaryDocUrl}?${utmParams.toString()}`;
8742
- }
8743
- if (isCommunityNode.value) {
8744
- return `${NPM_PACKAGE_DOCS_BASE_URL}${packageName.value}`;
8745
- }
8746
- return `${BUILTIN_NODES_DOCS_URL}?${utmParams.toString()}`;
8747
- });
8748
- return { docsUrl };
8842
+ const __unplugin_components_2 = /* @__PURE__ */ _export_sfc$1(_sfc_main$E, [["__cssModules", cssModules$s]]);
8843
+ const _sfc_main$D = {};
8844
+ const _hoisted_1$8 = {
8845
+ width: "112",
8846
+ height: "80",
8847
+ viewBox: "0 0 112 80",
8848
+ fill: "none",
8849
+ xmlns: "http://www.w3.org/2000/svg",
8850
+ "xmlns:xlink": "http://www.w3.org/1999/xlink"
8749
8851
  };
8750
- const _sfc_main$y = /* @__PURE__ */ defineComponent({
8751
- __name: "NodeSettingsTabs",
8852
+ function _sfc_render(_ctx, _cache) {
8853
+ return openBlock(), createElementBlock("svg", _hoisted_1$8, _cache[0] || (_cache[0] = [
8854
+ createStaticVNode('<mask id="mask0_489_46042" style="mask-type:alpha;" maskUnits="userSpaceOnUse" x="0" y="0" width="112" height="80"><rect width="112" height="80" fill="url(#paint0_linear_489_46042)"></rect></mask><g mask="url(#mask0_489_46042)"><rect x="-0.5" width="112" height="80" fill="url(#pattern0)" fill-opacity="0.6"></rect></g><defs><pattern id="pattern0" patternContentUnits="objectBoundingBox" width="1" height="1"><use xlink:href="#image0_489_46042" transform="scale(0.00357143 0.005)"></use></pattern><linearGradient id="paint0_linear_489_46042" x1="90.5" y1="40.4494" x2="112.5" y2="40.4494" gradientUnits="userSpaceOnUse"><stop></stop><stop offset="1" stop-color="white" stop-opacity="0"></stop></linearGradient><image id="image0_489_46042" width="280" height="200" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARgAAADICAYAAAAzx/4XAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAABhdSURBVHgB7d0JcFTVngbw/72d4IYa0Ie4IK2llgpodNwtB9AaxVILF7ZxynkgWupojaRwASXQGEBqEAI8LXfBpZQS9IFabjMFkXFfijCKyqjQqIiKShCUpdP3vvPdpXP7pjtk6dPdSX+/qlPpJX07UfrL/yz3XEOIPJNiswaZkbKBtkiluC0qRB1gCJW86ntmjzYM81YvWIhyhgFTwlCxGJGyBcJKhTQxhUrSpJraKSpcVgjDhTQqEyo5U+6prbVExmV6TnWT6ixbnuxmSZ262xCLVTUIUTsxYEoMKpdM4aKCZV5ZUmIMFMoljsGUkMk1c9RArjE39HBchcuYadVVdUKUYwyYEjEhVhstj8gqdbMi8HA8kpTBqmqJC5EGHOQtEeVlMkXSw6WB4UK6cQymBKB6UYMso4OPWYZMrWG4kGasYEpAmWGHB3Xj0ydVzRUizRgwJcAwjaFpD9gyVYjygAHTxTndo9Bium2WLBWiPGDAdHFlkWT4/KK6uVzrQnnCgOniDNuIBu/blr1aiPKEAdPF2Xba1DQeYfVCecOAISJtGDBEpA0Dhoi0YcAQkTYMGCLShgFDRNowYIhIGwYMEWnDgCEibRgwRKQNA4aItGHAEJE2DBgi0oYBQ0TaMGCISBsGDBFpw4AhIm0YMESkDQOGiLRhwBCRNgwYItKGAUNE2jBgiEgbBgwRacOAISJtGDBEpA0Dhoi0YcAQkTYMGCLShgFDRNowYIhIGwYMEWnDgCEibRgwRKQNA4aItGHAEJE2DBgi0oYBQ0TaMGCISBsGDBFpw4AhIm0YMESkDQOGiLRhwBCRNgwYItKGAUNE2jBgiEgbBgwRacOAISJtGDBEpA0Dhoi0YcAQkTYMGCLShgFDRNowYIhIGwYMEWnDgCEibRgwRKQNA4aItGHAEJE2DBgi0oYBQ0TaMGCISBsGDBFpw4AhIm0YMESkDQOGiLRhwBCRNgwYItKGAUNE2hhCXc7ll19eUVZWNto0zYFGJDLIamys8J+LRMrilpWst217WSKRqFu6dGlciDRhwHQho0aNilqWVavC4/I2vGyhCpqpDBrSISLUJYwcOfJWFS6vq5vHS9tURiKRcf3795c1a9a8JUQ5xAqmk0N3qLy8/O/q5iDpIMMwlu7evXuMqmYahCgHOMjbyalwWSE5CBdA18o7HlFOsIvUiY0YMaJWfWnLeEtr9FbdpQrVXXpDiDqIXaROavjw4aPVlwWiiapmBi9ZsqROiDqAXaTOa4popMZjtIUXlQ4GTCfkVS9R0SvqvQ9RuzFgOqe/Sn7k632oi+IYTCfjTUtvkTxJJBI9OG1N7cUKppMpKyurlDzK9/tR18KA6Xzy+oG3LCsqRO3EgOl8KiSPTNOMClE7MWCISJsyIUcsVlvRGJEVhm3Nq5k8fqEUr3wPuHKAl9qNFYwnFqtqMND9MMwF1TW16yfXzLl1Qqw2KkXGtu245Fe9ELUTAybAaPprHbXFmFsekfXV02oX3BX7r6KZSUkmk3WSR42NjQwYajcGTIBl2aubPWjL6EikfJWqalZU3zN7tBSYtyalTvJAVUt1XANDHcExmDTofmRdezhIdZ8GqaCZYog9d3fSWDYzVhWXwnhScrRFQ0sMw3hSiDqAFUyAZUi8Fd9W8O5TIpFYqr7ERa/44sWLFwpRBzBggiJm28YbCtR9QrfFsqwq0WuqEHUQz0UKwFR1MiIdOc8nns/u01VXXTXXNM1bJcdUeM174YUXxglRBzFgQlQ1goDp+GpZQxYmGxPzZsTu0DYL4534iC0uc9lNq1ddo1OEKAfYRQoYpyoYI1djG6r7ZEbKF+CYogm6Smo8ZjA265YcwHFwPCHKkZKrYPCB31cSUTEjlaYtUSNi9rVtqTTcqiUqOWKLzCtLql5XrCov07zDhg2LqYBo9y53akq6asmSJXOFKIe6ZMDEYvdGG6W80jKNioiYJ6vfUs38qDBxA0T7yYJqNqpq+qSqvH9YceG1xsZGBE1bNorihddIm04ZMMEqJILAMFWI2E5wYCwiKoUTV0E2Zlp1VZ0UEIImmUwOUjeHRiKRSnU76j9nlpU1WI2NdapieUuF0UIupCOdijZgUIXslkhFhq5MVPRWIQ3tOb4KlnrVJboiVrjFdxlNmjo7ZphmqutkW9bUaVPGx4QoDwq6ktfvyhimEVV/W/uiKyNuFVKRVC110SbEoJ2zNGywMZ1sSL2dtLdahlFvGtKgwqEe4aCmqqNqqnp9Ww6Y7/EWos5Ca8Bk6cpExa1CoipEdJVQ6Ko0uCFibbAMM94tIvWSkPieQgAho6aqpbUKNd5C1Bl0OGCaDaiaUpHelSlv+mZbcimuWr1t2RvUoGbcNiSOKkQ91pCDSiIuex7LccZbVLjUhR5vT2bm9r8MUZHYY8CgCqmQnRVZujKpKiTVnclTV0b0QlBFsz2ZZbzFCH0N3w4dIo3Riu/Z0+NERScVMM5Je1nWhiRlb21dGcGHWQWHWLJahVVDa7syOjlVkZn5Nw6Nt4S/yQg0LGJECJ+n2nGqdVPtO9XeUW2lagnZw4+R4bYdeE8GDRW9VMCURcoX2PhA5HhA1WvNujLFNtsSZBjetg12+mfYErtq+uTx86QpQFIvkab/ZOgTnqlajWpniBssQY2qrVJtumornMOK9BQ3jE5XrY9q3VXbodo61d5U7TPVtgeO4QcNQ4aKWipgsNmS+qvdnnNaAl2ZtAHVhmIOkZbYKmCM9HCJJ3bvGjtz2sT/FffDv7e4/+3wTegl7lJtt3f/JHHD5VzVjH333Ve6deuGZfjYHU62b99eZts2gmS+ajHVvlZtjGqjVNsnw4+DkxkfVW2OapuF1Qx1IoExmBY3W1LPFV9XRhcracUjpulUMKq8WP3Lr1uGPzx/Gk6CPFu1gaqdrNrB4lYjP6n2iWr/p9pG1W5X7Z9UM4499li59NJL5ZRTTnFC5ssvv5Tly5fL+++/L7t370alMkO1TaqdYqr36969uxx44IG42Bm2xpStW7fK77//fqAKpPHiVkYIpR+897Wl5WBh6FDBNQWMaSJAFhZgQLXYGNbO5AZzn4gkLWv+199+O23xgr/tpR7/V9VuUK1fhtdcLW43BhXOaart07NnT5kzZ44MGTLECQxABTN06FAZM2aM1NfXI817oyFcEEbnn3++DBgwwAmZbdu2yTvvvCNvvPGGbN68WRVU9s3ijt9sFbdqOki1fcUNEoTfL9I0rhOsbogKJhUw06qrcEZuTs7K7exmzpy49a7qe8feWzPxKXErh39TrVq1ngiLCjWv1qNHD+ybggpDGhoasMtcf/X8ieJ9sC+88EI599xzU+ECuH3MMcfIyJEjETCpxw8++GCpqqqSa665RtCl8g0fPlzuuusuWbRoEaoZHOhKcSumY8Ttgh0pbjWD6ul/xJ39+i3wq7CKoYLinrzpUlPNM9xwwQAtQuM/VeuJILjgggucdvTRRzsVyTfffCPLli2T9957D1VHauD3zDPPdLpFYfvtt5+cdtppTpD8+eefzmP9+vWTgQMHpoULoAq69tpr5e2333a6S8r54obLaaHDXqTaNar9TbUnVPtVguGC8SSDBQ3lHwOmueA0MwZdMRN01D777COnnnqq1NTUON2ZIHRr7rzzTidkfAcddJBEIpHmB1cfdARV37595YsvvnAeQ0X0l7/8JeMPc8IJJ8ghhxwin3/+ObZU6KUe6uUfPxqNyo4dO2TdunXGzp07D1UP/4dq34hbiWJ2Cq8x8J4MGSoEbjjVJLhQLhgwGNB1xkVQuYTDBc444ww5++yz5YADDkg9tv/++zthkgnCChUQIITQ3cLxM8FxjjrqKCkvb1oRjdCZMWOGzJs3zxnnufrqq3ENaTyFMZ1LxR2ANv3fif0kKhRWMOnCC+XQMMDrjJ+EuzC+vfbay+n2YEB2zZo1zmP+1HQme++9t1OV+LdRwQTHasJQ7SBg1MyTc//mm2+W66+/3jk+xoHw3GuvvSabNm3CQfp4zRmLsdWkO+sWKhRWMJkFF9JhdsYZL9m4cWPWF5x++ulOpeGHSksBg0BCFwdQoWTrHvmOOOKIVAWDMBoxYkTq2KhcevXq5by3Zz9xK5iI83uoAEL3yKlibNYylF8MmHTh6sWfoXEGWT/99NPUwGwYxkMwJY1qA10m3M80BgPoEmGGqbKy0hkMRmsJxn4wOIxQwXuEAwlhhuDx74obMs7vkFRjMIwVKhR2kVzBpf7BbhICZr1qW5LJZA/MGK1du9ZZOBeGLs5ll13mTEPj9mGHHeaPizSDQBg8eLAzZoNqpn///tISjPvMmjVLNmzYIIMGDWr2PN4Hx/Eg1RAyTsBgkDdVubCzRHnGgMkcLH4Fg9vbxK1iBm7evNlZhZspYODII4902h7fUH3QES4ImdbA2M+wYcOcGSNUMpkEwsw/uT01yEtUKKXeRco0c4SG2ZgrVLtRtb+KNxGDBXXvvvsuVtZKvmEMBqGUrdsVkgpIO5k0/HMK2FWifCvlCiZT5YJp6RGqjVXtEO++3+Vwzg/CepS6ujpnlW2RMkKNqGBYwTRVLvuLe8byveIurouKGzKYkUktcME09EsvveSvrC16lhAVTqlWMMHqxe9O3CbuuT7OdMzxxx/vnAmNLsknn3wiK1eudNah7Nq1ywmZVatWZRxwLQScsrBz507/LjIFJz2ygqGCK+Uukj8Iiq/YcW6keOFyww03yN133+2sUcHgKaqV5557TqZOnepMU3/77bfO1gvFEjDougWmzxEuu4WoCJRiwGSaLbpANWdxyVlnnSUPPfRQ2gswuDp27Fhn1ezEiROdr63xww8/yPr16+Wcc85ptugOA8aYkcIpAlg3Ex68xZQ0zrg++eSTpU+fPi0O7qKCCXTZEC47hKgIlOoYTDBk8MnFMlhnqewll1yS8QVYeYvl+Y8++qjMnDnTmTZuCVb94gzp8847T6qrq9OeQxg888wzcvHFF8tNN90kL7/8ctrzv/zyi0yYMEGuvPJKufHGG+Wrr75q8b3QbcNrPOgrdY4BIurySrmCQbj660XKvcdSS/gzwXPXXXedtAbGabBXjG3bznYLQVjP8v333zu3f/vtN6fLFYSw2LJli1Mpff3119hms8X3QsD8+uuv/l30lRAwzsw0l2pTIZXav7/wJUX8CuYP8SZc8IHvTBBgCKA//vjDuStuBfO7EBWBUvwDF5xd8cdgUttNrlu3TjqTRCIh8Xg8dVfczaawCTnX1VHBlXIFHewqob/iBAy6NnYnOusYAYOBZA+ql58leOUBNQvGVXdUKFxo58In1Pmrj5W6GP/o8IEDs0aYRtYFa3NwlrcH/SR/TwlWMFRwpV7B+PChxEhrI3bzf/7556WjsGudHzLZtnjoKExPYzr7448/9h/CANL/S9OpR9gvk0FDBVPKARP84KHEeEu89SNPPPFEh09oxJYNfsDoqmAwsPvqq6/6U9T42dHVQ1Cmn9+In4NbNVABlGLAhK/57DcsRomrlvzoo4/kvvvuS21RWawwIP3444/7dzG4i8vMImgwI8YTqKngSi1ggpdd9ZvlNVwxEbvxO4tO8MFdunRpq1ft5hsGonH6gjfrhSTEJWhxWYNguLCLRAVV6l0kS9JD5lVxr87oLFybPXu2rFixQnINXSd/gygERXtCDCdfPvvss/5d9JH+W7Ufpel3SS20S80gsZtEeVaqXaRgwwCJ5X3FwMsDqq3CN+JcICzz/+CDDySXcF6Rv8UlBmrb2hVbvXq1cyVIbxNyTK9jqTACxgo1VjBUUKVawQS7R37I+A19DlwhcR0++NiWAdce+uyzzySXgicvtqWCQWU1efJk5+cS9+fHz/uCuDNIflimmmFGbFYuVCilXMH4H0L/Q9no3cbXD1Wbr9pm7LPyyiuvSG1tbcFX+SKIHnzwQXn99df9hzCw+4i4ewYHQ5KDvFQUSn0Mxg+a4IcTAYM+CwZfZqm2BetYsDYGlcN3333XqoMfeuihqbUwuMJAEK4qgEuXADb0Dp9giX1ounfv7rwWx8HF2QAXV3vssceCXaoHxb3o/W7v5/ZD0g9PB8dfqFBatYN0F5TppMdwQ/g0iLv0/sxEIlGOcEFFc+KJJ2a91KsPwYFrUGNnPGy5cPjhh6eewxoZvB7PY9OqK664wgkVHwIFe9DgciWjRo2Sk046yTkDe/z48c64kKdO3IDBVQ8QLAlJr8KcKmbg4Iv+WQXVoFTA2PZbK+verBOiPCjVHe0QHn6I+GMwqOYS3vP+SZAIl9dU66Vme67fsmVL+YIFC+Tnn3+W6dOnOxdZywZVysiRI51qI3ypEYy/IHjuuOOO8DWNUq+96KKLnMua4Htx//777xesz/HOk8Ks0Qxxt2VISnq4sItERaPUr4sUnk0KngDp38bWB4vFvUb1v2/durUcm36j4sBMznHHHZf14AiOcHgEZbvWNaDK8a9XjbGXxYsXC05j8Dyh2iZp6hZlC5emlbxEBVDKAROsYvzxiuAVHYMnIP+k2jOq7VIVxLXbt2/f++mnn3bOMbrttttkwIABohO23sSWDN5sE6qVl6SpagmHS7ARFVSpn02daU1MIktDyDyl2gMqZLbhPKCnnnpKbr/9dmeLh/ZAcNxyyy3Su3dv6devnzz88MPBKiUF2zFg1zoPRpl/C/1smWaQRNhFogLjpWObPoTBv/jB7pIEvqK7hDUn+LTfotoBb775pnOdJAziBi5Av0c//vijzJ8/Xx544AHn/k8//SRTpkxxFt5hn97gda2xQXjghMmNkh4o4XDh+AsVDW7Zmnm62p+V8S8BEqwWMLD6d9UeVu1nDLouX77cuYxJa2FbTgQTAsZ7b6e7g5BZtGiRfPjhh2lnYKN6CWyCtUOyj70EqxeigmPAuIJdinDQBMPGb9jg5RPVPseLsGQfVUZrYYOoWbNmOVPP4p5cWe8dy8a1r1ER4Zh+qIQueWJK5vEWW9g1oiLDLlKTTFPXRuh5/3vQsO2ds7k2LkPiX4wNMLUcvg4SwgLbW2ItDS7g5p16gLDCiU4LVTtBtR5qILcPVuuiizRkyBBnvQwqG7zWg+s3ZQsXdo2oqDBg0vkBgg+tXymINL9YW3DTcKfL88gjj8iLL77oBAMWygXHUABjK9iKEwHj7aGLY8dVW6baN+IO3PZW7SpVDVXgTO4lS5Y44zp4XWBXvL7e+zJYqOgxYJoLhox4t4NB4y/CA2clNFb34vrVbYBuF1IG+898JE1ncmO7CKzK+xd1zB5r167N1IXtJu51nFi9UNFjwGQWDhlfsILBtDVOisSJRPuGno9I8038cUzMPmHnf8wEYd+ZleKGjR8MOJtyobhbX1aqdqB3LASQf0lY7PD9hzBYqBNgwGQXDBm/e+QP/vrXUkIFgg98T0m/UmQ3aQqi4DQ4ggELXbBvrn/1xeDMD74f4YNFfW94x8WxEt7rMO6zSTKfDsCQoaLDgGlZeLVveJUvQgZBgS5LRJoCxsxwnEzbRPiDyb5gFwxVzEbJvAgwKaxgqBNgwLROOBwQMqb31YcP/Z4CxsrS/IDwqx5T0isgW9L3rOGCOuoUGDB7FuyCBM9bagw8jsf8cMk2/tJSwPiCYzzB2apM+9bwrGkqegyY1guGCzQGHiuTpqom05VagwETDppgQISnws0Mr/cXAPK8Iyp6DJjWC6/2Dd72181ASwETrmQyVR/h7SLCxwhu88kxGCpqDJjWCa/ytaR5WIR3xAu/Pjzj01LA7Cmk2DWiToEB03Z+mJiB28GAEckcMMHbVuhxO/S6TCHlf1+msGLQUFFiwLSeX8X4ty1pHiit2TouU7cmU8BI6Lad5StR0WLAtE0wCMKDs209RkvPtTY8GDJU1Bgw7WNnuW+04TVEXR4DJrcYIkQB3HCKiLRhwBCRNgwYItKGAUNE2jBgiEgbBgwRacOAISJtGDBdnGFI2gWbjIjZV4jyhAHTxdmGHU9/QKJClCcMmC6uLBmpDz1UOS5W2/qLaBN1AAOmi4vFquLiXuDNV7GfaY0WojxgwJQA27KeDN43DXOoEOUBA6YElNnmwtBDg6rvmT1OiDRjwJQAdJNssdOqGDHMKRNitVEh0ogBUyLKkkZMfQlOWVeUR2QFQ4Z0YsCUCGew15CpoYejCJlJNbWDhEiDtmz1SF2ACpOY+p8+pdkThixMNMrUme6sE1FOMGBK0KSaOXMNMW7N8vRSNe20LGkl62fE7qgXog5gwJSorJUMUQ4xYEoYxl7UP4AF6mZUiDRgwJBU31M7Wv1LQDUTFaIcYsBQSmx6bWVjo3W5mOZAww2bqBB1wD8AobUpv0xPqN8AAAAASUVORK5CYII="></image></defs>', 3)
8855
+ ]));
8856
+ }
8857
+ const WireMeUp = /* @__PURE__ */ _export_sfc$1(_sfc_main$D, [["render", _sfc_render]]);
8858
+ const _sfc_main$C = /* @__PURE__ */ defineComponent({
8859
+ __name: "InputPanel",
8752
8860
  props: {
8753
- modelValue: { default: "params" },
8754
- nodeType: { default: void 0 },
8755
- pushRef: { default: "" },
8756
- hideDocs: { type: Boolean }
8861
+ runIndex: {},
8862
+ workflow: {},
8863
+ pushRef: {},
8864
+ activeNodeName: {},
8865
+ currentNodeName: { default: "" },
8866
+ canLinkRuns: { type: Boolean, default: false },
8867
+ linkedRuns: { type: Boolean },
8868
+ readOnly: { type: Boolean, default: false },
8869
+ isProductionExecutionPreview: { type: Boolean, default: false },
8870
+ isPaneActive: { type: Boolean, default: false },
8871
+ displayMode: {},
8872
+ compact: { type: Boolean },
8873
+ disableDisplayModeSelection: { type: Boolean },
8874
+ focusedMappableInput: {},
8875
+ isMappingOnboarded: { type: Boolean }
8757
8876
  },
8758
- emits: ["update:model-value"],
8877
+ emits: ["itemHover", "tableMounted", "linkRun", "unlinkRun", "runChange", "search", "changeInputNode", "execute", "activatePane", "displayModeChange"],
8759
8878
  setup(__props, { emit: __emit }) {
8760
8879
  const props = __props;
8761
8880
  const emit = __emit;
8762
- const externalHooks = useExternalHooks();
8763
- const ndvStore = useNDVStore();
8764
- const workflowsStore = useWorkflowsStore();
8765
- const i18n = useI18n();
8881
+ const i18n2 = useI18n();
8766
8882
  const telemetry = useTelemetry();
8767
- const { docsUrl } = useNodeDocsUrl({ nodeType: () => props.nodeType });
8768
- const activeNode = computed(() => ndvStore.activeNode);
8769
- const isCommunityNode = computed(() => {
8770
- const nodeType = props.nodeType;
8771
- if (nodeType) {
8772
- return isCommunityPackageName(nodeType.name);
8773
- }
8774
- return false;
8883
+ const showDraggableHintWithDelay = ref(false);
8884
+ const draggableHintShown = ref(false);
8885
+ const mappedNode2 = ref(null);
8886
+ const collapsingColumnName = ref(null);
8887
+ const inputModes = [
8888
+ { value: "mapping", label: i18n2.baseText("ndv.input.mapping") },
8889
+ { value: "debugging", label: i18n2.baseText("ndv.input.fromAI") }
8890
+ ];
8891
+ const nodeTypesStore = useNodeTypesStore();
8892
+ const workflowsStore = useWorkflowsStore();
8893
+ const posthogStore = usePostHog();
8894
+ const activeNode = computed(() => workflowsStore.getNodeByName(props.activeNodeName));
8895
+ const rootNode = computed(() => {
8896
+ if (!activeNode.value) return null;
8897
+ return props.workflow.getChildNodes(activeNode.value.name, "ALL").at(0) ?? null;
8775
8898
  });
8776
- const packageName = computed(() => props.nodeType?.name.split(".")[0] ?? "");
8777
- const documentationUrl = computed(() => {
8778
- if (props.hideDocs) {
8779
- return "";
8899
+ const hasRootNodeRun = computed(() => {
8900
+ return !!(rootNode.value && workflowsStore.getWorkflowExecution?.data?.resultData.runData[rootNode.value]);
8901
+ });
8902
+ const inputMode = ref(
8903
+ // Show debugging mode by default only when the node has already run
8904
+ activeNode.value && workflowsStore.getWorkflowExecution?.data?.resultData.runData[activeNode.value.name] ? "debugging" : "mapping"
8905
+ );
8906
+ const isMappingMode = computed(() => isActiveNodeConfig.value && inputMode.value === "mapping");
8907
+ const showDraggableHint = computed(() => {
8908
+ const toIgnore = [START_NODE_TYPE, MANUAL_TRIGGER_NODE_TYPE, CRON_NODE_TYPE, INTERVAL_NODE_TYPE];
8909
+ if (!currentNode.value || toIgnore.includes(currentNode.value.type)) {
8910
+ return false;
8780
8911
  }
8781
- return docsUrl.value;
8912
+ return !!props.focusedMappableInput && !props.isMappingOnboarded;
8782
8913
  });
8783
- const options = computed(() => {
8784
- const options2 = [
8785
- {
8786
- label: i18n.baseText("nodeSettings.parameters"),
8787
- value: "params"
8788
- },
8789
- {
8790
- label: i18n.baseText("nodeSettings.settings"),
8791
- value: "settings"
8914
+ const isActiveNodeConfig = computed(() => {
8915
+ let inputs2 = activeNodeType.value?.inputs ?? [];
8916
+ let outputs = activeNodeType.value?.outputs ?? [];
8917
+ if (props.workflow && activeNode.value) {
8918
+ const node2 = props.workflow.getNode(activeNode.value.name);
8919
+ if (node2 && activeNodeType.value) {
8920
+ inputs2 = getNodeInputs(props.workflow, node2, activeNodeType.value);
8921
+ outputs = getNodeOutputs(props.workflow, node2, activeNodeType.value);
8792
8922
  }
8793
- ];
8794
- if (isCommunityNode.value) {
8795
- options2.push({
8796
- icon: "box",
8797
- value: "communityNode",
8923
+ }
8924
+ if (!Array.isArray(inputs2)) {
8925
+ inputs2 = [];
8926
+ }
8927
+ if (!Array.isArray(outputs)) {
8928
+ outputs = [];
8929
+ }
8930
+ return inputs2.length === 0 || inputs2.every((input) => filterOutConnectionType(input, NodeConnectionTypes.Main)) && outputs.find((output) => filterOutConnectionType(output, NodeConnectionTypes.Main));
8931
+ });
8932
+ const isMappingEnabled = computed(() => {
8933
+ if (props.readOnly) return false;
8934
+ if (isActiveNodeConfig.value) return isMappingMode.value && mappedNode2.value !== null;
8935
+ return true;
8936
+ });
8937
+ const isExecutingPrevious = computed(() => {
8938
+ if (!workflowsStore.isWorkflowRunning) {
8939
+ return false;
8940
+ }
8941
+ const triggeredNode = workflowsStore.executedNode;
8942
+ const executingNode = workflowsStore.executingNode;
8943
+ if (activeNode.value && triggeredNode === activeNode.value.name && workflowsStore.isNodeExecuting(props.currentNodeName)) {
8944
+ return true;
8945
+ }
8946
+ if (executingNode.length || triggeredNode) {
8947
+ return !!parentNodes.value.find(
8948
+ (node2) => workflowsStore.isNodeExecuting(node2.name) || node2.name === triggeredNode
8949
+ );
8950
+ }
8951
+ return false;
8952
+ });
8953
+ const rootNodesParents = computed(() => {
8954
+ if (!rootNode.value) return [];
8955
+ return props.workflow.getParentNodesByDepth(rootNode.value);
8956
+ });
8957
+ const currentNode = computed(() => {
8958
+ if (isActiveNodeConfig.value) {
8959
+ if (mappedNode2.value) {
8960
+ return workflowsStore.getNodeByName(mappedNode2.value);
8961
+ }
8962
+ return activeNode.value;
8963
+ }
8964
+ return workflowsStore.getNodeByName(props.currentNodeName ?? "");
8965
+ });
8966
+ const connectedCurrentNodeOutputs = computed(() => {
8967
+ const search = parentNodes.value.find(({ name }) => name === props.currentNodeName);
8968
+ return search?.indicies;
8969
+ });
8970
+ const parentNodes = computed(() => {
8971
+ if (!activeNode.value) {
8972
+ return [];
8973
+ }
8974
+ const parents = props.workflow.getParentNodesByDepth(activeNode.value.name).filter((parent) => parent.name !== activeNode.value?.name);
8975
+ return uniqBy(parents, (parent) => parent.name);
8976
+ });
8977
+ const currentNodeDepth = computed(() => {
8978
+ const node2 = parentNodes.value.find(
8979
+ (parent) => currentNode.value && parent.name === currentNode.value.name
8980
+ );
8981
+ return node2?.depth ?? -1;
8982
+ });
8983
+ const activeNodeType = computed(() => {
8984
+ if (!activeNode.value) return null;
8985
+ return nodeTypesStore.getNodeType(activeNode.value.type, activeNode.value.typeVersion);
8986
+ });
8987
+ const waitingMessage = computed(() => {
8988
+ const parentNode = parentNodes.value[0];
8989
+ return parentNode && waitingNodeTooltip(workflowsStore.getNodeByName(parentNode.name));
8990
+ });
8991
+ const isNDVV2 = computed(
8992
+ () => posthogStore.isVariantEnabled(
8993
+ NDV_UI_OVERHAUL_EXPERIMENT.name,
8994
+ NDV_UI_OVERHAUL_EXPERIMENT.variant
8995
+ )
8996
+ );
8997
+ watch(
8998
+ inputMode,
8999
+ (mode) => {
9000
+ onRunIndexChange(-1);
9001
+ if (mode === "mapping") {
9002
+ onUnlinkRun();
9003
+ mappedNode2.value = rootNodesParents.value[0]?.name ?? null;
9004
+ } else {
9005
+ mappedNode2.value = null;
9006
+ }
9007
+ },
9008
+ { immediate: true }
9009
+ );
9010
+ watch(showDraggableHint, (curr, prev) => {
9011
+ if (curr && !prev) {
9012
+ setTimeout(() => {
9013
+ if (draggableHintShown.value) {
9014
+ return;
9015
+ }
9016
+ showDraggableHintWithDelay.value = showDraggableHint.value;
9017
+ if (showDraggableHintWithDelay.value) {
9018
+ draggableHintShown.value = true;
9019
+ telemetry.track("User viewed data mapping tooltip", {
9020
+ type: "unexecuted input pane"
9021
+ });
9022
+ }
9023
+ }, 1e3);
9024
+ } else if (!curr) {
9025
+ showDraggableHintWithDelay.value = false;
9026
+ }
9027
+ });
9028
+ function filterOutConnectionType(item, type) {
9029
+ if (!item) return false;
9030
+ return typeof item === "string" ? item !== type : item.type !== type;
9031
+ }
9032
+ function onInputModeChange(val) {
9033
+ inputMode.value = val;
9034
+ }
9035
+ function onMappedNodeSelected(val) {
9036
+ mappedNode2.value = val;
9037
+ onRunIndexChange(0);
9038
+ onUnlinkRun();
9039
+ }
9040
+ function onNodeExecute() {
9041
+ emit("execute");
9042
+ if (activeNode.value) {
9043
+ telemetry.track("User clicked ndv button", {
9044
+ node_type: activeNode.value.type,
9045
+ workflow_id: workflowsStore.workflowId,
9046
+ push_ref: props.pushRef,
9047
+ pane: "input",
9048
+ type: "executePrevious"
9049
+ });
9050
+ }
9051
+ }
9052
+ function onRunIndexChange(run) {
9053
+ emit("runChange", run);
9054
+ }
9055
+ function onLinkRun() {
9056
+ emit("linkRun");
9057
+ }
9058
+ function onUnlinkRun() {
9059
+ emit("unlinkRun");
9060
+ }
9061
+ function onSearch(search) {
9062
+ emit("search", search);
9063
+ }
9064
+ function onItemHover(item) {
9065
+ emit("itemHover", item);
9066
+ }
9067
+ function onTableMounted(event) {
9068
+ emit("tableMounted", event);
9069
+ }
9070
+ function onInputNodeChange(value) {
9071
+ const index = parentNodes.value.findIndex((node2) => node2.name === value) + 1;
9072
+ emit("changeInputNode", value, index);
9073
+ }
9074
+ function onConnectionHelpClick() {
9075
+ if (activeNode.value) {
9076
+ telemetry.track("User clicked ndv link", {
9077
+ node_type: activeNode.value.type,
9078
+ workflow_id: workflowsStore.workflowId,
9079
+ push_ref: props.pushRef,
9080
+ pane: "input",
9081
+ type: "not-connected-help"
9082
+ });
9083
+ }
9084
+ }
9085
+ function activatePane() {
9086
+ emit("activatePane");
9087
+ }
9088
+ function handleChangeCollapsingColumn(columnName) {
9089
+ collapsingColumnName.value = columnName;
9090
+ }
9091
+ return (_ctx, _cache) => {
9092
+ const _directive_n8n_html = resolveDirective("n8n-html");
9093
+ return openBlock(), createBlock(RunData, {
9094
+ class: normalizeClass(_ctx.$style.runData),
9095
+ node: currentNode.value,
9096
+ nodes: isMappingMode.value ? rootNodesParents.value : parentNodes.value,
9097
+ workflow: _ctx.workflow,
9098
+ "run-index": isMappingMode.value ? 0 : _ctx.runIndex,
9099
+ "linked-runs": _ctx.linkedRuns,
9100
+ "can-link-runs": !mappedNode2.value && _ctx.canLinkRuns,
9101
+ "too-much-data-title": unref(i18n2).baseText("ndv.input.tooMuchData.title"),
9102
+ "no-data-in-branch-message": unref(i18n2).baseText("ndv.input.noOutputDataInBranch"),
9103
+ "is-executing": isExecutingPrevious.value,
9104
+ "executing-message": unref(i18n2).baseText("ndv.input.executingPrevious"),
9105
+ "push-ref": _ctx.pushRef,
9106
+ "override-outputs": connectedCurrentNodeOutputs.value,
9107
+ "mapping-enabled": isMappingEnabled.value,
9108
+ "distance-from-active": currentNodeDepth.value,
9109
+ "is-production-execution-preview": _ctx.isProductionExecutionPreview,
9110
+ "is-pane-active": _ctx.isPaneActive,
9111
+ "display-mode": _ctx.displayMode,
9112
+ "pane-type": "input",
9113
+ "data-test-id": "ndv-input-panel",
9114
+ "disable-ai-content": true,
9115
+ "collapsing-table-column-name": collapsingColumnName.value,
9116
+ compact: _ctx.compact,
9117
+ "disable-display-mode-selection": _ctx.disableDisplayModeSelection,
9118
+ onActivatePane: activatePane,
9119
+ onItemHover,
9120
+ onLinkRun,
9121
+ onUnlinkRun,
9122
+ onRunChange: onRunIndexChange,
9123
+ onTableMounted,
9124
+ onSearch,
9125
+ onDisplayModeChange: _cache[2] || (_cache[2] = ($event) => emit("displayModeChange", $event)),
9126
+ onCollapsingTableColumnChanged: handleChangeCollapsingColumn
9127
+ }, createSlots({
9128
+ header: withCtx(() => [
9129
+ createBaseVNode("div", {
9130
+ class: normalizeClass([_ctx.$style.titleSection, { [_ctx.$style.titleSectionV2]: isNDVV2.value }])
9131
+ }, [
9132
+ createVNode(unref(N8nText), {
9133
+ bold: true,
9134
+ color: "text-light",
9135
+ size: _ctx.compact ? "small" : "medium",
9136
+ class: normalizeClass([_ctx.$style.title, { [_ctx.$style.titleV2]: isNDVV2.value }])
9137
+ }, {
9138
+ default: withCtx(() => [
9139
+ createTextVNode(toDisplayString(unref(i18n2).baseText("ndv.input")), 1)
9140
+ ]),
9141
+ _: 1
9142
+ }, 8, ["size", "class"]),
9143
+ isActiveNodeConfig.value && !_ctx.readOnly ? (openBlock(), createBlock(unref(N8nRadioButtons), {
9144
+ key: 0,
9145
+ "data-test-id": "input-panel-mode",
9146
+ options: inputModes,
9147
+ "model-value": inputMode.value,
9148
+ "onUpdate:modelValue": onInputModeChange
9149
+ }, null, 8, ["model-value"])) : createCommentVNode("", true)
9150
+ ], 2)
9151
+ ]),
9152
+ "input-select": withCtx(() => [
9153
+ parentNodes.value.length && _ctx.currentNodeName ? (openBlock(), createBlock(InputNodeSelect, {
9154
+ key: 0,
9155
+ "model-value": _ctx.currentNodeName,
9156
+ workflow: _ctx.workflow,
9157
+ nodes: parentNodes.value,
9158
+ "onUpdate:modelValue": onInputNodeChange
9159
+ }, null, 8, ["model-value", "workflow", "nodes"])) : createCommentVNode("", true)
9160
+ ]),
9161
+ "node-not-run": withCtx(() => [
9162
+ isActiveNodeConfig.value && rootNode.value || parentNodes.value.length ? (openBlock(), createElementBlock("div", {
9163
+ key: 0,
9164
+ class: normalizeClass(_ctx.$style.noOutputData)
9165
+ }, [
9166
+ isNDVV2.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
9167
+ isMappingEnabled.value || hasRootNodeRun.value ? (openBlock(), createBlock(__unplugin_components_2, {
9168
+ key: 0,
9169
+ title: unref(i18n2).baseText("ndv.input.noOutputData.v2.title")
9170
+ }, {
9171
+ icon: withCtx(() => [
9172
+ createVNode(unref(N8nIcon), {
9173
+ icon: "arrow-right-to-line",
9174
+ size: "xlarge"
9175
+ })
9176
+ ]),
9177
+ description: withCtx(() => [
9178
+ createVNode(unref(I18nT), {
9179
+ tag: "span",
9180
+ keypath: "ndv.input.noOutputData.v2.description",
9181
+ scope: "global"
9182
+ }, {
9183
+ link: withCtx(() => [
9184
+ createVNode(_sfc_main$10, {
9185
+ "hide-icon": "",
9186
+ transparent: "",
9187
+ type: "secondary",
9188
+ "node-name": (isActiveNodeConfig.value ? rootNode.value : activeNode.value?.name) ?? "",
9189
+ label: unref(i18n2).baseText("ndv.input.noOutputData.v2.action"),
9190
+ tooltip: unref(i18n2).baseText("ndv.input.noOutputData.v2.tooltip"),
9191
+ "tooltip-placement": "bottom",
9192
+ "telemetry-source": "inputs",
9193
+ "data-test-id": "execute-previous-node",
9194
+ onExecute: onNodeExecute
9195
+ }, null, 8, ["node-name", "label", "tooltip"]),
9196
+ _cache[4] || (_cache[4] = createBaseVNode("br", null, null, -1))
9197
+ ]),
9198
+ _: 1
9199
+ })
9200
+ ]),
9201
+ _: 1
9202
+ }, 8, ["title"])) : (openBlock(), createBlock(__unplugin_components_2, {
9203
+ key: 1,
9204
+ title: unref(i18n2).baseText("ndv.input.rootNodeHasNotRun.title")
9205
+ }, {
9206
+ icon: withCtx(() => _cache[5] || (_cache[5] = [
9207
+ createBaseVNode("svg", {
9208
+ width: "16px",
9209
+ viewBox: "0 0 16 14",
9210
+ fill: "none",
9211
+ xmlns: "http://www.w3.org/2000/svg"
9212
+ }, [
9213
+ createBaseVNode("path", {
9214
+ d: "M11 2C10.4375 2 10 1.5625 10 1C10 0.46875 10.4375 0 11 0H13C14.6562 0 16 1.34375 16 3V11C16 12.6562 14.6562 14 13 14H11C10.4375 14 10 13.5625 10 13C10 12.4688 10.4375 12 11 12H13C13.5312 12 14 11.5625 14 11V3C14 2.46875 13.5312 2 13 2H11ZM10.6875 7.71875L6.6875 11.7188C6.3125 12.125 5.65625 12.125 5.28125 11.7188C4.875 11.3438 4.875 10.6875 5.28125 10.3125L7.5625 8H1C0.4375 8 0 7.5625 0 7C0 6.46875 0.4375 6 1 6H7.5625L5.28125 3.71875C4.875 3.34375 4.875 2.6875 5.28125 2.3125C5.65625 1.90625 6.3125 1.90625 6.6875 2.3125L10.6875 6.3125C11.0938 6.6875 11.0938 7.34375 10.6875 7.71875Z",
9215
+ fill: "currentColor"
9216
+ })
9217
+ ], -1)
9218
+ ])),
9219
+ description: withCtx(() => [
9220
+ createVNode(unref(I18nT), {
9221
+ tag: "span",
9222
+ keypath: "ndv.input.rootNodeHasNotRun.description",
9223
+ scope: "global"
9224
+ }, {
9225
+ link: withCtx(() => [
9226
+ createBaseVNode("a", {
9227
+ href: "#",
9228
+ "data-test-id": "switch-to-mapping-mode-link",
9229
+ onClick: _cache[0] || (_cache[0] = withModifiers(($event) => onInputModeChange("mapping"), ["prevent"]))
9230
+ }, toDisplayString(unref(i18n2).baseText("ndv.input.rootNodeHasNotRun.description.link")), 1)
9231
+ ]),
9232
+ _: 1
9233
+ })
9234
+ ]),
9235
+ _: 1
9236
+ }, 8, ["title"]))
9237
+ ], 64)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
9238
+ isMappingEnabled.value || hasRootNodeRun.value ? (openBlock(), createBlock(unref(N8nText), {
9239
+ key: 0,
9240
+ tag: "div",
9241
+ bold: true,
9242
+ color: "text-dark",
9243
+ size: "large"
9244
+ }, {
9245
+ default: withCtx(() => [
9246
+ createTextVNode(toDisplayString(unref(i18n2).baseText("ndv.input.noOutputData.title")), 1)
9247
+ ]),
9248
+ _: 1
9249
+ })) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
9250
+ createVNode(unref(N8nText), {
9251
+ tag: "div",
9252
+ bold: true,
9253
+ color: "text-dark",
9254
+ size: "large"
9255
+ }, {
9256
+ default: withCtx(() => [
9257
+ createTextVNode(toDisplayString(unref(i18n2).baseText("ndv.input.rootNodeHasNotRun.title")), 1)
9258
+ ]),
9259
+ _: 1
9260
+ }),
9261
+ createVNode(unref(N8nText), {
9262
+ tag: "div",
9263
+ color: "text-dark",
9264
+ size: "medium"
9265
+ }, {
9266
+ default: withCtx(() => [
9267
+ createVNode(unref(I18nT), {
9268
+ tag: "span",
9269
+ keypath: "ndv.input.rootNodeHasNotRun.description",
9270
+ scope: "global"
9271
+ }, {
9272
+ link: withCtx(() => [
9273
+ createBaseVNode("a", {
9274
+ href: "#",
9275
+ "data-test-id": "switch-to-mapping-mode-link",
9276
+ onClick: _cache[1] || (_cache[1] = withModifiers(($event) => onInputModeChange("mapping"), ["prevent"]))
9277
+ }, toDisplayString(unref(i18n2).baseText("ndv.input.rootNodeHasNotRun.description.link")), 1)
9278
+ ]),
9279
+ _: 1
9280
+ })
9281
+ ]),
9282
+ _: 1
9283
+ })
9284
+ ], 64)),
9285
+ !_ctx.readOnly ? (openBlock(), createBlock(unref(N8nTooltip), {
9286
+ key: 2,
9287
+ visible: showDraggableHint.value && showDraggableHintWithDelay.value
9288
+ }, {
9289
+ content: withCtx(() => [
9290
+ withDirectives(createBaseVNode("div", null, null, 512), [
9291
+ [
9292
+ _directive_n8n_html,
9293
+ unref(i18n2).baseText("dataMapping.dragFromPreviousHint", {
9294
+ interpolate: { name: _ctx.focusedMappableInput }
9295
+ })
9296
+ ]
9297
+ ])
9298
+ ]),
9299
+ default: withCtx(() => [
9300
+ createVNode(_sfc_main$10, {
9301
+ type: "secondary",
9302
+ "hide-icon": "",
9303
+ transparent: true,
9304
+ "node-name": (isActiveNodeConfig.value ? rootNode.value : activeNode.value?.name) ?? "",
9305
+ label: unref(i18n2).baseText("ndv.input.noOutputData.executePrevious"),
9306
+ class: "mt-m",
9307
+ "telemetry-source": "inputs",
9308
+ "data-test-id": "execute-previous-node",
9309
+ onExecute: onNodeExecute
9310
+ }, null, 8, ["node-name", "label"])
9311
+ ]),
9312
+ _: 1
9313
+ }, 8, ["visible"])) : createCommentVNode("", true),
9314
+ !_ctx.readOnly ? (openBlock(), createBlock(unref(N8nText), {
9315
+ key: 3,
9316
+ tag: "div",
9317
+ size: "small"
9318
+ }, {
9319
+ default: withCtx(() => [
9320
+ createVNode(unref(I18nT), {
9321
+ keypath: "ndv.input.noOutputData.hint",
9322
+ scope: "global"
9323
+ }, {
9324
+ info: withCtx(() => [
9325
+ createVNode(unref(N8nTooltip), { placement: "bottom" }, {
9326
+ content: withCtx(() => [
9327
+ createTextVNode(toDisplayString(unref(i18n2).baseText("ndv.input.noOutputData.hint.tooltip")), 1)
9328
+ ]),
9329
+ default: withCtx(() => [
9330
+ createVNode(unref(N8nIcon), { icon: "circle-help" })
9331
+ ]),
9332
+ _: 1
9333
+ })
9334
+ ]),
9335
+ _: 1
9336
+ })
9337
+ ]),
9338
+ _: 1
9339
+ })) : createCommentVNode("", true)
9340
+ ], 64))
9341
+ ], 2)) : (openBlock(), createElementBlock("div", {
9342
+ key: 1,
9343
+ class: normalizeClass(_ctx.$style.notConnected)
9344
+ }, [
9345
+ isNDVV2.value ? (openBlock(), createBlock(__unplugin_components_2, {
9346
+ key: 0,
9347
+ title: unref(i18n2).baseText("ndv.input.notConnected.v2.title")
9348
+ }, {
9349
+ icon: withCtx(() => [
9350
+ createVNode(WireMeUp)
9351
+ ]),
9352
+ description: withCtx(() => [
9353
+ createVNode(unref(I18nT), {
9354
+ tag: "span",
9355
+ keypath: "ndv.input.notConnected.v2.description",
9356
+ scope: "global"
9357
+ }, {
9358
+ link: withCtx(() => [
9359
+ createBaseVNode("a", {
9360
+ href: "https://docs.n8n.io/workflows/connections/",
9361
+ target: "_blank",
9362
+ onClick: onConnectionHelpClick
9363
+ }, toDisplayString(unref(i18n2).baseText("ndv.input.notConnected.learnMore")), 1)
9364
+ ]),
9365
+ _: 1
9366
+ })
9367
+ ]),
9368
+ _: 1
9369
+ }, 8, ["title"])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
9370
+ createBaseVNode("div", null, [
9371
+ createVNode(WireMeUp)
9372
+ ]),
9373
+ createVNode(unref(N8nText), {
9374
+ tag: "div",
9375
+ bold: true,
9376
+ color: "text-dark",
9377
+ size: "large"
9378
+ }, {
9379
+ default: withCtx(() => [
9380
+ createTextVNode(toDisplayString(unref(i18n2).baseText("ndv.input.notConnected.title")), 1)
9381
+ ]),
9382
+ _: 1
9383
+ }),
9384
+ createVNode(unref(N8nText), { tag: "div" }, {
9385
+ default: withCtx(() => [
9386
+ createTextVNode(toDisplayString(unref(i18n2).baseText("ndv.input.notConnected.message")) + " ", 1),
9387
+ createBaseVNode("a", {
9388
+ href: "https://docs.n8n.io/workflows/connections/",
9389
+ target: "_blank",
9390
+ onClick: onConnectionHelpClick
9391
+ }, toDisplayString(unref(i18n2).baseText("ndv.input.notConnected.learnMore")), 1)
9392
+ ]),
9393
+ _: 1
9394
+ })
9395
+ ], 64))
9396
+ ], 2))
9397
+ ]),
9398
+ "node-waiting": withCtx(() => [
9399
+ createVNode(unref(N8nText), {
9400
+ bold: true,
9401
+ color: "text-dark",
9402
+ size: "large"
9403
+ }, {
9404
+ default: withCtx(() => [
9405
+ createTextVNode(toDisplayString(unref(i18n2).baseText("ndv.output.waitNodeWaiting.title")), 1)
9406
+ ]),
9407
+ _: 1
9408
+ }),
9409
+ withDirectives(createVNode(unref(N8nText), null, null, 512), [
9410
+ [_directive_n8n_html, waitingMessage.value]
9411
+ ])
9412
+ ]),
9413
+ "no-output-data": withCtx(() => [
9414
+ createVNode(unref(N8nText), {
9415
+ tag: "div",
9416
+ bold: true,
9417
+ color: "text-dark",
9418
+ size: "large"
9419
+ }, {
9420
+ default: withCtx(() => [
9421
+ createTextVNode(toDisplayString(unref(i18n2).baseText("ndv.input.noOutputData")), 1)
9422
+ ]),
9423
+ _: 1
9424
+ })
9425
+ ]),
9426
+ "recovered-artificial-output-data": withCtx(() => [
9427
+ createBaseVNode("div", {
9428
+ class: normalizeClass(_ctx.$style.recoveredOutputData)
9429
+ }, [
9430
+ createVNode(unref(N8nText), {
9431
+ tag: "div",
9432
+ bold: true,
9433
+ color: "text-dark",
9434
+ size: "large"
9435
+ }, {
9436
+ default: withCtx(() => [
9437
+ createTextVNode(toDisplayString(unref(i18n2).baseText("executionDetails.executionFailed.recoveredNodeTitle")), 1)
9438
+ ]),
9439
+ _: 1
9440
+ }),
9441
+ createVNode(unref(N8nText), null, {
9442
+ default: withCtx(() => [
9443
+ createTextVNode(toDisplayString(unref(i18n2).baseText("executionDetails.executionFailed.recoveredNodeMessage")), 1)
9444
+ ]),
9445
+ _: 1
9446
+ })
9447
+ ], 2)
9448
+ ]),
9449
+ _: 2
9450
+ }, [
9451
+ isMappingMode.value ? {
9452
+ name: "before-data",
9453
+ fn: withCtx(() => [
9454
+ (openBlock(), createBlock(resolveDynamicComponent("style"), null, {
9455
+ default: withCtx(() => _cache[3] || (_cache[3] = [
9456
+ createTextVNode("button.linkRun { display: none }")
9457
+ ])),
9458
+ _: 1
9459
+ })),
9460
+ createBaseVNode("div", {
9461
+ class: normalizeClass(_ctx.$style.mappedNode)
9462
+ }, [
9463
+ createVNode(InputNodeSelect, {
9464
+ "model-value": mappedNode2.value,
9465
+ workflow: _ctx.workflow,
9466
+ nodes: rootNodesParents.value,
9467
+ "onUpdate:modelValue": onMappedNodeSelected
9468
+ }, null, 8, ["model-value", "workflow", "nodes"])
9469
+ ], 2)
9470
+ ]),
9471
+ key: "0"
9472
+ } : void 0
9473
+ ]), 1032, ["class", "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", "display-mode", "collapsing-table-column-name", "compact", "disable-display-mode-selection"]);
9474
+ };
9475
+ }
9476
+ });
9477
+ const runData = "_runData_1mq3a_123";
9478
+ const mappedNode = "_mappedNode_1mq3a_127";
9479
+ const titleSection = "_titleSection_1mq3a_131";
9480
+ const titleSectionV2 = "_titleSectionV2_1mq3a_140";
9481
+ const inputModeTab = "_inputModeTab_1mq3a_144";
9482
+ const noOutputData = "_noOutputData_1mq3a_148";
9483
+ const recoveredOutputData = "_recoveredOutputData_1mq3a_155";
9484
+ const notConnected = "_notConnected_1mq3a_164";
9485
+ const title = "_title_1mq3a_131";
9486
+ const titleV2 = "_titleV2_1mq3a_179";
9487
+ const style0$r = {
9488
+ runData,
9489
+ mappedNode,
9490
+ titleSection,
9491
+ titleSectionV2,
9492
+ inputModeTab,
9493
+ noOutputData,
9494
+ recoveredOutputData,
9495
+ notConnected,
9496
+ title,
9497
+ titleV2
9498
+ };
9499
+ const cssModules$r = {
9500
+ "$style": style0$r
9501
+ };
9502
+ const InputPanel = /* @__PURE__ */ _export_sfc$1(_sfc_main$C, [["__cssModules", cssModules$r]]);
9503
+ const _sfc_main$B = /* @__PURE__ */ defineComponent({
9504
+ __name: "NodeTitle",
9505
+ props: {
9506
+ modelValue: { default: "" },
9507
+ nodeType: { default: void 0 },
9508
+ readOnly: { type: Boolean, default: false }
9509
+ },
9510
+ emits: ["update:model-value"],
9511
+ setup(__props, { emit: __emit }) {
9512
+ const emit = __emit;
9513
+ function onRename(value) {
9514
+ if (value.trim() !== "") {
9515
+ emit("update:model-value", value.trim());
9516
+ }
9517
+ }
9518
+ const wrapperRef = useTemplateRef("wrapperRef");
9519
+ const { width } = useElementSize(wrapperRef);
9520
+ return (_ctx, _cache) => {
9521
+ return openBlock(), createElementBlock("span", {
9522
+ class: normalizeClass(_ctx.$style.container),
9523
+ "data-test-id": "node-title-container"
9524
+ }, [
9525
+ createBaseVNode("span", {
9526
+ class: normalizeClass(_ctx.$style.iconWrapper)
9527
+ }, [
9528
+ createVNode(_sfc_main$$, {
9529
+ "node-type": _ctx.nodeType,
9530
+ size: 18,
9531
+ "show-tooltip": true,
9532
+ "tooltip-position": "left"
9533
+ }, null, 8, ["node-type"])
9534
+ ], 2),
9535
+ createBaseVNode("div", {
9536
+ ref_key: "wrapperRef",
9537
+ ref: wrapperRef,
9538
+ class: normalizeClass(_ctx.$style.textWrapper)
9539
+ }, [
9540
+ createVNode(unref(InlineRename), {
9541
+ "max-width": unref(width),
9542
+ "model-value": _ctx.modelValue,
9543
+ "read-only": _ctx.readOnly,
9544
+ "onUpdate:modelValue": onRename
9545
+ }, null, 8, ["max-width", "model-value", "read-only"])
9546
+ ], 2)
9547
+ ], 2);
9548
+ };
9549
+ }
9550
+ });
9551
+ const container$5 = "_container_178ym_123";
9552
+ const textWrapper = "_textWrapper_178ym_132";
9553
+ const iconWrapper$1 = "_iconWrapper_178ym_137";
9554
+ const style0$q = {
9555
+ container: container$5,
9556
+ textWrapper,
9557
+ iconWrapper: iconWrapper$1
9558
+ };
9559
+ const cssModules$q = {
9560
+ "$style": style0$q
9561
+ };
9562
+ const NodeTitle = /* @__PURE__ */ _export_sfc$1(_sfc_main$B, [["__cssModules", cssModules$q]]);
9563
+ const _sfc_main$A = /* @__PURE__ */ defineComponent({
9564
+ __name: "CommunityNodeFooter",
9565
+ props: {
9566
+ packageName: {},
9567
+ showManage: { type: Boolean }
9568
+ },
9569
+ setup(__props) {
9570
+ const props = __props;
9571
+ const router = useRouter();
9572
+ const bugsUrl = ref(`https://registry.npmjs.org/${props.packageName}`);
9573
+ const installedPackage = ref(void 0);
9574
+ async function openSettingsPage() {
9575
+ await router.push({ name: VIEWS.COMMUNITY_NODES });
9576
+ }
9577
+ async function openIssuesPage() {
9578
+ if (bugsUrl.value) {
9579
+ window.open(bugsUrl.value, "_blank");
9580
+ }
9581
+ }
9582
+ async function getBugsUrl(packageName) {
9583
+ const url = `https://registry.npmjs.org/${packageName}`;
9584
+ try {
9585
+ const response = await fetch(url);
9586
+ if (!response.ok) {
9587
+ throw new Error("Could not get metadata for package");
9588
+ }
9589
+ const data = await response.json();
9590
+ if (data.bugs?.url) {
9591
+ bugsUrl.value = data.bugs.url;
9592
+ }
9593
+ } catch (error2) {
9594
+ captureException(error2);
9595
+ }
9596
+ }
9597
+ onMounted(async () => {
9598
+ if (props.packageName) {
9599
+ await getBugsUrl(props.packageName);
9600
+ installedPackage.value = await useCommunityNodesStore().getInstalledPackage(props.packageName);
9601
+ }
9602
+ });
9603
+ return (_ctx, _cache) => {
9604
+ return openBlock(), createElementBlock("div", null, [
9605
+ createBaseVNode("div", {
9606
+ class: normalizeClass(_ctx.$style.separator)
9607
+ }, null, 2),
9608
+ createBaseVNode("div", {
9609
+ class: normalizeClass(_ctx.$style.container)
9610
+ }, [
9611
+ installedPackage.value ? (openBlock(), createBlock(unref(N8nText), {
9612
+ key: 0,
9613
+ size: "small",
9614
+ color: "text-light",
9615
+ style: { "margin-right": "auto" }
9616
+ }, {
9617
+ default: withCtx(() => [
9618
+ createTextVNode(" Package version " + toDisplayString(installedPackage.value.installedVersion) + " (" + toDisplayString(installedPackage.value.updateAvailable ? "Legacy" : "Latest") + ") ", 1)
9619
+ ]),
9620
+ _: 1
9621
+ })) : createCommentVNode("", true),
9622
+ props.showManage ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
9623
+ createVNode(unref(N8nLink), {
9624
+ theme: "text",
9625
+ onClick: openSettingsPage
9626
+ }, {
9627
+ default: withCtx(() => [
9628
+ createVNode(unref(N8nText), {
9629
+ size: "small",
9630
+ color: "primary",
9631
+ bold: ""
9632
+ }, {
9633
+ default: withCtx(() => _cache[0] || (_cache[0] = [
9634
+ createTextVNode(" Manage ")
9635
+ ])),
9636
+ _: 1
9637
+ })
9638
+ ]),
9639
+ _: 1
9640
+ }),
9641
+ createVNode(unref(N8nText), {
9642
+ size: "small",
9643
+ style: { "color": "var(--color-foreground-base)" },
9644
+ bold: ""
9645
+ }, {
9646
+ default: withCtx(() => _cache[1] || (_cache[1] = [
9647
+ createTextVNode("|")
9648
+ ])),
9649
+ _: 1
9650
+ })
9651
+ ], 64)) : createCommentVNode("", true),
9652
+ createVNode(unref(N8nLink), {
9653
+ theme: "text",
9654
+ onClick: openIssuesPage
9655
+ }, {
9656
+ default: withCtx(() => [
9657
+ createVNode(unref(N8nText), {
9658
+ size: "small",
9659
+ color: "primary",
9660
+ bold: ""
9661
+ }, {
9662
+ default: withCtx(() => _cache[2] || (_cache[2] = [
9663
+ createTextVNode(" Report issue ")
9664
+ ])),
9665
+ _: 1
9666
+ })
9667
+ ]),
9668
+ _: 1
9669
+ })
9670
+ ], 2)
9671
+ ]);
9672
+ };
9673
+ }
9674
+ });
9675
+ const container$4 = "_container_1lo1n_123";
9676
+ const separator = "_separator_1lo1n_131";
9677
+ const style0$p = {
9678
+ container: container$4,
9679
+ separator
9680
+ };
9681
+ const cssModules$p = {
9682
+ "$style": style0$p
9683
+ };
9684
+ const CommunityNodeFooter = /* @__PURE__ */ _export_sfc$1(_sfc_main$A, [["__cssModules", cssModules$p]]);
9685
+ const _sfc_main$z = /* @__PURE__ */ defineComponent({
9686
+ __name: "CommunityNodeUpdateInfo",
9687
+ setup(__props) {
9688
+ const noticeStyles = computed(() => {
9689
+ const isDark = useUIStore().appliedTheme === "dark";
9690
+ if (isDark) {
9691
+ return {
9692
+ borderColor: "var(--color-callout-secondary-border)",
9693
+ backgroundColor: "var(--color-callout-secondary-background)",
9694
+ color: "var(--color-callout-secondary-font)"
9695
+ };
9696
+ }
9697
+ return {
9698
+ borderColor: "var(--color-secondary)",
9699
+ backgroundColor: "var(--color-secondary-tint-3)"
9700
+ };
9701
+ });
9702
+ return (_ctx, _cache) => {
9703
+ return openBlock(), createBlock(unref(N8nNotice), {
9704
+ theme: "info",
9705
+ style: normalizeStyle({
9706
+ marginTop: "0",
9707
+ ...noticeStyles.value
9708
+ })
9709
+ }, {
9710
+ default: withCtx(() => [
9711
+ createTextVNode(toDisplayString(unref(i18n).baseText("communityNodeUpdateInfo.available")), 1)
9712
+ ]),
9713
+ _: 1
9714
+ }, 8, ["style"]);
9715
+ };
9716
+ }
9717
+ });
9718
+ const useNodeDocsUrl = ({
9719
+ nodeType: nodeTypeRef
9720
+ }) => {
9721
+ const packageName = computed(() => toValue(nodeTypeRef)?.name.split(".")[0] ?? "");
9722
+ const isCommunityNode = computed(() => {
9723
+ const nodeType = toValue(nodeTypeRef);
9724
+ if (nodeType) {
9725
+ return isCommunityPackageName(nodeType.name);
9726
+ }
9727
+ return false;
9728
+ });
9729
+ const docsUrl = computed(() => {
9730
+ const nodeType = toValue(nodeTypeRef);
9731
+ if (!nodeType) {
9732
+ return "";
9733
+ }
9734
+ if (nodeType.documentationUrl?.startsWith("http")) {
9735
+ return nodeType.documentationUrl;
9736
+ }
9737
+ const utmParams = new URLSearchParams({
9738
+ utm_source: "n8n_app",
9739
+ utm_medium: "node_settings_modal-credential_link",
9740
+ utm_campaign: nodeType.name
9741
+ });
9742
+ const primaryDocUrl = nodeType.codex?.resources?.primaryDocumentation?.[0]?.url;
9743
+ if (primaryDocUrl) {
9744
+ return `${primaryDocUrl}?${utmParams.toString()}`;
9745
+ }
9746
+ if (isCommunityNode.value) {
9747
+ return `${NPM_PACKAGE_DOCS_BASE_URL}${packageName.value}`;
9748
+ }
9749
+ return `${BUILTIN_NODES_DOCS_URL}?${utmParams.toString()}`;
9750
+ });
9751
+ return { docsUrl };
9752
+ };
9753
+ const _sfc_main$y = /* @__PURE__ */ defineComponent({
9754
+ __name: "NodeSettingsTabs",
9755
+ props: {
9756
+ modelValue: { default: "params" },
9757
+ nodeType: { default: void 0 },
9758
+ pushRef: { default: "" },
9759
+ hideDocs: { type: Boolean }
9760
+ },
9761
+ emits: ["update:model-value"],
9762
+ setup(__props, { emit: __emit }) {
9763
+ const props = __props;
9764
+ const emit = __emit;
9765
+ const externalHooks = useExternalHooks();
9766
+ const ndvStore = useNDVStore();
9767
+ const workflowsStore = useWorkflowsStore();
9768
+ const i18n2 = useI18n();
9769
+ const telemetry = useTelemetry();
9770
+ const { docsUrl } = useNodeDocsUrl({ nodeType: () => props.nodeType });
9771
+ const communityNodesStore = useCommunityNodesStore();
9772
+ const activeNode = computed(() => ndvStore.activeNode);
9773
+ const installedPackage = ref(void 0);
9774
+ const isCommunityNode = computed(() => {
9775
+ const nodeType = props.nodeType;
9776
+ if (nodeType) {
9777
+ return isCommunityPackageName(nodeType.name);
9778
+ }
9779
+ return false;
9780
+ });
9781
+ const packageName = computed(() => props.nodeType?.name.split(".")[0] ?? "");
9782
+ const documentationUrl = computed(() => {
9783
+ if (props.hideDocs) {
9784
+ return "";
9785
+ }
9786
+ return docsUrl.value;
9787
+ });
9788
+ const options = computed(() => {
9789
+ const options2 = [
9790
+ {
9791
+ label: i18n2.baseText("nodeSettings.parameters"),
9792
+ value: "params"
9793
+ },
9794
+ {
9795
+ label: i18n2.baseText("nodeSettings.settings"),
9796
+ value: "settings",
9797
+ notification: installedPackage.value?.updateAvailable ? true : void 0
9798
+ }
9799
+ ];
9800
+ if (isCommunityNode.value) {
9801
+ options2.push({
9802
+ icon: "box",
9803
+ value: "communityNode",
8798
9804
  align: "right",
8799
- tooltip: i18n.baseText("generic.communityNode.tooltip", {
9805
+ tooltip: i18n2.baseText("generic.communityNode.tooltip", {
8800
9806
  interpolate: {
8801
9807
  docUrl: COMMUNITY_NODES_INSTALLATION_DOCS_URL,
8802
9808
  packageName: packageName.value
@@ -8806,7 +9812,7 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
8806
9812
  }
8807
9813
  if (documentationUrl.value) {
8808
9814
  options2.push({
8809
- label: i18n.baseText("nodeSettings.docs"),
9815
+ label: i18n2.baseText("nodeSettings.docs"),
8810
9816
  value: "docs",
8811
9817
  href: documentationUrl.value,
8812
9818
  align: "right"
@@ -8843,6 +9849,11 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
8843
9849
  telemetry.track("user clicked cnr docs link", { source: "node details view" });
8844
9850
  }
8845
9851
  }
9852
+ onMounted(async () => {
9853
+ if (isCommunityNode.value && useUsersStore().isInstanceOwner) {
9854
+ installedPackage.value = await communityNodesStore.getInstalledPackage(packageName.value);
9855
+ }
9856
+ });
8846
9857
  return (_ctx, _cache) => {
8847
9858
  return openBlock(), createBlock(unref(N8nTabs), {
8848
9859
  options: options.value,
@@ -8891,7 +9902,7 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
8891
9902
  const clipboard = useClipboard();
8892
9903
  const workflowHelpers = useWorkflowHelpers();
8893
9904
  const toast = useToast();
8894
- const i18n = useI18n();
9905
+ const i18n2 = useI18n();
8895
9906
  const telemetry = useTelemetry();
8896
9907
  const isMinimized = ref(
8897
9908
  props.nodeTypeDescription && !OPEN_URL_PANEL_TRIGGER_NODE_TYPES.includes(props.nodeTypeDescription.name)
@@ -8928,46 +9939,46 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
8928
9939
  switch (nodeType) {
8929
9940
  case CHAT_TRIGGER_NODE_TYPE:
8930
9941
  return {
8931
- toggleTitle: i18n.baseText("nodeWebhooks.webhookUrls.chatTrigger"),
8932
- clickToDisplay: i18n.baseText("nodeWebhooks.clickToDisplayWebhookUrls.formTrigger"),
8933
- clickToHide: i18n.baseText("nodeWebhooks.clickToHideWebhookUrls.chatTrigger"),
8934
- clickToCopy: i18n.baseText("nodeWebhooks.clickToCopyWebhookUrls.chatTrigger"),
8935
- testUrl: i18n.baseText("nodeWebhooks.testUrl"),
8936
- productionUrl: i18n.baseText("nodeWebhooks.productionUrl"),
8937
- copyTitle: i18n.baseText("nodeWebhooks.showMessage.title.chatTrigger"),
8938
- copyMessage: i18n.baseText("nodeWebhooks.showMessage.message.chatTrigger")
9942
+ toggleTitle: i18n2.baseText("nodeWebhooks.webhookUrls.chatTrigger"),
9943
+ clickToDisplay: i18n2.baseText("nodeWebhooks.clickToDisplayWebhookUrls.formTrigger"),
9944
+ clickToHide: i18n2.baseText("nodeWebhooks.clickToHideWebhookUrls.chatTrigger"),
9945
+ clickToCopy: i18n2.baseText("nodeWebhooks.clickToCopyWebhookUrls.chatTrigger"),
9946
+ testUrl: i18n2.baseText("nodeWebhooks.testUrl"),
9947
+ productionUrl: i18n2.baseText("nodeWebhooks.productionUrl"),
9948
+ copyTitle: i18n2.baseText("nodeWebhooks.showMessage.title.chatTrigger"),
9949
+ copyMessage: i18n2.baseText("nodeWebhooks.showMessage.message.chatTrigger")
8939
9950
  };
8940
9951
  case FORM_TRIGGER_NODE_TYPE:
8941
9952
  return {
8942
- toggleTitle: i18n.baseText("nodeWebhooks.webhookUrls.formTrigger"),
8943
- clickToDisplay: i18n.baseText("nodeWebhooks.clickToDisplayWebhookUrls.formTrigger"),
8944
- clickToHide: i18n.baseText("nodeWebhooks.clickToHideWebhookUrls.formTrigger"),
8945
- clickToCopy: i18n.baseText("nodeWebhooks.clickToCopyWebhookUrls.formTrigger"),
8946
- testUrl: i18n.baseText("nodeWebhooks.testUrl"),
8947
- productionUrl: i18n.baseText("nodeWebhooks.productionUrl"),
8948
- copyTitle: i18n.baseText("nodeWebhooks.showMessage.title.formTrigger"),
8949
- copyMessage: i18n.baseText("nodeWebhooks.showMessage.message.formTrigger")
9953
+ toggleTitle: i18n2.baseText("nodeWebhooks.webhookUrls.formTrigger"),
9954
+ clickToDisplay: i18n2.baseText("nodeWebhooks.clickToDisplayWebhookUrls.formTrigger"),
9955
+ clickToHide: i18n2.baseText("nodeWebhooks.clickToHideWebhookUrls.formTrigger"),
9956
+ clickToCopy: i18n2.baseText("nodeWebhooks.clickToCopyWebhookUrls.formTrigger"),
9957
+ testUrl: i18n2.baseText("nodeWebhooks.testUrl"),
9958
+ productionUrl: i18n2.baseText("nodeWebhooks.productionUrl"),
9959
+ copyTitle: i18n2.baseText("nodeWebhooks.showMessage.title.formTrigger"),
9960
+ copyMessage: i18n2.baseText("nodeWebhooks.showMessage.message.formTrigger")
8950
9961
  };
8951
9962
  case MCP_TRIGGER_NODE_TYPE:
8952
9963
  return {
8953
- toggleTitle: i18n.baseText("nodeWebhooks.webhookUrls.mcpTrigger"),
8954
- clickToDisplay: i18n.baseText("nodeWebhooks.clickToDisplayWebhookUrls.mcpTrigger"),
8955
- clickToHide: i18n.baseText("nodeWebhooks.clickToHideWebhookUrls.mcpTrigger"),
8956
- clickToCopy: i18n.baseText("nodeWebhooks.clickToCopyWebhookUrls.mcpTrigger"),
8957
- testUrl: i18n.baseText("nodeWebhooks.testUrl"),
8958
- productionUrl: i18n.baseText("nodeWebhooks.productionUrl"),
8959
- copyTitle: i18n.baseText("nodeWebhooks.showMessage.title.mcpTrigger"),
9964
+ toggleTitle: i18n2.baseText("nodeWebhooks.webhookUrls.mcpTrigger"),
9965
+ clickToDisplay: i18n2.baseText("nodeWebhooks.clickToDisplayWebhookUrls.mcpTrigger"),
9966
+ clickToHide: i18n2.baseText("nodeWebhooks.clickToHideWebhookUrls.mcpTrigger"),
9967
+ clickToCopy: i18n2.baseText("nodeWebhooks.clickToCopyWebhookUrls.mcpTrigger"),
9968
+ testUrl: i18n2.baseText("nodeWebhooks.testUrl"),
9969
+ productionUrl: i18n2.baseText("nodeWebhooks.productionUrl"),
9970
+ copyTitle: i18n2.baseText("nodeWebhooks.showMessage.title.mcpTrigger"),
8960
9971
  copyMessage: void 0
8961
9972
  };
8962
9973
  default:
8963
9974
  return {
8964
- toggleTitle: i18n.baseText("nodeWebhooks.webhookUrls"),
8965
- clickToDisplay: i18n.baseText("nodeWebhooks.clickToDisplayWebhookUrls"),
8966
- clickToHide: i18n.baseText("nodeWebhooks.clickToHideWebhookUrls"),
8967
- clickToCopy: i18n.baseText("nodeWebhooks.clickToCopyWebhookUrls"),
8968
- testUrl: i18n.baseText("nodeWebhooks.testUrl"),
8969
- productionUrl: i18n.baseText("nodeWebhooks.productionUrl"),
8970
- copyTitle: i18n.baseText("nodeWebhooks.showMessage.title"),
9975
+ toggleTitle: i18n2.baseText("nodeWebhooks.webhookUrls"),
9976
+ clickToDisplay: i18n2.baseText("nodeWebhooks.clickToDisplayWebhookUrls"),
9977
+ clickToHide: i18n2.baseText("nodeWebhooks.clickToHideWebhookUrls"),
9978
+ clickToCopy: i18n2.baseText("nodeWebhooks.clickToCopyWebhookUrls"),
9979
+ testUrl: i18n2.baseText("nodeWebhooks.testUrl"),
9980
+ productionUrl: i18n2.baseText("nodeWebhooks.productionUrl"),
9981
+ copyTitle: i18n2.baseText("nodeWebhooks.showMessage.title"),
8971
9982
  copyMessage: void 0
8972
9983
  };
8973
9984
  }
@@ -9295,7 +10306,7 @@ const _sfc_main$w = /* @__PURE__ */ defineComponent({
9295
10306
  const workflowsStore = useWorkflowsStore();
9296
10307
  const nodeTypesStore = useNodeTypesStore();
9297
10308
  const nodeHelpers = useNodeHelpers();
9298
- const i18n = useI18n();
10309
+ const i18n2 = useI18n();
9299
10310
  const { debounce } = useDebounce();
9300
10311
  const emit = __emit;
9301
10312
  const possibleConnections = ref([]);
@@ -9444,7 +10455,7 @@ const _sfc_main$w = /* @__PURE__ */ defineComponent({
9444
10455
  showNodeInputsIssues
9445
10456
  });
9446
10457
  return (_ctx, _cache) => {
9447
- const _component_n8n_icon_button = _sfc_main$S;
10458
+ const _component_n8n_icon_button = _sfc_main$Y;
9448
10459
  const _component_n8n_tooltip = N8nTooltip;
9449
10460
  return possibleConnections.value.length ? (openBlock(), createElementBlock("div", {
9450
10461
  key: 0,
@@ -9502,7 +10513,7 @@ const _sfc_main$w = /* @__PURE__ */ defineComponent({
9502
10513
  createTextVNode(" Add " + toDisplayString(connection.displayName) + " ", 1),
9503
10514
  hasInputIssues(getConnectionContext(connection, index)) ? (openBlock(), createBlock(TitledList, {
9504
10515
  key: 0,
9505
- title: `${unref(i18n).baseText("node.issues")}:`,
10516
+ title: `${unref(i18n2).baseText("node.issues")}:`,
9506
10517
  items: nodeInputIssues.value[connection.type]
9507
10518
  }, null, 8, ["title", "items"])) : createCommentVNode("", true)
9508
10519
  ]),
@@ -9544,7 +10555,7 @@ const _sfc_main$w = /* @__PURE__ */ defineComponent({
9544
10555
  createTextVNode(toDisplayString(node2.node.name) + " ", 1),
9545
10556
  node2.issues ? (openBlock(), createBlock(TitledList, {
9546
10557
  key: 0,
9547
- title: `${unref(i18n).baseText("node.issues")}:`,
10558
+ title: `${unref(i18n2).baseText("node.issues")}:`,
9548
10559
  items: node2.issues
9549
10560
  }, null, 8, ["title", "items"])) : createCommentVNode("", true)
9550
10561
  ]),
@@ -9553,7 +10564,7 @@ const _sfc_main$w = /* @__PURE__ */ defineComponent({
9553
10564
  class: normalizeClass(_ctx.$style.connectedNode),
9554
10565
  onClick: ($event) => onNodeClick(node2.node.name, getConnectionContext(connection, index))
9555
10566
  }, [
9556
- createVNode(_sfc_main$U, {
10567
+ createVNode(_sfc_main$$, {
9557
10568
  "node-type": node2.nodeType,
9558
10569
  "node-name": node2.node.name,
9559
10570
  "tooltip-position": "top",
@@ -9638,7 +10649,7 @@ const _sfc_main$v = /* @__PURE__ */ defineComponent({
9638
10649
  class: normalizeClass(_ctx.$style.tabs),
9639
10650
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => emit("tab-changed", $event))
9640
10651
  }, null, 8, ["model-value", "node-type", "push-ref", "class"])) : createCommentVNode("", true),
9641
- !_ctx.hideExecute ? (openBlock(), createBlock(_sfc_main$V, {
10652
+ !_ctx.hideExecute ? (openBlock(), createBlock(_sfc_main$10, {
9642
10653
  key: 1,
9643
10654
  "data-test-id": "node-execute-button",
9644
10655
  "node-name": _ctx.nodeName,
@@ -9655,10 +10666,10 @@ const _sfc_main$v = /* @__PURE__ */ defineComponent({
9655
10666
  };
9656
10667
  }
9657
10668
  });
9658
- const header$2 = "_header_1mro3_123";
10669
+ const header$1 = "_header_1mro3_123";
9659
10670
  const tabs = "_tabs_1mro3_135";
9660
10671
  const style0$n = {
9661
- header: header$2,
10672
+ header: header$1,
9662
10673
  tabs
9663
10674
  };
9664
10675
  const cssModules$n = {
@@ -9685,7 +10696,7 @@ const _sfc_main$u = /* @__PURE__ */ defineComponent({
9685
10696
  const ndvStore = useNDVStore();
9686
10697
  const projectsStore = useProjectsStore();
9687
10698
  const telemetry = useTelemetry();
9688
- const i18n = useI18n();
10699
+ const i18n2 = useI18n();
9689
10700
  const toast = useToast();
9690
10701
  const userHasOpenAiCredentialAlready = computed(
9691
10702
  () => !!credentialsStore.allCredentials.filter(
@@ -9713,8 +10724,8 @@ const _sfc_main$u = /* @__PURE__ */ defineComponent({
9713
10724
  } catch (e) {
9714
10725
  toast.showError(
9715
10726
  e,
9716
- i18n.baseText("freeAi.credits.showError.claim.title"),
9717
- i18n.baseText("freeAi.credits.showError.claim.message")
10727
+ i18n2.baseText("freeAi.credits.showError.claim.title"),
10728
+ i18n2.baseText("freeAi.credits.showError.claim.message")
9718
10729
  );
9719
10730
  } finally {
9720
10731
  claimingCredits.value = false;
@@ -9734,13 +10745,13 @@ const _sfc_main$u = /* @__PURE__ */ defineComponent({
9734
10745
  createVNode(_component_n8n_button, {
9735
10746
  type: "tertiary",
9736
10747
  size: "small",
9737
- label: unref(i18n).baseText("freeAi.credits.callout.claim.button.label"),
10748
+ label: unref(i18n2).baseText("freeAi.credits.callout.claim.button.label"),
9738
10749
  loading: claimingCredits.value,
9739
10750
  onClick: onClaimCreditsClicked
9740
10751
  }, null, 8, ["label", "loading"])
9741
10752
  ]),
9742
10753
  default: withCtx(() => [
9743
- createTextVNode(toDisplayString(unref(i18n).baseText("freeAi.credits.callout.claim.title", {
10754
+ createTextVNode(toDisplayString(unref(i18n2).baseText("freeAi.credits.callout.claim.title", {
9744
10755
  interpolate: { credits: unref(settingsStore).aiCreditsQuota }
9745
10756
  })) + " ", 1)
9746
10757
  ]),
@@ -9753,7 +10764,7 @@ const _sfc_main$u = /* @__PURE__ */ defineComponent({
9753
10764
  default: withCtx(() => [
9754
10765
  createVNode(_component_n8n_text, { size: "small" }, {
9755
10766
  default: withCtx(() => [
9756
- createTextVNode(toDisplayString(unref(i18n).baseText("freeAi.credits.callout.success.title.part1", {
10767
+ createTextVNode(toDisplayString(unref(i18n2).baseText("freeAi.credits.callout.success.title.part1", {
9757
10768
  interpolate: { credits: unref(settingsStore).aiCreditsQuota }
9758
10769
  })), 1)
9759
10770
  ]),
@@ -9765,7 +10776,7 @@ const _sfc_main$u = /* @__PURE__ */ defineComponent({
9765
10776
  bold: true
9766
10777
  }, {
9767
10778
  default: withCtx(() => [
9768
- createTextVNode(toDisplayString(unref(i18n).baseText("freeAi.credits.callout.success.title.part2")), 1)
10779
+ createTextVNode(toDisplayString(unref(i18n2).baseText("freeAi.credits.callout.success.title.part2")), 1)
9769
10780
  ]),
9770
10781
  _: 1
9771
10782
  })
@@ -9821,6 +10832,18 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
9821
10832
  const props = __props;
9822
10833
  const emit = __emit;
9823
10834
  const slots = useSlots();
10835
+ const nodeValues = ref({
10836
+ color: "#ff0000",
10837
+ alwaysOutputData: false,
10838
+ executeOnce: false,
10839
+ notesInFlow: false,
10840
+ onError: "stopWorkflow",
10841
+ retryOnFail: false,
10842
+ maxTries: 3,
10843
+ waitBetweenTries: 1e3,
10844
+ notes: "",
10845
+ parameters: {}
10846
+ });
9824
10847
  const nodeTypesStore = useNodeTypesStore();
9825
10848
  const ndvStore = useNDVStore();
9826
10849
  const workflowsStore = useWorkflowsStore();
@@ -9830,9 +10853,8 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
9830
10853
  const telemetry = useTelemetry();
9831
10854
  const nodeHelpers = useNodeHelpers();
9832
10855
  const externalHooks = useExternalHooks();
9833
- const i18n = useI18n();
10856
+ const i18n2 = useI18n();
9834
10857
  const nodeSettingsParameters = useNodeSettingsParameters();
9835
- const nodeValues = nodeSettingsParameters.nodeValues;
9836
10858
  const nodeParameterWrapper = useTemplateRef("nodeParameterWrapper");
9837
10859
  const shouldShowStaticScrollbar = ref(false);
9838
10860
  if (props.isEmbeddedInCanvas) {
@@ -9846,6 +10868,7 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
9846
10868
  const hiddenIssuesInputs = ref([]);
9847
10869
  const nodeSettings = ref([]);
9848
10870
  const subConnections = ref(null);
10871
+ const installedPackage = ref(void 0);
9849
10872
  const currentWorkflowInstance = computed(() => workflowsStore.getCurrentWorkflow());
9850
10873
  const currentWorkflow = computed(
9851
10874
  () => workflowsStore.getWorkflowById(currentWorkflowInstance.value.id)
@@ -9876,7 +10899,7 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
9876
10899
  );
9877
10900
  const executeButtonTooltip = computed(() => {
9878
10901
  if (node2.value && isLatestNodeVersion.value && props.inputSize > 1 && !nodeHelpers.isSingleExecution(node2.value.type, node2.value.parameters)) {
9879
- return i18n.baseText("nodeSettings.executeButtonTooltip.times", {
10902
+ return i18n2.baseText("nodeSettings.executeButtonTooltip.times", {
9880
10903
  interpolate: { inputSize: props.inputSize }
9881
10904
  });
9882
10905
  }
@@ -9884,12 +10907,12 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
9884
10907
  });
9885
10908
  const nodeVersionTag = computed(() => {
9886
10909
  if (!nodeType.value || nodeType.value.hidden) {
9887
- return i18n.baseText("nodeSettings.deprecated");
10910
+ return i18n2.baseText("nodeSettings.deprecated");
9888
10911
  }
9889
10912
  if (isLatestNodeVersion.value) {
9890
- return i18n.baseText("nodeSettings.latest");
10913
+ return i18n2.baseText("nodeSettings.latest");
9891
10914
  }
9892
- return i18n.baseText("nodeSettings.latestVersion", {
10915
+ return i18n2.baseText("nodeSettings.latestVersion", {
9893
10916
  interpolate: { version: latestVersion.value.toString() }
9894
10917
  });
9895
10918
  });
@@ -9912,6 +10935,7 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
9912
10935
  );
9913
10936
  const outputPanelEditMode = computed(() => ndvStore.outputPanelEditMode);
9914
10937
  const isCommunityNode = computed(() => !!node2.value && isCommunityPackageName(node2.value.type));
10938
+ const packageName = computed(() => node2.value?.type.split(".")[0] ?? "");
9915
10939
  const usedCredentials = computed(
9916
10940
  () => Object.values(workflowsStore.usedCredentials).filter(
9917
10941
  (credential) => Object.values(node2.value?.credentials || []).find(
@@ -10005,7 +11029,11 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10005
11029
  );
10006
11030
  for (const key of Object.keys(nodeParameters)) {
10007
11031
  if (nodeParameters?.[key] !== null && nodeParameters?.[key] !== void 0) {
10008
- nodeSettingsParameters.setValue(`parameters.${key}`, nodeParameters[key]);
11032
+ nodeSettingsParameters.setValue(
11033
+ nodeValues,
11034
+ `parameters.${key}`,
11035
+ nodeParameters[key]
11036
+ );
10009
11037
  }
10010
11038
  }
10011
11039
  if (nodeParameters) {
@@ -10018,7 +11046,13 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10018
11046
  nodeHelpers.updateNodeCredentialIssuesByName(_node.name);
10019
11047
  }
10020
11048
  } else if (nameIsParameter(parameterData)) {
10021
- nodeSettingsParameters.updateNodeParameter(parameterData, newValue, _node, isToolNode.value);
11049
+ nodeSettingsParameters.updateNodeParameter(
11050
+ nodeValues,
11051
+ parameterData,
11052
+ newValue,
11053
+ _node,
11054
+ isToolNode.value
11055
+ );
10022
11056
  } else {
10023
11057
  nodeValues.value = {
10024
11058
  ...nodeValues.value,
@@ -10061,34 +11095,34 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10061
11095
  nodeSettings.value.push(
10062
11096
  ...[
10063
11097
  {
10064
- displayName: i18n.baseText("nodeSettings.alwaysOutputData.displayName"),
11098
+ displayName: i18n2.baseText("nodeSettings.alwaysOutputData.displayName"),
10065
11099
  name: "alwaysOutputData",
10066
11100
  type: "boolean",
10067
11101
  default: false,
10068
11102
  noDataExpression: true,
10069
- description: i18n.baseText("nodeSettings.alwaysOutputData.description"),
11103
+ description: i18n2.baseText("nodeSettings.alwaysOutputData.description"),
10070
11104
  isNodeSetting: true
10071
11105
  },
10072
11106
  {
10073
- displayName: i18n.baseText("nodeSettings.executeOnce.displayName"),
11107
+ displayName: i18n2.baseText("nodeSettings.executeOnce.displayName"),
10074
11108
  name: "executeOnce",
10075
11109
  type: "boolean",
10076
11110
  default: false,
10077
11111
  noDataExpression: true,
10078
- description: i18n.baseText("nodeSettings.executeOnce.description"),
11112
+ description: i18n2.baseText("nodeSettings.executeOnce.description"),
10079
11113
  isNodeSetting: true
10080
11114
  },
10081
11115
  {
10082
- displayName: i18n.baseText("nodeSettings.retryOnFail.displayName"),
11116
+ displayName: i18n2.baseText("nodeSettings.retryOnFail.displayName"),
10083
11117
  name: "retryOnFail",
10084
11118
  type: "boolean",
10085
11119
  default: false,
10086
11120
  noDataExpression: true,
10087
- description: i18n.baseText("nodeSettings.retryOnFail.description"),
11121
+ description: i18n2.baseText("nodeSettings.retryOnFail.description"),
10088
11122
  isNodeSetting: true
10089
11123
  },
10090
11124
  {
10091
- displayName: i18n.baseText("nodeSettings.maxTries.displayName"),
11125
+ displayName: i18n2.baseText("nodeSettings.maxTries.displayName"),
10092
11126
  name: "maxTries",
10093
11127
  type: "number",
10094
11128
  typeOptions: {
@@ -10102,11 +11136,11 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10102
11136
  }
10103
11137
  },
10104
11138
  noDataExpression: true,
10105
- description: i18n.baseText("nodeSettings.maxTries.description"),
11139
+ description: i18n2.baseText("nodeSettings.maxTries.description"),
10106
11140
  isNodeSetting: true
10107
11141
  },
10108
11142
  {
10109
- displayName: i18n.baseText("nodeSettings.waitBetweenTries.displayName"),
11143
+ displayName: i18n2.baseText("nodeSettings.waitBetweenTries.displayName"),
10110
11144
  name: "waitBetweenTries",
10111
11145
  type: "number",
10112
11146
  typeOptions: {
@@ -10120,36 +11154,36 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10120
11154
  }
10121
11155
  },
10122
11156
  noDataExpression: true,
10123
- description: i18n.baseText("nodeSettings.waitBetweenTries.description"),
11157
+ description: i18n2.baseText("nodeSettings.waitBetweenTries.description"),
10124
11158
  isNodeSetting: true
10125
11159
  },
10126
11160
  {
10127
- displayName: i18n.baseText("nodeSettings.onError.displayName"),
11161
+ displayName: i18n2.baseText("nodeSettings.onError.displayName"),
10128
11162
  name: "onError",
10129
11163
  type: "options",
10130
11164
  options: [
10131
11165
  {
10132
- name: i18n.baseText("nodeSettings.onError.options.stopWorkflow.displayName"),
11166
+ name: i18n2.baseText("nodeSettings.onError.options.stopWorkflow.displayName"),
10133
11167
  value: "stopWorkflow",
10134
- description: i18n.baseText("nodeSettings.onError.options.stopWorkflow.description")
11168
+ description: i18n2.baseText("nodeSettings.onError.options.stopWorkflow.description")
10135
11169
  },
10136
11170
  {
10137
- name: i18n.baseText("nodeSettings.onError.options.continueRegularOutput.displayName"),
11171
+ name: i18n2.baseText("nodeSettings.onError.options.continueRegularOutput.displayName"),
10138
11172
  value: "continueRegularOutput",
10139
- description: i18n.baseText(
11173
+ description: i18n2.baseText(
10140
11174
  "nodeSettings.onError.options.continueRegularOutput.description"
10141
11175
  )
10142
11176
  },
10143
11177
  {
10144
- name: i18n.baseText("nodeSettings.onError.options.continueErrorOutput.displayName"),
11178
+ name: i18n2.baseText("nodeSettings.onError.options.continueErrorOutput.displayName"),
10145
11179
  value: "continueErrorOutput",
10146
- description: i18n.baseText(
11180
+ description: i18n2.baseText(
10147
11181
  "nodeSettings.onError.options.continueErrorOutput.description"
10148
11182
  )
10149
11183
  }
10150
11184
  ],
10151
11185
  default: "stopWorkflow",
10152
- description: i18n.baseText("nodeSettings.onError.description"),
11186
+ description: i18n2.baseText("nodeSettings.onError.description"),
10153
11187
  noDataExpression: true,
10154
11188
  isNodeSetting: true
10155
11189
  }
@@ -10159,7 +11193,7 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10159
11193
  nodeSettings.value.push(
10160
11194
  ...[
10161
11195
  {
10162
- displayName: i18n.baseText("nodeSettings.notes.displayName"),
11196
+ displayName: i18n2.baseText("nodeSettings.notes.displayName"),
10163
11197
  name: "notes",
10164
11198
  type: "string",
10165
11199
  typeOptions: {
@@ -10167,16 +11201,16 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10167
11201
  },
10168
11202
  default: "",
10169
11203
  noDataExpression: true,
10170
- description: i18n.baseText("nodeSettings.notes.description"),
11204
+ description: i18n2.baseText("nodeSettings.notes.description"),
10171
11205
  isNodeSetting: true
10172
11206
  },
10173
11207
  {
10174
- displayName: i18n.baseText("nodeSettings.notesInFlow.displayName"),
11208
+ displayName: i18n2.baseText("nodeSettings.notesInFlow.displayName"),
10175
11209
  name: "notesInFlow",
10176
11210
  type: "boolean",
10177
11211
  default: false,
10178
11212
  noDataExpression: true,
10179
- description: i18n.baseText("nodeSettings.notesInFlow.description"),
11213
+ description: i18n2.baseText("nodeSettings.notesInFlow.description"),
10180
11214
  isNodeSetting: true
10181
11215
  }
10182
11216
  ]
@@ -10344,7 +11378,7 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10344
11378
  watch(node2, () => {
10345
11379
  setNodeValues();
10346
11380
  });
10347
- onMounted(() => {
11381
+ onMounted(async () => {
10348
11382
  populateHiddenIssuesSet();
10349
11383
  populateSettings();
10350
11384
  setNodeValues();
@@ -10354,6 +11388,9 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10354
11388
  }
10355
11389
  importCurlEventBus.on("setHttpNodeParameters", setHttpNodeParameters);
10356
11390
  ndvEventBus.on("updateParameterValue", valueChanged);
11391
+ if (isCommunityNode.value && useUsersStore().isInstanceOwner) {
11392
+ installedPackage.value = await useCommunityNodesStore().getInstalledPackage(packageName.value);
11393
+ }
10357
11394
  });
10358
11395
  onBeforeUnmount(() => {
10359
11396
  props.eventBus?.off("openSettings", openSettings);
@@ -10375,11 +11412,12 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10375
11412
  const _component_NodeTitle = NodeTitle;
10376
11413
  const _component_n8n_icon = N8nIcon;
10377
11414
  const _component_n8n_text = N8nText;
10378
- const _component_i18n_t = resolveComponent("i18n-t");
10379
11415
  const _component_n8n_link = N8nLink;
10380
11416
  const _component_n8n_notice = N8nNotice;
11417
+ const _component_CommunityNodeUpdateInfo = _sfc_main$z;
10381
11418
  const _component_N8nIcon = N8nIcon;
10382
11419
  const _component_n8n_block_ui = N8nBlockUi;
11420
+ const _component_CommunityNodeFooter = CommunityNodeFooter;
10383
11421
  return openBlock(), createElementBlock("div", {
10384
11422
  class: normalizeClass({
10385
11423
  "node-settings": true,
@@ -10403,7 +11441,7 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10403
11441
  "onUpdate:modelValue": nameChanged
10404
11442
  }, null, 8, ["model-value", "node-type", "read-only"])) : createCommentVNode("", true),
10405
11443
  isExecutable2.value || slots.actions ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
10406
- isExecutable2.value && !_ctx.blockUI && node2.value && nodeValid.value ? (openBlock(), createBlock(_sfc_main$V, {
11444
+ isExecutable2.value && !_ctx.blockUI && node2.value && nodeValid.value ? (openBlock(), createBlock(_sfc_main$10, {
10407
11445
  key: 0,
10408
11446
  "data-test-id": "node-execute-button",
10409
11447
  "node-name": node2.value.name,
@@ -10453,7 +11491,7 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10453
11491
  bold: ""
10454
11492
  }, {
10455
11493
  default: withCtx(() => [
10456
- createTextVNode(toDisplayString(unref(i18n).baseText("nodeSettings.communityNodeUnknown.title")), 1)
11494
+ createTextVNode(toDisplayString(unref(i18n2).baseText("nodeSettings.communityNodeUnknown.title")), 1)
10457
11495
  ]),
10458
11496
  _: 1
10459
11497
  })
@@ -10463,9 +11501,10 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10463
11501
  class: normalizeClass(_ctx.$style.descriptionContainer)
10464
11502
  }, [
10465
11503
  createBaseVNode("div", _hoisted_4, [
10466
- createVNode(_component_i18n_t, {
11504
+ createVNode(unref(I18nT), {
10467
11505
  keypath: "nodeSettings.communityNodeUnknown.description",
10468
11506
  tag: "span",
11507
+ scope: "global",
10469
11508
  onClick: onMissingNodeTextClick
10470
11509
  }, {
10471
11510
  action: withCtx(() => [
@@ -10482,20 +11521,21 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10482
11521
  onClick: onMissingNodeLearnMoreLinkClick
10483
11522
  }, {
10484
11523
  default: withCtx(() => [
10485
- createTextVNode(toDisplayString(unref(i18n).baseText("nodeSettings.communityNodeUnknown.installLink.text")), 1)
11524
+ createTextVNode(toDisplayString(unref(i18n2).baseText("nodeSettings.communityNodeUnknown.installLink.text")), 1)
10486
11525
  ]),
10487
11526
  _: 1
10488
11527
  }, 8, ["to"])
10489
- ], 2)) : (openBlock(), createBlock(_component_i18n_t, {
11528
+ ], 2)) : (openBlock(), createBlock(unref(I18nT), {
10490
11529
  key: 1,
10491
11530
  keypath: "nodeSettings.nodeTypeUnknown.description",
10492
- tag: "span"
11531
+ tag: "span",
11532
+ scope: "global"
10493
11533
  }, {
10494
11534
  action: withCtx(() => [
10495
11535
  createBaseVNode("a", {
10496
11536
  href: unref(CUSTOM_NODES_DOCS_URL),
10497
11537
  target: "_blank",
10498
- textContent: toDisplayString(unref(i18n).baseText("nodeSettings.nodeTypeUnknown.description.customNode"))
11538
+ textContent: toDisplayString(unref(i18n2).baseText("nodeSettings.nodeTypeUnknown.description.customNode"))
10499
11539
  }, null, 8, _hoisted_6)
10500
11540
  ]),
10501
11541
  _: 1
@@ -10516,7 +11556,7 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10516
11556
  }, [
10517
11557
  hasForeignCredential.value && !isHomeProjectTeam.value ? (openBlock(), createBlock(_component_n8n_notice, {
10518
11558
  key: 0,
10519
- content: unref(i18n).baseText("nodeSettings.hasForeignCredential", {
11559
+ content: unref(i18n2).baseText("nodeSettings.hasForeignCredential", {
10520
11560
  interpolate: { owner: credentialOwnerName.value }
10521
11561
  })
10522
11562
  }, null, 8, ["content"])) : createCommentVNode("", true),
@@ -10526,11 +11566,11 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10526
11566
  node: node2.value,
10527
11567
  "node-type-description": nodeType.value
10528
11568
  }, null, 8, ["node", "node-type-description"]),
10529
- nodeValuesInitialized.value ? (openBlock(), createBlock(_sfc_main$W, {
11569
+ nodeValuesInitialized.value ? (openBlock(), createBlock(_sfc_main$11, {
10530
11570
  key: 0,
10531
11571
  parameters: parametersNoneSetting.value,
10532
11572
  "hide-delete": true,
10533
- "node-values": unref(nodeValues),
11573
+ "node-values": nodeValues.value,
10534
11574
  "is-read-only": isReadOnly.value,
10535
11575
  "hidden-issues-inputs": hiddenIssuesInputs.value,
10536
11576
  path: "parameters",
@@ -10556,14 +11596,14 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10556
11596
  showNoParametersNotice.value ? (openBlock(), createElementBlock("div", _hoisted_7, [
10557
11597
  createVNode(_component_n8n_text, null, {
10558
11598
  default: withCtx(() => [
10559
- createTextVNode(toDisplayString(unref(i18n).baseText("nodeSettings.thisNodeDoesNotHaveAnyParameters")), 1)
11599
+ createTextVNode(toDisplayString(unref(i18n2).baseText("nodeSettings.thisNodeDoesNotHaveAnyParameters")), 1)
10560
11600
  ]),
10561
11601
  _: 1
10562
11602
  })
10563
11603
  ])) : createCommentVNode("", true),
10564
- unref(nodeHelpers).isCustomApiCallSelected(unref(nodeValues)) ? (openBlock(), createElementBlock("div", _hoisted_8, [
11604
+ unref(nodeHelpers).isCustomApiCallSelected(nodeValues.value) ? (openBlock(), createElementBlock("div", _hoisted_8, [
10565
11605
  createVNode(_component_n8n_notice, {
10566
- content: unref(i18n).baseText("nodeSettings.useTheHttpRequestNode", {
11606
+ content: unref(i18n2).baseText("nodeSettings.useTheHttpRequestNode", {
10567
11607
  interpolate: { nodeTypeDisplayName: nodeType.value?.displayName ?? "" }
10568
11608
  })
10569
11609
  }, null, 8, ["content"])
@@ -10572,9 +11612,13 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10572
11612
  [vShow, openPanel.value === "params"]
10573
11613
  ]),
10574
11614
  withDirectives(createBaseVNode("div", null, [
10575
- createVNode(_sfc_main$W, {
11615
+ isCommunityNode.value && installedPackage.value?.updateAvailable ? (openBlock(), createBlock(_component_CommunityNodeUpdateInfo, {
11616
+ key: 0,
11617
+ "data-test-id": "update-available"
11618
+ })) : createCommentVNode("", true),
11619
+ createVNode(_sfc_main$11, {
10576
11620
  parameters: parametersSetting.value,
10577
- "node-values": unref(nodeValues),
11621
+ "node-values": nodeValues.value,
10578
11622
  "is-read-only": isReadOnly.value,
10579
11623
  "hide-delete": true,
10580
11624
  "hidden-issues-inputs": hiddenIssuesInputs.value,
@@ -10582,10 +11626,10 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10582
11626
  onValueChanged: valueChanged,
10583
11627
  onParameterBlur
10584
11628
  }, null, 8, ["parameters", "node-values", "is-read-only", "hidden-issues-inputs"]),
10585
- createVNode(_sfc_main$W, {
11629
+ createVNode(_sfc_main$11, {
10586
11630
  parameters: nodeSettings.value,
10587
11631
  "hide-delete": true,
10588
- "node-values": unref(nodeValues),
11632
+ "node-values": nodeValues.value,
10589
11633
  "is-read-only": isReadOnly.value,
10590
11634
  "hidden-issues-inputs": hiddenIssuesInputs.value,
10591
11635
  path: "",
@@ -10593,7 +11637,7 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10593
11637
  onParameterBlur
10594
11638
  }, null, 8, ["parameters", "node-values", "is-read-only", "hidden-issues-inputs"]),
10595
11639
  createBaseVNode("div", _hoisted_9, [
10596
- createTextVNode(toDisplayString(unref(i18n).baseText("nodeSettings.nodeVersion", {
11640
+ createTextVNode(toDisplayString(unref(i18n2).baseText("nodeSettings.nodeVersion", {
10597
11641
  interpolate: {
10598
11642
  node: nodeType.value?.displayName,
10599
11643
  version: (node2.value.typeVersion ?? latestVersion.value).toString()
@@ -10613,7 +11657,7 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10613
11657
  onClick: onFeatureRequestClick
10614
11658
  }, [
10615
11659
  createVNode(_component_N8nIcon, { icon: "lightbulb" }),
10616
- createTextVNode(" " + toDisplayString(unref(i18n).baseText("ndv.featureRequest")), 1)
11660
+ createTextVNode(" " + toDisplayString(unref(i18n2).baseText("ndv.featureRequest")), 1)
10617
11661
  ])
10618
11662
  ], 2)) : createCommentVNode("", true)
10619
11663
  ], 34)) : createCommentVNode("", true),
@@ -10625,17 +11669,22 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
10625
11669
  onSwitchSelectedNode,
10626
11670
  onOpenConnectionNodeCreator
10627
11671
  }, null, 8, ["root-node"])) : createCommentVNode("", true),
10628
- createVNode(_component_n8n_block_ui, { show: _ctx.blockUI }, null, 8, ["show"])
11672
+ createVNode(_component_n8n_block_ui, { show: _ctx.blockUI }, null, 8, ["show"]),
11673
+ openPanel.value === "settings" && isCommunityNode.value ? (openBlock(), createBlock(_component_CommunityNodeFooter, {
11674
+ key: 5,
11675
+ "package-name": packageName.value,
11676
+ "show-manage": unref(useUsersStore)().isInstanceOwner
11677
+ }, null, 8, ["package-name", "show-manage"])) : createCommentVNode("", true)
10629
11678
  ], 34);
10630
11679
  };
10631
11680
  }
10632
11681
  });
10633
- const header$1 = "_header_1vh2c_123";
11682
+ const header = "_header_1vh2c_123";
10634
11683
  const warningIcon = "_warningIcon_1vh2c_127";
10635
11684
  const descriptionContainer = "_descriptionContainer_1vh2c_132";
10636
11685
  const featureRequest = "_featureRequest_1vh2c_137";
10637
11686
  const style0$m = {
10638
- header: header$1,
11687
+ header,
10639
11688
  warningIcon,
10640
11689
  descriptionContainer,
10641
11690
  featureRequest
@@ -10643,7 +11692,7 @@ const style0$m = {
10643
11692
  const cssModules$m = {
10644
11693
  "$style": style0$m
10645
11694
  };
10646
- const NodeSettings = /* @__PURE__ */ _export_sfc$1(_sfc_main$t, [["__cssModules", cssModules$m], ["__scopeId", "data-v-529b0cab"]]);
11695
+ const NodeSettings = /* @__PURE__ */ _export_sfc$1(_sfc_main$t, [["__cssModules", cssModules$m], ["__scopeId", "data-v-b0fee41c"]]);
10647
11696
  const _sfc_main$s = /* @__PURE__ */ defineComponent({
10648
11697
  __name: "ExperimentalCanvasNodeSettings",
10649
11698
  props: {
@@ -10692,6 +11741,7 @@ const _sfc_main$r = /* @__PURE__ */ defineComponent({
10692
11741
  isConfigurable: { type: Boolean }
10693
11742
  },
10694
11743
  setup(__props) {
11744
+ const ndvStore = useNDVStore();
10695
11745
  const experimentalNdvStore = useExperimentalNdvStore();
10696
11746
  const isExpanded = computed(() => !experimentalNdvStore.collapsedNodes[__props.nodeId]);
10697
11747
  const nodeTypesStore = useNodeTypesStore();
@@ -10727,54 +11777,65 @@ const _sfc_main$r = /* @__PURE__ */ defineComponent({
10727
11777
  )
10728
11778
  );
10729
11779
  const isOnceVisible = ref(isVisible.value);
10730
- provide(
10731
- ExpressionLocalResolveContextSymbol,
10732
- computed(() => {
10733
- if (!node2.value) {
10734
- return void 0;
11780
+ const shouldShowInputPanel = ref(false);
11781
+ const containerRef = useTemplateRef("container");
11782
+ const inputPanelContainerRef = useTemplateRef("inputPanelContainer");
11783
+ const activeElement = useActiveElement();
11784
+ const expressionResolveCtx = computed(() => {
11785
+ if (!node2.value) {
11786
+ return void 0;
11787
+ }
11788
+ const runIndex = 0;
11789
+ const execution = workflowsStore.workflowExecutionData;
11790
+ const nodeName = node2.value.name;
11791
+ function findInputNode() {
11792
+ const taskData = (execution?.data?.resultData.runData[nodeName] ?? [])[runIndex];
11793
+ const source = taskData?.source[0];
11794
+ if (source) {
11795
+ return {
11796
+ name: source.previousNode,
11797
+ branchIndex: source.previousNodeOutput ?? 0,
11798
+ runIndex: source.previousNodeRun ?? 0
11799
+ };
10735
11800
  }
10736
- const workflow = workflowsStore.getCurrentWorkflow();
10737
- const runIndex = 0;
10738
- const execution = workflowsStore.workflowExecutionData;
10739
- const nodeName = node2.value.name;
10740
- function findInputNode() {
10741
- const taskData = (execution?.data?.resultData.runData[nodeName] ?? [])[runIndex];
10742
- const source = taskData?.source[0];
10743
- if (source) {
10744
- return {
10745
- name: source.previousNode,
10746
- branchIndex: source.previousNodeOutput ?? 0,
10747
- runIndex: source.previousNodeRun ?? 0
10748
- };
10749
- }
10750
- const inputs2 = workflow.getParentNodesByDepth(nodeName, 1);
10751
- if (inputs2.length > 0) {
10752
- return {
10753
- name: inputs2[0].name,
10754
- branchIndex: inputs2[0].indicies[0] ?? 0,
10755
- runIndex: 0
10756
- };
10757
- }
10758
- return void 0;
11801
+ const inputs2 = workflow.value.getParentNodesByDepth(nodeName, 1);
11802
+ if (inputs2.length > 0) {
11803
+ return {
11804
+ name: inputs2[0].name,
11805
+ branchIndex: inputs2[0].indicies[0] ?? 0,
11806
+ runIndex: 0
11807
+ };
10759
11808
  }
10760
- return {
10761
- localResolve: true,
10762
- envVars: useEnvironmentsStore().variablesAsObject,
10763
- workflow,
10764
- execution,
10765
- nodeName,
10766
- additionalKeys: {},
10767
- inputNode: findInputNode()
10768
- };
10769
- })
10770
- );
10771
- watchOnce(isVisible, (visible2) => {
10772
- isOnceVisible.value = isOnceVisible.value || visible2;
11809
+ return void 0;
11810
+ }
11811
+ return {
11812
+ localResolve: true,
11813
+ envVars: useEnvironmentsStore().variablesAsObject,
11814
+ workflow: workflow.value,
11815
+ execution,
11816
+ nodeName,
11817
+ additionalKeys: {},
11818
+ inputNode: findInputNode()
11819
+ };
10773
11820
  });
11821
+ const workflow = computed(() => workflowsStore.getCurrentWorkflow());
10774
11822
  function handleToggleExpand() {
10775
11823
  experimentalNdvStore.setNodeExpanded(__props.nodeId);
10776
11824
  }
11825
+ provide(ExpressionLocalResolveContextSymbol, expressionResolveCtx);
11826
+ watchOnce(isVisible, (visible2) => {
11827
+ isOnceVisible.value = isOnceVisible.value || visible2;
11828
+ });
11829
+ watch([activeElement, vf.getSelectedNodes], ([active, selected2]) => {
11830
+ if (active && containerRef.value?.contains(active)) {
11831
+ shouldShowInputPanel.value = !!active.closest("[data-test-id=inline-expression-editor-input]") || !!inputPanelContainerRef.value?.contains(active);
11832
+ }
11833
+ if (selected2.every((sel) => sel.id !== node2.value?.id)) {
11834
+ shouldShowInputPanel.value = false;
11835
+ }
11836
+ });
10777
11837
  return (_ctx, _cache) => {
11838
+ const _component_N8nText = N8nText;
10778
11839
  return openBlock(), createElementBlock("div", {
10779
11840
  ref: "container",
10780
11841
  class: normalizeClass([_ctx.$style.component, isExpanded.value ? _ctx.$style.expanded : _ctx.$style.collapsed]),
@@ -10786,13 +11847,14 @@ const _sfc_main$r = /* @__PURE__ */ defineComponent({
10786
11847
  isOnceVisible.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
10787
11848
  isExpanded.value ? (openBlock(), createBlock(_sfc_main$s, {
10788
11849
  key: 0,
11850
+ tabindex: "-1",
10789
11851
  "node-id": _ctx.nodeId,
10790
11852
  class: normalizeClass(_ctx.$style.settingsView),
10791
11853
  "no-wheel": !isMoving.value,
10792
11854
  "is-read-only": _ctx.isReadOnly
10793
11855
  }, {
10794
11856
  actions: withCtx(() => [
10795
- createVNode(unref(_sfc_main$S), {
11857
+ createVNode(unref(_sfc_main$Y), {
10796
11858
  icon: "minimize-2",
10797
11859
  type: "secondary",
10798
11860
  text: "",
@@ -10820,35 +11882,81 @@ const _sfc_main$r = /* @__PURE__ */ defineComponent({
10820
11882
  icon: "maximize-2",
10821
11883
  size: "large"
10822
11884
  })
10823
- ], 2))
11885
+ ], 2)),
11886
+ createVNode(Transition$1, { name: "input" }, {
11887
+ default: withCtx(() => [
11888
+ shouldShowInputPanel.value && node2.value ? (openBlock(), createElementBlock("div", {
11889
+ key: 0,
11890
+ ref: "inputPanelContainer",
11891
+ class: normalizeClass(_ctx.$style.inputPanelContainer),
11892
+ tabindex: -1
11893
+ }, [
11894
+ createVNode(InputPanel, {
11895
+ class: normalizeClass(_ctx.$style.inputPanel),
11896
+ workflow: workflow.value,
11897
+ "run-index": 0,
11898
+ compact: "",
11899
+ "push-ref": "",
11900
+ "display-mode": "schema",
11901
+ "disable-display-mode-selection": "",
11902
+ "active-node-name": node2.value.name,
11903
+ "current-node-name": expressionResolveCtx.value?.inputNode?.name,
11904
+ "is-mapping-onboarded": unref(ndvStore).isMappingOnboarded,
11905
+ "focused-mappable-input": unref(ndvStore).focusedMappableInput
11906
+ }, {
11907
+ header: withCtx(() => [
11908
+ createVNode(_component_N8nText, {
11909
+ class: normalizeClass(_ctx.$style.inputPanelTitle),
11910
+ bold: true,
11911
+ color: "text-light",
11912
+ size: "small"
11913
+ }, {
11914
+ default: withCtx(() => _cache[0] || (_cache[0] = [
11915
+ createTextVNode(" Input ")
11916
+ ])),
11917
+ _: 1
11918
+ }, 8, ["class"])
11919
+ ]),
11920
+ _: 1
11921
+ }, 8, ["class", "workflow", "active-node-name", "current-node-name", "is-mapping-onboarded", "focused-mappable-input"])
11922
+ ], 2)) : createCommentVNode("", true)
11923
+ ]),
11924
+ _: 1
11925
+ })
10824
11926
  ], 64)) : createCommentVNode("", true)
10825
11927
  ], 6);
10826
11928
  };
10827
11929
  }
10828
11930
  });
10829
- const component$2 = "_component_1o2au_123";
10830
- const expanded = "_expanded_1o2au_132";
10831
- const collapsed = "_collapsed_1o2au_136";
10832
- const collapsedContent = "_collapsedContent_1o2au_147";
10833
- const settingsView = "_settingsView_1o2au_148";
11931
+ const component$2 = "_component_1fv8q_123";
11932
+ const expanded = "_expanded_1fv8q_131";
11933
+ const collapsed = "_collapsed_1fv8q_137";
11934
+ const collapsedContent = "_collapsedContent_1fv8q_149";
11935
+ const settingsView = "_settingsView_1fv8q_150";
11936
+ const inputPanelContainer = "_inputPanelContainer_1fv8q_179";
11937
+ const inputPanel = "_inputPanel_1fv8q_179";
11938
+ const inputPanelTitle = "_inputPanelTitle_1fv8q_201";
10834
11939
  const style0$l = {
10835
11940
  component: component$2,
10836
11941
  expanded,
10837
11942
  collapsed,
10838
11943
  collapsedContent,
10839
- settingsView
11944
+ settingsView,
11945
+ inputPanelContainer,
11946
+ inputPanel,
11947
+ inputPanelTitle
10840
11948
  };
10841
11949
  const cssModules$l = {
10842
11950
  "$style": style0$l
10843
11951
  };
10844
- const ExperimentalInPlaceNodeSettings = /* @__PURE__ */ _export_sfc$1(_sfc_main$r, [["__cssModules", cssModules$l]]);
11952
+ const ExperimentalInPlaceNodeSettings = /* @__PURE__ */ _export_sfc$1(_sfc_main$r, [["__cssModules", cssModules$l], ["__scopeId", "data-v-7a0aa493"]]);
10845
11953
  const _hoisted_1$3 = ["data-test-id"];
10846
11954
  const _sfc_main$q = /* @__PURE__ */ defineComponent({
10847
11955
  __name: "CanvasNodeDefault",
10848
11956
  emits: ["open:contextmenu", "activate"],
10849
11957
  setup(__props, { emit: __emit }) {
10850
11958
  const $style = useCssModule();
10851
- const i18n = useI18n();
11959
+ const i18n2 = useI18n();
10852
11960
  const emit = __emit;
10853
11961
  const { initialized, viewport } = useCanvas();
10854
11962
  const {
@@ -10945,8 +12053,8 @@ const _sfc_main$q = /* @__PURE__ */ defineComponent({
10945
12053
  }
10946
12054
  return (_ctx, _cache) => {
10947
12055
  const _component_CanvasNodeTooltip = __unplugin_components_0$3;
10948
- const _component_NodeIcon = _sfc_main$U;
10949
- const _component_CanvasNodeDisabledStrikeThrough = __unplugin_components_2;
12056
+ const _component_NodeIcon = _sfc_main$$;
12057
+ const _component_CanvasNodeDisabledStrikeThrough = __unplugin_components_2$1;
10950
12058
  const _component_CanvasNodeStatusIcons = __unplugin_components_3;
10951
12059
  return unref(experimentalNdvStore).isActive(unref(viewport).zoom) ? (openBlock(), createBlock(ExperimentalInPlaceNodeSettings, {
10952
12060
  key: 0,
@@ -10985,7 +12093,7 @@ const _sfc_main$q = /* @__PURE__ */ defineComponent({
10985
12093
  unref(isDisabled) ? (openBlock(), createElementBlock("div", {
10986
12094
  key: 1,
10987
12095
  class: normalizeClass(unref($style).disabledLabel)
10988
- }, " (" + toDisplayString(unref(i18n).baseText("node.disabled")) + ") ", 3)) : createCommentVNode("", true),
12096
+ }, " (" + toDisplayString(unref(i18n2).baseText("node.disabled")) + ") ", 3)) : createCommentVNode("", true),
10989
12097
  unref(subtitle2) ? (openBlock(), createElementBlock("div", {
10990
12098
  key: 2,
10991
12099
  class: normalizeClass(unref($style).subtitle)
@@ -12531,7 +13639,7 @@ const _sfc_main$n = /* @__PURE__ */ defineComponent({
12531
13639
  __name: "CanvasNodeAddNodes",
12532
13640
  setup(__props) {
12533
13641
  const nodeCreatorStore = useNodeCreatorStore();
12534
- const i18n = useI18n();
13642
+ const i18n2 = useI18n();
12535
13643
  const settingsStore = useSettingsStore();
12536
13644
  const templatesStore = useTemplatesStore();
12537
13645
  const isTooltipVisible = ref(false);
@@ -12585,7 +13693,7 @@ const _sfc_main$n = /* @__PURE__ */ defineComponent({
12585
13693
  "show-after": 700
12586
13694
  }, {
12587
13695
  content: withCtx(() => [
12588
- createTextVNode(toDisplayString(unref(i18n).baseText("nodeView.canvasAddButton.addATriggerNodeBeforeExecuting")), 1)
13696
+ createTextVNode(toDisplayString(unref(i18n2).baseText("nodeView.canvasAddButton.addATriggerNodeBeforeExecuting")), 1)
12589
13697
  ]),
12590
13698
  default: withCtx(() => [
12591
13699
  createBaseVNode("button", {
@@ -12605,7 +13713,7 @@ const _sfc_main$n = /* @__PURE__ */ defineComponent({
12605
13713
  createBaseVNode("p", {
12606
13714
  class: normalizeClass(_ctx.$style.label)
12607
13715
  }, [
12608
- createTextVNode(toDisplayString(unref(i18n).baseText("nodeView.canvasAddButton.addFirstStep")) + " ", 1),
13716
+ createTextVNode(toDisplayString(unref(i18n2).baseText("nodeView.canvasAddButton.addFirstStep")) + " ", 1),
12609
13717
  templatesLinkEnabled.value ? (openBlock(), createBlock(_component_N8nLink, {
12610
13718
  key: 0,
12611
13719
  to: templateRepository.value.to,
@@ -12616,7 +13724,7 @@ const _sfc_main$n = /* @__PURE__ */ defineComponent({
12616
13724
  onClick: _cache[0] || (_cache[0] = ($event) => unref(trackTemplatesClick)(unref(TemplateClickSource).emptyWorkflowLink))
12617
13725
  }, {
12618
13726
  default: withCtx(() => [
12619
- createTextVNode(toDisplayString(unref(i18n).baseText("nodeView.templateLink")), 1)
13727
+ createTextVNode(toDisplayString(unref(i18n2).baseText("nodeView.templateLink")), 1)
12620
13728
  ]),
12621
13729
  _: 1
12622
13730
  }, 8, ["to", "target"])) : createCommentVNode("", true)
@@ -12642,17 +13750,24 @@ const _sfc_main$m = /* @__PURE__ */ defineComponent({
12642
13750
  emits: ["delete"],
12643
13751
  setup(__props, { emit: __emit }) {
12644
13752
  const emit = __emit;
12645
- const i18n = useI18n();
13753
+ const i18n2 = useI18n();
13754
+ const router = useRouter();
12646
13755
  const { id: id2 } = useCanvasNode();
12647
13756
  const builderStore = useBuilderStore();
13757
+ const workflowsStore = useWorkflowsStore();
13758
+ const workflowSaver = useWorkflowSaving({ router });
12648
13759
  const isPromptVisible = ref(true);
12649
13760
  const isFocused = ref(false);
12650
13761
  const prompt = ref("");
12651
13762
  const hasContent = computed(() => prompt.value.trim().length > 0);
12652
13763
  async function onSubmit() {
12653
- builderStore.openChat();
13764
+ const isNewWorkflow = workflowsStore.isNewWorkflow;
13765
+ if (isNewWorkflow) {
13766
+ await workflowSaver.saveCurrentWorkflow();
13767
+ }
13768
+ await builderStore.openChat();
12654
13769
  emit("delete", id2.value);
12655
- await builderStore.initBuilderChat(prompt.value, "canvas");
13770
+ builderStore.sendChatMessage({ text: prompt.value, source: "canvas" });
12656
13771
  isPromptVisible.value = false;
12657
13772
  }
12658
13773
  return (_ctx, _cache) => {
@@ -12676,7 +13791,7 @@ const _sfc_main$m = /* @__PURE__ */ defineComponent({
12676
13791
  class: normalizeClass(_ctx.$style.form_textarea),
12677
13792
  type: "textarea",
12678
13793
  disabled: unref(builderStore).streaming,
12679
- placeholder: unref(i18n).baseText("aiAssistant.builder.placeholder"),
13794
+ placeholder: unref(i18n2).baseText("aiAssistant.builder.placeholder"),
12680
13795
  "read-only": false,
12681
13796
  rows: 15,
12682
13797
  onFocus: _cache[1] || (_cache[1] = ($event) => isFocused.value = true),
@@ -12692,7 +13807,7 @@ const _sfc_main$m = /* @__PURE__ */ defineComponent({
12692
13807
  onKeydown: withKeys(onSubmit, ["enter"])
12693
13808
  }, {
12694
13809
  default: withCtx(() => [
12695
- createTextVNode(toDisplayString(unref(i18n).baseText("aiAssistant.builder.buildWorkflow")), 1)
13810
+ createTextVNode(toDisplayString(unref(i18n2).baseText("aiAssistant.builder.buildWorkflow")), 1)
12696
13811
  ]),
12697
13812
  _: 1
12698
13813
  }, 8, ["disabled"])
@@ -12970,13 +14085,13 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
12970
14085
  };
12971
14086
  }
12972
14087
  });
12973
- const wrapper$2 = "_wrapper_hyidj_123";
14088
+ const wrapper$3 = "_wrapper_hyidj_123";
12974
14089
  const secondary = "_secondary_hyidj_126";
12975
14090
  const line = "_line_hyidj_126";
12976
14091
  const plus$1 = "_plus_hyidj_129";
12977
14092
  const success = "_success_hyidj_135";
12978
14093
  const style0$e = {
12979
- wrapper: wrapper$2,
14094
+ wrapper: wrapper$3,
12980
14095
  secondary,
12981
14096
  line,
12982
14097
  plus: plus$1,
@@ -13014,7 +14129,7 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
13014
14129
  setup(__props, { emit: __emit }) {
13015
14130
  const emit = __emit;
13016
14131
  const $style = useCssModule();
13017
- const i18n = useI18n();
14132
+ const i18n2 = useI18n();
13018
14133
  const { render: render2 } = useCanvasNode();
13019
14134
  const { label: label2, isConnected, isConnecting, isReadOnly, isRequired, runData: runData2 } = useCanvasNodeHandle();
13020
14135
  const classes = computed(() => ({
@@ -13027,7 +14142,7 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
13027
14142
  const renderOptions = computed(() => render2.value.options);
13028
14143
  const runDataTotal = computed(() => runData2.value?.total ?? 0);
13029
14144
  const runDataLabel2 = computed(
13030
- () => !isConnected.value && runData2.value && runData2.value.total > 0 ? i18n.baseText("ndv.output.items", {
14145
+ () => !isConnected.value && runData2.value && runData2.value.total > 0 ? i18n2.baseText("ndv.output.items", {
13031
14146
  adjustToNumber: runData2.value.total,
13032
14147
  interpolate: { count: String(runData2.value.total) }
13033
14148
  }) : ""
@@ -13395,7 +14510,7 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
13395
14510
  [style.hovered]: !!__props.hovered
13396
14511
  }));
13397
14512
  const router = useRouter();
13398
- const i18n = useI18n();
14513
+ const i18n2 = useI18n();
13399
14514
  const workflowsStore = useWorkflowsStore();
13400
14515
  const logsStore = useLogsStore();
13401
14516
  const { runEntireWorkflow } = useRunWorkflow({ router });
@@ -13434,11 +14549,11 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
13434
14549
  size: "large",
13435
14550
  disabled: isExecuting.value,
13436
14551
  "data-test-id": testId.value,
13437
- label: unref(i18n).baseText("chat.hide"),
14552
+ label: unref(i18n2).baseText("chat.hide"),
13438
14553
  onClickCapture: _cache[0] || (_cache[0] = ($event) => unref(logsStore).toggleOpen(false))
13439
14554
  }, null, 8, ["disabled", "data-test-id", "label"])) : (openBlock(), createBlock(KeyboardShortcutTooltip, {
13440
14555
  key: 1,
13441
- label: unref(i18n).baseText("chat.open"),
14556
+ label: unref(i18n2).baseText("chat.open"),
13442
14557
  shortcut: { keys: ["c"] }
13443
14558
  }, {
13444
14559
  default: withCtx(() => [
@@ -13448,7 +14563,7 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
13448
14563
  size: "large",
13449
14564
  disabled: isExecuting.value,
13450
14565
  "data-test-id": testId.value,
13451
- label: unref(i18n).baseText("chat.open"),
14566
+ label: unref(i18n2).baseText("chat.open"),
13452
14567
  onClickCapture: _cache[1] || (_cache[1] = ($event) => unref(startChat)("node"))
13453
14568
  }, null, 8, ["disabled", "data-test-id", "label"])
13454
14569
  ]),
@@ -13461,7 +14576,7 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
13461
14576
  size: "large",
13462
14577
  disabled: isExecuting.value,
13463
14578
  "data-test-id": testId.value,
13464
- label: unref(i18n).baseText("nodeView.runButtonText.executeWorkflow"),
14579
+ label: unref(i18n2).baseText("nodeView.runButtonText.executeWorkflow"),
13465
14580
  onClickCapture: handleClickExecute
13466
14581
  }, null, 8, ["disabled", "data-test-id", "label"]))
13467
14582
  ], 64)) : createCommentVNode("", true)
@@ -14279,6 +15394,10 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
14279
15394
  }
14280
15395
  }
14281
15396
  async function onTidyUp(payload) {
15397
+ if (payload.nodeIdsFilter && payload.nodeIdsFilter.length > 0) {
15398
+ clearSelectedNodes();
15399
+ addSelectedNodes(payload.nodeIdsFilter.map(findNode).filter(isPresent));
15400
+ }
14282
15401
  const applyOnSelection = selectedNodes.value.length > 1;
14283
15402
  const target2 = applyOnSelection ? "selection" : "all";
14284
15403
  const result = layout(target2);
@@ -14446,14 +15565,14 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
14446
15565
  createVNode(_component_CanvasConnectionLine, normalizeProps(guardReactiveProps(connectionLineProps)), null, 16)
14447
15566
  ]),
14448
15567
  default: withCtx(() => [
14449
- createVNode(_sfc_main$H, { id: arrowHeadMarkerId.value }, null, 8, ["id"]),
14450
- createVNode(_sfc_main$I, {
15568
+ createVNode(_sfc_main$N, { id: arrowHeadMarkerId.value }, null, 8, ["id"]),
15569
+ createVNode(_sfc_main$O, {
14451
15570
  viewport: unref(viewport),
14452
15571
  striped: _ctx.readOnly
14453
15572
  }, null, 8, ["viewport", "striped"]),
14454
15573
  createVNode(Transition$1, { name: "minimap" }, {
14455
15574
  default: withCtx(() => [
14456
- withDirectives(createVNode(unref(_sfc_main$L), {
15575
+ withDirectives(createVNode(unref(_sfc_main$R), {
14457
15576
  "data-test-id": "canvas-minimap",
14458
15577
  "aria-label": "n8n Minimap",
14459
15578
  height: 120,
@@ -14505,13 +15624,13 @@ const style0$5 = {
14505
15624
  const cssModules$5 = {
14506
15625
  "$style": style0$5
14507
15626
  };
14508
- const Canvas = /* @__PURE__ */ _export_sfc$1(_sfc_main$9, [["__cssModules", cssModules$5], ["__scopeId", "data-v-49d79266"]]);
15627
+ const Canvas = /* @__PURE__ */ _export_sfc$1(_sfc_main$9, [["__cssModules", cssModules$5], ["__scopeId", "data-v-5ad26715"]]);
14509
15628
  function useCanvasMapping({
14510
15629
  nodes,
14511
15630
  connections: connections2,
14512
15631
  workflowObject
14513
15632
  }) {
14514
- const i18n = useI18n();
15633
+ const i18n2 = useI18n();
14515
15634
  const workflowsStore = useWorkflowsStore();
14516
15635
  const nodeTypesStore = useNodeTypesStore();
14517
15636
  const nodeHelpers = useNodeHelpers();
@@ -14697,11 +15816,11 @@ function useCanvasMapping({
14697
15816
  return acc;
14698
15817
  }
14699
15818
  if ("eventTriggerDescription" in nodeTypeDescription) {
14700
- const nodeName = i18n.shortNodeType(nodeTypeDescription.name);
15819
+ const nodeName = i18n2.shortNodeType(nodeTypeDescription.name);
14701
15820
  const { eventTriggerDescription } = nodeTypeDescription;
14702
- acc[node2.id] = i18n.nodeText(nodeTypeDescription.name).eventTriggerDescription(nodeName, eventTriggerDescription ?? "");
15821
+ acc[node2.id] = i18n2.nodeText(nodeTypeDescription.name).eventTriggerDescription(nodeName, eventTriggerDescription ?? "");
14703
15822
  } else {
14704
- acc[node2.id] = i18n.baseText("node.waitingForYouToCreateAnEventIn", {
15823
+ acc[node2.id] = i18n2.baseText("node.waitingForYouToCreateAnEventIn", {
14705
15824
  interpolate: {
14706
15825
  nodeType: nodeTypeDescription ? getTriggerNodeServiceName(nodeTypeDescription) : ""
14707
15826
  }
@@ -14803,24 +15922,24 @@ function useCanvasMapping({
14803
15922
  if (workflowExecution && lastNodeExecuted && isExecutionSummary(workflowExecution)) {
14804
15923
  if (node2.name === workflowExecution.data?.resultData?.lastNodeExecuted && workflowExecution?.waitTill && !workflowExecution?.finished) {
14805
15924
  if (node2 && node2.type === WAIT_NODE_TYPE && ["webhook", "form"].includes(node2.parameters.resume)) {
14806
- acc[node2.id] = node2.parameters.resume === "webhook" ? i18n.baseText("node.theNodeIsWaitingWebhookCall") : i18n.baseText("node.theNodeIsWaitingFormCall");
15925
+ acc[node2.id] = node2.parameters.resume === "webhook" ? i18n2.baseText("node.theNodeIsWaitingWebhookCall") : i18n2.baseText("node.theNodeIsWaitingFormCall");
14807
15926
  return acc;
14808
15927
  }
14809
15928
  if (node2?.parameters.operation === SEND_AND_WAIT_OPERATION) {
14810
- acc[node2.id] = i18n.baseText("node.theNodeIsWaitingUserInput");
15929
+ acc[node2.id] = i18n2.baseText("node.theNodeIsWaitingUserInput");
14811
15930
  return acc;
14812
15931
  }
14813
15932
  if (node2?.type === FORM_NODE_TYPE) {
14814
- acc[node2.id] = i18n.baseText("node.theNodeIsWaitingFormCall");
15933
+ acc[node2.id] = i18n2.baseText("node.theNodeIsWaitingFormCall");
14815
15934
  return acc;
14816
15935
  }
14817
15936
  const waitDate = new Date(workflowExecution.waitTill);
14818
15937
  if (waitDate.getTime() === WAIT_INDEFINITELY.getTime()) {
14819
- acc[node2.id] = i18n.baseText(
15938
+ acc[node2.id] = i18n2.baseText(
14820
15939
  "node.theNodeIsWaitingIndefinitelyForAnIncomingWebhookCall"
14821
15940
  );
14822
15941
  }
14823
- acc[node2.id] = i18n.baseText("node.nodeIsWaitingTill", {
15942
+ acc[node2.id] = i18n2.baseText("node.nodeIsWaitingTill", {
14824
15943
  interpolate: {
14825
15944
  date: waitDate.toLocaleDateString(),
14826
15945
  time: waitDate.toLocaleTimeString()
@@ -14999,14 +16118,14 @@ function useCanvasMapping({
14999
16118
  }
15000
16119
  if (nodePinnedDataById.value[fromNode.id]) {
15001
16120
  const pinnedDataCount = nodePinnedDataById.value[fromNode.id]?.length ?? 0;
15002
- return pinnedDataCount > 0 ? i18n.baseText("ndv.output.items", {
16121
+ return pinnedDataCount > 0 ? i18n2.baseText("ndv.output.items", {
15003
16122
  adjustToNumber: pinnedDataCount,
15004
16123
  interpolate: { count: String(pinnedDataCount) }
15005
16124
  }) : "";
15006
16125
  } else if (nodeExecutionRunDataById.value[fromNode.id]) {
15007
16126
  const { type, index } = parseCanvasConnectionHandleString(connection.sourceHandle);
15008
16127
  const runDataTotal = nodeExecutionRunDataOutputMapById.value[fromNode.id]?.[type]?.[index]?.total ?? 0;
15009
- return runDataTotal > 0 ? i18n.baseText("ndv.output.items", {
16128
+ return runDataTotal > 0 ? i18n2.baseText("ndv.output.items", {
15010
16129
  adjustToNumber: runDataTotal,
15011
16130
  interpolate: { count: String(runDataTotal) }
15012
16131
  }) : "";
@@ -15049,7 +16168,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
15049
16168
  { immediate: true }
15050
16169
  );
15051
16170
  return (_ctx, _cache) => {
15052
- const _component_N8nIconButton = _sfc_main$S;
16171
+ const _component_N8nIconButton = _sfc_main$Y;
15053
16172
  return openBlock(), createElementBlock("div", {
15054
16173
  class: normalizeClass([_ctx.$style.component, content2.value === void 0 ? _ctx.$style.closed : ""])
15055
16174
  }, [
@@ -15159,23 +16278,50 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
15159
16278
  };
15160
16279
  }
15161
16280
  });
15162
- const wrapper$1 = "_wrapper_jyurh_123";
16281
+ const wrapper$2 = "_wrapper_jyurh_123";
15163
16282
  const canvas = "_canvas_jyurh_131";
15164
16283
  const style0$3 = {
15165
- wrapper: wrapper$1,
16284
+ wrapper: wrapper$2,
15166
16285
  canvas
15167
16286
  };
15168
16287
  const cssModules$3 = {
15169
16288
  "$style": style0$3
15170
16289
  };
15171
16290
  const WorkflowCanvas = /* @__PURE__ */ _export_sfc$1(_sfc_main$7, [["__cssModules", cssModules$3]]);
16291
+ function useExecutionData({ node: node2 }) {
16292
+ const workflowsStore = useWorkflowsStore();
16293
+ const workflowExecution = computed(() => {
16294
+ return workflowsStore.getWorkflowExecution;
16295
+ });
16296
+ const workflowRunData = computed(() => {
16297
+ if (workflowExecution.value === null) {
16298
+ return null;
16299
+ }
16300
+ const executionData = workflowExecution.value.data;
16301
+ if (!executionData?.resultData?.runData) {
16302
+ return null;
16303
+ }
16304
+ return executionData.resultData.runData;
16305
+ });
16306
+ const hasNodeRun = computed(() => {
16307
+ if (workflowsStore.subWorkflowExecutionError) return true;
16308
+ return Boolean(
16309
+ node2.value && workflowRunData.value && Object.prototype.hasOwnProperty.bind(workflowRunData.value)(node2.value.name)
16310
+ );
16311
+ });
16312
+ return {
16313
+ workflowExecution,
16314
+ workflowRunData,
16315
+ hasNodeRun
16316
+ };
16317
+ }
15172
16318
  const _sfc_main$6 = /* @__PURE__ */ defineComponent({
15173
16319
  ...{ name: "FocusPanel" },
15174
16320
  __name: "FocusPanel",
15175
16321
  props: {
15176
16322
  isCanvasReadOnly: { type: Boolean }
15177
16323
  },
15178
- emits: ["focus"],
16324
+ emits: ["focus", "saveKeyboardShortcut"],
15179
16325
  setup(__props, { emit: __emit }) {
15180
16326
  const props = __props;
15181
16327
  const emit = __emit;
@@ -15183,22 +16329,27 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
15183
16329
  const locale = useI18n();
15184
16330
  const nodeHelpers = useNodeHelpers();
15185
16331
  const focusPanelStore = useFocusPanelStore();
16332
+ const workflowsStore = useWorkflowsStore();
15186
16333
  const nodeTypesStore = useNodeTypesStore();
15187
16334
  const nodeSettingsParameters = useNodeSettingsParameters();
15188
16335
  const environmentsStore = useEnvironmentsStore();
16336
+ const deviceSupport = useDeviceSupport();
15189
16337
  const { debounce } = useDebounce();
16338
+ const styles = useStyles();
15190
16339
  const focusedNodeParameter = computed(() => focusPanelStore.focusedNodeParameters[0]);
15191
16340
  const resolvedParameter = computed(
15192
16341
  () => focusedNodeParameter.value && focusPanelStore.isRichParameter(focusedNodeParameter.value) ? focusedNodeParameter.value : void 0
15193
16342
  );
15194
16343
  const focusPanelActive = computed(() => focusPanelStore.focusPanelActive);
16344
+ const focusPanelHidden = computed(() => focusPanelStore.focusPanelHidden);
16345
+ const focusPanelWidth = computed(() => focusPanelStore.focusPanelWidth);
15195
16346
  const isDisabled = computed(() => {
15196
16347
  if (!resolvedParameter.value) return false;
15197
16348
  return !!resolvedParameter.value.parameter.disabledOptions && nodeSettingsParameters.shouldDisplayNodeParameter(
15198
16349
  resolvedParameter.value.node.parameters,
15199
16350
  resolvedParameter.value.node,
15200
16351
  resolvedParameter.value.parameter,
15201
- "",
16352
+ resolvedParameter.value.parameterPath.split(".").slice(1, -1).join("."),
15202
16353
  "disabledOptions"
15203
16354
  );
15204
16355
  });
@@ -15208,7 +16359,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
15208
16359
  resolvedParameter.value.node.parameters,
15209
16360
  resolvedParameter.value.node,
15210
16361
  resolvedParameter.value.parameter,
15211
- "",
16362
+ resolvedParameter.value.parameterPath.split(".").slice(1, -1).join("."),
15212
16363
  "displayOptions"
15213
16364
  );
15214
16365
  });
@@ -15224,6 +16375,8 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
15224
16375
  foreignCredentials
15225
16376
  );
15226
16377
  });
16378
+ const node2 = computed(() => resolvedParameter.value?.node);
16379
+ const { hasNodeRun } = useExecutionData({ node: node2 });
15227
16380
  function getTypeOption(optionName) {
15228
16381
  return resolvedParameter.value ? getParameterTypeOption(resolvedParameter.value.parameter, optionName) : void 0;
15229
16382
  }
@@ -15268,6 +16421,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
15268
16421
  parameterPath: resolvedParameter.value.parameterPath
15269
16422
  };
15270
16423
  });
16424
+ const isNodeExecuting = computed(() => workflowsStore.isNodeExecuting(node2.value?.name ?? ""));
15271
16425
  const { resolvedExpression } = useResolvedExpression({
15272
16426
  expression,
15273
16427
  additionalData: resolvedAdditionalExpressionData,
@@ -15278,6 +16432,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
15278
16432
  return;
15279
16433
  }
15280
16434
  nodeSettingsParameters.updateNodeParameter(
16435
+ toRef(resolvedParameter.value.node.parameters),
15281
16436
  { value, name: resolvedParameter.value.parameterPath },
15282
16437
  value,
15283
16438
  resolvedParameter.value.node,
@@ -15298,8 +16453,13 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
15298
16453
  function optionSelected(command) {
15299
16454
  if (!resolvedParameter.value) return;
15300
16455
  switch (command) {
15301
- case "resetValue":
15302
- return typeof resolvedParameter.value.parameter.default === "string" && valueChanged(resolvedParameter.value.parameter.default);
16456
+ case "resetValue": {
16457
+ if (typeof resolvedParameter.value.parameter.default === "string") {
16458
+ valueChanged(resolvedParameter.value.parameter.default);
16459
+ }
16460
+ void setFocus();
16461
+ break;
16462
+ }
15303
16463
  case "addExpression": {
15304
16464
  const newValue = formatAsExpression(
15305
16465
  resolvedParameter.value.value,
@@ -15327,14 +16487,52 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
15327
16487
  }
15328
16488
  case "formatHtml":
15329
16489
  htmlEditorEventBus.emit("format-html");
15330
- return;
16490
+ break;
15331
16491
  }
15332
16492
  }
15333
16493
  const valueChangedDebounced = debounce(valueChanged, { debounceTime: 0 });
16494
+ function focusWithDelay() {
16495
+ setTimeout(() => {
16496
+ void setFocus();
16497
+ }, 50);
16498
+ }
16499
+ function handleKeydown(event) {
16500
+ if (event.key === "s" && deviceSupport.isCtrlKeyPressed(event)) {
16501
+ event.stopPropagation();
16502
+ event.preventDefault();
16503
+ if (isReadOnly.value) return;
16504
+ emit("saveKeyboardShortcut", event);
16505
+ }
16506
+ }
16507
+ const registerKeyboardListener = () => {
16508
+ document.addEventListener("keydown", handleKeydown, true);
16509
+ };
16510
+ const unregisterKeyboardListener = () => {
16511
+ document.removeEventListener("keydown", handleKeydown, true);
16512
+ };
16513
+ watch(
16514
+ [() => focusPanelStore.lastFocusTimestamp, () => expressionModeEnabled.value],
16515
+ () => focusWithDelay()
16516
+ );
16517
+ watch(
16518
+ () => focusPanelStore.focusPanelActive,
16519
+ (newValue) => {
16520
+ if (newValue) {
16521
+ registerKeyboardListener();
16522
+ } else {
16523
+ unregisterKeyboardListener();
16524
+ }
16525
+ },
16526
+ { immediate: true }
16527
+ );
16528
+ function onResize(event) {
16529
+ focusPanelStore.updateWidth(event.width);
16530
+ }
16531
+ const onResizeThrottle = useThrottleFn(onResize, 10);
15334
16532
  return (_ctx, _cache) => {
15335
- const _component_n8n_icon = N8nIcon;
15336
- const _component_NodeExecuteButton = _sfc_main$V;
15337
- const _component_ParameterOptions = __unplugin_components_2$2;
16533
+ const _component_NodeExecuteButton = _sfc_main$10;
16534
+ const _component_N8nIcon = N8nIcon;
16535
+ const _component_ParameterOptions = __unplugin_components_2$3;
15338
16536
  const _component_ExpressionEditorModalInput = __unplugin_components_3$1;
15339
16537
  const _component_CodeNodeEditor = __unplugin_components_4;
15340
16538
  const _component_HtmlEditor = __unplugin_components_5;
@@ -15342,233 +16540,329 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
15342
16540
  const _component_SqlEditor = __unplugin_components_7;
15343
16541
  const _component_JsEditor = __unplugin_components_8;
15344
16542
  const _component_JsonEditor = __unplugin_components_9;
15345
- return focusPanelActive.value ? (openBlock(), createElementBlock("div", {
16543
+ const _component_N8nRadioButtons = N8nRadioButtons;
16544
+ return focusPanelActive.value ? withDirectives((openBlock(), createElementBlock("div", {
15346
16545
  key: 0,
15347
- class: normalizeClass(_ctx.$style.container),
15348
- onKeydown: _cache[2] || (_cache[2] = withModifiers(() => {
16546
+ class: normalizeClass(_ctx.$style.wrapper),
16547
+ onKeydown: _cache[1] || (_cache[1] = withModifiers(() => {
15349
16548
  }, ["stop"]))
15350
16549
  }, [
15351
- createBaseVNode("div", {
15352
- class: normalizeClass(_ctx.$style.header)
15353
- }, [
15354
- createVNode(unref(N8nText), {
15355
- size: "small",
15356
- bold: true
15357
- }, {
15358
- default: withCtx(() => [
15359
- createTextVNode(toDisplayString(unref(locale).baseText("nodeView.focusPanel.title")), 1)
15360
- ]),
15361
- _: 1
15362
- }),
15363
- createBaseVNode("div", {
15364
- class: normalizeClass(_ctx.$style.closeButton),
15365
- onClick: _cache[0] || (_cache[0] = //@ts-ignore
15366
- (...args) => unref(focusPanelStore).closeFocusPanel && unref(focusPanelStore).closeFocusPanel(...args))
15367
- }, [
15368
- createVNode(_component_n8n_icon, {
15369
- icon: "arrow-right",
15370
- color: "text-base"
15371
- })
15372
- ], 2)
15373
- ], 2),
15374
- resolvedParameter.value ? (openBlock(), createElementBlock("div", {
15375
- key: 0,
15376
- class: normalizeClass(_ctx.$style.content)
15377
- }, [
15378
- createBaseVNode("div", {
15379
- class: normalizeClass(_ctx.$style.tabHeader)
15380
- }, [
15381
- createBaseVNode("div", {
15382
- class: normalizeClass(_ctx.$style.tabHeaderText)
15383
- }, [
15384
- createVNode(unref(N8nText), {
15385
- color: "text-dark",
15386
- size: "small"
15387
- }, {
15388
- default: withCtx(() => [
15389
- createTextVNode(toDisplayString(resolvedParameter.value.parameter.displayName), 1)
15390
- ]),
15391
- _: 1
15392
- }),
15393
- createVNode(unref(N8nText), {
15394
- color: "text-base",
15395
- size: "xsmall"
15396
- }, {
15397
- default: withCtx(() => [
15398
- createTextVNode(toDisplayString(resolvedParameter.value.node.name), 1)
15399
- ]),
15400
- _: 1
15401
- })
15402
- ], 2),
15403
- createVNode(_component_NodeExecuteButton, {
15404
- "data-test-id": "node-execute-button",
15405
- "node-name": resolvedParameter.value.node.name,
15406
- tooltip: `Execute ${resolvedParameter.value.node.name}`,
15407
- disabled: !isExecutable2.value,
15408
- size: "small",
15409
- icon: "play",
15410
- square: true,
15411
- "hide-label": true,
15412
- "telemetry-source": "focus"
15413
- }, null, 8, ["node-name", "tooltip", "disabled"])
15414
- ], 2),
15415
- createBaseVNode("div", {
15416
- class: normalizeClass(_ctx.$style.parameterDetailsWrapper)
15417
- }, [
16550
+ createVNode(unref(N8nResizeWrapper), {
16551
+ width: focusPanelWidth.value,
16552
+ "supported-directions": ["left"],
16553
+ "min-width": 300,
16554
+ "max-width": 1e3,
16555
+ "grid-size": 8,
16556
+ style: normalizeStyle({ width: `${focusPanelWidth.value}px`, zIndex: unref(styles).APP_Z_INDEXES.FOCUS_PANEL }),
16557
+ onResize: unref(onResizeThrottle)
16558
+ }, {
16559
+ default: withCtx(() => [
15418
16560
  createBaseVNode("div", {
15419
- class: normalizeClass(_ctx.$style.parameterOptionsWrapper)
15420
- }, [
15421
- _cache[3] || (_cache[3] = createBaseVNode("div", null, null, -1)),
15422
- isDisplayed.value ? (openBlock(), createBlock(_component_ParameterOptions, {
15423
- key: 0,
15424
- parameter: resolvedParameter.value.parameter,
15425
- value: resolvedParameter.value.value,
15426
- "is-read-only": isReadOnly.value,
15427
- "onUpdate:modelValue": optionSelected
15428
- }, null, 8, ["parameter", "value", "is-read-only"])) : createCommentVNode("", true)
15429
- ], 2),
15430
- typeof resolvedParameter.value.value === "string" ? (openBlock(), createElementBlock("div", {
15431
- key: 0,
15432
- class: normalizeClass(_ctx.$style.editorContainer)
16561
+ class: normalizeClass(_ctx.$style.container)
15433
16562
  }, [
15434
- !isDisplayed.value ? (openBlock(), createElementBlock("div", {
16563
+ resolvedParameter.value ? (openBlock(), createElementBlock("div", {
15435
16564
  key: 0,
16565
+ class: normalizeClass(_ctx.$style.content)
16566
+ }, [
16567
+ createBaseVNode("div", {
16568
+ class: normalizeClass(_ctx.$style.tabHeader)
16569
+ }, [
16570
+ createBaseVNode("div", {
16571
+ class: normalizeClass(_ctx.$style.tabHeaderText)
16572
+ }, [
16573
+ createVNode(unref(N8nText), {
16574
+ color: "text-dark",
16575
+ size: "small"
16576
+ }, {
16577
+ default: withCtx(() => [
16578
+ createTextVNode(toDisplayString(resolvedParameter.value.parameter.displayName), 1)
16579
+ ]),
16580
+ _: 1
16581
+ }),
16582
+ createVNode(unref(N8nText), {
16583
+ color: "text-base",
16584
+ size: "xsmall"
16585
+ }, {
16586
+ default: withCtx(() => [
16587
+ createTextVNode(toDisplayString(resolvedParameter.value.node.name), 1)
16588
+ ]),
16589
+ _: 1
16590
+ })
16591
+ ], 2),
16592
+ createBaseVNode("div", {
16593
+ class: normalizeClass(_ctx.$style.buttonWrapper)
16594
+ }, [
16595
+ createVNode(_component_NodeExecuteButton, {
16596
+ "data-test-id": "node-execute-button",
16597
+ "node-name": resolvedParameter.value.node.name,
16598
+ tooltip: `Execute ${resolvedParameter.value.node.name}`,
16599
+ disabled: !isExecutable2.value,
16600
+ size: "small",
16601
+ icon: "play",
16602
+ square: true,
16603
+ "hide-label": true,
16604
+ "telemetry-source": "focus"
16605
+ }, null, 8, ["node-name", "tooltip", "disabled"]),
16606
+ createVNode(_component_N8nIcon, {
16607
+ class: normalizeClass(_ctx.$style.closeButton),
16608
+ icon: "x",
16609
+ color: "text-base",
16610
+ size: "xlarge",
16611
+ onClick: unref(focusPanelStore).closeFocusPanel
16612
+ }, null, 8, ["class", "onClick"])
16613
+ ], 2)
16614
+ ], 2),
16615
+ createBaseVNode("div", {
16616
+ class: normalizeClass(_ctx.$style.parameterDetailsWrapper)
16617
+ }, [
16618
+ createBaseVNode("div", {
16619
+ class: normalizeClass(_ctx.$style.parameterOptionsWrapper)
16620
+ }, [
16621
+ createBaseVNode("div", {
16622
+ class: normalizeClass(_ctx.$style.noExecutionDataTip)
16623
+ }, [
16624
+ !unref(hasNodeRun) && !isNodeExecuting.value ? (openBlock(), createBlock(unref(InfoTip), {
16625
+ key: 0,
16626
+ class: normalizeClass(_ctx.$style.delayedShow),
16627
+ bold: true
16628
+ }, {
16629
+ default: withCtx(() => [
16630
+ createTextVNode(toDisplayString(unref(locale).baseText("nodeView.focusPanel.noExecutionData")), 1)
16631
+ ]),
16632
+ _: 1
16633
+ }, 8, ["class"])) : createCommentVNode("", true)
16634
+ ], 2),
16635
+ isDisplayed.value ? (openBlock(), createBlock(_component_ParameterOptions, {
16636
+ key: 0,
16637
+ parameter: resolvedParameter.value.parameter,
16638
+ value: resolvedParameter.value.value,
16639
+ "is-read-only": isReadOnly.value,
16640
+ "onUpdate:modelValue": optionSelected
16641
+ }, null, 8, ["parameter", "value", "is-read-only"])) : createCommentVNode("", true)
16642
+ ], 2),
16643
+ typeof resolvedParameter.value.value === "string" ? (openBlock(), createElementBlock("div", {
16644
+ key: 0,
16645
+ class: normalizeClass(_ctx.$style.editorContainer)
16646
+ }, [
16647
+ !isDisplayed.value ? (openBlock(), createElementBlock("div", {
16648
+ key: 0,
16649
+ class: normalizeClass([_ctx.$style.content, _ctx.$style.emptyContent])
16650
+ }, [
16651
+ createBaseVNode("div", {
16652
+ class: normalizeClass(_ctx.$style.emptyText)
16653
+ }, [
16654
+ createVNode(unref(N8nText), { color: "text-base" }, {
16655
+ default: withCtx(() => [
16656
+ createTextVNode(toDisplayString(unref(locale).baseText("nodeView.focusPanel.missingParameter")), 1)
16657
+ ]),
16658
+ _: 1
16659
+ })
16660
+ ], 2)
16661
+ ], 2)) : expressionModeEnabled.value ? (openBlock(), createBlock(_component_ExpressionEditorModalInput, {
16662
+ key: 1,
16663
+ ref_key: "inputField",
16664
+ ref: inputField,
16665
+ "model-value": resolvedParameter.value.value,
16666
+ class: normalizeClass(_ctx.$style.editor),
16667
+ "is-read-only": isReadOnly.value,
16668
+ path: resolvedParameter.value.parameterPath,
16669
+ "data-test-id": "expression-modal-input",
16670
+ "target-node-parameter-context": targetNodeParameterContext.value,
16671
+ onChange: _cache[0] || (_cache[0] = ($event) => unref(valueChangedDebounced)($event.value))
16672
+ }, null, 8, ["model-value", "class", "is-read-only", "path", "target-node-parameter-context"])) : ["json", "string"].includes(resolvedParameter.value.parameter.type) ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [
16673
+ editorType.value === "codeNodeEditor" ? (openBlock(), createBlock(_component_CodeNodeEditor, {
16674
+ key: 0,
16675
+ id: resolvedParameter.value.parameterPath,
16676
+ ref_key: "inputField",
16677
+ ref: inputField,
16678
+ class: normalizeClass(_ctx.$style.heightFull),
16679
+ mode: codeEditorMode.value,
16680
+ "model-value": resolvedParameter.value.value,
16681
+ "default-value": resolvedParameter.value.parameter.default,
16682
+ language: editorLanguage.value,
16683
+ "is-read-only": isReadOnly.value,
16684
+ "target-node-parameter-context": targetNodeParameterContext.value,
16685
+ "fill-parent": "",
16686
+ "disable-ask-ai": true,
16687
+ "onUpdate:modelValue": unref(valueChangedDebounced)
16688
+ }, null, 8, ["id", "class", "mode", "model-value", "default-value", "language", "is-read-only", "target-node-parameter-context", "onUpdate:modelValue"])) : editorType.value === "htmlEditor" ? (openBlock(), createBlock(_component_HtmlEditor, {
16689
+ key: 1,
16690
+ ref_key: "inputField",
16691
+ ref: inputField,
16692
+ "model-value": resolvedParameter.value.value,
16693
+ "is-read-only": isReadOnly.value,
16694
+ rows: editorRows.value,
16695
+ "disable-expression-coloring": !isHtmlNode.value,
16696
+ "disable-expression-completions": !isHtmlNode.value,
16697
+ fullscreen: "",
16698
+ "onUpdate:modelValue": unref(valueChangedDebounced)
16699
+ }, null, 8, ["model-value", "is-read-only", "rows", "disable-expression-coloring", "disable-expression-completions", "onUpdate:modelValue"])) : editorType.value === "cssEditor" ? (openBlock(), createBlock(_component_CssEditor, {
16700
+ key: 2,
16701
+ ref_key: "inputField",
16702
+ ref: inputField,
16703
+ "model-value": resolvedParameter.value.value,
16704
+ "is-read-only": isReadOnly.value,
16705
+ rows: editorRows.value,
16706
+ fullscreen: "",
16707
+ "onUpdate:modelValue": unref(valueChangedDebounced)
16708
+ }, null, 8, ["model-value", "is-read-only", "rows", "onUpdate:modelValue"])) : editorType.value === "sqlEditor" ? (openBlock(), createBlock(_component_SqlEditor, {
16709
+ key: 3,
16710
+ ref_key: "inputField",
16711
+ ref: inputField,
16712
+ "model-value": resolvedParameter.value.value,
16713
+ dialect: getTypeOption("sqlDialect"),
16714
+ "is-read-only": isReadOnly.value,
16715
+ rows: editorRows.value,
16716
+ fullscreen: "",
16717
+ "onUpdate:modelValue": unref(valueChangedDebounced)
16718
+ }, null, 8, ["model-value", "dialect", "is-read-only", "rows", "onUpdate:modelValue"])) : editorType.value === "jsEditor" ? (openBlock(), createBlock(_component_JsEditor, {
16719
+ key: 4,
16720
+ ref_key: "inputField",
16721
+ ref: inputField,
16722
+ "model-value": resolvedParameter.value.value,
16723
+ "is-read-only": isReadOnly.value,
16724
+ rows: editorRows.value,
16725
+ "posthog-capture": shouldCaptureForPosthog.value,
16726
+ "fill-parent": "",
16727
+ "onUpdate:modelValue": unref(valueChangedDebounced)
16728
+ }, null, 8, ["model-value", "is-read-only", "rows", "posthog-capture", "onUpdate:modelValue"])) : resolvedParameter.value.parameter.type === "json" ? (openBlock(), createBlock(_component_JsonEditor, {
16729
+ key: 5,
16730
+ ref_key: "inputField",
16731
+ ref: inputField,
16732
+ "model-value": resolvedParameter.value.value,
16733
+ "is-read-only": isReadOnly.value,
16734
+ rows: editorRows.value,
16735
+ fullscreen: "",
16736
+ "fill-parent": "",
16737
+ "onUpdate:modelValue": unref(valueChangedDebounced)
16738
+ }, null, 8, ["model-value", "is-read-only", "rows", "onUpdate:modelValue"])) : (openBlock(), createBlock(unref(N8nInput), {
16739
+ key: 6,
16740
+ ref_key: "inputField",
16741
+ ref: inputField,
16742
+ "model-value": resolvedParameter.value.value,
16743
+ class: normalizeClass(_ctx.$style.editor),
16744
+ readonly: isReadOnly.value,
16745
+ type: "textarea",
16746
+ resize: "none",
16747
+ "onUpdate:modelValue": unref(valueChangedDebounced)
16748
+ }, null, 8, ["model-value", "class", "readonly", "onUpdate:modelValue"]))
16749
+ ], 64)) : createCommentVNode("", true)
16750
+ ], 2)) : createCommentVNode("", true)
16751
+ ], 2)
16752
+ ], 2)) : (openBlock(), createElementBlock("div", {
16753
+ key: 1,
15436
16754
  class: normalizeClass([_ctx.$style.content, _ctx.$style.emptyContent])
15437
16755
  }, [
15438
16756
  createBaseVNode("div", {
15439
16757
  class: normalizeClass(_ctx.$style.emptyText)
15440
16758
  }, [
15441
- createVNode(unref(N8nText), { color: "text-base" }, {
16759
+ createBaseVNode("div", {
16760
+ class: normalizeClass(_ctx.$style.focusParameterWrapper)
16761
+ }, [
16762
+ createBaseVNode("div", {
16763
+ class: normalizeClass(_ctx.$style.iconWrapper)
16764
+ }, [
16765
+ createVNode(_component_N8nIcon, {
16766
+ class: normalizeClass(_ctx.$style.forceHover),
16767
+ icon: "panel-right",
16768
+ size: "medium"
16769
+ }, null, 8, ["class"]),
16770
+ createVNode(_component_N8nIcon, {
16771
+ class: normalizeClass(_ctx.$style.pointerIcon),
16772
+ icon: "mouse-pointer",
16773
+ color: "text-dark",
16774
+ size: "large"
16775
+ }, null, 8, ["class"])
16776
+ ], 2),
16777
+ createVNode(_component_N8nIcon, {
16778
+ icon: "ellipsis-vertical",
16779
+ size: "small",
16780
+ color: "text-base"
16781
+ }),
16782
+ createVNode(_component_N8nRadioButtons, {
16783
+ size: "small",
16784
+ "model-value": "expression",
16785
+ disabled: true,
16786
+ options: [
16787
+ { label: unref(locale).baseText("parameterInput.fixed"), value: "fixed" },
16788
+ { label: unref(locale).baseText("parameterInput.expression"), value: "expression" }
16789
+ ]
16790
+ }, null, 8, ["options"])
16791
+ ], 2),
16792
+ createVNode(unref(N8nText), {
16793
+ color: "text-base",
16794
+ size: "medium",
16795
+ bold: true
16796
+ }, {
16797
+ default: withCtx(() => [
16798
+ createTextVNode(toDisplayString(unref(locale).baseText("nodeView.focusPanel.noParameters.title")), 1)
16799
+ ]),
16800
+ _: 1
16801
+ }),
16802
+ createVNode(unref(N8nText), {
16803
+ color: "text-base",
16804
+ size: "small"
16805
+ }, {
15442
16806
  default: withCtx(() => [
15443
- createTextVNode(toDisplayString(unref(locale).baseText("nodeView.focusPanel.missingParameter")), 1)
16807
+ createTextVNode(toDisplayString(unref(locale).baseText("nodeView.focusPanel.noParameters.subtitle")), 1)
15444
16808
  ]),
15445
16809
  _: 1
15446
16810
  })
15447
16811
  ], 2)
15448
- ], 2)) : expressionModeEnabled.value ? (openBlock(), createBlock(_component_ExpressionEditorModalInput, {
15449
- key: 1,
15450
- ref_key: "inputField",
15451
- ref: inputField,
15452
- "model-value": resolvedParameter.value.value,
15453
- class: normalizeClass(_ctx.$style.editor),
15454
- "is-read-only": isReadOnly.value,
15455
- path: resolvedParameter.value.parameterPath,
15456
- "data-test-id": "expression-modal-input",
15457
- "target-node-parameter-context": targetNodeParameterContext.value,
15458
- onChange: _cache[1] || (_cache[1] = ($event) => unref(valueChangedDebounced)($event.value))
15459
- }, null, 8, ["model-value", "class", "is-read-only", "path", "target-node-parameter-context"])) : ["json", "string"].includes(resolvedParameter.value.parameter.type) ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [
15460
- editorType.value === "codeNodeEditor" ? (openBlock(), createBlock(_component_CodeNodeEditor, {
15461
- key: 0,
15462
- id: resolvedParameter.value.parameterPath,
15463
- mode: codeEditorMode.value,
15464
- "model-value": resolvedParameter.value.value,
15465
- "default-value": resolvedParameter.value.parameter.default,
15466
- language: editorLanguage.value,
15467
- "is-read-only": isReadOnly.value,
15468
- "target-node-parameter-context": targetNodeParameterContext.value,
15469
- "fill-parent": "",
15470
- "disable-ask-ai": true,
15471
- "onUpdate:modelValue": unref(valueChangedDebounced)
15472
- }, null, 8, ["id", "mode", "model-value", "default-value", "language", "is-read-only", "target-node-parameter-context", "onUpdate:modelValue"])) : editorType.value === "htmlEditor" ? (openBlock(), createBlock(_component_HtmlEditor, {
15473
- key: 1,
15474
- "model-value": resolvedParameter.value.value,
15475
- "is-read-only": isReadOnly.value,
15476
- rows: editorRows.value,
15477
- "disable-expression-coloring": !isHtmlNode.value,
15478
- "disable-expression-completions": !isHtmlNode.value,
15479
- fullscreen: "",
15480
- "onUpdate:modelValue": unref(valueChangedDebounced)
15481
- }, null, 8, ["model-value", "is-read-only", "rows", "disable-expression-coloring", "disable-expression-completions", "onUpdate:modelValue"])) : editorType.value === "cssEditor" ? (openBlock(), createBlock(_component_CssEditor, {
15482
- key: 2,
15483
- "model-value": resolvedParameter.value.value,
15484
- "is-read-only": isReadOnly.value,
15485
- rows: editorRows.value,
15486
- fullscreen: "",
15487
- "onUpdate:modelValue": unref(valueChangedDebounced)
15488
- }, null, 8, ["model-value", "is-read-only", "rows", "onUpdate:modelValue"])) : editorType.value === "sqlEditor" ? (openBlock(), createBlock(_component_SqlEditor, {
15489
- key: 3,
15490
- "model-value": resolvedParameter.value.value,
15491
- dialect: getTypeOption("sqlDialect"),
15492
- "is-read-only": isReadOnly.value,
15493
- rows: editorRows.value,
15494
- fullscreen: "",
15495
- "onUpdate:modelValue": unref(valueChangedDebounced)
15496
- }, null, 8, ["model-value", "dialect", "is-read-only", "rows", "onUpdate:modelValue"])) : editorType.value === "jsEditor" ? (openBlock(), createBlock(_component_JsEditor, {
15497
- key: 4,
15498
- "model-value": resolvedParameter.value.value,
15499
- "is-read-only": isReadOnly.value,
15500
- rows: editorRows.value,
15501
- "posthog-capture": shouldCaptureForPosthog.value,
15502
- "fill-parent": "",
15503
- "onUpdate:modelValue": unref(valueChangedDebounced)
15504
- }, null, 8, ["model-value", "is-read-only", "rows", "posthog-capture", "onUpdate:modelValue"])) : resolvedParameter.value.parameter.type === "json" ? (openBlock(), createBlock(_component_JsonEditor, {
15505
- key: 5,
15506
- "model-value": resolvedParameter.value.value,
15507
- "is-read-only": isReadOnly.value,
15508
- rows: editorRows.value,
15509
- fullscreen: "",
15510
- "fill-parent": "",
15511
- "onUpdate:modelValue": unref(valueChangedDebounced)
15512
- }, null, 8, ["model-value", "is-read-only", "rows", "onUpdate:modelValue"])) : (openBlock(), createBlock(unref(N8nInput), {
15513
- key: 6,
15514
- ref_key: "inputField",
15515
- ref: inputField,
15516
- "model-value": resolvedParameter.value.value,
15517
- class: normalizeClass(_ctx.$style.editor),
15518
- readonly: isReadOnly.value,
15519
- type: "textarea",
15520
- resize: "none",
15521
- "onUpdate:modelValue": unref(valueChangedDebounced)
15522
- }, null, 8, ["model-value", "class", "readonly", "onUpdate:modelValue"]))
15523
- ], 64)) : createCommentVNode("", true)
15524
- ], 2)) : createCommentVNode("", true)
15525
- ], 2)
15526
- ], 2)) : (openBlock(), createElementBlock("div", {
15527
- key: 1,
15528
- class: normalizeClass([_ctx.$style.content, _ctx.$style.emptyContent])
15529
- }, [
15530
- createBaseVNode("div", {
15531
- class: normalizeClass(_ctx.$style.emptyText)
15532
- }, [
15533
- createVNode(unref(N8nText), { color: "text-base" }, {
15534
- default: withCtx(() => [
15535
- createTextVNode(toDisplayString(unref(locale).baseText("nodeView.focusPanel.noParameters")), 1)
15536
- ]),
15537
- _: 1
15538
- })
15539
- ], 2)
15540
- ], 2))
15541
- ], 34)) : createCommentVNode("", true);
16812
+ ], 2))
16813
+ ], 2)
16814
+ ]),
16815
+ _: 1
16816
+ }, 8, ["width", "style", "onResize"])
16817
+ ], 34)), [
16818
+ [vShow, !focusPanelHidden.value]
16819
+ ]) : createCommentVNode("", true);
15542
16820
  };
15543
16821
  }
15544
16822
  });
15545
- const container = "_container_1gj6t_123";
15546
- const closeButton = "_closeButton_1gj6t_132";
15547
- const header = "_header_1gj6t_136";
15548
- const content = "_content_1gj6t_144";
15549
- const emptyContent = "_emptyContent_1gj6t_150";
15550
- const emptyText = "_emptyText_1gj6t_155";
15551
- const tabHeader = "_tabHeader_1gj6t_158";
15552
- const tabHeaderText = "_tabHeaderText_1gj6t_165";
15553
- const buttonWrapper = "_buttonWrapper_1gj6t_170";
15554
- const parameterDetailsWrapper = "_parameterDetailsWrapper_1gj6t_175";
15555
- const parameterOptionsWrapper = "_parameterOptionsWrapper_1gj6t_182";
15556
- const editorContainer = "_editorContainer_1gj6t_186";
15557
- const editor = "_editor_1gj6t_186";
16823
+ const wrapper$1 = "_wrapper_1ebmp_123";
16824
+ const container = "_container_1ebmp_132";
16825
+ const content = "_content_1ebmp_138";
16826
+ const emptyContent = "_emptyContent_1ebmp_144";
16827
+ const emptyText = "_emptyText_1ebmp_149";
16828
+ const focusParameterWrapper = "_focusParameterWrapper_1ebmp_155";
16829
+ const iconWrapper = "_iconWrapper_1ebmp_162";
16830
+ const pointerIcon = "_pointerIcon_1ebmp_166";
16831
+ const tabHeader = "_tabHeader_1ebmp_176";
16832
+ const tabHeaderText = "_tabHeaderText_1ebmp_183";
16833
+ const buttonWrapper = "_buttonWrapper_1ebmp_188";
16834
+ const parameterDetailsWrapper = "_parameterDetailsWrapper_1ebmp_193";
16835
+ const parameterOptionsWrapper = "_parameterOptionsWrapper_1ebmp_200";
16836
+ const noExecutionDataTip = "_noExecutionDataTip_1ebmp_204";
16837
+ const editorContainer = "_editorContainer_1ebmp_207";
16838
+ const editor = "_editor_1ebmp_207";
16839
+ const delayedShow = "_delayedShow_1ebmp_222";
16840
+ const triggerShow = "_triggerShow_1ebmp_1";
16841
+ const closeButton = "_closeButton_1ebmp_233";
16842
+ const heightFull = "_heightFull_1ebmp_237";
16843
+ const forceHover = "_forceHover_1ebmp_241";
15558
16844
  const style0$2 = {
16845
+ wrapper: wrapper$1,
15559
16846
  container,
15560
- closeButton,
15561
- header,
15562
16847
  content,
15563
16848
  emptyContent,
15564
16849
  emptyText,
16850
+ focusParameterWrapper,
16851
+ iconWrapper,
16852
+ pointerIcon,
15565
16853
  tabHeader,
15566
16854
  tabHeaderText,
15567
16855
  buttonWrapper,
15568
16856
  parameterDetailsWrapper,
15569
16857
  parameterOptionsWrapper,
16858
+ noExecutionDataTip,
15570
16859
  editorContainer,
15571
- editor
16860
+ editor,
16861
+ delayedShow,
16862
+ triggerShow,
16863
+ closeButton,
16864
+ heightFull,
16865
+ forceHover
15572
16866
  };
15573
16867
  const cssModules$2 = {
15574
16868
  "$style": style0$2
@@ -15588,18 +16882,18 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
15588
16882
  setup(__props, { emit: __emit }) {
15589
16883
  const emit = __emit;
15590
16884
  const props = __props;
15591
- const i18n = useI18n();
16885
+ const i18n2 = useI18n();
15592
16886
  const selectableTriggerNodes = computed(
15593
16887
  () => props.triggerNodes.filter((node2) => !node2.disabled && !isChatNode(node2))
15594
16888
  );
15595
16889
  const label2 = computed(() => {
15596
16890
  if (!props.executing) {
15597
- return i18n.baseText("nodeView.runButtonText.executeWorkflow");
16891
+ return i18n2.baseText("nodeView.runButtonText.executeWorkflow");
15598
16892
  }
15599
16893
  if (props.waitingForWebhook) {
15600
- return i18n.baseText("nodeView.runButtonText.waitingForTriggerEvent");
16894
+ return i18n2.baseText("nodeView.runButtonText.waitingForTriggerEvent");
15601
16895
  }
15602
- return i18n.baseText("nodeView.runButtonText.executingWorkflow");
16896
+ return i18n2.baseText("nodeView.runButtonText.executingWorkflow");
15603
16897
  });
15604
16898
  const actions2 = computed(
15605
16899
  () => props.triggerNodes.filter((node2) => !isChatNode(node2)).toSorted((a, b) => {
@@ -15624,8 +16918,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
15624
16918
  return props.getNodeType(node2.type, node2.typeVersion);
15625
16919
  }
15626
16920
  return (_ctx, _cache) => {
15627
- const _component_I18nT = resolveComponent("I18nT");
15628
- const _component_NodeIcon = _sfc_main$U;
16921
+ const _component_NodeIcon = _sfc_main$$;
15629
16922
  return openBlock(), createElementBlock("div", {
15630
16923
  class: normalizeClass([_ctx.$style.component, isSplitButton.value ? _ctx.$style.split : ""])
15631
16924
  }, [
@@ -15658,7 +16951,10 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
15658
16951
  bold: false
15659
16952
  }, {
15660
16953
  default: withCtx(() => [
15661
- createVNode(_component_I18nT, { keypath: "nodeView.runButtonText.from" }, {
16954
+ createVNode(unref(I18nT), {
16955
+ keypath: "nodeView.runButtonText.from",
16956
+ scope: "global"
16957
+ }, {
15662
16958
  nodeName: withCtx(() => [
15663
16959
  createVNode(unref(N8nText), {
15664
16960
  bold: "",
@@ -15714,7 +17010,10 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
15714
17010
  "node-type": getNodeTypeByName(item.id)
15715
17011
  }, null, 8, ["class", "node-type"]),
15716
17012
  createBaseVNode("span", null, [
15717
- createVNode(_component_I18nT, { keypath: "nodeView.runButtonText.from" }, {
17013
+ createVNode(unref(I18nT), {
17014
+ keypath: "nodeView.runButtonText.from",
17015
+ scope: "global"
17016
+ }, {
15718
17017
  nodeName: withCtx(() => [
15719
17018
  createVNode(unref(N8nText), {
15720
17019
  bold: "",
@@ -15832,18 +17131,18 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
15832
17131
  },
15833
17132
  setup(__props) {
15834
17133
  const props = __props;
15835
- const i18n = useI18n();
15836
- const title = computed(
15837
- () => props.stopping ? i18n.baseText("nodeView.stoppingCurrentExecution") : i18n.baseText("nodeView.stopCurrentExecution")
17134
+ const i18n2 = useI18n();
17135
+ const title2 = computed(
17136
+ () => props.stopping ? i18n2.baseText("nodeView.stoppingCurrentExecution") : i18n2.baseText("nodeView.stopCurrentExecution")
15838
17137
  );
15839
17138
  return (_ctx, _cache) => {
15840
- const _component_N8nIconButton = _sfc_main$S;
17139
+ const _component_N8nIconButton = _sfc_main$Y;
15841
17140
  return openBlock(), createBlock(_component_N8nIconButton, {
15842
17141
  icon: "square",
15843
17142
  size: "large",
15844
17143
  class: "stop-execution",
15845
17144
  type: "secondary",
15846
- title: title.value,
17145
+ title: title2.value,
15847
17146
  loading: _ctx.stopping,
15848
17147
  "data-test-id": "stop-execution-button"
15849
17148
  }, null, 8, ["title", "loading"]);
@@ -15853,14 +17152,14 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
15853
17152
  const _sfc_main$3 = /* @__PURE__ */ defineComponent({
15854
17153
  __name: "CanvasStopWaitingForWebhookButton",
15855
17154
  setup(__props) {
15856
- const i18n = useI18n();
17155
+ const i18n2 = useI18n();
15857
17156
  return (_ctx, _cache) => {
15858
- const _component_N8nIconButton = _sfc_main$S;
17157
+ const _component_N8nIconButton = _sfc_main$Y;
15859
17158
  return openBlock(), createBlock(_component_N8nIconButton, {
15860
17159
  class: "stop-execution",
15861
17160
  icon: "square",
15862
17161
  size: "large",
15863
- title: unref(i18n).baseText("nodeView.stopWaitingForWebhookCall"),
17162
+ title: unref(i18n2).baseText("nodeView.stopWaitingForWebhookCall"),
15864
17163
  type: "secondary",
15865
17164
  "data-test-id": "stop-execution-waiting-for-webhook-button"
15866
17165
  }, null, 8, ["title"]);
@@ -15912,21 +17211,21 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
15912
17211
  __name: "NodeView",
15913
17212
  setup(__props) {
15914
17213
  const LazyNodeCreation = defineAsyncComponent(
15915
- async () => await __vitePreload(() => import("./NodeCreation-vn1s6ViE.js").then((n) => n.N), true ? __vite__mapDeps([0,1,2,3]) : void 0)
17214
+ async () => await __vitePreload(() => import("./NodeCreation-CVbCKnet.js").then((n) => n.N), true ? __vite__mapDeps([0,1,2,3]) : void 0)
15916
17215
  );
15917
17216
  const LazyNodeDetailsView = defineAsyncComponent(
15918
- async () => await __vitePreload(() => import("./NodeDetailsView-Bfqrvndc.js"), true ? __vite__mapDeps([4,1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]) : void 0)
17217
+ async () => await __vitePreload(() => import("./NodeDetailsView-KFidngJi.js"), true ? __vite__mapDeps([4,1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]) : void 0)
15919
17218
  );
15920
17219
  const LazyNodeDetailsViewV2 = defineAsyncComponent(
15921
- async () => await __vitePreload(() => import("./NodeDetailsViewV2-DvXkio7Z.js"), true ? __vite__mapDeps([25,1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,26]) : void 0)
17220
+ async () => await __vitePreload(() => import("./NodeDetailsViewV2-BL4KKqW-.js"), true ? __vite__mapDeps([26,1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,27]) : void 0)
15922
17221
  );
15923
17222
  const LazySetupWorkflowCredentialsButton = defineAsyncComponent(
15924
- async () => await __vitePreload(() => import("./SetupWorkflowCredentialsButton-Do2E5w2d.js"), true ? __vite__mapDeps([27,1,2]) : void 0)
17223
+ async () => await __vitePreload(() => import("./SetupWorkflowCredentialsButton-Pzrxag-k.js"), true ? __vite__mapDeps([28,1,2]) : void 0)
15925
17224
  );
15926
17225
  const $style = useCssModule();
15927
17226
  const router = useRouter();
15928
17227
  const route = useRoute();
15929
- const i18n = useI18n();
17228
+ const i18n2 = useI18n();
15930
17229
  const telemetry = useTelemetry();
15931
17230
  const externalHooks = useExternalHooks();
15932
17231
  const toast = useToast();
@@ -15961,6 +17260,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
15961
17260
  const posthogStore = usePostHog();
15962
17261
  const agentRequestStore = useAgentRequestStore();
15963
17262
  const logsStore = useLogsStore();
17263
+ const aiTemplatesStarterCollectionStore = useAITemplatesStarterCollectionStore();
15964
17264
  const { addBeforeUnloadEventBindings, removeBeforeUnloadEventBindings } = useBeforeUnload({
15965
17265
  route
15966
17266
  });
@@ -16074,8 +17374,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
16074
17374
  } catch (error2) {
16075
17375
  toast.showError(
16076
17376
  error2,
16077
- i18n.baseText("nodeView.showError.mounted1.title"),
16078
- i18n.baseText("nodeView.showError.mounted1.message") + ":"
17377
+ i18n2.baseText("nodeView.showError.mounted1.title"),
17378
+ i18n2.baseText("nodeView.showError.mounted1.message") + ":"
16079
17379
  );
16080
17380
  return;
16081
17381
  }
@@ -16120,8 +17420,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
16120
17420
  break;
16121
17421
  default:
16122
17422
  toast.showError(
16123
- new Error(i18n.baseText("nodeView.couldntLoadWorkflow.invalidWorkflowObject")),
16124
- i18n.baseText("nodeView.couldntImportWorkflow")
17423
+ new Error(i18n2.baseText("nodeView.couldntLoadWorkflow.invalidWorkflowObject")),
17424
+ i18n2.baseText("nodeView.couldntImportWorkflow")
16125
17425
  );
16126
17426
  await router.replace({ name: VIEWS.NEW_WORKFLOW });
16127
17427
  }
@@ -16196,6 +17496,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
16196
17496
  if (workflowData.meta?.onboardingId) {
16197
17497
  trackOpenWorkflowFromOnboardingTemplate();
16198
17498
  }
17499
+ if (workflowData.meta?.templateId?.startsWith("035_template_onboarding")) {
17500
+ aiTemplatesStarterCollectionStore.trackUserOpenedWorkflow(
17501
+ workflowData.meta.templateId.split("-").pop() ?? ""
17502
+ );
17503
+ }
16199
17504
  await projectsStore.setProjectNavActiveIdByWorkflowHomeProject(workflowData.homeProject);
16200
17505
  } catch (error2) {
16201
17506
  if (error2.httpStatusCode === 404) {
@@ -16210,7 +17515,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
16210
17515
  params: { entityType: "workflow" }
16211
17516
  });
16212
17517
  }
16213
- toast.showError(error2, i18n.baseText("openWorkflow.workflowNotFoundError"));
17518
+ toast.showError(error2, i18n2.baseText("openWorkflow.workflowNotFoundError"));
16214
17519
  void router.push({
16215
17520
  name: VIEWS.NEW_WORKFLOW
16216
17521
  });
@@ -16245,15 +17550,15 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
16245
17550
  async function openTemplateFromWorkflowJSON(workflow) {
16246
17551
  if (!workflow.nodes || !workflow.connections) {
16247
17552
  toast.showError(
16248
- new Error(i18n.baseText("nodeView.couldntLoadWorkflow.invalidWorkflowObject")),
16249
- i18n.baseText("nodeView.couldntImportWorkflow")
17553
+ new Error(i18n2.baseText("nodeView.couldntLoadWorkflow.invalidWorkflowObject")),
17554
+ i18n2.baseText("nodeView.couldntImportWorkflow")
16250
17555
  );
16251
17556
  await router.replace({ name: VIEWS.NEW_WORKFLOW });
16252
17557
  return;
16253
17558
  }
16254
17559
  resetWorkspace();
16255
17560
  canvasStore.startLoading();
16256
- canvasStore.setLoadingText(i18n.baseText("nodeView.loadingTemplate"));
17561
+ canvasStore.setLoadingText(i18n2.baseText("nodeView.loadingTemplate"));
16257
17562
  workflowsStore.currentWorkflowExecutions = [];
16258
17563
  executionsStore.activeExecution = null;
16259
17564
  isBlankRedirect.value = true;
@@ -16271,7 +17576,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
16271
17576
  async function openWorkflowTemplate(templateId) {
16272
17577
  resetWorkspace();
16273
17578
  canvasStore.startLoading();
16274
- canvasStore.setLoadingText(i18n.baseText("nodeView.loadingTemplate"));
17579
+ canvasStore.setLoadingText(i18n2.baseText("nodeView.loadingTemplate"));
16275
17580
  workflowsStore.currentWorkflowExecutions = [];
16276
17581
  executionsStore.activeExecution = null;
16277
17582
  let data;
@@ -16280,13 +17585,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
16280
17585
  data = await templatesStore.getFixedWorkflowTemplate(templateId);
16281
17586
  if (!data) {
16282
17587
  throw new Error(
16283
- i18n.baseText("nodeView.workflowTemplateWithIdCouldNotBeFound", {
17588
+ i18n2.baseText("nodeView.workflowTemplateWithIdCouldNotBeFound", {
16284
17589
  interpolate: { templateId }
16285
17590
  })
16286
17591
  );
16287
17592
  }
16288
17593
  } catch (error2) {
16289
- toast.showError(error2, i18n.baseText("nodeView.couldntImportWorkflow"));
17594
+ toast.showError(error2, i18n2.baseText("nodeView.couldntImportWorkflow"));
16290
17595
  await router.replace({ name: VIEWS.NEW_WORKFLOW });
16291
17596
  return;
16292
17597
  }
@@ -16389,7 +17694,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
16389
17694
  }
16390
17695
  async function onCopyNodes(ids) {
16391
17696
  await copyNodes(ids);
16392
- toast.showMessage({ title: i18n.baseText("generic.copiedToClipboard"), type: "success" });
17697
+ toast.showMessage({ title: i18n2.baseText("generic.copiedToClipboard"), type: "success" });
16393
17698
  }
16394
17699
  async function onClipboardPaste(plainTextData) {
16395
17700
  if (getNodeViewTab(route) !== MAIN_HEADER_TABS.WORKFLOW || !keyBindingsEnabled.value || !checkIfEditingIsAllowed()) {
@@ -16398,16 +17703,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
16398
17703
  let workflowData = null;
16399
17704
  if (plainTextData.match(VALID_WORKFLOW_IMPORT_URL_REGEX)) {
16400
17705
  const importConfirm = await message.confirm(
16401
- i18n.baseText("nodeView.confirmMessage.onClipboardPasteEvent.message", {
17706
+ i18n2.baseText("nodeView.confirmMessage.onClipboardPasteEvent.message", {
16402
17707
  interpolate: { plainTextData }
16403
17708
  }),
16404
- i18n.baseText("nodeView.confirmMessage.onClipboardPasteEvent.headline"),
17709
+ i18n2.baseText("nodeView.confirmMessage.onClipboardPasteEvent.headline"),
16405
17710
  {
16406
17711
  type: "warning",
16407
- confirmButtonText: i18n.baseText(
17712
+ confirmButtonText: i18n2.baseText(
16408
17713
  "nodeView.confirmMessage.onClipboardPasteEvent.confirmButtonText"
16409
17714
  ),
16410
- cancelButtonText: i18n.baseText(
17715
+ cancelButtonText: i18n2.baseText(
16411
17716
  "nodeView.confirmMessage.onClipboardPasteEvent.cancelButtonText"
16412
17717
  )
16413
17718
  }
@@ -16473,7 +17778,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
16473
17778
  async function onSaveFromWithinNDV() {
16474
17779
  if (ndvStore.activeNodeName) {
16475
17780
  toast.showMessage({
16476
- title: i18n.baseText("generic.workflowSaved"),
17781
+ title: i18n2.baseText("generic.workflowSaved"),
16477
17782
  type: "success"
16478
17783
  });
16479
17784
  }
@@ -16495,17 +17800,17 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
16495
17800
  if (!keyBindingsEnabled.value || document.querySelector(".rename-prompt")) return;
16496
17801
  try {
16497
17802
  const promptResponsePromise = message.prompt(
16498
- i18n.baseText("nodeView.prompt.newName") + ":",
16499
- i18n.baseText("nodeView.prompt.renameNode") + `: ${currentName}`,
17803
+ i18n2.baseText("nodeView.prompt.newName") + ":",
17804
+ i18n2.baseText("nodeView.prompt.renameNode") + `: ${currentName}`,
16500
17805
  {
16501
17806
  customClass: "rename-prompt",
16502
- confirmButtonText: i18n.baseText("nodeView.prompt.rename"),
16503
- cancelButtonText: i18n.baseText("nodeView.prompt.cancel"),
16504
- inputErrorMessage: i18n.baseText("nodeView.prompt.invalidName"),
17807
+ confirmButtonText: i18n2.baseText("nodeView.prompt.rename"),
17808
+ cancelButtonText: i18n2.baseText("nodeView.prompt.cancel"),
17809
+ inputErrorMessage: i18n2.baseText("nodeView.prompt.invalidName"),
16505
17810
  inputValue: currentName,
16506
17811
  inputValidator: (value) => {
16507
17812
  if (!value.trim()) {
16508
- return i18n.baseText("nodeView.prompt.invalidName");
17813
+ return i18n2.baseText("nodeView.prompt.invalidName");
16509
17814
  }
16510
17815
  return true;
16511
17816
  }
@@ -16545,6 +17850,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
16545
17850
  revalidateNodeOutputConnections(id2);
16546
17851
  }
16547
17852
  function onClickNodeAdd(source, sourceHandle) {
17853
+ if (isFocusPanelFeatureEnabled.value && focusPanelStore.focusPanelActive) {
17854
+ focusPanelStore.hideFocusPanel();
17855
+ }
16548
17856
  nodeCreatorStore.openNodeCreatorForConnectingNode({
16549
17857
  connection: {
16550
17858
  source,
@@ -16615,13 +17923,18 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
16615
17923
  async function onImportWorkflowDataEvent(data) {
16616
17924
  const workflowData = data.data;
16617
17925
  await importWorkflowData(workflowData, "file", {
16618
- viewport: viewportBoundaries.value
17926
+ viewport: viewportBoundaries.value,
17927
+ regenerateIds: data.regenerateIds === true || data.regenerateIds === void 0
16619
17928
  });
16620
17929
  fitView();
16621
17930
  selectNodes(workflowData.nodes?.map((node2) => node2.id) ?? []);
16622
17931
  if (data.tidyUp) {
17932
+ const nodesIdsToTidyUp = data.nodesIdsToTidyUp;
16623
17933
  setTimeout(() => {
16624
- canvasEventBus.emit("tidyUp", { source: "import-workflow-data" });
17934
+ canvasEventBus.emit("tidyUp", {
17935
+ source: "import-workflow-data",
17936
+ nodeIdsFilter: nodesIdsToTidyUp
17937
+ });
16625
17938
  }, 0);
16626
17939
  }
16627
17940
  }
@@ -16696,30 +18009,30 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
16696
18009
  async function onRevertAddNode({ node: node2 }) {
16697
18010
  await revertAddNode(node2.name);
16698
18011
  }
16699
- async function onSwitchActiveNode(nodeName) {
18012
+ function onSwitchActiveNode(nodeName) {
16700
18013
  const node2 = workflowsStore.getNodeByName(nodeName);
16701
18014
  if (!node2) return;
16702
18015
  setNodeActiveByName(nodeName);
16703
18016
  selectNodes([node2.id]);
16704
18017
  }
16705
- async function onOpenSelectiveNodeCreator(node2, connectionType2, connectionIndex = 0) {
18018
+ function onOpenSelectiveNodeCreator(node2, connectionType2, connectionIndex = 0) {
16706
18019
  nodeCreatorStore.openSelectiveNodeCreator({ node: node2, connectionType: connectionType2, connectionIndex });
16707
18020
  }
16708
- function onOpenNodeCreatorForTriggerNodes(source) {
16709
- nodeCreatorStore.openNodeCreatorForTriggerNodes(source);
16710
- }
16711
- function onOpenNodeCreatorFromCanvas(source) {
16712
- onToggleNodeCreator({ createNodeActive: true, source });
16713
- }
16714
18021
  function onToggleNodeCreator(options) {
16715
18022
  nodeCreatorStore.setNodeCreatorState(options);
16716
- if (options.createNodeActive) {
16717
- focusPanelStore.closeFocusPanel();
18023
+ if (isFocusPanelFeatureEnabled.value && focusPanelStore.focusPanelActive) {
18024
+ focusPanelStore.hideFocusPanel(options.createNodeActive);
16718
18025
  }
16719
18026
  if (!options.createNodeActive && !options.hasAddedNodes) {
16720
18027
  uiStore.resetLastInteractedWith();
16721
18028
  }
16722
18029
  }
18030
+ function onOpenNodeCreatorFromCanvas(source) {
18031
+ onToggleNodeCreator({ createNodeActive: true, source });
18032
+ }
18033
+ function onOpenNodeCreatorForTriggerNodes(source) {
18034
+ nodeCreatorStore.openNodeCreatorForTriggerNodes(source);
18035
+ }
16723
18036
  function onToggleFocusPanel() {
16724
18037
  if (!isFocusPanelFeatureEnabled.value) {
16725
18038
  return;
@@ -16729,6 +18042,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
16729
18042
  function closeNodeCreator() {
16730
18043
  if (nodeCreatorStore.isCreateNodeActive) {
16731
18044
  nodeCreatorStore.isCreateNodeActive = false;
18045
+ if (isFocusPanelFeatureEnabled.value && focusPanelStore.focusPanelActive) {
18046
+ focusPanelStore.hideFocusPanel(false);
18047
+ }
16732
18048
  }
16733
18049
  }
16734
18050
  function onCreateSticky() {
@@ -16834,7 +18150,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
16834
18150
  console.error(`Execution ${data.id} error:`);
16835
18151
  console.error(data.data.resultData.error.stack);
16836
18152
  toast.showMessage({
16837
- title: i18n.baseText("nodeView.showError.workflowError"),
18153
+ title: i18n2.baseText("nodeView.showError.workflowError"),
16838
18154
  message: data.data.resultData.error.message,
16839
18155
  type: "error",
16840
18156
  duration: 0
@@ -16845,7 +18161,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
16845
18161
  function onExecutionOpenedWithWaitTill(data) {
16846
18162
  if (data.waitTill) {
16847
18163
  toast.showMessage({
16848
- title: i18n.baseText("nodeView.thisExecutionHasntFinishedYet"),
18164
+ title: i18n2.baseText("nodeView.thisExecutionHasntFinishedYet"),
16849
18165
  message: h(_sfc_main$2),
16850
18166
  type: "warning",
16851
18167
  duration: 0
@@ -16970,12 +18286,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
16970
18286
  window.top.postMessage(
16971
18287
  JSON.stringify({
16972
18288
  command: "error",
16973
- message: i18n.baseText("openWorkflow.workflowImportError")
18289
+ message: i18n2.baseText("openWorkflow.workflowImportError")
16974
18290
  }),
16975
18291
  "*"
16976
18292
  );
16977
18293
  }
16978
- toast.showError(e, i18n.baseText("openWorkflow.workflowImportError"));
18294
+ toast.showError(e, i18n2.baseText("openWorkflow.workflowImportError"));
16979
18295
  }
16980
18296
  } else if (json2 && json2.command === "openExecution") {
16981
18297
  try {
@@ -16989,13 +18305,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
16989
18305
  window.top.postMessage(
16990
18306
  JSON.stringify({
16991
18307
  command: "error",
16992
- message: i18n.baseText("nodeView.showError.openExecution.title")
18308
+ message: i18n2.baseText("nodeView.showError.openExecution.title")
16993
18309
  }),
16994
18310
  "*"
16995
18311
  );
16996
18312
  }
16997
18313
  toast.showMessage({
16998
- title: i18n.baseText("nodeView.showError.openExecution.title"),
18314
+ title: i18n2.baseText("nodeView.showError.openExecution.title"),
16999
18315
  message: e.message,
17000
18316
  type: "error"
17001
18317
  });
@@ -17018,10 +18334,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
17018
18334
  if (isReadOnlyRoute.value || isReadOnlyEnvironment.value) {
17019
18335
  const messageContext = isReadOnlyRoute.value ? "executions" : "workflows";
17020
18336
  readOnlyNotification.value = toast.showMessage({
17021
- title: i18n.baseText(
18337
+ title: i18n2.baseText(
17022
18338
  isReadOnlyEnvironment.value ? `readOnlyEnv.showMessage.${messageContext}.title` : "readOnly.showMessage.executions.title"
17023
18339
  ),
17024
- message: i18n.baseText(
18340
+ message: i18n2.baseText(
17025
18341
  isReadOnlyEnvironment.value ? `readOnlyEnv.showMessage.${messageContext}.message` : "readOnly.showMessage.executions.message"
17026
18342
  ),
17027
18343
  type: "info"
@@ -17134,8 +18450,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
17134
18450
  setNodeActive(nodeUi.id);
17135
18451
  } else {
17136
18452
  toast.showToast({
17137
- title: i18n.baseText("nodeView.showMessage.ndvUrl.missingNodes.title"),
17138
- message: i18n.baseText("nodeView.showMessage.ndvUrl.missingNodes.content"),
18453
+ title: i18n2.baseText("nodeView.showMessage.ndvUrl.missingNodes.title"),
18454
+ message: i18n2.baseText("nodeView.showMessage.ndvUrl.missingNodes.content"),
17139
18455
  type: "warning"
17140
18456
  });
17141
18457
  void router.replace({
@@ -17370,18 +18686,18 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
17370
18686
  isLogsPanelOpen.value ? (openBlock(), createBlock(_sfc_main$1, {
17371
18687
  key: 0,
17372
18688
  type: "tertiary",
17373
- label: unref(i18n).baseText("chat.hide"),
18689
+ label: unref(i18n2).baseText("chat.hide"),
17374
18690
  class: normalizeClass(unref($style).chatButton),
17375
18691
  onClick: _cache[1] || (_cache[1] = ($event) => unref(logsStore).toggleOpen(false))
17376
18692
  }, null, 8, ["label", "class"])) : (openBlock(), createBlock(KeyboardShortcutTooltip, {
17377
18693
  key: 1,
17378
- label: unref(i18n).baseText("chat.open"),
18694
+ label: unref(i18n2).baseText("chat.open"),
17379
18695
  shortcut: { keys: ["c"] }
17380
18696
  }, {
17381
18697
  default: withCtx(() => [
17382
18698
  createVNode(_sfc_main$1, {
17383
18699
  type: isRunWorkflowButtonVisible.value ? "secondary" : "primary",
17384
- label: unref(i18n).baseText("chat.open"),
18700
+ label: unref(i18n2).baseText("chat.open"),
17385
18701
  class: normalizeClass(unref($style).chatButton),
17386
18702
  onClick: onOpenChat
17387
18703
  }, null, 8, ["type", "label", "class"])
@@ -17406,7 +18722,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
17406
18722
  class: normalizeClass(unref($style).readOnlyEnvironmentNotification)
17407
18723
  }, {
17408
18724
  default: withCtx(() => [
17409
- createTextVNode(toDisplayString(unref(i18n).baseText("readOnlyEnv.cantEditOrRun")), 1)
18725
+ createTextVNode(toDisplayString(unref(i18n2).baseText("readOnlyEnv.cantEditOrRun")), 1)
17410
18726
  ]),
17411
18727
  _: 1
17412
18728
  }, 8, ["class"])) : createCommentVNode("", true),
@@ -17460,7 +18776,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
17460
18776
  }, 8, ["id", "workflow", "workflow-object", "fallback-nodes", "show-fallback-nodes", "event-bus", "read-only", "executing", "key-bindings", "onUpdate:logs:inputOpen", "onUpdate:logs:outputOpen", "onUpdate:hasRangeSelection"])) : createCommentVNode("", true),
17461
18777
  isFocusPanelFeatureEnabled.value ? (openBlock(), createBlock(FocusPanel, {
17462
18778
  key: 1,
17463
- "is-canvas-read-only": isCanvasReadOnly.value
18779
+ "is-canvas-read-only": isCanvasReadOnly.value,
18780
+ onSaveKeyboardShortcut: onSaveWorkflow
17464
18781
  }, null, 8, ["is-canvas-read-only"])) : createCommentVNode("", true)
17465
18782
  ], 2);
17466
18783
  };
@@ -17487,7 +18804,12 @@ const NodeView$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePr
17487
18804
  default: NodeView
17488
18805
  }, Symbol.toStringTag, { value: "Module" }));
17489
18806
  export {
18807
+ CommunityNodeFooter as C,
18808
+ InputPanel as I,
17490
18809
  NodeSettings as N,
17491
- NodeView$1 as a,
17492
- useNodeDocsUrl as u
18810
+ __unplugin_components_2 as _,
18811
+ useNodeDocsUrl as a,
18812
+ _sfc_main$z as b,
18813
+ NodeView$1 as c,
18814
+ useExecutionData as u
17493
18815
  };