Flowfile 0.3.5__py3-none-any.whl → 0.3.7__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 (145) hide show
  1. flowfile/__init__.py +27 -6
  2. flowfile/api.py +1 -0
  3. flowfile/web/__init__.py +2 -2
  4. flowfile/web/static/assets/CloudConnectionManager-2dfdce2f.css +86 -0
  5. flowfile/web/static/assets/CloudConnectionManager-c20a740f.js +783 -0
  6. flowfile/web/static/assets/CloudStorageReader-29d14fcc.css +143 -0
  7. flowfile/web/static/assets/CloudStorageReader-960b400a.js +437 -0
  8. flowfile/web/static/assets/CloudStorageWriter-49c9a4b2.css +138 -0
  9. flowfile/web/static/assets/CloudStorageWriter-e3decbdd.js +430 -0
  10. flowfile/web/static/assets/{CrossJoin-dfcf7351.js → CrossJoin-d67e2405.js} +8 -8
  11. flowfile/web/static/assets/{DatabaseConnectionSettings-b2afb1d7.js → DatabaseConnectionSettings-a81e0f7e.js} +2 -2
  12. flowfile/web/static/assets/{DatabaseManager-824a49b2.js → DatabaseManager-9ea35e84.js} +2 -2
  13. flowfile/web/static/assets/{DatabaseReader-a48124d8.js → DatabaseReader-9578bfa5.js} +9 -9
  14. flowfile/web/static/assets/{DatabaseWriter-b47cbae2.js → DatabaseWriter-19531098.js} +9 -9
  15. flowfile/web/static/assets/{ExploreData-fdfc45a4.js → ExploreData-40476474.js} +47141 -43697
  16. flowfile/web/static/assets/{ExternalSource-861b0e71.js → ExternalSource-2297ef96.js} +6 -6
  17. flowfile/web/static/assets/{Filter-f87bb897.js → Filter-f211c03a.js} +8 -8
  18. flowfile/web/static/assets/{Formula-b8cefc31.css → Formula-29f19d21.css} +10 -0
  19. flowfile/web/static/assets/{Formula-1e2ed720.js → Formula-4207ea31.js} +75 -9
  20. flowfile/web/static/assets/{FuzzyMatch-b6cc4fdd.js → FuzzyMatch-bf120df0.js} +9 -9
  21. flowfile/web/static/assets/{GraphSolver-6a371f4c.js → GraphSolver-5bb7497a.js} +5 -5
  22. flowfile/web/static/assets/{GroupBy-f7b7f472.js → GroupBy-92c81b65.js} +6 -6
  23. flowfile/web/static/assets/{Join-eec38203.js → Join-4e49a274.js} +23 -15
  24. flowfile/web/static/assets/{Join-41c0f331.css → Join-f45eff22.css} +20 -20
  25. flowfile/web/static/assets/{ManualInput-9aaa46fb.js → ManualInput-90998ae8.js} +106 -34
  26. flowfile/web/static/assets/{ManualInput-ac7b9972.css → ManualInput-a71b52c6.css} +29 -17
  27. flowfile/web/static/assets/{Output-3b2ca045.js → Output-81e3e917.js} +4 -4
  28. flowfile/web/static/assets/{Pivot-a4f5d88f.js → Pivot-a3419842.js} +6 -6
  29. flowfile/web/static/assets/{PolarsCode-49ce444f.js → PolarsCode-72710deb.js} +6 -6
  30. flowfile/web/static/assets/{Read-07acdc9a.js → Read-c4059daf.js} +6 -6
  31. flowfile/web/static/assets/{RecordCount-6a21da56.js → RecordCount-c2b5e095.js} +5 -5
  32. flowfile/web/static/assets/{RecordId-949bdc17.js → RecordId-10baf191.js} +6 -6
  33. flowfile/web/static/assets/{Sample-7afca6e1.js → Sample-3ed9a0ae.js} +5 -5
  34. flowfile/web/static/assets/{SecretManager-b41c029d.js → SecretManager-0d49c0e8.js} +2 -2
  35. flowfile/web/static/assets/{Select-32b28406.js → Select-8a02a0b3.js} +8 -8
  36. flowfile/web/static/assets/{SettingsSection-a0f15a05.js → SettingsSection-4c0f45f5.js} +1 -1
  37. flowfile/web/static/assets/{Sort-fc6ba0e2.js → Sort-f55c9f9d.js} +6 -6
  38. flowfile/web/static/assets/{TextToRows-23127596.js → TextToRows-5dbc2145.js} +8 -8
  39. flowfile/web/static/assets/{UnavailableFields-c42880a3.js → UnavailableFields-a1768e52.js} +2 -2
  40. flowfile/web/static/assets/{Union-39eecc6c.js → Union-f2aefdc9.js} +5 -5
  41. flowfile/web/static/assets/{Unique-a0e8fe61.js → Unique-46b250da.js} +8 -8
  42. flowfile/web/static/assets/{Unpivot-1e2d43f0.js → Unpivot-25ac84cc.js} +5 -5
  43. flowfile/web/static/assets/api-6ef0dcef.js +80 -0
  44. flowfile/web/static/assets/{api-44ca9e9c.js → api-a0abbdc7.js} +1 -1
  45. flowfile/web/static/assets/cloud_storage_reader-aa1415d6.png +0 -0
  46. flowfile/web/static/assets/{designer-267d44f1.js → designer-13eabd83.js} +36 -34
  47. flowfile/web/static/assets/{documentation-6c0810a2.js → documentation-b87e7f6f.js} +1 -1
  48. flowfile/web/static/assets/{dropDown-52790b15.js → dropDown-13564764.js} +1 -1
  49. flowfile/web/static/assets/{fullEditor-e272b506.js → fullEditor-fd2cd6f9.js} +2 -2
  50. flowfile/web/static/assets/{genericNodeSettings-4bdcf98e.js → genericNodeSettings-71e11604.js} +3 -3
  51. flowfile/web/static/assets/{index-e235a8bc.js → index-f6c15e76.js} +59 -22
  52. flowfile/web/static/assets/{nodeTitle-fc3fc4b7.js → nodeTitle-988d9efe.js} +3 -3
  53. flowfile/web/static/assets/{secretApi-cdc2a3fd.js → secretApi-dd636aa2.js} +1 -1
  54. flowfile/web/static/assets/{selectDynamic-96aa82cd.js → selectDynamic-af36165e.js} +3 -3
  55. flowfile/web/static/assets/{vue-codemirror.esm-25e75a08.js → vue-codemirror.esm-2847001e.js} +2 -1
  56. flowfile/web/static/assets/{vue-content-loader.es-6c4b1c24.js → vue-content-loader.es-0371da73.js} +1 -1
  57. flowfile/web/static/index.html +1 -1
  58. {flowfile-0.3.5.dist-info → flowfile-0.3.7.dist-info}/METADATA +9 -4
  59. {flowfile-0.3.5.dist-info → flowfile-0.3.7.dist-info}/RECORD +131 -124
  60. {flowfile-0.3.5.dist-info → flowfile-0.3.7.dist-info}/entry_points.txt +2 -0
  61. flowfile_core/__init__.py +3 -0
  62. flowfile_core/auth/jwt.py +39 -0
  63. flowfile_core/configs/node_store/nodes.py +9 -6
  64. flowfile_core/configs/settings.py +6 -5
  65. flowfile_core/database/connection.py +63 -15
  66. flowfile_core/database/init_db.py +0 -1
  67. flowfile_core/database/models.py +49 -2
  68. flowfile_core/flowfile/code_generator/code_generator.py +472 -17
  69. flowfile_core/flowfile/connection_manager/models.py +1 -1
  70. flowfile_core/flowfile/database_connection_manager/db_connections.py +216 -2
  71. flowfile_core/flowfile/extensions.py +1 -1
  72. flowfile_core/flowfile/flow_data_engine/cloud_storage_reader.py +259 -0
  73. flowfile_core/flowfile/flow_data_engine/create/funcs.py +19 -8
  74. flowfile_core/flowfile/flow_data_engine/flow_data_engine.py +1062 -311
  75. flowfile_core/flowfile/flow_data_engine/flow_file_column/main.py +12 -2
  76. flowfile_core/flowfile/flow_data_engine/fuzzy_matching/settings_validator.py +1 -1
  77. flowfile_core/flowfile/flow_data_engine/join/__init__.py +2 -1
  78. flowfile_core/flowfile/flow_data_engine/join/utils.py +25 -0
  79. flowfile_core/flowfile/flow_data_engine/polars_code_parser.py +3 -1
  80. flowfile_core/flowfile/flow_data_engine/subprocess_operations/subprocess_operations.py +29 -22
  81. flowfile_core/flowfile/flow_data_engine/utils.py +1 -40
  82. flowfile_core/flowfile/flow_graph.py +718 -253
  83. flowfile_core/flowfile/flow_graph_utils.py +2 -2
  84. flowfile_core/flowfile/flow_node/flow_node.py +563 -117
  85. flowfile_core/flowfile/flow_node/models.py +154 -20
  86. flowfile_core/flowfile/flow_node/schema_callback.py +3 -2
  87. flowfile_core/flowfile/handler.py +2 -33
  88. flowfile_core/flowfile/manage/open_flowfile.py +1 -2
  89. flowfile_core/flowfile/sources/external_sources/__init__.py +0 -2
  90. flowfile_core/flowfile/sources/external_sources/factory.py +4 -7
  91. flowfile_core/flowfile/util/calculate_layout.py +0 -2
  92. flowfile_core/flowfile/utils.py +35 -26
  93. flowfile_core/main.py +35 -15
  94. flowfile_core/routes/cloud_connections.py +77 -0
  95. flowfile_core/routes/logs.py +2 -7
  96. flowfile_core/routes/public.py +1 -0
  97. flowfile_core/routes/routes.py +130 -90
  98. flowfile_core/routes/secrets.py +72 -14
  99. flowfile_core/schemas/__init__.py +8 -0
  100. flowfile_core/schemas/cloud_storage_schemas.py +215 -0
  101. flowfile_core/schemas/input_schema.py +121 -71
  102. flowfile_core/schemas/output_model.py +19 -3
  103. flowfile_core/schemas/schemas.py +150 -12
  104. flowfile_core/schemas/transform_schema.py +175 -35
  105. flowfile_core/utils/utils.py +40 -1
  106. flowfile_core/utils/validate_setup.py +41 -0
  107. flowfile_frame/__init__.py +9 -1
  108. flowfile_frame/cloud_storage/frame_helpers.py +39 -0
  109. flowfile_frame/cloud_storage/secret_manager.py +73 -0
  110. flowfile_frame/expr.py +28 -1
  111. flowfile_frame/expr.pyi +76 -61
  112. flowfile_frame/flow_frame.py +481 -208
  113. flowfile_frame/flow_frame.pyi +140 -91
  114. flowfile_frame/flow_frame_methods.py +160 -22
  115. flowfile_frame/group_frame.py +3 -0
  116. flowfile_frame/utils.py +25 -3
  117. flowfile_worker/external_sources/s3_source/main.py +216 -0
  118. flowfile_worker/external_sources/s3_source/models.py +142 -0
  119. flowfile_worker/funcs.py +51 -6
  120. flowfile_worker/models.py +22 -2
  121. flowfile_worker/routes.py +40 -38
  122. flowfile_worker/utils.py +1 -1
  123. test_utils/s3/commands.py +46 -0
  124. test_utils/s3/data_generator.py +292 -0
  125. test_utils/s3/demo_data_generator.py +186 -0
  126. test_utils/s3/fixtures.py +214 -0
  127. flowfile/web/static/assets/AirbyteReader-1ac35765.css +0 -314
  128. flowfile/web/static/assets/AirbyteReader-e08044e5.js +0 -922
  129. flowfile/web/static/assets/dropDownGeneric-60f56a8a.js +0 -72
  130. flowfile/web/static/assets/dropDownGeneric-895680d6.css +0 -10
  131. flowfile_core/flowfile/sources/external_sources/airbyte_sources/airbyte.py +0 -159
  132. flowfile_core/flowfile/sources/external_sources/airbyte_sources/models.py +0 -172
  133. flowfile_core/flowfile/sources/external_sources/airbyte_sources/settings.py +0 -173
  134. flowfile_core/schemas/defaults.py +0 -9
  135. flowfile_core/schemas/external_sources/airbyte_schemas.py +0 -20
  136. flowfile_core/schemas/models.py +0 -193
  137. flowfile_worker/external_sources/airbyte_sources/cache_manager.py +0 -161
  138. flowfile_worker/external_sources/airbyte_sources/main.py +0 -89
  139. flowfile_worker/external_sources/airbyte_sources/models.py +0 -133
  140. flowfile_worker/external_sources/airbyte_sources/settings.py +0 -0
  141. {flowfile-0.3.5.dist-info → flowfile-0.3.7.dist-info}/LICENSE +0 -0
  142. {flowfile-0.3.5.dist-info → flowfile-0.3.7.dist-info}/WHEEL +0 -0
  143. {flowfile_core/flowfile/sources/external_sources/airbyte_sources → flowfile_frame/cloud_storage}/__init__.py +0 -0
  144. {flowfile_core/schemas/external_sources → flowfile_worker/external_sources/s3_source}/__init__.py +0 -0
  145. {flowfile_worker/external_sources/airbyte_sources → test_utils/s3}/__init__.py +0 -0
