Flowfile 0.3.3.1__py3-none-any.whl → 0.3.4__py3-none-any.whl

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.

Potentially problematic release.


This version of Flowfile might be problematic. Click here for more details.

Files changed (77) hide show
  1. flowfile/__init__.py +2 -2
  2. flowfile/__main__.py +0 -2
  3. flowfile/api.py +94 -46
  4. flowfile/web/__init__.py +4 -1
  5. flowfile/web/static/assets/{AirbyteReader-2b1cf2d8.js → AirbyteReader-e08044e5.js} +8 -8
  6. flowfile/web/static/assets/{CrossJoin-cc3ab73c.js → CrossJoin-dfcf7351.js} +8 -8
  7. flowfile/web/static/assets/{DatabaseConnectionSettings-307c4652.js → DatabaseConnectionSettings-b2afb1d7.js} +2 -2
  8. flowfile/web/static/assets/{DatabaseManager-69faa6e1.js → DatabaseManager-824a49b2.js} +2 -2
  9. flowfile/web/static/assets/{DatabaseReader-e4134cd0.js → DatabaseReader-a48124d8.js} +9 -9
  10. flowfile/web/static/assets/{DatabaseWriter-d32d75b1.js → DatabaseWriter-b47cbae2.js} +9 -9
  11. flowfile/web/static/assets/{ExploreData-5eb48389.js → ExploreData-fdfc45a4.js} +5 -5
  12. flowfile/web/static/assets/{ExternalSource-29489051.js → ExternalSource-861b0e71.js} +6 -6
  13. flowfile/web/static/assets/{Filter-031332bb.js → Filter-f87bb897.js} +8 -9
  14. flowfile/web/static/assets/{Formula-3b900540.js → Formula-1e2ed720.js} +9 -10
  15. flowfile/web/static/assets/{FuzzyMatch-dee31153.js → FuzzyMatch-b6cc4fdd.js} +9 -9
  16. flowfile/web/static/assets/{GraphSolver-ca74eb47.js → GraphSolver-6a371f4c.js} +5 -5
  17. flowfile/web/static/assets/{GroupBy-081b6591.js → GroupBy-f7b7f472.js} +6 -6
  18. flowfile/web/static/assets/{Join-b467376f.js → Join-eec38203.js} +9 -9
  19. flowfile/web/static/assets/{ManualInput-ffffb80a.js → ManualInput-9aaa46fb.js} +5 -5
  20. flowfile/web/static/assets/{Output-9a87d4ba.js → Output-3b2ca045.js} +4 -4
  21. flowfile/web/static/assets/{Pivot-ee3e6093.js → Pivot-a4f5d88f.js} +6 -6
  22. flowfile/web/static/assets/PolarsCode-49ce444f.js +306 -0
  23. flowfile/web/static/assets/{Read-67fee3a0.js → Read-07acdc9a.js} +6 -6
  24. flowfile/web/static/assets/{RecordCount-a2acd02d.js → RecordCount-6a21da56.js} +5 -5
  25. flowfile/web/static/assets/{RecordId-0c8bcd77.js → RecordId-949bdc17.js} +6 -6
  26. flowfile/web/static/assets/{Sample-60594a3a.js → Sample-7afca6e1.js} +5 -5
  27. flowfile/web/static/assets/{SecretManager-bbcec2ac.js → SecretManager-b41c029d.js} +2 -2
  28. flowfile/web/static/assets/{Select-9540e6ca.js → Select-32b28406.js} +8 -8
  29. flowfile/web/static/assets/{SettingsSection-48f28104.js → SettingsSection-a0f15a05.js} +1 -1
  30. flowfile/web/static/assets/{Sort-6dbe3633.js → Sort-fc6ba0e2.js} +6 -6
  31. flowfile/web/static/assets/{TextToRows-27aab4a8.js → TextToRows-23127596.js} +8 -8
  32. flowfile/web/static/assets/{UnavailableFields-8143044b.js → UnavailableFields-c42880a3.js} +2 -2
  33. flowfile/web/static/assets/{Union-52460248.js → Union-39eecc6c.js} +5 -5
  34. flowfile/web/static/assets/{Unique-f6962644.js → Unique-a0e8fe61.js} +8 -8
  35. flowfile/web/static/assets/{Unpivot-1ff1e938.js → Unpivot-1e2d43f0.js} +5 -5
  36. flowfile/web/static/assets/{api-3b345d92.js → api-44ca9e9c.js} +1 -1
  37. flowfile/web/static/assets/{designer-2394122a.css → designer-186f2e71.css} +64 -9
  38. flowfile/web/static/assets/{designer-4736134f.js → designer-267d44f1.js} +2835 -105
  39. flowfile/web/static/assets/{documentation-b9545eba.js → documentation-6c0810a2.js} +1 -1
  40. flowfile/web/static/assets/{dropDown-d5a4014c.js → dropDown-52790b15.js} +1 -1
  41. flowfile/web/static/assets/{dropDownGeneric-1f4e32ec.js → dropDownGeneric-60f56a8a.js} +2 -2
  42. flowfile/web/static/assets/{fullEditor-f4791c23.js → fullEditor-e272b506.js} +2 -3
  43. flowfile/web/static/assets/{genericNodeSettings-1d456350.js → genericNodeSettings-4bdcf98e.js} +3 -3
  44. flowfile/web/static/assets/{index-f25c9283.js → index-e235a8bc.js} +12 -12
  45. flowfile/web/static/assets/{nodeTitle-cad6fd9d.js → nodeTitle-fc3fc4b7.js} +3 -3
  46. flowfile/web/static/assets/{secretApi-01f07e2c.js → secretApi-cdc2a3fd.js} +1 -1
  47. flowfile/web/static/assets/{selectDynamic-f46a4e3f.js → selectDynamic-96aa82cd.js} +3 -3
  48. flowfile/web/static/assets/{vue-codemirror.esm-eb98fc8b.js → vue-codemirror.esm-25e75a08.js} +610 -29
  49. flowfile/web/static/assets/{vue-content-loader.es-860c0380.js → vue-content-loader.es-6c4b1c24.js} +1 -1
  50. flowfile/web/static/index.html +1 -1
  51. {flowfile-0.3.3.1.dist-info → flowfile-0.3.4.dist-info}/METADATA +16 -3
  52. {flowfile-0.3.3.1.dist-info → flowfile-0.3.4.dist-info}/RECORD +74 -74
  53. flowfile_core/flowfile/code_generator/__init__.py +0 -0
  54. flowfile_core/flowfile/code_generator/code_generator.py +723 -0
  55. flowfile_core/flowfile/flow_data_engine/flow_data_engine.py +1 -1
  56. flowfile_core/flowfile/flow_data_engine/flow_file_column/main.py +1 -1
  57. flowfile_core/flowfile/{FlowfileFlow.py → flow_graph.py} +3 -3
  58. flowfile_core/flowfile/flow_graph_utils.py +1 -1
  59. flowfile_core/flowfile/handler.py +1 -1
  60. flowfile_core/flowfile/manage/open_flowfile.py +1 -1
  61. flowfile_core/flowfile/util/calculate_layout.py +1 -1
  62. flowfile_core/routes/routes.py +11 -1
  63. flowfile_core/schemas/input_schema.py +2 -1
  64. flowfile_frame/adapters.py +1 -1
  65. flowfile_frame/expr.py +19 -0
  66. flowfile_frame/flow_frame.py +1 -4
  67. flowfile_frame/flow_frame.pyi +1 -1
  68. flowfile_frame/flow_frame_methods.py +1 -1
  69. flowfile_frame/lazy.py +1 -1
  70. flowfile_frame/utils.py +1 -1
  71. flowfile/readme.md +0 -127
  72. flowfile/web/static/assets/PolarsCode-03921254.js +0 -2865
  73. flowfile/web/static/assets/PopOver-3bdf8951.js +0 -577
  74. /flowfile/web/static/assets/{PopOver-bccfde04.css → vue-codemirror-bccfde04.css} +0 -0
  75. {flowfile-0.3.3.1.dist-info → flowfile-0.3.4.dist-info}/LICENSE +0 -0
  76. {flowfile-0.3.3.1.dist-info → flowfile-0.3.4.dist-info}/WHEEL +0 -0
  77. {flowfile-0.3.3.1.dist-info → flowfile-0.3.4.dist-info}/entry_points.txt +0 -0
