n8n-editor-ui 1.87.1 → 1.89.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 (110) hide show
  1. package/dist/assets/{AnimatedSpinner-BJKBduqI.js → AnimatedSpinner-64kuDSMd.js} +1 -1
  2. package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-BNiwICGe.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-vU7A4Ql5.js} +1 -1
  3. package/dist/assets/{AuthView-DrViDPFs.js → AuthView-BtMwWncz.js} +2 -2
  4. package/dist/assets/{CanvasChatSwitch-0IWSu8RE.css → CanvasChatSwitch-BDVIAjN6.css} +12 -11
  5. package/dist/assets/{CanvasChatSwitch-BnTApoNZ.js → CanvasChatSwitch-DCcRHty_.js} +26 -24
  6. package/dist/assets/{ChangePasswordView-DPUv2ZhO.js → ChangePasswordView-ngd6kK9h.js} +3 -3
  7. package/dist/assets/CollectionParameter-NNrH2Qf1.js +4 -0
  8. package/dist/assets/{CredentialsView-Cx3MfjwO.js → CredentialsView-c9VZrSEP.js} +6 -6
  9. package/dist/assets/{ErrorView-C3Sxa6Qs.js → ErrorView-M0yTzQxC.js} +1 -1
  10. package/dist/assets/{ExecutionsTime.vue_vue_type_script_setup_true_lang-B0NnOKRw.js → ExecutionsTime.vue_vue_type_script_setup_true_lang-BsM5P8VY.js} +2 -2
  11. package/dist/assets/{ExecutionsView-BD9a5MiE.js → ExecutionsView-2Ywg0NsP.js} +8 -8
  12. package/dist/assets/{FileSaver.min-CsyH54Dh.js → FileSaver.min-DAXzY4JY.js} +1 -1
  13. package/dist/assets/{FixedCollectionParameter-icyYiANk.js → FixedCollectionParameter-CNRFXDrN.js} +1 -1
  14. package/dist/assets/{ForgotMyPasswordView-B7m6OAyt.js → ForgotMyPasswordView-C1SOW4HN.js} +3 -3
  15. package/dist/assets/{InsightsChartAverageRuntime-CiI5y8BG.js → InsightsChartAverageRuntime-D_7tKoef.js} +4 -4
  16. package/dist/assets/{InsightsChartFailed-BAnQv9pU.js → InsightsChartFailed-DDejxv0R.js} +5 -5
  17. package/dist/assets/{InsightsChartFailureRate-CGRL86zw.js → InsightsChartFailureRate-PS5N1AdB.js} +4 -4
  18. package/dist/assets/{InsightsChartTimeSaved-BJmjC9xP.js → InsightsChartTimeSaved-BBw2CgSS.js} +4 -4
  19. package/dist/assets/{InsightsChartTotal-YSqQgGkL.js → InsightsChartTotal-2MVolQhG.js} +7 -7
  20. package/dist/assets/InsightsDashboard-DCdd_dks.js +174 -0
  21. package/dist/assets/{InsightsDashboard-CB4vHnBh.css → InsightsDashboard-DPVczYm3.css} +21 -8
  22. package/dist/assets/{InsightsPaywall-BCSe1GCl.js → InsightsPaywall-DtIcXb48.js} +1 -1
  23. package/dist/assets/{InsightsSummary-Bf61oFlG.js → InsightsSummary-BzdlA4Dr.js} +48 -25
  24. package/dist/assets/{InsightsSummary-W08OzElS.css → InsightsSummary-FixbpmPJ.css} +28 -25
  25. package/dist/assets/{InsightsTableWorkflows-Us3j4UTO.css → InsightsTableWorkflows-Blv_GPUj.css} +16 -1
  26. package/dist/assets/{InsightsTableWorkflows-B5M_o3Di.js → InsightsTableWorkflows-CnEuNzZ9.js} +63 -15
  27. package/dist/assets/{Logo-DZ8mhDMd.js → Logo-CmGfYtCL.js} +1 -1
  28. package/dist/assets/{MainHeader-CItoJWMi.js → MainHeader-DdjAOCVS.js} +9 -9
  29. package/dist/assets/{MainSidebar-Cponf9eD.js → MainSidebar-CPtfXLom.js} +4 -2
  30. package/dist/assets/{NodeCreation-DiUBT9p0.js → NodeCreation-C9WNMB5W.js} +4 -4
  31. package/dist/assets/{NodeCreator-BHji7uJa.js → NodeCreator-Dt7b_La2.js} +3 -3
  32. package/dist/assets/{NodeDetailsView-BT-ro74o.css → NodeDetailsView-B2kdGJ7R.css} +14 -14
  33. package/dist/assets/{NodeDetailsView-CPsaG2IZ.js → NodeDetailsView-BPQgwdWz.js} +23 -12
  34. package/dist/assets/{NodeView-9P-9rNOD.js → NodeView-CKF92Cc3.js} +17 -18
  35. package/dist/assets/{ProjectCardBadge-BdyDghHf.js → ProjectCardBadge-Ca29o2Nu.js} +1 -1
  36. package/dist/assets/{ProjectHeader-D8-9oE80.js → ProjectHeader-Dq3fVC-9.js} +1 -1
  37. package/dist/assets/{ProjectSettings-Brpx7x2l.js → ProjectSettings-6oRh_PiD.js} +2 -2
  38. package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-CShLauba.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-DtHAaMts.js} +1 -1
  39. package/dist/assets/{ResourcesListLayout-nD22utQX.js → ResourcesListLayout-CjpS9ho7.js} +12 -2
  40. package/dist/assets/{ResourcesListLayout-CWgWhtKq.css → ResourcesListLayout-b44J07nq.css} +8 -8
  41. package/dist/assets/{RunDataAi-DULZvgnn.js → RunDataAi-DpuaI4HY.js} +64 -41
  42. package/dist/assets/{RunDataJson-jnag_uEf.js → RunDataJson-CS1Vs4me.js} +23 -13
  43. package/dist/assets/{RunDataJsonActions-CWCdb4Yi.js → RunDataJsonActions-UEDmvE5v.js} +1 -1
  44. package/dist/assets/{RunDataSearch-CI5OdX2M.js → RunDataSearch-BjsM_QL7.js} +1 -1
  45. package/dist/assets/{RunDataTable-CQc98S7W.js → RunDataTable-zY9Z73dm.js} +17 -7
  46. package/dist/assets/{SamlOnboarding-mdVsZszT.js → SamlOnboarding-CMQ3F8vU.js} +3 -3
  47. package/dist/assets/{SettingsApiView-CRDQ66Jq.js → SettingsApiView-C7mJo5RT.js} +1 -1
  48. package/dist/assets/{SettingsCommunityNodesView-DCp8y1mn.js → SettingsCommunityNodesView-oV3f1FYs.js} +4 -4
  49. package/dist/assets/{SettingsExternalSecrets-PhLe1dhs.js → SettingsExternalSecrets-Zm50ediz.js} +1 -1
  50. package/dist/assets/{SettingsLdapView-DrPh9Cmp.js → SettingsLdapView-D0lujKk6.js} +1 -1
  51. package/dist/assets/{SettingsLogStreamingView-D_dGzLfg.js → SettingsLogStreamingView-DMRYf3h4.js} +1 -1
  52. package/dist/assets/{SettingsPersonalView-C6XeNBcf.js → SettingsPersonalView-BlKM42Fv.js} +1 -1
  53. package/dist/assets/{SettingsSourceControl-Bu_qi87k.js → SettingsSourceControl-BRkqOyBq.js} +1 -1
  54. package/dist/assets/{SettingsSso-BF8Nr76R.js → SettingsSso-ClphkEtx.js} +1 -1
  55. package/dist/assets/{SettingsUsageAndPlan-DTyc2TI4.js → SettingsUsageAndPlan-BnxbFSLN.js} +1 -1
  56. package/dist/assets/{SettingsUsersView-BfK_vKh5.js → SettingsUsersView-CnqllPG4.js} +1 -1
  57. package/dist/assets/{SettingsView-bkz5b7Ks.js → SettingsView-CJ4icVTM.js} +1 -1
  58. package/dist/assets/{SetupView--_MmPcKt.js → SetupView-BaUQwZK2.js} +3 -3
  59. package/dist/assets/{SetupWorkflowCredentialsButton-C94b-j6c.js → SetupWorkflowCredentialsButton-DiRHCsta.js} +1 -1
  60. package/dist/assets/{SetupWorkflowFromTemplateView-Bn6NUya1.js → SetupWorkflowFromTemplateView-CjiIpX1D.js} +3 -3
  61. package/dist/assets/{SigninView-s9B3HXBX.js → SigninView-DrRmsG64.js} +3 -3
  62. package/dist/assets/{SignoutView-CvFIZuRL.js → SignoutView-DEK6MH1B.js} +1 -1
  63. package/dist/assets/{SignupView-B6YMoGnc.js → SignupView-CTdIAp1U.js} +3 -3
  64. package/dist/assets/{TemplateDetails-DOGmuYC4.js → TemplateDetails-B6Nnq5_s.js} +1 -1
  65. package/dist/assets/{TemplateList-BRL4OSZK.js → TemplateList-BKmKXiHs.js} +1 -1
  66. package/dist/assets/{TemplatesCollectionView-Ct2GIDCZ.js → TemplatesCollectionView-CXgiZ-fy.js} +5 -5
  67. package/dist/assets/{TemplatesSearchView-CWGmY4-P.js → TemplatesSearchView-BoX9MKRy.js} +3 -3
  68. package/dist/assets/{TemplatesView-vYQo2Y75.js → TemplatesView-htM1lafV.js} +1 -1
  69. package/dist/assets/{TemplatesWorkflowView-Cw6mc6wy.js → TemplatesWorkflowView-DIqdCPxB.js} +5 -5
  70. package/dist/assets/{TestDefinitionEditView-CZnzTAsp.js → TestDefinitionEditView-izO1b1I3.js} +7 -7
  71. package/dist/assets/{TestDefinitionListView-CKsRlhn4.js → TestDefinitionListView-DuLocBuw.js} +1 -1
  72. package/dist/assets/{TestDefinitionNewView-B1KZ2Qnt.js → TestDefinitionNewView-Dg37IAs6.js} +2 -2
  73. package/dist/assets/{TestDefinitionRootView-V43FaNr3.js → TestDefinitionRootView-DlG7VKKU.js} +1 -1
  74. package/dist/assets/{VariablesView-DLB1Vvnc.js → VariablesView-Cq8LInqk.js} +3 -3
  75. package/dist/assets/{WorkerView-Iqi25XGQ.js → WorkerView-BTQTq3vI.js} +6 -6
  76. package/dist/assets/{WorkflowActivator-D9fExB06.js → WorkflowActivator-E1mdIOaC.js} +2 -2
  77. package/dist/assets/{WorkflowExecutionsInfoAccordion-Md7C2uBw.js → WorkflowExecutionsInfoAccordion-DxGM_yu-.js} +1 -1
  78. package/dist/assets/{WorkflowExecutionsLandingPage-CKOlfG7s.js → WorkflowExecutionsLandingPage-BkftsbSa.js} +2 -2
  79. package/dist/assets/{WorkflowExecutionsPreview-DS6HDJng.js → WorkflowExecutionsPreview-w7I_h1ID.js} +6 -6
  80. package/dist/assets/{WorkflowExecutionsView-LF3g9gDB.js → WorkflowExecutionsView-lyjECt6I.js} +7 -7
  81. package/dist/assets/{WorkflowHistory-Cu7OIIMi.js → WorkflowHistory-B8_7vx-c.js} +3 -3
  82. package/dist/assets/{WorkflowOnboardingView-B2WUKfr6.js → WorkflowOnboardingView-D2fR8tdw.js} +1 -1
  83. package/dist/assets/{WorkflowPreview-DlKRTeNZ.js → WorkflowPreview-CNu7Kd6F.js} +1 -1
  84. package/dist/assets/{WorkflowsView-dot2ovV7.js → WorkflowsView-B_70hdtG.js} +133 -42
  85. package/dist/assets/{WorkflowsView-CJB9aI6A.css → WorkflowsView-DV1tjQwB.css} +17 -11
  86. package/dist/assets/{chartjs.utils-BLcAAfTE.js → chartjs.utils-3n4f3zmI.js} +6 -3
  87. package/dist/assets/{dateFormatter-Cdy8FmTT.js → dateFormatter-C1XlsLk2.js} +1 -1
  88. package/dist/assets/easyAiWorkflowUtils-CCJdF1g3.js +132 -0
  89. package/dist/assets/{global-link-actions-CfWIYTMM.js → global-link-actions-B6woWi9D.js} +1 -1
  90. package/dist/assets/{import-curl-DO7fae0m.js → import-curl-BlRUX0EU.js} +1 -1
  91. package/dist/assets/{index-D76xStxp.js → index-B-Y7sDIj.js} +672 -529
  92. package/dist/assets/{index-Bo3CExk-.js → index-BHGYFXFB.js} +1 -1
  93. package/dist/assets/{index-DJ205bL0.css → index-DwKuVkBg.css} +52 -52
  94. package/dist/assets/{pickBy-DdpxIwij.js → pickBy-BdN6wCB-.js} +1 -1
  95. package/dist/assets/{templateActions-BCMgItKi.js → templateActions-FAVGvEAM.js} +1 -1
  96. package/dist/assets/{useBeforeUnload-CDzomPGL.js → useBeforeUnload-oRTjaea2.js} +1 -1
  97. package/dist/assets/{useCanvasMapping-D1DfqsUU.js → useCanvasMapping-CmD2j75y.js} +3 -3
  98. package/dist/assets/{useCanvasOperations-CAthHfOB.js → useCanvasOperations-DYORubSM.js} +23 -16
  99. package/dist/assets/{useClearExecutionButtonVisible-CnDyjcGF.js → useClearExecutionButtonVisible-ReuF4PkZ.js} +2 -2
  100. package/dist/assets/{useExecutionDebugging-Bm9sy3W3.js → useExecutionDebugging-I7MLJdC1.js} +1 -1
  101. package/dist/assets/{useExecutionHelpers-C_yBGArA.js → useExecutionHelpers-CyZuZAQA.js} +2 -2
  102. package/dist/assets/{useImportCurlCommand-CK-lTdZr.js → useImportCurlCommand-DZVwxoke.js} +2 -2
  103. package/dist/assets/{usePushConnection-potv7eom.js → usePushConnection-SgX-5Lz6.js} +14 -15
  104. package/dist/assets/{useTestDefinitionForm-Dlzud2C-.js → useTestDefinitionForm-gWQ_zjEl.js} +1 -1
  105. package/dist/assets/{useWorkflowActivate-BvmFVCGP.js → useWorkflowActivate-CX21vkKl.js} +1 -1
  106. package/dist/index.html +2 -2
  107. package/package.json +1 -1
  108. package/dist/assets/CollectionParameter-14_bIMyy.js +0 -4
  109. package/dist/assets/InsightsDashboard-oe5QP-_0.js +0 -154
  110. package/dist/assets/easyAiWorkflowUtils-C5xkiwuo.js +0 -181