@@ -1,9 +1,9 @@
1
- import { C as CodeLoader } from "./vue-content-loader.es-6c4b1c24.js";
2
- import { u as useNodeStore } from "./vue-codemirror.esm-25e75a08.js";
3
- import { G as GenericNodeSettings } from "./genericNodeSettings-4bdcf98e.js";
4
- import { d as defineComponent, r as ref, a3 as watchEffect, b as resolveComponent, c as openBlock, e as createElementBlock, f as createVNode, w as withCtx, p as createBaseVNode, F as Fragment, q as renderList, i as createCommentVNode, h as createBlock, u as unref, _ as _export_sfc, n as onMounted, R as nextTick, a7 as Teleport } from "./index-e235a8bc.js";
5
- import { N as NodeButton, a as NodeTitle } from "./nodeTitle-fc3fc4b7.js";
6
- import "./designer-267d44f1.js";
1
+ import { C as CodeLoader } from "./vue-content-loader.es-0371da73.js";
2
+ import { u as useNodeStore } from "./vue-codemirror.esm-2847001e.js";
3
+ import { G as GenericNodeSettings } from "./genericNodeSettings-71e11604.js";
4
+ import { d as defineComponent, r as ref, a3 as watchEffect, b as resolveComponent, c as openBlock, e as createElementBlock, f as createVNode, w as withCtx, p as createBaseVNode, F as Fragment, q as renderList, i as createCommentVNode, h as createBlock, u as unref, _ as _export_sfc, n as onMounted, R as nextTick, a7 as Teleport } from "./index-f6c15e76.js";
5
+ import { N as NodeButton, a as NodeTitle } from "./nodeTitle-988d9efe.js";
6
+ import "./designer-13eabd83.js";
7
7
  function get_template_source_type(type, options) {
8
8
  switch (type) {
9
9
  case "SAMPLE_USERS":
@@ -1,11 +1,11 @@
1
- import { d as defineComponent, r as ref, b as resolveComponent, c as openBlock, e as createElementBlock, f as createVNode, w as withCtx, p as createBaseVNode, g as createTextVNode, i as createCommentVNode, u as unref, a5 as withDirectives, a6 as vModelText, h as createBlock, _ as _export_sfc, n as onMounted, R as nextTick, a7 as Teleport } from "./index-e235a8bc.js";
2
- import { C as CodeLoader } from "./vue-content-loader.es-6c4b1c24.js";
3
- import { C as ColumnSelector } from "./dropDown-52790b15.js";
4
- import { u as useNodeStore } from "./vue-codemirror.esm-25e75a08.js";
5
- import mainEditorRef from "./fullEditor-e272b506.js";
6
- import { G as GenericNodeSettings } from "./genericNodeSettings-4bdcf98e.js";
7
- import { N as NodeButton, a as NodeTitle } from "./nodeTitle-fc3fc4b7.js";
8
- import "./designer-267d44f1.js";
1
+ import { d as defineComponent, r as ref, b as resolveComponent, c as openBlock, e as createElementBlock, f as createVNode, w as withCtx, p as createBaseVNode, g as createTextVNode, i as createCommentVNode, u as unref, a5 as withDirectives, a6 as vModelText, h as createBlock, _ as _export_sfc, n as onMounted, R as nextTick, a7 as Teleport } from "./index-f6c15e76.js";
2
+ import { C as CodeLoader } from "./vue-content-loader.es-0371da73.js";
3
+ import { C as ColumnSelector } from "./dropDown-13564764.js";
4
+ import { u as useNodeStore } from "./vue-codemirror.esm-2847001e.js";
5
+ import mainEditorRef from "./fullEditor-fd2cd6f9.js";
6
+ import { G as GenericNodeSettings } from "./genericNodeSettings-71e11604.js";
7
+ import { N as NodeButton, a as NodeTitle } from "./nodeTitle-988d9efe.js";
8
+ import "./designer-13eabd83.js";
9
9
  const _hoisted_1 = { key: 0 };
10
10
  const _hoisted_2 = { class: "listbox-wrapper" };
11
11
  const _hoisted_3 = { style: { "border-radius": "20px" } };
@@ -1,3 +1,13 @@
1
+
2
+ .label[data-v-f2958f57] {
3
+ font-weight: bold;
4
+ margin-bottom: 8px;
5
+ color: #333;
6
+ }
7
+ .select-wrapper[data-v-f2958f57] {
8
+ width: 100%;
9
+ position: relative;
10
+ }
1
11
  .x-flip[data-v-710d5b5e] {
2
12
  transform: scaleX(-1);
3
13
  }
@@ -1,12 +1,78 @@
1
- import { C as CodeLoader } from "./vue-content-loader.es-6c4b1c24.js";
2
- import { u as useNodeStore } from "./vue-codemirror.esm-25e75a08.js";
3
- import mainEditorRef from "./fullEditor-e272b506.js";
4
- import { D as DropDownGeneric } from "./dropDownGeneric-60f56a8a.js";
5
- import { G as GenericNodeSettings } from "./genericNodeSettings-4bdcf98e.js";
6
- import { d as defineComponent, r as ref, c as openBlock, e as createElementBlock, f as createVNode, w as withCtx, u as unref, i as createCommentVNode, h as createBlock, _ as _export_sfc, n as onMounted, R as nextTick, a7 as Teleport } from "./index-e235a8bc.js";
7
- import { N as NodeButton, a as NodeTitle } from "./nodeTitle-fc3fc4b7.js";
8
- import "./dropDown-52790b15.js";
9
- import "./designer-267d44f1.js";
1
+ import { C as CodeLoader } from "./vue-content-loader.es-0371da73.js";
2
+ import { u as useNodeStore } from "./vue-codemirror.esm-2847001e.js";
3
+ import mainEditorRef from "./fullEditor-fd2cd6f9.js";
4
+ import { C as ColumnSelector } from "./dropDown-13564764.js";
5
+ import { d as defineComponent, r as ref, m as watch, c as openBlock, e as createElementBlock, t as toDisplayString, i as createCommentVNode, p as createBaseVNode, f as createVNode, _ as _export_sfc, w as withCtx, u as unref, h as createBlock, n as onMounted, R as nextTick, a7 as Teleport } from "./index-f6c15e76.js";
6
+ import { G as GenericNodeSettings } from "./genericNodeSettings-71e11604.js";
7
+ import { N as NodeButton, a as NodeTitle } from "./nodeTitle-988d9efe.js";
8
+ import "./designer-13eabd83.js";
9
+ const _hoisted_1$2 = {
10
+ key: 0,
11
+ class: "label"
12
+ };
13
+ const _hoisted_2$1 = { class: "select-wrapper" };
14
+ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
15
+ __name: "dropDownGeneric",
16
+ props: {
17
+ modelValue: {
18
+ type: String,
19
+ default: "NewField"
20
+ },
21
+ optionList: {
22
+ type: Array,
23
+ required: true
24
+ },
25
+ title: {
26
+ type: String,
27
+ default: ""
28
+ },
29
+ allowOther: {
30
+ type: Boolean,
31
+ default: true
32
+ },
33
+ placeholder: {
34
+ type: String,
35
+ default: "Select an option"
36
+ },
37
+ isLoading: {
38
+ type: Boolean,
39
+ default: false
40
+ }
41
+ },
42
+ emits: ["update:modelValue", "change"],
43
+ setup(__props, { emit: __emit }) {
44
+ const props = __props;
45
+ const emit = __emit;
46
+ const localSelectedValue = ref(props.modelValue);
47
+ watch(
48
+ () => props.modelValue,
49
+ (newVal) => {
50
+ localSelectedValue.value = newVal;
51
+ }
52
+ );
53
+ watch(localSelectedValue, (newVal) => {
54
+ emit("update:modelValue", newVal);
55
+ emit("change", newVal);
56
+ });
57
+ return (_ctx, _cache) => {
58
+ return openBlock(), createElementBlock("div", null, [
59
+ __props.title !== "" ? (openBlock(), createElementBlock("p", _hoisted_1$2, toDisplayString(__props.title), 1)) : createCommentVNode("", true),
60
+ createBaseVNode("div", _hoisted_2$1, [
61
+ createVNode(ColumnSelector, {
62
+ modelValue: localSelectedValue.value,
63
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => localSelectedValue.value = $event),
64
+ "column-options": __props.optionList,
65
+ "allow-other": __props.allowOther,
66
+ placeholder: __props.placeholder,
67
+ "is-loading": __props.isLoading
68
+ }, null, 8, ["modelValue", "column-options", "allow-other", "placeholder", "is-loading"])
69
+ ])
70
+ ]);
71
+ };
72
+ }
73
+ });
74
+ const dropDownGeneric_vue_vue_type_style_index_0_scoped_f2958f57_lang = "";
75
+ const DropDownGeneric = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-f2958f57"]]);
10
76
  const createFormulaInput = (field_name = "", data_type = "String", function_def = "") => {
11
77
  const fieldInput = {
12
78
  name: field_name,
@@ -1,12 +1,12 @@
1
- import { d as defineComponent, r as ref, l as computed, n as onMounted, R as nextTick, c as openBlock, e as createElementBlock, f as createVNode, w as withCtx, p as createBaseVNode, s as normalizeClass, F as Fragment, q as renderList, h as createBlock, i as createCommentVNode, g as createTextVNode, t as toDisplayString, a5 as withDirectives, a6 as vModelText, ag as vModelSelect, u as unref, _ as _export_sfc, a7 as Teleport } from "./index-e235a8bc.js";
2
- import { u as useNodeStore } from "./vue-codemirror.esm-25e75a08.js";
3
- import { C as ColumnSelector } from "./dropDown-52790b15.js";
4
- import { s as selectDynamic } from "./selectDynamic-96aa82cd.js";
5
- import { u as unavailableField } from "./UnavailableFields-c42880a3.js";
6
- import { G as GenericNodeSettings } from "./genericNodeSettings-4bdcf98e.js";
7
- import { C as CodeLoader } from "./vue-content-loader.es-6c4b1c24.js";
8
- import { N as NodeButton, a as NodeTitle } from "./nodeTitle-fc3fc4b7.js";
9
- import "./designer-267d44f1.js";
1
+ import { d as defineComponent, r as ref, l as computed, n as onMounted, R as nextTick, c as openBlock, e as createElementBlock, f as createVNode, w as withCtx, p as createBaseVNode, s as normalizeClass, F as Fragment, q as renderList, h as createBlock, i as createCommentVNode, g as createTextVNode, t as toDisplayString, a5 as withDirectives, a6 as vModelText, ag as vModelSelect, u as unref, _ as _export_sfc, a7 as Teleport } from "./index-f6c15e76.js";
2
+ import { u as useNodeStore } from "./vue-codemirror.esm-2847001e.js";
3
+ import { C as ColumnSelector } from "./dropDown-13564764.js";
4
+ import { s as selectDynamic } from "./selectDynamic-af36165e.js";
5
+ import { u as unavailableField } from "./UnavailableFields-a1768e52.js";
6
+ import { G as GenericNodeSettings } from "./genericNodeSettings-71e11604.js";
7
+ import { C as CodeLoader } from "./vue-content-loader.es-0371da73.js";
8
+ import { N as NodeButton, a as NodeTitle } from "./nodeTitle-988d9efe.js";
9
+ import "./designer-13eabd83.js";
10
10
  const _hoisted_1$1 = {
11
11
  key: 0,
12
12
  class: "fuzzy-join-container"
@@ -1,8 +1,8 @@
1
- import { d as defineComponent, c as openBlock, e as createElementBlock, p as createBaseVNode, F as Fragment, q as renderList, s as normalizeClass, t as toDisplayString, T as normalizeStyle, _ as _export_sfc, g as createTextVNode, i as createCommentVNode, r as ref, l as computed, n as onMounted, R as nextTick, o as onUnmounted, b as resolveComponent, f as createVNode, w as withCtx, v as withModifiers, h as createBlock, a7 as Teleport } from "./index-e235a8bc.js";
2
- import { u as useNodeStore } from "./vue-codemirror.esm-25e75a08.js";
3
- import { G as GenericNodeSettings } from "./genericNodeSettings-4bdcf98e.js";
4
- import { N as NodeButton, a as NodeTitle } from "./nodeTitle-fc3fc4b7.js";
5
- import "./designer-267d44f1.js";
1
+ import { d as defineComponent, c as openBlock, e as createElementBlock, p as createBaseVNode, F as Fragment, q as renderList, s as normalizeClass, t as toDisplayString, T as normalizeStyle, _ as _export_sfc, g as createTextVNode, i as createCommentVNode, r as ref, l as computed, n as onMounted, R as nextTick, o as onUnmounted, b as resolveComponent, f as createVNode, w as withCtx, v as withModifiers, h as createBlock, a7 as Teleport } from "./index-f6c15e76.js";
2
+ import { u as useNodeStore } from "./vue-codemirror.esm-2847001e.js";
3
+ import { G as GenericNodeSettings } from "./genericNodeSettings-71e11604.js";
4
+ import { N as NodeButton, a as NodeTitle } from "./nodeTitle-988d9efe.js";
5
+ import "./designer-13eabd83.js";
6
6
  const _hoisted_1$3 = ["onClick"];
7
7
  const _sfc_main$3 = /* @__PURE__ */ defineComponent({
8
8
  __name: "ContextMenu",
@@ -1,9 +1,9 @@
1
- import { d as defineComponent, r as ref, l as computed, n as onMounted, R as nextTick, o as onUnmounted, b as resolveComponent, c as openBlock, e as createElementBlock, f as createVNode, w as withCtx, p as createBaseVNode, F as Fragment, q as renderList, s as normalizeClass, t as toDisplayString, i as createCommentVNode, T as normalizeStyle, v as withModifiers, h as createBlock, u as unref, _ as _export_sfc, a7 as Teleport } from "./index-e235a8bc.js";
2
- import { C as CodeLoader } from "./vue-content-loader.es-6c4b1c24.js";
3
- import { u as useNodeStore } from "./vue-codemirror.esm-25e75a08.js";
4
- import { G as GenericNodeSettings } from "./genericNodeSettings-4bdcf98e.js";
5
- import { N as NodeButton, a as NodeTitle } from "./nodeTitle-fc3fc4b7.js";
6
- import "./designer-267d44f1.js";
1
+ import { d as defineComponent, r as ref, l as computed, n as onMounted, R as nextTick, o as onUnmounted, b as resolveComponent, c as openBlock, e as createElementBlock, f as createVNode, w as withCtx, p as createBaseVNode, F as Fragment, q as renderList, s as normalizeClass, t as toDisplayString, i as createCommentVNode, T as normalizeStyle, v as withModifiers, h as createBlock, u as unref, _ as _export_sfc, a7 as Teleport } from "./index-f6c15e76.js";
2
+ import { C as CodeLoader } from "./vue-content-loader.es-0371da73.js";
3
+ import { u as useNodeStore } from "./vue-codemirror.esm-2847001e.js";
4
+ import { G as GenericNodeSettings } from "./genericNodeSettings-71e11604.js";
5
+ import { N as NodeButton, a as NodeTitle } from "./nodeTitle-988d9efe.js";
6
+ import "./designer-13eabd83.js";
7
7
  const _hoisted_1$1 = { key: 0 };
8
8
  const _hoisted_2 = { class: "listbox-wrapper" };
9
9
  const _hoisted_3 = {
@@ -1,12 +1,12 @@
1
- import { C as CodeLoader } from "./vue-content-loader.es-6c4b1c24.js";
2
- import { u as useNodeStore } from "./vue-codemirror.esm-25e75a08.js";
3
- import { C as ColumnSelector } from "./dropDown-52790b15.js";
4
- import { s as selectDynamic } from "./selectDynamic-96aa82cd.js";
5
- import { G as GenericNodeSettings } from "./genericNodeSettings-4bdcf98e.js";
6
- import { d as defineComponent, r as ref, c as openBlock, e as createElementBlock, f as createVNode, w as withCtx, p as createBaseVNode, h as createBlock, i as createCommentVNode, F as Fragment, q as renderList, u as unref, _ as _export_sfc, n as onMounted, R as nextTick, a7 as Teleport } from "./index-e235a8bc.js";
7
- import { N as NodeButton, a as NodeTitle } from "./nodeTitle-fc3fc4b7.js";
8
- import "./UnavailableFields-c42880a3.js";
9
- import "./designer-267d44f1.js";
1
+ import { C as CodeLoader } from "./vue-content-loader.es-0371da73.js";
2
+ import { u as useNodeStore } from "./vue-codemirror.esm-2847001e.js";
3
+ import { C as ColumnSelector } from "./dropDown-13564764.js";
4
+ import { s as selectDynamic } from "./selectDynamic-af36165e.js";
5
+ import { G as GenericNodeSettings } from "./genericNodeSettings-71e11604.js";
6
+ import { d as defineComponent, r as ref, l as computed, c as openBlock, e as createElementBlock, f as createVNode, w as withCtx, p as createBaseVNode, h as createBlock, i as createCommentVNode, F as Fragment, q as renderList, u as unref, _ as _export_sfc, n as onMounted, R as nextTick, a7 as Teleport } from "./index-f6c15e76.js";
7
+ import { N as NodeButton, a as NodeTitle } from "./nodeTitle-988d9efe.js";
8
+ import "./UnavailableFields-a1768e52.js";
9
+ import "./designer-13eabd83.js";
10
10
  const _hoisted_1$1 = {
11
11
  key: 0,
12
12
  class: "listbox-wrapper"
@@ -22,6 +22,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
22
22
  __name: "join",
23
23
  setup(__props, { expose: __expose }) {
24
24
  const joinTypes = ["inner", "left", "right", "full", "semi", "anti", "cross"];
25
+ const JOIN_TYPES_WITHOUT_COLUMN_SELECTION = ["anti", "semi"];
25
26
  const handleJoinTypeError = (error) => {
26
27
  console.error("Join type error:", error);
27
28
  };
@@ -53,6 +54,11 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
53
54
  });
54
55
  }
55
56
  };
57
+ const showColumnSelection = computed(() => {
58
+ var _a;
59
+ const joinType = (_a = nodeJoin.value) == null ? void 0 : _a.join_input.how;
60
+ return joinType && !JOIN_TYPES_WITHOUT_COLUMN_SELECTION.includes(joinType);
61
+ });
56
62
  const removeJoinCondition = (index) => {
57
63
  if (nodeJoin.value && index >= 0) {
58
64
  nodeJoin.value.join_input.join_mapping.splice(index, 1);
@@ -147,7 +153,8 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
147
153
  ])
148
154
  ])
149
155
  ]),
