n8n-editor-ui 1.101.0 → 1.102.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/dist/assets/{ActionDropdown-BujIG0Jq.js → ActionDropdown-D-JmCYsp.js} +2 -2
  2. package/dist/assets/{AnimatedSpinner-B5cpb6Fs.js → AnimatedSpinner-BiuDg2x2.js} +1 -1
  3. package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-BPigGQTI.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-Bp194Fz4.js} +1 -1
  4. package/dist/assets/{AuthView-BOTPYtpM.js → AuthView-DF-20OPE.js} +2 -2
  5. package/dist/assets/{ChangePasswordView-DbeC55bz.js → ChangePasswordView-DSn8-M1-.js} +3 -3
  6. package/dist/assets/CollectionParameter-Bz5DzZqs.js +4 -0
  7. package/dist/assets/{CredentialsView-DUh5K-2r.js → CredentialsView-IQx76pD4.js} +8 -8
  8. package/dist/assets/{DemoFooter-BXPfbNJE.js → DemoFooter-49OiW0k2.js} +8 -7
  9. package/dist/assets/{EmptySharedSectionActionBox.vue_vue_type_script_setup_true_lang-CDDQIxv5.js → EmptySharedSectionActionBox.vue_vue_type_script_setup_true_lang-FNKd4r6R.js} +1 -1
  10. package/dist/assets/{EntityNotFound-CBUuOOYw.js → EntityNotFound-DScKsOtg.js} +1 -1
  11. package/dist/assets/{EntityUnAuthorised-7xgN3ECo.js → EntityUnAuthorised-DweZmhgI.js} +1 -1
  12. package/dist/assets/{ErrorView-BVfcsoOa.js → ErrorView-CNDVS4gm.js} +4 -4
  13. package/dist/assets/{EvaluationsRootView-BjrpKDj-.js → EvaluationsRootView-81SdPChp.js} +19 -27
  14. package/dist/assets/{EvaluationsView-DdmFZCH-.js → EvaluationsView-BAyQWPF9.js} +7 -7
  15. package/dist/assets/{ExecutionsTime-kMSlccIr.css → ExecutionsTime-DkME6I3E.css} +26 -19
  16. package/dist/assets/{ExecutionsTime.vue_vue_type_script_setup_true_lang-Ctx5Ybnr.js → ExecutionsTime.vue_vue_type_script_setup_true_lang-Qw7S05EC.js} +23 -21
  17. package/dist/assets/{ExecutionsView-8BjGHy2I.js → ExecutionsView--yDyvnL8.js} +15 -16
  18. package/dist/assets/{ExecutionsView-DSsowKj4.css → ExecutionsView-BHBePl1_.css} +1 -1
  19. package/dist/assets/{FileSaver.min-C5wzcK59.js → FileSaver.min-CeGSkamF.js} +1 -1
  20. package/dist/assets/{FixedCollectionParameter-DjlaZyUQ.css → FixedCollectionParameter-CEzpjeQZ.css} +18 -18
  21. package/dist/assets/{FixedCollectionParameter-BrPQ5Vay.js → FixedCollectionParameter-tgbkzIuD.js} +7 -7
  22. package/dist/assets/{ForgotMyPasswordView-L0afefc1.js → ForgotMyPasswordView-CVwKac4K.js} +3 -3
  23. package/dist/assets/{InfoAccordion-CEk3XG5b.js → InfoAccordion-75IQV-_q.js} +1 -1
  24. package/dist/assets/{InsightsChartAverageRuntime-BrwBWr_R.js → InsightsChartAverageRuntime-C4C4zghF.js} +4 -4
  25. package/dist/assets/{InsightsChartFailed-ILKWvikG.js → InsightsChartFailed-DyhWE17m.js} +4 -4
  26. package/dist/assets/{InsightsChartFailureRate-D1AVYwU7.js → InsightsChartFailureRate-B09GcGvY.js} +4 -4
  27. package/dist/assets/{InsightsChartTimeSaved-D49Rwn6-.js → InsightsChartTimeSaved-DGzFyou3.js} +4 -4
  28. package/dist/assets/{InsightsChartTotal-Bs-pUgA3.js → InsightsChartTotal-fIUzF41H.js} +4 -4
  29. package/dist/assets/{InsightsDashboard-BIC4uZpW.js → InsightsDashboard-Qhv7fScv.js} +10 -10
  30. package/dist/assets/{InsightsPaywall-DmwFI-6e.js → InsightsPaywall-C3-la0kD.js} +1 -1
  31. package/dist/assets/{InsightsSummary-D9lEzWNT.js → InsightsSummary-CJgV5s0y.js} +14 -13
  32. package/dist/assets/{InsightsSummary-DzGQpM5h.css → InsightsSummary-DTFIhBF3.css} +25 -27
  33. package/dist/assets/InsightsTableWorkflows-P5OHXu1Y.js +177 -0
  34. package/dist/assets/{Logo-DNxOhbuV.js → Logo-8MWdHUz0.js} +1 -1
  35. package/dist/assets/{LogsPanel-DvWnD7rJ.js → LogsPanel-BabpRONg.js} +279 -212
  36. package/dist/assets/{LogsPanel-D5R6F35L.css → LogsPanel-Bvy4ANV7.css} +106 -61
  37. package/dist/assets/{MainHeader-BVHIuVVT.js → MainHeader-0ppftO6b.js} +10 -10
  38. package/dist/assets/{MainSidebar-CEHr93uL.js → MainSidebar-BnXOkYK4.js} +23 -16
  39. package/dist/assets/{MainSidebar-DqrgzqvZ.css → MainSidebar-CaLHZgDB.css} +2 -2
  40. package/dist/assets/{InsightsTableWorkflows-CC8t-sAL.js → N8nDataTableServer-Cx18Zd1O.js} +9 -181
  41. package/dist/assets/{NodeCreation-Bq5626Ha.js → NodeCreation-DKbc91uY.js} +7 -7
  42. package/dist/assets/{NodeCreator-Dk0sNXFZ.css → NodeCreator-DWE25utr.css} +51 -58
  43. package/dist/assets/{NodeCreator-D7xT3ogw.js → NodeCreator-xRYJHbTG.js} +118 -112
  44. package/dist/assets/NodeDetailsView-CPVE5S8P.js +1155 -0
  45. package/dist/assets/NodeDetailsView-CaTI-1QQ.css +668 -0
  46. package/dist/assets/NodeDetailsViewV2-5pxsZwAo.js +1061 -0
  47. package/dist/assets/NodeDetailsViewV2-BxNx4ZUM.css +506 -0
  48. package/dist/assets/{NodeView-DL8JxnMc.css → NodeView-Cgf2HuDk.css} +263 -110
  49. package/dist/assets/{NodeView-DoR46iB5.js → NodeView-DYjZmKNE.js} +580 -409
  50. package/dist/assets/{ProjectHeader-DSKKwiQ0.js → ProjectHeader-e8JosKaj.js} +5 -5
  51. package/dist/assets/{ProjectSettings-C3sMIDHh.js → ProjectSettings-DNKcVLkd.js} +201 -25
  52. package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-cnANEo9o.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-EuKDPqQH.js} +3 -3
  53. package/dist/assets/{ResourcesListLayout-BVbjqFbc.js → ResourcesListLayout-C4y0iPmg.js} +4 -4
  54. package/dist/assets/{RunData-DG20AzLo.js → RunData-D3xzjO33.js} +124 -99
  55. package/dist/assets/{RunData-B5_okvCv.css → RunData-DuKNwYqe.css} +99 -85
  56. package/dist/assets/{RunDataJson-7okRLIES.js → RunDataJson-D5YFtOcJ.js} +16 -20
  57. package/dist/assets/{RunDataJsonActions-DrgwFS0W.css → RunDataJsonActions-B2jW3_UG.css} +3 -5
  58. package/dist/assets/{RunDataJsonActions-Qkg8HmUd.js → RunDataJsonActions-BWvs4coo.js} +15 -16
  59. package/dist/assets/{RunDataParsedAiContent-DRO1Bjsh.js → RunDataParsedAiContent-BYISiW-I.js} +12 -12
  60. package/dist/assets/{RunDataParsedAiContent-9EEUzCKp.css → RunDataParsedAiContent-wfIiKsq7.css} +16 -13
  61. package/dist/assets/{RunDataSearch-R6qtl0Jf.css → RunDataSearch-2eEalFoi.css} +8 -7
  62. package/dist/assets/{RunDataSearch-D5eQUWvi.js → RunDataSearch-oo3_BoLt.js} +4 -4
  63. package/dist/assets/{RunDataTable-CJmmTtEp.js → RunDataTable-6rCOQNCX.js} +126 -54
  64. package/dist/assets/{RunDataTable-CykHIwNT.css → RunDataTable-CTBtmQIs.css} +84 -44
  65. package/dist/assets/{SamlOnboarding-ClxYfm5z.js → SamlOnboarding-BG-gGcbY.js} +3 -3
  66. package/dist/assets/{SettingsApiView-Ds7FYVrN.js → SettingsApiView-Bmlbp7pD.js} +1 -1
  67. package/dist/assets/{SettingsCommunityNodesView-QKvLs6gi.js → SettingsCommunityNodesView-4DWd4UiC.js} +32 -6
  68. package/dist/assets/{SettingsExternalSecrets-d1KDgYYp.css → SettingsExternalSecrets-BAX9ENm9.css} +9 -6
  69. package/dist/assets/{SettingsExternalSecrets-DGRdvsMy.js → SettingsExternalSecrets-hpUcipWw.js} +17 -13
  70. package/dist/assets/{SettingsLdapView-C_LJwixk.js → SettingsLdapView-7p7L95v9.js} +1 -1
  71. package/dist/assets/{SettingsLogStreamingView-CaEJvgJ9.js → SettingsLogStreamingView-4CpWJqj_.js} +1 -1
  72. package/dist/assets/{SettingsPersonalView-DlwXaGDs.js → SettingsPersonalView-9iP06ihA.js} +11 -3
  73. package/dist/assets/{SettingsSourceControl-B6eULOfX.js → SettingsSourceControl-BGjWhqqJ.js} +5 -5
  74. package/dist/assets/{SettingsSso-5zcg-J4E.js → SettingsSso-ChOyD3kc.js} +1 -1
  75. package/dist/assets/{SettingsUsageAndPlan-CMBvYdjo.js → SettingsUsageAndPlan-jP8nn4Rh.js} +1 -1
  76. package/dist/assets/SettingsUsersView-BhfbqjxW.js +861 -0
  77. package/dist/assets/SettingsUsersView-BuZbf1jq.css +446 -0
  78. package/dist/assets/{SettingsView-Bawwm19P.css → SettingsView-4yzof_Pb.css} +4 -4
  79. package/dist/assets/{SettingsView-BuDKhqwZ.js → SettingsView-DTFEdRdj.js} +14 -14
  80. package/dist/assets/{SetupView-DSaQcQDF.js → SetupView-CXuAO6tx.js} +3 -3
  81. package/dist/assets/{SetupWorkflowCredentialsButton-BWISZAxq.js → SetupWorkflowCredentialsButton-Bj4rSqAV.js} +2 -2
  82. package/dist/assets/{SetupWorkflowFromTemplateView-CfDWCwoA.js → SetupWorkflowFromTemplateView-DG8Ml3A0.js} +8 -12
  83. package/dist/assets/{SigninView-BpjyswHb.js → SigninView-KmmptKWN.js} +7 -3
  84. package/dist/assets/{SignoutView-f_CoUl4S.js → SignoutView-8rAPEX_X.js} +1 -1
  85. package/dist/assets/{SignupView-q3f9g3P9.js → SignupView-ZYUP6f-Y.js} +3 -3
  86. package/dist/assets/{TableBase-DruQl-SO.js → TableBase-7XxrB0dw.js} +1 -1
  87. package/dist/assets/{Tags-DbmKHzWo.js → Tags-C8Jnw74N.js} +1 -1
  88. package/dist/assets/{TemplateDetails-DP_5pkzG.js → TemplateDetails-Bk1ixuRQ.js} +2 -2
  89. package/dist/assets/{TemplateList-y8Aumcsb.js → TemplateList-9SAC8OGn.js} +6 -3
  90. package/dist/assets/{TemplatesCollectionView-VdQpHtxs.js → TemplatesCollectionView-CLZDJ4HM.js} +6 -6
  91. package/dist/assets/{TemplatesSearchView-BUcYRVEK.js → TemplatesSearchView-DRzdGp3s.js} +8 -8
  92. package/dist/assets/{TemplatesView-4DUEEEtD.js → TemplatesView-V6ud-nM5.js} +3 -3
  93. package/dist/assets/{TemplatesWorkflowView--zUXMB8f.js → TemplatesWorkflowView-CLb4CuR2.js} +6 -6
  94. package/dist/assets/{NodeDetailsView-DB-5JPUD.js → TriggerPanel-BOC7PYsi.js} +498 -1415
  95. package/dist/assets/{NodeDetailsView-BaIj2qAa.css → TriggerPanel-DRpKKKun.css} +296 -903
  96. package/dist/assets/{VariablesView-DoWb0Vtv.js → VariablesView-BDzhSaxw.js} +6 -6
  97. package/dist/assets/{VariablesView-Kog_9PMT.css → VariablesView-Bh0OeH4s.css} +6 -6
  98. package/dist/assets/{WorkerView-D56d7XJA.js → WorkerView-C2A7cYkr.js} +9 -9
  99. package/dist/assets/{WorkflowActivator-CQxaDCfA.js → WorkflowActivator-BmIzNsA8.js} +8 -8
  100. package/dist/assets/{WorkflowActivator-BJPsIkXE.css → WorkflowActivator-DhLX6i1H.css} +2 -2
  101. package/dist/assets/{WorkflowExecutionsInfoAccordion-D9p_ZqmA.js → WorkflowExecutionsInfoAccordion-Cn4GRGO_.js} +6 -6
  102. package/dist/assets/{WorkflowExecutionsLandingPage-CymYth6K.js → WorkflowExecutionsLandingPage-s-dIgG6D.js} +3 -3
  103. package/dist/assets/{WorkflowExecutionsPreview-DRvf3WQC.js → WorkflowExecutionsPreview-BE7NfRAa.js} +12 -12
  104. package/dist/assets/{WorkflowExecutionsView-DxiIaUKV.js → WorkflowExecutionsView-DFmBdF-B.js} +16 -16
  105. package/dist/assets/{WorkflowHistory-DBPIq2u7.js → WorkflowHistory-3wO0nQYD.js} +4 -4
  106. package/dist/assets/{WorkflowOnboardingView-D4QKSetf.js → WorkflowOnboardingView-mBVE6x-i.js} +1 -1
  107. package/dist/assets/{WorkflowPreview-D3YRZjYi.js → WorkflowPreview-DlNMFCKn.js} +1 -1
  108. package/dist/assets/{WorkflowsView-ipf8KKwB.css → WorkflowsView-CyJbJBc8.css} +25 -21
  109. package/dist/assets/{WorkflowsView-DPADmBVd.js → WorkflowsView-DsAOuPT0.js} +77 -72
  110. package/dist/assets/{chartjs.utils-Cou_ISuU.js → chartjs.utils-BywXqBmg.js} +2 -2
  111. package/dist/assets/{en-DzZibgm_.js → en-CcKAtA8V.js} +45 -5
  112. package/dist/assets/{global-link-actions-olwfH36z.js → global-link-actions-BzAw9ZbO.js} +1 -1
  113. package/dist/assets/{import-curl-DD21H3kK.js → import-curl-1LWAxRTV.js} +1 -1
  114. package/dist/assets/{index-uJOu4Uio.js → index-B6A1nL2x.js} +1 -1
  115. package/dist/assets/{index-BzamKJpD.css → index-C66_v3sX.css} +1302 -1279
  116. package/dist/assets/{index-7S5ADieN.js → index-V0GOmfo8.js} +40721 -34933
  117. package/dist/assets/{pickBy-DPxZbMic.js → pickBy-CtRItcCT.js} +1 -1
  118. package/dist/assets/{templateActions-DJJfyIhq.js → templateActions-DpIzx0ws.js} +2 -2
  119. package/dist/assets/{useBeforeUnload-DveXGtGN.js → useBeforeUnload-B0EP7Q2i.js} +1 -1
  120. package/dist/assets/{useExecutionDebugging-DM4nhx6D.js → useExecutionDebugging-AwlOA2KI.js} +2 -1
  121. package/dist/assets/{useExecutionHelpers-BfF56crp.js → useExecutionHelpers-DvBwGIzz.js} +1 -1
  122. package/dist/assets/{useImportCurlCommand-BAgQhwtE.js → useImportCurlCommand-DIFC7Epr.js} +2 -2
  123. package/dist/assets/{useKeybindings-CV0VsjNP.js → useKeybindings-CduQ2pi5.js} +4 -4
  124. package/dist/assets/{useProjectPages-DgMGWOaO.js → useProjectPages-DmNmAOdq.js} +1 -1
  125. package/dist/assets/{usePushConnection-D8SE-itT.js → usePushConnection-Dyd5__87.js} +6 -12
  126. package/dist/assets/{useWorkflowActivate-BKz3N1SO.js → useWorkflowActivate-z9iwP6OY.js} +1 -1
  127. package/dist/index.html +2 -2
  128. package/package.json +1 -1
  129. package/vite.config.mts +2 -2
  130. package/dist/assets/CollectionParameter-CExdr4jd.js +0 -4
  131. package/dist/assets/SettingsUsersView-BL3TAhT8.js +0 -338
  132. package/dist/assets/SettingsUsersView-By12E2li.css +0 -143
