n8n-editor-ui 1.75.0 → 1.76.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 (94) hide show
  1. package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-CGrVAIIO.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-Bk0ZjgAz.js} +1 -1
  2. package/dist/assets/{AuthView-ilZ0xRQe.js → AuthView-CQW1x21E.js} +2 -2
  3. package/dist/assets/{CanvasChat-B3m7qTtB.js → CanvasChat-DuJwpZew.js} +19 -18
  4. package/dist/assets/{CanvasControls-laNSmWAd.js → CanvasControls-Br7x0c2w.js} +1 -1
  5. package/dist/assets/{ChangePasswordView-DGXlOlVn.js → ChangePasswordView-Ck-5oU_m.js} +3 -3
  6. package/dist/assets/CollectionParameter-DRNykodC.js +4 -0
  7. package/dist/assets/{ConcurrentExecutionsHeader-CDIlj36E.js → ConcurrentExecutionsHeader-Dfi130Qe.js} +2 -2
  8. package/dist/assets/{CredentialsView-BqjdkWhh.js → CredentialsView-D44diL3J.js} +4 -4
  9. package/dist/assets/{ErrorView--I-VVLk9.js → ErrorView-ub9nQRXV.js} +1 -1
  10. package/dist/assets/{ExecutionsView-BiSV7J9a.js → ExecutionsView-DsAXYzOp.js} +17 -5
  11. package/dist/assets/{FileSaver.min-LAx9vEXw.js → FileSaver.min-nbqT44De.js} +1 -1
  12. package/dist/assets/{FixedCollectionParameter-ByX4uXQc.js → FixedCollectionParameter-DwiBHQQW.js} +1 -1
  13. package/dist/assets/{ForgotMyPasswordView-C-tewPwi.js → ForgotMyPasswordView-CH0wwots.js} +3 -3
  14. package/dist/assets/{Logo-CyDV6IUz.js → Logo-CIYEwVrA.js} +1 -1
  15. package/dist/assets/{MainHeader-nG1530RP.js → MainHeader-CN6RTCuC.js} +15 -105
  16. package/dist/assets/{MainHeader-BIKp2Ncp.css → MainHeader-DC-g9NGP.css} +12 -11
  17. package/dist/assets/{MainSidebar-CF4s-Ouk.js → MainSidebar-ih4BlE0n.js} +4 -81
  18. package/dist/assets/{NodeCreation-De8juZ9k.js → NodeCreation-DQUKwvhM.js} +4 -4
  19. package/dist/assets/{NodeCreator-Cra3o41k.js → NodeCreator-B1R35yuN.js} +5 -5
  20. package/dist/assets/{NodeViewSwitcher-BE3EzD3h.js → NodeViewSwitcher-TsFkW80s.js} +89 -48
  21. package/dist/assets/{NodeViewSwitcher-CB1zkjni.css → NodeViewSwitcher-aJwrKS8o.css} +23 -23
  22. package/dist/assets/{ProjectCardBadge-CYEfBgU2.js → ProjectCardBadge-BcCHZFJ2.js} +2 -15
  23. package/dist/assets/{ProjectHeader-DUhyXx1P.js → ProjectHeader-CSOMgkVs.js} +1 -1
  24. package/dist/assets/{ProjectSettings-DmPZa04c.js → ProjectSettings-DtqNq5WU.js} +2 -2
  25. package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-C0Zr49w5.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-CZIKiOsY.js} +1 -1
  26. package/dist/assets/{ResourcesListLayout-BF7yHXTU.js → ResourcesListLayout-CvkkebAN.js} +21 -11
  27. package/dist/assets/{ResourcesListLayout-CJC-YvjD.css → ResourcesListLayout-d7mMNhOL.css} +6 -6
  28. package/dist/assets/{RunDataJson-D6kl_yU3.js → RunDataJson-DA1LNZGU.js} +15 -15
  29. package/dist/assets/{RunDataJson-BXTLuo7i.css → RunDataJson-Txw0lqay.css} +1 -0
  30. package/dist/assets/{RunDataJsonActions-CBSKVOkR.js → RunDataJsonActions-DZzYHsR7.js} +2 -2
  31. package/dist/assets/{RunDataSearch-C8ri_W9l.js → RunDataSearch-D6-6kSmI.js} +1 -1
  32. package/dist/assets/{RunDataTable-fDrhEtER.js → RunDataTable-bDBgkWN3.js} +2 -2
  33. package/dist/assets/{SamlOnboarding-B9rLeJiC.js → SamlOnboarding-ULq0l8s6.js} +3 -3
  34. package/dist/assets/{SettingsApiView-DYA_Z_Bm.js → SettingsApiView-CVRk9yEi.js} +1 -1
  35. package/dist/assets/{SettingsCommunityNodesView-DWF5X20Q.js → SettingsCommunityNodesView-B6We65ta.js} +4 -4
  36. package/dist/assets/{SettingsExternalSecrets-D56h6u5r.js → SettingsExternalSecrets-wrWe6ob7.js} +1 -1
  37. package/dist/assets/{SettingsLdapView-tZze_vXh.js → SettingsLdapView-CeKm7XML.js} +1 -1
  38. package/dist/assets/{SettingsLogStreamingView-Bw3FugIn.js → SettingsLogStreamingView-DxAoQ7dF.js} +1 -1
  39. package/dist/assets/{SettingsPersonalView-BRXa1jDG.js → SettingsPersonalView-DFcUFc08.js} +1 -1
  40. package/dist/assets/{SettingsSourceControl-BBn_qSA4.js → SettingsSourceControl-D9u9tDhF.js} +1 -1
  41. package/dist/assets/{SettingsSso-BJCIqJoE.js → SettingsSso-gUSJtFP0.js} +1 -1
  42. package/dist/assets/{SettingsUsageAndPlan-BLxfFlk9.js → SettingsUsageAndPlan-C4rSaxsT.js} +1 -1
  43. package/dist/assets/{SettingsUsersView-DgquKogH.js → SettingsUsersView-DSaFQg1K.js} +1 -1
  44. package/dist/assets/{SettingsView-geSqtBi5.js → SettingsView-BcBZpdTs.js} +1 -1
  45. package/dist/assets/{SetupView-BUnzDsGx.js → SetupView-BnZ-D6Jy.js} +3 -3
  46. package/dist/assets/{SetupWorkflowCredentialsButton-OMbE5FVR.js → SetupWorkflowCredentialsButton-B3DfAGgF.js} +1 -1
  47. package/dist/assets/{SetupWorkflowFromTemplateView-CDUDJkOD.js → SetupWorkflowFromTemplateView-DVLoF-kN.js} +3 -3
  48. package/dist/assets/{SigninView-BM3kNgaO.js → SigninView-BI4UTqFm.js} +3 -3
  49. package/dist/assets/{SignoutView-CpD96iu3.js → SignoutView-4KEfr3ze.js} +1 -1
  50. package/dist/assets/{SignupView-BHirfE85.js → SignupView-BdxSQxbe.js} +3 -3
  51. package/dist/assets/{TemplateDetails-CnvXukVX.js → TemplateDetails-BU5E9lAh.js} +1 -1
  52. package/dist/assets/{TemplateList-oSLDmMo9.js → TemplateList-CSyTesvr.js} +1 -1
  53. package/dist/assets/{TemplatesCollectionView-CoK7iBJV.js → TemplatesCollectionView-aqqEP8td.js} +5 -5
  54. package/dist/assets/{TemplatesSearchView-Cu2hXp49.js → TemplatesSearchView-BXQw_aAZ.js} +3 -3
  55. package/dist/assets/{TemplatesView-B0NINzN-.js → TemplatesView-BbVjMkgy.js} +1 -1
  56. package/dist/assets/{TemplatesWorkflowView-BQngHyNE.js → TemplatesWorkflowView-Cao3RpEd.js} +5 -5
  57. package/dist/assets/{TestDefinitionEditView-DQ1n3kAQ.js → TestDefinitionEditView-CgW-4tTx.js} +785 -547
  58. package/dist/assets/{TestDefinitionEditView-FI1GVbhl.css → TestDefinitionEditView-d7yfvp9P.css} +601 -238
  59. package/dist/assets/{TestDefinitionListView-BnnmuS88.js → TestDefinitionListView-D3eg62pM.js} +93 -68
  60. package/dist/assets/{TestDefinitionRootView-D0gG8g0k.js → TestDefinitionRootView-DJdsaL4M.js} +1 -1
  61. package/dist/assets/VariablesView-2TmNYpas.js +509 -0
  62. package/dist/assets/{VariablesView-D4pRzSuY.css → VariablesView-CIfrpJdg.css} +21 -54
  63. package/dist/assets/{WorkerView-Bm_msQwI.js → WorkerView-C3LhhFeZ.js} +5 -5
  64. package/dist/assets/{WorkflowActivator-B5QyeA7d.js → WorkflowActivator-DiOQiQK2.js} +2 -2
  65. package/dist/assets/{WorkflowExecutionsInfoAccordion-BYRGFbed.js → WorkflowExecutionsInfoAccordion-BmMiVSHQ.js} +1 -1
  66. package/dist/assets/{WorkflowExecutionsLandingPage-DuWFInNH.js → WorkflowExecutionsLandingPage-CxbfP9Kf.js} +2 -2
  67. package/dist/assets/{WorkflowExecutionsPreview-Bwo_dPzH.js → WorkflowExecutionsPreview-Cku-ZBQ3.js} +5 -5
  68. package/dist/assets/{WorkflowExecutionsView-BUHtKz5M.css → WorkflowExecutionsView-BjdRnQOE.css} +32 -32
  69. package/dist/assets/{WorkflowExecutionsView-9Bir7Ax7.js → WorkflowExecutionsView-C0CnXLDW.js} +43 -29
  70. package/dist/assets/{WorkflowHistory-Cu1-T0_R.js → WorkflowHistory-Bg6AIKXX.js} +3 -3
  71. package/dist/assets/{WorkflowOnboardingView-D_PW4z5K.js → WorkflowOnboardingView-LXWyp2is.js} +1 -1
  72. package/dist/assets/{WorkflowPreview-DMBM5zJ7.js → WorkflowPreview-CsR9t5iY.js} +1 -1
  73. package/dist/assets/{WorkflowsView-DTJQfqt9.js → WorkflowsView-DQJAEKqk.js} +7 -7
  74. package/dist/assets/{easyAiWorkflowUtils-oy6hZxJE.js → easyAiWorkflowUtils-D3El0FyE.js} +1 -1
  75. package/dist/assets/{index-DuAsyBNI.css → index-DsHZ4yOE.css} +255 -36
  76. package/dist/assets/{index-DVhaXv7m.js → index-DvkbRfZN.js} +2558 -1951
  77. package/dist/assets/{polyfills-BN5TIqPj.js → polyfills-DNwgos9f.js} +650 -0
  78. package/dist/assets/{pushConnection.store-nnc6AEL8.js → pushConnection.store-5KniMGTZ.js} +1 -1
  79. package/dist/assets/{templateActions-BjByEL0H.js → templateActions-UGDN8R7F.js} +1 -1
  80. package/dist/assets/useBeforeUnload-BwgAu_Gm.js +43 -0
  81. package/dist/assets/{useBugReporting-Cgoz2JMv.js → useBugReporting-Bqv4ngy7.js} +2 -1
  82. package/dist/assets/{useCanvasOperations-BSKKylIT.css → useCanvasOperations-Bjf582lB.css} +12 -12
  83. package/dist/assets/{useCanvasOperations-CZCbgXks.js → useCanvasOperations-Cw1yjntX.js} +56 -25
  84. package/dist/assets/{useExecutionDebugging-Czm5h-sB.js → useExecutionDebugging-CTzUvS-m.js} +1 -1
  85. package/dist/assets/{useExecutionHelpers-qeNSBls3.js → useExecutionHelpers-ts_ANr0X.js} +1 -1
  86. package/dist/assets/{usePinnedData-9d5rr-Ll.js → usePinnedData-CAHmwr13.js} +1 -1
  87. package/dist/assets/{usePushConnection-C5MO_Lyn.js → usePushConnection-BcVRW8VB.js} +3 -3
  88. package/dist/assets/{useRunWorkflow-BeM5B2jX.js → useRunWorkflow-DZq8rmMi.js} +7 -4
  89. package/dist/assets/{useWorkflowActivate-CAW-Lrw6.js → useWorkflowActivate-y3uHMZeh.js} +1 -1
  90. package/dist/index.html +3 -3
  91. package/package.json +1 -1
  92. package/dist/assets/CollectionParameter-CS9E8rhZ.js +0 -4
  93. package/dist/assets/VariablesView-CkD1CK7k.js +0 -599
  94. package/dist/assets/useNodeViewVersionSwitcher-Z6V-jW5s.js +0 -93