@@ -1,4 +1,583 @@
1
- import { d as defineComponent, X as shallowRef, B as inject, l as computed, n as onMounted, m as watch, U as onBeforeUnmount, Y as h$1, al as toRaw } from "./index-f25c9283.js";
1
+ import { r as ref, j as defineStore, a as axios, d as defineComponent, ae as useCssVars, n as onMounted, c as openBlock, e as createElementBlock, p as createBaseVNode, L as renderSlot, h as createBlock, t as toDisplayString, i as createCommentVNode, T as normalizeStyle, s as normalizeClass, a7 as Teleport, R as nextTick, _ as _export_sfc, X as shallowRef, B as inject, l as computed, m as watch, U as onBeforeUnmount, Y as h$1, af as toRaw } from "./index-e235a8bc.js";
2
+ const FLOW_ID_STORAGE_KEY = "last_flow_id";
3
+ ref(null);
4
+ const getDownstreamNodeIds = async (flow_id, node_id) => {
5
+ const response = await axios.get("/node/downstream_node_ids", {
6
+ params: { flow_id, node_id },
7
+ headers: { accept: "application/json" }
8
+ });
9
+ return response.data;
10
+ };
11
+ const loadDownstreamNodeIds = async (flowId, nodeId) => {
12
+ const downstreamNodeIds = await getDownstreamNodeIds(flowId, nodeId);
13
+ return downstreamNodeIds;
14
+ };
15
+ const useNodeStore = defineStore("node", {
16
+ state: () => {
17
+ const savedFlowId = sessionStorage.getItem(FLOW_ID_STORAGE_KEY);
18
+ const initialFlowId = savedFlowId ? parseInt(savedFlowId) : -1;
19
+ return {
20
+ inputCode: "",
21
+ flow_id: initialFlowId,
22
+ node_id: -1,
23
+ previous_node_id: -1,
24
+ nodeValidateFuncs: /* @__PURE__ */ new Map(),
25
+ nodeData: null,
26
+ node_exists: false,
27
+ is_loaded: false,
28
+ size_data_preview: 300,
29
+ dataTypes: ["String", "Datetime", "Int64", "Int32", "Int16", "Float64", "Float32", "Boolean"],
30
+ isDrawerOpen: false,
31
+ isAnalysisOpen: false,
32
+ drawCloseFunction: null,
33
+ initialEditorData: "",
34
+ runResults: {},
35
+ nodeDescriptions: {},
36
+ runNodeResults: {},
37
+ runNodeValidations: {},
38
+ currentRunResult: null,
39
+ isRunning: false,
40
+ showFlowResult: false,
41
+ tableVisible: false,
42
+ resultVersion: 0,
43
+ vueFlowInstance: null,
44
+ allExpressions: null,
45
+ isShowingLogViewer: false,
46
+ isStreamingLogs: false,
47
+ displayLogViewer: true,
48
+ showCodeGenerator: false
49
+ };
50
+ },
51
+ actions: {
52
+ toggleCodeGenerator() {
53
+ this.showCodeGenerator = !this.showCodeGenerator;
54
+ },
55
+ setCodeGeneratorVisibility(visible) {
56
+ this.showCodeGenerator = visible;
57
+ },
58
+ initializeResultCache(flowId) {
59
+ if (!this.runNodeResults[flowId]) {
60
+ this.runNodeResults[flowId] = {};
61
+ }
62
+ },
63
+ initializeValidationCache(flowId) {
64
+ if (!this.runNodeValidations[flowId]) {
65
+ this.runNodeValidations[flowId] = {};
66
+ }
67
+ },
68
+ setNodeResult(nodeId, result) {
69
+ this.initializeResultCache(this.flow_id);
70
+ this.runNodeResults[this.flow_id][nodeId] = result;
71
+ },
72
+ getNodeResult(nodeId) {
73
+ var _a2;
74
+ return (_a2 = this.runNodeResults[this.flow_id]) == null ? void 0 : _a2[nodeId];
75
+ },
76
+ resetNodeResult() {
77
+ console.log("Clearing node results");
78
+ this.runNodeResults = {};
79
+ },
80
+ clearFlowResults(flowId) {
81
+ if (this.runNodeResults[flowId]) {
82
+ delete this.runNodeResults[flowId];
83
+ }
84
+ },
85
+ setNodeValidation(nodeId, nodeValidationInput) {
86
+ if (typeof nodeId === "string") {
87
+ nodeId = parseInt(nodeId);
88
+ }
89
+ this.initializeValidationCache(this.flow_id);
90
+ const nodeValidation = {
91
+ ...nodeValidationInput,
92
+ validationTime: Date.now() / 1e3
93
+ };
94
+ this.runNodeValidations[this.flow_id][nodeId] = nodeValidation;
95
+ },
96
+ resetNodeValidation() {
97
+ this.runNodeValidations = {};
98
+ },
99
+ getNodeValidation(nodeId) {
100
+ var _a2;
101
+ return ((_a2 = this.runNodeValidations[this.flow_id]) == null ? void 0 : _a2[nodeId]) || {
102
+ isValid: true,
103
+ error: "",
104
+ validationTime: 0
105
+ };
106
+ },
107
+ insertRunResult(runResult, showResult = true) {
108
+ this.currentRunResult = runResult;
109
+ this.runResults[runResult.flow_id] = runResult;
110
+ this.showFlowResult = showResult;
111
+ this.isShowingLogViewer = this.displayLogViewer && showResult;
112
+ this.initializeResultCache(runResult.flow_id);
113
+ runResult.node_step_result.forEach((nodeResult) => {
114
+ this.runNodeResults[runResult.flow_id][nodeResult.node_id] = nodeResult;
115
+ });
116
+ this.resultVersion++;
117
+ },
118
+ resetRunResults() {
119
+ this.runNodeResults = {};
120
+ this.runResults = {};
121
+ this.currentRunResult = null;
122
+ },
123
+ initializeDescriptionCache(flowId) {
124
+ if (!this.nodeDescriptions[flowId]) {
125
+ this.nodeDescriptions[flowId] = {};
126
+ }
127
+ },
128
+ setNodeValidateFunc(nodeId, func) {
129
+ if (typeof nodeId === "string") {
130
+ nodeId = parseInt(nodeId);
131
+ }
132
+ this.nodeValidateFuncs.set(nodeId, func);
133
+ },
134
+ async validateNode(nodeId) {
135
+ if (typeof nodeId === "string") {
136
+ nodeId = parseInt(nodeId);
137
+ }
138
+ const func = this.nodeValidateFuncs.get(nodeId);
139
+ if (func) {
140
+ func();
141
+ } else {
142
+ console.warn("No validation function found for node", nodeId);
143
+ }
144
+ },
145
+ setFlowId(flowId) {
146
+ this.flow_id = flowId;
147
+ try {
148
+ sessionStorage.setItem(FLOW_ID_STORAGE_KEY, flowId.toString());
149
+ } catch (error) {
150
+ console.warn("Failed to store flow ID in session storage:", error);
151
+ }
152
+ },
153
+ setVueFlowInstance(vueFlowInstance) {
154
+ this.vueFlowInstance = vueFlowInstance;
155
+ },
156
+ setInitialEditorData(editorDataString) {
157
+ this.initialEditorData = editorDataString;
158
+ },
159
+ getInitialEditorData() {
160
+ return this.initialEditorData;
161
+ },
162
+ cacheNodeDescriptionDict(flowId, nodeId, description) {
163
+ this.initializeDescriptionCache(flowId);
164
+ this.nodeDescriptions[flowId][nodeId] = description;
165
+ },
166
+ clearNodeDescriptionCache(flowId, nodeId) {
167
+ if (this.nodeDescriptions[flowId] && this.nodeDescriptions[flowId][nodeId]) {
168
+ delete this.nodeDescriptions[flowId][nodeId];
169
+ }
170
+ },
171
+ clearFlowDescriptionCache(flowId) {
172
+ if (this.nodeDescriptions[flowId]) {
173
+ delete this.nodeDescriptions[flowId];
174
+ }
175
+ },
176
+ clearAllDescriptionCaches() {
177
+ this.nodeDescriptions = {};
178
+ },
179
+ async getNodeDescription(nodeId, forceRefresh = false) {
180
+ var _a2, _b;
181
+ this.initializeDescriptionCache(this.flow_id);
182
+ if (!forceRefresh && ((_a2 = this.nodeDescriptions[this.flow_id]) == null ? void 0 : _a2[nodeId])) {
183
+ return this.nodeDescriptions[this.flow_id][nodeId];
184
+ }
185
+ try {
186
+ const response = await axios.get("/node/description", {
187
+ params: {
188
+ node_id: nodeId,
189
+ flow_id: this.flow_id
190
+ }
191
+ });
192
+ this.cacheNodeDescriptionDict(this.flow_id, nodeId, response.data);
193
+ return response.data;
194
+ } catch (error) {
195
+ console.info("Error fetching node description:", error);
196
+ if ((_b = this.nodeDescriptions[this.flow_id]) == null ? void 0 : _b[nodeId]) {
197
+ console.warn("Using cached description due to API error");
198
+ return this.nodeDescriptions[this.flow_id][nodeId];
199
+ }
200
+ return "";
201
+ }
202
+ },
203
+ async setNodeDescription(nodeId, description) {
204
+ try {
205
+ this.cacheNodeDescriptionDict(this.flow_id, nodeId, description);
206
+ const response = await axios.post("/node/description/", JSON.stringify(description), {
207
+ params: {
208
+ flow_id: this.flow_id,
209
+ node_id: nodeId
210
+ },
211
+ headers: {
212
+ "Content-Type": "application/json"
213
+ }
214
+ });
215
+ if (response.data.status === "success") {
216
+ console.log(response.data.message);
217
+ } else {
218
+ console.warn("Unexpected success response structure:", response.data);
219
+ }
220
+ } catch (error) {
221
+ if (error.response) {
222
+ console.error("API error:", error.response.data.message);
223
+ } else if (error.request) {
224
+ console.error("The request was made but no response was received");
225
+ } else {
226
+ console.error("Error", error.message);
227
+ }
228
+ throw error;
229
+ }
230
+ },
231
+ setCloseFunction(f) {
232
+ this.drawCloseFunction = f;
233
+ },
234
+ getSizeDataPreview() {
235
+ return this.size_data_preview;
236
+ },
237
+ setSizeDataPreview(newHeight) {
238
+ this.size_data_preview = newHeight;
239
+ },
240
+ toggleDrawer() {
241
+ console.log("toggleDrawer in column-store.ts");
242
+ if (this.isDrawerOpen && this.drawCloseFunction) {
243
+ this.pushNodeData();
244
+ }
245
+ this.isDrawerOpen = !this.isDrawerOpen;
246
+ },
247
+ pushNodeData() {
248
+ if (this.drawCloseFunction && !this.isRunning) {
249
+ this.drawCloseFunction();
250
+ this.drawCloseFunction = null;
251
+ }
252
+ },
253
+ openDrawer(close_function) {
254
+ console.log("openDrawer in column-store.ts");
255
+ if (this.isDrawerOpen) {
256
+ console.log("pushing data");
257
+ this.pushNodeData();
258
+ }
259
+ if (close_function) {
260
+ this.drawCloseFunction = close_function;
261
+ }
262
+ this.isDrawerOpen = true;
263
+ },
264
+ closeDrawer() {
265
+ this.isDrawerOpen = false;
266
+ if (this.drawCloseFunction) {
267
+ this.pushNodeData();
268
+ }
269
+ this.node_id = -1;
270
+ },
271
+ openAnalysisDrawer(close_function) {
272
+ console.log("openAnalysisDrawer in column-store.ts");
273
+ if (this.isAnalysisOpen) {
274
+ this.pushNodeData();
275
+ }
276
+ if (close_function) {
277
+ this.drawCloseFunction = close_function;
278
+ }
279
+ this.isAnalysisOpen = true;
280
+ },
281
+ closeAnalysisDrawer() {
282
+ this.isAnalysisOpen = false;
283
+ if (this.drawCloseFunction) {
284
+ console.log("closeDrawer in column-store.ts");
285
+ this.pushNodeData();
286
+ }
287
+ },
288
+ getDataTypes() {
289
+ return this.dataTypes;
290
+ },
291
+ setInputCode(newCode) {
292
+ this.inputCode = newCode;
293
+ },
294
+ showLogViewer() {
295
+ console.log("triggered show log viewer");
296
+ this.isShowingLogViewer = this.displayLogViewer;
297
+ },
298
+ hideLogViewer() {
299
+ this.isShowingLogViewer = false;
300
+ },
301
+ toggleLogViewer() {
302
+ console.log("triggered toggle log viewer");
303
+ this.isShowingLogViewer = !this.isShowingLogViewer;
304
+ },
305
+ getRunResult(flow_id) {
306
+ return this.runResults[flow_id] || null;
307
+ },
308
+ async getTableExample(flow_id, node_id) {
309
+ try {
310
+ const response = await axios.get("/node/data", {
311
+ params: { flow_id, node_id },
312
+ headers: { accept: "application/json" }
313
+ });
314
+ return response.data;
315
+ } catch (error) {
316
+ console.error("Error fetching table example:", error);
317
+ return null;
318
+ }
319
+ },
320
+ async getNodeData(node_id, useCache = true) {
321
+ if (this.node_id === node_id && useCache) {
322
+ if (this.nodeData) {
323
+ this.is_loaded = true;
324
+ return this.nodeData;
325
+ }
326
+ }
327
+ try {
328
+ this.setFlowIdAndNodeId(this.flow_id, node_id);
329
+ const response = await axios.get("/node", {
330
+ params: { flow_id: this.flow_id, node_id: this.node_id },
331
+ headers: { accept: "application/json" }
332
+ });
333
+ this.nodeData = response.data;
334
+ this.is_loaded = true;
335
+ this.node_exists = true;
336
+ return this.nodeData;
337
+ } catch (error) {
338
+ console.error("Error fetching node data:", error);
339
+ this.nodeData = null;
340
+ this.is_loaded = false;
341
+ this.node_exists = false;
342
+ return null;
343
+ }
344
+ },
345
+ async reloadCurrentNodeData() {
346
+ return this.getNodeData(this.node_id, false);
347
+ },
348
+ setFlowIdAndNodeId(flow_id, node_id) {
349
+ if (this.node_id === node_id && this.flow_id === flow_id) {
350
+ return;
351
+ }
352
+ console.log("Automatically pushing the node data ");
353
+ this.pushNodeData();
354
+ this.previous_node_id = this.node_id;
355
+ if (this.flow_id !== flow_id) {
356
+ this.setFlowId(flow_id);
357
+ }
358
+ this.node_id = node_id;
359
+ },
360
+ getCurrentNodeData() {
361
+ return this.nodeData;
362
+ },
363
+ doReset() {
364
+ this.is_loaded = false;
365
+ },
366
+ getVueFlowInstance() {
367
+ return this.vueFlowInstance;
368
+ },
369
+ getEditorNodeData() {
370
+ var _a2;
371
+ if (this.node_id) {
372
+ return (_a2 = this.vueFlowInstance) == null ? void 0 : _a2.findNode(String(this.node_id));
373
+ }
374
+ return null;
375
+ },
376
+ async fetchExpressionsOverview() {
377
+ try {
378
+ const response = await axios.get("/editor/expression_doc");
379
+ this.allExpressions = response.data;
380
+ return this.allExpressions;
381
+ } catch (error) {
382
+ console.error("Error fetching expressions overview:", error);
383
+ return [];
384
+ }
385
+ },
386
+ async getExpressionsOverview() {
387
+ if (this.allExpressions) {
388
+ return this.allExpressions;
389
+ } else {
390
+ return await this.fetchExpressionsOverview();
391
+ }
392
+ },
393
+ async updateSettingsDirectly(inputData) {
394
+ var _a2, _b;
395
+ try {
396
+ const node = (_a2 = this.vueFlowInstance) == null ? void 0 : _a2.findNode(String(this.node_id));
397
+ inputData.pos_x = node.position.x;
398
+ inputData.pos_y = node.position.y;
399
+ console.log("updating settings");
400
+ console.log("node", node);
401
+ const response = await axios.post("/update_settings/", inputData, {
402
+ params: {
403
+ node_type: node.data.component.__name
404
+ }
405
+ });
406
+ const downstreamNodeIds = await loadDownstreamNodeIds(this.flow_id, inputData.node_id);
407
+ downstreamNodeIds.map((nodeId) => {
408
+ this.validateNode(nodeId);
409
+ });
410
+ return response.data;
411
+ } catch (error) {
412
+ console.error("Error updating settings:", (_b = error.response) == null ? void 0 : _b.data);
413
+ throw error;
414
+ }
415
+ },
416
+ async updateSettings(inputData) {
417
+ var _a2, _b;
418
+ try {
419
+ const node = (_a2 = this.vueFlowInstance) == null ? void 0 : _a2.findNode(String(this.node_id));
420
+ inputData.value.pos_x = node.position.x;
421
+ inputData.value.pos_y = node.position.y;
422
+ console.log("updating settings");
423
+ console.log("node", node);
424
+ const response = await axios.post("/update_settings/", inputData.value, {
425
+ params: {
426
+ node_type: node.data.component.__name
427
+ }
428
+ });
429
+ const downstreamNodeIds = await loadDownstreamNodeIds(
430
+ this.flow_id,
431
+ inputData.value.node_id
432
+ );
433
+ downstreamNodeIds.map((nodeId) => {
434
+ this.validateNode(nodeId);
435
+ });
436
+ return response.data;
437
+ } catch (error) {
438
+ console.error("Error updating settings:", (_b = error.response) == null ? void 0 : _b.data);
439
+ throw error;
440
+ }
441
+ },
442
+ updateNodeDescription(nodeId, description) {
443
+ this.cacheNodeDescriptionDict(this.flow_id, nodeId, description);
444
+ }
445
+ }
446
+ });
447
+ const _hoisted_1 = { class: "popover-container" };
448
+ const _hoisted_2 = { key: 0 };
449
+ const _hoisted_3 = ["innerHTML"];
450
+ const _sfc_main = /* @__PURE__ */ defineComponent({
451
+ __name: "PopOver",
452
+ props: {
453
+ content: {
454
+ type: String,
455
+ required: true
456
+ },
457
+ title: {
458
+ type: String,
459
+ default: ""
460
+ },
461
+ placement: {
462
+ type: String,
463
+ default: "top"
464
+ },
465
+ minWidth: {
466
+ type: Number,
467
+ default: 100
468
+ },
469
+ zIndex: {
470
+ type: Number,
471
+ default: 9999
472
+ }
473
+ },
474
+ setup(__props) {
475
+ useCssVars((_ctx) => ({
476
+ "64450ce2": props.minWidth + "px"
477
+ }));
478
+ const visible = ref(false);
479
+ const referenceEl = ref(null);
480
+ const popoverEl = ref(null);
481
+ const props = __props;
482
+ const popoverStyle = ref({
483
+ top: "0px",
484
+ left: "0px",
485
+ zIndex: props.zIndex.toString()
486
+ });
487
+ const showPopover = () => {
488
+ visible.value = true;
489
+ nextTick(() => {
490
+ updatePosition();
491
+ });
492
+ };
493
+ const hidePopover = () => {
494
+ visible.value = false;
495
+ };
496
+ const updatePosition = () => {
497
+ if (!referenceEl.value || !popoverEl.value)
498
+ return;
499
+ const referenceRect = referenceEl.value.getBoundingClientRect();
500
+ const popoverRect = popoverEl.value.getBoundingClientRect();
501
+ const offset = 20;
502
+ let top2 = 0;
503
+ let left = 0;
504
+ switch (props.placement) {
505
+ case "top":
506
+ top2 = referenceRect.top - popoverRect.height - offset;
507
+ left = referenceRect.left + referenceRect.width / 2 - popoverRect.width / 2;
508
+ break;
509
+ case "bottom":
510
+ top2 = referenceRect.bottom + offset;
511
+ left = referenceRect.left + referenceRect.width / 2 - popoverRect.width / 2;
512
+ break;
513
+ case "left":
514
+ top2 = referenceRect.top + referenceRect.height / 2 - popoverRect.height / 2;
515
+ left = referenceRect.left - popoverRect.width - offset;
516
+ break;
517
+ case "right":
518
+ top2 = referenceRect.top + referenceRect.height / 2 - popoverRect.height / 2;
519
+ left = referenceRect.right + offset;
520
+ break;
521
+ }
522
+ const viewportWidth = window.innerWidth;
523
+ const viewportHeight = window.innerHeight;
524
+ if (left < 10)
525
+ left = 10;
526
+ if (left + popoverRect.width > viewportWidth - 10) {
527
+ left = viewportWidth - popoverRect.width - 10;
528
+ }
529
+ if (top2 < 10)
530
+ top2 = 10;
531
+ if (top2 + popoverRect.height > viewportHeight - 10) {
532
+ top2 = viewportHeight - popoverRect.height - 10;
533
+ }
534
+ popoverStyle.value = {
535
+ top: `${top2}px`,
536
+ left: `${left}px`,
537
+ zIndex: props.zIndex.toString()
538
+ };
539
+ };
540
+ onMounted(() => {
541
+ window.addEventListener("resize", () => {
542
+ if (visible.value) {
543
+ updatePosition();
544
+ }
545
+ });
546
+ });
547
+ return (_ctx, _cache) => {
548
+ return openBlock(), createElementBlock("div", _hoisted_1, [
549
+ createBaseVNode("div", {
550
+ ref_key: "referenceEl",
551
+ ref: referenceEl,
552
+ class: "popover-reference",
553
+ onMouseenter: showPopover,
554
+ onMouseleave: hidePopover
555
+ }, [
556
+ renderSlot(_ctx.$slots, "default", {}, void 0, true)
557
+ ], 544),
558
+ visible.value ? (openBlock(), createBlock(Teleport, {
559
+ key: 0,
560
+ to: "body"
561
+ }, [
562
+ createBaseVNode("div", {
563
+ ref_key: "popoverEl",
564
+ ref: popoverEl,
565
+ style: normalizeStyle(popoverStyle.value),
566
+ class: normalizeClass(["popover", { "popover--left": props.placement === "left" }])
567
+ }, [
568
+ props.title !== "" ? (openBlock(), createElementBlock("h3", _hoisted_2, toDisplayString(props.title), 1)) : createCommentVNode("", true),
569
+ createBaseVNode("p", {
570
+ class: "content",
571
+ innerHTML: props.content
572
+ }, null, 8, _hoisted_3)
573
+ ], 6)
574
+ ])) : createCommentVNode("", true)
575
+ ]);
576
+ };
577
+ }
578
+ });
579
+ const PopOver_vue_vue_type_style_index_0_scoped_e6f071d2_lang = "";
580
+ const PopOver = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-e6f071d2"]]);
2
581
  let rangeFrom = [], rangeTo = [];
