n8n-editor-ui 1.94.0 → 1.95.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/dist/assets/{AnimatedSpinner-CY5xYI5m.js → AnimatedSpinner-C7XChHCR.js} +1 -1
  2. package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-BOrzkwPH.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-hnbYWvJ9.js} +1 -1
  3. package/dist/assets/{AuthView-BTzGYAnY.js → AuthView-DI6hxVD5.js} +2 -2
  4. package/dist/assets/{CanvasChatSwitch-CwpjFCL0.js → CanvasChatSwitch-DwsxMPyw.js} +8 -9
  5. package/dist/assets/{ChangePasswordView-BKR2UFVI.js → ChangePasswordView-Bw-pJefY.js} +3 -3
  6. package/dist/assets/CollectionParameter-CxVAlHz9.js +4 -0
  7. package/dist/assets/{CredentialsView-DVgxfnNi.js → CredentialsView-B5eidkPT.js} +7 -7
  8. package/dist/assets/{DemoFooter-C1T3Q0NX.js → DemoFooter-BgFAInaS.js} +6 -7
  9. package/dist/assets/{ErrorView-Cf2Yb8Ea.js → ErrorView-B0ThXusw.js} +1 -1
  10. package/dist/assets/EvaluationsRootView-B5AhHo41.css +594 -0
  11. package/dist/assets/EvaluationsRootView-Vvg-8rFP.js +654 -0
  12. package/dist/assets/{TestDefinitionListView-Di-Edppe.css → EvaluationsView-6l_Invxt.css} +193 -76
  13. package/dist/assets/EvaluationsView-B_ShnFaD.js +570 -0
  14. package/dist/assets/{ExecutionsTime.vue_vue_type_script_setup_true_lang-DUu0UMcW.js → ExecutionsTime.vue_vue_type_script_setup_true_lang-ipEAtgCN.js} +2 -2
  15. package/dist/assets/{ExecutionsView-DjNkfnDh.js → ExecutionsView-S10AS1y6.js} +8 -9
  16. package/dist/assets/{FileSaver.min-C1p9Eies.js → FileSaver.min-BlbZenql.js} +1 -1
  17. package/dist/assets/{FixedCollectionParameter-DN_uJhpe.js → FixedCollectionParameter-DJJCgWpe.js} +1 -1
  18. package/dist/assets/{ForgotMyPasswordView-BMQBDIrq.js → ForgotMyPasswordView-CjhwZfLO.js} +3 -3
  19. package/dist/assets/{InsightsChartAverageRuntime-JzBkV6Rc.js → InsightsChartAverageRuntime-tUrH-I32.js} +4 -4
  20. package/dist/assets/{InsightsChartFailed-DMD3c7zM.js → InsightsChartFailed-Cjqry_WC.js} +4 -4
  21. package/dist/assets/{InsightsChartFailureRate-D_qeZo4f.js → InsightsChartFailureRate-aSk9cbfn.js} +4 -4
  22. package/dist/assets/{InsightsChartTimeSaved-Cw2T-Wvp.js → InsightsChartTimeSaved-a0ZHJvOs.js} +4 -4
  23. package/dist/assets/{InsightsChartTotal-DlF47gob.js → InsightsChartTotal-DnhgdxU2.js} +4 -4
  24. package/dist/assets/{InsightsDashboard-CxQ9H296.js → InsightsDashboard-DiHqZN8B.js} +13 -10
  25. package/dist/assets/{InsightsPaywall-hRkAfeHz.js → InsightsPaywall-98yScNiU.js} +1 -1
  26. package/dist/assets/{InsightsSummary-BcXd-3nU.js → InsightsSummary-DIq0mVug.js} +1 -1
  27. package/dist/assets/{InsightsTableWorkflows-ybloXdDn.js → InsightsTableWorkflows-BAR1Wiln.js} +2 -2
  28. package/dist/assets/{Logo-BGe7-2Vd.js → Logo-6AQBTlBb.js} +1 -1
  29. package/dist/assets/{LogsPanel-DtTp6kY0.js → LogsPanel-D-jBkyS0.js} +138 -36
  30. package/dist/assets/{LogsPanel-mTaFEGk_.css → LogsPanel-D7j-yJQx.css} +14 -14
  31. package/dist/assets/{MainHeader-h2DV-VuD.js → MainHeader-B-GwOSVC.js} +31 -21
  32. package/dist/assets/{MainSidebar-AAHHRXFA.js → MainSidebar-CvFovOwL.js} +2 -2
  33. package/dist/assets/{NodeCreation-nHiG-Lhi.js → NodeCreation-CRZ7WbTX.js} +3 -3
  34. package/dist/assets/{NodeCreator-D18StsVZ.css → NodeCreator-Cp8Apzva.css} +38 -21
  35. package/dist/assets/{NodeCreator-weAzsmlU.js → NodeCreator-oaREpBCo.js} +174 -68
  36. package/dist/assets/{NodeDetailsView-BsXbcyfb.js → NodeDetailsView-BaZ1Iy38.js} +32 -18
  37. package/dist/assets/{NodeDetailsView-DpO8nTmN.css → NodeDetailsView-BtWGMS7Y.css} +16 -16
  38. package/dist/assets/{useCanvasMapping-CvcOHj5p.js → NodeView-5lAgMUUI.js} +3660 -11463
  39. package/dist/assets/{useCanvasMapping-CFf4cwnq.css → NodeView-U4YkXSfU.css} +307 -4
  40. package/dist/assets/{ProjectCardBadge-3xpk5Z4e.js → ProjectCardBadge-Em1ZNNrM.js} +1 -1
  41. package/dist/assets/{ProjectHeader-CpoOisjf.js → ProjectHeader-_lN7pyVn.js} +2 -2
  42. package/dist/assets/{ProjectSettings-B__3XaPY.js → ProjectSettings-CJGl9Y79.js} +4 -3
  43. package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-DaoPdG_5.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-iedwMPAo.js} +1 -1
  44. package/dist/assets/{ResourcesListLayout-DAxou314.js → ResourcesListLayout-BWMVuu8k.js} +2 -2
  45. package/dist/assets/{RunData-fnd-jejc.js → RunData-C_A8RvJy.js} +22 -21
  46. package/dist/assets/{RunDataAi-Ck3VGKP_.js → RunDataAi-jmrQhuDM.js} +3 -3
  47. package/dist/assets/{RunDataJson-B80Z4URL.js → RunDataJson-BW4_izq5.js} +6 -7
  48. package/dist/assets/{RunDataJsonActions-CdZi1Qul.js → RunDataJsonActions-CBx8X3VX.js} +1 -1
  49. package/dist/assets/{RunDataParsedAiContent-BczxQ63H.js → RunDataParsedAiContent-CqC8oCIw.js} +4 -5
  50. package/dist/assets/{RunDataSearch-C4KmCz4c.js → RunDataSearch-C3G6iIIO.js} +1 -1
  51. package/dist/assets/{RunDataTable-CsLCZIWp.js → RunDataTable-D0XGBIHv.js} +2 -3
  52. package/dist/assets/{SamlOnboarding-DkhjCrPa.js → SamlOnboarding-DRR0XpSK.js} +3 -3
  53. package/dist/assets/{SettingsApiView-Ci2-rEpm.js → SettingsApiView-DqW4dOkv.js} +1 -1
  54. package/dist/assets/{SettingsCommunityNodesView-_UOppuqS.js → SettingsCommunityNodesView-7Z0JUVA1.js} +4 -4
  55. package/dist/assets/{SettingsExternalSecrets-DHIkKr53.js → SettingsExternalSecrets-KiEdsTm3.js} +1 -1
  56. package/dist/assets/{SettingsLdapView-B8ezgdqP.js → SettingsLdapView-BwDJdGQF.js} +1 -1
  57. package/dist/assets/{SettingsLogStreamingView-YP6Xy7Fe.js → SettingsLogStreamingView-DvNRfV-g.js} +1 -1
  58. package/dist/assets/{SettingsPersonalView-BmbFyWPb.js → SettingsPersonalView-Cj-J26NG.js} +1 -1
  59. package/dist/assets/{SettingsSourceControl-DwaOdDke.js → SettingsSourceControl-Cs61TSRq.js} +1 -1
  60. package/dist/assets/{SettingsSso-DOC-P2wt.js → SettingsSso-CTlGkK79.js} +1 -1
  61. package/dist/assets/{SettingsUsageAndPlan-DVOLlEkG.js → SettingsUsageAndPlan-M4ipqx3B.js} +1 -1
  62. package/dist/assets/{SettingsUsersView-CN_KLeIm.js → SettingsUsersView-DWs-wd9A.js} +1 -1
  63. package/dist/assets/{SettingsView-DiAhLyco.js → SettingsView-CkuND22R.js} +1 -1
  64. package/dist/assets/{SetupView-OE_yCNOU.js → SetupView-DIU2_rWZ.js} +3 -3
  65. package/dist/assets/{SetupWorkflowCredentialsButton-Dx1IkZgW.js → SetupWorkflowCredentialsButton-DwkreJJY.js} +1 -1
  66. package/dist/assets/{SetupWorkflowFromTemplateView-lQXKgIuL.js → SetupWorkflowFromTemplateView-BJmGqoxp.js} +3 -3
  67. package/dist/assets/{SigninView-BWSrzbF7.js → SigninView-NMS3wbG-.js} +3 -3
  68. package/dist/assets/{SignoutView-DxGgFxt2.js → SignoutView-BzLd-IiP.js} +1 -1
  69. package/dist/assets/{SignupView-Dtu5bMqF.js → SignupView-COZDec3x.js} +3 -3
  70. package/dist/assets/{TemplateDetails-CQ7TYqsP.js → TemplateDetails-v_Glqzt0.js} +1 -1
  71. package/dist/assets/{TemplateList-Cxmv-0p-.js → TemplateList-B_Kni3PE.js} +1 -1
  72. package/dist/assets/{TemplatesCollectionView-xvV6FXib.js → TemplatesCollectionView-CMT0A-6p.js} +5 -5
  73. package/dist/assets/{TemplatesSearchView-CsECyZ52.js → TemplatesSearchView-dfNK7CWa.js} +3 -3
  74. package/dist/assets/{TemplatesView-DrEKpZTU.js → TemplatesView-DXyn7U2M.js} +1 -1
  75. package/dist/assets/{TemplatesWorkflowView-iSAL_yol.js → TemplatesWorkflowView-9cBdvyd1.js} +5 -5
  76. package/dist/assets/{VariablesView-Cg2WSt_e.js → VariablesView-B9WeYs-d.js} +4 -4
  77. package/dist/assets/{WorkerView-BG-Dl0Ej.js → WorkerView-DmvHtNCS.js} +6 -6
  78. package/dist/assets/{WorkflowActivator-e7wvW1kJ.js → WorkflowActivator-D4OM7fjl.js} +2 -2
  79. package/dist/assets/{WorkflowExecutionsInfoAccordion-CijtfO0l.js → WorkflowExecutionsInfoAccordion-BXH-hb8c.js} +1 -1
  80. package/dist/assets/{WorkflowExecutionsLandingPage-Do4y1yOx.js → WorkflowExecutionsLandingPage-CWWhEKSp.js} +2 -2
  81. package/dist/assets/{WorkflowExecutionsPreview-Bqo_3PXl.js → WorkflowExecutionsPreview-lGe7hKTt.js} +5 -6
  82. package/dist/assets/{WorkflowExecutionsView-C1gS45nc.js → WorkflowExecutionsView-CZSMq51O.js} +7 -8
  83. package/dist/assets/{WorkflowHistory-CypQw7rC.js → WorkflowHistory-Bkb5WnFH.js} +3 -3
  84. package/dist/assets/{WorkflowOnboardingView-DoKXpaNj.js → WorkflowOnboardingView-BoYRDB5G.js} +1 -1
  85. package/dist/assets/{WorkflowPreview-Bxs5XzBX.js → WorkflowPreview-BqNWSWJE.js} +1 -1
  86. package/dist/assets/{WorkflowsView-BlvgD3xI.js → WorkflowsView-CJ4-dp41.js} +9 -9
  87. package/dist/assets/{useClearExecutionButtonVisible-DFNEJves.js → canvas-gKzWhb0Y.js} +3 -1
  88. package/dist/assets/{chartjs.utils-CuWcgqCr.js → chartjs.utils-DfYWcl4K.js} +2 -2
  89. package/dist/assets/{easyAiWorkflowUtils-_kvYb5hw.js → easyAiWorkflowUtils-DNC35Yh8.js} +1 -1
  90. package/dist/assets/{global-link-actions-DG0SjhQE.js → global-link-actions-CBCpMeA-.js} +1 -1
  91. package/dist/assets/{import-curl-DQ6uPzZ1.js → import-curl-NOPKm_UJ.js} +1 -1
  92. package/dist/assets/{index-vIybYvt3.js → index-CfI0yNPt.js} +1 -1
  93. package/dist/assets/{index-BA8d2DN9.css → index-DH8MNLw5.css} +123 -70
  94. package/dist/assets/{index-hdsPF3tl.js → index-_seQOCga.js} +16506 -7041
  95. package/dist/assets/{pickBy-DmKUpB7M.js → pickBy-BipOMYIO.js} +1 -1
  96. package/dist/assets/{templateActions-DxoxchKp.js → templateActions-BipqYROS.js} +1 -1
  97. package/dist/assets/{typescript.worker-B1loTpxy.js → typescript.worker-DIrCbxuR.js} +1 -1
  98. package/dist/assets/{useBeforeUnload-B7JAQiE8.js → useBeforeUnload-CBJ-oI0x.js} +1 -1
  99. package/dist/assets/{useExecutionDebugging-DsRIfE0y.js → useExecutionDebugging-FBVDw81R.js} +1 -1
  100. package/dist/assets/{useExecutionHelpers-CEOL8_vt.js → useExecutionHelpers-DcOjWXOv.js} +1 -2
  101. package/dist/assets/{useImportCurlCommand-DdIN4YaF.js → useImportCurlCommand-C6NaXuCs.js} +2 -2
  102. package/dist/assets/{useProjectPages-OGc-GAxb.js → useProjectPages-BhWlcOUt.js} +1 -1
  103. package/dist/assets/{usePushConnection-DNGIaS0A.js → usePushConnection-BWaG_Tvn.js} +22 -3
  104. package/dist/assets/{useWorkflowActivate-CJ1hLmv2.js → useWorkflowActivate-DmQcpwus.js} +1 -1
  105. package/dist/assets/{useWorkflowSaving-BuokdhTC.js → useWorkflowSaving-rE0yQ7bi.js} +1 -1
  106. package/dist/index.html +2 -2
  107. package/package.json +1 -1
  108. package/dist/assets/CollectionParameter-BJtiV9En.js +0 -4
  109. package/dist/assets/NodeView-BY1O3wWl.js +0 -1762
  110. package/dist/assets/NodeView-C3A-bM1O.css +0 -304
  111. package/dist/assets/TestDefinitionEditView-C3ohfu_r.js +0 -1463
  112. package/dist/assets/TestDefinitionEditView-Cwkrz308.css +0 -1189
  113. package/dist/assets/TestDefinitionListView-Dwto0jxH.js +0 -631
  114. package/dist/assets/TestDefinitionNewView-9xVUm2ZJ.js +0 -75
  115. package/dist/assets/TestDefinitionRootView-DFT60fWE.css +0 -126
  116. package/dist/assets/TestDefinitionRootView-DLurQ4xl.js +0 -39
  117. package/dist/assets/dateFormatter-LbucaaRt.js +0 -21
  118. package/dist/assets/useTestDefinitionForm-Bi6EgFVm.js +0 -154
