n8n-editor-ui 1.85.2 → 1.87.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 (120) hide show
  1. package/dist/assets/AnimatedSpinner-ChSRgyeI.css +39 -0
  2. package/dist/assets/AnimatedSpinner-urWn52iY.js +18 -0
  3. package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-B2Xk-4o2.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-DIbgkfAC.js} +1 -1
  4. package/dist/assets/{AuthView-Bhr2Ols-.js → AuthView-DIQI5asI.js} +2 -2
  5. package/dist/assets/{CanvasChatSwitch-BcSDHC-c.css → CanvasChatSwitch-0IWSu8RE.css} +488 -46
  6. package/dist/assets/{CanvasChatSwitch-E9vu2jW8.js → CanvasChatSwitch-BIpZuY-n.js} +697 -214
  7. package/dist/assets/{ChangePasswordView-BzAEcqVw.js → ChangePasswordView-D8Qv0tim.js} +3 -3
  8. package/dist/assets/CollectionParameter-DT1MnS63.js +4 -0
  9. package/dist/assets/{CredentialsView-CZiEXdjH.js → CredentialsView-tJ8-2RrO.js} +8 -8
  10. package/dist/assets/{ErrorView-C1QywuMY.js → ErrorView-CZEZD7LB.js} +1 -1
  11. package/dist/assets/{ExecutionsTime-BOPJEomw.css → ExecutionsTime-DZHUIJjP.css} +6 -6
  12. package/dist/assets/{ExecutionsTime.vue_vue_type_script_setup_true_lang-l5VZIkoy.js → ExecutionsTime.vue_vue_type_script_setup_true_lang-gcknFyjA.js} +23 -20
  13. package/dist/assets/{ExecutionsView-Bo0Nk8lV.js → ExecutionsView-BCfIz8EF.js} +49 -57
  14. package/dist/assets/{ExecutionsView-JCKikuIS.css → ExecutionsView-ByQf9yli.css} +13 -47
  15. package/dist/assets/{FileSaver.min-D3VgyjMF.js → FileSaver.min-Bs2qHlKb.js} +1 -1
  16. package/dist/assets/{FixedCollectionParameter-RpfOY9Ho.js → FixedCollectionParameter-E0LDqNW3.js} +1 -1
  17. package/dist/assets/{ForgotMyPasswordView-DPTddCxG.js → ForgotMyPasswordView-YOnrzvKJ.js} +3 -3
  18. package/dist/assets/InsightsChartAverageRuntime-DWrrriYN.js +61 -0
  19. package/dist/assets/InsightsChartFailed-DRi6JC3m.js +57 -0
  20. package/dist/assets/InsightsChartFailureRate-BdFNsMpg.js +57 -0
  21. package/dist/assets/InsightsChartTimeSaved-C12GZzSQ.js +71 -0
  22. package/dist/assets/InsightsChartTotal-Cn386HO4.js +59 -0
  23. package/dist/assets/InsightsDashboard-BawwZ0Oo.js +154 -0
  24. package/dist/assets/InsightsDashboard-CB4vHnBh.css +152 -0
  25. package/dist/assets/InsightsPaywall-OeXh6LeZ.css +133 -0
  26. package/dist/assets/InsightsPaywall-g3JcqAYL.js +58 -0
  27. package/dist/assets/{useOverview-DcRuPjLJ.css → InsightsSummary-W08OzElS.css} +57 -35
  28. package/dist/assets/InsightsSummary-vMmKUcie.js +185 -0
  29. package/dist/assets/InsightsTableWorkflows-DQQ1vvMz.js +129 -0
  30. package/dist/assets/InsightsTableWorkflows-Us3j4UTO.css +128 -0
  31. package/dist/assets/{Logo-CxllxUni.js → Logo-Vm92axlM.js} +1 -1
  32. package/dist/assets/{MainHeader-9gTxUJIR.js → MainHeader-BUhpvu2K.js} +9 -10
  33. package/dist/assets/{MainSidebar-CRJML8mh.js → MainSidebar-D5P5FSUQ.js} +11 -4
  34. package/dist/assets/{NodeCreation-zoYjBJl6.js → NodeCreation-BgW5u-Bc.js} +4 -4
  35. package/dist/assets/{NodeCreator-D-qBRyBy.js → NodeCreator-CFe2n6vJ.js} +10 -26
  36. package/dist/assets/{NodeDetailsView-C1z3N5z_.css → NodeDetailsView-BT-ro74o.css} +63 -70
  37. package/dist/assets/{NodeDetailsView-C1iBFaC1.js → NodeDetailsView-CmtK-rDD.js} +145 -482
  38. package/dist/assets/{NodeView-Bio-FnnF.js → NodeView-BqaNPfpx.js} +19 -21
  39. package/dist/assets/{ProjectCardBadge-BEflW6oP.js → ProjectCardBadge-BKgtzWr1.js} +69 -36
  40. package/dist/assets/{ProjectCardBadge-C78ap7Rc.css → ProjectCardBadge-t3v64i1e.css} +18 -13
  41. package/dist/assets/{ProjectHeader-DK3_g_D8.js → ProjectHeader-BWVSdavS.js} +33 -7
  42. package/dist/assets/{ProjectHeader-B-a6_GH6.css → ProjectHeader-BsBpG-Mj.css} +7 -7
  43. package/dist/assets/{ProjectSettings-CLMy_-YC.js → ProjectSettings-BL-2-uOg.js} +3 -3
  44. package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-CSazgsi8.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-BL-bMMgn.js} +1 -2
  45. package/dist/assets/{ResourcesListLayout-CBvvL0VM.js → ResourcesListLayout-CozpmfUY.js} +1 -1
  46. package/dist/assets/{RunDataAi-C-tu9GrI.js → RunDataAi-B_EadpzG.js} +188 -94
  47. package/dist/assets/{RunDataAi-CN9FrT9c.css → RunDataAi-CUUDqZRP.css} +128 -0
  48. package/dist/assets/{RunDataJson-ClpS_600.js → RunDataJson-CyNNCtyd.js} +11 -12
  49. package/dist/assets/{RunDataJsonActions-gWW8Qkt_.js → RunDataJsonActions-SQqaiBEP.js} +1 -2
  50. package/dist/assets/{RunDataSearch-Dgv5JYk-.js → RunDataSearch-BF9kshKq.js} +1 -1
  51. package/dist/assets/{RunDataTable-nsOk35pD.js → RunDataTable-DsW7wuc2.js} +10 -8
  52. package/dist/assets/{SamlOnboarding-C5TSdGcx.js → SamlOnboarding-BX7RiRJB.js} +3 -3
  53. package/dist/assets/{SettingsApiView-CzQG1ofR.js → SettingsApiView-CDIPYvaG.js} +1 -1
  54. package/dist/assets/{SettingsCommunityNodesView-D_F3n2NO.js → SettingsCommunityNodesView-BRSEkT73.js} +4 -5
  55. package/dist/assets/{SettingsExternalSecrets-BUgKlMoR.js → SettingsExternalSecrets-D7ASuAnS.js} +1 -1
  56. package/dist/assets/{SettingsLdapView-CAmuVErd.js → SettingsLdapView-DA5fZZ51.js} +1 -1
  57. package/dist/assets/{SettingsLogStreamingView-DLkHrsx5.js → SettingsLogStreamingView-C9qkYvCr.js} +1 -1
  58. package/dist/assets/{SettingsPersonalView-2elwsG0f.js → SettingsPersonalView-BnNOJcvO.js} +2 -2
  59. package/dist/assets/{SettingsSourceControl-BD426GUo.js → SettingsSourceControl--ozL4427.js} +1 -1
  60. package/dist/assets/{SettingsSso-B-7lLoTI.js → SettingsSso-Bfe_HRSr.js} +1 -1
  61. package/dist/assets/{SettingsUsageAndPlan-EUWVJYe2.js → SettingsUsageAndPlan-CzvMNudh.js} +1 -1
  62. package/dist/assets/{SettingsUsersView-C3GbTYvU.js → SettingsUsersView-DGu5ku48.js} +1 -1
  63. package/dist/assets/{SettingsView-DSMM_8SL.js → SettingsView-CvreVxXL.js} +1 -1
  64. package/dist/assets/{SetupView-CexY8Lic.js → SetupView-BJT6GtIA.js} +3 -3
  65. package/dist/assets/{SetupWorkflowCredentialsButton-BpLp754t.js → SetupWorkflowCredentialsButton-BEq2gs_-.js} +2 -4
  66. package/dist/assets/{SetupWorkflowFromTemplateView-CLvS9Kda.js → SetupWorkflowFromTemplateView-F9oCDWX8.js} +3 -12
  67. package/dist/assets/{SigninView-CYkcm3hG.js → SigninView-DyoDtCBc.js} +3 -3
  68. package/dist/assets/{SignoutView-C2HutrZm.js → SignoutView-DclBslYe.js} +1 -1
  69. package/dist/assets/{SignupView-B-o-ka0Z.js → SignupView-BhB0Hhj0.js} +3 -3
  70. package/dist/assets/{TemplateDetails-C20G_lj4.js → TemplateDetails-B3utdyMi.js} +1 -1
  71. package/dist/assets/{TemplateList-DQzcYS6n.js → TemplateList-Bgz1iiiH.js} +1 -1
  72. package/dist/assets/{TemplatesCollectionView-DEEMhmYZ.js → TemplatesCollectionView-CORzb8YZ.js} +7 -9
  73. package/dist/assets/{TemplatesSearchView-S6802uNr.js → TemplatesSearchView-DTuv4-5C.js} +3 -3
  74. package/dist/assets/{TemplatesView-CT7S5O4K.js → TemplatesView-CFV5SVF7.js} +1 -1
  75. package/dist/assets/{TemplatesWorkflowView-BMd9OmqA.js → TemplatesWorkflowView-CQVVdNty.js} +5 -7
  76. package/dist/assets/{TestDefinitionEditView-BXhOuJrU.css → TestDefinitionEditView-Cwkrz308.css} +12 -143
  77. package/dist/assets/{TestDefinitionEditView-5kDGEtaD.js → TestDefinitionEditView-DX6GIeq2.js} +179 -331
  78. package/dist/assets/{TestDefinitionListView-BM-hghAY.js → TestDefinitionListView-CLEkthYQ.js} +1 -1
  79. package/dist/assets/{TestDefinitionNewView-CNN-qAmL.js → TestDefinitionNewView-DWTTqvlN.js} +2 -2
  80. package/dist/assets/{TestDefinitionRootView-S8g84AaK.js → TestDefinitionRootView-D0yLW0V6.js} +1 -1
  81. package/dist/assets/{VariablesView-D90WCfYK.js → VariablesView-Dsr4pqth.js} +3 -3
  82. package/dist/assets/{WorkerView-BHVIRKm_.js → WorkerView-Bbu5wv-g.js} +6 -7
  83. package/dist/assets/{WorkflowActivator-BsceIfln.js → WorkflowActivator-C197X_D6.js} +2 -2
  84. package/dist/assets/{WorkflowExecutionsInfoAccordion-DxGIzmq4.js → WorkflowExecutionsInfoAccordion-CHPlRtMQ.js} +1 -1
  85. package/dist/assets/{WorkflowExecutionsLandingPage-czqJYUnQ.js → WorkflowExecutionsLandingPage-CnvMc3SA.js} +2 -2
  86. package/dist/assets/{WorkflowExecutionsPreview-BzCGXWj0.js → WorkflowExecutionsPreview-CJBM3Awe.js} +24 -256
  87. package/dist/assets/{WorkflowExecutionsPreview-CHu6M3Dh.css → WorkflowExecutionsPreview-D7jTJ8GL.css} +16 -48
  88. package/dist/assets/{WorkflowExecutionsView-syep-_N0.js → WorkflowExecutionsView-BwB6WS6M.js} +11 -17
  89. package/dist/assets/{WorkflowHistory-CmHn_hnX.js → WorkflowHistory-U5a4aYts.js} +4 -4
  90. package/dist/assets/{WorkflowOnboardingView-BmhaZBkH.js → WorkflowOnboardingView-DHUUTLOo.js} +1 -1
  91. package/dist/assets/{WorkflowPreview-BN13256Q.js → WorkflowPreview-D8pwehRe.js} +1 -1
  92. package/dist/assets/{WorkflowsView-r9qJOUEb.css → WorkflowsView-CJB9aI6A.css} +27 -41
  93. package/dist/assets/{WorkflowsView-6qbtftll.js → WorkflowsView-DIh7kqZk.js} +76 -141
  94. package/dist/assets/chartjs.utils-DTEY3u-V.js +193 -0
  95. package/dist/assets/dateFormatter-C7xnNKzY.js +21 -0
  96. package/dist/assets/{easyAiWorkflowUtils-C7LfXIgb.js → easyAiWorkflowUtils-V__OjFo9.js} +1 -1
  97. package/dist/assets/{global-link-actions-znEIb0N4.js → global-link-actions-vGpWr9Uz.js} +1 -1
  98. package/dist/assets/{import-curl-BsKs3fYs.js → import-curl-C6ERUxFe.js} +1 -1
  99. package/dist/assets/{index-Cjz62pAo.js → index-BrjPYODL.js} +3 -1
  100. package/dist/assets/{index-DZljH0cm.js → index-DD7Wuhk5.js} +11407 -5580
  101. package/dist/assets/{index-CgXKy7t-.css → index-DJ205bL0.css} +418 -92
  102. package/dist/assets/{pickBy-DlIFPp_M.js → pickBy-BILEJ4hg.js} +1 -1
  103. package/dist/assets/{templateActions-ClDjWPHA.js → templateActions-M3qRQiV6.js} +2 -7
  104. package/dist/assets/{useBeforeUnload-BFlrxvKb.js → useBeforeUnload-DTsj_abb.js} +1 -1
  105. package/dist/assets/{useCanvasMapping-CJcAsQmx.css → useCanvasMapping-BkGr1HdJ.css} +29 -28
  106. package/dist/assets/{useCanvasMapping-C0PMQVwg.js → useCanvasMapping-DJvMRP2s.js} +71 -56
  107. package/dist/assets/{useCanvasOperations-2Ca5hPmu.js → useCanvasOperations-DCaSrD1N.js} +26 -254
  108. package/dist/assets/{useClearExecutionButtonVisible-D8unhL-H.js → useClearExecutionButtonVisible-CVPKhr9F.js} +2 -2
  109. package/dist/assets/{useExecutionDebugging-MiAgkS54.js → useExecutionDebugging-yY2o_eNc.js} +1 -1
  110. package/dist/assets/{useExecutionHelpers-CgD9G_XU.js → useExecutionHelpers-BVY9xXbG.js} +2 -19
  111. package/dist/assets/{useImportCurlCommand-D6LUnncf.js → useImportCurlCommand-Chewi-_x.js} +2 -2
  112. package/dist/assets/{usePushConnection-DAhrfl2L.js → usePushConnection-9zsAnuvC.js} +13 -6
  113. package/dist/assets/{useTestDefinitionForm-TDiKTq9o.js → useTestDefinitionForm-CCVy0jKP.js} +1 -31
  114. package/dist/assets/{useWorkflowActivate-C_GRAYoC.js → useWorkflowActivate-DeEvbrsK.js} +1 -1
  115. package/dist/index.html +2 -2
  116. package/package.json +1 -1
  117. package/dist/assets/CollectionParameter-XKkHxrwX.js +0 -4
  118. package/dist/assets/pushConnection.store-DHLcz9cC.js +0 -238
  119. package/dist/assets/useOverview-BqIOGpWx.js +0 -161
  120. package/dist/assets/useRunWorkflow-sGIs6NeH.js +0 -521