@@ -1,18 +1,8 @@
1
- import { d as defineComponent, i as createElementBlock, g as openBlock, n as normalizeClass, k as createBaseVNode, J as renderSlot, _ as _export_sfc, h as resolveComponent, e as createBlock, hn as Draggable, w as withCtx, f as createCommentVNode, j as createVNode, a3 as useWorkflowsStore, bN as useNodeTypesStore, x as computed, bw as NodeConnectionTypes, o as onMounted, I as onBeforeUnmount, F as Fragment, y as renderList, Z as N8nTooltip, bW as _sfc_main$e, l as createTextVNode, t as toDisplayString, ch as useThrottleFn, aL as useNDVStore, S as useUIStore, r as ref, cO as useSlots, cr as ndvEventBus, a9 as watch, i8 as MAIN_NODE_PANEL_WIDTH, b6 as useStorage, i9 as LOCAL_STORAGE_MAIN_PANEL_RELATIVE_WIDTH, m as unref, O as normalizeStyle, ce as N8nResizeWrapper, K as nextTick, ia as convertToDisplayDateComponents, ca as resolveDirective, f1 as InfoTip, aT as withDirectives, c as useI18n, p as N8nText, bu as emptyTokenUsageData, bt as addTokenUsageData, bQ as getDefaultExportFromCjs, ib as requireCapitalize, gv as parseAiContent, ic as FontAwesomeIcon, H as N8nRadioButtons, bP as formatTokenUsageCount, id as ElTree, fp as storeToRefs, v as useSettingsStore, e4 as useNodeDirtiness, gp as useNodeType, bG as usePinnedData, c_ as CanvasNodeDirtiness, bh as createSlots, cb as waitingNodeTooltip, aU as vShow, ax as useTelemetry, cD as isPresent, fd as N8nSelect, fe as _sfc_main$h, ie as truncate, he as createStaticVNode, bO as START_NODE_TYPE, hR as MANUAL_TRIGGER_NODE_TYPE, ig as CRON_NODE_TYPE, ih as INTERVAL_NODE_TYPE, dg as getNodeInputs, e7 as getNodeOutputs, ii as uniqBy, c2 as resolveDynamicComponent, bV as withModifiers, dE as _sfc_main$i, aW as N8nIcon, b as useRouter, aj as useWorkflowHelpers, ij as isTriggerPanelObject, e8 as getTriggerNodeServiceName, bF as CHAT_TRIGGER_NODE_TYPE, hX as WEBHOOK_NODE_TYPE, d8 as FORM_TRIGGER_NODE_TYPE, fY as CopyInput, q as N8nButton, eP as _sfc_main$j, N as N8nHeading, a0 as N8nLink, P as createEventBus, dW as Transition, V as VIEWS, aB as WORKFLOW_SETTINGS_MODAL_KEY, bI as useNodeHelpers, d_ as useDeviceSupport, ik as EXECUTABLE_TRIGGER_NODE_TYPES, aR as STICKY_NODE_TYPE, il as BASE_NODE_SURVEY_URL, ao as EnterpriseEditionFeature, gx as dataPinningEventBus, cf as useStyles, im as APP_MODALS_ELEMENT_ID, az as useMessage, aA as MODAL_CONFIRM, ey as jsonParse, bf as useExternalHooks } from "./index-7S5ADieN.js";
2
- import { N as NodeSettings } from "./NodeView-DoR46iB5.js";
3
- import { b as _sfc_main$f, c as ViewSubExecution, _ as _sfc_main$g, R as RunData } from "./RunData-DG20AzLo.js";
4
- import RunDataAi$1 from "./RunDataParsedAiContent-DRO1Bjsh.js";
5
- import { N as N8nInfoAccordion } from "./InfoAccordion-CEk3XG5b.js";
6
- import { u as useWorkflowActivate } from "./useWorkflowActivate-BKz3N1SO.js";
7
- import "./ActionDropdown-BujIG0Jq.js";
8
- import "./useKeybindings-CV0VsjNP.js";
9
- import "./import-curl-DD21H3kK.js";
10
- import "./global-link-actions-olwfH36z.js";
11
- import "./useExecutionDebugging-DM4nhx6D.js";
12
- import "./useBeforeUnload-DveXGtGN.js";
13
- import "./FileSaver.min-C5wzcK59.js";
14
- import "./useExecutionHelpers-BfF56crp.js";
15
- const _sfc_main$d = /* @__PURE__ */ defineComponent({
1
+ import { d as defineComponent, h as createElementBlock, g as openBlock, n as normalizeClass, j as createBaseVNode, J as renderSlot, _ as _export_sfc, a4 as useWorkflowsStore, bG as useNodeTypesStore, aO as usePostHog, x as computed, dy as NDV_UI_OVERHAUL_EXPERIMENT, bo as NodeConnectionTypes, o as onMounted, I as onBeforeUnmount, F as Fragment, y as renderList, e as createBlock, f as createCommentVNode, $ as N8nTooltip, w as withCtx, i as createVNode, bP as _sfc_main$c, k as createTextVNode, t as toDisplayString, ig as convertToDisplayDateComponents, c4 as resolveDirective, l as unref, eX as InfoTip, aU as withDirectives, c as useI18n, p as N8nText, bm as emptyTokenUsageData, bl as addTokenUsageData, bJ as getDefaultExportFromCjs, ih as requireCapitalize, r as ref, gu as parseAiContent, N as N8nIcon, H as N8nRadioButtons, bI as formatTokenUsageCount, aa as watch, ii as ElTree, P as normalizeStyle, aM as useNDVStore, fn as storeToRefs, v as useSettingsStore, d$ as useNodeDirtiness, go as useNodeType, bz as usePinnedData, cV as CanvasNodeDirtiness, O as resolveComponent, bh as createSlots, c5 as waitingNodeTooltip, dd as _sfc_main$f, aV as vShow, ay as useTelemetry, cy as isPresent, f7 as N8nSelect, f8 as _sfc_main$g, ij as truncate, gL as createStaticVNode, bH as START_NODE_TYPE, hU as MANUAL_TRIGGER_NODE_TYPE, ik as CRON_NODE_TYPE, il as INTERVAL_NODE_TYPE, dc as getNodeInputs, e2 as getNodeOutputs, im as uniqBy, bY as resolveDynamicComponent, bO as withModifiers, T as useUIStore, b as useRouter, ak as useWorkflowHelpers, io as isTriggerPanelObject, e3 as getTriggerNodeServiceName, bx as CHAT_TRIGGER_NODE_TYPE, h_ as WEBHOOK_NODE_TYPE, d4 as FORM_TRIGGER_NODE_TYPE, fW as CopyInput, q as N8nButton, eK as _sfc_main$h, m as N8nHeading, a1 as N8nLink, Q as createEventBus, dQ as Transition, V as VIEWS, aC as WORKFLOW_SETTINGS_MODAL_KEY } from "./index-V0GOmfo8.js";
2
+ import { b as _sfc_main$d, c as ViewSubExecution, _ as _sfc_main$e, R as RunData } from "./RunData-D3xzjO33.js";
3
+ import RunDataAi$1 from "./RunDataParsedAiContent-BYISiW-I.js";
4
+ import { N as N8nInfoAccordion } from "./InfoAccordion-75IQV-_q.js";
5
+ const _sfc_main$b = /* @__PURE__ */ defineComponent({
16
6
  ...{ name: "N8nPulse" },
17
7
  __name: "Pulse",
18
8
  setup(__props) {
@@ -36,106 +26,17 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
36
26
  const pulseContainer = "_pulseContainer_1w2uc_123";
37
27
  const pulse = "_pulse_1w2uc_123";
38
28
  const pulse2 = "_pulse2_1w2uc_139";
39
- const style0$b = {
29
+ const style0$a = {
40
30
  pulseContainer,
41
31
  pulse,
42
32
  pulse2
43
33
  };
44
- const cssModules$c = {
45
- "$style": style0$b
46
- };
47
- const N8nPulse = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["__cssModules", cssModules$c]]);
48
- const _sfc_main$c = /* @__PURE__ */ defineComponent({
49
- __name: "PanelDragButton",
50
- props: {
51
- canMoveRight: { type: Boolean },
52
- canMoveLeft: { type: Boolean }
53
- },
54
- emits: ["drag", "dragstart", "dragend"],
55
- setup(__props, { emit: __emit }) {
56
- const emit = __emit;
57
- const onDrag = (e) => {
58
- emit("drag", e);
59
- };
60
- const onDragEnd = () => {
61
- emit("dragend");
62
- };
63
- const onDragStart = () => {
64
- emit("dragstart");
65
- };
66
- return (_ctx, _cache) => {
67
- const _component_font_awesome_icon = resolveComponent("font-awesome-icon");
68
- return openBlock(), createBlock(Draggable, {
69
- type: "panel-resize",
70
- class: normalizeClass(_ctx.$style.dragContainer),
71
- onDrag,
72
- onDragstart: onDragStart,
73
- onDragend: onDragEnd
74
- }, {
75
- default: withCtx(({ isDragging }) => [
76
- createBaseVNode("div", {
77
- class: normalizeClass({ [_ctx.$style.dragButton]: true }),
78
- "data-test-id": "panel-drag-button"
79
- }, [
80
- _ctx.canMoveLeft ? (openBlock(), createElementBlock("span", {
81
- key: 0,
82
- class: normalizeClass({ [_ctx.$style.leftArrow]: true, [_ctx.$style.visible]: isDragging })
83
- }, [
84
- createVNode(_component_font_awesome_icon, { icon: "arrow-left" })
85
- ], 2)) : createCommentVNode("", true),
86
- _ctx.canMoveRight ? (openBlock(), createElementBlock("span", {
87
- key: 1,
88
- class: normalizeClass({ [_ctx.$style.rightArrow]: true, [_ctx.$style.visible]: isDragging })
89
- }, [
90
- createVNode(_component_font_awesome_icon, { icon: "arrow-right" })
91
- ], 2)) : createCommentVNode("", true),
92
- createBaseVNode("div", {
93
- class: normalizeClass(_ctx.$style.grid)
94
- }, _cache[0] || (_cache[0] = [
95
- createBaseVNode("div", null, [
96
- createBaseVNode("div"),
97
- createBaseVNode("div"),
98
- createBaseVNode("div"),
99
- createBaseVNode("div"),
100
- createBaseVNode("div")
101
- ], -1),
102
- createBaseVNode("div", null, [
103
- createBaseVNode("div"),
104
- createBaseVNode("div"),
105
- createBaseVNode("div"),
106
- createBaseVNode("div"),
107
- createBaseVNode("div")
108
- ], -1)
109
- ]), 2)
110
- ], 2)
111
- ]),
112
- _: 1
113
- }, 8, ["class"]);
114
- };
115
- }
116
- });
117
- const dragContainer = "_dragContainer_16elv_123";
118
- const dragButton = "_dragButton_16elv_127";
119
- const leftArrow = "_leftArrow_16elv_141 _arrow_16elv_150";
120
- const rightArrow = "_rightArrow_16elv_142 _arrow_16elv_150";
121
- const visible$1 = "_visible_16elv_146";
122
- const arrow = "_arrow_16elv_150";
123
- const grid = "_grid_16elv_168";
124
- const style0$a = {
125
- dragContainer,
126
- dragButton,
127
- leftArrow,
128
- rightArrow,
129
- visible: visible$1,
130
- arrow,
131
- grid
132
- };
133
- const cssModules$b = {
34
+ const cssModules$a = {
134
35
  "$style": style0$a
135
36
  };
136
- const PanelDragButton = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["__cssModules", cssModules$b]]);
137
- const _hoisted_1$6 = ["data-node-name", "data-node-placement", "onClick"];
138
- const _sfc_main$b = /* @__PURE__ */ defineComponent({
37
+ const N8nPulse = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["__cssModules", cssModules$a]]);
38
+ const _hoisted_1$5 = ["data-node-name", "data-node-placement", "onClick"];
39
+ const _sfc_main$a = /* @__PURE__ */ defineComponent({
139
40
  __name: "NDVFloatingNodes",
140
41
  props: {
141
42
  rootNode: {}
@@ -145,8 +46,14 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
145
46
  const props = __props;
146
47
  const workflowsStore = useWorkflowsStore();
147
48
  const nodeTypesStore = useNodeTypesStore();
148
- const workflow = workflowsStore.getCurrentWorkflow();
49
+ const posthogStore = usePostHog();
149
50
  const emit = __emit;
51
+ const isNDVV2 = computed(
52
+ () => posthogStore.isVariantEnabled(
53
+ NDV_UI_OVERHAUL_EXPERIMENT.name,
54
+ NDV_UI_OVERHAUL_EXPERIMENT.variant
55
+ )
56
+ );
150
57
  function moveNodeDirection(direction) {
151
58
  const matchedDirectionNode = connectedNodes.value[direction][0];
152
59
  if (matchedDirectionNode) {
@@ -180,6 +87,7 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
180
87
  }).filter((n) => n !== null);
181
88
  }
182
89
  const connectedNodes = computed(() => {
90
+ const workflow = workflowsStore.getCurrentWorkflow();
183
91
  const rootName = props.rootNode.name;
184
92
  return {
185
93
  [
@@ -234,7 +142,8 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
234
142
  return (_ctx, _cache) => {
235
143
  const _component_n8n_tooltip = N8nTooltip;
236
144
  return openBlock(), createElementBlock("aside", {
237
- class: normalizeClass(_ctx.$style.floatingNodes)
145
+ class: normalizeClass([_ctx.$style.floatingNodes, { [_ctx.$style.v2]: isNDVV2.value }]),
146
+ "data-test-id": "floating-nodes"
238
147
  }, [
239
148
  (openBlock(), createElementBlock(Fragment, null, renderList(connectionGroups, (connectionGroup) => {
240
149
  return createBaseVNode("ul", {
@@ -247,7 +156,7 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
247
156
  key: node2.name,
248
157
  placement: tooltipPositionMapper[connectionGroup],
249
158
  teleported: false,
250
- offset: 60
159
+ offset: isNDVV2.value ? 16 : 60
251
160
  }, {
252
161
  content: withCtx(() => [
253
162
  createTextVNode(toDisplayString(node2.name), 1)
@@ -260,17 +169,17 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
260
169
  "data-node-placement": connectionGroup,
261
170
  onClick: ($event) => emit("switchSelectedNode", node2.name)
262
171
  }, [
263
- createVNode(_sfc_main$e, {
172
+ createVNode(_sfc_main$c, {
264
173
  "node-type": nodeType,
265
174
  "node-name": node2.name,
266
175
  "tooltip-position": tooltipPositionMapper[connectionGroup],
267
- size: 35,
176
+ size: isNDVV2.value ? 24 : 35,
268
177
  circle: ""
269
- }, null, 8, ["node-type", "node-name", "tooltip-position"])
270
- ], 10, _hoisted_1$6)
178
+ }, null, 8, ["node-type", "node-name", "tooltip-position", "size"])
179
+ ], 10, _hoisted_1$5)
271
180
  ]),
272
181
  _: 2
273
- }, 1032, ["placement"])) : createCommentVNode("", true)
182
+ }, 1032, ["placement", "offset"])) : createCommentVNode("", true)
274
183
  ], 64);
275
184
  }), 256))
276
185
  ], 2);
@@ -279,13 +188,14 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
279
188
  };
280
189
  }
281
190
  });