@@ -1,7 +1,7 @@
1
- import { d as defineComponent, q as computed, hz as GRANULARITY_DATE_FORMAT_MASK, c as useI18n, e as createBlock, g as openBlock, m as unref, hD as index, hE as transformInsightsTimeSaved, hC as INSIGHTS_UNIT_MAPPING } from "./index-hdsPF3tl.js";
2
- import { a as generateLineChartOptions, b as generateLinearGradient } from "./chartjs.utils-CuWcgqCr.js";
3
- import { L as Line } from "./index-vIybYvt3.js";
4
- import "./InsightsSummary-BcXd-3nU.js";
1
+ import { d as defineComponent, q as computed, hK as GRANULARITY_DATE_FORMAT_MASK, c as useI18n, e as createBlock, g as openBlock, m as unref, hO as index, hP as transformInsightsTimeSaved, hN as INSIGHTS_UNIT_MAPPING } from "./index-_seQOCga.js";
2
+ import { a as generateLineChartOptions, b as generateLinearGradient } from "./chartjs.utils-DfYWcl4K.js";
3
+ import { L as Line } from "./index-CfI0yNPt.js";
4
+ import "./InsightsSummary-DIq0mVug.js";
5
5
  const _sfc_main = /* @__PURE__ */ defineComponent({
6
6
  __name: "InsightsChartTimeSaved",
7
7
  props: {
@@ -1,7 +1,7 @@
1
- import { d as defineComponent, fS as useCssVar, q as computed, hz as GRANULARITY_DATE_FORMAT_MASK, c as useI18n, e as createBlock, g as openBlock, m as unref } from "./index-hdsPF3tl.js";
2
- import { g as generateBarChartOptions } from "./chartjs.utils-CuWcgqCr.js";
3
- import { B as Bar } from "./index-vIybYvt3.js";
4
- import "./InsightsSummary-BcXd-3nU.js";
1
+ import { d as defineComponent, f_ as useCssVar, q as computed, hK as GRANULARITY_DATE_FORMAT_MASK, c as useI18n, e as createBlock, g as openBlock, m as unref } from "./index-_seQOCga.js";
2
+ import { g as generateBarChartOptions } from "./chartjs.utils-DfYWcl4K.js";
3
+ import { B as Bar } from "./index-CfI0yNPt.js";
4
+ import "./InsightsSummary-DIq0mVug.js";
5
5
  const _sfc_main = /* @__PURE__ */ defineComponent({
6
6
  __name: "InsightsChartTotal",
7
7
  props: {
@@ -1,6 +1,6 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/InsightsPaywall-hRkAfeHz.js","assets/index-hdsPF3tl.js","assets/index-BA8d2DN9.css","assets/InsightsPaywall-CE5W3W4m.css","assets/InsightsChartTotal-DlF47gob.js","assets/chartjs.utils-CuWcgqCr.js","assets/InsightsSummary-BcXd-3nU.js","assets/InsightsSummary-DzGQpM5h.css","assets/index-vIybYvt3.js","assets/InsightsChartFailed-DMD3c7zM.js","assets/InsightsChartFailureRate-D_qeZo4f.js","assets/InsightsChartTimeSaved-Cw2T-Wvp.js","assets/InsightsChartAverageRuntime-JzBkV6Rc.js","assets/InsightsTableWorkflows-ybloXdDn.js","assets/InsightsTableWorkflows-DfTZQkWL.css"])))=>i.map(i=>d[i]);
2
- import { d as defineComponent, f4 as useModel, g0 as useInsightsStore, r as ref, gl as UNLICENSED_TIME_RANGE, g7 as TIME_RANGE_LABELS, e as createBlock, g as openBlock, w as withCtx, i as createElementBlock, F as Fragment, D as renderList, m as unref, em as _sfc_main$3, l as createTextVNode, f as createCommentVNode, t as toDisplayString, k as createBaseVNode, en as N8nSelect, q as computed, c as useI18n, j as createVNode, bf as N8nText, bh as N8nButton, gm as ElDialog, a6 as usePageRedirectionHelper, _ as _export_sfc, ca as defineAsyncComponent, X as watch, h as resolveComponent, n as normalizeClass, b7 as resolveDynamicComponent, ao as __vitePreload, ag as useTelemetry, gn as TELEMETRY_TIME_RANGE } from "./index-hdsPF3tl.js";
3
- import { I as InsightsSummary } from "./InsightsSummary-BcXd-3nU.js";
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/InsightsPaywall-98yScNiU.js","assets/index-_seQOCga.js","assets/index-DH8MNLw5.css","assets/InsightsPaywall-CE5W3W4m.css","assets/InsightsChartTotal-DnhgdxU2.js","assets/chartjs.utils-DfYWcl4K.js","assets/InsightsSummary-DIq0mVug.js","assets/InsightsSummary-DzGQpM5h.css","assets/index-CfI0yNPt.js","assets/InsightsChartFailed-Cjqry_WC.js","assets/InsightsChartFailureRate-aSk9cbfn.js","assets/InsightsChartTimeSaved-a0ZHJvOs.js","assets/InsightsChartAverageRuntime-tUrH-I32.js","assets/InsightsTableWorkflows-BAR1Wiln.js","assets/InsightsTableWorkflows-DfTZQkWL.css"])))=>i.map(i=>d[i]);
2
+ import { d as defineComponent, cu as useModel, ga as useInsightsStore, r as ref, gw as UNLICENSED_TIME_RANGE, gi as TIME_RANGE_LABELS, e as createBlock, g as openBlock, w as withCtx, i as createElementBlock, F as Fragment, D as renderList, m as unref, fn as _sfc_main$3, l as createTextVNode, f as createCommentVNode, t as toDisplayString, k as createBaseVNode, fo as N8nSelect, q as computed, c as useI18n, j as createVNode, bf as N8nText, bh as N8nButton, gx as ElDialog, a6 as usePageRedirectionHelper, _ as _export_sfc, dj as defineAsyncComponent, X as watch, o as onMounted, a4 as useDocumentTitle, h as resolveComponent, n as normalizeClass, b7 as resolveDynamicComponent, ao as __vitePreload, ag as useTelemetry, gy as TELEMETRY_TIME_RANGE } from "./index-_seQOCga.js";
3
+ import { I as InsightsSummary } from "./InsightsSummary-DIq0mVug.js";
4
4
  const _hoisted_1$2 = {
5
5
  key: 0,
6
6
  width: "16",
@@ -174,25 +174,25 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
174
174
  },
175
175
  setup(__props) {
176
176
  const InsightsPaywall = defineAsyncComponent(
177
- async () => await __vitePreload(() => import("./InsightsPaywall-hRkAfeHz.js"), true ? __vite__mapDeps([0,1,2,3]) : void 0)
177
+ async () => await __vitePreload(() => import("./InsightsPaywall-98yScNiU.js"), true ? __vite__mapDeps([0,1,2,3]) : void 0)
178
178
  );
179
179
  const InsightsChartTotal = defineAsyncComponent(
180
- async () => await __vitePreload(() => import("./InsightsChartTotal-DlF47gob.js"), true ? __vite__mapDeps([4,1,2,5,6,7,8]) : void 0)
180
+ async () => await __vitePreload(() => import("./InsightsChartTotal-DnhgdxU2.js"), true ? __vite__mapDeps([4,1,2,5,6,7,8]) : void 0)
181
181
  );
182
182
  const InsightsChartFailed = defineAsyncComponent(
183
- async () => await __vitePreload(() => import("./InsightsChartFailed-DMD3c7zM.js"), true ? __vite__mapDeps([9,1,2,5,6,7,8]) : void 0)
183
+ async () => await __vitePreload(() => import("./InsightsChartFailed-Cjqry_WC.js"), true ? __vite__mapDeps([9,1,2,5,6,7,8]) : void 0)
184
184
  );
185
185
  const InsightsChartFailureRate = defineAsyncComponent(
186
- async () => await __vitePreload(() => import("./InsightsChartFailureRate-D_qeZo4f.js"), true ? __vite__mapDeps([10,1,2,5,6,7,8]) : void 0)
186
+ async () => await __vitePreload(() => import("./InsightsChartFailureRate-aSk9cbfn.js"), true ? __vite__mapDeps([10,1,2,5,6,7,8]) : void 0)
187
187
  );
188
188
  const InsightsChartTimeSaved = defineAsyncComponent(
189
- async () => await __vitePreload(() => import("./InsightsChartTimeSaved-Cw2T-Wvp.js"), true ? __vite__mapDeps([11,1,2,5,6,7,8]) : void 0)
189
+ async () => await __vitePreload(() => import("./InsightsChartTimeSaved-a0ZHJvOs.js"), true ? __vite__mapDeps([11,1,2,5,6,7,8]) : void 0)
190
190
  );
191
191
  const InsightsChartAverageRuntime = defineAsyncComponent(
192
- async () => await __vitePreload(() => import("./InsightsChartAverageRuntime-JzBkV6Rc.js"), true ? __vite__mapDeps([12,1,2,5,6,7,8]) : void 0)
192
+ async () => await __vitePreload(() => import("./InsightsChartAverageRuntime-tUrH-I32.js"), true ? __vite__mapDeps([12,1,2,5,6,7,8]) : void 0)
193
193
  );
194
194
  const InsightsTableWorkflows = defineAsyncComponent(
195
- async () => await __vitePreload(() => import("./InsightsTableWorkflows-ybloXdDn.js"), true ? __vite__mapDeps([13,1,2,6,7,14]) : void 0)
195
+ async () => await __vitePreload(() => import("./InsightsTableWorkflows-BAR1Wiln.js"), true ? __vite__mapDeps([13,1,2,6,7,14]) : void 0)
196
196
  );
197
197
  const props = __props;
198
198
  const i18n = useI18n();
@@ -256,6 +256,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
256
256
  immediate: true
257
257
  }
258
258
  );
259
+ onMounted(() => {
260
+ useDocumentTitle().set(i18n.baseText("insights.heading"));
261
+ });
259
262
  return (_ctx, _cache) => {
260
263
  const _component_N8nHeading = resolveComponent("N8nHeading");
261
264
  const _component_N8nSpinner = resolveComponent("N8nSpinner");
@@ -1,4 +1,4 @@
1
- import { d as defineComponent, a6 as usePageRedirectionHelper, h as resolveComponent, i as createElementBlock, g as openBlock, j as createVNode, w as withCtx, l as createTextVNode, t as toDisplayString, m as unref, c as useI18n, n as normalizeClass, _ as _export_sfc } from "./index-hdsPF3tl.js";
1
+ import { d as defineComponent, a6 as usePageRedirectionHelper, h as resolveComponent, i as createElementBlock, g as openBlock, j as createVNode, w as withCtx, l as createTextVNode, t as toDisplayString, m as unref, c as useI18n, n as normalizeClass, _ as _export_sfc } from "./index-_seQOCga.js";
2
2
  const _sfc_main = /* @__PURE__ */ defineComponent({
3
3
  __name: "InsightsPaywall",
4
4
  setup(__props) {
@@ -1,4 +1,4 @@
1
- import { d as defineComponent, R as useRoute, Y as useCssModule, q as computed, c as useI18n, V as VIEWS, h as resolveComponent, i as createElementBlock, g as openBlock, k as createBaseVNode, F as Fragment, D as renderList, j as createVNode, w as withCtx, m as unref, l as createTextVNode, t as toDisplayString, n as normalizeClass, g7 as TIME_RANGE_LABELS, f as createCommentVNode, g8 as INSIGHT_IMPACT_TYPES, ag as useTelemetry, g9 as INSIGHTS_UNIT_IMPACT_MAPPING, _ as _export_sfc } from "./index-hdsPF3tl.js";
1
+ import { d as defineComponent, R as useRoute, Y as useCssModule, q as computed, c as useI18n, V as VIEWS, h as resolveComponent, i as createElementBlock, g as openBlock, k as createBaseVNode, F as Fragment, D as renderList, j as createVNode, w as withCtx, m as unref, l as createTextVNode, t as toDisplayString, n as normalizeClass, gi as TIME_RANGE_LABELS, f as createCommentVNode, gj as INSIGHT_IMPACT_TYPES, ag as useTelemetry, gk as INSIGHTS_UNIT_IMPACT_MAPPING, _ as _export_sfc } from "./index-_seQOCga.js";
2
2
  const smartDecimal = (value, decimals = 2) => {
3
3
  if (Number.isInteger(value)) {
4
4
  return value;
@@ -1,5 +1,5 @@
1
- import { d as defineComponent, f3 as mergeModels, q as computed, r as ref, c as useI18n, hB as transformInsightsFailureRate, hC as INSIGHTS_UNIT_MAPPING, hE as transformInsightsTimeSaved, hF as transformInsightsAverageRunTime, f4 as useModel, X as watch, h as resolveComponent, i as createElementBlock, g as openBlock, j as createVNode, w as withCtx, l as createTextVNode, e as createBlock, m as unref, aR as N8nTooltip, k as createBaseVNode, t as toDisplayString, F as Fragment, V as VIEWS, hG as N8nDataTableServer, ag as useTelemetry, _ as _export_sfc } from "./index-hdsPF3tl.js";
2
- import { s as smartDecimal } from "./InsightsSummary-BcXd-3nU.js";
1
+ import { d as defineComponent, ct as mergeModels, q as computed, r as ref, c as useI18n, hM as transformInsightsFailureRate, hN as INSIGHTS_UNIT_MAPPING, hP as transformInsightsTimeSaved, hQ as transformInsightsAverageRunTime, cu as useModel, X as watch, h as resolveComponent, i as createElementBlock, g as openBlock, j as createVNode, w as withCtx, l as createTextVNode, e as createBlock, m as unref, aR as N8nTooltip, k as createBaseVNode, t as toDisplayString, F as Fragment, V as VIEWS, hR as N8nDataTableServer, ag as useTelemetry, _ as _export_sfc } from "./index-_seQOCga.js";
2
+ import { s as smartDecimal } from "./InsightsSummary-DIq0mVug.js";
3
3
  const _hoisted_1 = { class: "ellipsis" };
4
4
  const _hoisted_2 = { class: "ellipsis" };
5
5
  const _sfc_main = /* @__PURE__ */ defineComponent({
@@ -1,4 +1,4 @@
1
- import { i as createElementBlock, g as openBlock, k as createBaseVNode, d as defineComponent, q as computed, Y as useCssModule, aZ as useTemplateRef, o as onMounted, dC as useFavicon, n as normalizeClass, j as createVNode, e as createBlock, f as createCommentVNode, x as renderSlot, m as unref, _ as _export_sfc } from "./index-hdsPF3tl.js";
1
+ import { i as createElementBlock, g as openBlock, k as createBaseVNode, d as defineComponent, q as computed, Y as useCssModule, aZ as useTemplateRef, o as onMounted, eE as useFavicon, n as normalizeClass, j as createVNode, e as createBlock, f as createCommentVNode, x as renderSlot, m as unref, _ as _export_sfc } from "./index-_seQOCga.js";
2
2
  const _hoisted_1$1 = {
3
3
  xmlns: "http://www.w3.org/2000/svg",
4
4
  width: "32",
@@ -1,7 +1,6 @@
1
- import { b1 as inject, b2 as isRef, i as createElementBlock, g as openBlock, k as createBaseVNode, d as defineComponent, q as computed, j as createVNode, e as createBlock, f as createCommentVNode, m as unref, t as toDisplayString, b3 as withModifiers, _ as _export_sfc, b4 as toRefs, r as ref, o as onMounted, n as normalizeClass, x as renderSlot, b5 as normalizeProps, b6 as guardReactiveProps, b7 as resolveDynamicComponent, b8 as mergeProps, F as Fragment, D as renderList, b9 as markdownLink, ba as useFileDialog, bb as chatEventBus, bc as onUnmounted, B as normalizeStyle, aA as withDirectives, bd as vModelText, be as withKeys, w as withCtx, X as watch, h as resolveComponent, l as createTextVNode, bf as N8nText, bg as useClipboard, a as useToast, p as useSettingsStore, c as useI18n$1, aR as N8nTooltip, bh as N8nButton, aT as _sfc_main$i, aV as createSlots, aJ as useStorage, a$ as watchEffect, y as onBeforeUnmount, G as useDebounce, bi as provide, bj as useProvideTooltipAppendTo, bk as IsInPiPWindowSymbol, bl as usePinnedData, ai as useMessage, aj as MODAL_CONFIRM, bm as v4, bn as getInputKey, bo as extractBotResponse, bp as isChatNode, bq as CHAIN_SUMMARIZATION_LANGCHAIN_NODE_TYPE, br as AI_SUBCATEGORY, bs as AI_CATEGORY_AGENTS, bt as AI_CATEGORY_CHAINS, bu as AI_CODE_NODE_TYPE, bv as getNodeInputs, bw as getConnectionTypes, bx as getNodeOutputs, by as NodeConnectionTypes, Q as useWorkflowsStore, bz as useNodeTypesStore, aY as useLogsStore, b as useRouter, bA as useNodeHelpers, bB as useRunWorkflow, bC as restoreChatHistory, V as VIEWS, aZ as useTemplateRef, bD as _sfc_main$k, bE as I18nT, bF as N8nIcon, bG as upperFirst, z as nextTick, bH as useVirtualList, bI as toRef, bJ as N8nRadioButtons, as as useNDVStore, aS as N8nLink, av as useLocalStorage, bK as LOG_DETAILS_PANEL_STATE, bL as KeyboardShortcutTooltip, b0 as N8nResizeWrapper, bM as useStyles, a_ as LOGS_PANEL_STATE, ag as useTelemetry, bN as Workflow, bO as useThrottleFn, bP as parse, bQ as ndvEventBus } from "./index-hdsPF3tl.js";
2
- import { u as useClearExecutionButtonVisible } from "./useClearExecutionButtonVisible-DFNEJves.js";
3
- import { H as HighlightJS, V as VueMarkdown, f as formatTokenUsageCount, _ as _sfc_main$j, g as getSubtreeTotalConsumedTokens, a as getTotalConsumedTokens, h as hasSubExecution, R as RunData, c as createLogTree, d as deepToRaw, m as mergeStartData, b as findSelectedLogEntry, e as getEntryAtRelativeIndex, i as getDepth, j as flattenLogEntries } from "./RunData-fnd-jejc.js";
4
- import { t as toTime, a as toDayMonth } from "./dateFormatter-LbucaaRt.js";
1
+ import { b1 as inject, b2 as isRef, i as createElementBlock, g as openBlock, k as createBaseVNode, d as defineComponent, q as computed, j as createVNode, e as createBlock, f as createCommentVNode, m as unref, t as toDisplayString, b3 as withModifiers, _ as _export_sfc, b4 as toRefs, r as ref, o as onMounted, n as normalizeClass, x as renderSlot, b5 as normalizeProps, b6 as guardReactiveProps, b7 as resolveDynamicComponent, b8 as mergeProps, F as Fragment, D as renderList, b9 as markdownLink, ba as useFileDialog, bb as chatEventBus, bc as onUnmounted, B as normalizeStyle, aA as withDirectives, bd as vModelText, be as withKeys, w as withCtx, X as watch, h as resolveComponent, l as createTextVNode, bf as N8nText, bg as useClipboard, a as useToast, p as useSettingsStore, c as useI18n$1, aR as N8nTooltip, bh as N8nButton, aT as _sfc_main$i, aV as createSlots, aJ as useStorage, a$ as watchEffect, y as onBeforeUnmount, G as useDebounce, bi as provide, bj as useProvideTooltipAppendTo, bk as IsInPiPWindowSymbol, bl as usePinnedData, ai as useMessage, aj as MODAL_CONFIRM, bm as v4, bn as getInputKey, bo as extractBotResponse, bp as isChatNode, bq as CHAIN_SUMMARIZATION_LANGCHAIN_NODE_TYPE, br as AI_SUBCATEGORY, bs as AI_CATEGORY_AGENTS, bt as AI_CATEGORY_CHAINS, bu as AI_CODE_NODE_TYPE, bv as getNodeInputs, bw as getConnectionTypes, bx as getNodeOutputs, by as NodeConnectionTypes, Q as useWorkflowsStore, bz as useNodeTypesStore, aY as useLogsStore, b as useRouter, bA as useNodeHelpers, bB as useRunWorkflow, bC as restoreChatHistory, V as VIEWS, aZ as useTemplateRef, bD as useTimestamp, bE as toTime, bF as toDayMonth, bG as upperFirst, bH as _sfc_main$k, bI as I18nT, bJ as N8nIcon, z as nextTick, bK as useVirtualList, bL as toRef, bM as N8nRadioButtons, as as useNDVStore, bN as resolveDirective, aS as N8nLink, bO as waitingNodeTooltip, av as useLocalStorage, bP as LOG_DETAILS_PANEL_STATE, bQ as KeyboardShortcutTooltip, b0 as N8nResizeWrapper, bR as useStyles, bS as N8nActionDropdown, a_ as LOGS_PANEL_STATE, ag as useTelemetry, bT as Workflow, bU as useThrottleFn, bV as parse, H as useUIStore, $ as useCanvasStore, bW as ndvEventBus } from "./index-_seQOCga.js";
2
+ import { u as useClearExecutionButtonVisible, c as canvasEventBus } from "./canvas-gKzWhb0Y.js";
3
+ import { H as HighlightJS, V as VueMarkdown, f as formatTokenUsageCount, _ as _sfc_main$j, g as getSubtreeTotalConsumedTokens, a as getTotalConsumedTokens, h as hasSubExecution, R as RunData, c as createLogTree, d as deepToRaw, m as mergeStartData, b as findSelectedLogEntry, e as getEntryAtRelativeIndex, i as getDepth, j as findLogEntryRec, k as flattenLogEntries } from "./RunData-C_A8RvJy.js";
5
4
  function bash(hljs) {
6
5
  const regex = hljs.regex;
7
6
  const VAR = {};
@@ -4141,10 +4140,11 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
4141
4140
  const emit = __emit;
4142
4141
  const container2 = useTemplateRef("containerRef");
4143
4142
  const locale = useI18n$1();
4143
+ const now = useTimestamp({ interval: 1e3 });
4144
4144
  const nodeTypeStore = useNodeTypesStore();
4145
4145
  const type = computed(() => nodeTypeStore.getNodeType(props.data.node.type));
4146
4146
  const isSettled = computed(
4147
- () => props.data.runData.executionStatus && ["crashed", "error", "success"].includes(props.data.runData.executionStatus)
4147
+ () => props.data.runData.executionStatus && !["running", "waiting"].includes(props.data.runData.executionStatus)
4148
4148
  );
4149
4149
  const isError = computed(() => !!props.data.runData.error);
4150
4150
  const startedAtText = computed(() => {
@@ -4155,6 +4155,13 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
4155
4155
  }
4156
4156
  });
4157
4157
  });
4158
+ const statusText = computed(() => upperFirst(props.data.runData.executionStatus));
4159
+ const timeText = computed(
4160
+ () => locale.displayTimer(
4161
+ isSettled.value ? props.data.runData.executionTime : Math.floor((now.value - props.data.runData.startTime) / 1e3) * 1e3,
4162
+ true
4163
+ )
4164
+ );
4158
4165
  const subtreeConsumedTokens = computed(
4159
4166
  () => props.shouldShowTokenCountColumn ? getSubtreeTotalConsumedTokens(props.data, false) : void 0
4160
4167
  );
@@ -4235,7 +4242,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
4235
4242
  default: withCtx(() => [
4236
4243
  isSettled.value ? (openBlock(), createBlock(unref(I18nT), {
4237
4244
  key: 0,
4238
- keypath: "logs.overview.body.summaryText"
4245
+ keypath: "logs.overview.body.summaryText.in"
4239
4246
  }, {
4240
4247
  status: withCtx(() => [
4241
4248
  isError.value ? (openBlock(), createBlock(unref(N8nText), {
@@ -4249,19 +4256,21 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
4249
4256
  icon: "exclamation-triangle",
4250
4257
  class: normalizeClass(_ctx.$style.errorIcon)
4251
4258
  }, null, 8, ["class"]),
4252
- createTextVNode(toDisplayString(unref(upperFirst)(props.data.runData.executionStatus)), 1)
4259
+ createTextVNode(" " + toDisplayString(statusText.value), 1)
4253
4260
  ]),
4254
4261
  _: 1
4255
4262
  })) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
4256
- createTextVNode(toDisplayString(unref(upperFirst)(props.data.runData.executionStatus)), 1)
4263
+ createTextVNode(toDisplayString(statusText.value), 1)
4257
4264
  ], 64))
4258
4265
  ]),
4259
4266
  time: withCtx(() => [
4260
- createTextVNode(toDisplayString(unref(locale).displayTimer(props.data.runData.executionTime, true)), 1)
4267
+ createTextVNode(toDisplayString(timeText.value), 1)
4261
4268
  ]),
4262
4269
  _: 1
4263
4270
  })) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
4264
- createTextVNode(toDisplayString(unref(upperFirst)(props.data.runData.executionStatus)), 1)
4271
+ createTextVNode(toDisplayString(unref(locale).baseText("logs.overview.body.summaryText.for", {
4272
+ interpolate: { status: statusText.value, time: timeText.value }
4273
+ })), 1)
4265
4274
  ], 64))
4266
4275
  ]),
4267
4276
  _: 1
@@ -4400,12 +4409,19 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
4400
4409
  props: {
4401
4410
  status: {},
4402
4411
  consumedTokens: {},
4412
+ startTime: {},
4403
4413
  timeTook: {}
4404
4414
  },
4405
4415
  setup(__props) {
4406
4416
  const locale = useI18n$1();
4417
+ const now = useTimestamp({ interval: 1e3 });
4407
4418
  const executionStatusText = computed(
4408
- () => __props.timeTook === void 0 ? upperFirst(__props.status) : locale.baseText("logs.overview.body.summaryText", {
4419
+ () => __props.status === "running" || __props.status === "waiting" ? locale.baseText("logs.overview.body.summaryText.for", {
4420
+ interpolate: {
4421
+ status: upperFirst(__props.status),
4422
+ time: locale.displayTimer(Math.floor((now.value - __props.startTime) / 1e3) * 1e3, true)
4423
+ }
4424
+ }) : __props.timeTook === void 0 ? upperFirst(__props.status) : locale.baseText("logs.overview.body.summaryText.in", {
4409
4425
  interpolate: {
4410
4426
  status: upperFirst(__props.status),
4411
4427
  time: locale.displayTimer(__props.timeTook, true)
@@ -4569,8 +4585,9 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
4569
4585
  class: normalizeClass(_ctx.$style.summary),
4570
4586
  status: _ctx.execution.status,
4571
4587
  "consumed-tokens": consumedTokens2.value,
4588
+ "start-time": +new Date(_ctx.execution.startedAt),
4572
4589
  "time-took": _ctx.execution.startedAt && _ctx.execution.stoppedAt ? +new Date(_ctx.execution.stoppedAt) - +new Date(_ctx.execution.startedAt) : void 0
4573
- }, null, 8, ["class", "status", "consumed-tokens", "time-took"]),
4590
+ }, null, 8, ["class", "status", "consumed-tokens", "start-time", "time-took"]),
4574
4591
  createBaseVNode("div", mergeProps({
4575
4592
  class: _ctx.$style.tree
4576
4593
  }, unref(virtualList).containerProps), [
@@ -4607,14 +4624,14 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
4607
4624
  };
4608
4625
  }
4609
4626
  });
4610
- const container$3 = "_container_acxst_123";
4611
- const clearButton = "_clearButton_acxst_133";
4612
- const content$1 = "_content_acxst_139";
4613
- const empty = "_empty_acxst_148";
4614
- const emptyText = "_emptyText_acxst_153";
4615
- const summary = "_summary_acxst_158";
4616
- const tree = "_tree_acxst_162";
4617
- const switchViewButtons = "_switchViewButtons_acxst_169";
4627
+ const container$3 = "_container_fcgc7_123";
4628
+ const clearButton = "_clearButton_fcgc7_133";
4629
+ const content$1 = "_content_fcgc7_139";
4630
+ const empty = "_empty_fcgc7_148";
4631
+ const emptyText = "_emptyText_fcgc7_153";
4632
+ const summary = "_summary_fcgc7_158";
4633
+ const tree = "_tree_fcgc7_162";
4634
+ const switchViewButtons = "_switchViewButtons_fcgc7_170";
4618
4635
  const style0$4 = {
4619
4636
  container: container$3,
4620
4637
  clearButton,
@@ -4660,6 +4677,9 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
4660
4677
  overrideOutputs: [source.previousNodeOutput ?? 0]
4661
4678
  };
4662
4679
  });
4680
+ const isExecuting = computed(
4681
+ () => __props.paneType === "output" && (__props.logEntry.runData.executionStatus === "running" || __props.logEntry.runData.executionStatus === "waiting")
4682
+ );
4663
4683
  function handleClickOpenNdv() {
4664
4684
  ndvStore.setActiveNodeName(__props.logEntry.node.name);
4665
4685
  }
@@ -4667,6 +4687,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
4667
4687
  displayMode.value = value;
4668
4688
  }