150
- createVNode(selectDynamic, {
156
+ showColumnSelection.value ? (openBlock(), createBlock(selectDynamic, {
157
+ key: 0,
151
158
  "select-inputs": (_b = nodeJoin.value) == null ? void 0 : _b.join_input.left_select.renames,
152
159
  "show-keep-option": true,
153
160
  "show-title": true,
@@ -155,8 +162,9 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
155
162
  "show-data": true,
156
163
  title: "Left data",
157
164
  onUpdateSelectInputs: _cache[1] || (_cache[1] = (updatedInputs) => updateSelectInputsHandler(updatedInputs, true))
158
- }, null, 8, ["select-inputs"]),
159
- createVNode(selectDynamic, {
165
+ }, null, 8, ["select-inputs"])) : createCommentVNode("", true),
166
+ showColumnSelection.value ? (openBlock(), createBlock(selectDynamic, {
167
+ key: 1,
160
168
  "select-inputs": (_c = nodeJoin.value) == null ? void 0 : _c.join_input.right_select.renames,
161
169
  "show-keep-option": true,
162
170
  "show-headers": true,
@@ -164,7 +172,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
164
172
  "show-data": true,
165
173
  title: "Right data",
166
174
  onUpdateSelectInputs: _cache[2] || (_cache[2] = (updatedInputs) => updateSelectInputsHandler(updatedInputs, true))
167
- }, null, 8, ["select-inputs"])
175
+ }, null, 8, ["select-inputs"])) : createCommentVNode("", true)
168
176
  ];
