n8n-editor-ui 1.83.2 → 1.85.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 (126) hide show
  1. package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-COOCXFFe.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-BefsLZo6.js} +1 -1
  2. package/dist/assets/{AuthView-C7UxnH6d.js → AuthView-Bwnmj61F.js} +2 -2
  3. package/dist/assets/{CanvasChat-CSLR5tKe.css → CanvasChatSwitch-BcSDHC-c.css} +546 -33
  4. package/dist/assets/{CanvasChat-CmjR9yPV.js → CanvasChatSwitch-Dgc1t6ax.js} +1047 -550
  5. package/dist/assets/{ChangePasswordView-ah8H7l7b.js → ChangePasswordView-Ojbow8CX.js} +3 -3
  6. package/dist/assets/CollectionParameter-2r_LuiyO.js +4 -0
  7. package/dist/assets/CommitMonoVariable-ytizKI8U.woff2 +0 -0
  8. package/dist/assets/{CredentialsView-DqcTSsjv.js → CredentialsView-DhEvPiu_.js} +19 -9
  9. package/dist/assets/{ErrorView-DG7aEbhz.js → ErrorView-RGryGbpa.js} +1 -1
  10. package/dist/assets/{ConcurrentExecutionsHeader-CEBmSYNK.css → ExecutionsTime-BOPJEomw.css} +63 -63
  11. package/dist/assets/{ConcurrentExecutionsHeader-tdwilNra.js → ExecutionsTime.vue_vue_type_script_setup_true_lang-Iwq0aeRX.js} +114 -114
  12. package/dist/assets/ExecutionsView-CL7Ei3Em.js +943 -0
  13. package/dist/assets/{ExecutionsView-CB1tvZfo.css → ExecutionsView-JCKikuIS.css} +60 -188
  14. package/dist/assets/{FileSaver.min-D9u6MONp.js → FileSaver.min-C4OYrSWg.js} +1 -1
  15. package/dist/assets/{FixedCollectionParameter-CLjLHGyL.js → FixedCollectionParameter-CJ4s-1jy.js} +1 -1
  16. package/dist/assets/{ForgotMyPasswordView-DDtUSUcw.js → ForgotMyPasswordView-7tFMaf89.js} +3 -3
  17. package/dist/assets/InterVariable-DiVDrmQJ.woff2 +0 -0
  18. package/dist/assets/InterVariable-Italic-FCBEiFp6.woff2 +0 -0
  19. package/dist/assets/{Logo-CBvZEey7.js → Logo-BW8jOa0h.js} +8 -19
  20. package/dist/assets/{ProjectHeader-BZ6b6lat.css → Logo-DLBj1gMw.css} +23 -17
  21. package/dist/assets/{MainHeader-PgJurmwZ.js → MainHeader-BUWCKbvC.js} +47 -22
  22. package/dist/assets/{MainHeader-CX-ZfeKE.css → MainHeader-CWA2JfVJ.css} +22 -22
  23. package/dist/assets/{MainSidebar-DsyUXL2c.js → MainSidebar-BeZfQeco.js} +75 -42
  24. package/dist/assets/{MainSidebar-BRAjTL7J.css → MainSidebar-CKMiDGvH.css} +13 -12
  25. package/dist/assets/{NodeCreation-CiSTfSrv.js → NodeCreation-DIg39Pbx.js} +5 -5
  26. package/dist/assets/{NodeCreator-16svYK-i.js → NodeCreator-BwYjrEUk.js} +10 -11
  27. package/dist/assets/{NodeCreator-DDiuO5S0.css → NodeCreator-D9fmPdS2.css} +12 -12
  28. package/dist/assets/{NodeDetailsView-CVVfk-zW.css → NodeDetailsView-C1z3N5z_.css} +46 -46
  29. package/dist/assets/{NodeDetailsView-D5ZKTnOO.js → NodeDetailsView-WuroVzlr.js} +93 -85
  30. package/dist/assets/{NodeView-CVxHVGxF.js → NodeView-CmjajouX.js} +63 -28
  31. package/dist/assets/{ProjectCardBadge-DKJ8uRN7.js → ProjectCardBadge-cIqYJxKe.js} +1 -1
  32. package/dist/assets/ProjectHeader-B-a6_GH6.css +285 -0
  33. package/dist/assets/{ProjectHeader-BY3TAX3C.js → ProjectHeader-BGrFY-5v.js} +66 -27
  34. package/dist/assets/{ProjectSettings-B3FxW1ze.js → ProjectSettings-D10vay6-.js} +2 -3
  35. package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-CzwYeMCe.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-DJAYslHT.js} +2 -2
  36. package/dist/assets/{ResourcesListLayout-DbPhtDij.js → ResourcesListLayout-C6v8Zm5q.js} +25 -21
  37. package/dist/assets/{ResourcesListLayout-Brs7VKUf.css → ResourcesListLayout-CWgWhtKq.css} +43 -33
  38. package/dist/assets/{RunDataAi-DJ-PSs_k.css → RunDataAi-CN9FrT9c.css} +2 -2
  39. package/dist/assets/{RunDataAi-Cq_XIdUj.js → RunDataAi-dhPBStdr.js} +25 -20
  40. package/dist/assets/{RunDataJson-BYaB0x1O.js → RunDataJson-kGRhUGn3.js} +12 -12
  41. package/dist/assets/{RunDataJsonActions-CU0K3JKo.js → RunDataJsonActions-BTljOq8V.js} +2 -2
  42. package/dist/assets/{RunDataSearch-Cx3Q6SS-.js → RunDataSearch-mVQhE8PH.js} +1 -1
  43. package/dist/assets/{RunDataTable-thC_K8V5.js → RunDataTable-CFoDiExh.js} +2 -2
  44. package/dist/assets/{SamlOnboarding-kqju2Vdw.js → SamlOnboarding-dDZHHNp4.js} +3 -3
  45. package/dist/assets/{SettingsApiView-DZWY9nyk.js → SettingsApiView-C9hbuZ42.js} +2 -3
  46. package/dist/assets/{SettingsCommunityNodesView-BLPF2nGe.js → SettingsCommunityNodesView-0wzih2lc.js} +5 -5
  47. package/dist/assets/{SettingsExternalSecrets-giVhhOpK.js → SettingsExternalSecrets-BCDoBPTc.js} +1 -1
  48. package/dist/assets/{SettingsLdapView-CcLGbweG.js → SettingsLdapView-CBCprymb.js} +1 -1
  49. package/dist/assets/{SettingsLogStreamingView-T4v-UDVv.js → SettingsLogStreamingView-CMQQQdcB.js} +2 -2
  50. package/dist/assets/{SettingsPersonalView-C1vojEEm.js → SettingsPersonalView-DtAM5Qmb.js} +1 -1
  51. package/dist/assets/{SettingsSourceControl-mTHmVIMw.js → SettingsSourceControl-CysMFVZs.js} +1 -1
  52. package/dist/assets/{SettingsSso-BBoPSBvR.js → SettingsSso-B0PZUvVx.js} +7 -7
  53. package/dist/assets/{SettingsSso-BjoJZ2DU.css → SettingsSso-DyrGnPdA.css} +10 -10
  54. package/dist/assets/{SettingsUsageAndPlan-CT1Jb0GH.js → SettingsUsageAndPlan-2QUTEbXv.js} +8 -3
  55. package/dist/assets/{SettingsUsageAndPlan-Cul4YcIk.css → SettingsUsageAndPlan-b3WY2Ea_.css} +3 -3
  56. package/dist/assets/{SettingsUsersView-Cak1x7Pc.js → SettingsUsersView-C16e4GB4.js} +1 -1
  57. package/dist/assets/{SettingsView-DCkltMay.js → SettingsView-B-BQ6FGS.js} +1 -1
  58. package/dist/assets/{SetupView-DJmIQyS0.js → SetupView-Kx3RATQz.js} +3 -3
  59. package/dist/assets/{SetupWorkflowCredentialsButton-DCfwCYAd.js → SetupWorkflowCredentialsButton-BQ2_-L-1.js} +1 -1
  60. package/dist/assets/{SetupWorkflowFromTemplateView-k_iBV2jh.js → SetupWorkflowFromTemplateView-D_E17TKc.js} +3 -3
  61. package/dist/assets/{SigninView-BnsteSQ9.js → SigninView-d0aJ1Mkg.js} +3 -3
  62. package/dist/assets/{SignoutView-CyCh9bOx.js → SignoutView-CvyFrh7y.js} +1 -1
  63. package/dist/assets/{SignupView-BsFwHPbF.js → SignupView-CnlD_UrJ.js} +3 -3
  64. package/dist/assets/{TemplateDetails-D_qS2oXP.js → TemplateDetails-DRuh9UqO.js} +3 -3
  65. package/dist/assets/{TemplateList-Bsr77oun.js → TemplateList-gpWBWX3r.js} +1 -1
  66. package/dist/assets/{TemplatesCollectionView-DOx2xwGE.js → TemplatesCollectionView-Y6-pxrOD.js} +5 -5
  67. package/dist/assets/{TemplatesSearchView-C6YmB2wy.js → TemplatesSearchView-DP8XRZ62.js} +3 -3
  68. package/dist/assets/{TemplatesView-DQBwrteM.js → TemplatesView-B3vanV3h.js} +1 -1
  69. package/dist/assets/{TemplatesWorkflowView-C2iuRHel.js → TemplatesWorkflowView-CIB9qsVC.js} +5 -5
  70. package/dist/assets/{TestDefinitionEditView-JONL00pA.css → TestDefinitionEditView-BXhOuJrU.css} +128 -116
  71. package/dist/assets/{TestDefinitionEditView-BhFe0nl4.js → TestDefinitionEditView-BkhmS3l4.js} +243 -252
  72. package/dist/assets/{TestDefinitionListView-xb_7O8DU.js → TestDefinitionListView-tvjwd9Ts.js} +1 -1
  73. package/dist/assets/{TestDefinitionNewView-DfTA2Tx8.js → TestDefinitionNewView-DOGHwct6.js} +13 -4
  74. package/dist/assets/{TestDefinitionRootView-CaoWSLan.js → TestDefinitionRootView-B-QvwldV.js} +1 -1
  75. package/dist/assets/{VariablesView-CbTLdNwU.css → VariablesView-ATWfdJsE.css} +7 -11
  76. package/dist/assets/{VariablesView-B2ttHbBo.js → VariablesView-CoBnz2nF.js} +6 -6
  77. package/dist/assets/{WorkerView-CzDTwlX2.js → WorkerView-CsTZzlRj.js} +7 -7
  78. package/dist/assets/{WorkflowActivator-mNogYc60.js → WorkflowActivator-DeLhupjy.js} +2 -2
  79. package/dist/assets/{WorkflowExecutionsInfoAccordion-CNoXKDkU.js → WorkflowExecutionsInfoAccordion-WRdvo2wq.js} +1 -1
  80. package/dist/assets/{WorkflowExecutionsLandingPage-XS-H1Pwn.js → WorkflowExecutionsLandingPage-DP8mgG6I.js} +2 -2
  81. package/dist/assets/{WorkflowExecutionsPreview-BMqpqyNP.js → WorkflowExecutionsPreview-BmG1Fptg.js} +270 -136
  82. package/dist/assets/{WorkflowExecutionsPreview-BDVLuC1z.css → WorkflowExecutionsPreview-CHu6M3Dh.css} +70 -38
  83. package/dist/assets/{WorkflowExecutionsView-BLj64NZs.js → WorkflowExecutionsView-DmN-exp3.js} +6 -7
  84. package/dist/assets/{WorkflowHistory-CFqqM71F.js → WorkflowHistory-CdEr7dbB.js} +3 -3
  85. package/dist/assets/{WorkflowOnboardingView-8o-XsXJA.js → WorkflowOnboardingView-D45YjFmk.js} +1 -1
  86. package/dist/assets/{WorkflowPreview-B05e6atY.js → WorkflowPreview-x0_AdULu.js} +1 -1
  87. package/dist/assets/{WorkflowsView-D6AZEJR8.js → WorkflowsView-BhcJ-MjE.js} +726 -341
  88. package/dist/assets/{WorkflowsView-JN0Hvhvt.css → WorkflowsView-r9qJOUEb.css} +64 -43
  89. package/dist/assets/{easyAiWorkflowUtils-DCq6uUmq.js → easyAiWorkflowUtils-NXaV8dgZ.js} +5 -5
  90. package/dist/assets/{global-link-actions-DhVbzPXz.js → global-link-actions-DgZH3fz2.js} +1 -1
  91. package/dist/assets/{import-curl-CpQ9LTub.js → import-curl-DUv4B2nO.js} +1 -1
  92. package/dist/assets/{index-ntAcmC2q.js → index-CDluwnbb.js} +4962 -3420
  93. package/dist/assets/{index-D534l065.css → index-CgXKy7t-.css} +2783 -2112
  94. package/dist/assets/{index-wbgX3Vnk.js → index-DAyhXitv.js} +1 -1
  95. package/dist/assets/{pickBy-DAl85H93.js → pickBy-D-hOoXP_.js} +1 -1
  96. package/dist/assets/{polyfills-C7eMRNFe.js → polyfills-CLZ4X0Ad.js} +2342 -1944
  97. package/dist/assets/{pushConnection.store-Cs7MLBaJ.js → pushConnection.store-Dl_VgTY2.js} +1 -1
  98. package/dist/assets/{templateActions-C6kwBsE2.js → templateActions-B4AFVixD.js} +1 -1
  99. package/dist/assets/{typescript.worker-DP34mIHW.js → typescript.worker-Bt3bByTc.js} +1158 -695
  100. package/dist/assets/{useBeforeUnload-Cr9E4FVX.js → useBeforeUnload-DS-CCd-3.js} +1 -1
  101. package/dist/assets/{useCanvasMapping-CkNBF2SE.css → useCanvasMapping-CJcAsQmx.css} +585 -585
  102. package/dist/assets/{useCanvasMapping-DwbUSpab.js → useCanvasMapping-DnPGwCm3.js} +10390 -10379
  103. package/dist/assets/{useCanvasOperations-Ch4-PXXM.js → useCanvasOperations-CY1OrN2X.js} +472 -185
  104. package/dist/assets/useClearExecutionButtonVisible-CjX9PqMR.js +23 -0
  105. package/dist/assets/{useExecutionDebugging-WtMBcJA-.js → useExecutionDebugging-BN-lQ24h.js} +1 -1
  106. package/dist/assets/{useExecutionHelpers-DYVB2XNC.js → useExecutionHelpers-wN0DRQB-.js} +1 -1
  107. package/dist/assets/{useImportCurlCommand-B6a2t4kf.js → useImportCurlCommand-DgTeVIgh.js} +13 -20
  108. package/dist/assets/useOverview-BBgWJdVL.js +161 -0
  109. package/dist/assets/{Logo-DJLTXpXC.css → useOverview-DcRuPjLJ.css} +97 -30
  110. package/dist/assets/{usePushConnection-BvuDmDSY.js → usePushConnection-F1s4Muc0.js} +5 -4
  111. package/dist/assets/{useRunWorkflow-BjW-TsKk.js → useRunWorkflow-RBDuKZVj.js} +13 -13
  112. package/dist/assets/{useTestDefinitionForm-uexL_DkW.js → useTestDefinitionForm-DX1gvhBC.js} +1 -1
  113. package/dist/assets/{useWorkflowActivate-BAjo-kUC.js → useWorkflowActivate-DsRC3mvG.js} +1 -1
  114. package/dist/index.html +3 -3
  115. package/package.json +1 -1
  116. package/dist/assets/CollectionParameter-Dk76idMw.js +0 -4
  117. package/dist/assets/ExecutionsView-zqdNLgx1.js +0 -983
  118. package/dist/assets/ProjectCreateResource-5lC9x1Ht.js +0 -56
  119. package/dist/assets/ProjectCreateResource-eYdTamXR.css +0 -139
  120. package/dist/assets/open-sans-latin-400-normal-kLvSbl7y.woff +0 -0
  121. package/dist/assets/open-sans-latin-400-normal-sjvN8RAh.woff2 +0 -0
  122. package/dist/assets/open-sans-latin-600-normal-BYc6TgXR.woff2 +0 -0
  123. package/dist/assets/open-sans-latin-600-normal-CJ2UE_uF.woff +0 -0
  124. package/dist/assets/open-sans-latin-700-normal-DMXgkrz3.woff +0 -0
  125. package/dist/assets/open-sans-latin-700-normal-DXyImmHa.woff2 +0 -0
  126. package/dist/assets/usePinnedData-CvnROquX.js +0 -274
