n8n-editor-ui 1.93.0 → 1.95.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 (128) hide show
  1. package/dist/assets/{AnimatedSpinner-hbTZDd93.js → AnimatedSpinner-DlBYfeum.js} +1 -1
  2. package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-CYzc5StE.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-b_VpBPcV.js} +1 -1
  3. package/dist/assets/{AuthView-8SLMP0H_.js → AuthView-3BmNl_WD.js} +2 -2
  4. package/dist/assets/{CanvasChatSwitch-Dt8TgNJg.js → CanvasChatSwitch-C8GVNbZv.js} +16 -18
  5. package/dist/assets/{ChangePasswordView-DIRyDp89.js → ChangePasswordView-HptU1MSc.js} +3 -3
  6. package/dist/assets/CollectionParameter-DB_Or-wG.js +4 -0
  7. package/dist/assets/{CredentialsView-B6-VxAJ6.js → CredentialsView-Dx5hgaaC.js} +7 -7
  8. package/dist/assets/{DemoFooter-CIHwH5PG.js → DemoFooter-BkSVK4cp.js} +6 -8
  9. package/dist/assets/{ErrorView-C7i0TZwT.js → ErrorView-HDHwqLgc.js} +1 -1
  10. package/dist/assets/EvaluationsRootView-B5AhHo41.css +594 -0
  11. package/dist/assets/EvaluationsRootView-CwzFA39P.js +654 -0
  12. package/dist/assets/{TestDefinitionListView-Di-Edppe.css → EvaluationsView-6l_Invxt.css} +193 -76
  13. package/dist/assets/EvaluationsView-Y_Nzp-LP.js +570 -0
  14. package/dist/assets/{ExecutionsTime.vue_vue_type_script_setup_true_lang--2G21NNR.js → ExecutionsTime.vue_vue_type_script_setup_true_lang-BioZloew.js} +2 -2
  15. package/dist/assets/{ExecutionsView-C_YtciAr.js → ExecutionsView-SVk21vMq.js} +18 -18
  16. package/dist/assets/{FileSaver.min-bgn7Q9Gt.js → FileSaver.min-ZbRn_Jz1.js} +1 -1
  17. package/dist/assets/{FixedCollectionParameter-BPCJ5aaq.js → FixedCollectionParameter-iCfhPCTX.js} +1 -1
  18. package/dist/assets/{ForgotMyPasswordView-DyUaGd6Z.js → ForgotMyPasswordView-DID5un7M.js} +3 -3
  19. package/dist/assets/{InsightsChartAverageRuntime-BB2I2vpV.js → InsightsChartAverageRuntime-Db4OWo7M.js} +4 -4
  20. package/dist/assets/{InsightsChartFailed-CN_Rl3Bl.js → InsightsChartFailed-DjssZ9vc.js} +4 -4
  21. package/dist/assets/{InsightsChartFailureRate-CHKlg6tg.js → InsightsChartFailureRate-C4U_fOhA.js} +4 -4
  22. package/dist/assets/{InsightsChartTimeSaved-Cd05cM8q.js → InsightsChartTimeSaved-DmcamM8z.js} +4 -4
  23. package/dist/assets/{InsightsChartTotal-ChAO7myf.js → InsightsChartTotal-ywrK30zz.js} +4 -4
  24. package/dist/assets/{InsightsDashboard-Bx4vx9gz.css → InsightsDashboard-BSrakbzr.css} +42 -8
  25. package/dist/assets/{InsightsDashboard-BeCfBVUz.js → InsightsDashboard-CM-ieUCq.js} +43 -41
  26. package/dist/assets/{InsightsPaywall-Chz8CDc3.js → InsightsPaywall-D-bIgmwT.js} +1 -1
  27. package/dist/assets/InsightsSummary-CwTpu3sa.js +209 -0
  28. package/dist/assets/{InsightsSummary-CdlaUpAt.css → InsightsSummary-DzGQpM5h.css} +27 -24
  29. package/dist/assets/{InsightsTableWorkflows-5rpYY7YT.js → InsightsTableWorkflows-CVtm_fGN.js} +5 -6
  30. package/dist/assets/{InsightsTableWorkflows-Blv_GPUj.css → InsightsTableWorkflows-DfTZQkWL.css} +3 -4
  31. package/dist/assets/{Logo-DUDCllkm.js → Logo-nyJoHWQJ.js} +1 -1
  32. package/dist/assets/{LogsPanel-mTaFEGk_.css → LogsPanel-D7j-yJQx.css} +14 -14
  33. package/dist/assets/{LogsPanel-D9r5AcQH.js → LogsPanel-mX9Nf6VB.js} +457 -360
  34. package/dist/assets/{MainHeader-DkKOOZ_D.js → MainHeader-DrG-_mAG.js} +35 -25
  35. package/dist/assets/{MainHeader-CEMGASqv.css → MainHeader-Y95RcfHb.css} +18 -18
  36. package/dist/assets/{MainSidebar-ZUBIWeXm.js → MainSidebar-BMWCsLJG.js} +2 -2
  37. package/dist/assets/{NodeCreation-DCfAFuL5.js → NodeCreation-CO1xHNgA.js} +3 -4
  38. package/dist/assets/{NodeCreator-a0YVv1IE.js → NodeCreator-Bcr66G_2.js} +174 -69
  39. package/dist/assets/{NodeCreator-D18StsVZ.css → NodeCreator-Cp8Apzva.css} +38 -21
  40. package/dist/assets/{NodeDetailsView-C5_hVJzj.js → NodeDetailsView-BFW65Lly.js} +42 -19
  41. package/dist/assets/{NodeDetailsView-pYP-34nS.css → NodeDetailsView-BtWGMS7Y.css} +16 -16
  42. package/dist/assets/{useCanvasMapping-CTTq6x8X.js → NodeView-4aDk41Oy.js} +3559 -11337
  43. package/dist/assets/{useCanvasMapping-VtpW_QZA.css → NodeView-U4YkXSfU.css} +309 -6
  44. package/dist/assets/{ProjectCardBadge-DRlDZx3d.js → ProjectCardBadge-CLVVfcVb.js} +1 -1
  45. package/dist/assets/{ProjectHeader-DNm605Kk.js → ProjectHeader-DQk1kmw3.js} +2 -2
  46. package/dist/assets/{ProjectSettings-Dge_6KaR.js → ProjectSettings-BLTHRnTQ.js} +15 -4
  47. package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-CUf0LkWR.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-DhLSSpy6.js} +1 -1
  48. package/dist/assets/{ResourcesListLayout-Bbl-1i4l.js → ResourcesListLayout-BlDcQdXw.js} +2 -2
  49. package/dist/assets/{RunData-b0RE2JWc.js → RunData-C67Kx3bc.js} +234 -92
  50. package/dist/assets/{RunData-DQeENuzG.css → RunData-CE5FsU6k.css} +2 -2
  51. package/dist/assets/{RunDataAi-DnWcCR_0.js → RunDataAi-_rd0qTgN.js} +3 -4
  52. package/dist/assets/{RunDataJson-CptVuHuA.js → RunDataJson-BP0x4Zdv.js} +6 -7
  53. package/dist/assets/{RunDataJsonActions-3jjDztw7.js → RunDataJsonActions-Bc0fqS6Y.js} +1 -1
  54. package/dist/assets/{RunDataParsedAiContent-BbXv-NPD.js → RunDataParsedAiContent-l1979DuT.js} +4 -5
  55. package/dist/assets/{RunDataSearch-B90wjsDA.js → RunDataSearch-CCGPQjFW.js} +1 -1
  56. package/dist/assets/{RunDataTable-CpS78GlT.js → RunDataTable-uzdBjxmW.js} +2 -3
  57. package/dist/assets/{SamlOnboarding-Ch9K5rRW.js → SamlOnboarding-D4xkCaRS.js} +3 -3
  58. package/dist/assets/{SettingsApiView-9GU5n_rm.js → SettingsApiView-ijuSJs-i.js} +1 -1
  59. package/dist/assets/{SettingsCommunityNodesView-CPnVRzNX.js → SettingsCommunityNodesView-D3I8P7Ea.js} +4 -4
  60. package/dist/assets/{SettingsExternalSecrets-D7xTMV9h.js → SettingsExternalSecrets-ndwnYVtu.js} +1 -1
  61. package/dist/assets/{SettingsLdapView-OfrjGKkt.js → SettingsLdapView-Dzhh3gD4.js} +1 -1
  62. package/dist/assets/{SettingsLogStreamingView-C_VnOaeX.js → SettingsLogStreamingView-D-Rr-Jph.js} +1 -1
  63. package/dist/assets/{SettingsPersonalView-Dm24akPV.js → SettingsPersonalView-Cf1cBUw8.js} +1 -1
  64. package/dist/assets/{SettingsSourceControl-DDCmL82j.js → SettingsSourceControl-BXRyD_N0.js} +1 -1
  65. package/dist/assets/{SettingsSso-BGGQ0Cpg.js → SettingsSso-DZTsjRCO.js} +1 -1
  66. package/dist/assets/{SettingsUsageAndPlan-BzO_zdkH.js → SettingsUsageAndPlan-BqY4ptNL.js} +1 -1
  67. package/dist/assets/{SettingsUsersView-DHQUqhqB.js → SettingsUsersView-eqXFp615.js} +1 -1
  68. package/dist/assets/{SettingsView-CbtAqjOX.js → SettingsView-CHSTMDKz.js} +1 -1
  69. package/dist/assets/{SetupView-BME1OE6U.js → SetupView-D6-b4i8i.js} +3 -3
  70. package/dist/assets/{SetupWorkflowCredentialsButton-DZr4TCPC.js → SetupWorkflowCredentialsButton-6SWeqGx-.js} +1 -1
  71. package/dist/assets/{SetupWorkflowFromTemplateView-CPkKEY04.js → SetupWorkflowFromTemplateView-DTZ8dEhY.js} +3 -3
  72. package/dist/assets/{SigninView-DUeRvOiY.js → SigninView-B3mpecGJ.js} +3 -3
  73. package/dist/assets/{SignoutView-BC7SBunZ.js → SignoutView-Bq9cEhcZ.js} +1 -1
  74. package/dist/assets/{SignupView-B5ecYJ2q.js → SignupView-BTyAq-gW.js} +3 -3
  75. package/dist/assets/{TemplateDetails-DjanZgC1.js → TemplateDetails-Bf7Xg-KJ.js} +1 -1
  76. package/dist/assets/{TemplateList-8TyNGxY-.js → TemplateList-BmXxTP4v.js} +1 -1
  77. package/dist/assets/{TemplatesCollectionView-BkH4pJCv.js → TemplatesCollectionView-DKwycT_4.js} +5 -5
  78. package/dist/assets/{TemplatesSearchView-Bcdhi1SL.js → TemplatesSearchView-ciluP1sL.js} +3 -3
  79. package/dist/assets/{TemplatesView-De2XB6We.js → TemplatesView-CDdQbnxe.js} +1 -1
  80. package/dist/assets/{TemplatesWorkflowView-BVnwtrMa.js → TemplatesWorkflowView-uQ3eG-nR.js} +5 -5
  81. package/dist/assets/{VariablesView-BZCvPfan.js → VariablesView-Bve2WEng.js} +4 -4
  82. package/dist/assets/{WorkerView-CigxqnWi.js → WorkerView-CUyaAqvY.js} +6 -6
  83. package/dist/assets/{WorkflowActivator-B7jRy4L1.js → WorkflowActivator-DZSvs7Ye.js} +11 -9
  84. package/dist/assets/{WorkflowExecutionsInfoAccordion-C_ZycbsF.js → WorkflowExecutionsInfoAccordion-DTbkpnyq.js} +1 -1
  85. package/dist/assets/{WorkflowExecutionsLandingPage-DOqrfKlC.js → WorkflowExecutionsLandingPage-DNc0pN7t.js} +2 -2
  86. package/dist/assets/{WorkflowExecutionsPreview-B4Cj2gXW.js → WorkflowExecutionsPreview-SdFojcu-.js} +5 -6
  87. package/dist/assets/{WorkflowExecutionsView-RXfP7zkJ.js → WorkflowExecutionsView-CAbXPlyv.js} +10 -11
  88. package/dist/assets/{WorkflowHistory-DrXrRwIS.js → WorkflowHistory-BIFuha5h.js} +3 -3
  89. package/dist/assets/{WorkflowOnboardingView-CXH1vCW2.js → WorkflowOnboardingView-DLRgnF3H.js} +1 -1
  90. package/dist/assets/{WorkflowPreview-B_MuFEV8.js → WorkflowPreview-DRSvh1f-.js} +1 -1
  91. package/dist/assets/{WorkflowsView-D90hfJ35.js → WorkflowsView-DOQhvV_X.js} +9 -9
  92. package/dist/assets/{useClearExecutionButtonVisible-Dwc1_eG9.js → canvas-CdHFQJm7.js} +3 -2
  93. package/dist/assets/{chartjs.utils-DalQn9bk.js → chartjs.utils-hlpJdzhb.js} +2 -2
  94. package/dist/assets/{easyAiWorkflowUtils-kgtpBx2h.js → easyAiWorkflowUtils-GnIqpmRr.js} +1 -1
  95. package/dist/assets/{global-link-actions-CnWOMvqA.js → global-link-actions-CExoAUZJ.js} +1 -1
  96. package/dist/assets/{import-curl-BvX_O56D.js → import-curl-D2S8-TVc.js} +1 -1
  97. package/dist/assets/{index-DZ6VpjNj.js → index-BSlk84mz.js} +79639 -67526
  98. package/dist/assets/{index-yNaoC3fo.css → index-DH8MNLw5.css} +195 -488
  99. package/dist/assets/{index-Bb2NNknG.js → index-lOeP0Jxq.js} +1 -1
  100. package/dist/assets/{pickBy-B_HGYyxS.js → pickBy-BoYQMT9v.js} +1 -1
  101. package/dist/assets/{polyfills-CLZ4X0Ad.js → polyfills-J2x06Gdp.js} +157 -224
  102. package/dist/assets/{templateActions-DQfZ3ni5.js → templateActions-CAEk7dfj.js} +1 -1
  103. package/dist/assets/{typescript.worker-BsxN2afA.js → typescript.worker-DIrCbxuR.js} +2 -2
  104. package/dist/assets/{useBeforeUnload-Cu0LPVWe.js → useBeforeUnload-COWlK6zC.js} +1 -1
  105. package/dist/assets/{useExecutionDebugging-rc72wLIp.js → useExecutionDebugging-DOtIA9Qr.js} +1 -1
  106. package/dist/assets/{useExecutionHelpers-DqwMonFW.js → useExecutionHelpers-q1_8c2Pm.js} +2 -3
  107. package/dist/assets/{useImportCurlCommand-D_onuFvo.js → useImportCurlCommand-CbwqixK0.js} +2 -2
  108. package/dist/assets/{useProjectPages-e8b03-5_.js → useProjectPages-DlqnxMvy.js} +1 -1
  109. package/dist/assets/{usePushConnection-wm-7Id6Q.js → usePushConnection-Bysa9RG-.js} +35 -111
  110. package/dist/assets/{useWorkflowActivate-65xML23U.js → useWorkflowActivate-B1ps647W.js} +1 -1
  111. package/dist/assets/{useWorkflowSaving-CUel20JA.js → useWorkflowSaving-BVNVyvlZ.js} +1 -1
  112. package/dist/index.html +3 -3
  113. package/package.json +1 -1
  114. package/tsconfig.json +1 -0
  115. package/vite.config.mts +4 -0
  116. package/dist/assets/CollectionParameter-Cj4t6-hd.js +0 -4
  117. package/dist/assets/InsightsSummary-MECenLJQ.js +0 -207
  118. package/dist/assets/NodeView-Bk9h8GYy.js +0 -1719
  119. package/dist/assets/NodeView-C3A-bM1O.css +0 -304
  120. package/dist/assets/TestDefinitionEditView-Cwkrz308.css +0 -1189
  121. package/dist/assets/TestDefinitionEditView-DjmPnrTk.js +0 -1464
  122. package/dist/assets/TestDefinitionListView-BL2s_qBZ.js +0 -631
  123. package/dist/assets/TestDefinitionNewView-B9BqJZST.js +0 -75
  124. package/dist/assets/TestDefinitionRootView-AlWyxbc0.js +0 -39
  125. package/dist/assets/TestDefinitionRootView-DFT60fWE.css +0 -126
  126. package/dist/assets/dateFormatter-BPfJSa6q.js +0 -21
  127. package/dist/assets/useCanvasOperations-u8oSDa_u.js +0 -2834
  128. package/dist/assets/useTestDefinitionForm-DlUOnNC0.js +0 -154