@@ -1,238 +0,0 @@
1
- import { r as ref, dv as createHeartbeatMessage, S as defineStore, a0 as useRootStore, p as useSettingsStore, I as watch, q as computed, X as STORES } from "./index-DZljH0cm.js";
2
- const useHeartbeat = (options) => {
3
- const { interval, onHeartbeat } = options;
4
- const heartbeatTimer = ref(null);
5
- const startHeartbeat = () => {
6
- heartbeatTimer.value = setInterval(onHeartbeat, interval);
7
- };
8
- const stopHeartbeat = () => {
9
- if (heartbeatTimer.value) {
10
- clearInterval(heartbeatTimer.value);
11
- heartbeatTimer.value = null;
12
- }
13
- };
14
- return {
15
- startHeartbeat,
16
- stopHeartbeat
17
- };
18
- };
19
- const useReconnectTimer = ({ onAttempt, onAttemptScheduled }) => {
20
- const initialReconnectDelay = 1e3;
21
- const maxReconnectDelay = 15e3;
22
- const reconnectTimer = ref(null);
23
- const reconnectAttempts = ref(0);
24
- const scheduleReconnect = () => {
25
- const delay = Math.min(initialReconnectDelay * 2 ** reconnectAttempts.value, maxReconnectDelay);
26
- reconnectAttempts.value++;
27
- onAttemptScheduled(delay);
28
- reconnectTimer.value = setTimeout(() => {
29
- onAttempt();
30
- }, delay);
31
- };
32
- const stopReconnectTimer = () => {
33
- if (reconnectTimer.value) {
34
- clearTimeout(reconnectTimer.value);
35
- reconnectTimer.value = null;
36
- }
37
- };
38
- const resetConnectionAttempts = () => {
39
- reconnectAttempts.value = 0;
40
- };
41
- return {
42
- scheduleReconnect,
43
- stopReconnectTimer,
44
- resetConnectionAttempts
45
- };
46
- };
47
- const useWebSocketClient = (options) => {
48
- const isConnected = ref(false);
49
- const socket = ref(null);
50
- const { startHeartbeat, stopHeartbeat } = useHeartbeat({
51
- interval: 3e4,
52
- onHeartbeat: () => {
53
- socket.value?.send(JSON.stringify(createHeartbeatMessage()));
54
- }
55
- });
56
- const onConnected = () => {
57
- socket.value?.removeEventListener("open", onConnected);
58
- isConnected.value = true;
59
- startHeartbeat();
60
- reconnectTimer.resetConnectionAttempts();
61
- };
62
- const onConnectionLost = (event) => {
63
- console.warn(`[WebSocketClient] Connection lost, code=${event.code ?? "unknown"}`);
64
- disconnect();
65
- reconnectTimer.scheduleReconnect();
66
- };
67
- const onMessage = (event) => {
68
- options.onMessage(event.data);
69
- };
70
- const onError = (error) => {
71
- console.warn("[WebSocketClient] Connection error:", error);
72
- };
73
- const disconnect = () => {
74
- if (socket.value) {
75
- stopHeartbeat();
76
- reconnectTimer.stopReconnectTimer();
77
- socket.value.removeEventListener("message", onMessage);
78
- socket.value.removeEventListener("error", onError);
79
- socket.value.removeEventListener("close", onConnectionLost);
80
- socket.value.close(1e3);
81
- socket.value = null;
82
- }
83
- isConnected.value = false;
84
- };
85
- const connect = () => {
86
- disconnect();
87
- socket.value = new WebSocket(options.url);
88
- socket.value.addEventListener("open", onConnected);
89
- socket.value.addEventListener("message", onMessage);
90
- socket.value.addEventListener("error", onError);
91
- socket.value.addEventListener("close", onConnectionLost);
92
- };
93
- const reconnectTimer = useReconnectTimer({
94
- onAttempt: connect,
95
- onAttemptScheduled: (delay) => {
96
- console.log(`[WebSocketClient] Attempting to reconnect in ${delay}ms`);
97
- }
98
- });
99
- const sendMessage = (serializedMessage) => {
100
- if (!isConnected.value || !socket.value) {
101
- throw new Error("Not connected to the server");
102
- }
103
- socket.value.send(serializedMessage);
104
- };
105
- return {
106
- isConnected,
107
- connect,
108
- disconnect,
109
- sendMessage
110
- };
111
- };
112
- const useEventSourceClient = (options) => {
113
- const isConnected = ref(false);
114
- const eventSource = ref(null);
115
- const onConnected = () => {
116
- isConnected.value = true;
117
- reconnectTimer.resetConnectionAttempts();
118
- };
119
- const onConnectionLost = () => {
120
- console.warn("[EventSourceClient] Connection lost");
121
- isConnected.value = false;
122
- reconnectTimer.scheduleReconnect();
123
- };
124
- const onMessage = (event) => {
125
- options.onMessage(event.data);
126
- };
127
- const disconnect = () => {
128
- if (eventSource.value) {
129
- reconnectTimer.stopReconnectTimer();
130
- eventSource.value.close();
131
- eventSource.value = null;
132
- }
133
- isConnected.value = false;
134
- };
135
- const connect = () => {
136
- disconnect();
137
- eventSource.value = new EventSource(options.url, { withCredentials: true });
138
- eventSource.value.addEventListener("open", onConnected);
139
- eventSource.value.addEventListener("message", onMessage);
140
- eventSource.value.addEventListener("close", onConnectionLost);
141
- };
142
- const reconnectTimer = useReconnectTimer({
143
- onAttempt: connect,
144
- onAttemptScheduled: (delay) => {
145
- console.log(`[EventSourceClient] Attempting to reconnect in ${delay}ms`);
146
- }
147
- });
148
- const sendMessage = (_) => {
149
- };
150
- return {
151
- isConnected,
152
- connect,
153
- disconnect,
154
- sendMessage
155
- };
156
- };
157
- const usePushConnectionStore = defineStore(STORES.PUSH, () => {
158
- const rootStore = useRootStore();
159
- const settingsStore = useSettingsStore();
160
- const outgoingQueue = ref([]);
161
- const isConnectionRequested = ref(false);
162
- const onMessageReceivedHandlers = ref([]);
163
- const addEventListener = (handler) => {
164
- onMessageReceivedHandlers.value.push(handler);
165
- return () => {
166
- const index = onMessageReceivedHandlers.value.indexOf(handler);
167
- if (index !== -1) {
168
- onMessageReceivedHandlers.value.splice(index, 1);
169
- }
170
- };
171
- };
172
- const useWebSockets = settingsStore.pushBackend === "websocket";
173
- const getConnectionUrl = () => {
174
- const restUrl = rootStore.restUrl;
175
- const url2 = `/push?pushRef=${rootStore.pushRef}`;
176
- if (useWebSockets) {
177
- const { protocol, host } = window.location;
178
- const baseUrl = restUrl.startsWith("http") ? restUrl.replace(/^http/, "ws") : `${protocol === "https:" ? "wss" : "ws"}://${host + restUrl}`;
179
- return `${baseUrl}${url2}`;
180
- } else {
181
- return `${restUrl}${url2}`;
182
- }
183
- };
184
- async function onMessage(data) {
185
- let receivedData;
186
- try {
187
- receivedData = JSON.parse(data);
188
- } catch (error) {
189
- return;
190
- }
191
- onMessageReceivedHandlers.value.forEach((handler) => handler(receivedData));
192
- }
193
- const url = getConnectionUrl();
194
- const client = useWebSockets ? useWebSocketClient({ url, onMessage }) : useEventSourceClient({ url, onMessage });
195
- function serializeAndSend(message) {
196
- if (client.isConnected.value) {
197
- client.sendMessage(JSON.stringify(message));
198
- } else {
199
- outgoingQueue.value.push(message);
200
- }
201
- }
202
- const pushConnect = () => {
203
- isConnectionRequested.value = true;
204
- client.connect();
205
- };
206
- const pushDisconnect = () => {
207
- isConnectionRequested.value = false;
208
- client.disconnect();
209
- };
210
- watch(client.isConnected, (didConnect) => {
211
- if (!didConnect) {
212
- return;
213
- }
214
- if (outgoingQueue.value.length) {
215
- for (const message of outgoingQueue.value) {
216
- serializeAndSend(message);
217
- }
218
- outgoingQueue.value = [];
219
- }
220
- });
221
- const clearQueue = () => {
222
- outgoingQueue.value = [];
223
- };
224
- const isConnected = computed(() => client.isConnected.value);
225
- return {
226
- isConnected,
227
- isConnectionRequested,
228
- onMessageReceivedHandlers,
229
- addEventListener,
230
- pushConnect,
231
- pushDisconnect,
232
- send: serializeAndSend,
233
- clearQueue
234
- };
235
- });
236
- export {
237
- usePushConnectionStore as u
238
- };
@@ -1,161 +0,0 @@
1
- import { d as defineComponent, $ as useCssModule, q as computed, c as useI18n, h as resolveComponent, i as createElementBlock, f as createCommentVNode, g as openBlock, j as createVNode, e as createBlock, w as withCtx, l as createTextVNode, t as toDisplayString, m as unref, n as normalizeClass, F as Fragment, D as renderList, k as createBaseVNode, gy as INSIGHT_IMPACT_TYPES, gz as INSIGHTS_UNIT_IMPACT_MAPPING, _ as _export_sfc, U as useRoute, V as VIEWS, bD as reactive } from "./index-DZljH0cm.js";
2
- const smartDecimal = (value, decimals = 2) => {
3
- if (Number.isInteger(value)) {
4
- return value;
5
- }
6
- if (value.toString().split(".")[1].length <= decimals) {
7
- return value;
8
- }
9
- return Number(value.toFixed(decimals));
10
- };
11
- const _hoisted_1 = {
12
- key: 1,
13
- "data-test-id": "insights-summary-tabs"
14
- };
15
- const _hoisted_2 = ["data-test-id"];
16
- const _hoisted_3 = { href: "#" };
17
- const _hoisted_4 = { key: 1 };
18
- const _sfc_main = /* @__PURE__ */ defineComponent({
19
- __name: "InsightsSummary",
20
- props: {
21
- summary: {},
22
- loading: { type: Boolean }
23
- },
24
- setup(__props) {
25
- const i18n = useI18n();
26
- const $style = useCssModule();
27
- const summaryTitles = computed(() => ({
28
- total: i18n.baseText("insights.banner.title.total"),
29
- failed: i18n.baseText("insights.banner.title.failed"),
30
- failureRate: i18n.baseText("insights.banner.title.failureRate"),
31
- timeSaved: i18n.baseText("insights.banner.title.timeSaved"),
32
- averageRunTime: i18n.baseText("insights.banner.title.averageRunTime")
33
- }));
34
- const getSign = (n) => n > 0 ? "+" : void 0;
35
- const getImpactStyle = (id, value) => {
36
- const impact = INSIGHTS_UNIT_IMPACT_MAPPING[id];
37
- if (value === 0 || impact === INSIGHT_IMPACT_TYPES.NEUTRAL) {
38
- return $style.neutral;
39
- }
40
- if (impact === INSIGHT_IMPACT_TYPES.POSITIVE) {
41
- return value > 0 ? $style.positive : $style.negative;
42
- }
43
- if (impact === INSIGHT_IMPACT_TYPES.NEGATIVE) {
44
- return value < 0 ? $style.positive : $style.negative;
45
- }
46
- return $style.neutral;
47
- };
48
- return (_ctx, _cache) => {
49
- const _component_N8nHeading = resolveComponent("N8nHeading");
50
- const _component_N8nLoading = resolveComponent("N8nLoading");
51
- const _component_i18n_t = resolveComponent("i18n-t");
52
- const _component_N8nIcon = resolveComponent("N8nIcon");
53
- const _component_N8nTooltip = resolveComponent("N8nTooltip");
54
- return _ctx.summary.length ? (openBlock(), createElementBlock("div", {
55
- key: 0,
56
- class: normalizeClass(unref($style).insights)
57
- }, [
58
- createVNode(_component_N8nHeading, {
59
- bold: "",
60
- tag: "h3",
61
- size: "small",
62
- color: "text-light",
63
- class: "mb-xs"
64
- }, {
65
- default: withCtx(() => [
66
- createTextVNode(toDisplayString(unref(i18n).baseText("insights.banner.title", { interpolate: { count: 7 } })), 1)
67
- ]),
68
- _: 1
69
- }),
70
- _ctx.loading ? (openBlock(), createBlock(_component_N8nLoading, {
71
- key: 0,
72
- class: normalizeClass(unref($style).loading),
73
- cols: 5
74
- }, null, 8, ["class"])) : (openBlock(), createElementBlock("ul", _hoisted_1, [
75
- (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.summary, ({ id, value, deviation, unit }) => {
76
- return openBlock(), createElementBlock("li", {
77
- key: id,
78
- "data-test-id": `insights-summary-tab-${id}`
79
- }, [
80
- createBaseVNode("p", null, [
81
- createBaseVNode("strong", null, toDisplayString(summaryTitles.value[id]), 1),
82
- value === 0 && id === "timeSaved" ? (openBlock(), createElementBlock("span", {
83
- key: 0,
84
- class: normalizeClass(unref($style).empty)
85
- }, [
86
- _cache[0] || (_cache[0] = createBaseVNode("em", null, "--", -1)),
87
- createBaseVNode("small", null, [
88
- createVNode(_component_N8nTooltip, { placement: "bottom" }, {
89
- content: withCtx(() => [
90
- createVNode(_component_i18n_t, { keypath: "insights.banner.timeSaved.tooltip" }, {
91
- link: withCtx(() => [
92
- createBaseVNode("a", _hoisted_3, toDisplayString(unref(i18n).baseText("insights.banner.timeSaved.tooltip.link.text")), 1)
93
- ]),
94
- _: 1
95
- })
96
- ]),
97
- default: withCtx(() => [
98
- createVNode(_component_N8nIcon, {
99
- class: normalizeClass(unref($style).icon),
100
- icon: "info-circle"
101
- }, null, 8, ["class"])
102
- ]),
103
- _: 1
104
- })
105
- ])
106
- ], 2)) : (openBlock(), createElementBlock("span", _hoisted_4, [
107
- createBaseVNode("em", null, [
108
- createTextVNode(toDisplayString(unref(smartDecimal)(value)) + " ", 1),
109
- createBaseVNode("i", null, toDisplayString(unit), 1)
110
- ]),
111
- createBaseVNode("small", {
112
- class: normalizeClass(getImpactStyle(id, deviation))
113
- }, [
114
- createVNode(_component_N8nIcon, {
115
- class: normalizeClass([unref($style).icon, getImpactStyle(id, deviation)]),
116
- icon: deviation === 0 ? "caret-right" : deviation > 0 ? "caret-up" : "caret-down"
117
- }, null, 8, ["class", "icon"]),
118
- createTextVNode(" " + toDisplayString(getSign(deviation)) + toDisplayString(unref(smartDecimal)(deviation)), 1)
119
- ], 2)
120
- ]))
121
- ])
122
- ], 8, _hoisted_2);
123
- }), 128))
124
- ]))
125
- ], 2)) : createCommentVNode("", true);
126
- };
127
- }
128
- });
129
- const insights = "_insights_1r55j_123";
130
- const empty = "_empty_1r55j_165";
131
- const icon = "_icon_1r55j_173";
132
- const positive = "_positive_1r55j_206";
133
- const negative = "_negative_1r55j_210";
134
- const neutral = "_neutral_1r55j_214";
135
- const loading = "_loading_1r55j_229";
136
- const style0 = {
137
- insights,
138
- empty,
139
- icon,
140
- positive,
141
- negative,
142
- neutral,
143
- loading
144
- };
145
- const cssModules = {
146
- "$style": style0
147
- };
148
- const InsightsSummary = /* @__PURE__ */ _export_sfc(_sfc_main, [["__cssModules", cssModules]]);
149
- const useOverview = () => {
150
- const route = useRoute();
151
- const isOverviewSubPage = computed(
152
- () => route.name === VIEWS.WORKFLOWS || route.name === VIEWS.HOMEPAGE || route.name === VIEWS.CREDENTIALS || route.name === VIEWS.EXECUTIONS || route.name === VIEWS.FOLDERS
153
- );
154
- return reactive({
155
- isOverviewSubPage
156
- });
157
- };
158
- export {
159
- InsightsSummary as I,
160
- useOverview as u
161
- };