@@ -1,233 +1,19 @@
1
- import { u as useTestDefinitionForm } from "./useTestDefinitionForm-uexL_DkW.js";
2
- import { d as defineComponent, U as useWorkflowsStore, bp as useNodeTypesStore, W as useRoute, b as useRouter, r as ref, q as computed, o as onMounted, l as unref, c as openBlock, h as createElementBlock, i as createVNode, w as withCtx, k as createTextVNode, t as toDisplayString, n as normalizeClass, e as createBlock, f as createCommentVNode, aQ as N8nTooltip, g as useI18n, D as createEventBus, ab as useCssModule, m as resolveComponent, ak as useTelemetry, _ as _export_sfc, j as createBaseVNode, fY as N8nText, v as renderSlot, F as Fragment, c$ as InfoTip, g0 as ne, cS as useTemplateRef, B as renderList, cR as N8nButton, z as nextTick, g1 as N8nInput, aR as _sfc_main$a, a2 as useProjectsStore, aP as N8nLink, V as VIEWS, g2 as __unplugin_components_0$2, g3 as SAMPLE_EVALUATION_WORKFLOW, fn as mergeModels, fo as useModel, g4 as Tag, g5 as NODE_PINNING_MODAL_KEY, g6 as __unplugin_components_1, al as useMessage, dS as dateFormat, bo as watchEffect, ax as withDirectives, ay as vShow, fZ as N8nIcon, C as normalizeStyle, g7 as TestTableBase, K as useDebounce, a as useToast, bX as useTestDefinitionStore, fH as useAnnotationTagsStore, L as useUIStore, Z as useDocumentVisibility, I as watch, g8 as InlineNameEdit } from "./index-ntAcmC2q.js";
3
- import { u as useVueFlow, a as useCanvasMapping, _ as __unplugin_components_0$1 } from "./useCanvasMapping-DwbUSpab.js";
4
- import { a as useCanvasOperations } from "./useCanvasOperations-Ch4-PXXM.js";
5
- import { L as Line } from "./index-wbgX3Vnk.js";
6
- import "./usePinnedData-CvnROquX.js";
7
- import "./useRunWorkflow-BjW-TsKk.js";
8
- import "./pushConnection.store-Cs7MLBaJ.js";
9
- const _sfc_main$9 = /* @__PURE__ */ defineComponent({
10
- __name: "NodesPinning",
11
- props: {
12
- modelValue: {}
13
- },
14
- emits: ["update:modelValue"],
15
- setup(__props, { emit: __emit }) {
16
- const workflowsStore = useWorkflowsStore();
17
- const nodeTypesStore = useNodeTypesStore();
18
- const route = useRoute();
19
- const router = useRouter();
20
- const locale = useI18n();
21
- const telemetry = useTelemetry();
22
- const { resetWorkspace, initializeWorkspace } = useCanvasOperations({ router });
23
- const eventBus = createEventBus();
24
- const style = useCssModule();
25
- const uuid = crypto.randomUUID();
26
- const props = __props;
27
- const emit = __emit;
28
- const isLoading = ref(true);
29
- const workflowId = computed(() => route.params.name);
30
- const testId = computed(() => route.params.testId);
31
- const workflow = computed(() => workflowsStore.getWorkflowById(workflowId.value));
32
- const workflowObject = computed(() => workflowsStore.getCurrentWorkflow(true));
33
- const canvasId = computed(() => `${uuid}-${testId.value}`);
34
- const { onNodesInitialized, fitView, zoomTo } = useVueFlow({ id: canvasId.value });
35
- const nodes = computed(() => {
36
- return workflow.value.nodes ?? [];
37
- });
38
- const connections = computed(() => workflow.value.connections);
39
- const { nodes: mappedNodes, connections: mappedConnections } = useCanvasMapping({
40
- nodes,
41
- connections,
42
- workflowObject
43
- });
44
- async function loadData() {
45
- workflowsStore.resetState();
46
- resetWorkspace();
47
- const loadingPromise = Promise.all([
48
- nodeTypesStore.getNodeTypes(),
49
- workflowsStore.fetchWorkflow(workflowId.value)
50
- ]);
51
- await loadingPromise;
52
- initializeWorkspace(workflow.value);
53
- disableAllNodes();
54
- }
55
- function getNodeNameById(id) {
56
- return mappedNodes.value.find((node) => node.id === id)?.data?.name;
57
- }
58
- function updateNodeClasses(nodeIds, isPinned2) {
59
- eventBus.emit("nodes:action", {
60
- ids: nodeIds,
61
- action: "update:node:class",
62
- payload: {
63
- className: style.pinnedNode,
64
- add: isPinned2
65
- }
66
- });
67
- eventBus.emit("nodes:action", {
68
- ids: nodeIds,
69
- action: "update:node:class",
70
- payload: {
71
- className: style.notPinnedNode,
72
- add: !isPinned2
73
- }
74
- });
75
- }
76
- function disableAllNodes() {
77
- const ids = mappedNodes.value.map((node) => node.id);
78
- updateNodeClasses(ids, false);
79
- const pinnedNodes = props.modelValue.map((node) => node.id).filter((id) => id !== null);
80
- if (pinnedNodes.length > 0) {
81
- updateNodeClasses(pinnedNodes, true);
82
- }
83
- }
84
- function onPinButtonClick(data) {
85
- const nodeName = getNodeNameById(data.id);
86
- if (!nodeName) return;
87
- const isPinned2 = props.modelValue.some((node) => node.id === data.id);
88
- const updatedNodes = isPinned2 ? props.modelValue.filter((node) => node.id !== data.id) : [...props.modelValue, { name: nodeName, id: data.id }];
89
- emit("update:modelValue", updatedNodes);
90
- updateNodeClasses([data.id], !isPinned2);
91
- if (!isPinned2) {
92
- telemetry.track("User selected node to be mocked", {
93
- node_id: data.id,
94
- test_id: testId.value
95
- });
96
- }
97
- }
98
- function isPinButtonVisible(outputs, inputs) {
99
- return outputs.length === 1 && inputs.length >= 1;
100
- }
101
- const isPinned = (data) => props.modelValue.some((node) => node.id === data.id);
102
- onNodesInitialized(async () => {
103
- await fitView();
104
- isLoading.value = false;
105
- await zoomTo(0.7, { duration: 400 });
106
- });
107
- onMounted(loadData);
108
- return (_ctx, _cache) => {
109
- const _component_N8nHeading = resolveComponent("N8nHeading");
110
- const _component_N8nText = resolveComponent("N8nText");
111
- const _component_N8nSpinner = resolveComponent("N8nSpinner");
112
- const _component_N8nButton = resolveComponent("N8nButton");
113
- const _component_Canvas = __unplugin_components_0$1;
114
- return unref(mappedNodes).length === 0 ? (openBlock(), createElementBlock("div", {
115
- key: 0,
116
- class: normalizeClass(_ctx.$style.noNodes)
117
- }, [
118
- createVNode(_component_N8nHeading, {
119
- size: "large",
120
- bold: true,
121
- class: normalizeClass(_ctx.$style.noNodesTitle)
122
- }, {
123
- default: withCtx(() => [
124
- createTextVNode(toDisplayString(unref(locale).baseText("testDefinition.edit.pinNodes.noNodes.title")), 1)
125
- ]),
126
- _: 1
127
- }, 8, ["class"]),
128
- createVNode(_component_N8nText, null, {
129
- default: withCtx(() => [
130
- createTextVNode(toDisplayString(unref(locale).baseText("testDefinition.edit.pinNodes.noNodes.description")), 1)
131
- ]),
132
- _: 1
133
- })
134
- ], 2)) : (openBlock(), createElementBlock("div", {
135
- key: 1,
136
- class: normalizeClass(_ctx.$style.container)
137
- }, [
138
- isLoading.value ? (openBlock(), createBlock(_component_N8nSpinner, {
139
- key: 0,
140
- size: "xlarge",
141
- type: "dots",
142
- class: normalizeClass(_ctx.$style.spinner)
143
- }, null, 8, ["class"])) : createCommentVNode("", true),
144
- createVNode(_component_Canvas, {
145
- id: canvasId.value,
146
- loading: isLoading.value,
147
- class: normalizeClass({ [_ctx.$style.canvas]: true }),
148
- nodes: unref(mappedNodes),
149
- connections: unref(mappedConnections),
150
- "show-bug-reporting-button": false,
151
- "read-only": true,
152
- "event-bus": unref(eventBus)
153
- }, {
154
- nodeToolbar: withCtx(({ data, outputs, inputs }) => [
155
- isPinButtonVisible(outputs, inputs) ? (openBlock(), createElementBlock("div", {
156
- key: 0,
157
- class: normalizeClass({
158
- [_ctx.$style.pinButtonContainer]: true,
159
- [_ctx.$style.pinButtonContainerPinned]: isPinned(data)
160
- })
161
- }, [
162
- createVNode(unref(N8nTooltip), { placement: "left" }, {
163
- content: withCtx(() => [
164
- createTextVNode(toDisplayString(unref(locale).baseText("testDefinition.edit.nodesPinning.pinButtonTooltip")), 1)
165
- ]),
166
- default: withCtx(() => [
167
- isPinned(data) ? (openBlock(), createBlock(_component_N8nButton, {
168
- key: 0,
169
- icon: "thumbtack",
170
- block: "",
171
- type: "secondary",
172
- class: normalizeClass(_ctx.$style.customSecondary),
173
- "data-test-id": "node-pin-button",
174
- onClick: ($event) => onPinButtonClick(data)
175
- }, {
176
- default: withCtx(() => _cache[0] || (_cache[0] = [
177
- createTextVNode(" Un Mock ")
178
- ])),
179
- _: 2
180
- }, 1032, ["class", "onClick"])) : (openBlock(), createBlock(_component_N8nButton, {
181
- key: 1,
182
- icon: "thumbtack",
183
- block: "",
184
- type: "secondary",
185
- "data-test-id": "node-pin-button",
186
- onClick: ($event) => onPinButtonClick(data)
187
- }, {
188
- default: withCtx(() => _cache[1] || (_cache[1] = [
189
- createTextVNode(" Mock ")
190
- ])),
191
- _: 2
192
- }, 1032, ["onClick"]))
193
- ]),
194
- _: 2
195
- }, 1024)
196
- ], 2)) : createCommentVNode("", true)
197
- ]),
198
- _: 1
199
- }, 8, ["id", "loading", "class", "nodes", "connections", "event-bus"])
200
- ], 2));
201
- };
202
- }
203
- });
204
- const container$1 = "_container_z719h_123";
205
- const pinButtonContainer = "_pinButtonContainer_z719h_128";
206
- const pinButtonContainerPinned = "_pinButtonContainerPinned_z719h_139";
207
- const customSecondary = "_customSecondary_z719h_143";
208
- const spinner = "_spinner_z719h_152";
209
- const noNodes = "_noNodes_z719h_159";
210
- const style0$8 = {
211
- container: container$1,
212
- pinButtonContainer,
213
- pinButtonContainerPinned,
214
- customSecondary,
215
- spinner,
216
- noNodes
217
- };
218
- const cssModules$8 = {
219
- "$style": style0$8
220
- };
221
- const __unplugin_components_0 = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["__cssModules", cssModules$8]]);
1
+ import { u as useTestDefinitionForm } from "./useTestDefinitionForm-DX1gvhBC.js";
2
+ import { _ as _export_sfc, i as createElementBlock, g as openBlock, k as createBaseVNode, n as normalizeClass, d as defineComponent, r as ref, $ as useCssModule, q as computed, h as resolveComponent, m as unref, j as createVNode, f as createCommentVNode, aR as N8nTooltip, w as withCtx, e as createBlock, by as N8nText, x as renderSlot, F as Fragment, l as createTextVNode, t as toDisplayString, d9 as InfoTip, c as useI18n, g9 as ne, bw as useTemplateRef, D as renderList, ga as N8nInput, aT as _sfc_main$a, b9 as N8nButton, z as nextTick, T as useWorkflowsStore, bu as useNodeTypesStore, U as useRoute, b as useRouter, fJ as useModel, o as onMounted, cU as N8nHeading, gb as _sfc_main$b, b2 as mergeProps, ah as useTelemetry, a3 as useProjectsStore, gc as SAMPLE_EVALUATION_WORKFLOW, aS as N8nLink, gd as __unplugin_components_0, V as VIEWS, fI as mergeModels, ge as Tag, gf as NODE_PINNING_MODAL_KEY, gg as __unplugin_components_0$1, aj as useMessage, fi as dateFormat, ba as watchEffect, aB as withDirectives, aC as vShow, gh as TestTableBase, c6 as N8nIcon, B as normalizeStyle, K as useDebounce, a as useToast, c3 as useTestDefinitionStore, fT as useAnnotationTagsStore, L as useUIStore, Z as useDocumentVisibility, I as watch, gi as InlineNameEdit } from "./index-CDluwnbb.js";
3
+ import { u as useVueFlow, a as useCanvasMapping, C as Canvas, b as CanvasNode } from "./useCanvasMapping-DnPGwCm3.js";
4
+ import { b as useCanvasOperations } from "./useCanvasOperations-CY1OrN2X.js";
5
+ import { L as Line } from "./index-DAyhXitv.js";
6
+ import "./useRunWorkflow-RBDuKZVj.js";
7
+ import "./pushConnection.store-Dl_VgTY2.js";
222
8
  const blockArrow = "_blockArrow_hbkir_123";