@@ -0,0 +1,509 @@
1
+ import { d as defineComponent, b5 as useClipboard, a as useToast, q as computed, c as openBlock, e as createBlock, w as withCtx, k as createTextVNode, t as toDisplayString, l as unref, j as createBaseVNode, aO as N8nTooltip, g as useI18n, _ as _export_sfc, dx as reactive, fK as toRaw, r as ref, h as createElementBlock, i as createVNode, fL as N8nFormInput, f as createCommentVNode, cs as N8nButton, p as useSettingsStore, dH as useEnvironmentsStore, u as useUsersStore, K as useUIStore, a0 as useSourceControlStore, U as useRoute, b as useRouter, fM as useTemplateRef, fN as useAsyncState, o as onMounted, a3 as useDocumentTitle, aR as createSlots, a_ as mergeProps, fO as N8nActionBox, aY as normalizeProps, fP as N8nInputLabel, fQ as N8nCheckbox, F as Fragment, fR as N8nBadge, fS as uid, ae as MODAL_CONFIRM, a5 as usePageRedirectionHelper, m as resolveComponent, aj as useTelemetry, ak as useMessage, al as getResourcePermissions, a8 as EnterpriseEditionFeature } from "./index-DvkbRfZN.js";
2
+ import { R as ResourcesListLayout, p as pickBy } from "./ResourcesListLayout-CvkkebAN.js";
3
+ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
4
+ __name: "VariablesUsageBadge",
5
+ props: {
6
+ name: {}
7
+ },
8
+ setup(__props) {
9
+ const i18n = useI18n();
10
+ const clipboard = useClipboard();
11
+ const { showMessage } = useToast();
12
+ const props = __props;
13
+ const usage = computed(() => `$vars.${props.name}`);
14
+ const handleClick = () => {
15
+ void clipboard.copy(usage.value);
16
+ showMessage({
17
+ title: i18n.baseText("variables.row.usage.copiedToClipboard"),
18
+ type: "success"
19
+ });
20
+ };
21
+ return (_ctx, _cache) => {
22
+ return openBlock(), createBlock(unref(N8nTooltip), { placement: "top" }, {
23
+ content: withCtx(() => [
24
+ createTextVNode(toDisplayString(unref(i18n).baseText("variables.row.usage.copyToClipboard")), 1)
25
+ ]),
26
+ default: withCtx(() => [
27
+ createBaseVNode("span", {
28
+ class: "usageSyntax",
29
+ onClick: handleClick
30
+ }, toDisplayString(usage.value), 1)
31
+ ]),
32
+ _: 1
33
+ });
34
+ };
35
+ }
36
+ });
37
+ const VariablesUsageBadge = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-513b2829"]]);
38
+ const _hoisted_1$1 = { class: "key-cell" };
39
+ const _hoisted_2$1 = {
40
+ class: "value-cell",
41
+ width: "100%"
42
+ };
43
+ const _hoisted_3$1 = { align: "right" };
44
+ const VALUE_MAX_LENGTH = 220;
45
+ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
46
+ __name: "VariablesForm",
47
+ props: {
48
+ variable: {}
49
+ },
50
+ emits: ["submit", "cancel"],
51
+ setup(__props, { emit: __emit }) {
52
+ const props = __props;
53
+ const emit = __emit;
54
+ const i18n = useI18n();
55
+ const keyValidationRules = [
56
+ { name: "REQUIRED" },
57
+ { name: "MAX_LENGTH", config: { maximum: 50 } },
58
+ {
59
+ name: "MATCH_REGEX",
60
+ config: {
61
+ regex: /^[a-zA-Z]/,
62
+ message: i18n.baseText("variables.editing.key.error.startsWithLetter")
63
+ }
64
+ },
65
+ {
66
+ name: "MATCH_REGEX",
67
+ config: {
68
+ regex: /^[a-zA-Z][a-zA-Z0-9_]*$/,
69
+ message: i18n.baseText("variables.editing.key.error.jsonKey")
70
+ }
71
+ }
72
+ ];
73
+ const valueValidationRules = [
74
+ { name: "MAX_LENGTH", config: { maximum: VALUE_MAX_LENGTH } }
75
+ ];
76
+ const form = reactive(structuredClone(toRaw(props.variable)));
77
+ const formValidation = reactive({
78
+ key: false,
79
+ value: false
80
+ });
81
+ const isValid = computed(() => Object.values(formValidation).every((value) => value));
82
+ const handleCancel = () => emit("cancel");
83
+ const validateOnBlur = ref(false);
84
+ const handleSubmit = () => {
85
+ validateOnBlur.value = true;
86
+ if (isValid.value) {
87
+ emit("submit", form);
88
+ }
89
+ };
90
+ return (_ctx, _cache) => {
91
+ return openBlock(), createElementBlock("tr", null, [
92
+ createBaseVNode("td", _hoisted_1$1, [
93
+ createVNode(unref(N8nFormInput), {
94
+ modelValue: form.key,
95
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => form.key = $event),
96
+ label: "",
97
+ name: "key",
98
+ "data-test-id": "variable-row-key-input",
99
+ placeholder: unref(i18n).baseText("variables.editing.key.placeholder"),
100
+ required: "",
101
+ "validate-on-blur": validateOnBlur.value,
102
+ "validation-rules": keyValidationRules,
103
+ "focus-initially": "",
104
+ onValidate: _cache[1] || (_cache[1] = (value) => formValidation.key = value)
105
+ }, null, 8, ["modelValue", "placeholder", "validate-on-blur"])
106
+ ]),
107
+ createBaseVNode("td", _hoisted_2$1, [
108
+ createVNode(unref(N8nFormInput), {
109
+ modelValue: form.value,
110
+ "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => form.value = $event),
111
+ class: "key-input",
112
+ label: "",
113
+ name: "value",
114
+ "data-test-id": "variable-row-value-input",
115
+ placeholder: unref(i18n).baseText("variables.editing.value.placeholder"),
116
+ type: "textarea",
117
+ autosize: { minRows: 1, maxRows: 6 },
118
+ size: "medium",
119
+ maxlength: VALUE_MAX_LENGTH,
120
+ "validate-on-blur": validateOnBlur.value,
121
+ "validation-rules": valueValidationRules,
122
+ onValidate: _cache[3] || (_cache[3] = (value) => formValidation.value = value)
123
+ }, null, 8, ["modelValue", "placeholder", "validate-on-blur"])
124
+ ]),
125
+ createBaseVNode("td", null, [
126
+ formValidation.key ? (openBlock(), createBlock(VariablesUsageBadge, {
127
+ key: 0,
128
+ name: form.key
129
+ }, null, 8, ["name"])) : createCommentVNode("", true)
130
+ ]),
131
+ createBaseVNode("td", _hoisted_3$1, [
132
+ createVNode(unref(N8nButton), {
133
+ "data-test-id": "variable-row-cancel-button",
134
+ type: "tertiary",
135
+ class: "mr-xs",
136
+ onClick: handleCancel
137
+ }, {
138
+ default: withCtx(() => [
139
+ createTextVNode(toDisplayString(unref(i18n).baseText("variables.row.button.cancel")), 1)
140
+ ]),
141
+ _: 1
142
+ }),
143
+ createVNode(unref(N8nButton), {
144
+ "data-test-id": "variable-row-save-button",
145
+ type: "primary",
146
+ onClick: handleSubmit
147
+ }, {
148
+ default: withCtx(() => [
149
+ createTextVNode(toDisplayString(unref(i18n).baseText("variables.row.button.save")), 1)
150
+ ]),
151
+ _: 1
152
+ })
153
+ ])
154
+ ]);
155
+ };
156
+ }
157
+ });
158
+ const VariablesForm = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-5059e945"]]);
159
+ const _hoisted_1 = { key: 0 };
160
+ const _hoisted_2 = { key: 1 };
161
+ const _hoisted_3 = { class: "mb-s" };
162
+ const _hoisted_4 = {
163
+ key: 1,
164
+ "data-test-id": "variables-row"
165
+ };
166
+ const _hoisted_5 = {
167
+ key: 0,
168
+ align: "right"
169
+ };
170
+ const _hoisted_6 = { class: "action-buttons" };
171
+ const TEMPORARY_VARIABLE_UID_BASE = "@tmpvar";
172
+ const _sfc_main = /* @__PURE__ */ defineComponent({
173
+ __name: "VariablesView",
174
+ setup(__props) {
175
+ const settingsStore = useSettingsStore();
176
+ const environmentsStore = useEnvironmentsStore();
177
+ const usersStore = useUsersStore();
178
+ const uiStore = useUIStore();
179
+ const telemetry = useTelemetry();
180
+ const i18n = useI18n();
181
+ const message = useMessage();
182
+ const sourceControlStore = useSourceControlStore();
183
+ const route = useRoute();
184
+ const router = useRouter();
185
+ const layoutRef = useTemplateRef("layoutRef");
186
+ const { showError } = useToast();
187
+ const permissions = computed(
188
+ () => getResourcePermissions(usersStore.currentUser?.globalScopes).variable
189
+ );
190
+ const { isLoading, execute } = useAsyncState(environmentsStore.fetchAllVariables, [], {
191
+ immediate: true
192
+ });
193
+ const isFeatureEnabled = computed(
194
+ () => settingsStore.isEnterpriseFeatureEnabled[EnterpriseEditionFeature.Variables]
195
+ );
196
+ const variableForms = ref(/* @__PURE__ */ new Map());
197
+ const editableVariables = ref([]);
198
+ const addToEditableVariables = (variableId) => editableVariables.value.push(variableId);
199
+ const removeEditableVariable = (variableId) => {
200
+ editableVariables.value = editableVariables.value.filter((id) => id !== variableId);
201
+ variableForms.value.delete(variableId);
202
+ };
203
+ const addEmptyVariableForm = () => {
204
+ const variable = { id: uid(TEMPORARY_VARIABLE_UID_BASE), key: "", value: "" };
205
+ variableForms.value.set(variable.id, variable);
206
+ if (layoutRef.value?.currentPage !== 1) {
207
+ layoutRef.value?.setCurrentPage(1);
208
+ }
209
+ addToEditableVariables(variable.id);
210
+ telemetry.track("User clicked add variable button");
211
+ };
212
+ const variables = computed(() => [...variableForms.value.values(), ...environmentsStore.variables]);
213
+ const canCreateVariables = computed(() => isFeatureEnabled.value && permissions.value.create);
214
+ const columns = computed(() => {
215
+ const cols = [
216
+ {
217
+ id: 0,
218
+ path: "name",
219
+ label: i18n.baseText("variables.table.key"),
220
+ classes: ["variables-key-column"]
221
+ },
222
+ {
223
+ id: 1,
224
+ path: "value",
225
+ label: i18n.baseText("variables.table.value"),
226
+ classes: ["variables-value-column"]
227
+ },
228
+ {
229
+ id: 2,
230
+ path: "usage",
231
+ label: i18n.baseText("variables.table.usage"),
232
+ classes: ["variables-usage-column"]
233
+ }
234
+ ];
235
+ if (!isFeatureEnabled.value) return cols;
236
+ return cols.concat({ id: 3, path: "actions", label: "", classes: ["variables-actions-column"] });
237
+ });
238
+ const handleSubmit = async (variable) => {
239
+ try {
240
+ const { id, ...rest } = variable;
241
+ if (id.startsWith(TEMPORARY_VARIABLE_UID_BASE)) {
242
+ await environmentsStore.createVariable(rest);
243
+ } else {
244
+ await environmentsStore.updateVariable(variable);
245
+ }
246
+ removeEditableVariable(id);
247
+ } catch (error) {
248
+ showError(error, i18n.baseText("variables.errors.save"));
249
+ }
250
+ };
251
+ const handleDeleteVariable = async (variable) => {
252
+ try {
253
+ const confirmed = await message.confirm(
254
+ i18n.baseText("variables.modals.deleteConfirm.message", {
255
+ interpolate: { name: variable.key }
256
+ }),
257
+ i18n.baseText("variables.modals.deleteConfirm.title"),
258
+ {
259
+ confirmButtonText: i18n.baseText("variables.modals.deleteConfirm.confirmButton"),
260
+ cancelButtonText: i18n.baseText("variables.modals.deleteConfirm.cancelButton")
261
+ }
262
+ );
263
+ if (confirmed !== MODAL_CONFIRM) {
264
+ return;
265
+ }
266
+ await environmentsStore.deleteVariable(variable);
267
+ removeEditableVariable(variable.id);
268
+ } catch (error) {
269
+ showError(error, i18n.baseText("variables.errors.delete"));
270
+ }
271
+ };
272
+ const updateFilter = (state) => {
273
+ void router.replace({ query: pickBy(state) });
274
+ };
275
+ const filters = computed(
276
+ () => ({ ...route.query, incomplete: route.query.incomplete?.toString() === "true" })
277
+ );
278
+ const handleFilter = (resource, newFilters, matches) => {
279
+ const iResource = resource;
280
+ const filtersToApply = newFilters;
281
+ if (filtersToApply.incomplete) {
282
+ matches = matches && !iResource.value;
283
+ }
284
+ return matches;
285
+ };
286
+ const nameSortFn = (a, b, direction) => {
287
+ if (`${a.id}`.startsWith(TEMPORARY_VARIABLE_UID_BASE)) {
288
+ return -1;
289
+ } else if (`${b.id}`.startsWith(TEMPORARY_VARIABLE_UID_BASE)) {
290
+ return 1;
291
+ }
292
+ return direction === "asc" ? displayName(a).trim().localeCompare(displayName(b).trim()) : displayName(b).trim().localeCompare(displayName(a).trim());
293
+ };
294
+ const sortFns = {
295
+ nameAsc: (a, b) => nameSortFn(a, b, "asc"),
296
+ nameDesc: (a, b) => nameSortFn(a, b, "desc")
297
+ };
298
+ const unavailableNoticeProps = computed(() => ({
299
+ emoji: "👋",
300
+ heading: i18n.baseText(uiStore.contextBasedTranslationKeys.variables.unavailable.title),
301
+ description: i18n.baseText(uiStore.contextBasedTranslationKeys.variables.unavailable.description),
302
+ buttonText: i18n.baseText(uiStore.contextBasedTranslationKeys.variables.unavailable.button),
303
+ buttonType: "secondary",
304
+ "onClick:button": goToUpgrade,
305
+ "data-test-id": "unavailable-resources-list"
306
+ }));
307
+ function goToUpgrade() {
308
+ void usePageRedirectionHelper().goToUpgrade("variables", "upgrade-variables");
309
+ }
310
+ function displayName(resource) {
311
+ return resource.key;
312
+ }
313
+ sourceControlStore.$onAction(({ name, after }) => {
314
+ if (name === "pullWorkfolder" && after) {
315
+ after(() => {
316
+ void execute();
317
+ });
318
+ }
319
+ });
320
+ onMounted(() => {
321
+ useDocumentTitle().set(i18n.baseText("variables.heading"));
322
+ });
323
+ return (_ctx, _cache) => {
324
+ const _component_n8n_heading = resolveComponent("n8n-heading");
325
+ return openBlock(), createBlock(ResourcesListLayout, {
326
+ ref_key: "layoutRef",
327
+ ref: layoutRef,
328
+ "resource-key": "variables",
329
+ disabled: !isFeatureEnabled.value,
330
+ resources: variables.value,
331
+ filters: filters.value,
332
+ "additional-filters-handler": handleFilter,
333
+ shareable: false,
334
+ "display-name": displayName,
335
+ "sort-fns": sortFns,
336
+ "sort-options": ["nameAsc", "nameDesc"],
337
+ type: "datatable",
338
+ "type-props": { columns: columns.value },
339
+ loading: unref(isLoading),
340
+ "onUpdate:filters": updateFilter,
341
+ "onClick:add": addEmptyVariableForm
342
+ }, createSlots({
343
+ header: withCtx(() => [
344
+ createVNode(_component_n8n_heading, {
345
+ size: "2xlarge",
346
+ class: "mb-m"
347
+ }, {
348
+ default: withCtx(() => [
349
+ createTextVNode(toDisplayString(unref(i18n).baseText("variables.heading")), 1)
350
+ ]),
351
+ _: 1
352
+ })
353
+ ]),
354
+ "add-button": withCtx(() => [
355
+ createVNode(unref(N8nTooltip), {
356
+ placement: "top",
357
+ disabled: canCreateVariables.value
358
+ }, {
359
+ content: withCtx(() => [
360
+ !isFeatureEnabled.value ? (openBlock(), createElementBlock("span", _hoisted_1, toDisplayString(unref(i18n).baseText(`variables.add.unavailable${variables.value.length === 0 ? ".empty" : ""}`)), 1)) : (openBlock(), createElementBlock("span", _hoisted_2, toDisplayString(unref(i18n).baseText("variables.add.onlyOwnerCanCreate")), 1))
361
+ ]),
362
+ default: withCtx(() => [
363
+ createBaseVNode("div", null, [
364
+ createVNode(unref(N8nButton), {
365
+ size: "large",
366
+ block: "",
367
+ disabled: !canCreateVariables.value,
368
+ "data-test-id": "resources-list-add",
369
+ onClick: addEmptyVariableForm
370
+ }, {
371
+ default: withCtx(() => [
372
+ createTextVNode(toDisplayString(unref(i18n).baseText(`variables.add`)), 1)
373
+ ]),
374
+ _: 1
375
+ }, 8, ["disabled"])
376
+ ])
377
+ ]),
378
+ _: 1
379
+ }, 8, ["disabled"])
380
+ ]),
381
+ filters: withCtx(({ setKeyValue }) => [
382
+ createBaseVNode("div", _hoisted_3, [
383
+ createVNode(unref(N8nInputLabel), {
384
+ label: unref(i18n).baseText("credentials.filters.status"),
385
+ bold: false,
386
+ size: "small",
387
+ color: "text-base",
388
+ class: "mb-3xs"
389
+ }, null, 8, ["label"]),
390
+ createVNode(unref(N8nCheckbox), {
391
+ label: "Value missing",
392
+ "data-test-id": "variable-filter-incomplete",
393
+ "model-value": filters.value.incomplete,
394
+ "onUpdate:modelValue": ($event) => setKeyValue("incomplete", $event)
395
+ }, null, 8, ["model-value", "onUpdate:modelValue"])
396
+ ])
397
+ ]),
398
+ default: withCtx(({ data }) => [
399
+ editableVariables.value.includes(data.id) ? (openBlock(), createBlock(VariablesForm, {
400
+ key: data.id,
401
+ "data-test-id": "variables-row",
402
+ variable: data,
403
+ onSubmit: handleSubmit,
404
+ onCancel: ($event) => removeEditableVariable(data.id)
405
+ }, null, 8, ["variable", "onCancel"])) : (openBlock(), createElementBlock("tr", _hoisted_4, [
406
+ createBaseVNode("td", null, toDisplayString(data.key), 1),
407
+ createBaseVNode("td", null, [
408
+ data.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
409
+ createTextVNode(toDisplayString(data.value), 1)
410
+ ], 64)) : (openBlock(), createBlock(unref(N8nBadge), {
411
+ key: 1,
412
+ theme: "warning"
413
+ }, {
414
+ default: withCtx(() => _cache[0] || (_cache[0] = [
415
+ createTextVNode(" Value missing ")
416
+ ])),
417
+ _: 1
418
+ }))
419
+ ]),
420
+ createBaseVNode("td", null, [
421
+ data.key ? (openBlock(), createBlock(VariablesUsageBadge, {
422
+ key: 0,
423
+ name: data.key
424
+ }, null, 8, ["name"])) : createCommentVNode("", true)
425
+ ]),
426
+ isFeatureEnabled.value ? (openBlock(), createElementBlock("td", _hoisted_5, [
427
+ createBaseVNode("div", _hoisted_6, [
428
+ createVNode(unref(N8nTooltip), {
429
+ disabled: permissions.value.update,
430
+ placement: "top"
431
+ }, {
432
+ content: withCtx(() => [
433
+ createTextVNode(toDisplayString(unref(i18n).baseText("variables.row.button.edit.onlyRoleCanEdit")), 1)
434
+ ]),
435
+ default: withCtx(() => [
436
+ createVNode(unref(N8nButton), {
437
+ "data-test-id": "variable-row-edit-button",
438
+ type: "tertiary",
439
+ class: "mr-xs",
440
+ disabled: !permissions.value.update,
441
+ onClick: ($event) => addToEditableVariables(data.id)
442
+ }, {
443
+ default: withCtx(() => [
444
+ createTextVNode(toDisplayString(unref(i18n).baseText("variables.row.button.edit")), 1)
445
+ ]),
446
+ _: 2
447
+ }, 1032, ["disabled", "onClick"])
448
+ ]),
449
+ _: 2
450
+ }, 1032, ["disabled"]),
451
+ createVNode(unref(N8nTooltip), {
452
+ disabled: permissions.value.delete,
453
+ placement: "top"
454
+ }, {
455
+ content: withCtx(() => [
456
+ createTextVNode(toDisplayString(unref(i18n).baseText("variables.row.button.delete.onlyRoleCanDelete")), 1)
457
+ ]),
458
+ default: withCtx(() => [
459
+ createVNode(unref(N8nButton), {
460
+ "data-test-id": "variable-row-delete-button",
461
+ type: "tertiary",
462
+ disabled: !permissions.value.delete,
463
+ onClick: ($event) => handleDeleteVariable(data)
464
+ }, {
465
+ default: withCtx(() => [
466
+ createTextVNode(toDisplayString(unref(i18n).baseText("variables.row.button.delete")), 1)
467
+ ]),
468
+ _: 2
469
+ }, 1032, ["disabled", "onClick"])
470
+ ]),
471
+ _: 2
472
+ }, 1032, ["disabled"])
473
+ ])
474
+ ])) : createCommentVNode("", true)
475
+ ]))
476
+ ]),
477
+ _: 2
478
+ }, [
479
+ !isFeatureEnabled.value ? {
480
+ name: "preamble",
481
+ fn: withCtx(() => [
482
+ createVNode(unref(N8nActionBox), mergeProps({ class: "mb-m" }, unavailableNoticeProps.value), null, 16)
483
+ ]),
484
+ key: "0"
485
+ } : void 0,
486
+ !isFeatureEnabled.value || isFeatureEnabled.value && !canCreateVariables.value ? {
487
+ name: "empty",
488
+ fn: withCtx(() => [
489
+ !isFeatureEnabled.value ? (openBlock(), createBlock(unref(N8nActionBox), normalizeProps(mergeProps({ key: 0 }, unavailableNoticeProps.value)), null, 16)) : !canCreateVariables.value ? (openBlock(), createBlock(unref(N8nActionBox), {
490
+ key: 1,
491
+ "data-test-id": "cannot-create-variables",
492
+ emoji: "👋",
493
+ heading: unref(i18n).baseText("variables.empty.notAllowedToCreate.heading", {
494
+ interpolate: { name: unref(usersStore).currentUser?.firstName ?? "" }
495
+ }),
496
+ description: unref(i18n).baseText("variables.empty.notAllowedToCreate.description"),
497
+ onClick: goToUpgrade
498
+ }, null, 8, ["heading", "description"])) : createCommentVNode("", true)
499
+ ]),
500
+ key: "1"
501
+ } : void 0
502
+ ]), 1032, ["disabled", "resources", "filters", "type-props", "loading"]);
503
+ };
504
+ }
505
+ });
506
+ const VariablesView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-b8af30c2"]]);
507
+ export {
508
+ VariablesView as default
509
+ };
@@ -120,24 +120,7 @@
120
120
  -------------------------- */