@@ -120,22 +120,27 @@
120
120
  -------------------------- */
121
121
  /* BEM
122
122
  -------------------------- */
123
- ._insightsView_1upqv_123 {
124
- padding: var(--spacing-l) var(--spacing-2xl);
123
+ ._insightsView_1j6u6_123 {
125
124
  flex: 1;
126
125
  display: flex;
127
126
  flex-direction: column;
128
127
  gap: 30px;
129
128
  overflow: auto;
129
+ }
130
+ ._insightsContainer_1j6u6_131 {
131
+ width: 100%;
130
132
  max-width: var(--content-container-width);
133
+ padding: var(--spacing-l) var(--spacing-2xl);
134
+ margin: 0 auto;
131
135
  }
132
- ._insightsBanner_1upqv_133 {
136
+ ._insightsBanner_1j6u6_138 {
133
137
  padding-bottom: 0;
134
138
  }
135
- ._insightsBanner_1upqv_133 ul {
136
- border-radius: 0;
139
+ ._insightsBanner_1j6u6_138 ul {
140
+ border-bottom-left-radius: 0;
141
+ border-bottom-right-radius: 0;
137
142
  }
138
- ._insightsContent_1upqv_140 {
143
+ ._insightsContent_1j6u6_146 {
139
144
  padding: var(--spacing-l) 0;
140
145
  border: var(--border-width-base) var(--border-style-base) var(--color-foreground-base);
141
146
  border-top: 0;
@@ -143,10 +148,18 @@
143
148
  border-bottom-right-radius: 6px;
144
149
  background: var(--color-background-xlight);
145
150
  }
146
- ._insightsChartWrapper_1upqv_149 {
151
+ ._insightsChartWrapper_1j6u6_155 {
147
152
  height: 292px;
148
153
  padding: 0 var(--spacing-l);
149
154
  }
150
- ._insightsTableWrapper_1upqv_154 {
155
+ ._insightsTableWrapper_1j6u6_160 {
151
156
  padding: var(--spacing-l) var(--spacing-l) 0;
157
+ }
158
+ ._chartLoader_1j6u6_164 {
159
+ height: 100%;
160
+ display: flex;
161
+ flex-direction: column;
162
+ align-items: center;
163
+ justify-content: center;
164
+ gap: 9px;
152
165
  }
@@ -1,4 +1,4 @@
1
- import { _ as _export_sfc, h as resolveComponent, i as createElementBlock, g as openBlock, j as createVNode, w as withCtx, l as createTextVNode, n as normalizeClass } from "./index-D76xStxp.js";
1
+ import { _ as _export_sfc, h as resolveComponent, i as createElementBlock, g as openBlock, j as createVNode, w as withCtx, l as createTextVNode, n as normalizeClass } from "./index-B-Y7sDIj.js";
2
2
  const callout = "_callout_tsein_123";
3
3
  const style0 = {
4
4
  callout
@@ -1,4 +1,4 @@
1
- import { d as defineComponent, W as useRoute, a0 as useCssModule, r as ref, q as computed, c as useI18n, V as VIEWS, h as resolveComponent, i as createElementBlock, g as openBlock, e as createBlock, n as normalizeClass, m as unref, F as Fragment, D as renderList, j as createVNode, w as withCtx, k as createBaseVNode, l as createTextVNode, t as toDisplayString, f as createCommentVNode, gx as INSIGHT_IMPACT_TYPES, gy as INSIGHTS_UNIT_IMPACT_MAPPING, _ as _export_sfc } from "./index-D76xStxp.js";
1
+ import { d as defineComponent, W as useRoute, a0 as useCssModule, r as ref, q as computed, c as useI18n, V as VIEWS, h as resolveComponent, i as createElementBlock, g as openBlock, k as createBaseVNode, e as createBlock, n as normalizeClass, m as unref, F as Fragment, D as renderList, j as createVNode, w as withCtx, l as createTextVNode, t as toDisplayString, f as createCommentVNode, gz as INSIGHT_IMPACT_TYPES, gA as INSIGHTS_UNIT_IMPACT_MAPPING, ai as useTelemetry, _ as _export_sfc } from "./index-B-Y7sDIj.js";
2
2
  const smartDecimal = (value, decimals = 2) => {
3
3
  if (Number.isInteger(value)) {
4
4
  return value;
@@ -8,13 +8,10 @@ const smartDecimal = (value, decimals = 2) => {
8
8
  }
9
9
  return Number(value.toFixed(decimals));
10
10
  };
11
- const _hoisted_1 = {
12
- key: 1,
13
- "data-test-id": "insights-summary-tabs"
14
- };
11
+ const _hoisted_1 = { "data-test-id": "insights-summary-tabs" };
15
12
  const _hoisted_2 = ["data-test-id"];
16
13
  const _hoisted_3 = { href: "#" };
17
- const _hoisted_4 = { key: 1 };
14
+ const _hoisted_4 = { key: 2 };
18
15
  const _sfc_main = /* @__PURE__ */ defineComponent({
19
16
  __name: "InsightsSummary",
20
17
  props: {
@@ -26,6 +23,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
26
23
  const i18n = useI18n();
27
24
  const route = useRoute();
28
25
  const $style = useCssModule();
26
+ const telemetry = useTelemetry();
29
27
  const lastNDays = ref(7);
30
28
  const summaryTitles = computed(() => ({
31
29
  total: i18n.baseText("insights.banner.title.total"),
@@ -34,6 +32,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
34
32
  timeSaved: i18n.baseText("insights.banner.title.timeSaved"),
35
33
  averageRunTime: i18n.baseText("insights.banner.title.averageRunTime")
36
34
  }));
35
+ const summaryHasNoData = computed(() => {
36
+ const summaryValues = Object.values(props.summary);
37
+ return summaryValues.length > 0 && summaryValues.every((summary) => !summary.value);
38
+ });
37
39
  const summaryWithRouteLocations = computed(
38
40
  () => props.summary.map((s) => ({
39
41
  ...s,
@@ -53,6 +55,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
53
55
  }
54
56
  return $style.neutral;
55
57
  };
58
+ const trackTabClick = (insightType) => {
59
+ telemetry.track(`User clicked ${summaryTitles.value[insightType]}`, {
60
+ referrer: route.name === VIEWS.INSIGHTS ? "Dashboard" : "Overview"
61
+ });
62
+ };
56
63
  return (_ctx, _cache) => {
57
64
  const _component_N8nLoading = resolveComponent("N8nLoading");
58
65
  const _component_N8nTooltip = resolveComponent("N8nTooltip");
@@ -62,19 +69,20 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
62
69
  return openBlock(), createElementBlock("div", {
63
70
  class: normalizeClass(unref($style).insights)
64
71
  }, [
65
- _ctx.loading ? (openBlock(), createBlock(_component_N8nLoading, {
66
- key: 0,
67
- class: normalizeClass(unref($style).loading),
68
- cols: 5
69
- }, null, 8, ["class"])) : (openBlock(), createElementBlock("ul", _hoisted_1, [
70
- (openBlock(true), createElementBlock(Fragment, null, renderList(summaryWithRouteLocations.value, ({ id, value, deviation, deviationUnit, unit, to }) => {
72
+ createBaseVNode("ul", _hoisted_1, [
73
+ _ctx.loading ? (openBlock(), createBlock(_component_N8nLoading, {
74
+ key: 0,
75
+ class: normalizeClass(unref($style).loading),
76
+ cols: 5
77
+ }, null, 8, ["class"])) : (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(summaryWithRouteLocations.value, ({ id, value, deviation, deviationUnit, unit, to }) => {
71
78
  return openBlock(), createElementBlock("li", {
72
79
  key: id,
73
80
  "data-test-id": `insights-summary-tab-${id}`
74
81
  }, [
75
82
  createVNode(_component_router_link, {
76
83
  to,
77
- "exact-active-class": unref($style).activeTab
84
+ "exact-active-class": unref($style).activeTab,
85
+ onClick: ($event) => trackTabClick(id)
78
86
  }, {
79
87
  default: withCtx(() => [
80
88
  createBaseVNode("strong", null, [
@@ -94,8 +102,21 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
94
102
  createBaseVNode("small", {
95
103
  class: normalizeClass(unref($style).days)
96
104
  }, toDisplayString(unref(i18n).baseText("insights.lastNDays", { interpolate: { count: lastNDays.value } })), 3),
97
- value === 0 && id === "timeSaved" ? (openBlock(), createElementBlock("span", {
105
+ summaryHasNoData.value ? (openBlock(), createElementBlock("span", {
98
106
  key: 0,
107
+ class: normalizeClass(unref($style).noData)
108
+ }, [
109
+ createVNode(_component_N8nTooltip, { placement: "bottom" }, {
110
+ content: withCtx(() => [
111
+ createTextVNode(toDisplayString(unref(i18n).baseText("insights.banner.noData.tooltip")), 1)
112
+ ]),
113
+ default: withCtx(() => [
114
+ createBaseVNode("em", null, toDisplayString(unref(i18n).baseText("insights.banner.noData")), 1)
115
+ ]),
116
+ _: 1
117
+ })
118
+ ], 2)) : value === 0 && id === "timeSaved" ? (openBlock(), createElementBlock("span", {
119
+ key: 1,
99
120
  class: normalizeClass(unref($style).empty)
100
121
  }, [
101
122
  _cache[0] || (_cache[0] = createBaseVNode("em", null, "--", -1)),
@@ -147,29 +168,31 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
147
168
  ]))
148
169
  ]),
149
170
  _: 2
150
- }, 1032, ["to", "exact-active-class"])
171
+ }, 1032, ["to", "exact-active-class", "onClick"])
151
172
  ], 8, _hoisted_2);
152
173
  }), 128))
153
- ]))
174
+ ])
154
175
  ], 2);
155
176
  };
156
177
  }
157
178
  });
158
- const insights = "_insights_2xtm2_123";
159
- const activeTab = "_activeTab_2xtm2_161";
160
- const days = "_days_2xtm2_174";
161
- const empty = "_empty_2xtm2_185";
162
- const icon = "_icon_2xtm2_193";
163
- const positive = "_positive_2xtm2_227";
164
- const negative = "_negative_2xtm2_231";
165
- const neutral = "_neutral_2xtm2_235";
166
- const loading = "_loading_2xtm2_250";
179
+ const insights = "_insights_nn8kp_123";
180
+ const activeTab = "_activeTab_nn8kp_161";
181
+ const days = "_days_nn8kp_174";
182
+ const empty = "_empty_nn8kp_185";
183
+ const icon = "_icon_nn8kp_193";
184
+ const noData = "_noData_nn8kp_225";
185
+ const positive = "_positive_nn8kp_230";
186
+ const negative = "_negative_nn8kp_234";
187
+ const neutral = "_neutral_nn8kp_238";
188
+ const loading = "_loading_nn8kp_253";
167
189
  const style0 = {
168
190
  insights,
169
191
  activeTab,
170
192
  days,
171
193
  empty,
172
194
  icon,
195
+ noData,
173
196
  positive,
174
197
  negative,
175
198
  neutral,
@@ -120,12 +120,12 @@
120
120
  -------------------------- */
121
121
  /* BEM
122
122
  -------------------------- */
123
- ._insights_2xtm2_123 {
123
+ ._insights_nn8kp_123 {
124
124
  display: grid;
125
125
  grid-template-rows: auto 1fr;
126
126
  padding: var(--spacing-xs) 0 var(--spacing-2xl);
127
127
  }
128
- ._insights_2xtm2_123 ul {
128
+ ._insights_nn8kp_123 ul {
129
129
  display: flex;
130
130
  height: 101px;
131
131
  align-items: stretch;
@@ -135,17 +135,17 @@
135
135
  list-style: none;
136
136
  overflow-x: auto;
137
137
  }
138
- ._insights_2xtm2_123 ul li {
138
+ ._insights_nn8kp_123 ul li {
139
139
  display: flex;
140
140
  justify-content: stretch;
141
141
  align-items: stretch;
142
142
  flex: 1 0;
143
143
  border-left: var(--border-width-base) var(--border-style-base) var(--color-foreground-base);
144
144
  }
145
- ._insights_2xtm2_123 ul li:first-child {
145
+ ._insights_nn8kp_123 ul li:first-child {
146
146
  border-left: 0;
147
147
  }
148
- ._insights_2xtm2_123 ul a {
148
+ ._insights_nn8kp_123 ul a {
149
149
  display: grid;
150
150
  align-items: center;
151
151
  align-content: center;
@@ -154,16 +154,16 @@
154
154
  padding: var(--spacing-3xs) var(--spacing-l) 0;
155
155
  border-bottom: 3px solid transparent;
156
156
  }
157
- ._insights_2xtm2_123 ul a:hover {
157
+ ._insights_nn8kp_123 ul a:hover {
158
158
  background-color: var(--color-background-xlight);
159
159
  transition: background-color 0.3s;
160
160
  }
161
- ._insights_2xtm2_123 ul a._activeTab_2xtm2_161 {
161
+ ._insights_nn8kp_123 ul a._activeTab_nn8kp_161 {
162
162
  background-color: var(--color-background-xlight);
163
163
  border-color: var(--color-primary);
164
164
  transition: background-color 0.3s ease-in-out;
165
165
  }
166
- ._insights_2xtm2_123 ul a strong {
166
+ ._insights_nn8kp_123 ul a strong {
167
167
  justify-self: flex-start;
168
168
  color: var(--color-text-dark);
169
169
  font-size: var(--font-size-s);
@@ -171,33 +171,33 @@
171
171
  white-space: nowrap;
172
172
  margin-bottom: var(--spacing-3xs);
173
173
  }
174
- ._insights_2xtm2_123 ul a ._days_2xtm2_174 {
174
+ ._insights_nn8kp_123 ul a ._days_nn8kp_174 {
175
175
  padding: 0;
176
176
  margin: 0 0 var(--spacing-xs);
177
177
  color: var(--color-text-light);
178
178
  font-size: var(--font-size-2xs);
179
179
  font-weight: var(--font-weight-normal);
180
180
  }
181
- ._insights_2xtm2_123 ul a span {
181
+ ._insights_nn8kp_123 ul a span {
182
182
  display: flex;
183
183
  align-items: baseline;
184
184
  }
185
- ._insights_2xtm2_123 ul a span._empty_2xtm2_185 em {
185
+ ._insights_nn8kp_123 ul a span._empty_nn8kp_185 em {
186
186
  color: var(--color-text-lighter);
187
187
  }
188
- ._insights_2xtm2_123 ul a span._empty_2xtm2_185 small {
188
+ ._insights_nn8kp_123 ul a span._empty_nn8kp_185 small {
189
189
  padding: 0;
190
190
  height: 21px;
191
191
  font-weight: var(--font-weight-bold);
192
192
  }
193
- ._insights_2xtm2_123 ul a span._empty_2xtm2_185 small ._icon_2xtm2_193 {
193
+ ._insights_nn8kp_123 ul a span._empty_nn8kp_185 small ._icon_nn8kp_193 {
194
194
  height: 20px;
195
195
  width: 8px;
196
196
  top: -3px;
197
197
  transform: translateY(0);
198
198
  color: var(--color-text-light);
199
199
  }
200
- ._insights_2xtm2_123 ul a em {
200
+ ._insights_nn8kp_123 ul a em {
201
201
  display: flex;
202
202
  align-items: baseline;
203
203
  justify-content: flex-start;
@@ -208,12 +208,11 @@
208
208
  font-style: normal;
209
209
  gap: var(--spacing-5xs);
210
210
  }
211
- ._insights_2xtm2_123 ul a em i {
212
- color: var(--color-text-light);
211
+ ._insights_nn8kp_123 ul a em i {
213
212
  font-size: 22px;
214
213
  font-style: normal;
215
214
  }
216
- ._insights_2xtm2_123 ul a small {
215
+ ._insights_nn8kp_123 ul a small {
217
216
  position: relative;
218
217
  display: flex;
219
218
  align-items: center;
@@ -223,32 +222,36 @@
223
222
  font-weight: var(--font-weight-bold);
224
223
  white-space: nowrap;
225
224
  }
226
- ._positive_2xtm2_227 {
225
+ ._insights_nn8kp_123 ._noData_nn8kp_225 em {
226
+ color: var(--color-text-light);
227
+ font-size: var(--font-size-m);
228
+ }
229
+ ._positive_nn8kp_230 {
227
230
  color: var(--color-success);
228
231
  }
229
- ._negative_2xtm2_231 {
232
+ ._negative_nn8kp_234 {
230
233
  color: var(--color-danger);
231
234
  }
232
- ._neutral_2xtm2_235 {
235
+ ._neutral_nn8kp_238 {
233
236
  color: var(--color-text-light);
234
237
  }
235
- ._neutral_2xtm2_235 ._icon_2xtm2_193 {
238
+ ._neutral_nn8kp_238 ._icon_nn8kp_193 {
236
239
  font-size: 17px;
237
240
  }
238
- ._icon_2xtm2_193 {
241
+ ._icon_nn8kp_193 {
239
242
  position: absolute;
240
243
  font-size: 17px;
241
244
  left: 0;
242
245
  top: 50%;
243
246
  transform: translateY(-50%);
244
247
  }
245
- ._loading_2xtm2_250 {
248
+ ._loading_nn8kp_253 {
246
249
  display: flex;
247
- min-height: 91px;
248
250
  align-self: stretch;
249
251
  align-items: stretch;
250
252
  }
251
- ._loading_2xtm2_250 > div {
253
+ ._loading_nn8kp_253 > div {
252
254
  margin: 0;
253
255
  height: auto;
256
+ border-radius: inherit;
254
257
  }
@@ -120,9 +120,24 @@
120
120
  -------------------------- */
121
121
  /* BEM
122
122
  -------------------------- */
123
- .ellipsis[data-v-87b93426] {
123
+ .ellipsis[data-v-2a567745] {
124
124
  white-space: nowrap;
125
125
  overflow: hidden;
126
126
  text-overflow: ellipsis;
127
127
  line-height: 1.2;
128
+ width: -moz-fit-content;
129
+ width: fit-content;
130
+ max-width: 100%;
131
+ }
132
+ .link[data-v-2a567745] {
133
+ display: inline-flex;
134
+ height: 100%;
135
+ align-items: center;
136
+ text-decoration: none;
137
+ color: var(--color-text-base);
138
+ text-decoration: underline;
139
+ max-width: 100%;
140
+ }
141
+ .link[data-v-2a567745]:hover {
142
+ color: var(--color-text-dark);
128
143
  }
@@ -1,17 +1,21 @@
1
- import { d as defineComponent, q as computed, r as ref, c as useI18n, i0 as transformInsightsFailureRate, i1 as INSIGHTS_UNIT_MAPPING, i3 as transformInsightsTimeSaved, i4 as transformInsightsAverageRunTime, h as resolveComponent, i as createElementBlock, g as openBlock, j as createVNode, w as withCtx, l as createTextVNode, e as createBlock, m as unref, aS as N8nTooltip, k as createBaseVNode, t as toDisplayString, F as Fragment, i5 as N8nDataTableServer, _ as _export_sfc } from "./index-D76xStxp.js";
2
- import { s as smartDecimal } from "./InsightsSummary-Bf61oFlG.js";
1
+ import { d as defineComponent, fA as mergeModels, q as computed, r as ref, c as useI18n, i3 as transformInsightsFailureRate, i4 as INSIGHTS_UNIT_MAPPING, i6 as transformInsightsTimeSaved, i7 as transformInsightsAverageRunTime, fB as useModel, I 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, aS as N8nTooltip, k as createBaseVNode, t as toDisplayString, F as Fragment, V as VIEWS, i8 as N8nDataTableServer, ai as useTelemetry, _ as _export_sfc } from "./index-B-Y7sDIj.js";
2
+ import { s as smartDecimal } from "./InsightsSummary-BzdlA4Dr.js";
3
3
  const _hoisted_1 = { class: "ellipsis" };
4
4
  const _hoisted_2 = { class: "ellipsis" };
5
5
  const _sfc_main = /* @__PURE__ */ defineComponent({
6
6
  __name: "InsightsTableWorkflows",
7
- props: {
7
+ props: /* @__PURE__ */ mergeModels({
8
8
  data: {},
9
9
  loading: { type: Boolean }
10
- },
11
- emits: ["update:options"],
10
+ }, {
11
+ "sortBy": {},
12
+ "sortByModifiers": {}
13
+ }),
14
+ emits: /* @__PURE__ */ mergeModels(["update:options"], ["update:sortBy"]),
12
15
  setup(__props, { emit: __emit }) {
13
16
  const props = __props;
14
17
  const i18n = useI18n();
18
+ const telemetry = useTelemetry();
15
19
  const rows = computed(() => props.data.data);
16
20
  const headers = ref([
17
21
  {
@@ -56,17 +60,38 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
56
60
  }
57
61
  },
58
62
  {
59
- title: "Project name",
63
+ title: i18n.baseText("insights.dashboard.table.projectName"),
60
64
  key: "projectName",
61
65
  disableSort: true
62
66
  }
63
67
  ]);
64
- const sortTableBy = ref([{ id: "total", desc: true }]);
68
+ const sortBy = useModel(__props, "sortBy");
65
69
  const currentPage = ref(0);
66
70
  const itemsPerPage = ref(20);
67
71
  const emit = __emit;
72
+ const getWorkflowLink = (item, query) => ({
73
+ name: VIEWS.WORKFLOW,
74
+ params: {
75
+ name: item.workflowId
76
+ },
77
+ query
78
+ });
79
+ const trackWorkflowClick = (item) => {
80
+ telemetry.track("User clicked on workflow from insights table", {
81
+ workflow_id: item.workflowId
82
+ });
83
+ };
84
+ watch(sortBy, (newValue) => {
85
+ telemetry.track("User sorted insights table", {
86
+ sorted_by: (newValue ?? []).map((item) => ({
87
+ ...item,
88
+ label: headers.value.find((header) => header.key === item.id)?.title
89
+ }))
90
+ });
91
+ });
68
92
  return (_ctx, _cache) => {
69
93
  const _component_N8nHeading = resolveComponent("N8nHeading");
94
+ const _component_router_link = resolveComponent("router-link");
70
95
  return openBlock(), createElementBlock("div", null, [
71
96
  createVNode(_component_N8nHeading, {
72
97
  bold: "",
@@ -80,8 +105,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
80
105
  _: 1
81
106
  }),
82
107
  createVNode(N8nDataTableServer, {
83
- "sort-by": sortTableBy.value,
84
- "onUpdate:sortBy": _cache[0] || (_cache[0] = ($event) => sortTableBy.value = $event),
108
+ "sort-by": sortBy.value,
109
+ "onUpdate:sortBy": _cache[0] || (_cache[0] = ($event) => sortBy.value = $event),
85
110
  page: currentPage.value,
86
111
  "onUpdate:page": _cache[1] || (_cache[1] = ($event) => currentPage.value = $event),
87
112
  "items-per-page": itemsPerPage.value,
@@ -93,15 +118,38 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
93
118
  "onUpdate:options": _cache[3] || (_cache[3] = ($event) => emit("update:options", $event))
94
119
  }, {
95
120
  [`item.workflowName`]: withCtx(({ item }) => [
96
- createVNode(unref(N8nTooltip), {
97
- content: item.workflowName,
98
- placement: "top"
121
+ createVNode(_component_router_link, {
122
+ to: getWorkflowLink(item),
123
+ class: "link",
124
+ onClick: ($event) => trackWorkflowClick(item)
125
+ }, {
126
+ default: withCtx(() => [
127
+ createVNode(unref(N8nTooltip), {
128
+ content: item.workflowName,
129
+ placement: "top"
130
+ }, {
131
+ default: withCtx(() => [
132
+ createBaseVNode("div", _hoisted_1, toDisplayString(item.workflowName), 1)
133
+ ]),
134
+ _: 2
135
+ }, 1032, ["content"])
136
+ ]),
137
+ _: 2
138
+ }, 1032, ["to", "onClick"])
139
+ ]),
140
+ [`item.timeSaved`]: withCtx(({ item, value }) => [
141
+ !item.timeSaved ? (openBlock(), createBlock(_component_router_link, {
142
+ key: 0,
143
+ to: getWorkflowLink(item, { settings: "true" }),
144
+ class: "link"
99
145
  }, {
100
146
  default: withCtx(() => [
101
- createBaseVNode("div", _hoisted_1, toDisplayString(item.workflowName), 1)
147
+ createTextVNode(toDisplayString(unref(i18n).baseText("insights.dashboard.table.estimate")), 1)
102
148
  ]),
103
149
  _: 2
104
- }, 1032, ["content"])
150
+ }, 1032, ["to"])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
151
+ createTextVNode(toDisplayString(value), 1)
152
+ ], 64))
105
153
  ]),
106
154
  [`item.projectName`]: withCtx(({ item }) => [
107
155
  item.projectName ? (openBlock(), createBlock(unref(N8nTooltip), {
@@ -123,7 +171,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
123
171
  };
124
172
  }
125
173
  });
126
- const InsightsTableWorkflows = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-87b93426"]]);
174
+ const InsightsTableWorkflows = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-2a567745"]]);
127
175
  export {
128
176
  InsightsTableWorkflows as default
129
177
  };
@@ -1,4 +1,4 @@
1
- import { i as createElementBlock, g as openBlock, k as createBaseVNode, d as defineComponent, q as computed, a0 as useCssModule, bA as useTemplateRef, o as onMounted, dj 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-D76xStxp.js";
1
+ import { i as createElementBlock, g as openBlock, k as createBaseVNode, d as defineComponent, q as computed, a0 as useCssModule, bA as useTemplateRef, o as onMounted, di 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-B-Y7sDIj.js";
2
2
  const _hoisted_1$1 = {
3
3
  xmlns: "http://www.w3.org/2000/svg",
4
4
  width: "32",
@@ -1,12 +1,12 @@
1
- import { d as defineComponent, s as MAIN_HEADER_TABS, h as resolveComponent, i as createElementBlock, f as createCommentVNode, g as openBlock, n as normalizeClass, j as createVNode, _ as _export_sfc, q as computed, v as shorten, x as renderSlot, r as ref, y as onBeforeUnmount, o as onMounted, z as nextTick, A as debounce, e as createBlock, m as unref, B as normalizeStyle, C as createEventBus, w as withCtx, k as createBaseVNode, F as Fragment, D as renderList, l as createTextVNode, t as toDisplayString, E as useTagsStore, G as onClickOutside, H as withKeys, I as watch, J as withModifiers, K as useDebounce, L as useUIStore, N as BREAKPOINT_SM, O as BREAKPOINT_XL, P as BREAKPOINT_LG, Q as BREAKPOINT_MD, R as getBannerRowHeight, V as VIEWS, c as useI18n, S as defineStore, T as usePushConnectionStore, U as useWorkflowsStore, u as useUsersStore, W as useRoute, X as PLACEHOLDER_EMPTY_WORKFLOW_ID, Y as STORES, Z as TIME, $ as useDocumentVisibility, a0 as useCssModule, a1 as useRootStore, a2 as useCanvasStore, p as useSettingsStore, a3 as useSourceControlStore, a4 as useProjectsStore, a5 as useNpsSurveyStore, b as useRouter, a as useToast, a6 as useDocumentTitle, a7 as useWorkflowHelpers, a8 as usePageRedirectionHelper, a9 as getResourcePermissions, aa as WORKFLOW_MENU_ACTIONS, ab as hasPermission, ac as EnterpriseEditionFeature, ad as ProjectTypes, ae as MAX_WORKFLOW_NAME_LENGTH, af as _sfc_main$f, ag as SaveButton, ah as WORKFLOW_SHARE_MODAL_KEY, ai as useTelemetry, aj as nodeViewEventBus, ak as useMessage, al as MODAL_CONFIRM, am as WORKFLOW_SETTINGS_MODAL_KEY, an as SOURCE_CONTROL_PUSH_MODAL_KEY, ao as VALID_WORKFLOW_IMPORT_URL_REGEX, ap as DUPLICATE_MODAL_KEY, aq as __vitePreload, ar as hyphenate, as as h, at as hasOwn, au as useNDVStore, av as useExecutionsStore, aw as usePostHog, ax as useLocalStorage, ay as LOCAL_STORAGE_HIDE_GITHUB_STAR_BUTTON, az as WORKFLOW_EVALUATION_EXPERIMENT, aA as STICKY_NODE_TYPE, aB as onBeforeMount, aC as withDirectives, aD as vShow, aE as N8N_MAIN_GITHUB_REPO_URL } from "./index-D76xStxp.js";
2
- import { _ as _sfc_main$g } from "./PushConnectionTracker.vue_vue_type_script_setup_true_lang-CShLauba.js";
3
- import { W as WorkflowActivator } from "./WorkflowActivator-D9fExB06.js";
4
- import { u as useBeforeUnload } from "./useBeforeUnload-CDzomPGL.js";
5
- import { F as FileSaver_minExports } from "./FileSaver.min-CsyH54Dh.js";
6
- import { u as usePushConnection } from "./usePushConnection-potv7eom.js";
7
- import "./useWorkflowActivate-BvmFVCGP.js";
8
- import "./global-link-actions-CfWIYTMM.js";
9
- import "./easyAiWorkflowUtils-C5xkiwuo.js";
1
+ import { d as defineComponent, s as MAIN_HEADER_TABS, h as resolveComponent, i as createElementBlock, f as createCommentVNode, g as openBlock, n as normalizeClass, j as createVNode, _ as _export_sfc, q as computed, v as shorten, x as renderSlot, r as ref, y as onBeforeUnmount, o as onMounted, z as nextTick, A as debounce, e as createBlock, m as unref, B as normalizeStyle, C as createEventBus, w as withCtx, k as createBaseVNode, F as Fragment, D as renderList, l as createTextVNode, t as toDisplayString, E as useTagsStore, G as onClickOutside, H as withKeys, I as watch, J as withModifiers, K as useDebounce, L as useUIStore, N as BREAKPOINT_SM, O as BREAKPOINT_XL, P as BREAKPOINT_LG, Q as BREAKPOINT_MD, R as getBannerRowHeight, V as VIEWS, c as useI18n, S as defineStore, T as usePushConnectionStore, U as useWorkflowsStore, u as useUsersStore, W as useRoute, X as PLACEHOLDER_EMPTY_WORKFLOW_ID, Y as STORES, Z as TIME, $ as useDocumentVisibility, a0 as useCssModule, a1 as useRootStore, a2 as useCanvasStore, p as useSettingsStore, a3 as useSourceControlStore, a4 as useProjectsStore, a5 as useNpsSurveyStore, b as useRouter, a as useToast, a6 as useDocumentTitle, a7 as useWorkflowHelpers, a8 as usePageRedirectionHelper, a9 as getResourcePermissions, aa as WORKFLOW_MENU_ACTIONS, ab as hasPermission, ac as EnterpriseEditionFeature, ad as ProjectTypes, ae as MAX_WORKFLOW_NAME_LENGTH, af as _sfc_main$f, ag as SaveButton, ah as WORKFLOW_SHARE_MODAL_KEY, ai as useTelemetry, aj as nodeViewEventBus, ak as useMessage, al as MODAL_CONFIRM, am as WORKFLOW_SETTINGS_MODAL_KEY, an as SOURCE_CONTROL_PUSH_MODAL_KEY, ao as VALID_WORKFLOW_IMPORT_URL_REGEX, ap as DUPLICATE_MODAL_KEY, aq as __vitePreload, ar as hyphenate, as as h, at as hasOwn, au as useNDVStore, av as useExecutionsStore, aw as usePostHog, ax as useLocalStorage, ay as LOCAL_STORAGE_HIDE_GITHUB_STAR_BUTTON, az as WORKFLOW_EVALUATION_EXPERIMENT, aA as STICKY_NODE_TYPE, aB as onBeforeMount, aC as withDirectives, aD as vShow, aE as N8N_MAIN_GITHUB_REPO_URL } from "./index-B-Y7sDIj.js";
2
+ import { _ as _sfc_main$g } from "./PushConnectionTracker.vue_vue_type_script_setup_true_lang-DtHAaMts.js";
3
+ import { W as WorkflowActivator } from "./WorkflowActivator-E1mdIOaC.js";
4
+ import { u as useBeforeUnload } from "./useBeforeUnload-oRTjaea2.js";
5
+ import { F as FileSaver_minExports } from "./FileSaver.min-DAXzY4JY.js";
6
+ import { u as usePushConnection } from "./usePushConnection-SgX-5Lz6.js";
7
+ import "./useWorkflowActivate-CX21vkKl.js";
8
+ import "./global-link-actions-B6woWi9D.js";
9
+ import "./easyAiWorkflowUtils-CCJdF1g3.js";
10
10
  const _sfc_main$e = /* @__PURE__ */ defineComponent({
11
11
  __name: "TabBar",
12
12
  props: {
@@ -1,5 +1,5 @@
1
- import { d as defineComponent, aF as useLoadingService, L as useUIStore, a3 as useSourceControlStore, a as useToast, r as ref, q as computed, ab as hasPermission, h as resolveComponent, i as createElementBlock, f as createCommentVNode, g as openBlock, B as normalizeStyle, n as normalizeClass, m as unref, k as createBaseVNode, j as createVNode, l as createTextVNode, t as toDisplayString, e as createBlock, w as withCtx, c as useI18n, C as createEventBus, an as SOURCE_CONTROL_PUSH_MODAL_KEY, aG as notifyUserAboutPullWorkFolderOutcome, aH as sourceControlEventBus, aI as SOURCE_CONTROL_PULL_MODAL_KEY, _ as _export_sfc, aJ as get, S as defineStore, aK as useCloudPlanStore, a1 as useRootStore, aL as useStorage, aM as DateTime, Y as STORES, ai as useTelemetry, p as useSettingsStore, a4 as useProjectsStore, b as useRouter, aN as sortByProperty, V as VIEWS, a9 as getResourcePermissions, a8 as usePageRedirectionHelper, F as Fragment, D as renderList, aO as useDebugInfo, aP as useTemplatesStore, u as useUsersStore, aQ as useVersionsStore, U as useWorkflowsStore, K as useDebounce, W as useRoute, o as onMounted, aR as useExternalHooks, z as nextTick, y as onBeforeUnmount, G as onClickOutside, aS as N8nTooltip, aT as N8nLink, aU as _sfc_main$5, aV as N8nNavigationDropdown, aW as createSlots, aX as VERSIONS_MODAL_KEY, aY as ABOUT_MODAL_KEY } from "./index-D76xStxp.js";
2
- import { L as Logo } from "./Logo-DZ8mhDMd.js";
1
+ import { d as defineComponent, aF as useLoadingService, L as useUIStore, a3 as useSourceControlStore, a as useToast, r as ref, q as computed, ab as hasPermission, h as resolveComponent, i as createElementBlock, f as createCommentVNode, g as openBlock, B as normalizeStyle, n as normalizeClass, m as unref, k as createBaseVNode, j as createVNode, l as createTextVNode, t as toDisplayString, e as createBlock, w as withCtx, c as useI18n, C as createEventBus, an as SOURCE_CONTROL_PUSH_MODAL_KEY, aG as notifyUserAboutPullWorkFolderOutcome, aH as sourceControlEventBus, aI as SOURCE_CONTROL_PULL_MODAL_KEY, _ as _export_sfc, aJ as get, S as defineStore, aK as useCloudPlanStore, a1 as useRootStore, aL as useStorage, aM as DateTime, Y as STORES, ai as useTelemetry, p as useSettingsStore, a4 as useProjectsStore, b as useRouter, aN as sortByProperty, V as VIEWS, a9 as getResourcePermissions, a8 as usePageRedirectionHelper, F as Fragment, D as renderList, aO as useDebugInfo, aP as useTemplatesStore, u as useUsersStore, aQ as useVersionsStore, U as useWorkflowsStore, K as useDebounce, W as useRoute, o as onMounted, aR as useExternalHooks, z as nextTick, y as onBeforeUnmount, G as onClickOutside, aS as N8nTooltip, aT as N8nLink, aU as _sfc_main$5, aV as N8nNavigationDropdown, aW as createSlots, aX as VERSIONS_MODAL_KEY, aY as ABOUT_MODAL_KEY } from "./index-B-Y7sDIj.js";
2
+ import { L as Logo } from "./Logo-CmGfYtCL.js";
3
3
  const _sfc_main$4 = /* @__PURE__ */ defineComponent({
4
4
  __name: "MainSidebarSourceControl",
5
5
  props: {
@@ -968,6 +968,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
968
968
  trackHelpItemClick(key);
969
969
  break;
970
970
  }
971
+ case "insights":
972
+ telemetry.track("User clicked insights link from side menu");
971
973
  }
972
974
  };
973
975
  function onResize() {
@@ -1,6 +1,6 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/NodeCreator-BHji7uJa.js","assets/index-D76xStxp.js","assets/index-DJ205bL0.css","assets/useCanvasOperations-CAthHfOB.js","assets/NodeCreator-D9fmPdS2.css"])))=>i.map(i=>d[i]);
2
- import { bw as useNodeTypesStore, q as computed, c as useI18n, U as useWorkflowsStore, eI as MANUAL_TRIGGER_NODE_TYPE, gT as CHAIN_LLM_LANGCHAIN_NODE_TYPE, bu as NodeConnectionTypes, bv as CHAT_TRIGGER_NODE_TYPE, gU as OPEN_AI_NODE_MESSAGE_ASSISTANT_TYPE, gV as OPEN_AI_NODE_TYPE, eA as SPLIT_IN_BATCHES_NODE_TYPE, gW as NO_OP_NODE_TYPE, eD as WEBHOOK_NODE_TYPE, eK as SCHEDULE_TRIGGER_NODE_TYPE, aR as useExternalHooks, a2 as useCanvasStore, e1 as AI_CATEGORY_LANGUAGE_MODELS, gX as QA_CHAIN_NODE_TYPE, gY as AGENT_NODE_TYPE, gZ as BASIC_CHAIN_NODE_TYPE, g_ as OPEN_AI_ASSISTANT_NODE_TYPE, aA as STICKY_NODE_TYPE, eG as TRIGGER_NODE_CREATOR_VIEW, c5 as NODE_CREATOR_OPEN_SOURCES, d as defineComponent, L as useUIStore, r as ref, fr as useThrottleFn, o as onMounted, y as onBeforeUnmount, h as resolveComponent, i as createElementBlock, g as openBlock, f as createCommentVNode, e as createBlock, n as normalizeClass, k as createBaseVNode, j as createVNode, w as withCtx, m as unref, bK as KeyboardShortcutTooltip, bZ as defineAsyncComponent, bY as Suspense, F as Fragment, aq as __vitePreload, g$ as getMidCanvasPosition, h0 as DEFAULT_STICKY_WIDTH, h1 as DEFAULT_STICKY_HEIGHT, _ as _export_sfc } from "./index-D76xStxp.js";
3
- import { a as useNodeCreatorStore, t as transformNodeType, s as sortNodeCreateElements } from "./useCanvasOperations-CAthHfOB.js";
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/NodeCreator-Dt7b_La2.js","assets/index-B-Y7sDIj.js","assets/index-DwKuVkBg.css","assets/useCanvasOperations-DYORubSM.js","assets/NodeCreator-D9fmPdS2.css"])))=>i.map(i=>d[i]);
2
+ import { bw as useNodeTypesStore, q as computed, c as useI18n, U as useWorkflowsStore, eH as MANUAL_TRIGGER_NODE_TYPE, gV as CHAIN_LLM_LANGCHAIN_NODE_TYPE, bu as NodeConnectionTypes, bv as CHAT_TRIGGER_NODE_TYPE, gW as OPEN_AI_NODE_MESSAGE_ASSISTANT_TYPE, gX as OPEN_AI_NODE_TYPE, ez as SPLIT_IN_BATCHES_NODE_TYPE, gY as NO_OP_NODE_TYPE, eC as WEBHOOK_NODE_TYPE, eJ as SCHEDULE_TRIGGER_NODE_TYPE, aR as useExternalHooks, a2 as useCanvasStore, e0 as AI_CATEGORY_LANGUAGE_MODELS, gZ as QA_CHAIN_NODE_TYPE, g_ as AGENT_NODE_TYPE, g$ as BASIC_CHAIN_NODE_TYPE, h0 as OPEN_AI_ASSISTANT_NODE_TYPE, aA as STICKY_NODE_TYPE, eF as TRIGGER_NODE_CREATOR_VIEW, c4 as NODE_CREATOR_OPEN_SOURCES, d as defineComponent, L as useUIStore, r as ref, fs as useThrottleFn, o as onMounted, y as onBeforeUnmount, h as resolveComponent, i as createElementBlock, g as openBlock, f as createCommentVNode, e as createBlock, n as normalizeClass, k as createBaseVNode, j as createVNode, w as withCtx, m as unref, bK as KeyboardShortcutTooltip, bZ as defineAsyncComponent, bY as Suspense, F as Fragment, aq as __vitePreload, h1 as getMidCanvasPosition, h2 as DEFAULT_STICKY_WIDTH, h3 as DEFAULT_STICKY_HEIGHT, _ as _export_sfc } from "./index-B-Y7sDIj.js";
3
+ import { a as useNodeCreatorStore, t as transformNodeType, s as sortNodeCreateElements } from "./useCanvasOperations-DYORubSM.js";
4
4
  const useActions = () => {
5
5
  const nodeCreatorStore = useNodeCreatorStore();
6
6
  const nodeTypesStore = useNodeTypesStore();
@@ -241,7 +241,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
241
241
  emits: ["addNodes", "toggleNodeCreator"],
242
242
  setup(__props, { emit: __emit }) {
243
243
  const LazyNodeCreator = defineAsyncComponent(
244
- async () => await __vitePreload(() => import("./NodeCreator-BHji7uJa.js"), true ? __vite__mapDeps([0,1,2,3,4]) : void 0)
244
+ async () => await __vitePreload(() => import("./NodeCreator-Dt7b_La2.js"), true ? __vite__mapDeps([0,1,2,3,4]) : void 0)
245
245
  );
246
246
  const props = __props;
247
247
  const emit = __emit;
@@ -1,6 +1,6 @@
1
- import { dO as createCompounder, i6 as memoize, de as i18n, eC as HTTP_REQUEST_NODE_TYPE, i7 as getCredentialOnlyNodeType, e8 as AI_CATEGORY_TOOLS, eN as AI_CATEGORY_ROOT_NODES, eS as CUSTOM_API_CALL_KEY, bn as AI_SUBCATEGORY, d as defineComponent, bL as reactive, o as onMounted, aR as useExternalHooks, y as onBeforeUnmount, a$ as toRefs, h as resolveComponent, i as createElementBlock, g as openBlock, n as normalizeClass, k as createBaseVNode, f as createCommentVNode, j as createVNode, _ as _export_sfc, hu as useNodeType, r as ref, q as computed, dW as DEFAULT_SUBCATEGORY, i8 as CREDENTIAL_ONLY_NODE_PREFIX, c as useI18n, eF as HITL_SUBCATEGORY, dI as isCommunityPackageName, cc as resolveDirective, e as createBlock, aW as createSlots, w as withCtx, aC as withDirectives, aD as vShow, B as normalizeStyle, bC as _sfc_main$h, J as withModifiers, m as unref, cE as COMMUNITY_NODES_INSTALLATION_DOCS_URL, c6 as DRAG_EVENT_DATA_KEY, ai as useTelemetry, b3 as mergeProps, t as toDisplayString, eD as WEBHOOK_NODE_TYPE, eU as getNewNodePosition, f6 as NODE_SIZE, x as renderSlot, U as useWorkflowsStore, I as watch, b0 as normalizeProps, b1 as guardReactiveProps, b7 as onUnmounted, F as Fragment, D as renderList, eH as REGULAR_NODE_CREATOR_VIEW, u as useUsersStore, eG as TRIGGER_NODE_CREATOR_VIEW, gV as OPEN_AI_NODE_TYPE, gU as OPEN_AI_NODE_MESSAGE_ASSISTANT_TYPE, i9 as withMemo, gi as createStaticVNode, l as createTextVNode, ia as REQUEST_NODE_FORM_URL, fN as getNodeIconSource, d$ as SEND_AND_WAIT_OPERATION, ec as AI_OTHERS_NODE_CREATOR_VIEW, ed as AI_NODE_CREATOR_VIEW, K as useDebounce, fE as Transition, eb as AI_UNCATEGORIZED_CATEGORY, L as useUIStore, dr as useAssistantStore, aU as _sfc_main$i, ib as SlideTransition, bw as useNodeTypesStore, bM as useCredentialsStore } from "./index-D76xStxp.js";
2
- import { u as upperFirst, g as formatTriggerActionName, a as useNodeCreatorStore, h as useViewStacks, j as camelCase, k as useKeyboardNavigation, t as transformNodeType, A as AINodesView, l as AIView, R as RegularView, T as TriggerView, n as flattenCreateElements } from "./useCanvasOperations-CAthHfOB.js";
3
- import { u as useActions } from "./NodeCreation-DiUBT9p0.js";
1
+ import { dN as createCompounder, i9 as memoize, dd as i18n, eB as HTTP_REQUEST_NODE_TYPE, ia as getCredentialOnlyNodeType, e7 as AI_CATEGORY_TOOLS, eM as AI_CATEGORY_ROOT_NODES, eS as CUSTOM_API_CALL_KEY, bn as AI_SUBCATEGORY, d as defineComponent, bL as reactive, o as onMounted, aR as useExternalHooks, y as onBeforeUnmount, a$ as toRefs, h as resolveComponent, i as createElementBlock, g as openBlock, n as normalizeClass, k as createBaseVNode, f as createCommentVNode, j as createVNode, _ as _export_sfc, hx as useNodeType, r as ref, q as computed, dV as DEFAULT_SUBCATEGORY, ib as CREDENTIAL_ONLY_NODE_PREFIX, c as useI18n, eE as HITL_SUBCATEGORY, dH as isCommunityPackageName, cb as resolveDirective, e as createBlock, aW as createSlots, w as withCtx, aC as withDirectives, aD as vShow, B as normalizeStyle, bC as _sfc_main$h, J as withModifiers, m as unref, cD as COMMUNITY_NODES_INSTALLATION_DOCS_URL, c5 as DRAG_EVENT_DATA_KEY, ai as useTelemetry, b3 as mergeProps, t as toDisplayString, eC as WEBHOOK_NODE_TYPE, eV as getNewNodePosition, f7 as NODE_SIZE, x as renderSlot, U as useWorkflowsStore, I as watch, b0 as normalizeProps, b1 as guardReactiveProps, b7 as onUnmounted, F as Fragment, D as renderList, eG as REGULAR_NODE_CREATOR_VIEW, u as useUsersStore, eF as TRIGGER_NODE_CREATOR_VIEW, gX as OPEN_AI_NODE_TYPE, gW as OPEN_AI_NODE_MESSAGE_ASSISTANT_TYPE, ic as withMemo, gj as createStaticVNode, l as createTextVNode, id as REQUEST_NODE_FORM_URL, fO as getNodeIconSource, d_ as SEND_AND_WAIT_OPERATION, eb as AI_OTHERS_NODE_CREATOR_VIEW, ec as AI_NODE_CREATOR_VIEW, K as useDebounce, fF as Transition, ea as AI_UNCATEGORIZED_CATEGORY, L as useUIStore, dq as useAssistantStore, aU as _sfc_main$i, ie as SlideTransition, bw as useNodeTypesStore, bM as useCredentialsStore } from "./index-B-Y7sDIj.js";
2
+ import { u as upperFirst, g as formatTriggerActionName, a as useNodeCreatorStore, h as useViewStacks, j as camelCase, k as useKeyboardNavigation, t as transformNodeType, A as AINodesView, l as AIView, R as RegularView, T as TriggerView, n as flattenCreateElements } from "./useCanvasOperations-DYORubSM.js";
3
+ import { u as useActions } from "./NodeCreation-C9WNMB5W.js";
4
4
  var startCase = createCompounder(function(result, word, index) {
5
5
  return result + (index ? " " : "") + upperFirst(word);
6
6
  });