223
9
  const stalk = "_stalk_hbkir_129";
224
10
  const arrowHead = "_arrowHead_hbkir_136";
225
- const style0$7 = {
11
+ const style0$8 = {
226
12
  blockArrow,
227
13
  stalk,
228
14
  arrowHead
229
15
  };
230
- const _sfc_main$8 = {};
16
+ const _sfc_main$9 = {};
231
17
  function _sfc_render(_ctx, _cache) {
232
18
  return openBlock(), createElementBlock("div", {
233
19
  class: normalizeClass(_ctx.$style.blockArrow)
@@ -240,11 +26,11 @@ function _sfc_render(_ctx, _cache) {
240
26
  }, null, 2)
241
27
  ], 2);
242
28
  }
243
- const cssModules$7 = {
244
- "$style": style0$7
29
+ const cssModules$8 = {
30
+ "$style": style0$8
245
31
  };
246
- const BlockArrow = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["render", _sfc_render], ["__cssModules", cssModules$7]]);
247
- const _sfc_main$7 = /* @__PURE__ */ defineComponent({
32
+ const BlockArrow = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["render", _sfc_render], ["__cssModules", cssModules$8]]);
33
+ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
248
34
  __name: "EvaluationStep",
249
35
  props: {
250
36
  title: { default: "" },
@@ -411,7 +197,7 @@ const infoTip = "_infoTip_1h8fm_172";
411
197
  const actions = "_actions_1h8fm_180";
412
198
  const cardContent = "_cardContent_1h8fm_186";
413
199
  const cardContentWrapper = "_cardContentWrapper_1h8fm_192";
414
- const style0$6 = {
200
+ const style0$7 = {
415
201
  evaluationStep,
416
202
  evaluationTooltip,
417
203
  icon,
@@ -425,11 +211,11 @@ const style0$6 = {
425
211
  cardContentWrapper,
426
212
  "has-issues": "_has-issues_1h8fm_196"
427
213
  };
428
- const cssModules$6 = {
429
- "$style": style0$6
214
+ const cssModules$7 = {
215
+ "$style": style0$7
430
216
  };
431
- const EvaluationStep = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__cssModules", cssModules$6]]);
432
- const _sfc_main$6 = /* @__PURE__ */ defineComponent({
217
+ const EvaluationStep = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["__cssModules", cssModules$7]]);
218
+ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
433
219
  __name: "MetricsInput",
434
220
  props: {
435
221
  modelValue: {}
@@ -491,13 +277,219 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
491
277
  }
492
278
  });
493
279
  const metricItem = "_metricItem_1hbcq_123";
494
- const style0$5 = {
280
+ const style0$6 = {
495
281
  metricItem
496
282
  };
283
+ const cssModules$6 = {
284
+ "$style": style0$6
285
+ };
286
+ const MetricsInput = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__cssModules", cssModules$6]]);
287
+ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
288
+ __name: "NodesPinning",
289
+ props: {
290
+ "modelValue": { required: true },
291
+ "modelModifiers": {}
292
+ },
293
+ emits: ["update:modelValue"],
294
+ setup(__props) {
295
+ const workflowsStore = useWorkflowsStore();
296
+ const nodeTypesStore = useNodeTypesStore();
297
+ const route = useRoute();
298
+ const router = useRouter();
299
+ const locale = useI18n();
300
+ const telemetry = useTelemetry();
301
+ const { resetWorkspace, initializeWorkspace } = useCanvasOperations({ router });
302
+ const uuid = crypto.randomUUID();
303
+ const model = useModel(__props, "modelValue");
304
+ const isLoading = ref(false);
305
+ const workflowId = computed(() => route.params.name);
306
+ const testId = computed(() => route.params.testId);
307
+ const workflow = computed(() => workflowsStore.getWorkflowById(workflowId.value));
308
+ const workflowObject = computed(() => workflowsStore.getCurrentWorkflow(true));
309
+ const canvasId = computed(() => `${uuid}-${testId.value}`);
310
+ const { onNodesInitialized, fitView, zoomTo, onNodeClick, viewport } = useVueFlow({
311
+ id: canvasId.value
312
+ });
313
+ const nodes = computed(() => workflow.value.nodes ?? []);
314
+ const connections = computed(() => workflow.value.connections);
315
+ const { nodes: mappedNodes, connections: mappedConnections } = useCanvasMapping({
316
+ nodes,
317
+ connections,
318
+ workflowObject
319
+ });
320
+ async function loadData() {
321
+ isLoading.value = true;
322
+ workflowsStore.resetState();
323
+ resetWorkspace();
324
+ await Promise.all([
325
+ nodeTypesStore.getNodeTypes(),
326
+ workflowsStore.fetchWorkflow(workflowId.value)
327
+ ]);
328
+ workflow.value.pinData = {};
329
+ initializeWorkspace(workflow.value);
330
+ }
331
+ function getNodeNameById(id) {
332
+ return mappedNodes.value.find((node) => node.id === id)?.data?.name;
333
+ }
334
+ function isMocked(data) {
335
+ return model.value.some((node) => node.id === data.id);
336
+ }
337
+ function canBeMocked(outputs, inputs) {
338
+ return outputs.length === 1 && inputs.length >= 1;
339
+ }
340
+ function handleNodeClick(data) {
341
+ const nodeName = getNodeNameById(data.id);
342
+ if (!nodeName || !canBeMocked(data.outputs, data.inputs)) return;
343
+ const mocked = isMocked(data);
344
+ model.value = mocked ? model.value.filter((node) => node.id !== data.id) : model.value.concat({ name: nodeName, id: data.id });
345
+ if (!mocked) {
346
+ telemetry.track("User selected node to be mocked", {
347
+ node_id: data.id,
348
+ test_id: testId.value
349
+ });
350
+ }
351
+ }
352
+ function tooltipContent(data) {
353
+ if (nodeTypesStore.isTriggerNode(data.type)) {
354
+ return locale.baseText("testDefinition.edit.nodesPinning.triggerTooltip");
355
+ }
356
+ if (!canBeMocked(data.outputs, data.inputs)) {
357
+ return;
358
+ }
359
+ if (isMocked(data)) {
360
+ return locale.baseText("testDefinition.edit.nodesPinning.pinButtonTooltip.pinned");
361
+ } else {
362
+ return locale.baseText("testDefinition.edit.nodesPinning.pinButtonTooltip");
363
+ }
364
+ }
365
+ function tooltipOffset(data) {
366
+ if (nodeTypesStore.isTriggerNode(data.type)) return;
367
+ return 45 * viewport.value.zoom;
368
+ }
369
+ function tooltipProps(data) {
370
+ const content2 = tooltipContent(data);
371
+ return {
372
+ disabled: !content2,
373
+ content: content2,
374
+ offset: tooltipOffset(data)
375
+ };
376
+ }
377
+ onNodeClick(({ node }) => handleNodeClick(node.data));
378
+ onNodesInitialized(async () => {
379
+ await fitView();
380
+ await zoomTo(0.7);
381
+ await new Promise((resolve) => setTimeout(resolve, 400));
382
+ isLoading.value = false;
383
+ });
384
+ onMounted(loadData);
385
+ return (_ctx, _cache) => {
386
+ return unref(mappedNodes).length === 0 ? (openBlock(), createElementBlock("div", {
387
+ key: 0,
388
+ class: normalizeClass(_ctx.$style.noNodes)
389
+ }, [
390
+ createVNode(unref(N8nHeading), {
391
+ size: "large",
392
+ bold: true,
393
+ class: normalizeClass(_ctx.$style.noNodesTitle)
394
+ }, {
395
+ default: withCtx(() => [
396
+ createTextVNode(toDisplayString(unref(locale).baseText("testDefinition.edit.pinNodes.noNodes.title")), 1)
397
+ ]),
398
+ _: 1
399
+ }, 8, ["class"]),
400
+ createVNode(unref(N8nText), null, {
401
+ default: withCtx(() => [
402
+ createTextVNode(toDisplayString(unref(locale).baseText("testDefinition.edit.pinNodes.noNodes.description")), 1)
403
+ ]),
404
+ _: 1
405
+ })
406
+ ], 2)) : (openBlock(), createElementBlock("div", {
407
+ key: 1,
408
+ class: normalizeClass(_ctx.$style.container)
409
+ }, [
410
+ isLoading.value ? (openBlock(), createBlock(unref(_sfc_main$b), {
411
+ key: 0,
412
+ size: "large",
413
+ type: "dots",
414
+ class: normalizeClass(_ctx.$style.spinner)
415
+ }, null, 8, ["class"])) : createCommentVNode("", true),
416
+ createVNode(Canvas, {
417
+ id: canvasId.value,
418
+ loading: isLoading.value,
419
+ nodes: unref(mappedNodes),
420
+ connections: unref(mappedConnections),
421
+ "show-bug-reporting-button": false,
422
+ "read-only": true
423
+ }, {
424
+ node: withCtx(({ nodeProps }) => [
425
+ createVNode(unref(N8nTooltip), mergeProps({ placement: "top" }, tooltipProps(nodeProps.data)), {
426
+ default: withCtx(() => [
427
+ createVNode(CanvasNode, mergeProps(nodeProps, {
428
+ class: {
429
+ [_ctx.$style.isTrigger]: unref(nodeTypesStore).isTriggerNode(nodeProps.data.type),
430
+ [_ctx.$style.mockNode]: true
431
+ }
432
+ }), {
433
+ toolbar: withCtx(({ data, outputs, inputs }) => [
434
+ canBeMocked(outputs, inputs) ? (openBlock(), createElementBlock("div", {
435
+ key: 0,
436
+ class: normalizeClass({
437
+ [_ctx.$style.pinButtonContainer]: true,
438
+ [_ctx.$style.pinButtonContainerPinned]: isMocked(data)
439
+ })
440
+ }, [
441
+ createVNode(unref(N8nButton), {
442
+ icon: "thumbtack",
443
+ block: "",
444
+ type: "secondary",
445
+ class: normalizeClass({ [_ctx.$style.customSecondary]: isMocked(data) }),
446
+ "data-test-id": "node-pin-button"
447
+ }, {
448
+ default: withCtx(() => [
449
+ isMocked(data) ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
450
+ createTextVNode(toDisplayString(unref(locale).baseText("contextMenu.unpin")), 1)
451
+ ], 64)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
452
+ createTextVNode(toDisplayString(unref(locale).baseText("contextMenu.pin")), 1)
453
+ ], 64))
454
+ ]),
455
+ _: 2
456
+ }, 1032, ["class"])
457
+ ], 2)) : createCommentVNode("", true)
458
+ ]),
459
+ _: 2
460
+ }, 1040, ["class"])
461
+ ]),
462
+ _: 2
463
+ }, 1040)
464
+ ]),
465
+ _: 1
466
+ }, 8, ["id", "loading", "nodes", "connections"])
467
+ ], 2));
468
+ };
469
+ }
470
+ });
471
+ const mockNode = "_mockNode_7xdc7_123";
472
+ const isTrigger = "_isTrigger_7xdc7_127";
473
+ const container$1 = "_container_7xdc7_131";
474
+ const pinButtonContainer = "_pinButtonContainer_7xdc7_138";
475
+ const pinButtonContainerPinned = "_pinButtonContainerPinned_7xdc7_149";
476
+ const customSecondary = "_customSecondary_7xdc7_153";
477
+ const spinner = "_spinner_7xdc7_162";
478
+ const noNodes = "_noNodes_7xdc7_169";
479
+ const style0$5 = {
480
+ mockNode,
481
+ isTrigger,
482
+ container: container$1,
483
+ pinButtonContainer,
484
+ pinButtonContainerPinned,
485
+ customSecondary,
486
+ spinner,
487
+ noNodes
488
+ };
497
489
  const cssModules$5 = {
498
490
  "$style": style0$5
499
491
  };