4669
4689
  return (_ctx, _cache) => {
4690
+ const _directive_n8n_html = resolveDirective("n8n-html");
4670
4691
  return runDataProps.value ? (openBlock(), createBlock(RunData, mergeProps({ key: 0 }, runDataProps.value, {
4671
4692
  workflow: _ctx.logEntry.workflow,
4672
4693
  "workflow-execution": _ctx.logEntry.execution,
@@ -4681,6 +4702,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
4681
4702
  "disable-hover-highlight": true,
4682
4703
  "display-mode": displayMode.value,
4683
4704
  "disable-ai-content": _ctx.logEntry.depth === 0,
4705
+ "is-executing": isExecuting.value,
4684
4706
  "table-header-bg-color": "light",
4685
4707
  onDisplayModeChange: handleChangeDisplayMode
4686
4708
  }), createSlots({
@@ -4709,6 +4731,21 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
4709
4731
  _: 1
4710
4732
  })
4711
4733
  ]),
4734
+ "node-waiting": withCtx(() => [
4735
+ createVNode(unref(N8nText), {
4736
+ bold: true,
4737
+ color: "text-dark",
4738
+ size: "large"
4739
+ }, {
4740
+ default: withCtx(() => [
4741
+ createTextVNode(toDisplayString(unref(locale).baseText("ndv.output.waitNodeWaiting.title")), 1)
4742
+ ]),
4743
+ _: 1
4744
+ }),
4745
+ withDirectives(createVNode(unref(N8nText), null, null, 512), [
4746
+ [_directive_n8n_html, unref(waitingNodeTooltip)(_ctx.logEntry.node)]
4747
+ ])
4748
+ ]),
4712
4749
  _: 2
4713
4750
  }, [
4714
4751
  isMultipleInput.value ? {
@@ -4736,7 +4773,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
4736
4773
  ]),