169
177
  }),
170
178
  _: 1,
@@ -174,8 +182,8 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
174
182
  };
175
183
  }
176
184
  });
177
- const join_vue_vue_type_style_index_0_scoped_ed38aa97_lang = "";
178
- const joinInput = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-ed38aa97"]]);
185
+ const join_vue_vue_type_style_index_0_scoped_f4a6a0de_lang = "";
186
+ const joinInput = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-f4a6a0de"]]);
179
187
  const _hoisted_1 = { ref: "el" };
180
188
  const _sfc_main = /* @__PURE__ */ defineComponent({
181
189
  __name: "Join",
@@ -1,12 +1,12 @@
1
1
 
2
2
  /* Join Type Selector */
3
- .join-type-selector[data-v-ed38aa97] {
3
+ .join-type-selector[data-v-f4a6a0de] {
4
4
  display: flex;
5
5
  align-items: center;
6
6
  margin: 12px;
7
7
  gap: 10px;
8
8
  }
9
- .join-type-label[data-v-ed38aa97] {
9
+ .join-type-label[data-v-f4a6a0de] {
10
10
  font-size: 12px;
11
11
  color: #333;
12
12
  font-weight: 500;
@@ -14,27 +14,27 @@
14
14
  }
15
15
 
16
16
  /* Join Mapping Section */
17
- .table-wrapper[data-v-ed38aa97] {
17
+ .table-wrapper[data-v-f4a6a0de] {
18
18
  border: 1px solid #eee;
19
19
  border-radius: 6px;
20
20
  overflow: hidden;
21
21
  margin: 5px;
22
22
  }
23
- .selectors-header[data-v-ed38aa97] {
23
+ .selectors-header[data-v-f4a6a0de] {
24
24
  display: flex;
25
25
  justify-content: space-between;
26
26
  padding: 8px 16px;
27
27
  background-color: #fafafa;
28
28
  border-bottom: 1px solid #eee;
29
29
  }
30
- .selectors-title[data-v-ed38aa97] {
30
+ .selectors-title[data-v-f4a6a0de] {
31
31
  flex: 1;
32
32
  text-align: center;
33
33
  font-size: 12px;
34
34
  color: #666;
35
35
  font-weight: 500;
36
36
  }
37
- .selectors-container[data-v-ed38aa97] {
37
+ .selectors-container[data-v-f4a6a0de] {
38
38
  padding: 12px;
39
39
  box-sizing: border-box;
40
40
  width: 100%;
@@ -42,7 +42,7 @@
42
42
  justify-content: space-between;
43
43
  flex-direction: column;
44
44
  }
45
- .selectors-row[data-v-ed38aa97] {
45
+ .selectors-row[data-v-f4a6a0de] {
46
46
  display: flex;
47
47
  gap: 12px;
48
48
  margin-bottom: 8px;
@@ -50,20 +50,20 @@
50
50
  display: flex;
51
51
  justify-content: space-between;
52
52
  }
53
- .selectors-row[data-v-ed38aa97]:last-child {
53
+ .selectors-row[data-v-f4a6a0de]:last-child {
54
54
  margin-bottom: 0;
55
55
  }
56
56
 
57
57
  /* Action Buttons */
58
- .action-buttons[data-v-ed38aa97] {
58
+ .action-buttons[data-v-f4a6a0de] {
59
59
  display: flex;
60
60
  gap: 4px;
61
61
  min-width: 60px;
62
62
  justify-content: center;
63
63
  }
64
- .action-button[data-v-ed38aa97],
65
- .add-join-button[data-v-ed38aa97],
66
- .remove-join-button[data-v-ed38aa97] {
64
+ .action-button[data-v-f4a6a0de],
65
+ .add-join-button[data-v-f4a6a0de],
66
+ .remove-join-button[data-v-f4a6a0de] {
67
67
  cursor: pointer;
68
68
  width: 24px;
69
69
  height: 24px;
@@ -76,34 +76,34 @@
76
76
  font-size: 14px;
77
77
  transition: all 0.2s ease;
78
78
  }
79
- .add-join-button[data-v-ed38aa97] {
79
+ .add-join-button[data-v-f4a6a0de] {
80
80
  color: #45a049;
81
81
  border-color: #45a049;
82
82
  }
83
- .add-join-button[data-v-ed38aa97]:hover {
83
+ .add-join-button[data-v-f4a6a0de]:hover {
84
84
  background-color: #45a049;
85
85
  color: #fff;
86
86
  }
87
- .remove-join-button[data-v-ed38aa97] {
87
+ .remove-join-button[data-v-f4a6a0de] {
88
88
  color: #d32f2f;
89
89
  border-color: #d32f2f;
90
90
  }
91
- .remove-join-button[data-v-ed38aa97]:hover {
91
+ .remove-join-button[data-v-f4a6a0de]:hover {
92
92
  background-color: #d32f2f;
93
93
  color: #fff;
94
94
  }
95
95
 
96
96
  /* Custom scrollbar */
97
- .selectors-container[data-v-ed38aa97]::-webkit-scrollbar {
97
+ .selectors-container[data-v-f4a6a0de]::-webkit-scrollbar {
98
98
  width: 8px;
99
99
  }
100
- .selectors-container[data-v-ed38aa97]::-webkit-scrollbar-track {
100
+ .selectors-container[data-v-f4a6a0de]::-webkit-scrollbar-track {
101
101
  background: transparent;
102
102
  }
103
- .selectors-container[data-v-ed38aa97]::-webkit-scrollbar-thumb {
103
+ .selectors-container[data-v-f4a6a0de]::-webkit-scrollbar-thumb {
104
104
  background-color: rgba(0, 0, 0, 0.1);
105
105
  border-radius: 4px;
106
106
  }
107
- .selectors-container[data-v-ed38aa97]::-webkit-scrollbar-thumb:hover {
107
+ .selectors-container[data-v-f4a6a0de]::-webkit-scrollbar-thumb:hover {
108
108
  background-color: rgba(0, 0, 0, 0.2);
109
109
  }