282
- const floatingNodes = "_floatingNodes_1tkq5_123";
283
- const nodesList = "_nodesList_1tkq5_137";
284
- const inputSub = "_inputSub_1tkq5_151";
285
- const outputSub = "_outputSub_1tkq5_151";
286
- const outputMain = "_outputMain_1tkq5_162";
287
- const inputMain = "_inputMain_1tkq5_162";
288
- const connectedNode = "_connectedNode_1tkq5_185";
191
+ const floatingNodes = "_floatingNodes_1o49e_123";
192
+ const nodesList = "_nodesList_1o49e_137";
193
+ const inputSub = "_inputSub_1o49e_151";
194
+ const outputSub = "_outputSub_1o49e_151";
195
+ const outputMain = "_outputMain_1o49e_162";
196
+ const inputMain = "_inputMain_1o49e_162";
197
+ const connectedNode = "_connectedNode_1o49e_185";
198
+ const v2 = "_v2_1o49e_233";
289
199
  const style0$9 = {
290
200
  floatingNodes,
291
201
  nodesList,
@@ -293,362 +203,49 @@ const style0$9 = {
293
203
  outputSub,
294
204
  outputMain,
295
205
  inputMain,
296
- connectedNode
206
+ connectedNode,
207
+ v2
297
208
  };
298
- const cssModules$a = {
209
+ const cssModules$9 = {
299
210
  "$style": style0$9
300
211
  };
301
- const NDVFloatingNodes = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["__cssModules", cssModules$a]]);
302
- const SIDE_MARGIN = 24;
303
- const SIDE_PANELS_MARGIN = 80;
304
- const MIN_PANEL_WIDTH = 310;
305
- const PANEL_WIDTH = 350;
306
- const PANEL_WIDTH_LARGE = 420;
307
- const _sfc_main$a = /* @__PURE__ */ defineComponent({
308
- __name: "NDVDraggablePanels",
212
+ const __unplugin_components_0 = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__cssModules", cssModules$9]]);
213
+ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
214
+ __name: "NDVEmptyState",
309
215
  props: {
310
- isDraggable: { type: Boolean },
311
- hideInputAndOutput: { type: Boolean },
312
- nodeType: {}
216
+ title: {}
313
217
  },
314
- emits: ["init", "dragstart", "dragend", "switchSelectedNode", "close"],
315
- setup(__props, { emit: __emit }) {
316
- const MIN_WINDOW_WIDTH = 2 * (SIDE_MARGIN + SIDE_PANELS_MARGIN) + MIN_PANEL_WIDTH;
317
- const initialMainPanelWidth = {
318
- regular: MAIN_NODE_PANEL_WIDTH,
319
- dragless: MAIN_NODE_PANEL_WIDTH,
320
- unknown: MAIN_NODE_PANEL_WIDTH,
321
- inputless: MAIN_NODE_PANEL_WIDTH,
322
- wide: MAIN_NODE_PANEL_WIDTH * 2
323
- };
324
- const throttledOnResize = useThrottleFn(onResize, 100);
325
- const ndvStore = useNDVStore();
326
- const uiStore = useUIStore();
327
- const props = __props;
328
- const isDragging = ref(false);
329
- const initialized = ref(false);
330
- const containerWidth = ref(uiStore.appGridDimensions.width);
331
- const emit = __emit;
332
- const slots = useSlots();
333
- onMounted(() => {
334
- if (mainPanelDimensions.value.relativeLeft === 1 && mainPanelDimensions.value.relativeRight === 1) {
335
- setMainPanelWidth();
336
- setPositions(getInitialLeftPosition(mainPanelDimensions.value.relativeWidth));
337
- restorePositionData();
338
- }
339
- emit("init", { position: mainPanelDimensions.value.relativeLeft });
340
- setTimeout(() => {
341
- initialized.value = true;
342
- }, 0);
343
- ndvEventBus.on("setPositionByName", setPositionByName);
344
- });
345
- onBeforeUnmount(() => {
346
- ndvEventBus.off("setPositionByName", setPositionByName);
347
- });
348
- watch(
349
- () => uiStore.appGridDimensions,
350
- async (dimensions) => {
351
- const ndv = document.getElementById("ndv");
352
- if (ndv) {
353
- await nextTick();
354
- const { width: ndvWidth } = ndv.getBoundingClientRect();
355
- containerWidth.value = ndvWidth;
356
- } else {
357
- containerWidth.value = dimensions.width;
358
- }
359
- const minRelativeWidth = pxToRelativeWidth(MIN_PANEL_WIDTH);
360
- const isBelowMinWidthMainPanel = mainPanelDimensions.value.relativeWidth < minRelativeWidth;
361
- if (isBelowMinWidthMainPanel) {
362
- setMainPanelWidth(minRelativeWidth);
363
- }
364
- const isBelowMinLeft = minimumLeftPosition.value > mainPanelDimensions.value.relativeLeft;
365
- const isMaxRight = maximumRightPosition.value > mainPanelDimensions.value.relativeRight;
366
- if (dimensions.width > MIN_WINDOW_WIDTH && isBelowMinLeft && isMaxRight) {
367
- setMainPanelWidth(minRelativeWidth);
368
- setPositions(getInitialLeftPosition(mainPanelDimensions.value.relativeWidth));
369
- }
370
- setPositions(mainPanelDimensions.value.relativeLeft);
371
- }
372
- );
373
- const currentNodePaneType = computed(() => {
374
- if (!hasInputSlot.value) return "inputless";
375
- if (!props.isDraggable) return "dragless";
376
- if (props.nodeType === null) return "unknown";
377
- return props.nodeType.parameterPane ?? "regular";
378
- });
379
- const mainPanelDimensions = computed(() => {
380
- return ndvStore.mainPanelDimensions[currentNodePaneType.value];
381
- });
382
- const calculatedPositions = computed(
383
- () => {
384
- const hasInput = slots.input !== void 0;
385
- const outputPanelRelativeLeft = mainPanelDimensions.value.relativeLeft + mainPanelDimensions.value.relativeWidth;
386
- const inputPanelRelativeRight = hasInput ? 1 - outputPanelRelativeLeft + mainPanelDimensions.value.relativeWidth : 1 - pxToRelativeWidth(SIDE_MARGIN);
387
- return {
388
- inputPanelRelativeRight,
389
- outputPanelRelativeLeft
390
- };
391
- }
392
- );
393
- const outputPanelRelativeTranslate = computed(() => {
394
- const panelMinLeft = 1 - pxToRelativeWidth(MIN_PANEL_WIDTH + SIDE_MARGIN);
395
- const currentRelativeLeftDelta = calculatedPositions.value.outputPanelRelativeLeft - panelMinLeft;
396
- return currentRelativeLeftDelta > 0 ? currentRelativeLeftDelta : 0;
397
- });
398
- const supportedResizeDirections = computed(() => {
399
- const supportedDirections = ["right"];
400
- if (props.isDraggable) supportedDirections.push("left");
401
- return supportedDirections;
402
- });
403
- const hasInputSlot = computed(() => {
404
- return slots.input !== void 0;
405
- });
406
- const inputPanelMargin = computed(() => pxToRelativeWidth(SIDE_PANELS_MARGIN));
407
- const minimumLeftPosition = computed(() => {
408
- if (containerWidth.value < MIN_WINDOW_WIDTH) return pxToRelativeWidth(1);
409
- if (!hasInputSlot.value) return pxToRelativeWidth(SIDE_MARGIN);
410
- return pxToRelativeWidth(SIDE_MARGIN + 20) + inputPanelMargin.value;
411
- });
412
- const maximumRightPosition = computed(() => {
413
- if (containerWidth.value < MIN_WINDOW_WIDTH) return pxToRelativeWidth(1);
414
- return pxToRelativeWidth(SIDE_MARGIN + 20) + inputPanelMargin.value;
415
- });
416
- const canMoveLeft = computed(() => {
417
- return mainPanelDimensions.value.relativeLeft > minimumLeftPosition.value;
418
- });
419
- const canMoveRight = computed(() => {
420
- return mainPanelDimensions.value.relativeRight > maximumRightPosition.value;
421
- });
422
- const mainPanelStyles = computed(() => {
423
- return {
424
- left: `${relativeWidthToPx(mainPanelDimensions.value.relativeLeft)}px`,
425
- right: `${relativeWidthToPx(mainPanelDimensions.value.relativeRight)}px`
426
- };
427
- });
428
- const inputPanelStyles = computed(() => {
429
- return {
430
- right: `${relativeWidthToPx(calculatedPositions.value.inputPanelRelativeRight)}px`
431
- };
432
- });
433
- const outputPanelStyles = computed(() => {
434
- return {
435
- left: `${relativeWidthToPx(calculatedPositions.value.outputPanelRelativeLeft)}px`,
436
- transform: `translateX(-${relativeWidthToPx(outputPanelRelativeTranslate.value)}px)`
437
- };
438
- });
439
- const hasDoubleWidth = computed(() => {
440
- return props.nodeType?.parameterPane === "wide";
441
- });
442
- const fixedPanelWidth = computed(() => {
443
- const multiplier = hasDoubleWidth.value ? 2 : 1;
444
- if (containerWidth.value > 1700) {
445
- return PANEL_WIDTH_LARGE * multiplier;
446
- }
447
- return PANEL_WIDTH * multiplier;
448
- });
449
- const onSwitchSelectedNode = (node2) => emit("switchSelectedNode", node2);
450
- function getInitialLeftPosition(width) {
451
- if (currentNodePaneType.value === "dragless")
452
- return pxToRelativeWidth(SIDE_MARGIN + 1 + fixedPanelWidth.value);
453
- return hasInputSlot.value ? 0.5 - width / 2 : minimumLeftPosition.value;
454
- }
455
- function setMainPanelWidth(relativeWidth) {
456
- const mainPanelRelativeWidth = relativeWidth || pxToRelativeWidth(initialMainPanelWidth[currentNodePaneType.value]);
457
- ndvStore.setMainPanelDimensions({
458
- panelType: currentNodePaneType.value,
459
- dimensions: {
460
- relativeWidth: mainPanelRelativeWidth
461
- }
462
- });
463
- }
464
- function setPositions(relativeLeft) {
465
- const mainPanelRelativeLeft = relativeLeft || 1 - calculatedPositions.value.inputPanelRelativeRight;
466
- const mainPanelRelativeRight = 1 - mainPanelRelativeLeft - mainPanelDimensions.value.relativeWidth;
467
- const isMaxRight = maximumRightPosition.value > mainPanelRelativeRight;
468
- const isMinLeft = minimumLeftPosition.value > mainPanelRelativeLeft;
469
- const isInputless = currentNodePaneType.value === "inputless";
470
- if (isMinLeft) {
471
- ndvStore.setMainPanelDimensions({
472
- panelType: currentNodePaneType.value,
473
- dimensions: {
474
- relativeLeft: minimumLeftPosition.value,
475
- relativeRight: 1 - mainPanelDimensions.value.relativeWidth - minimumLeftPosition.value
476
- }
477
- });
478
- return;
479
- }
480
- if (isMaxRight) {
481
- ndvStore.setMainPanelDimensions({
482
- panelType: currentNodePaneType.value,
483
- dimensions: {
484
- relativeLeft: 1 - mainPanelDimensions.value.relativeWidth - maximumRightPosition.value,
485
- relativeRight: maximumRightPosition.value
486
- }
487
- });
488
- return;
489
- }
490
- ndvStore.setMainPanelDimensions({
491
- panelType: currentNodePaneType.value,
492
- dimensions: {
493
- relativeLeft: isInputless ? minimumLeftPosition.value : mainPanelRelativeLeft,
494
- relativeRight: mainPanelRelativeRight
495
- }
496
- });
497
- }
498
- function setPositionByName(position) {
499
- const positionByName = {
500
- minLeft: minimumLeftPosition.value,
501
- maxRight: maximumRightPosition.value,
502
- initial: getInitialLeftPosition(mainPanelDimensions.value.relativeWidth)
503
- };
504
- setPositions(positionByName[position]);
505
- }
506
- function pxToRelativeWidth(px) {
507
- return px / containerWidth.value;
508
- }
509
- function relativeWidthToPx(relativeWidth) {
510
- return relativeWidth * containerWidth.value;
511
- }
512
- function onResizeEnd() {
513
- storePositionData();
514
- }
515
- function onResizeThrottle(data) {
516
- if (initialized.value) {
517
- void throttledOnResize(data);
518
- }
519
- }
520
- function onResize({ direction, x, width }) {
521
- const relativeDistance = pxToRelativeWidth(x);
522
- const relativeWidth = pxToRelativeWidth(width);
523
- if (direction === "left" && relativeDistance <= minimumLeftPosition.value) return;
524
- if (direction === "right" && 1 - relativeDistance <= maximumRightPosition.value) return;
525
- if (width <= MIN_PANEL_WIDTH) return;
526
- setMainPanelWidth(relativeWidth);
527
- setPositions(direction === "left" ? relativeDistance : mainPanelDimensions.value.relativeLeft);
528
- }
529
- function restorePositionData() {
530
- const storedPanelWidthData = useStorage(
531
- `${LOCAL_STORAGE_MAIN_PANEL_RELATIVE_WIDTH}_${currentNodePaneType.value}`
532
- ).value;
533
- if (storedPanelWidthData) {
534
- const parsedWidth = parseFloat(storedPanelWidthData);
535
- setMainPanelWidth(parsedWidth);
536
- const initialPosition = getInitialLeftPosition(parsedWidth);
537
- setPositions(initialPosition);
538
- return true;
539
- }
540
- return false;
541
- }
542
- function storePositionData() {
543
- useStorage(`${LOCAL_STORAGE_MAIN_PANEL_RELATIVE_WIDTH}_${currentNodePaneType.value}`).value = mainPanelDimensions.value.relativeWidth.toString();
544
- }
545
- function onDragStart() {
546
- isDragging.value = true;
547
- emit("dragstart", { position: mainPanelDimensions.value.relativeLeft });
548
- }
549
- function onDrag(position) {
550
- const relativeLeft = pxToRelativeWidth(position[0]) - mainPanelDimensions.value.relativeWidth / 2;
551
- setPositions(relativeLeft);
552
- }
553
- function onDragEnd() {
554
- setTimeout(() => {
555
- isDragging.value = false;
556
- emit("dragend", {
557
- windowWidth: containerWidth.value,
558
- position: mainPanelDimensions.value.relativeLeft
559
- });
560
- }, 0);
561
- storePositionData();
562
- }
218
+ setup(__props) {
563
219
  return (_ctx, _cache) => {
564
- const _component_N8nResizeWrapper = N8nResizeWrapper;
565
- return openBlock(), createElementBlock("div", null, [
566
- unref(ndvStore).activeNode ? (openBlock(), createBlock(NDVFloatingNodes, {
567
- key: 0,
568
- "root-node": unref(ndvStore).activeNode,
569
- onSwitchSelectedNode
570
- }, null, 8, ["root-node"])) : createCommentVNode("", true),
571
- !_ctx.hideInputAndOutput ? (openBlock(), createElementBlock("div", {
572
- key: 1,
573
- class: normalizeClass(_ctx.$style.inputPanel),
574
- style: normalizeStyle(inputPanelStyles.value)
575
- }, [
576
- renderSlot(_ctx.$slots, "input")
577
- ], 6)) : createCommentVNode("", true),
578
- !_ctx.hideInputAndOutput ? (openBlock(), createElementBlock("div", {
579
- key: 2,
580
- class: normalizeClass(_ctx.$style.outputPanel),
581
- style: normalizeStyle(outputPanelStyles.value)
582
- }, [
583
- renderSlot(_ctx.$slots, "output")
584
- ], 6)) : createCommentVNode("", true),
585
- createBaseVNode("div", {
586
- class: normalizeClass(_ctx.$style.mainPanel),
587
- style: normalizeStyle(mainPanelStyles.value)
220
+ return openBlock(), createElementBlock("article", {
221
+ class: normalizeClass(_ctx.$style.empty)
222
+ }, [
223
+ renderSlot(_ctx.$slots, "icon"),
224
+ createBaseVNode("h1", {
225
+ class: normalizeClass(_ctx.$style.title)
226
+ }, toDisplayString(_ctx.title), 3),
227
+ createBaseVNode("p", {
228
+ class: normalizeClass(_ctx.$style.description)
588
229
  }, [
589
- createVNode(_component_N8nResizeWrapper, {
590
- "is-resizing-enabled": currentNodePaneType.value !== "unknown",
591
- width: relativeWidthToPx(mainPanelDimensions.value.relativeWidth),
592
- "min-width": MIN_PANEL_WIDTH,
593
- "grid-size": 20,
594
- "supported-directions": supportedResizeDirections.value,
595
- outset: "",
596
- onResize: onResizeThrottle,
597
- onResizeend: onResizeEnd
598
- }, {
599
- default: withCtx(() => [
600
- createBaseVNode("div", {
601
- class: normalizeClass(_ctx.$style.dragButtonContainer)
602
- }, [
603
- !_ctx.hideInputAndOutput && _ctx.isDraggable ? (openBlock(), createBlock(PanelDragButton, {
604
- key: 0,
605
- class: normalizeClass({ [_ctx.$style.draggable]: true, [_ctx.$style.visible]: isDragging.value }),
606
- "can-move-left": canMoveLeft.value,
607
- "can-move-right": canMoveRight.value,
608
- onDragstart: onDragStart,
609
- onDrag,
610
- onDragend: onDragEnd
611
- }, null, 8, ["class", "can-move-left", "can-move-right"])) : createCommentVNode("", true)
612
- ], 2),
613
- createBaseVNode("div", {
614
- class: normalizeClass({ [_ctx.$style.mainPanelInner]: true, [_ctx.$style.dragging]: isDragging.value })
615
- }, [
616
- renderSlot(_ctx.$slots, "main")
617
- ], 2)
618
- ]),
619
- _: 3
620
- }, 8, ["is-resizing-enabled", "width", "supported-directions"])
621
- ], 6)
622
- ]);
230
+ renderSlot(_ctx.$slots, "description")
231
+ ], 2)
232
+ ], 2);
623
233
  };
624
234
  }
625
235
  });
626
- const dataPanel = "_dataPanel_181lg_123";
627
- const inputPanel = "_inputPanel_181lg_132 _dataPanel_181lg_123";
628
- const outputPanel = "_outputPanel_181lg_140 _dataPanel_181lg_123";
629
- const mainPanel = "_mainPanel_181lg_148";
630
- const draggable = "_draggable_181lg_152";
631
- const mainPanelInner = "_mainPanelInner_181lg_156";
632
- const dragging = "_dragging_181lg_163";
633
- const dragButtonContainer = "_dragButtonContainer_181lg_176";
634
- const visible = "_visible_181lg_192";
236
+ const empty$1 = "_empty_1x72k_2";
237
+ const title$5 = "_title_1x72k_13";
238
+ const description = "_description_1x72k_20";
635
239
  const style0$8 = {
636
- dataPanel,
637
- inputPanel,
638
- outputPanel,
639
- mainPanel,
640
- draggable,
641
- mainPanelInner,
642
- dragging,
643
- "double-width": "_double-width_181lg_172",
644
- dragButtonContainer,
645
- visible
240
+ empty: empty$1,
241
+ title: title$5,
242
+ description
646
243
  };
647
- const cssModules$9 = {
244
+ const cssModules$8 = {
648
245
  "$style": style0$8
649
246
  };
650
- const NDVDraggablePanels = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__cssModules", cssModules$9]]);
651
- const _sfc_main$9 = /* @__PURE__ */ defineComponent({
247
+ const NDVEmptyState = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["__cssModules", cssModules$8]]);
248
+ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
652
249
  __name: "RunInfo",
653
250
  props: {
654
251
  taskData: {},
@@ -702,7 +299,8 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
702
299
  createVNode(unref(InfoTip), {
703
300
  type: "note",
704
301
  theme: theme.value,
705
- "data-test-id": `node-run-status-${theme.value}`
302
+ "data-test-id": `node-run-status-${theme.value}`,
303
+ size: "large"
706
304
  }, null, 8, ["theme", "data-test-id"]),
707
305
  createVNode(unref(InfoTip), {
708
306
  type: "tooltip",
@@ -755,10 +353,10 @@ const tooltipRow = "_tooltipRow_14r7d_123";
755
353
  const style0$7 = {
756
354
  tooltipRow
757
355
  };
758
- const cssModules$8 = {
356
+ const cssModules$7 = {
759
357
  "$style": style0$7
760
358
  };
761
- const RunInfo = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["__cssModules", cssModules$8]]);
359
+ const RunInfo = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["__cssModules", cssModules$7]]);
762
360
  function createNode(parent, nodeName, currentDepth, runIndex, r, children = []) {
763
361
  return {
764
362
  parent,
@@ -776,24 +374,22 @@ function getTreeNodeData(nodeName, workflow, aiData, runIndex) {
776
374
  }
777
375
  function getTreeNodeDataRec(parent, nodeName, currentDepth, workflow, aiData, runIndex) {
778
376
  const connections = workflow.connectionsByDestinationNode[nodeName];
779
- const resultData = aiData?.filter(
780
- (data) => data.node === nodeName && (runIndex === void 0 || runIndex === data.runIndex)
781
- ) ?? [];
377
+ const resultData = aiData?.filter((data) => data.node === nodeName && runIndex === data.runIndex) ?? [];
782
378
  if (!connections) {
783
379
  return resultData.map((d) => createNode(parent, nodeName, currentDepth, d.runIndex, d));
784
380
  }
785
- const filteredAiData = currentDepth === 0 ? aiData?.filter(({ data }) => {
381
+ const filteredAiData = aiData?.filter(({ data }) => {
786
382
  if (!data?.source || data.source.every((source) => source === null)) {
787
383
  return true;
788
384
  }
789
385
  return data.source.some(
790
- (source) => source?.previousNode === nodeName && (runIndex === void 0 || source.previousNodeRun === runIndex)
386
+ (source) => source?.previousNode === nodeName && source.previousNodeRun === runIndex
791
387
  );
792
- }) : aiData;
388
+ });
793
389
  const connectedSubNodes = workflow.getParentNodes(nodeName, "ALL_NON_MAIN", 1);
794
- const treeNode2 = createNode(parent, nodeName, currentDepth, runIndex ?? 0);
390
+ const treeNode2 = createNode(parent, nodeName, currentDepth, runIndex);
795
391
  const children = (filteredAiData ?? []).flatMap(
796
- (data) => connectedSubNodes.includes(data.node) && (runIndex === void 0 || data.runIndex === runIndex) ? getTreeNodeDataRec(treeNode2, data.node, currentDepth + 1, workflow, aiData, data.runIndex) : []
392
+ (data) => connectedSubNodes.includes(data.node) ? getTreeNodeDataRec(treeNode2, data.node, currentDepth + 1, workflow, aiData, data.runIndex) : []
797
393
  );
798
394
  treeNode2.children = children;
799
395
  if (resultData.length) {
@@ -871,7 +467,7 @@ function getConsumedTokens(outputRun) {
871
467
  }
872
468
  var capitalizeExports = requireCapitalize();
873
469
  const capitalize = /* @__PURE__ */ getDefaultExportFromCjs(capitalizeExports);
874
- const _sfc_main$8 = /* @__PURE__ */ defineComponent({
470
+ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
875
471
  __name: "AiRunContentBlock",
876
472
  props: {
877
473
  runData: {},
@@ -907,7 +503,8 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
907
503
  renderType.value = value;
908
504
  }
909
505
  return (_ctx, _cache) => {
910
- const _component_NodeErrorView = _sfc_main$f;
506
+ const _component_N8nIcon = N8nIcon;
507
+ const _component_NodeErrorView = _sfc_main$d;
911
508
  return openBlock(), createElementBlock("div", {
912
509
  class: normalizeClass(_ctx.$style.block)
913
510
  }, [
@@ -918,9 +515,9 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
918
515
  createBaseVNode("button", {
919
516
  class: normalizeClass(_ctx.$style.blockToggle)
920
517
  }, [
921
- createVNode(unref(FontAwesomeIcon), {
922
- icon: isExpanded.value ? "angle-down" : "angle-right",
923
- size: "lg"
518
+ createVNode(_component_N8nIcon, {
519
+ icon: isExpanded.value ? "chevron-down" : "chevron-right",
520
+ size: "large"
924
521
  }, null, 8, ["icon"])
925
522
  ], 2),
926
523
  createBaseVNode("p", {
@@ -979,14 +576,14 @@ const style0$6 = {
979
576
  blockToggle,
980
577
  error
981
578
  };
982
- const cssModules$7 = {
579
+ const cssModules$6 = {
983
580
  "$style": style0$6
984
581
  };
985
- const AiRunContentBlock = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["__cssModules", cssModules$7]]);
986
- const _hoisted_1$5 = { key: 0 };
582
+ const AiRunContentBlock = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__cssModules", cssModules$6]]);
583
+ const _hoisted_1$4 = { key: 0 };
987
584
  const _hoisted_2$2 = { key: 1 };
988
585
  const _hoisted_3$2 = { key: 2 };
989
- const _sfc_main$7 = /* @__PURE__ */ defineComponent({
586
+ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
990
587
  __name: "RunDataAiContent",
991
588
  props: {
992
589
  inputData: {},
@@ -1037,7 +634,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
1037
634
  createBaseVNode("header", {
1038
635
  class: normalizeClass(_ctx.$style.header)
1039
636
  }, [
1040
- runMeta.value?.node ? (openBlock(), createBlock(_sfc_main$e, {
637
+ runMeta.value?.node ? (openBlock(), createBlock(_sfc_main$c, {
1041
638
  key: 0,
1042
639
  class: normalizeClass(_ctx.$style.nodeIcon),
1043
640
  "node-type": runMeta.value.node,
@@ -1052,7 +649,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
1052
649
  createBaseVNode("ul", {
1053
650
  class: normalizeClass(_ctx.$style.meta)
1054
651
  }, [
1055
- runMeta.value?.startTimeMs ? (openBlock(), createElementBlock("li", _hoisted_1$5, toDisplayString(runMeta.value?.executionTimeMs) + "ms", 1)) : createCommentVNode("", true),
652
+ runMeta.value?.startTimeMs ? (openBlock(), createElementBlock("li", _hoisted_1$4, toDisplayString(runMeta.value?.executionTimeMs) + "ms", 1)) : createCommentVNode("", true),
1056
653
  runMeta.value?.startTimeMs ? (openBlock(), createElementBlock("li", _hoisted_2$2, [
1057
654
  createVNode(_component_n8n_tooltip, null, {
1058
655
  content: withCtx(() => [
@@ -1090,7 +687,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
1090
687
  "tooltip-placement": "right"
1091
688
  }, {
1092
689
  default: withCtx(() => [
1093
- createVNode(_sfc_main$g, { "consumed-tokens": consumedTokensSum.value }, null, 8, ["consumed-tokens"])
690
+ createVNode(_sfc_main$e, { "consumed-tokens": consumedTokensSum.value }, null, 8, ["consumed-tokens"])
1094
691
  ]),
1095
692
  _: 1
1096
693
  })
@@ -1129,14 +726,14 @@ const style0$5 = {
1129
726
  meta,
1130
727
  tokensUsage
1131
728
  };
1132
- const cssModules$6 = {
729
+ const cssModules$5 = {
1133
730
  "$style": style0$5
1134
731
  };
1135
- const RunDataAiContent = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__cssModules", cssModules$6]]);
1136
- const _hoisted_1$4 = ["data-tree-depth"];
732
+ const RunDataAiContent = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["__cssModules", cssModules$5]]);
733
+ const _hoisted_1$3 = ["data-tree-depth"];
1137
734
  const _hoisted_2$1 = ["onClick"];
1138
735
  const _hoisted_3$1 = ["textContent"];
1139
- const _sfc_main$6 = /* @__PURE__ */ defineComponent({
736
+ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
1140
737
  __name: "RunDataAi",
1141
738
  props: {
1142
739
  node: {},
@@ -1150,6 +747,12 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
1150
747
  const nodeTypesStore = useNodeTypesStore();
1151
748
  const selectedRun = ref([]);
1152
749
  const i18n = useI18n();
750
+ const aiData = computed(
751
+ () => createAiData(props.node.name, props.workflow, workflowsStore.getWorkflowResultDataByNodeName)
752
+ );
753
+ const executionTree = computed(
754
+ () => getTreeNodeData(props.node.name, props.workflow, aiData.value, props.runIndex)
755
+ );
1153
756
  function isTreeNodeSelected(node2) {
1154
757
  return selectedRun.value.some((run) => run.node === node2.node && run.runIndex === node2.runIndex);
1155
758
  }
@@ -1189,15 +792,9 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
1189
792
  onItemClick(executionTree.value[0].children[0]);
1190
793
  }
1191
794
  }
1192
- const aiData = computed(
1193
- () => createAiData(props.node.name, props.workflow, workflowsStore.getWorkflowResultDataByNodeName)
1194
- );
1195
- const executionTree = computed(
1196
- () => getTreeNodeData(props.node.name, props.workflow, aiData.value)
1197
- );
1198
795
  watch(() => props.runIndex, selectFirst, { immediate: true });
1199
796
  return (_ctx, _cache) => {
1200
- const _component_font_awesome_icon = resolveComponent("font-awesome-icon");
797
+ const _component_n8n_icon = N8nIcon;
1201
798
  const _component_n8n_tooltip = N8nTooltip;
1202
799
  const _component_n8n_text = N8nText;
1203
800
  return openBlock(), createElementBlock("div", {
@@ -1216,7 +813,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
1216
813
  "data-test-id": "lm-chat-logs-tree",
1217
814
  onNodeClick: onItemClick
1218
815
  }, {
1219
- default: withCtx(({ node: node2, data }) => [
816
+ default: withCtx(({ node: currentNode, data }) => [
1220
817
  createBaseVNode("div", {
1221
818
  class: normalizeClass({
1222
819
  [_ctx.$style.treeNode]: true,
@@ -1228,10 +825,10 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
1228
825
  data.children.length ? (openBlock(), createElementBlock("button", {
1229
826
  key: 0,
1230
827
  class: normalizeClass(_ctx.$style.treeToggle),
1231
- onClick: ($event) => toggleTreeItem(node2)
828
+ onClick: ($event) => toggleTreeItem(currentNode)
1232
829
  }, [
1233
- createVNode(_component_font_awesome_icon, {
1234
- icon: node2.expanded ? "angle-down" : "angle-right"
830
+ createVNode(_component_n8n_icon, {
831
+ icon: currentNode.expanded ? "chevron-down" : "chevron-right"
1235
832
  }, null, 8, ["icon"])
1236
833
  ], 10, _hoisted_2$1)) : createCommentVNode("", true),
1237
834
  createVNode(_component_n8n_tooltip, {
@@ -1239,26 +836,26 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
1239
836
  placement: "right"
1240
837
  }, {
1241
838
  content: withCtx(() => [
1242
- createTextVNode(toDisplayString(node2.label), 1)
839
+ createTextVNode(toDisplayString(currentNode.label), 1)
1243
840
  ]),
1244
841
  default: withCtx(() => [
1245
842
  createBaseVNode("span", {
1246
843
  class: normalizeClass(_ctx.$style.leafLabel)
1247
844
  }, [
1248
- createVNode(_sfc_main$e, {
845
+ createVNode(_sfc_main$c, {
1249
846
  "node-type": getNodeType(data.node),
1250
847
  size: 17,
1251
848
  class: normalizeClass(_ctx.$style.nodeIcon)
1252
849
  }, null, 8, ["node-type", "class"]),
1253
850
  !_ctx.slim ? (openBlock(), createElementBlock("span", {
1254
851
  key: 0,
1255
- textContent: toDisplayString(node2.label)
852
+ textContent: toDisplayString(currentNode.label)
1256
853
  }, null, 8, _hoisted_3$1)) : createCommentVNode("", true)
1257
854
  ], 2)
1258
855
  ]),
1259
856
  _: 2
1260
857
  }, 1032, ["disabled"])
1261
- ], 14, _hoisted_1$4)
858
+ ], 14, _hoisted_1$3)
1262
859
  ]),
1263
860
  _: 1
1264
861
  }, 8, ["data"])
@@ -1327,11 +924,11 @@ const style0$4 = {
1327
924
  isSelected,
1328
925
  treeNode
1329
926
  };
1330
- const cssModules$5 = {
927
+ const cssModules$4 = {
1331
928
  "$style": style0$4
1332
929
  };
1333
- const RunDataAi = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["__cssModules", cssModules$5]]);
1334
- const _sfc_main$5 = /* @__PURE__ */ defineComponent({
930
+ const RunDataAi = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__cssModules", cssModules$4]]);
931
+ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
1335
932
  __name: "OutputPanel",
1336
933
  props: {
1337
934
  workflow: {},
@@ -1345,7 +942,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
1345
942
  isPaneActive: { type: Boolean, default: false },
1346
943
  displayMode: {}
1347
944
  },
1348
- emits: ["linkRun", "unlinkRun", "runChange", "activatePane", "tableMounted", "itemHover", "search", "openSettings", "displayModeChange"],
945
+ emits: ["linkRun", "unlinkRun", "runChange", "activatePane", "tableMounted", "itemHover", "search", "openSettings", "execute", "displayModeChange"],
1349
946
  setup(__props, { emit: __emit }) {
1350
947
  const OUTPUT_TYPE = {
1351
948
  REGULAR: "regular",
@@ -1356,6 +953,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
1356
953
  const ndvStore = useNDVStore();
1357
954
  const nodeTypesStore = useNodeTypesStore();
1358
955
  const workflowsStore = useWorkflowsStore();
956
+ const posthogStore = usePostHog();
1359
957
  const telemetry = useTelemetry();
1360
958
  const i18n = useI18n();
1361
959
  const { activeNode } = storeToRefs(ndvStore);
@@ -1374,6 +972,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
1374
972
  { label: i18n.baseText("ndv.output.outType.logs"), value: OUTPUT_TYPE.LOGS }
1375
973
  ]);
1376
974
  const runDataRef = ref();
975
+ const collapsingColumnName = ref(null);
1377
976
  const node2 = computed(() => {
1378
977
  return ndvStore.activeNode ?? void 0;
1379
978
  });
@@ -1427,7 +1026,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
1427
1026
  return null;
1428
1027
  }
1429
1028
  const runData2 = workflowRunData.value;
1430
- if (runData2 === null || !runData2.hasOwnProperty(node2.value.name)) {
1029
+ if (!runData2?.hasOwnProperty(node2.value.name)) {
1431
1030
  return null;
1432
1031
  }
1433
1032
  if (runData2[node2.value.name].length <= props.runIndex) {
@@ -1485,6 +1084,12 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
1485
1084
  return void 0;
1486
1085
  }
1487
1086
  });
1087
+ const isNDVV2 = computed(
1088
+ () => posthogStore.isVariantEnabled(
1089
+ NDV_UI_OVERHAUL_EXPERIMENT.name,
1090
+ NDV_UI_OVERHAUL_EXPERIMENT.variant
1091
+ )
1092
+ );
1488
1093
  const insertTestData = () => {
1489
1094
  if (!runDataRef.value) return;
1490
1095
  runDataRef.value.enterEditMode({
@@ -1528,7 +1133,14 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
1528
1133
  const activatePane = () => {
1529
1134
  emit("activatePane");
1530
1135
  };
1136
+ function handleChangeCollapsingColumn(columnName) {
1137
+ collapsingColumnName.value = columnName;
1138
+ }
1531
1139
  return (_ctx, _cache) => {
1140
+ const _component_N8nIcon = N8nIcon;
1141
+ const _component_NodeExecuteButton = _sfc_main$f;
1142
+ const _component_i18n_t = resolveComponent("i18n-t");
1143
+ const _component_NDVEmptyState = NDVEmptyState;
1532
1144
  const _directive_n8n_html = resolveDirective("n8n-html");
1533
1145
  return openBlock(), createBlock(RunData, {
1534
1146
  ref_key: "runDataRef",
@@ -1553,18 +1165,21 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
1553
1165
  "callout-message": allToolsWereUnusedNotice.value,
1554
1166
  "display-mode": _ctx.displayMode,
1555
1167
  "disable-ai-content": true,
1168
+ "collapsing-table-column-name": collapsingColumnName.value,
1169
+ "data-test-id": "ndv-output-panel",
1556
1170
  onActivatePane: activatePane,
1557
1171
  onRunChange: onRunIndexChange,
1558
1172
  onLinkRun,
1559
1173
  onUnlinkRun,
1560
- onTableMounted: _cache[1] || (_cache[1] = ($event) => emit("tableMounted", $event)),
1561
- onItemHover: _cache[2] || (_cache[2] = ($event) => emit("itemHover", $event)),
1562
- onSearch: _cache[3] || (_cache[3] = ($event) => emit("search", $event)),
1563
- onDisplayModeChange: _cache[4] || (_cache[4] = ($event) => emit("displayModeChange", $event))
1174
+ onTableMounted: _cache[2] || (_cache[2] = ($event) => emit("tableMounted", $event)),
1175
+ onItemHover: _cache[3] || (_cache[3] = ($event) => emit("itemHover", $event)),
1176
+ onSearch: _cache[4] || (_cache[4] = ($event) => emit("search", $event)),
1177
+ onDisplayModeChange: _cache[5] || (_cache[5] = ($event) => emit("displayModeChange", $event)),
1178
+ onCollapsingTableColumnChanged: handleChangeCollapsingColumn
1564
1179
  }, createSlots({
1565
1180
  header: withCtx(() => [
1566
1181
  createBaseVNode("div", {
1567
- class: normalizeClass(_ctx.$style.titleSection)
1182
+ class: normalizeClass([_ctx.$style.titleSection, { [_ctx.$style.titleSectionV2]: isNDVV2.value }])
1568
1183
  }, [
1569
1184
  hasAiMetadata.value ? (openBlock(), createBlock(unref(N8nRadioButtons), {
1570
1185
  key: 0,
@@ -1574,7 +1189,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
1574
1189
  options: outputTypes.value
1575
1190
  }, null, 8, ["modelValue", "options"])) : (openBlock(), createElementBlock("span", {
1576
1191
  key: 1,
1577
- class: normalizeClass(_ctx.$style.title)
1192
+ class: normalizeClass([_ctx.$style.title, { [_ctx.$style.titleV2]: isNDVV2.value }])
1578
1193
  }, toDisplayString(unref(i18n).baseText(outputPanelEditMode.value.enabled ? "ndv.output.edit" : "ndv.output")), 3)),
1579
1194
  hasNodeRun.value && !unref(pinnedData).hasData.value && (runsCount.value === 1 || runsCount.value > 0 && staleData.value) ? withDirectives((openBlock(), createBlock(RunInfo, {
1580
1195
  key: 2,
@@ -1587,45 +1202,103 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
1587
1202
  ], 2)
1588
1203
  ]),
1589
1204
  "node-not-run": withCtx(() => [
1590
- workflowRunning.value && !isTriggerNode.value ? (openBlock(), createBlock(unref(N8nText), {
1205
+ isNDVV2.value ? (openBlock(), createBlock(_component_NDVEmptyState, {
1591
1206
  key: 0,
1592
- "data-test-id": "ndv-output-waiting"
1593
- }, {
1594
- default: withCtx(() => [
1595
- createTextVNode(toDisplayString(unref(i18n).baseText("ndv.output.waitingToRun")), 1)
1207
+ title: unref(i18n).baseText(
1208
+ isTriggerNode.value ? "ndv.output.noOutputData.trigger.title" : "ndv.output.noOutputData.v2.title"
1209
+ )
1210
+ }, createSlots({
1211
+ description: withCtx(() => [
1212
+ createVNode(_component_i18n_t, {
1213
+ tag: "span",
1214
+ keypath: unref(isSubNodeType) ? "ndv.output.runNodeHintSubNode" : "ndv.output.noOutputData.v2.description"
1215
+ }, {
1216
+ link: withCtx(() => [
1217
+ createVNode(_component_NodeExecuteButton, {
1218
+ "hide-icon": "",
1219
+ transparent: "",
1220
+ type: "secondary",
1221
+ "node-name": unref(activeNode)?.name ?? "",
1222
+ label: unref(i18n).baseText(
1223
+ isTriggerNode.value ? "ndv.output.noOutputData.trigger.action" : "ndv.output.noOutputData.v2.action"
1224
+ ),
1225
+ "telemetry-source": "inputs",
1226
+ onExecute: _cache[1] || (_cache[1] = ($event) => emit("execute"))
1227
+ }, null, 8, ["node-name", "label"]),
1228
+ _cache[7] || (_cache[7] = createBaseVNode("br", null, null, -1))
1229
+ ]),
1230
+ _: 1
1231
+ }, 8, ["keypath"])
1596
1232
  ]),
1597
- _: 1
1598
- })) : createCommentVNode("", true),
1599
- !workflowRunning.value ? (openBlock(), createBlock(unref(N8nText), {
1600
- key: 1,
1601
- "data-test-id": "ndv-output-run-node-hint"
1602
- }, {
1603
- default: withCtx(() => [
1604
- unref(isSubNodeType) ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
1605
- createTextVNode(toDisplayString(unref(i18n).baseText("ndv.output.runNodeHintSubNode")), 1)
1606
- ], 64)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
1607
- createTextVNode(toDisplayString(unref(i18n).baseText("ndv.output.runNodeHint")) + " ", 1),
1608
- canPinData.value ? (openBlock(), createElementBlock("span", {
1609
- key: 0,
1610
- onClick: insertTestData
1233
+ _: 2
1234
+ }, [
1235
+ isTriggerNode.value ? {
1236
+ name: "icon",
1237
+ fn: withCtx(() => [
1238
+ _cache[6] || (_cache[6] = createBaseVNode("svg", {
1239
+ width: "16",
1240
+ viewBox: "0 0 14 18",
1241
+ fill: "none",
1242
+ xmlns: "http://www.w3.org/2000/svg"
1611
1243
  }, [
1612
- _cache[5] || (_cache[5] = createBaseVNode("br", null, null, -1)),
1613
- createTextVNode(" " + toDisplayString(unref(i18n).baseText("generic.or")) + " ", 1),
1614
- createVNode(unref(N8nText), {
1615
- tag: "a",
1616
- size: "medium",
1617
- color: "primary"
1618
- }, {
1619
- default: withCtx(() => [
1620
- createTextVNode(toDisplayString(unref(i18n).baseText("ndv.output.insertTestData")), 1)
1621
- ]),
1622
- _: 1
1244
+ createBaseVNode("path", {
1245
+ d: "M10.9062 2.40625L8.5 8.03125H12C12.4062 8.03125 12.7812 8.28125 12.9375 8.65625C13.0625 9.0625 12.9688 9.5 12.6562 9.78125L4.65625 16.7812C4.28125 17.0625 3.78125 17.0938 3.40625 16.8125C3.03125 16.5625 2.875 16.0625 3.0625 15.625L5.46875 10H2C1.5625 10 1.1875 9.75 1.0625 9.375C0.90625 8.96875 1 8.53125 1.3125 8.25L9.3125 1.25C9.6875 0.96875 10.1875 0.9375 10.5625 1.21875C10.9375 1.46875 11.0938 1.96875 10.9062 2.40625Z",
1246
+ fill: "currentColor"
1623
1247
  })
1624
- ])) : createCommentVNode("", true)
1625
- ], 64))
1626
- ]),
1627
- _: 1
1628
- })) : createCommentVNode("", true)
1248
+ ], -1))
1249
+ ]),
1250
+ key: "0"
1251
+ } : {
1252
+ name: "icon",
1253
+ fn: withCtx(() => [
1254
+ createVNode(_component_N8nIcon, {
1255
+ icon: "arrow-right-from-line",
1256
+ size: "xlarge"
1257
+ })
1258
+ ]),
1259
+ key: "1"
1260
+ }
1261
+ ]), 1032, ["title"])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
1262
+ workflowRunning.value && !isTriggerNode.value ? (openBlock(), createBlock(unref(N8nText), {
1263
+ key: 0,
1264
+ "data-test-id": "ndv-output-waiting"
1265
+ }, {
1266
+ default: withCtx(() => [
1267
+ createTextVNode(toDisplayString(unref(i18n).baseText("ndv.output.waitingToRun")), 1)
1268
+ ]),
1269
+ _: 1
1270
+ })) : createCommentVNode("", true),
1271
+ !workflowRunning.value ? (openBlock(), createBlock(unref(N8nText), {
1272
+ key: 1,
1273
+ "data-test-id": "ndv-output-run-node-hint"
1274
+ }, {
1275
+ default: withCtx(() => [
1276
+ unref(isSubNodeType) ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
1277
+ createTextVNode(toDisplayString(unref(i18n).baseText("ndv.output.runNodeHintSubNode")), 1)
1278
+ ], 64)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
1279
+ createTextVNode(toDisplayString(unref(i18n).baseText("ndv.output.runNodeHint")) + " ", 1),
1280
+ canPinData.value ? (openBlock(), createElementBlock("span", {
1281
+ key: 0,
1282
+ onClick: insertTestData
1283
+ }, [
1284
+ _cache[8] || (_cache[8] = createBaseVNode("br", null, null, -1)),
1285
+ createTextVNode(" " + toDisplayString(unref(i18n).baseText("generic.or")) + " ", 1),
1286
+ createVNode(unref(N8nText), {
1287
+ tag: "a",
1288
+ size: "medium",
1289
+ color: "primary"
1290
+ }, {
1291
+ default: withCtx(() => [
1292
+ createTextVNode(toDisplayString(unref(i18n).baseText("ndv.output.insertTestData")), 1)
1293
+ ]),
1294
+ _: 1
1295
+ })
1296
+ ])) : createCommentVNode("", true)
1297
+ ], 64))
1298
+ ]),
1299
+ _: 1
1300
+ })) : createCommentVNode("", true)
1301
+ ], 64))
1629
1302
  ]),
1630
1303
  "node-waiting": withCtx(() => [
1631
1304
  createVNode(unref(N8nText), {
@@ -1705,30 +1378,36 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
1705
1378
  ]),
1706
1379
  key: "1"
1707
1380
  } : void 0
1708
- ]), 1032, ["class", "node", "workflow", "run-index", "linked-runs", "can-link-runs", "too-much-data-title", "no-data-in-branch-message", "is-executing", "executing-message", "push-ref", "block-u-i", "is-production-execution-preview", "is-pane-active", "hide-pagination", "data-output-type", "callout-message", "display-mode"]);
1381
+ ]), 1032, ["class", "node", "workflow", "run-index", "linked-runs", "can-link-runs", "too-much-data-title", "no-data-in-branch-message", "is-executing", "executing-message", "push-ref", "block-u-i", "is-production-execution-preview", "is-pane-active", "hide-pagination", "data-output-type", "callout-message", "display-mode", "collapsing-table-column-name"]);
1709
1382
  };
1710
1383
  }
1711
1384
  });
1712
- const runData$1 = "_runData_6c8lp_128";
1713
- const outputTypeSelect = "_outputTypeSelect_6c8lp_132";
1714
- const titleSection$1 = "_titleSection_6c8lp_137";
1715
- const title$2 = "_title_6c8lp_137";
1716
- const noOutputData$1 = "_noOutputData_6c8lp_153";
1717
- const recoveredOutputData$1 = "_recoveredOutputData_6c8lp_163";
1385
+ const runData$1 = "_runData_16mi2_128";
1386
+ const outputTypeSelect = "_outputTypeSelect_16mi2_132";
1387
+ const titleSection$1 = "_titleSection_16mi2_137";
1388
+ const titleSectionV2$1 = "_titleSectionV2_16mi2_145";
1389
+ const title$2 = "_title_16mi2_137";
1390
+ const titleV2$1 = "_titleV2_16mi2_157";
1391
+ const noOutputData$1 = "_noOutputData_16mi2_162";
1392
+ const recoveredOutputData$1 = "_recoveredOutputData_16mi2_172";
1393
+ const link = "_link_16mi2_181";
1718
1394
  const style0$3 = {
1719
1395
  runData: runData$1,
1720
1396
  outputTypeSelect,
1721
1397
  titleSection: titleSection$1,
1398
+ titleSectionV2: titleSectionV2$1,
1722
1399
  title: title$2,
1400
+ titleV2: titleV2$1,
1723
1401
  noOutputData: noOutputData$1,
1724
- recoveredOutputData: recoveredOutputData$1
1402
+ recoveredOutputData: recoveredOutputData$1,
1403
+ link
1725
1404
  };
1726
- const cssModules$4 = {
1405
+ const cssModules$3 = {
1727
1406
  "$style": style0$3
1728
1407
  };
1729
- const OutputPanel = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__cssModules", cssModules$4]]);
1730
- const _hoisted_1$3 = { key: 0 };
1731
- const _sfc_main$4 = /* @__PURE__ */ defineComponent({
1408
+ const OutputPanel = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__cssModules", cssModules$3]]);
1409
+ const _hoisted_1$2 = { key: 0 };
1410
+ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
1732
1411
  __name: "InputNodeSelect",
1733
1412
  props: {
1734
1413
  nodes: {},
@@ -1804,7 +1483,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
1804
1483
  emit("update:model-value", value);
1805
1484
  }
1806
1485
  return (_ctx, _cache) => {
1807
- const _component_n8n_option = _sfc_main$h;
1486
+ const _component_n8n_option = _sfc_main$g;
1808
1487
  const _component_n8n_select = N8nSelect;
1809
1488
  return openBlock(), createBlock(_component_n8n_select, {
1810
1489
  "model-value": _ctx.modelValue,
@@ -1818,7 +1497,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
1818
1497
  "onUpdate:modelValue": onInputNodeChange
1819
1498
  }, {
1820
1499
  prefix: withCtx(() => [
1821
- createVNode(_sfc_main$e, {
1500
+ createVNode(_sfc_main$c, {
1822
1501
  disabled: selectedInputNode.value?.disabled,
1823
1502
  "node-type": selectedInputNodeType.value,
1824
1503
  size: 14,
@@ -1835,7 +1514,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
1835
1514
  "data-test-id": "ndv-input-option"
1836
1515
  }, {
1837
1516
  default: withCtx(() => [
1838
- createVNode(_sfc_main$e, {
1517
+ createVNode(_sfc_main$c, {
1839
1518
  disabled: node2.disabled,
1840
1519
  "node-type": type,
1841
1520
  size: 14,
@@ -1846,7 +1525,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
1846
1525
  class: normalizeClass(_ctx.$style.title)
1847
1526
  }, [
1848
1527
  createTextVNode(toDisplayString(title2(node2.name)) + " ", 1),
1849
- node2.disabled ? (openBlock(), createElementBlock("span", _hoisted_1$3, "(" + toDisplayString(unref(i18n).baseText("node.disabled")) + ")", 1)) : createCommentVNode("", true)
1528
+ node2.disabled ? (openBlock(), createElementBlock("span", _hoisted_1$2, "(" + toDisplayString(unref(i18n).baseText("node.disabled")) + ")", 1)) : createCommentVNode("", true)
1850
1529
  ], 2),
1851
1530
  createBaseVNode("span", {
1852
1531
  class: normalizeClass(_ctx.$style.subtitle)
@@ -1875,12 +1554,12 @@ const style0$2 = {
1875
1554
  disabled,
1876
1555
  subtitle
1877
1556
  };
1878
- const cssModules$3 = {
1557
+ const cssModules$2 = {
1879
1558
  "$style": style0$2
1880
1559
  };
1881
- const InputNodeSelect = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__cssModules", cssModules$3]]);
1882
- const _sfc_main$3 = {};
1883
- const _hoisted_1$2 = {
1560
+ const InputNodeSelect = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__cssModules", cssModules$2]]);
1561
+ const _sfc_main$2 = {};
1562
+ const _hoisted_1$1 = {
1884
1563
  width: "112",
1885
1564
  height: "80",
1886
1565
  viewBox: "0 0 112 80",
@@ -1889,12 +1568,12 @@ const _hoisted_1$2 = {
1889
1568
  "xmlns:xlink": "http://www.w3.org/1999/xlink"
1890
1569
  };
1891
1570
  function _sfc_render(_ctx, _cache) {
1892
- return openBlock(), createElementBlock("svg", _hoisted_1$2, _cache[0] || (_cache[0] = [
1571
+ return openBlock(), createElementBlock("svg", _hoisted_1$1, _cache[0] || (_cache[0] = [
1893
1572
  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,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"></image></defs>', 3)
1894
1573
  ]));
1895
1574
  }
1896
- const WireMeUp = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["render", _sfc_render]]);
1897
- const _sfc_main$2 = /* @__PURE__ */ defineComponent({
1575
+ const WireMeUp = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["render", _sfc_render]]);
1576
+ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
1898
1577
  __name: "InputPanel",
1899
1578
  props: {
1900
1579
  runIndex: {},
@@ -1917,6 +1596,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
1917
1596
  const showDraggableHintWithDelay = ref(false);
1918
1597
  const draggableHintShown = ref(false);
1919
1598
  const mappedNode2 = ref(null);
1599
+ const collapsingColumnName = ref(null);
1920
1600
  const inputModes = [
1921
1601
  { value: "mapping", label: i18n.baseText("ndv.input.mapping") },
1922
1602
  { value: "debugging", label: i18n.baseText("ndv.input.fromAI") }
@@ -1924,6 +1604,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
1924
1604
  const nodeTypesStore = useNodeTypesStore();
1925
1605
  const ndvStore = useNDVStore();
1926
1606
  const workflowsStore = useWorkflowsStore();
1607
+ const posthogStore = usePostHog();
1927
1608
  const {
1928
1609
  activeNode,
1929
1610
  focusedMappableInput,
@@ -2025,6 +1706,12 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
2025
1706
  const parentNode = parentNodes.value[0];
2026
1707
  return parentNode && waitingNodeTooltip(workflowsStore.getNodeByName(parentNode.name));
2027
1708
  });
1709
+ const isNDVV2 = computed(
1710
+ () => posthogStore.isVariantEnabled(
1711
+ NDV_UI_OVERHAUL_EXPERIMENT.name,
1712
+ NDV_UI_OVERHAUL_EXPERIMENT.variant
1713
+ )
1714
+ );
2028
1715
  watch(
2029
1716
  inputMode,
2030
1717
  (mode) => {
@@ -2116,6 +1803,9 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
2116
1803
  function activatePane() {
2117
1804
  emit("activatePane");
2118
1805
  }
1806
+ function handleChangeCollapsingColumn(columnName) {
1807
+ collapsingColumnName.value = columnName;
1808
+ }
2119
1809
  return (_ctx, _cache) => {
2120
1810
  const _component_i18n_t = resolveComponent("i18n-t");
2121
1811
  const _directive_n8n_html = resolveDirective("n8n-html");
@@ -2141,6 +1831,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
2141
1831
  "pane-type": "input",
2142
1832
  "data-test-id": "ndv-input-panel",
2143
1833
  "disable-ai-content": true,
1834
+ "collapsing-table-column-name": collapsingColumnName.value,
2144
1835
  onActivatePane: activatePane,
2145
1836
  onItemHover,
2146
1837
  onLinkRun,
@@ -2148,14 +1839,15 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
2148
1839
  onRunChange: onRunIndexChange,
2149
1840
  onTableMounted,
2150
1841
  onSearch,
2151
- onDisplayModeChange: _cache[1] || (_cache[1] = ($event) => emit("displayModeChange", $event))
1842
+ onDisplayModeChange: _cache[2] || (_cache[2] = ($event) => emit("displayModeChange", $event)),
1843
+ onCollapsingTableColumnChanged: handleChangeCollapsingColumn
2152
1844
  }, createSlots({
2153
1845
  header: withCtx(() => [
2154
1846
  createBaseVNode("div", {
2155
- class: normalizeClass(_ctx.$style.titleSection)
1847
+ class: normalizeClass([_ctx.$style.titleSection, { [_ctx.$style.titleSectionV2]: isNDVV2.value }])
2156
1848
  }, [
2157
1849
  createBaseVNode("span", {
2158
- class: normalizeClass(_ctx.$style.title)
1850
+ class: normalizeClass([_ctx.$style.title, { [_ctx.$style.titleV2]: isNDVV2.value }])
2159
1851
  }, toDisplayString(unref(i18n).baseText("ndv.input")), 3),
2160
1852
  isActiveNodeConfig.value && !_ctx.readOnly ? (openBlock(), createBlock(unref(N8nRadioButtons), {
2161
1853
  key: 0,
@@ -2180,35 +1872,59 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
2180
1872
  key: 0,
2181
1873
  class: normalizeClass(_ctx.$style.noOutputData)
2182
1874
  }, [
2183
- isMappingEnabled.value || hasRootNodeRun.value ? (openBlock(), createBlock(unref(N8nText), {
2184
- key: 0,
2185
- tag: "div",
2186
- bold: true,
2187
- color: "text-dark",
2188
- size: "large"
2189
- }, {
2190
- default: withCtx(() => [
2191
- createTextVNode(toDisplayString(unref(i18n).baseText("ndv.input.noOutputData.title")), 1)
2192
- ]),
2193
- _: 1
2194
- })) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
2195
- createVNode(unref(N8nText), {
2196
- tag: "div",
2197
- bold: true,
2198
- color: "text-dark",
2199
- size: "large"
1875
+ isNDVV2.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
1876
+ isMappingEnabled.value || hasRootNodeRun.value ? (openBlock(), createBlock(NDVEmptyState, {
1877
+ key: 0,
1878
+ title: unref(i18n).baseText("ndv.input.noOutputData.v2.title")
2200
1879
  }, {
2201
- default: withCtx(() => [
2202
- createTextVNode(toDisplayString(unref(i18n).baseText("ndv.input.rootNodeHasNotRun.title")), 1)
1880
+ icon: withCtx(() => [
1881
+ createVNode(unref(N8nIcon), {
1882
+ icon: "arrow-right-to-line",
1883
+ size: "xlarge"
1884
+ })
1885
+ ]),
1886
+ description: withCtx(() => [
1887
+ createVNode(_component_i18n_t, {
1888
+ tag: "span",
1889
+ keypath: "ndv.input.noOutputData.v2.description"
1890
+ }, {
1891
+ link: withCtx(() => [
1892
+ createVNode(_sfc_main$f, {
1893
+ "hide-icon": "",
1894
+ transparent: "",
1895
+ type: "secondary",
1896
+ "node-name": (isActiveNodeConfig.value ? rootNode.value : unref(activeNode)?.name) ?? "",
1897
+ label: unref(i18n).baseText("ndv.input.noOutputData.v2.action"),
1898
+ tooltip: unref(i18n).baseText("ndv.input.noOutputData.v2.tooltip"),
1899
+ "tooltip-placement": "bottom",
1900
+ "telemetry-source": "inputs",
1901
+ "data-test-id": "execute-previous-node",
1902
+ onExecute: onNodeExecute
1903
+ }, null, 8, ["node-name", "label", "tooltip"]),
1904
+ _cache[4] || (_cache[4] = createBaseVNode("br", null, null, -1))
1905
+ ]),
1906
+ _: 1
1907
+ })
2203
1908
  ]),
2204
1909
  _: 1
2205
- }),
2206
- createVNode(unref(N8nText), {
2207
- tag: "div",
2208
- color: "text-dark",
2209
- size: "medium"
1910
+ }, 8, ["title"])) : (openBlock(), createBlock(NDVEmptyState, {
1911
+ key: 1,
1912
+ title: unref(i18n).baseText("ndv.input.rootNodeHasNotRun.title")
2210
1913
  }, {
2211
- default: withCtx(() => [
1914
+ icon: withCtx(() => _cache[5] || (_cache[5] = [
1915
+ createBaseVNode("svg", {
1916
+ width: "16px",
1917
+ viewBox: "0 0 16 14",
1918
+ fill: "none",
1919
+ xmlns: "http://www.w3.org/2000/svg"
1920
+ }, [
1921
+ createBaseVNode("path", {
1922
+ 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",
1923
+ fill: "currentColor"
1924
+ })
1925
+ ], -1)
1926
+ ])),
1927
+ description: withCtx(() => [
2212
1928
  createVNode(_component_i18n_t, {
2213
1929
  tag: "span",
2214
1930
  keypath: "ndv.input.rootNodeHasNotRun.description"
@@ -2224,89 +1940,161 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
2224
1940
  })
2225
1941
  ]),
2226
1942
  _: 1
2227
- })
2228
- ], 64)),
2229
- !_ctx.readOnly ? (openBlock(), createBlock(unref(N8nTooltip), {
2230
- key: 2,
2231
- visible: showDraggableHint.value && showDraggableHintWithDelay.value
2232
- }, {
2233
- content: withCtx(() => [
2234
- withDirectives(createBaseVNode("div", null, null, 512), [
2235
- [
2236
- _directive_n8n_html,
2237
- unref(i18n).baseText("dataMapping.dragFromPreviousHint", {
2238
- interpolate: { name: unref(focusedMappableInput) }
2239
- })
2240
- ]
2241
- ])
2242
- ]),
2243
- default: withCtx(() => [
2244
- createVNode(_sfc_main$i, {
2245
- type: "secondary",
2246
- "hide-icon": "",
2247
- transparent: true,
2248
- "node-name": (isActiveNodeConfig.value ? rootNode.value : _ctx.currentNodeName) ?? "",
2249
- label: unref(i18n).baseText("ndv.input.noOutputData.executePrevious"),
2250
- class: "mt-m",
2251
- "telemetry-source": "inputs",
2252
- "data-test-id": "execute-previous-node",
2253
- onExecute: onNodeExecute
2254
- }, null, 8, ["node-name", "label"])
2255
- ]),
2256
- _: 1
2257
- }, 8, ["visible"])) : createCommentVNode("", true),
2258
- !_ctx.readOnly ? (openBlock(), createBlock(unref(N8nText), {
2259
- key: 3,
2260
- tag: "div",
2261
- size: "small"
2262
- }, {
2263
- default: withCtx(() => [
2264
- createVNode(_component_i18n_t, { keypath: "ndv.input.noOutputData.hint" }, {
2265
- info: withCtx(() => [
2266
- createVNode(unref(N8nTooltip), { placement: "bottom" }, {
2267
- content: withCtx(() => [
2268
- createTextVNode(toDisplayString(unref(i18n).baseText("ndv.input.noOutputData.hint.tooltip")), 1)
2269
- ]),
2270
- default: withCtx(() => [
2271
- createVNode(unref(N8nIcon), { icon: "question-circle" })
1943
+ }, 8, ["title"]))
1944
+ ], 64)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
1945
+ isMappingEnabled.value || hasRootNodeRun.value ? (openBlock(), createBlock(unref(N8nText), {
1946
+ key: 0,
1947
+ tag: "div",
1948
+ bold: true,
1949
+ color: "text-dark",
1950
+ size: "large"
1951
+ }, {
1952
+ default: withCtx(() => [
1953
+ createTextVNode(toDisplayString(unref(i18n).baseText("ndv.input.noOutputData.title")), 1)
1954
+ ]),
1955
+ _: 1
1956
+ })) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
1957
+ createVNode(unref(N8nText), {
1958
+ tag: "div",
1959
+ bold: true,
1960
+ color: "text-dark",
1961
+ size: "large"
1962
+ }, {
1963
+ default: withCtx(() => [
1964
+ createTextVNode(toDisplayString(unref(i18n).baseText("ndv.input.rootNodeHasNotRun.title")), 1)
1965
+ ]),
1966
+ _: 1
1967
+ }),
1968
+ createVNode(unref(N8nText), {
1969
+ tag: "div",
1970
+ color: "text-dark",
1971
+ size: "medium"
1972
+ }, {
1973
+ default: withCtx(() => [
1974
+ createVNode(_component_i18n_t, {
1975
+ tag: "span",
1976
+ keypath: "ndv.input.rootNodeHasNotRun.description"
1977
+ }, {
1978
+ link: withCtx(() => [
1979
+ createBaseVNode("a", {
1980
+ href: "#",
1981
+ "data-test-id": "switch-to-mapping-mode-link",
1982
+ onClick: _cache[1] || (_cache[1] = withModifiers(($event) => onInputModeChange("mapping"), ["prevent"]))
1983
+ }, toDisplayString(unref(i18n).baseText("ndv.input.rootNodeHasNotRun.description.link")), 1)
2272
1984
  ]),
2273
1985
  _: 1
2274
1986
  })
2275
1987
  ]),
2276
1988
  _: 1
2277
1989
  })
2278
- ]),
2279
- _: 1
2280
- })) : createCommentVNode("", true)
1990
+ ], 64)),
1991
+ !_ctx.readOnly ? (openBlock(), createBlock(unref(N8nTooltip), {
1992
+ key: 2,
1993
+ visible: showDraggableHint.value && showDraggableHintWithDelay.value
1994
+ }, {
1995
+ content: withCtx(() => [
1996
+ withDirectives(createBaseVNode("div", null, null, 512), [
1997
+ [
1998
+ _directive_n8n_html,
1999
+ unref(i18n).baseText("dataMapping.dragFromPreviousHint", {
2000
+ interpolate: { name: unref(focusedMappableInput) }
2001
+ })
2002
+ ]
2003
+ ])
2004
+ ]),
2005
+ default: withCtx(() => [
2006
+ createVNode(_sfc_main$f, {
2007
+ type: "secondary",
2008
+ "hide-icon": "",
2009
+ transparent: true,
2010
+ "node-name": (isActiveNodeConfig.value ? rootNode.value : unref(activeNode)?.name) ?? "",
2011
+ label: unref(i18n).baseText("ndv.input.noOutputData.executePrevious"),
2012
+ class: "mt-m",
2013
+ "telemetry-source": "inputs",
2014
+ "data-test-id": "execute-previous-node",
2015
+ onExecute: onNodeExecute
2016
+ }, null, 8, ["node-name", "label"])
2017
+ ]),
2018
+ _: 1
2019
+ }, 8, ["visible"])) : createCommentVNode("", true),
2020
+ !_ctx.readOnly ? (openBlock(), createBlock(unref(N8nText), {
2021
+ key: 3,
2022
+ tag: "div",
2023
+ size: "small"
2024
+ }, {
2025
+ default: withCtx(() => [
2026
+ createVNode(_component_i18n_t, { keypath: "ndv.input.noOutputData.hint" }, {
2027
+ info: withCtx(() => [
2028
+ createVNode(unref(N8nTooltip), { placement: "bottom" }, {
2029
+ content: withCtx(() => [
2030
+ createTextVNode(toDisplayString(unref(i18n).baseText("ndv.input.noOutputData.hint.tooltip")), 1)
2031
+ ]),
2032
+ default: withCtx(() => [
2033
+ createVNode(unref(N8nIcon), { icon: "circle-help" })
2034
+ ]),
2035
+ _: 1
2036
+ })
2037
+ ]),
2038
+ _: 1
2039
+ })
2040
+ ]),
2041
+ _: 1
2042
+ })) : createCommentVNode("", true)
2043
+ ], 64))
2281
2044
  ], 2)) : (openBlock(), createElementBlock("div", {
2282
2045
  key: 1,
2283
2046
  class: normalizeClass(_ctx.$style.notConnected)
2284
2047
  }, [
2285
- createBaseVNode("div", null, [
2286
- createVNode(WireMeUp)
2287
- ]),
2288
- createVNode(unref(N8nText), {
2289
- tag: "div",
2290
- bold: true,
2291
- color: "text-dark",
2292
- size: "large"
2048
+ isNDVV2.value ? (openBlock(), createBlock(NDVEmptyState, {
2049
+ key: 0,
2050
+ title: unref(i18n).baseText("ndv.input.notConnected.v2.title")
2293
2051
  }, {
2294
- default: withCtx(() => [
2295
- createTextVNode(toDisplayString(unref(i18n).baseText("ndv.input.notConnected.title")), 1)
2052
+ icon: withCtx(() => [
2053
+ createVNode(WireMeUp)
2296
2054
  ]),
2297
- _: 1
2298
- }),
2299
- createVNode(unref(N8nText), { tag: "div" }, {
2300
- default: withCtx(() => [
2301
- createTextVNode(toDisplayString(unref(i18n).baseText("ndv.input.notConnected.message")) + " ", 1),
2302
- createBaseVNode("a", {
2303
- href: "https://docs.n8n.io/workflows/connections/",
2304
- target: "_blank",
2305
- onClick: onConnectionHelpClick
2306
- }, toDisplayString(unref(i18n).baseText("ndv.input.notConnected.learnMore")), 1)
2055
+ description: withCtx(() => [
2056
+ createVNode(_component_i18n_t, {
2057
+ tag: "span",
2058
+ keypath: "ndv.input.notConnected.v2.description"
2059
+ }, {
2060
+ link: withCtx(() => [
2061
+ createBaseVNode("a", {
2062
+ href: "https://docs.n8n.io/workflows/connections/",
2063
+ target: "_blank",
2064
+ onClick: onConnectionHelpClick
2065
+ }, toDisplayString(unref(i18n).baseText("ndv.input.notConnected.learnMore")), 1)
2066
+ ]),
2067
+ _: 1
2068
+ })
2307
2069
  ]),
2308
2070
  _: 1
2309
- })
2071
+ }, 8, ["title"])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
2072
+ createBaseVNode("div", null, [
2073
+ createVNode(WireMeUp)
2074
+ ]),
2075
+ createVNode(unref(N8nText), {
2076
+ tag: "div",
2077
+ bold: true,
2078
+ color: "text-dark",
2079
+ size: "large"
2080
+ }, {
2081
+ default: withCtx(() => [
2082
+ createTextVNode(toDisplayString(unref(i18n).baseText("ndv.input.notConnected.title")), 1)
2083
+ ]),
2084
+ _: 1
2085
+ }),
2086
+ createVNode(unref(N8nText), { tag: "div" }, {
2087
+ default: withCtx(() => [
2088
+ createTextVNode(toDisplayString(unref(i18n).baseText("ndv.input.notConnected.message")) + " ", 1),
2089
+ createBaseVNode("a", {
2090
+ href: "https://docs.n8n.io/workflows/connections/",
2091
+ target: "_blank",
2092
+ onClick: onConnectionHelpClick
2093
+ }, toDisplayString(unref(i18n).baseText("ndv.input.notConnected.learnMore")), 1)
2094
+ ]),
2095
+ _: 1
2096
+ })
2097
+ ], 64))
2310
2098
  ], 2))
2311
2099
  ]),
2312
2100
  "node-waiting": withCtx(() => [
@@ -2366,7 +2154,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
2366
2154
  name: "before-data",
2367
2155
  fn: withCtx(() => [
2368
2156
  (openBlock(), createBlock(resolveDynamicComponent("style"), null, {
2369
- default: withCtx(() => _cache[2] || (_cache[2] = [
2157
+ default: withCtx(() => _cache[3] || (_cache[3] = [
2370
2158
  createTextVNode("button.linkRun { display: none }")
2371
2159
  ])),
2372
2160
  _: 1
@@ -2384,33 +2172,37 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
2384
2172
  ]),
2385
2173
  key: "0"
2386
2174
  } : void 0
2387
- ]), 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"]);
2175
+ ]), 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"]);
2388
2176
  };
2389
2177
  }
2390
2178
  });
2391
- const runData = "_runData_115kf_123";
2392
- const mappedNode = "_mappedNode_115kf_127";
2393
- const titleSection = "_titleSection_115kf_131";
2394
- const inputModeTab = "_inputModeTab_115kf_140";
2395
- const noOutputData = "_noOutputData_115kf_144";
2396
- const recoveredOutputData = "_recoveredOutputData_115kf_151";
2397
- const notConnected = "_notConnected_115kf_160";
2398
- const title = "_title_115kf_131";
2179
+ const runData = "_runData_1mdum_123";
2180
+ const mappedNode = "_mappedNode_1mdum_127";
2181
+ const titleSection = "_titleSection_1mdum_131";
2182
+ const titleSectionV2 = "_titleSectionV2_1mdum_140";
2183
+ const inputModeTab = "_inputModeTab_1mdum_144";
2184
+ const noOutputData = "_noOutputData_1mdum_148";
2185
+ const recoveredOutputData = "_recoveredOutputData_1mdum_155";
2186
+ const notConnected = "_notConnected_1mdum_164";
2187
+ const title = "_title_1mdum_131";
2188
+ const titleV2 = "_titleV2_1mdum_182";
2399
2189
  const style0$1 = {
2400
2190
  runData,
2401
2191
  mappedNode,
2402
2192
  titleSection,
2193
+ titleSectionV2,
2403
2194
  inputModeTab,
2404
2195
  noOutputData,
2405
2196
  recoveredOutputData,
2406
2197
  notConnected,
2407
- title
2198
+ title,
2199
+ titleV2
2408
2200
  };
2409
- const cssModules$2 = {
2201
+ const cssModules$1 = {
2410
2202
  "$style": style0$1
2411
2203
  };
2412
- const InputPanel = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__cssModules", cssModules$2]]);
2413
- const _hoisted_1$1 = { key: "empty" };
2204
+ const InputPanel = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__cssModules", cssModules$1]]);
2205
+ const _hoisted_1 = { key: "empty" };
2414
2206
  const _hoisted_2 = { key: "listening" };
2415
2207
  const _hoisted_3 = { key: 0 };
2416
2208
  const _hoisted_4 = { key: 1 };
@@ -2421,7 +2213,7 @@ const _hoisted_7 = {
2421
2213
  class: "mb-xl"
2422
2214
  };
2423
2215
  const _hoisted_8 = ["textContent"];
2424
- const _sfc_main$1 = /* @__PURE__ */ defineComponent({
2216
+ const _sfc_main = /* @__PURE__ */ defineComponent({
2425
2217
  __name: "TriggerPanel",
2426
2218
  props: {
2427
2219
  nodeName: {},
@@ -2692,7 +2484,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
2692
2484
  const _component_n8n_pulse = N8nPulse;
2693
2485
  const _component_n8n_text = N8nText;
2694
2486
  const _component_n8n_button = N8nButton;
2695
- const _component_n8n_spinner = _sfc_main$j;
2487
+ const _component_n8n_spinner = _sfc_main$h;
2696
2488
  const _component_n8n_heading = N8nHeading;
2697
2489
  const _component_n8n_link = N8nLink;
2698
2490
  const _component_n8n_info_accordion = N8nInfoAccordion;
@@ -2705,10 +2497,10 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
2705
2497
  mode: "out-in"
2706
2498
  }, {
2707
2499
  default: withCtx(() => [
2708
- hasIssues.value || hideContent.value ? (openBlock(), createElementBlock("div", _hoisted_1$1)) : isListeningForEvents.value ? (openBlock(), createElementBlock("div", _hoisted_2, [
2500
+ hasIssues.value || hideContent.value ? (openBlock(), createElementBlock("div", _hoisted_1)) : isListeningForEvents.value ? (openBlock(), createElementBlock("div", _hoisted_2, [
2709
2501
  createVNode(_component_n8n_pulse, null, {
2710
2502
  default: withCtx(() => [
2711
- createVNode(_sfc_main$e, {
2503
+ createVNode(_sfc_main$c, {
2712
2504
  "node-type": nodeType.value,
2713
2505
  size: 40
2714
2506
  }, null, 8, ["node-type"])
@@ -2749,7 +2541,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
2749
2541
  "copy-button-text": unref(i18n).baseText("generic.clickToCopy"),
2750
2542
  onCopy: onTestLinkCopied
2751
2543
  }, null, 8, ["value", "toast-title", "copy-button-text"]),
2752
- createVNode(_sfc_main$i, {
2544
+ createVNode(_sfc_main$f, {
2753
2545
  "data-test-id": "trigger-execute-button",
2754
2546
  "node-name": _ctx.nodeName,
2755
2547
  size: "medium",
@@ -2790,7 +2582,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
2790
2582
  _: 1
2791
2583
  })
2792
2584
  ])) : createCommentVNode("", true),
2793
- createVNode(_sfc_main$i, {
2585
+ createVNode(_sfc_main$f, {
2794
2586
  "data-test-id": "trigger-execute-button",
2795
2587
  "node-name": _ctx.nodeName,
2796
2588
  size: "medium",
@@ -2827,7 +2619,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
2827
2619
  _: 1
2828
2620
  })) : createCommentVNode("", true)
2829
2621
  ], 2),
2830
- createVNode(_sfc_main$i, {
2622
+ createVNode(_sfc_main$f, {
2831
2623
  "data-test-id": "trigger-execute-button",
2832
2624
  "node-name": _ctx.nodeName,
2833
2625
  size: "medium",
@@ -2876,11 +2668,11 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
2876
2668
  };
2877
2669
  }
2878
2670
  });
2879
- const container = "_container_13dut_123";
2880
- const header = "_header_13dut_140";
2881
- const action = "_action_13dut_147";
2882
- const shake = "_shake_13dut_151";
2883
- const accordion = "_accordion_13dut_172";
2671
+ const container = "_container_1mcl9_123";
2672
+ const header = "_header_1mcl9_140";
2673
+ const action = "_action_1mcl9_147";
2674
+ const shake = "_shake_1mcl9_151";
2675
+ const accordion = "_accordion_1mcl9_172";
2884
2676
  const style0 = {
2885
2677
  container,
2886
2678
  header,
@@ -2888,722 +2680,13 @@ const style0 = {
2888
2680
  shake,
2889
2681
  accordion
2890
2682
  };
2891
- const cssModules$1 = {
2892
- "$style": style0
2893
- };
2894
- const TriggerPanel = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__cssModules", cssModules$1], ["__scopeId", "data-v-0f040cf5"]]);
2895
- const _hoisted_1 = {
2896
- key: 0,
2897
- ref: "container",
2898
- class: "data-display",
2899
- "data-test-id": "ndv-modal",
2900
- tabindex: "0"
2901
- };
2902
- const _sfc_main = /* @__PURE__ */ defineComponent({
2903
- __name: "NodeDetailsView",
2904
- props: {
2905
- workflowObject: {},
2906
- readOnly: { type: Boolean, default: false },
2907
- renaming: { type: Boolean },
2908
- isProductionExecutionPreview: { type: Boolean, default: false }
2909
- },
2910
- emits: ["saveKeyboardShortcut", "valueChanged", "switchSelectedNode", "openConnectionNodeCreator", "redrawNode", "stopExecution"],
2911
- setup(__props, { emit: __emit }) {
2912
- const emit = __emit;
2913
- const props = __props;
2914
- const ndvStore = useNDVStore();
2915
- const externalHooks = useExternalHooks();
2916
- const nodeHelpers = useNodeHelpers();
2917
- const { activeNode } = storeToRefs(ndvStore);
2918
- const pinnedData = usePinnedData(activeNode);
2919
- const workflowActivate = useWorkflowActivate();
2920
- const nodeTypesStore = useNodeTypesStore();
2921
- const workflowsStore = useWorkflowsStore();
2922
- const settingsStore = useSettingsStore();
2923
- const deviceSupport = useDeviceSupport();
2924
- const telemetry = useTelemetry();
2925
- const i18n = useI18n();
2926
- const message = useMessage();
2927
- const { APP_Z_INDEXES } = useStyles();
2928
- const settingsEventBus = createEventBus();
2929
- const redrawRequired = ref(false);
2930
- const runInputIndex = ref(-1);
2931
- const runOutputIndex = computed(() => ndvStore.output.run ?? -1);
2932
- const selectedInput = ref();
2933
- const isLinkingEnabled = ref(true);
2934
- const triggerWaitingWarningEnabled = ref(false);
2935
- const isDragging = ref(false);
2936
- const mainPanelPosition = ref(0);
2937
- const pinDataDiscoveryTooltipVisible = ref(false);
2938
- const avgInputRowHeight = ref(0);
2939
- const avgOutputRowHeight = ref(0);
2940
- const isInputPaneActive = ref(false);
2941
- const isOutputPaneActive = ref(false);
2942
- const isPairedItemHoveringEnabled = ref(true);
2943
- const pushRef = computed(() => ndvStore.pushRef);
2944
- const activeNodeType = computed(() => {
2945
- if (activeNode.value) {
2946
- return nodeTypesStore.getNodeType(activeNode.value.type, activeNode.value.typeVersion);
2947
- }
2948
- return null;
2949
- });
2950
- const showTriggerWaitingWarning = computed(
2951
- () => triggerWaitingWarningEnabled.value && !!activeNodeType.value && !activeNodeType.value.group.includes("trigger") && workflowsStore.isWorkflowRunning && workflowsStore.executionWaitingForWebhook
2952
- );
2953
- const workflowRunData = computed(() => {
2954
- if (workflowExecution.value === null) {
2955
- return null;
2956
- }
2957
- const executionData = workflowExecution.value.data;
2958
- if (executionData?.resultData) {
2959
- return executionData.resultData.runData;
2960
- }
2961
- return null;
2962
- });
2963
- const parentNodes = computed(() => {
2964
- if (activeNode.value) {
2965
- return props.workflowObject.getParentNodesByDepth(activeNode.value.name, 1);
2966
- }
2967
- return [];
2968
- });
2969
- const parentNode = computed(() => {
2970
- for (const parent of parentNodes.value) {
2971
- if (workflowsStore?.pinnedWorkflowData?.[parent.name]) {
2972
- return parent;
2973
- }
2974
- if (workflowRunData.value?.[parent.name]) {
2975
- return parent;
2976
- }
2977
- }
2978
- return parentNodes.value[0];
2979
- });
2980
- const inputNodeName = computed(() => {
2981
- const nodeOutputs = activeNode.value && activeNodeType.value ? getNodeOutputs(props.workflowObject, activeNode.value, activeNodeType.value) : [];
2982
- const nonMainOutputs = nodeOutputs.filter((output) => {
2983
- if (typeof output === "string") return output !== NodeConnectionTypes.Main;
2984
- return output.type !== NodeConnectionTypes.Main;
2985
- });
2986
- const isSubNode = nonMainOutputs.length > 0;
2987
- if (isSubNode && activeNode.value) {
2988
- const connectedOutputNode = props.workflowObject.getChildNodes(
2989
- activeNode.value.name,
2990
- "ALL_NON_MAIN"
2991
- )?.[0];
2992
- return connectedOutputNode;
2993
- }
2994
- return selectedInput.value ?? parentNode.value?.name;
2995
- });
2996
- const inputNode = computed(() => {
2997
- if (inputNodeName.value) {
2998
- return workflowsStore.getNodeByName(inputNodeName.value);
2999
- }
3000
- return null;
3001
- });
3002
- const inputSize = computed(() => ndvStore.ndvInputDataWithPinnedData.length);
3003
- const isTriggerNode = computed(
3004
- () => !!activeNodeType.value && (activeNodeType.value.group.includes("trigger") || activeNodeType.value.name === START_NODE_TYPE)
3005
- );
3006
- const showTriggerPanel = computed(() => {
3007
- const override = !!activeNodeType.value?.triggerPanel;
3008
- if (typeof activeNodeType.value?.triggerPanel === "boolean") {
3009
- return override;
3010
- }
3011
- const isWebhookBasedNode = !!activeNodeType.value?.webhooks?.length;
3012
- const isPollingNode = activeNodeType.value?.polling;
3013
- return !props.readOnly && isTriggerNode.value && (isWebhookBasedNode || isPollingNode || override);
3014
- });
3015
- const hasOutputConnection = computed(() => {
3016
- if (!activeNode.value) return false;
3017
- const outgoingConnections = workflowsStore.outgoingConnectionsByNodeName(activeNode.value.name);
3018
- return (Object.values(outgoingConnections)?.[0]?.[0] ?? []).length > 0;
3019
- });
3020
- const isExecutableTriggerNode = computed(() => {
3021
- if (!activeNodeType.value) return false;
3022
- return EXECUTABLE_TRIGGER_NODE_TYPES.includes(activeNodeType.value.name);
3023
- });
3024
- const isActiveStickyNode = computed(
3025
- () => !!ndvStore.activeNode && ndvStore.activeNode.type === STICKY_NODE_TYPE
3026
- );
3027
- const workflowExecution = computed(() => workflowsStore.getWorkflowExecution);
3028
- const maxOutputRun = computed(() => {
3029
- if (activeNode.value === null) {
3030
- return 0;
3031
- }
3032
- const runData2 = workflowRunData.value;
3033
- if (!runData2?.[activeNode.value.name]) {
3034
- return 0;
3035
- }
3036
- if (runData2[activeNode.value.name].length) {
3037
- return runData2[activeNode.value.name].length - 1;
3038
- }
3039
- return 0;
3040
- });
3041
- const outputRun = computed(
3042
- () => runOutputIndex.value === -1 ? maxOutputRun.value : Math.min(runOutputIndex.value, maxOutputRun.value)
3043
- );
3044
- const maxInputRun = computed(() => {
3045
- if (inputNode.value === null || activeNode.value === null) {
3046
- return 0;
3047
- }
3048
- const workflowNode = props.workflowObject.getNode(activeNode.value.name);
3049
- if (!workflowNode || !activeNodeType.value) {
3050
- return 0;
3051
- }
3052
- const outputs = getNodeOutputs(
3053
- props.workflowObject,
3054
- workflowNode,
3055
- activeNodeType.value
3056
- );
3057
- let node2 = inputNode.value;
3058
- const runData2 = workflowRunData.value;
3059
- if (outputs.some((output) => output !== NodeConnectionTypes.Main)) {
3060
- node2 = activeNode.value;
3061
- }
3062
- if (!node2 || !runData2 || !runData2.hasOwnProperty(node2.name)) {
3063
- return 0;
3064
- }
3065
- if (runData2[node2.name].length) {
3066
- return runData2[node2.name].length - 1;
3067
- }
3068
- return 0;
3069
- });
3070
- const connectedCurrentNodeOutputs = computed(() => {
3071
- return parentNodes.value.find(({ name }) => name === inputNodeName.value)?.indicies;
3072
- });
3073
- const inputRun = computed(() => {
3074
- if (isLinkingEnabled.value && maxOutputRun.value === maxInputRun.value) {
3075
- return outputRun.value;
3076
- }
3077
- const currentInputNodeName = inputNodeName.value;
3078
- if (runInputIndex.value === -1 && currentInputNodeName) {
3079
- return connectedCurrentNodeOutputs.value?.map(
3080
- (outputIndex) => nodeHelpers.getLastRunIndexWithData(currentInputNodeName, outputIndex)
3081
- ).find((runIndex) => runIndex !== -1) ?? maxInputRun.value;
3082
- }
3083
- return Math.min(runInputIndex.value, maxInputRun.value);
3084
- });
3085
- const canLinkRuns = computed(
3086
- () => maxOutputRun.value > 0 && maxOutputRun.value === maxInputRun.value
3087
- );
3088
- const linked = computed(() => isLinkingEnabled.value && canLinkRuns.value);
3089
- const featureRequestUrl = computed(() => {
3090
- if (!activeNodeType.value) {
3091
- return "";
3092
- }
3093
- return `${BASE_NODE_SURVEY_URL}${activeNodeType.value.name}`;
3094
- });
3095
- const outputPanelEditMode = computed(() => ndvStore.outputPanelEditMode);
3096
- const isExecutionWaitingForWebhook = computed(() => workflowsStore.executionWaitingForWebhook);
3097
- const blockUi = computed(
3098
- () => workflowsStore.isWorkflowRunning || isExecutionWaitingForWebhook.value
3099
- );
3100
- const foreignCredentials = computed(() => {
3101
- const credentials = activeNode.value?.credentials;
3102
- const usedCredentials = workflowsStore.usedCredentials;
3103
- const foreignCredentialsArray = [];
3104
- if (credentials && settingsStore.isEnterpriseFeatureEnabled[EnterpriseEditionFeature.Sharing]) {
3105
- Object.values(credentials).forEach((credential) => {
3106
- if (credential.id && usedCredentials[credential.id] && !usedCredentials[credential.id].currentUserHasAccess) {
3107
- foreignCredentialsArray.push(credential.id);
3108
- }
3109
- });
3110
- }
3111
- return foreignCredentialsArray;
3112
- });
3113
- const hasForeignCredential = computed(() => foreignCredentials.value.length > 0);
3114
- const inputPanelDisplayMode = computed(() => ndvStore.inputPanelDisplayMode);
3115
- const outputPanelDisplayMode = computed(() => ndvStore.outputPanelDisplayMode);
3116
- const setIsTooltipVisible = ({ isTooltipVisible }) => {
3117
- pinDataDiscoveryTooltipVisible.value = isTooltipVisible;
3118
- };
3119
- const onKeyDown = (e) => {
3120
- if (e.key === "s" && deviceSupport.isCtrlKeyPressed(e)) {
3121
- onSaveWorkflow(e);
3122
- }
3123
- };
3124
- const onSaveWorkflow = (e) => {
3125
- e.stopPropagation();
3126
- e.preventDefault();
3127
- if (props.readOnly) return;
3128
- emit("saveKeyboardShortcut", e);
3129
- };
3130
- const onInputItemHover = (e) => {
3131
- if (e === null || !inputNodeName.value || !isPairedItemHoveringEnabled.value) {
3132
- ndvStore.setHoveringItem(null);
3133
- return;
3134
- }
3135
- const item = {
3136
- nodeName: inputNodeName.value,
3137
- runIndex: inputRun.value,
3138
- outputIndex: e.outputIndex,
3139
- itemIndex: e.itemIndex
3140
- };
3141
- ndvStore.setHoveringItem(item);
3142
- };
3143
- const onInputTableMounted = (e) => {
3144
- avgInputRowHeight.value = e.avgRowHeight;
3145
- };
3146
- const onWorkflowActivate = () => {
3147
- ndvStore.activeNodeName = null;
3148
- setTimeout(() => {
3149
- void workflowActivate.activateCurrentWorkflow("ndv");
3150
- }, 1e3);
3151
- };
3152
- const onOutputItemHover = (e) => {
3153
- if (e === null || !activeNode.value || !isPairedItemHoveringEnabled.value) {
3154
- ndvStore.setHoveringItem(null);
3155
- return;
3156
- }
3157
- const item = {
3158
- nodeName: activeNode.value?.name,
3159
- runIndex: outputRun.value,
3160
- outputIndex: e.outputIndex,
3161
- itemIndex: e.itemIndex
3162
- };
3163
- ndvStore.setHoveringItem(item);
3164
- };
3165
- const onFeatureRequestClick = () => {
3166
- window.open(featureRequestUrl.value, "_blank");
3167
- if (activeNode.value) {
3168
- telemetry.track("User clicked ndv link", {
3169
- node_type: activeNode.value.type,
3170
- workflow_id: workflowsStore.workflowId,
3171
- push_ref: pushRef.value,
3172
- pane: NodeConnectionTypes.Main,
3173
- type: "i-wish-this-node-would"
3174
- });
3175
- }
3176
- };
3177
- const onDragEnd = (e) => {
3178
- isDragging.value = false;
3179
- telemetry.track("User moved parameters pane", {
3180
- // example method for tracking
3181
- window_width: e.windowWidth,
3182
- start_position: mainPanelPosition.value,
3183
- end_position: e.position,
3184
- node_type: activeNodeType.value ? activeNodeType.value.name : "",
3185
- push_ref: pushRef.value,
3186
- workflow_id: workflowsStore.workflowId
3187
- });
3188
- mainPanelPosition.value = e.position;
3189
- };
3190
- const onDragStart = (e) => {
3191
- isDragging.value = true;
3192
- mainPanelPosition.value = e.position;
3193
- };
3194
- const onPanelsInit = (e) => {
3195
- mainPanelPosition.value = e.position;
3196
- };
3197
- const onLinkRunToOutput = () => {
3198
- isLinkingEnabled.value = true;
3199
- trackLinking("output");
3200
- };
3201
- const onUnlinkRun = (pane) => {
3202
- runInputIndex.value = runOutputIndex.value;
3203
- isLinkingEnabled.value = false;
3204
- trackLinking(pane);
3205
- };
3206
- const onNodeExecute = () => {
3207
- setTimeout(() => {
3208
- if (!activeNode.value || !workflowsStore.isWorkflowRunning) {
3209
- return;
3210
- }
3211
- triggerWaitingWarningEnabled.value = true;
3212
- }, 1e3);
3213
- };
3214
- const openSettings = () => {
3215
- settingsEventBus.emit("openSettings");
3216
- };
3217
- const trackLinking = (pane) => {
3218
- telemetry.track("User changed ndv run linking", {
3219
- node_type: activeNodeType.value ? activeNodeType.value.name : "",
3220
- push_ref: pushRef.value,
3221
- linked: linked.value,
3222
- pane
3223
- });
3224
- };
3225
- const onLinkRunToInput = () => {
3226
- ndvStore.setOutputRunIndex(runInputIndex.value);
3227
- isLinkingEnabled.value = true;
3228
- trackLinking("input");
3229
- };
3230
- const valueChanged = (parameterData) => {
3231
- emit("valueChanged", parameterData);
3232
- };
3233
- const onSwitchSelectedNode = (nodeTypeName) => {
3234
- emit("switchSelectedNode", nodeTypeName);
3235
- };
3236
- const onOpenConnectionNodeCreator = (nodeTypeName, connectionType, connectionIndex = 0) => {
3237
- emit("openConnectionNodeCreator", nodeTypeName, connectionType, connectionIndex);
3238
- };
3239
- const close = async () => {
3240
- if (isDragging.value) {
3241
- return;
3242
- }
3243
- if (activeNode.value && (typeof activeNodeType.value?.outputs === "string" || typeof activeNodeType.value?.inputs === "string" || redrawRequired.value)) {
3244
- const nodeName = activeNode.value.name;
3245
- setTimeout(() => {
3246
- emit("redrawNode", nodeName);
3247
- }, 1);
3248
- }
3249
- if (outputPanelEditMode.value.enabled && activeNode.value) {
3250
- const shouldPinDataBeforeClosing = await message.confirm(
3251
- "",
3252
- i18n.baseText("ndv.pinData.beforeClosing.title"),
3253
- {
3254
- confirmButtonText: i18n.baseText("ndv.pinData.beforeClosing.confirm"),
3255
- cancelButtonText: i18n.baseText("ndv.pinData.beforeClosing.cancel")
3256
- }
3257
- );
3258
- if (shouldPinDataBeforeClosing === MODAL_CONFIRM) {
3259
- const { value } = outputPanelEditMode.value;
3260
- try {
3261
- pinnedData.setData(jsonParse(value), "on-ndv-close-modal");
3262
- } catch (error2) {
3263
- console.error(error2);
3264
- }
3265
- }
3266
- ndvStore.setOutputPanelEditModeEnabled(false);
3267
- }
3268
- await externalHooks.run("dataDisplay.nodeEditingFinished");
3269
- telemetry.track("User closed node modal", {
3270
- node_type: activeNodeType.value ? activeNodeType.value?.name : "",
3271
- push_ref: pushRef.value,
3272
- workflow_id: workflowsStore.workflowId
3273
- });
3274
- triggerWaitingWarningEnabled.value = false;
3275
- ndvStore.activeNodeName = null;
3276
- ndvStore.resetNDVPushRef();
3277
- };
3278
- const trackRunChange = (run, pane) => {
3279
- telemetry.track("User changed ndv run dropdown", {
3280
- push_ref: pushRef.value,
3281
- run_index: run,
3282
- node_type: activeNodeType.value ? activeNodeType.value?.name : "",
3283
- pane
3284
- });
3285
- };
3286
- const onRunOutputIndexChange = (run) => {
3287
- ndvStore.setOutputRunIndex(run);
3288
- trackRunChange(run, "output");
3289
- };
3290
- const onRunInputIndexChange = (run) => {
3291
- runInputIndex.value = run;
3292
- if (linked.value) {
3293
- ndvStore.setOutputRunIndex(run);
3294
- }
3295
- trackRunChange(run, "input");
3296
- };
3297
- const onOutputTableMounted = (e) => {
3298
- avgOutputRowHeight.value = e.avgRowHeight;
3299
- };
3300
- const onInputNodeChange = (value, index) => {
3301
- runInputIndex.value = -1;
3302
- isLinkingEnabled.value = true;
3303
- selectedInput.value = value;
3304
- telemetry.track("User changed ndv input dropdown", {
3305
- node_type: activeNode.value ? activeNode.value.type : "",
3306
- push_ref: pushRef.value,
3307
- workflow_id: workflowsStore.workflowId,
3308
- selection_value: index,
3309
- input_node_type: inputNode.value ? inputNode.value.type : ""
3310
- });
3311
- };
3312
- const onStopExecution = () => {
3313
- emit("stopExecution");
3314
- };
3315
- const activateInputPane = () => {
3316
- isInputPaneActive.value = true;
3317
- isOutputPaneActive.value = false;
3318
- };
3319
- const activateOutputPane = () => {
3320
- isInputPaneActive.value = false;
3321
- isOutputPaneActive.value = true;
3322
- };
3323
- const onSearch = (search) => {
3324
- isPairedItemHoveringEnabled.value = !search;
3325
- };
3326
- const registerKeyboardListener = () => {
3327
- document.addEventListener("keydown", onKeyDown, true);
3328
- };
3329
- const unregisterKeyboardListener = () => {
3330
- document.removeEventListener("keydown", onKeyDown, true);
3331
- };
3332
- const setSelectedInput = (value) => {
3333
- selectedInput.value = value;
3334
- };
3335
- const handleChangeDisplayMode = (pane, mode) => {
3336
- ndvStore.setPanelDisplayMode({ pane, mode });
3337
- };
3338
- watch(
3339
- activeNode,
3340
- (node2, oldNode) => {
3341
- if (node2 && !oldNode) {
3342
- registerKeyboardListener();
3343
- } else if (!node2) {
3344
- unregisterKeyboardListener();
3345
- }
3346
- if (node2 && node2.name !== oldNode?.name && !isActiveStickyNode.value) {
3347
- runInputIndex.value = -1;
3348
- ndvStore.setOutputRunIndex(-1);
3349
- isLinkingEnabled.value = true;
3350
- selectedInput.value = void 0;
3351
- triggerWaitingWarningEnabled.value = false;
3352
- avgOutputRowHeight.value = 0;
3353
- avgInputRowHeight.value = 0;
3354
- setTimeout(() => ndvStore.setNDVPushRef(), 0);
3355
- if (!activeNodeType.value) {
3356
- return;
3357
- }
3358
- void externalHooks.run("dataDisplay.nodeTypeChanged", {
3359
- nodeSubtitle: nodeHelpers.getNodeSubtitle(node2, activeNodeType.value, props.workflowObject)
3360
- });
3361
- setTimeout(() => {
3362
- if (activeNode.value) {
3363
- const outgoingConnections = workflowsStore.outgoingConnectionsByNodeName(
3364
- activeNode.value?.name
3365
- );
3366
- telemetry.track("User opened node modal", {
3367
- node_id: activeNode.value?.id,
3368
- node_type: activeNodeType.value ? activeNodeType.value?.name : "",
3369
- workflow_id: workflowsStore.workflowId,
3370
- push_ref: pushRef.value,
3371
- is_editable: !hasForeignCredential.value,
3372
- parameters_pane_position: mainPanelPosition.value,
3373
- input_first_connector_runs: maxInputRun.value,
3374
- output_first_connector_runs: maxOutputRun.value,
3375
- selected_view_inputs: isTriggerNode.value ? "trigger" : inputPanelDisplayMode.value,
3376
- selected_view_outputs: outputPanelDisplayMode.value,
3377
- input_connectors: parentNodes.value.length,
3378
- output_connectors: outgoingConnections?.main?.length,
3379
- input_displayed_run_index: inputRun.value,
3380
- output_displayed_run_index: outputRun.value,
3381
- data_pinning_tooltip_presented: pinDataDiscoveryTooltipVisible.value,
3382
- input_displayed_row_height_avg: avgInputRowHeight.value,
3383
- output_displayed_row_height_avg: avgOutputRowHeight.value
3384
- });
3385
- }
3386
- }, 2e3);
3387
- }
3388
- if (window.top && !isActiveStickyNode.value) {
3389
- window.top.postMessage(JSON.stringify({ command: node2 ? "openNDV" : "closeNDV" }), "*");
3390
- }
3391
- },
3392
- { immediate: true }
3393
- );
3394
- watch(maxOutputRun, () => {
3395
- ndvStore.setOutputRunIndex(-1);
3396
- });
3397
- watch(maxInputRun, () => {
3398
- runInputIndex.value = -1;
3399
- });
3400
- watch(inputNodeName, (nodeName) => {
3401
- setTimeout(() => {
3402
- ndvStore.setInputNodeName(nodeName);
3403
- }, 0);
3404
- });
3405
- watch(inputRun, (inputRun2) => {
3406
- setTimeout(() => {
3407
- ndvStore.setInputRunIndex(inputRun2);
3408
- }, 0);
3409
- });
3410
- onMounted(() => {
3411
- dataPinningEventBus.on("data-pinning-discovery", setIsTooltipVisible);
3412
- ndvEventBus.on("updateInputNodeName", setSelectedInput);
3413
- });
3414
- onBeforeUnmount(() => {
3415
- dataPinningEventBus.off("data-pinning-discovery", setIsTooltipVisible);
3416
- ndvEventBus.off("updateInputNodeName", setSelectedInput);
3417
- unregisterKeyboardListener();
3418
- });
3419
- return (_ctx, _cache) => {
3420
- const _component_n8n_icon = N8nIcon;
3421
- const _component_n8n_text = N8nText;
3422
- const _component_n8n_tooltip = N8nTooltip;
3423
- const _component_font_awesome_icon = resolveComponent("font-awesome-icon");
3424
- const _component_el_dialog = resolveComponent("el-dialog");
3425
- return openBlock(), createBlock(_component_el_dialog, {
3426
- id: "ndv",
3427
- "model-value": (!!unref(activeNode) || _ctx.renaming) && !isActiveStickyNode.value,
3428
- "before-close": close,
3429
- "show-close": false,
3430
- class: "data-display-wrapper ndv-wrapper",
3431
- "overlay-class": "data-display-overlay",
3432
- width: "auto",
3433
- "append-to": `#${unref(APP_MODALS_ELEMENT_ID)}`,
3434
- "data-test-id": "ndv",
3435
- "z-index": unref(APP_Z_INDEXES).NDV,
3436
- "data-has-output-connection": hasOutputConnection.value
3437
- }, {
3438
- default: withCtx(() => [
3439
- createVNode(_component_n8n_tooltip, {
3440
- placement: "bottom-start",
3441
- visible: showTriggerWaitingWarning.value,
3442
- disabled: !showTriggerWaitingWarning.value
3443
- }, {
3444
- content: withCtx(() => [
3445
- createBaseVNode("div", {
3446
- class: normalizeClass(_ctx.$style.triggerWarning)
3447
- }, toDisplayString(unref(i18n).baseText("ndv.backToCanvas.waitingForTriggerWarning")), 3)
3448
- ]),
3449
- default: withCtx(() => [
3450
- createBaseVNode("div", {
3451
- class: normalizeClass(_ctx.$style.backToCanvas),
3452
- "data-test-id": "back-to-canvas",
3453
- onClick: close
3454
- }, [
3455
- createVNode(_component_n8n_icon, {
3456
- icon: "arrow-left",
3457
- color: "text-xlight",
3458
- size: "medium"
3459
- }),
3460
- createVNode(_component_n8n_text, {
3461
- color: "text-xlight",
3462
- size: "medium",
3463
- bold: true
3464
- }, {
3465
- default: withCtx(() => [
3466
- createTextVNode(toDisplayString(unref(i18n).baseText("ndv.backToCanvas")), 1)
3467
- ]),
3468
- _: 1
3469
- })
3470
- ], 2)
3471
- ]),
3472
- _: 1
3473
- }, 8, ["visible", "disabled"]),
3474
- unref(activeNode) ? (openBlock(), createElementBlock("div", _hoisted_1, [
3475
- createBaseVNode("div", {
3476
- class: normalizeClass(_ctx.$style.modalBackground),
3477
- onClick: close
3478
- }, null, 2),
3479
- (openBlock(), createBlock(NDVDraggablePanels, {
3480
- key: unref(activeNode).name,
3481
- "is-trigger-node": isTriggerNode.value,
3482
- "hide-input-and-output": activeNodeType.value === null,
3483
- position: isTriggerNode.value && !showTriggerPanel.value ? 0 : void 0,
3484
- "is-draggable": !isTriggerNode.value,
3485
- "has-double-width": activeNodeType.value?.parameterPane === "wide",
3486
- "node-type": activeNodeType.value,
3487
- onSwitchSelectedNode,
3488
- onOpenConnectionNodeCreator,
3489
- onClose: close,
3490
- onInit: onPanelsInit,
3491
- onDragstart: onDragStart,
3492
- onDragend: onDragEnd
3493
- }, createSlots({
3494
- output: withCtx(() => [
3495
- createVNode(OutputPanel, {
3496
- "data-test-id": "output-panel",
3497
- workflow: _ctx.workflowObject,
3498
- "can-link-runs": canLinkRuns.value,
3499
- "run-index": outputRun.value,
3500
- "linked-runs": linked.value,
3501
- "push-ref": pushRef.value,
3502
- "is-read-only": _ctx.readOnly || hasForeignCredential.value,
3503
- "block-u-i": blockUi.value && isTriggerNode.value && !isExecutableTriggerNode.value,
3504
- "is-production-execution-preview": _ctx.isProductionExecutionPreview,
3505
- "is-pane-active": isOutputPaneActive.value,
3506
- "display-mode": outputPanelDisplayMode.value,
3507
- onActivatePane: activateOutputPane,
3508
- onLinkRun: onLinkRunToOutput,
3509
- onUnlinkRun: _cache[2] || (_cache[2] = () => onUnlinkRun("output")),
3510
- onRunChange: onRunOutputIndexChange,
3511
- onOpenSettings: openSettings,
3512
- onTableMounted: onOutputTableMounted,
3513
- onItemHover: onOutputItemHover,
3514
- onSearch,
3515
- onDisplayModeChange: _cache[3] || (_cache[3] = ($event) => handleChangeDisplayMode("output", $event))
3516
- }, null, 8, ["workflow", "can-link-runs", "run-index", "linked-runs", "push-ref", "is-read-only", "block-u-i", "is-production-execution-preview", "is-pane-active", "display-mode"])
3517
- ]),
3518
- main: withCtx(() => [
3519
- createVNode(NodeSettings, {
3520
- "event-bus": unref(settingsEventBus),
3521
- dragging: isDragging.value,
3522
- "push-ref": pushRef.value,
3523
- "node-type": activeNodeType.value,
3524
- "foreign-credentials": foreignCredentials.value,
3525
- "read-only": _ctx.readOnly,
3526
- "block-u-i": blockUi.value && showTriggerPanel.value,
3527
- executable: !_ctx.readOnly,
3528
- "input-size": inputSize.value,
3529
- onValueChanged: valueChanged,
3530
- onExecute: onNodeExecute,
3531
- onStopExecution,
3532
- onRedrawRequired: _cache[4] || (_cache[4] = ($event) => redrawRequired.value = true),
3533
- onActivate: onWorkflowActivate,
3534
- onSwitchSelectedNode,
3535
- onOpenConnectionNodeCreator
3536
- }, null, 8, ["event-bus", "dragging", "push-ref", "node-type", "foreign-credentials", "read-only", "block-u-i", "executable", "input-size"]),
3537
- featureRequestUrl.value ? (openBlock(), createElementBlock("a", {
3538
- key: 0,
3539
- class: normalizeClass(_ctx.$style.featureRequest),
3540
- target: "_blank",
3541
- onClick: onFeatureRequestClick
3542
- }, [
3543
- createVNode(_component_font_awesome_icon, { icon: "lightbulb" }),
3544
- createTextVNode(" " + toDisplayString(unref(i18n).baseText("ndv.featureRequest")), 1)
3545
- ], 2)) : createCommentVNode("", true)
3546
- ]),
3547
- _: 2
3548
- }, [
3549
- showTriggerPanel.value || !isTriggerNode.value ? {
3550
- name: "input",
3551
- fn: withCtx(() => [
3552
- showTriggerPanel.value ? (openBlock(), createBlock(TriggerPanel, {
3553
- key: 0,
3554
- "node-name": unref(activeNode).name,
3555
- "push-ref": pushRef.value,
3556
- onExecute: onNodeExecute,
3557
- onActivate: onWorkflowActivate
3558
- }, null, 8, ["node-name", "push-ref"])) : !isTriggerNode.value ? (openBlock(), createBlock(InputPanel, {
3559
- key: 1,
3560
- workflow: _ctx.workflowObject,
3561
- "can-link-runs": canLinkRuns.value,
3562
- "run-index": inputRun.value,
3563
- "linked-runs": linked.value,
3564
- "current-node-name": inputNodeName.value,
3565
- "push-ref": pushRef.value,
3566
- "read-only": _ctx.readOnly || hasForeignCredential.value,
3567
- "is-production-execution-preview": _ctx.isProductionExecutionPreview,
3568
- "is-pane-active": isInputPaneActive.value,
3569
- "display-mode": inputPanelDisplayMode.value,
3570
- onActivatePane: activateInputPane,
3571
- onLinkRun: onLinkRunToInput,
3572
- onUnlinkRun: _cache[0] || (_cache[0] = () => onUnlinkRun("input")),
3573
- onRunChange: onRunInputIndexChange,
3574
- onOpenSettings: openSettings,
3575
- onChangeInputNode: onInputNodeChange,
3576
- onExecute: onNodeExecute,
3577
- onTableMounted: onInputTableMounted,
3578
- onItemHover: onInputItemHover,
3579
- onSearch,
3580
- onDisplayModeChange: _cache[1] || (_cache[1] = ($event) => handleChangeDisplayMode("input", $event))
3581
- }, null, 8, ["workflow", "can-link-runs", "run-index", "linked-runs", "current-node-name", "push-ref", "read-only", "is-production-execution-preview", "is-pane-active", "display-mode"])) : createCommentVNode("", true)
3582
- ]),
3583
- key: "0"
3584
- } : void 0
3585
- ]), 1032, ["is-trigger-node", "hide-input-and-output", "position", "is-draggable", "has-double-width", "node-type"]))
3586
- ], 512)) : createCommentVNode("", true)
3587
- ]),
3588
- _: 1
3589
- }, 8, ["model-value", "append-to", "z-index", "data-has-output-connection"]);
3590
- };
3591
- }
3592
- });
3593
- const modalBackground = "_modalBackground_176ah_123";
3594
- const triggerWarning = "_triggerWarning_176ah_128";
3595
- const backToCanvas = "_backToCanvas_176ah_132";
3596
- const featureRequest = "_featureRequest_176ah_153";
3597
- const style1 = {
3598
- modalBackground,
3599
- triggerWarning,
3600
- backToCanvas,
3601
- featureRequest
3602
- };
3603
2683
  const cssModules = {
3604
- "$style": style1
2684
+ "$style": style0
3605
2685
  };
3606
- const NodeDetailsView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__cssModules", cssModules]]);
2686
+ const TriggerPanel = /* @__PURE__ */ _export_sfc(_sfc_main, [["__cssModules", cssModules], ["__scopeId", "data-v-a321aff2"]]);
3607
2687
  export {
3608
- NodeDetailsView as default
2688
+ InputPanel as I,
2689
+ OutputPanel as O,
2690
+ TriggerPanel as T,
2691
+ __unplugin_components_0 as _
3609
2692
  };