@@ -0,0 +1,654 @@
1
+ import { d as defineComponent, H as useUIStore, h as resolveComponent, e as createBlock, g as openBlock, m as unref, c as useI18n, eB as COMMUNITY_PLUS_ENROLLMENT_MODAL, i as createElementBlock, n as normalizeClass, bJ as N8nIcon, F as Fragment, l as createTextVNode, t as toDisplayString, _ as _export_sfc, j as createVNode, k as createBaseVNode, f as createCommentVNode, x as renderSlot, bf as N8nText, w as withCtx, eu as N8nBadge, b as useRouter, Q as useWorkflowsStore, g2 as useEvaluationStore, ey as useUsageStore, a6 as usePageRedirectionHelper, q as computed, r as ref, bh as N8nButton, dk as N8nCallout, S as PLACEHOLDER_EMPTY_WORKFLOW_ID, V as VIEWS, bz as useNodeTypesStore, a as useToast, cG as useCanvasOperations, es as useAsyncState, X as watch, aS as N8nLink, ag as useTelemetry } from "./index-BSlk84mz.js";
2
+ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
3
+ __name: "EvaluationsPaywall",
4
+ setup(__props) {
5
+ const i18n = useI18n();
6
+ const uiStore = useUIStore();
7
+ const goToUpgrade = async () => {
8
+ uiStore.openModalWithData({
9
+ name: COMMUNITY_PLUS_ENROLLMENT_MODAL,
10
+ data: {
11
+ customHeading: void 0
12
+ }
13
+ });
14
+ };
15
+ return (_ctx, _cache) => {
16
+ const _component_n8n_action_box = resolveComponent("n8n-action-box");
17
+ return openBlock(), createBlock(_component_n8n_action_box, {
18
+ "data-test-id": "evaluations-unlicensed",
19
+ heading: unref(i18n).baseText("evaluations.paywall.title"),
20
+ description: unref(i18n).baseText("evaluations.paywall.description"),
21
+ "button-text": unref(i18n).baseText("evaluations.paywall.cta"),
22
+ onClick: goToUpgrade
23
+ }, null, 8, ["heading", "description", "button-text"]);
24
+ };
25
+ }
26
+ });
27
+ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
28
+ __name: "StepIndicator",
29
+ props: {
30
+ stepNumber: {},
31
+ isCompleted: { type: Boolean },
32
+ isActive: { type: Boolean }
33
+ },
34
+ setup(__props) {
35
+ return (_ctx, _cache) => {
36
+ return openBlock(), createElementBlock("div", {
37
+ class: normalizeClass([
38
+ _ctx.$style.stepIndicator,
39
+ _ctx.isCompleted && _ctx.$style.completed,
40
+ _ctx.isActive && _ctx.$style.active,
41
+ !_ctx.isActive && !_ctx.isCompleted && _ctx.$style.inactive
42
+ ])
43
+ }, [
44
+ _ctx.isCompleted ? (openBlock(), createBlock(unref(N8nIcon), {
45
+ key: 0,
46
+ icon: "check",
47
+ size: "xsmall"
48
+ })) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
49
+ createTextVNode(toDisplayString(_ctx.stepNumber), 1)
50
+ ], 64))
51
+ ], 2);
52
+ };
53
+ }
54
+ });
55
+ const stepIndicator = "_stepIndicator_7bbfs_123";
56
+ const active = "_active_7bbfs_137";
57
+ const completed = "_completed_7bbfs_141";
58
+ const inactive = "_inactive_7bbfs_146";
59
+ const style0$3 = {
60
+ stepIndicator,
61
+ active,
62
+ completed,
63
+ inactive
64
+ };
65
+ const cssModules$3 = {
66
+ "$style": style0$3
67
+ };
68
+ const StepIndicator = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__cssModules", cssModules$3]]);
69
+ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
70
+ __name: "StepHeader",
71
+ props: {
72
+ stepNumber: {},
73
+ title: {},
74
+ isCompleted: { type: Boolean },
75
+ isActive: { type: Boolean },
76
+ isOptional: { type: Boolean }
77
+ },
78
+ emits: ["click"],
79
+ setup(__props, { emit: __emit }) {
80
+ const emit = __emit;
81
+ const locale = useI18n();
82
+ const handleClick = (event) => {
83
+ if (!event.target.closest("button") && !event.target.closest("a") && !event.target.closest("input") && !event.target.closest("select")) {
84
+ emit("click");
85
+ }
86
+ };
87
+ return (_ctx, _cache) => {
88
+ return openBlock(), createElementBlock("div", {
89
+ class: normalizeClass(_ctx.$style.stepHeader),
90
+ onClick: handleClick
91
+ }, [
92
+ createVNode(StepIndicator, {
93
+ "step-number": _ctx.stepNumber,
94
+ "is-completed": _ctx.isCompleted,
95
+ "is-active": _ctx.isActive
96
+ }, null, 8, ["step-number", "is-completed", "is-active"]),
97
+ createBaseVNode("div", {
98
+ class: normalizeClass(_ctx.$style.titleSlot)
99
+ }, [
100
+ renderSlot(_ctx.$slots, "default", {}, () => [
101
+ createVNode(unref(N8nText), {
102
+ size: "medium",
103
+ color: _ctx.isActive || _ctx.isCompleted ? "text-dark" : "text-light",
104
+ tag: "span",
105
+ bold: ""
106
+ }, {
107
+ default: withCtx(() => [
108
+ createTextVNode(toDisplayString(_ctx.title), 1)
109
+ ]),
110
+ _: 1
111
+ }, 8, ["color"])
112
+ ])
113
+ ], 2),
114
+ _ctx.isOptional ? (openBlock(), createBlock(unref(N8nBadge), {
115
+ key: 0,
116
+ style: { "background-color": "var(--color-background-base)", "border": "none" }
117
+ }, {
118
+ default: withCtx(() => [
119
+ createTextVNode(toDisplayString(unref(locale).baseText("evaluations.setupWizard.stepHeader.optional")), 1)
120
+ ]),
121
+ _: 1
122
+ })) : createCommentVNode("", true)
123
+ ], 2);
124
+ };
125
+ }
126
+ });
127
+ const stepHeader = "_stepHeader_1lr9z_123";
128
+ const style0$2 = {
129
+ stepHeader
130
+ };
131
+ const cssModules$2 = {
132
+ "$style": style0$2
133
+ };
134
+ const StepHeader = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__cssModules", cssModules$2]]);
135
+ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
136
+ __name: "SetupWizard",
137
+ emits: ["runTest"],
138
+ setup(__props) {
139
+ const router = useRouter();
140
+ const locale = useI18n();
141
+ const workflowsStore = useWorkflowsStore();
142
+ const evaluationStore = useEvaluationStore();
143
+ const usageStore = useUsageStore();
144
+ const pageRedirectionHelper = usePageRedirectionHelper();
145
+ const hasRuns = computed(() => {
146
+ return evaluationStore.testRunsByWorkflowId[workflowsStore.workflow.id]?.length > 0;
147
+ });
148
+ const evaluationsAvailable = computed(() => {
149
+ return usageStore.workflowsWithEvaluationsLimit === -1 || usageStore.workflowsWithEvaluationsCount < usageStore.workflowsWithEvaluationsLimit;
150
+ });
151
+ const evaluationsQuotaExceeded = computed(() => {
152
+ return usageStore.workflowsWithEvaluationsLimit !== -1 && usageStore.workflowsWithEvaluationsCount >= usageStore.workflowsWithEvaluationsLimit && !hasRuns.value;
153
+ });
154
+ const activeStepIndex = ref(0);
155
+ const initializeActiveStep = () => {
156
+ if (evaluationsQuotaExceeded.value) {
157
+ activeStepIndex.value = 2;
158
+ return;
159
+ }
160
+ if (evaluationStore.evaluationTriggerExists && evaluationStore.evaluationSetOutputsNodeExist && evaluationStore.evaluationSetMetricsNodeExist) {
161
+ activeStepIndex.value = 3;
162
+ } else if (evaluationStore.evaluationTriggerExists && evaluationStore.evaluationSetOutputsNodeExist) {
163
+ activeStepIndex.value = 2;
164
+ } else if (evaluationStore.evaluationTriggerExists) {
165
+ activeStepIndex.value = 1;
166
+ } else {
167
+ activeStepIndex.value = 0;
168
+ }
169
+ };
170
+ initializeActiveStep();
171
+ const toggleStep = (index) => {
172
+ activeStepIndex.value = index;
173
+ };
174
+ function navigateToWorkflow(action) {
175
+ const routeWorkflowId = workflowsStore.workflow.id === PLACEHOLDER_EMPTY_WORKFLOW_ID ? "new" : workflowsStore.workflow.id;
176
+ void router.push({
177
+ name: VIEWS.WORKFLOW,
178
+ params: { name: routeWorkflowId },
179
+ query: action ? { action } : void 0
180
+ });
181
+ }
182
+ function onSeePlans() {
183
+ void pageRedirectionHelper.goToUpgrade("evaluations", "upgrade-evaluations");
184
+ }
185
+ return (_ctx, _cache) => {
186
+ const _component_i18n_t = resolveComponent("i18n-t");
187
+ return openBlock(), createElementBlock("div", {
188
+ class: normalizeClass(_ctx.$style.container),
189
+ "data-test-id": "evaluation-setup-wizard"
190
+ }, [
191
+ createBaseVNode("div", {
192
+ class: normalizeClass(_ctx.$style.steps)
193
+ }, [
194
+ createBaseVNode("div", {
195
+ class: normalizeClass([_ctx.$style.step, _ctx.$style.completed])
196
+ }, [
197
+ createVNode(StepHeader, {
198
+ "step-number": 1,
199
+ title: unref(locale).baseText("evaluations.setupWizard.step1.title"),
200
+ "is-completed": unref(evaluationStore).evaluationTriggerExists,
201
+ "is-active": activeStepIndex.value === 0,
202
+ onClick: _cache[0] || (_cache[0] = ($event) => toggleStep(0))
203
+ }, null, 8, ["title", "is-completed", "is-active"]),
204
+ activeStepIndex.value === 0 ? (openBlock(), createElementBlock("div", {
205
+ key: 0,
206
+ class: normalizeClass(_ctx.$style.stepContent)
207
+ }, [
208
+ createBaseVNode("ul", {
209
+ class: normalizeClass(_ctx.$style.bulletPoints)
210
+ }, [
211
+ createBaseVNode("li", null, [
212
+ createVNode(unref(N8nText), {
213
+ size: "small",
214
+ color: "text-base"
215
+ }, {
216
+ default: withCtx(() => [
217
+ createTextVNode(toDisplayString(unref(locale).baseText("evaluations.setupWizard.step1.item1")), 1)
218
+ ]),
219
+ _: 1
220
+ })
221
+ ]),
222
+ createBaseVNode("li", null, [
223
+ createVNode(unref(N8nText), {
224
+ size: "small",
225
+ color: "text-base"
226
+ }, {
227
+ default: withCtx(() => [
228
+ createTextVNode(toDisplayString(unref(locale).baseText("evaluations.setupWizard.step1.item2")), 1)
229
+ ]),
230
+ _: 1
231
+ })
232
+ ])
233
+ ], 2),
234
+ createBaseVNode("div", {
235
+ class: normalizeClass(_ctx.$style.actionButton)
236
+ }, [
237
+ createVNode(unref(N8nButton), {
238
+ size: "small",
239
+ type: "secondary",
240
+ onClick: _cache[1] || (_cache[1] = ($event) => navigateToWorkflow("addEvaluationTrigger"))
241
+ }, {
242
+ default: withCtx(() => [
243
+ createTextVNode(toDisplayString(unref(locale).baseText("evaluations.setupWizard.step1.button")), 1)
244
+ ]),
245
+ _: 1
246
+ })
247
+ ], 2)
248
+ ], 2)) : createCommentVNode("", true)
249
+ ], 2),
250
+ createBaseVNode("div", {
251
+ class: normalizeClass([_ctx.$style.step, activeStepIndex.value === 1 ? _ctx.$style.active : ""])
252
+ }, [
253
+ createVNode(StepHeader, {
254
+ "step-number": 2,
255
+ title: unref(locale).baseText("evaluations.setupWizard.step2.title"),
256
+ "is-completed": unref(evaluationStore).evaluationSetOutputsNodeExist,
257
+ "is-active": activeStepIndex.value === 1,
258
+ onClick: _cache[2] || (_cache[2] = ($event) => toggleStep(1))
259
+ }, null, 8, ["title", "is-completed", "is-active"]),
260
+ activeStepIndex.value === 1 ? (openBlock(), createElementBlock("div", {
261
+ key: 0,
262
+ class: normalizeClass(_ctx.$style.stepContent)
263
+ }, [
264
+ createBaseVNode("ul", {
265
+ class: normalizeClass(_ctx.$style.bulletPoints)
266
+ }, [
267
+ createBaseVNode("li", null, [
268
+ createVNode(unref(N8nText), {
269
+ size: "small",
270
+ color: "text-base"
271
+ }, {
272
+ default: withCtx(() => [
273
+ createTextVNode(toDisplayString(unref(locale).baseText("evaluations.setupWizard.step2.item1")), 1)
274
+ ]),
275
+ _: 1
276
+ })
277
+ ])
278
+ ], 2),
279
+ createBaseVNode("div", {
280
+ class: normalizeClass(_ctx.$style.actionButton)
281
+ }, [
282
+ createVNode(unref(N8nButton), {
283
+ size: "small",
284
+ type: "secondary",
285
+ onClick: _cache[3] || (_cache[3] = ($event) => navigateToWorkflow("addEvaluationNode"))
286
+ }, {
287
+ default: withCtx(() => [
288
+ createTextVNode(toDisplayString(unref(locale).baseText("evaluations.setupWizard.step2.button")), 1)
289
+ ]),
290
+ _: 1
291
+ })
292
+ ], 2)
293
+ ], 2)) : createCommentVNode("", true)
294
+ ], 2),
295
+ createBaseVNode("div", {
296
+ class: normalizeClass(_ctx.$style.step)
297
+ }, [
298
+ createVNode(StepHeader, {
299
+ "step-number": 3,
300
+ title: unref(locale).baseText("evaluations.setupWizard.step3.title"),
301
+ "is-completed": unref(evaluationStore).evaluationSetMetricsNodeExist,
302
+ "is-active": activeStepIndex.value === 2,
303
+ "is-optional": true,
304
+ onClick: _cache[4] || (_cache[4] = ($event) => toggleStep(2))
305
+ }, null, 8, ["title", "is-completed", "is-active"]),
306
+ activeStepIndex.value === 2 ? (openBlock(), createElementBlock("div", {
307
+ key: 0,
308
+ class: normalizeClass(_ctx.$style.stepContent)
309
+ }, [
310
+ !evaluationsQuotaExceeded.value ? (openBlock(), createElementBlock("ul", {
311
+ key: 0,
312
+ class: normalizeClass(_ctx.$style.bulletPoints)
313
+ }, [
314
+ createBaseVNode("li", null, [
315
+ createVNode(unref(N8nText), {
316
+ size: "small",
317
+ color: "text-base"
318
+ }, {
319
+ default: withCtx(() => [
320
+ createTextVNode(toDisplayString(unref(locale).baseText("evaluations.setupWizard.step3.item1")), 1)
321
+ ]),
322
+ _: 1
323
+ })
324
+ ]),
325
+ createBaseVNode("li", null, [
326
+ createVNode(unref(N8nText), {
327
+ size: "small",
328
+ color: "text-base"
329
+ }, {
330
+ default: withCtx(() => [
331
+ createTextVNode(toDisplayString(unref(locale).baseText("evaluations.setupWizard.step3.item2")), 1)
332
+ ]),
333
+ _: 1
334
+ })
335
+ ])
336
+ ], 2)) : (openBlock(), createBlock(unref(N8nCallout), {
337
+ key: 1,
338
+ theme: "warning",
339
+ iconless: ""
340
+ }, {
341
+ default: withCtx(() => [
342
+ createTextVNode(toDisplayString(unref(locale).baseText("evaluations.setupWizard.limitReached")), 1)
343
+ ]),
344
+ _: 1
345
+ })),
346
+ createBaseVNode("div", {
347
+ class: normalizeClass(_ctx.$style.actionButton)
348
+ }, [
349
+ !evaluationsQuotaExceeded.value ? (openBlock(), createBlock(unref(N8nButton), {
350
+ key: 0,
351
+ size: "small",
352
+ type: "secondary",
353
+ onClick: _cache[5] || (_cache[5] = ($event) => navigateToWorkflow("addEvaluationNode"))
354
+ }, {
355
+ default: withCtx(() => [
356
+ createTextVNode(toDisplayString(unref(locale).baseText("evaluations.setupWizard.step3.button")), 1)
357
+ ]),
358
+ _: 1
359
+ })) : (openBlock(), createBlock(unref(N8nButton), {
360
+ key: 1,
361
+ size: "small",
362
+ onClick: onSeePlans
363
+ }, {
364
+ default: withCtx(() => [
365
+ createTextVNode(toDisplayString(unref(locale).baseText("generic.seePlans")), 1)
366
+ ]),
367
+ _: 1
368
+ })),
369
+ createVNode(unref(N8nButton), {
370
+ size: "small",
371
+ text: "",
372
+ style: { "color": "var(--color-text-light)" },
373
+ onClick: _cache[6] || (_cache[6] = ($event) => toggleStep(3))
374
+ }, {
375
+ default: withCtx(() => [
376
+ createTextVNode(toDisplayString(unref(locale).baseText("evaluations.setupWizard.step3.skip")), 1)
377
+ ]),
378
+ _: 1
379
+ })
380
+ ], 2),
381
+ unref(usageStore).workflowsWithEvaluationsLimit !== -1 && evaluationsAvailable.value ? (openBlock(), createElementBlock("div", {
382
+ key: 2,
383
+ class: normalizeClass(_ctx.$style.quotaNote)
384
+ }, [
385
+ createVNode(unref(N8nText), {
386
+ size: "xsmall",
387
+ color: "text-base"
388
+ }, {
389
+ default: withCtx(() => [
390
+ createVNode(_component_i18n_t, { keypath: "evaluations.setupWizard.step3.notice" }, {
391
+ link: withCtx(() => [
392
+ createBaseVNode("a", {
393
+ style: { "text-decoration": "underline", "color": "inherit" },
394
+ onClick: onSeePlans
395
+ }, toDisplayString(unref(locale).baseText("evaluations.setupWizard.step3.notice.link")), 1)
396
+ ]),
397
+ _: 1
398
+ })
399
+ ]),
400
+ _: 1
401
+ })
402
+ ], 2)) : createCommentVNode("", true)
403
+ ], 2)) : createCommentVNode("", true)
404
+ ], 2),
405
+ createBaseVNode("div", {
406
+ class: normalizeClass(_ctx.$style.step)
407
+ }, [
408
+ createVNode(StepHeader, {
409
+ "step-number": 4,
410
+ title: unref(locale).baseText("evaluations.setupWizard.step4.title"),
411
+ "is-completed": false,
412
+ "is-active": activeStepIndex.value === 3,
413
+ onClick: _cache[9] || (_cache[9] = ($event) => toggleStep(3))
414
+ }, {
415
+ default: withCtx(() => [
416
+ createBaseVNode("div", {
417
+ class: normalizeClass([_ctx.$style.actionButton, _ctx.$style.actionButtonInline])
418
+ }, [
419
+ unref(evaluationStore).evaluationSetMetricsNodeExist && !evaluationsQuotaExceeded.value ? (openBlock(), createBlock(unref(N8nButton), {
420
+ key: 0,
421
+ size: "medium",
422
+ type: "secondary",
423
+ disabled: !unref(evaluationStore).evaluationTriggerExists || !unref(evaluationStore).evaluationSetOutputsNodeExist,
424
+ onClick: _cache[7] || (_cache[7] = ($event) => _ctx.$emit("runTest"))
425
+ }, {
426
+ default: withCtx(() => [
427
+ createTextVNode(toDisplayString(unref(locale).baseText("evaluations.setupWizard.step4.button")), 1)
428
+ ]),
429
+ _: 1
430
+ }, 8, ["disabled"])) : (openBlock(), createBlock(unref(N8nButton), {
431
+ key: 1,
432
+ size: "medium",
433
+ type: "secondary",
434
+ disabled: !unref(evaluationStore).evaluationTriggerExists || !unref(evaluationStore).evaluationSetOutputsNodeExist,
435
+ onClick: _cache[8] || (_cache[8] = ($event) => navigateToWorkflow("executeEvaluation"))
436
+ }, {
437
+ default: withCtx(() => [
438
+ createTextVNode(toDisplayString(unref(locale).baseText("evaluations.setupWizard.step4.altButton")), 1)
439
+ ]),
440
+ _: 1
441
+ }, 8, ["disabled"]))
442
+ ], 2)
443
+ ]),
444
+ _: 1
445
+ }, 8, ["title", "is-active"])
446
+ ], 2)
447
+ ], 2)
448
+ ], 2);
449
+ };
450
+ }
451
+ });
452
+ const container = "_container_11w5z_123";
453
+ const steps = "_steps_11w5z_127";
454
+ const step = "_step_11w5z_127";
455
+ const stepContent = "_stepContent_11w5z_137";
456
+ const slideDown = "_slideDown_11w5z_1";
457
+ const bulletPoints = "_bulletPoints_11w5z_142";
458
+ const actionButton = "_actionButton_11w5z_149";
459
+ const actionButtonInline = "_actionButtonInline_11w5z_158";
460
+ const quotaNote = "_quotaNote_11w5z_162";
461
+ const style0$1 = {
462
+ container,
463
+ steps,
464
+ step,
465
+ stepContent,
466
+ slideDown,
467
+ bulletPoints,
468
+ actionButton,
469
+ actionButtonInline,
470
+ quotaNote
471
+ };
472
+ const cssModules$1 = {
473
+ "$style": style0$1
474
+ };
475
+ const SetupWizard = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__cssModules", cssModules$1]]);
476
+ const _sfc_main = /* @__PURE__ */ defineComponent({
477
+ __name: "EvaluationsRootView",
478
+ props: {
479
+ name: {}
480
+ },
481
+ setup(__props) {
482
+ const props = __props;
483
+ const workflowsStore = useWorkflowsStore();
484
+ const usageStore = useUsageStore();
485
+ const evaluationStore = useEvaluationStore();
486
+ const nodeTypesStore = useNodeTypesStore();
487
+ const telemetry = useTelemetry();
488
+ const router = useRouter();
489
+ const toast = useToast();
490
+ const locale = useI18n();
491
+ const { initializeWorkspace } = useCanvasOperations({ router });
492
+ const evaluationsLicensed = computed(() => {
493
+ return usageStore.workflowsWithEvaluationsLimit !== 0;
494
+ });
495
+ const runs = computed(() => {
496
+ return Object.values(evaluationStore.testRunsById ?? {}).filter(
497
+ ({ workflowId }) => workflowId === props.name
498
+ );
499
+ });
500
+ const hasRuns = computed(() => {
501
+ return runs.value.length > 0;
502
+ });
503
+ const showWizard = computed(() => !hasRuns.value);
504
+ async function runTest() {
505
+ try {
506
+ await evaluationStore.startTestRun(props.name);
507
+ } catch (error) {
508
+ toast.showError(error, locale.baseText("evaluation.listRuns.error.cantStartTestRun"));
509
+ return;
510
+ }
511
+ try {
512
+ await evaluationStore.fetchTestRuns(props.name);
513
+ } catch (error) {
514
+ toast.showError(error, locale.baseText("evaluation.listRuns.error.cantFetchTestRuns"));
515
+ }
516
+ }
517
+ const evaluationsQuotaExceeded = computed(() => {
518
+ return usageStore.workflowsWithEvaluationsLimit !== -1 && usageStore.workflowsWithEvaluationsCount >= usageStore.workflowsWithEvaluationsLimit && !hasRuns.value;
519
+ });
520
+ const { isReady } = useAsyncState(async () => {
521
+ try {
522
+ await usageStore.getLicenseInfo();
523
+ await evaluationStore.fetchTestRuns(props.name);
524
+ } catch (error) {
525
+ toast.showError(error, locale.baseText("evaluation.listRuns.error.cantFetchTestRuns"));
526
+ }
527
+ const workflowId = props.name;
528
+ const isAlreadyInitialized = workflowsStore.workflow.id === workflowId;
529
+ if (isAlreadyInitialized) return;
530
+ if (workflowId && workflowId !== "new") {
531
+ if (workflowsStore.workflow.id === PLACEHOLDER_EMPTY_WORKFLOW_ID) {
532
+ try {
533
+ const data = await workflowsStore.fetchWorkflow(workflowId);
534
+ if (nodeTypesStore.allNodeTypes.length === 0) {
535
+ await nodeTypesStore.getNodeTypes();
536
+ }
537
+ initializeWorkspace(data);
538
+ } catch (error) {
539
+ toast.showError(error, locale.baseText("nodeView.showError.openWorkflow.title"));
540
+ }
541
+ }
542
+ }
543
+ }, void 0);
544
+ watch(
545
+ isReady,
546
+ (ready) => {
547
+ if (ready) {
548
+ if (showWizard.value) {
549
+ telemetry.track("User viewed tests tab", {
550
+ workflow_id: props.name,
551
+ test_type: "evaluation",
552
+ view: "setup",
553
+ trigger_set_up: evaluationStore.evaluationTriggerExists,
554
+ output_set_up: evaluationStore.evaluationSetOutputsNodeExist,
555
+ metrics_set_up: evaluationStore.evaluationSetMetricsNodeExist,
556
+ quota_reached: evaluationsQuotaExceeded.value
557
+ });
558
+ } else {
559
+ telemetry.track("User viewed tests tab", {
560
+ workflow_id: props.name,
561
+ test_type: "evaluation",
562
+ view: "overview",
563
+ run_count: runs.value.length
564
+ });
565
+ }
566
+ }
567
+ },
568
+ { immediate: true }
569
+ );
570
+ return (_ctx, _cache) => {
571
+ const _component_router_view = resolveComponent("router-view");
572
+ return openBlock(), createElementBlock("div", {
573
+ class: normalizeClass(_ctx.$style.evaluationsView)
574
+ }, [
575
+ unref(isReady) && showWizard.value ? (openBlock(), createElementBlock("div", {
576
+ key: 0,
577
+ class: normalizeClass(_ctx.$style.setupContent)
578
+ }, [
579
+ createBaseVNode("div", null, [
580
+ createVNode(unref(N8nText), {
581
+ size: "large",
582
+ color: "text-dark",
583
+ tag: "h3",
584
+ bold: ""
585
+ }, {
586
+ default: withCtx(() => [
587
+ createTextVNode(toDisplayString(unref(locale).baseText("evaluations.setupWizard.title")), 1)
588
+ ]),
589
+ _: 1
590
+ }),
591
+ createVNode(unref(N8nText), {
592
+ tag: "p",
593
+ size: "small",
594
+ color: "text-base",
595
+ class: normalizeClass(_ctx.$style.description)
596
+ }, {
597
+ default: withCtx(() => [
598
+ createTextVNode(toDisplayString(unref(locale).baseText("evaluations.setupWizard.description")) + " ", 1),
599
+ createVNode(unref(N8nLink), {
600
+ size: "small",
601
+ href: "https://docs.n8n.io/advanced-ai/evaluations/overview"
602
+ }, {
603
+ default: withCtx(() => [
604
+ createTextVNode(toDisplayString(unref(locale).baseText("evaluations.setupWizard.moreInfo")), 1)
605
+ ]),
606
+ _: 1
607
+ })
608
+ ]),
609
+ _: 1
610
+ }, 8, ["class"])
611
+ ]),
612
+ createBaseVNode("div", {
613
+ class: normalizeClass(_ctx.$style.config)
614
+ }, [
615
+ _cache[0] || (_cache[0] = createBaseVNode("iframe", {
616
+ style: { "min-width": "500px" },
617
+ width: "500",
618
+ height: "280",
619
+ src: "https://www.youtube.com/embed/5LlF196PKaE",
620
+ title: "n8n Evaluation quickstart",
621
+ frameborder: "0",
622
+ allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",
623
+ referrerpolicy: "strict-origin-when-cross-origin",
624
+ allowfullscreen: ""
625
+ }, null, -1)),
626
+ evaluationsLicensed.value ? (openBlock(), createBlock(SetupWizard, {
627
+ key: 0,
628
+ onRunTest: runTest
629
+ })) : (openBlock(), createBlock(_sfc_main$4, { key: 1 }))
630
+ ], 2)
631
+ ], 2)) : unref(isReady) ? (openBlock(), createBlock(_component_router_view, { key: 1 })) : createCommentVNode("", true)
632
+ ], 2);
633
+ };
634
+ }
635
+ });
636
+ const evaluationsView = "_evaluationsView_i8p9m_123";
637
+ const setupContent = "_setupContent_i8p9m_130";
638
+ const description = "_description_i8p9m_139";
639
+ const config = "_config_i8p9m_144";
640
+ const setupDescription = "_setupDescription_i8p9m_150";
641
+ const style0 = {
642
+ evaluationsView,
643
+ setupContent,
644
+ description,
645
+ config,
646
+ setupDescription
647
+ };
648
+ const cssModules = {
649
+ "$style": style0
650
+ };
651
+ const EvaluationsRootView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__cssModules", cssModules]]);
652
+ export {
653
+ EvaluationsRootView as default
654
+ };