500
- const MetricsInput = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["__cssModules", cssModules$5]]);
492
+ const NodesPinning = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["__cssModules", cssModules$5]]);
501
493
  const _hoisted_1$3 = { class: "mt-xs" };
502
494
  const _sfc_main$5 = /* @__PURE__ */ defineComponent({
503
495
  __name: "WorkflowSelector",
@@ -558,7 +550,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
558
550
  window.open(href, "_blank");
559
551
  };
560
552
  return (_ctx, _cache) => {
561
- const _component_WorkflowSelectorParameterInput = __unplugin_components_0$2;
553
+ const _component_WorkflowSelectorParameterInput = __unplugin_components_0;
562
554
  return openBlock(), createElementBlock("div", _hoisted_1$3, [
563
555
  !_ctx.modelValue.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
564
556
  createVNode(unref(N8nButton), {
@@ -661,7 +653,6 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
661
653
  );
662
654
  const metrics = useModel(__props, "metrics");
663
655
  const mockedNodes = useModel(__props, "mockedNodes");
664
- const nodePinningModal = ref(null);
665
656
  const selectedTag = computed(() => props.tagsById[tags.value.value[0]] ?? {});
666
657
  function openExecutionsView() {
667
658
  emit("openExecutionsViewForTag");
@@ -669,9 +660,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
669
660
  return (_ctx, _cache) => {
670
661
  const _component_font_awesome_icon = resolveComponent("font-awesome-icon");
671
662
  const _component_i18n_t = resolveComponent("i18n-t");
672
- const _component_N8nHeading = resolveComponent("N8nHeading");
673
- const _component_NodesPinning = __unplugin_components_0;
674
- const _component_Modal = __unplugin_components_1;
663
+ const _component_Modal = __unplugin_components_0$1;
675
664
  return openBlock(), createElementBlock("div", null, [
676
665
  createBaseVNode("div", {
677
666
  class: normalizeClass(_ctx.$style.editForm)
@@ -814,24 +803,24 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
814
803
  }, 8, ["title", "issues", "description", "tooltip", "external-tooltip"])
815
804
  ], 2),
816
805
  createVNode(_component_Modal, {
817
- ref_key: "nodePinningModal",
818
- ref: nodePinningModal,
819
- width: "80vw",
820
- height: "85vh",
806
+ width: "calc(100% - (48px * 2))",
807
+ height: "calc(100% - (48px * 2))",
808
+ "custom-class": _ctx.$style.pinnigModal,
821
809
  name: unref(NODE_PINNING_MODAL_KEY)
822
810
  }, {
823
811
  header: withCtx(() => [
824
- createVNode(_component_N8nHeading, {
825
- size: "large",
826
- bold: true
812
+ createVNode(unref(N8nHeading), {
813
+ tag: "h3",
814
+ size: "xlarge",
815
+ color: "text-dark",
816
+ class: "mb-2xs"
827
817
  }, {
828
818
  default: withCtx(() => [
829
819
  createTextVNode(toDisplayString(unref(locale).baseText("testDefinition.edit.selectNodes")), 1)
830
820
  ]),
831
821
  _: 1
832
822
  }),
833
- _cache[6] || (_cache[6] = createBaseVNode("br", null, null, -1)),
834
- createVNode(unref(N8nText), null, {
823
+ createVNode(unref(N8nText), { color: "text-base" }, {
835
824
  default: withCtx(() => [
836
825
  createTextVNode(toDisplayString(unref(locale).baseText("testDefinition.edit.modal.description")), 1)
837
826
  ]),
@@ -839,21 +828,23 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
839
828
  })
840
829
  ]),
841
830
  content: withCtx(() => [
842
- createVNode(_component_NodesPinning, {
831
+ createVNode(NodesPinning, {
843
832
  modelValue: mockedNodes.value,
844
833
  "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => mockedNodes.value = $event),
845
834
  "data-test-id": "nodes-pinning-modal"
846
835
  }, null, 8, ["modelValue"])
847
836
  ]),
848
837
  _: 1
849
- }, 8, ["name"])
838
+ }, 8, ["custom-class", "name"])
850
839
  ]);
851
840
  };
852
841
  }
853
842
  });
854
- const nestedSteps = "_nestedSteps_1784n_123";
855
- const tagInputTag = "_tagInputTag_1784n_128";
843
+ const pinnigModal = "_pinnigModal_1qbos_123";
844
+ const nestedSteps = "_nestedSteps_1qbos_128";
845
+ const tagInputTag = "_tagInputTag_1qbos_133";
856
846
  const style0$4 = {
847
+ pinnigModal,
857
848
  nestedSteps,
858
849
  tagInputTag
859
850
  };
@@ -1,4 +1,4 @@
1
- import { d as defineComponent, q as computed, c as openBlock, h as createElementBlock, j as createBaseVNode, i as createVNode, w as withCtx, k as createTextVNode, l as unref, cX as N8nBadge, n as normalizeClass, t as toDisplayString, fY as N8nText, e as createBlock, cR as N8nButton, F as Fragment, f as createCommentVNode, g as useI18n, _ as _export_sfc, b0 as mergeProps, fZ as N8nIcon, cB as _sfc_main$3, B as renderList, v as renderSlot, b as useRouter, bX as useTestDefinitionStore, a as useToast, cT as useAsyncState, f_ as N8nLoading, cG as N8nHeading, V as VIEWS, cM as orderBy, J as withModifiers, aQ as N8nTooltip, aR as _sfc_main$4, fK as N8nActionToggle, ap as h, f$ as RouterLink, af as MODAL_CONFIRM, al as useMessage } from "./index-ntAcmC2q.js";
1
+ import { d as defineComponent, q as computed, i as createElementBlock, g as openBlock, n as normalizeClass, k as createBaseVNode, j as createVNode, w as withCtx, l as createTextVNode, m as unref, d3 as N8nBadge, e as createBlock, f as createCommentVNode, t as toDisplayString, c as useI18n, by as N8nText, b9 as N8nButton, F as Fragment, _ as _export_sfc, x as renderSlot, b2 as mergeProps, c6 as N8nIcon, cO as _sfc_main$3, D as renderList, b as useRouter, c3 as useTestDefinitionStore, a as useToast, d1 as useAsyncState, cY as orderBy, g7 as N8nLoading, cU as N8nHeading, J as withModifiers, g8 as N8nActionToggle, aR as N8nTooltip, aT as _sfc_main$4, ar as h, c4 as RouterLink, V as VIEWS, aj as useMessage, ak as MODAL_CONFIRM } from "./index-CDluwnbb.js";
2
2
  const _sfc_main$2 = /* @__PURE__ */ defineComponent({
3
3
  __name: "EmptyState",
4
4
  emits: ["create-test"],
@@ -1,5 +1,5 @@
1
- import { u as useTestDefinitionForm } from "./useTestDefinitionForm-uexL_DkW.js";
2
- import { d as defineComponent, bX as useTestDefinitionStore, fH as useAnnotationTagsStore, a as useToast, b as useRouter, $ as useRootStore, V as VIEWS, c as openBlock, h as createElementBlock, t as toDisplayString, ak as useTelemetry } from "./index-ntAcmC2q.js";
1
+ import { u as useTestDefinitionForm } from "./useTestDefinitionForm-DX1gvhBC.js";
2
+ import { d as defineComponent, c3 as useTestDefinitionStore, fT as useAnnotationTagsStore, au as useExecutionsStore, a as useToast, b as useRouter, U as useRoute, ah as useTelemetry, a0 as useRootStore, V as VIEWS, e as createBlock, g as openBlock, m as unref, g7 as N8nLoading } from "./index-CDluwnbb.js";
3
3
  const _sfc_main = /* @__PURE__ */ defineComponent({
4
4
  __name: "TestDefinitionNewView",
5
5
  props: {
@@ -10,9 +10,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
10
10
  const { state, createTest, updateTest } = useTestDefinitionForm();
11
11
  const testDefinitionStore = useTestDefinitionStore();
12
12
  const tagsStore = useAnnotationTagsStore();
13
+ const executionsStore = useExecutionsStore();
13
14
  const toast = useToast();
14
15
  const telemetry = useTelemetry();
15
16
  const router = useRouter();
17
+ const route = useRoute();
16
18
  function generateTagFromName(name) {
17
19
  let tag = name.toLowerCase().replace(/\s+/g, "_");
18
20
  if (tag.length > 18) {
@@ -35,9 +37,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
35
37
  if (!test) {
36
38
  throw new Error("no test found");
37
39
  }
38
- const tag = generateTagFromName(state.value.name.value);
40
+ const tag = generateTagFromName(test.name);
39
41
  const testTag = await createTag(tag);
40
42
  state.value.tags.value = [testTag.id];
43
+ if (typeof route.query?.executionId === "string" && Array.isArray(route.query.annotationTags)) {
44
+ const newTags = [...route.query.annotationTags, testTag.id];
45
+ await executionsStore.annotateExecution(route.query.executionId, { tags: newTags });
46
+ }
41
47
  await updateTest(test.id);
42
48
  testDefinitionStore.updateRunFieldIssues(test.id);
43
49
  telemetry.track(
@@ -57,7 +63,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
57
63
  });
58
64
  });
59
65
  return (_ctx, _cache) => {
60
- return openBlock(), createElementBlock("div", null, "creating " + toDisplayString(_ctx.name), 1);
66
+ return openBlock(), createBlock(unref(N8nLoading), {
67
+ loading: "",
68
+ rows: 3
69
+ });
61
70
  };
62
71
  }
63
72
  });
@@ -1,4 +1,4 @@
1
- import { d as defineComponent, b as useRouter, a5 as useWorkflowHelpers, U as useWorkflowsStore, cT as useAsyncState, c as openBlock, h as createElementBlock, l as unref, e as createBlock, f as createCommentVNode, n as normalizeClass, m as resolveComponent, _ as _export_sfc } from "./index-ntAcmC2q.js";
1
+ import { d as defineComponent, b as useRouter, a6 as useWorkflowHelpers, T as useWorkflowsStore, d1 as useAsyncState, h as resolveComponent, i as createElementBlock, g as openBlock, e as createBlock, f as createCommentVNode, m as unref, n as normalizeClass, _ as _export_sfc } from "./index-CDluwnbb.js";
2
2
  const _sfc_main = /* @__PURE__ */ defineComponent({
3
3
  __name: "TestDefinitionRootView",
4
4
  props: {