4737
4774
  key: "1"
4738
4775
  } : void 0
4739
- ]), 1040, ["workflow", "workflow-execution", "too-much-data-title", "no-data-in-branch-message", "executing-message", "pane-type", "display-mode", "disable-ai-content"])) : createCommentVNode("", true);
4776
+ ]), 1040, ["workflow", "workflow-execution", "too-much-data-title", "no-data-in-branch-message", "executing-message", "pane-type", "display-mode", "disable-ai-content", "is-executing"])) : createCommentVNode("", true);
4740
4777
  };
4741
4778
  }
4742
4779
  });
@@ -4907,8 +4944,9 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
4907
4944
  class: normalizeClass(_ctx.$style.executionSummary),
4908
4945
  status: _ctx.logEntry.runData.executionStatus ?? "unknown",
4909
4946
  "consumed-tokens": consumedTokens2.value,
4947
+ "start-time": _ctx.logEntry.runData.startTime,
4910
4948
  "time-took": _ctx.logEntry.runData.executionTime
4911
- }, null, 8, ["class", "status", "consumed-tokens", "time-took"])) : createCommentVNode("", true)
4949
+ }, null, 8, ["class", "status", "consumed-tokens", "start-time", "time-took"])) : createCommentVNode("", true)
4912
4950
  ], 2)