121
121
  /* BEM
122
122
  -------------------------- */
123
- ._variablesRow_1wkcr_123:hover ._hoverButtons_1wkcr_123 {
124
- opacity: 1;
125
- }
126
- ._variablesRow_1wkcr_123 td > div {
127
- display: flex;
128
- align-items: center;
129
- min-height: 40px;
130
- }
131
- ._buttons_1wkcr_132 {
132
- display: flex;
133
- flex-wrap: nowrap;
134
- justify-content: flex-end;
135
- }
136
- ._hoverButtons_1wkcr_123 {
137
- opacity: 0;
138
- transition: opacity 0.2s ease;
139
- }
140
- ._usageSyntax_1wkcr_143 {
123
+ .usageSyntax[data-v-513b2829] {
141
124
  cursor: pointer;
142
125
  background: var(--color-variables-usage-syntax-bg);
143
126
  color: var(--color-variables-usage-font);
@@ -265,11 +248,17 @@
265
248
  -------------------------- */
266
249
  /* BEM
267
250
  -------------------------- */
268
- ._type-input_d99g5_123 {
269
- --max-width: 265px;
251
+ .key-cell[data-v-5059e945],
252
+ .value-cell[data-v-5059e945] {
253
+ vertical-align: top;
270
254
  }
271
- ._sidebarContainer_d99g5_127 ul {
272
- padding: 0 !important;
255
+ .value-cell[data-v-5059e945] {
256
+ width: 100%;
257
+ max-width: 50%;
258
+ }
259
+ .key-input[data-v-5059e945] textarea {
260
+ min-height: 40px !important;
261
+ resize: none;
273
262
  }/* BEM support Func
274
263
  -------------------------- */
275
264
  /* Transition
@@ -392,43 +381,21 @@
392
381
  -------------------------- */
393
382
  /* BEM
394
383
  -------------------------- */
395
- .variables-view[data-v-626399fb] .datatable table {
396
- table-layout: fixed;
397
- }
398
- .variables-view[data-v-626399fb] .datatable th,
399
- .variables-view[data-v-626399fb] .datatable td {
400
- width: 25%;
401
- }
402
- @media screen and (max-width: 992px) {
403
- .variables-view[data-v-626399fb] .datatable th,
404
- .variables-view[data-v-626399fb] .datatable td {
405
- width: 33.33%;
406
- }
407
- }
408
- .variables-view[data-v-626399fb] .datatable th.variables-value-column > div, .variables-view[data-v-626399fb] .datatable th.variables-key-column > div, .variables-view[data-v-626399fb] .datatable th.variables-usage-column > div,
409
- .variables-view[data-v-626399fb] .datatable td.variables-value-column > div,
410
- .variables-view[data-v-626399fb] .datatable td.variables-key-column > div,
411
- .variables-view[data-v-626399fb] .datatable td.variables-usage-column > div {
412
- width: 100%;
384
+ .action-buttons[data-v-b8af30c2] {
385
+ opacity: 0;
386
+ transition: opacity 0.2s ease;
413
387
  }
414
- .variables-view[data-v-626399fb] .datatable th.variables-value-column > div > span, .variables-view[data-v-626399fb] .datatable th.variables-key-column > div > span, .variables-view[data-v-626399fb] .datatable th.variables-usage-column > div > span,
415
- .variables-view[data-v-626399fb] .datatable td.variables-value-column > div > span,
416
- .variables-view[data-v-626399fb] .datatable td.variables-key-column > div > span,
417
- .variables-view[data-v-626399fb] .datatable td.variables-usage-column > div > span {
418
- max-width: 100%;
419
- overflow: hidden;
420
- text-overflow: ellipsis;
388
+ [data-v-b8af30c2] .datatable {
421
389
  white-space: nowrap;
422
- height: 18px;
423
390
  }
424
- .variables-view[data-v-626399fb] .datatable th.variables-value-column > div > div, .variables-view[data-v-626399fb] .datatable th.variables-key-column > div > div, .variables-view[data-v-626399fb] .datatable th.variables-usage-column > div > div,
425
- .variables-view[data-v-626399fb] .datatable td.variables-value-column > div > div,
426
- .variables-view[data-v-626399fb] .datatable td.variables-key-column > div > div,
427
- .variables-view[data-v-626399fb] .datatable td.variables-usage-column > div > div {
428
- width: 100%;
391
+ [data-v-b8af30c2] .datatable table tr:hover .action-buttons {
392
+ opacity: 1;
429
393
  }
430
394
  @media screen and (max-width: 992px) {
431
- .variables-view[data-v-626399fb] .datatable .variables-usage-column {
395
+ [data-v-b8af30c2] .datatable table tr th:nth-child(3),[data-v-b8af30c2] .datatable table tr td:nth-child(3) {
432
396
  display: none;
433
397
  }
398
+ }
399
+ [data-v-b8af30c2] .datatable .variables-actions-column {
400
+ width: 170px;
434
401
  }
@@ -1,8 +1,8 @@
1
- import { _ as _sfc_main$7 } from "./PushConnectionTracker.vue_vue_type_script_setup_true_lang-C0Zr49w5.js";
2
- import { d as defineComponent, r as ref, m as resolveComponent, c as openBlock, h as createElementBlock, j as createBaseVNode, i as createVNode, w as withCtx, s as renderSlot, n as normalizeClass, f as createCommentVNode, _ as _export_sfc, e as createBlock, k as createTextVNode, t as toDisplayString, l as unref, F as Fragment, A as renderList, g as useI18n, b7 as useClipboard, a as useToast, hI as Chart, q as computed, aM as sortByProperty, o as onMounted, x as onBeforeUnmount, b as useRouter, a3 as useDocumentTitle, Z as useRootStore, ax as onBeforeMount, ak as useTelemetry, p as useSettingsStore, a5 as usePageRedirectionHelper } from "./index-DVhaXv7m.js";
3
- import { a as useOrchestrationStore, W as WORKER_HISTORY_LENGTH, u as usePushConnection } from "./usePushConnection-C5MO_Lyn.js";
4
- import { u as usePushConnectionStore } from "./pushConnection.store-nnc6AEL8.js";
5
- import "./easyAiWorkflowUtils-oy6hZxJE.js";
1
+ import { _ as _sfc_main$7 } from "./PushConnectionTracker.vue_vue_type_script_setup_true_lang-CZIKiOsY.js";
2
+ import { d as defineComponent, r as ref, m as resolveComponent, c as openBlock, h as createElementBlock, j as createBaseVNode, i as createVNode, w as withCtx, s as renderSlot, n as normalizeClass, f as createCommentVNode, _ as _export_sfc, e as createBlock, k as createTextVNode, t as toDisplayString, l as unref, F as Fragment, A as renderList, g as useI18n, b5 as useClipboard, a as useToast, hQ as Chart, q as computed, aK as sortByProperty, o as onMounted, x as onBeforeUnmount, b as useRouter, a3 as useDocumentTitle, Z as useRootStore, aw as onBeforeMount, aj as useTelemetry, p as useSettingsStore, a5 as usePageRedirectionHelper } from "./index-DvkbRfZN.js";
3
+ import { a as useOrchestrationStore, W as WORKER_HISTORY_LENGTH, u as usePushConnection } from "./usePushConnection-BcVRW8VB.js";
4
+ import { u as usePushConnectionStore } from "./pushConnection.store-5KniMGTZ.js";
5
+ import "./easyAiWorkflowUtils-D3El0FyE.js";
6
6
  function averageWorkerLoadFromLoads(loads) {
7
7
  return loads.reduce((prev, curr) => prev + curr, 0) / loads.length;
8
8
  }
@@ -1,5 +1,5 @@
1
- import { d as defineComponent, c as openBlock, h as createElementBlock, k as createTextVNode, t as toDisplayString, l as unref, j as createBaseVNode, g as useI18n, a as useToast, T as useWorkflowsStore, bS as useCredentialsStore, q as computed, H as watch, e as createBlock, w as withCtx, n as normalizeClass, i as createVNode, ay as withDirectives, f as createCommentVNode, aq as h, m as resolveComponent, cQ as resolveDirective, g3 as getActivatableTriggerNodes, g4 as EXECUTE_WORKFLOW_TRIGGER_NODE_TYPE, X as PLACEHOLDER_EMPTY_WORKFLOW_ID, bT as OPEN_AI_API_CREDENTIAL_TYPE, _ as _export_sfc } from "./index-DVhaXv7m.js";
2
- import { u as useWorkflowActivate } from "./useWorkflowActivate-CAW-Lrw6.js";
1
+ import { d as defineComponent, c as openBlock, h as createElementBlock, k as createTextVNode, t as toDisplayString, l as unref, j as createBaseVNode, g as useI18n, a as useToast, T as useWorkflowsStore, bQ as useCredentialsStore, q as computed, H as watch, e as createBlock, w as withCtx, n as normalizeClass, i as createVNode, ax as withDirectives, f as createCommentVNode, ap as h, m as resolveComponent, cN as resolveDirective, g7 as getActivatableTriggerNodes, g8 as EXECUTE_WORKFLOW_TRIGGER_NODE_TYPE, X as PLACEHOLDER_EMPTY_WORKFLOW_ID, bR as OPEN_AI_API_CREDENTIAL_TYPE, _ as _export_sfc } from "./index-DvkbRfZN.js";
2
+ import { u as useWorkflowActivate } from "./useWorkflowActivate-y3uHMZeh.js";
3
3
  const _sfc_main$1 = /* @__PURE__ */ defineComponent({
4
4
  __name: "WorkflowActivationErrorMessage",
5
5
  props: {
@@ -1,4 +1,4 @@
1
- import { d as defineComponent, b as useRouter, a4 as useWorkflowHelpers, p as useSettingsStore, K as useUIStore, T as useWorkflowsStore, a2 as useNpsSurveyStore, r as ref, q as computed, H as watch, o as onMounted, c as openBlock, e as createBlock, w as withCtx, j as createBaseVNode, k as createTextVNode, t as toDisplayString, l as unref, i as createVNode, I as withModifiers, n as normalizeClass, g as useI18n, ag as WORKFLOW_SETTINGS_MODAL_KEY, m as resolveComponent, c1 as deepCopy, X as PLACEHOLDER_EMPTY_WORKFLOW_ID, _ as _export_sfc } from "./index-DVhaXv7m.js";
1
+ import { d as defineComponent, b as useRouter, a4 as useWorkflowHelpers, p as useSettingsStore, K as useUIStore, T as useWorkflowsStore, a2 as useNpsSurveyStore, r as ref, q as computed, H as watch, o as onMounted, c as openBlock, e as createBlock, w as withCtx, j as createBaseVNode, k as createTextVNode, t as toDisplayString, l as unref, i as createVNode, I as withModifiers, n as normalizeClass, g as useI18n, af as WORKFLOW_SETTINGS_MODAL_KEY, m as resolveComponent, b$ as deepCopy, X as PLACEHOLDER_EMPTY_WORKFLOW_ID, _ as _export_sfc } from "./index-DvkbRfZN.js";
2
2
  const _hoisted_1 = { class: "mt-2xs" };
3
3
  const _sfc_main = /* @__PURE__ */ defineComponent({
4
4
  __name: "WorkflowExecutionsInfoAccordion",
@@ -1,5 +1,5 @@
1
- import { d as defineComponent, b as useRouter, U as useRoute, K as useUIStore, T as useWorkflowsStore, q as computed, c as openBlock, h as createElementBlock, n as normalizeClass, i as createVNode, w as withCtx, k as createTextVNode, t as toDisplayString, l as unref, f as createCommentVNode, g as useI18n, X as PLACEHOLDER_EMPTY_WORKFLOW_ID, V as VIEWS, m as resolveComponent, _ as _export_sfc } from "./index-DVhaXv7m.js";
2
- import { W as WorkflowExecutionsInfoAccordion } from "./WorkflowExecutionsInfoAccordion-BYRGFbed.js";
1
+ import { d as defineComponent, b as useRouter, U as useRoute, K as useUIStore, T as useWorkflowsStore, q as computed, c as openBlock, h as createElementBlock, n as normalizeClass, i as createVNode, w as withCtx, k as createTextVNode, t as toDisplayString, l as unref, f as createCommentVNode, g as useI18n, X as PLACEHOLDER_EMPTY_WORKFLOW_ID, V as VIEWS, m as resolveComponent, _ as _export_sfc } from "./index-DvkbRfZN.js";
2
+ import { W as WorkflowExecutionsInfoAccordion } from "./WorkflowExecutionsInfoAccordion-BmMiVSHQ.js";
3
3
  const _hoisted_1 = {
4
4
  key: 0,
5
5
  "data-test-id": "workflow-execution-no-trigger-content"
@@ -1,8 +1,8 @@
1
- import { d as defineComponent, m as resolveComponent, c as openBlock, h as createElementBlock, i as createVNode, n as normalizeClass, _ as _export_sfc, au as useExecutionsStore, a as useToast, r as ref, q as computed, cQ as resolveDirective, j as createBaseVNode, t as toDisplayString, l as unref, e as createBlock, F as Fragment, A as renderList, w as withCtx, k as createTextVNode, ay as withDirectives, g as useI18n, C as createEventBus, U as useRoute, T as useWorkflowsStore, p as useSettingsStore, f as createCommentVNode, V as VIEWS, f4 as ElDropdown, ae as MODAL_CONFIRM, al as useMessage, am as getResourcePermissions, a8 as EnterpriseEditionFeature } from "./index-DVhaXv7m.js";
2
- import { u as useExecutionDebugging } from "./useExecutionDebugging-Czm5h-sB.js";
3
- import { _ as _sfc_main$3 } from "./AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-CGrVAIIO.js";
4
- import { W as WorkflowPreview } from "./WorkflowPreview-DMBM5zJ7.js";
5
- import { u as useExecutionHelpers } from "./useExecutionHelpers-qeNSBls3.js";
1
+ import { d as defineComponent, m as resolveComponent, c as openBlock, h as createElementBlock, i as createVNode, n as normalizeClass, _ as _export_sfc, at as useExecutionsStore, a as useToast, r as ref, q as computed, cN as resolveDirective, j as createBaseVNode, t as toDisplayString, l as unref, e as createBlock, F as Fragment, A as renderList, w as withCtx, k as createTextVNode, ax as withDirectives, g as useI18n, C as createEventBus, U as useRoute, T as useWorkflowsStore, p as useSettingsStore, f as createCommentVNode, V as VIEWS, f1 as ElDropdown, ae as MODAL_CONFIRM, ak as useMessage, al as getResourcePermissions, a8 as EnterpriseEditionFeature } from "./index-DvkbRfZN.js";
2
+ import { u as useExecutionDebugging } from "./useExecutionDebugging-CTzUvS-m.js";
3
+ import { _ as _sfc_main$3 } from "./AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-Bk0ZjgAz.js";
4
+ import { W as WorkflowPreview } from "./WorkflowPreview-CsR9t5iY.js";
5
+ import { u as useExecutionHelpers } from "./useExecutionHelpers-ts_ANr0X.js";
6
6
  const _sfc_main$2 = /* @__PURE__ */ defineComponent({
7
7
  __name: "VoteButtons",
8
8
  props: {