3
582
  (() => {
4
583
  let numbers = "lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map((s) => s ? parseInt(s, 36) : 1);
@@ -6649,8 +7228,8 @@ class DocView extends ContentView {
6649
7228
  }
6650
7229
  scrollIntoView(target) {
6651
7230
  if (target.isSnapshot) {
6652
- let ref = this.view.viewState.lineBlockAt(target.range.head);
6653
- this.view.scrollDOM.scrollTop = ref.top - target.yMargin;
7231
+ let ref2 = this.view.viewState.lineBlockAt(target.range.head);
7232
+ this.view.scrollDOM.scrollTop = ref2.top - target.yMargin;
6654
7233
  this.view.scrollDOM.scrollLeft = target.xMargin;
6655
7234
  return;
6656
7235
  }
@@ -11258,8 +11837,8 @@ class EditorView {
11258
11837
  */
11259
11838
  scrollSnapshot() {
11260
11839
  let { scrollTop, scrollLeft } = this.scrollDOM;
11261
- let ref = this.viewState.scrollAnchorAt(scrollTop);
11262
- return scrollIntoView$1.of(new ScrollTarget(EditorSelection.cursor(ref.from), "start", "start", ref.top - scrollTop, scrollLeft, true));
11840
+ let ref2 = this.viewState.scrollAnchorAt(scrollTop);
11841
+ return scrollIntoView$1.of(new ScrollTarget(EditorSelection.cursor(ref2.from), "start", "start", ref2.top - scrollTop, scrollLeft, true));
11263
11842
  }
11264
11843
  /**
11265
11844
  Enable or disable tab-focus mode, which disables key bindings
@@ -12352,8 +12931,8 @@ function rectangleFor(state, a, b) {
12352
12931
  return ranges;
12353
12932
  }
12354
12933
  function absoluteColumn(view, x2) {
12355
- let ref = view.coordsAtPos(view.viewport.from);
12356
- return ref ? Math.round(Math.abs((ref.left - x2) / view.defaultCharacterWidth)) : -1;
12934
+ let ref2 = view.coordsAtPos(view.viewport.from);
12935
+ return ref2 ? Math.round(Math.abs((ref2.left - x2) / view.defaultCharacterWidth)) : -1;
12357
12936
  }
12358
12937
  function getPos(view, event) {
12359
12938
  let offset = view.posAtCoords({ x: event.clientX, y: event.clientY }, false);
@@ -22247,36 +22826,38 @@ var F = Object.assign(Object.assign({}, z), B), P = defineComponent({ name: "Vue
22247
22826
  };
22248
22827
  } }), T = P;
22249
22828
  export {
22250
- Decoration as D,
22251
- EditorState as E,
22829
+ DefaultBufferLength as D,
22830
+ EditorView as E,
22252
22831
  HighlightStyle as H,
22253
22832
  IterMode as I,
22254
22833
  LanguageSupport as L,
22255
22834
  NodeSet as N,
22256
- Parser as P,
22835
+ PopOver as P,
22257
22836
  RangeSetBuilder as R,
22258
- T,
22837
+ Tree as T,
22259
22838
  ViewPlugin as V,
22260
- autocompletion as a,
22839
+ Parser as a,
22261
22840
  NodeType as b,
22262
- DefaultBufferLength as c,
22263
- NodeProp as d,
22264
- Tree as e,
22265
- syntaxTree as f,
22266
- LRLanguage as g,
22267
- indentNodeProp as h,
22841
+ NodeProp as c,
22842
+ syntaxTree as d,
22843
+ LRLanguage as e,
22844
+ indentNodeProp as f,
22845
+ delimitedIndent as g,
22846
+ foldNodeProp as h,
22268
22847
  ifNotIn as i,
22269
- delimitedIndent as j,
22270
- foldNodeProp as k,
22271
- foldInside as l,
22272
- completeFromList as m,
22273
- NodeWeakMap as n,
22274
- snippetCompletion as o,
22275
- syntaxHighlighting as p,
22276
- EditorView as q,
22277
- keymap as r,
22848
+ foldInside as j,
22849
+ completeFromList as k,
22850
+ NodeWeakMap as l,
22851
+ snippetCompletion as m,
22852
+ syntaxHighlighting as n,
22853
+ T as o,
22854
+ Decoration as p,
22855
+ EditorState as q,
22856
+ autocompletion as r,
22278
22857
  styleTags as s,
22279
22858
  tags as t,
22280
- acceptCompletion as u,
22281
- indentMore as v
22859
+ useNodeStore as u,
22860
+ keymap as v,
22861
+ acceptCompletion as w,
22862
+ indentMore as x
22282
22863
  };
@@ -1,4 +1,4 @@
1
- import { d as defineComponent, f as createVNode, l as computed } from "./index-f25c9283.js";
1
+ import { d as defineComponent, f as createVNode, l as computed } from "./index-e235a8bc.js";
2
2
  var uid = function() {
3
3
  return Math.random().toString(36).substring(2);
4
4
  };
@@ -12,7 +12,7 @@
12
12
 
13
13
  <!-- Material Icons -->
14
14
  <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
15
- <script type="module" crossorigin src="/assets/index-f25c9283.js"></script>
15
+ <script type="module" crossorigin src="/assets/index-e235a8bc.js"></script>
16
16
  <link rel="stylesheet" href="/assets/index-681a3ed0.css">
17
17
  </head>
18
18
  <body>