4913
4951
  ]),
4914
4952
  actions: withCtx(() => [
@@ -5036,10 +5074,11 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
5036
5074
  __name: "LogsPanelActions",
5037
5075
  props: {
5038
5076
  isOpen: { type: Boolean },
5077
+ isSyncSelectionEnabled: { type: Boolean },
5039
5078
  showToggleButton: { type: Boolean },
5040
5079
  showPopOutButton: { type: Boolean }
5041
5080
  },
5042
- emits: ["popOut", "toggleOpen"],
5081
+ emits: ["popOut", "toggleOpen", "toggleSyncSelection"],
5043
5082
  setup(__props, { emit: __emit }) {
5044
5083
  const emit = __emit;
5045
5084
  const appStyles = useStyles();
@@ -5049,11 +5088,30 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
5049
5088
  const toggleButtonText = computed(
5050
5089
  () => locales.baseText(__props.isOpen ? "runData.panel.actions.collapse" : "runData.panel.actions.open")
5051
5090
  );
5091
+ const menuItems = computed(() => [
5092
+ {
5093
+ id: "toggleSyncSelection",
5094
+ label: locales.baseText("runData.panel.actions.sync"),
5095
+ checked: __props.isSyncSelectionEnabled
5096
+ },
5097
+ ...__props.showPopOutButton ? [{ id: "popOut", label: popOutButtonText.value }] : []
5098
+ ]);
5099
+ function handleSelectMenuItem(selected2) {
5100
+ switch (selected2) {
5101
+ case "popOut":
5102
+ emit(selected2);
5103
+ return;
5104
+ case "toggleSyncSelection":
5105
+ emit(selected2);
5106
+ return;
5107
+ }
5108
+ }
5052
5109
  return (_ctx, _cache) => {
5110
+ const _component_N8nTooltip = resolveComponent("N8nTooltip");
5053
5111
  return openBlock(), createElementBlock("div", {
5054
5112
  class: normalizeClass(_ctx.$style.container)
5055
5113
  }, [
5056
- _ctx.showPopOutButton ? (openBlock(), createBlock(unref(N8nTooltip), {
5114
+ !_ctx.isOpen && _ctx.showPopOutButton ? (openBlock(), createBlock(_component_N8nTooltip, {
5057
5115
  key: 0,
5058
5116
  "z-index": tooltipZIndex.value,
5059
5117
  content: popOutButtonText.value
@@ -5061,7 +5119,8 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
5061
5119
  default: withCtx(() => [
5062
5120
  createVNode(unref(_sfc_main$i), {
5063
5121
  icon: "pop-out",
5064
- type: "secondary",
5122
+ type: "tertiary",
5123
+ text: "",
5065
5124
  size: "small",
5066
5125
  "icon-size": "medium",
5067
5126
  "aria-label": popOutButtonText.value,
@@ -5070,20 +5129,29 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
5070
5129
  ]),
5071
5130
  _: 1
5072
5131
  }, 8, ["z-index", "content"])) : createCommentVNode("", true),
5073
- _ctx.showToggleButton ? (openBlock(), createBlock(KeyboardShortcutTooltip, {
5132
+ _ctx.isOpen ? (openBlock(), createBlock(unref(N8nActionDropdown), {
5074
5133
  key: 1,
5134
+ "icon-size": "small",
5135
+ "activator-icon": "ellipsis-h",
5136
+ "activator-size": "small",
5137
+ items: menuItems.value,
5138
+ teleported: false,
5139
+ onSelect: handleSelectMenuItem
5140
+ }, null, 8, ["items"])) : createCommentVNode("", true),
5141
+ _ctx.showToggleButton ? (openBlock(), createBlock(KeyboardShortcutTooltip, {
5142
+ key: 2,
5075
5143
  label: unref(locales).baseText("generic.shortcutHint"),
5076
5144
  shortcut: { keys: ["l"] },
5077
5145
  "z-index": tooltipZIndex.value
5078
5146
  }, {
5079
5147
  default: withCtx(() => [
5080
5148
  createVNode(unref(_sfc_main$i), {
5081
- type: "secondary",
5149
+ type: "tertiary",
5150
+ text: "",
5082
5151
  size: "small",
5083
5152
  "icon-size": "medium",
5084
5153
  icon: _ctx.isOpen ? "chevron-down" : "chevron-up",
5085
5154
  "aria-label": toggleButtonText.value,
5086
- style: { "color": "var(--color-text-base)" },
5087
5155
  onClick: _cache[1] || (_cache[1] = withModifiers(($event) => emit("toggleOpen"), ["stop"]))
5088
5156
  }, null, 8, ["icon", "aria-label"])
5089
5157
  ]),
@@ -5093,7 +5161,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
5093
5161
  };
5094
5162
  }
5095
5163
  });
5096
- const container$1 = "_container_1qwjg_123";
5164
+ const container$1 = "_container_xdwf0_123";
5097
5165
  const style0$1 = {
5098
5166
  container: container$1
5099
5167
  };
@@ -5304,13 +5372,23 @@ function useLogsExecutionData() {
5304
5372
  loadSubExecution
5305
5373
  };
5306
5374
  }
5307
- function useLogsSelection(execution, tree2, flatLogEntries) {
5375
+ function useLogsSelection(execution, tree2, flatLogEntries, toggleExpand) {
5308
5376
  const telemetry = useTelemetry();
5309
5377
  const manualLogEntrySelection = ref({ type: "initial" });
5310
5378
  const selected2 = computed(() => findSelectedLogEntry(manualLogEntrySelection.value, tree2.value));
5379
+ const logsStore = useLogsStore();
5380
+ const uiStore = useUIStore();
5381
+ const canvasStore = useCanvasStore();
5382
+ function syncSelectionToCanvasIfEnabled(value) {
5383
+ if (!logsStore.isLogSelectionSyncedWithCanvas) {
5384
+ return;
5385
+ }
5386
+ canvasEventBus.emit("nodes:select", { ids: [value.node.id], panIntoView: true });
5387
+ }
5311
5388
  function select(value) {
5312
5389
  manualLogEntrySelection.value = value === void 0 ? { type: "none" } : { type: "selected", id: value.id };
5313
5390
  if (value) {
5391
+ syncSelectionToCanvasIfEnabled(value);
5314
5392
  telemetry.track("User selected node in log view", {
5315
5393
  node_type: value.node.type,
5316
5394
  node_id: value.node.id,
@@ -5323,20 +5401,41 @@ function useLogsSelection(execution, tree2, flatLogEntries) {
5323
5401
  function selectPrev() {
5324
5402
  const entries = flatLogEntries.value;
5325
5403
  const prevEntry = selected2.value ? getEntryAtRelativeIndex(entries, selected2.value.id, -1) ?? entries[0] : entries[entries.length - 1];
5326
- select(prevEntry);
5404
+ manualLogEntrySelection.value = { type: "selected", id: prevEntry.id };
5405
+ syncSelectionToCanvasIfEnabled(prevEntry);
5327
5406
  }
5328
5407
  function selectNext() {
5329
5408
  const entries = flatLogEntries.value;
5330
5409
  const nextEntry = selected2.value ? getEntryAtRelativeIndex(entries, selected2.value.id, 1) ?? entries[entries.length - 1] : entries[0];
5331
- select(nextEntry);
5410
+ manualLogEntrySelection.value = { type: "selected", id: nextEntry.id };
5411
+ syncSelectionToCanvasIfEnabled(nextEntry);
5332
5412
  }
5413
+ watch(
5414
+ [() => uiStore.lastSelectedNode, () => logsStore.isLogSelectionSyncedWithCanvas],
5415
+ ([selectedOnCanvas, shouldSync]) => {
5416
+ if (!shouldSync || !selectedOnCanvas || canvasStore.hasRangeSelection || selected2.value?.node.name === selectedOnCanvas) {
5417
+ return;
5418
+ }
5419
+ const entry = findLogEntryRec((e) => e.node.name === selectedOnCanvas, tree2.value);
5420
+ if (!entry) {
5421
+ return;
5422
+ }
5423
+ manualLogEntrySelection.value = { type: "selected", id: entry.id };
5424
+ let parent = entry.parent;
5425
+ while (parent !== void 0) {
5426
+ toggleExpand(parent, true);
5427
+ parent = parent.parent;
5428
+ }
5429
+ },
5430
+ { immediate: true }
5431
+ );
5333
5432
  return { selected: selected2, select, selectPrev, selectNext };
5334
5433
  }
5335
5434
  function useLogsTreeExpand(entries) {
5336
5435
  const collapsedEntries = ref({});
5337
5436
  const flatLogEntries = computed(() => flattenLogEntries(entries.value, collapsedEntries.value));
5338
- function toggleExpanded(treeNode) {
5339
- collapsedEntries.value[treeNode.id] = !collapsedEntries.value[treeNode.id];
5437
+ function toggleExpanded(treeNode, expand) {
5438
+ collapsedEntries.value[treeNode.id] = expand === void 0 ? !collapsedEntries.value[treeNode.id] : !expand;
5340
5439
  }
5341
5440
  return {
5342
5441
  flatLogEntries,
@@ -5388,7 +5487,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
5388
5487
  const { selected: selected2, select, selectNext, selectPrev } = useLogsSelection(
5389
5488
  execution,
5390
5489
  entries,
5391
- flatLogEntries
5490
+ flatLogEntries,
5491
+ toggleExpanded
5392
5492
  );
5393
5493
  const isLogDetailsOpen = computed(() => isOpen.value && selected2.value !== void 0);
5394
5494
  const isLogDetailsVisuallyOpen = computed(
@@ -5396,10 +5496,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
5396
5496
  );
5397
5497
  const logsPanelActionsProps = computed(() => ({
5398
5498
  isOpen: isOpen.value,
5499
+ isSyncSelectionEnabled: logsStore.isLogSelectionSyncedWithCanvas,
5399
5500
  showToggleButton: !isPoppedOut.value,
5400
5501
  showPopOutButton: canPopOut.value && !isPoppedOut.value,
5401
5502
  onPopOut,
5402
- onToggleOpen
5503
+ onToggleOpen,
5504
+ onToggleSyncSelection: logsStore.toggleLogSelectionSync
5403
5505
  }));
5404
5506
  function handleResizeOverviewPanelEnd() {
5405
5507
  if (isOverviewPanelFullWidth.value) {
@@ -3250,7 +3250,7 @@
3250
3250
  -------------------------- */
3251
3251
  /* BEM
3252
3252
  -------------------------- */
3253
- ._container_acxst_123 {
3253
+ ._container_fcgc7_123 {
3254
3254
  flex-grow: 1;
3255
3255
  flex-shrink: 1;
3256
3256
  display: flex;
@@ -3259,12 +3259,12 @@
3259
3259
  overflow: hidden;
3260
3260
  background-color: var(--color-foreground-xlight);
3261
3261
  }
3262
- ._clearButton_acxst_133 {
3262
+ ._clearButton_fcgc7_133 {
3263
3263
  border: none;
3264
3264
  color: var(--color-text-light);
3265
3265
  gap: var(--spacing-5xs);
3266
3266
  }
3267
- ._content_acxst_139 {
3267
+ ._content_fcgc7_139 {
3268
3268
  position: relative;
3269
3269
  flex-grow: 1;
3270
3270
  overflow: auto;
@@ -3273,24 +3273,25 @@
3273
3273
  align-items: stretch;
3274
3274
  justify-content: stretch;
3275
3275
  }
3276
- ._content_acxst_139._empty_acxst_148 {
3276
+ ._content_fcgc7_139._empty_fcgc7_148 {
3277
3277
  align-items: center;
3278
3278
  justify-content: center;
3279
3279
  }
3280
- ._emptyText_acxst_153 {
3280
+ ._emptyText_fcgc7_153 {
3281
3281
  max-width: 20em;
3282
3282
  text-align: center;
3283
3283
  }
3284
- ._summary_acxst_158 {
3284
+ ._summary_fcgc7_158 {
3285
3285
  padding: var(--spacing-2xs);
3286
3286
  }
3287
- ._tree_acxst_162 {
3287
+ ._tree_fcgc7_162 {
3288
3288
  padding: 0 var(--spacing-2xs) var(--spacing-2xs) var(--spacing-2xs);
3289
+ scroll-padding-block: var(--spacing-3xs);
3289
3290
  }
3290
- ._tree_acxst_162 .el-icon {
3291
+ ._tree_fcgc7_162 .el-icon {
3291
3292
  display: none;
3292
3293
  }
3293
- ._switchViewButtons_acxst_169 {
3294
+ ._switchViewButtons_fcgc7_170 {
3294
3295
  position: absolute;
3295
3296
  z-index: 10; /* higher than log entry rows background */
3296
3297
  right: 0;
@@ -3300,7 +3301,7 @@
3300
3301
  opacity: 0;
3301
3302
  transition: opacity 0.3s cubic-bezier(0.19, 1, 0.22, 1);
3302
3303
  }
3303
- ._content_acxst_139:hover ._switchViewButtons_acxst_169 {
3304
+ ._content_fcgc7_139:hover ._switchViewButtons_fcgc7_170 {
3304
3305
  visibility: visible;
3305
3306
  opacity: 1;
3306
3307
  }/* BEM support Func
@@ -3720,12 +3721,11 @@
3720
3721
  -------------------------- */
3721
3722
  /* BEM
3722
3723
  -------------------------- */
3723
- ._container_1qwjg_123 {
3724
+ ._container_xdwf0_123 {
3724
3725
  display: flex;
3725
3726
  }
3726
- ._container_1qwjg_123 button {
3727
- border: none;
3728
- color: var(--color-text-light);
3727
+ ._container_xdwf0_123 button:hover {
3728
+ background-color: var(--color-background-base);
3729
3729
  }/* BEM support Func
3730
3730
  -------------------------- */
3731
3731
  /* Transition