Flowfile 0.4.1__py3-none-any.whl → 0.5.1__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.
Files changed (139) hide show
  1. flowfile/__init__.py +3 -1
  2. flowfile/api.py +1 -2
  3. flowfile/web/static/assets/{CloudConnectionManager-d3248f8d.js → CloudConnectionManager-0dfba9f2.js} +2 -2
  4. flowfile/web/static/assets/{CloudStorageReader-d65bf041.js → CloudStorageReader-d5b1b6c9.js} +6 -6
  5. flowfile/web/static/assets/{CloudStorageWriter-e83be3ed.js → CloudStorageWriter-00d87aad.js} +6 -6
  6. flowfile/web/static/assets/{ColumnSelector-cce661cf.js → ColumnSelector-4685e75d.js} +1 -1
  7. flowfile/web/static/assets/{ContextMenu-cf18d2cc.js → ContextMenu-23e909da.js} +1 -1
  8. flowfile/web/static/assets/{ContextMenu-160afb08.js → ContextMenu-70ae0c79.js} +1 -1
  9. flowfile/web/static/assets/{ContextMenu-11a4652a.js → ContextMenu-f149cf7c.js} +1 -1
  10. flowfile/web/static/assets/{CrossJoin-d395d38c.js → CrossJoin-702a3edd.js} +7 -7
  11. flowfile/web/static/assets/{CustomNode-b812dc0b.js → CustomNode-b1519993.js} +11 -11
  12. flowfile/web/static/assets/{DatabaseConnectionSettings-7000bf2c.js → DatabaseConnectionSettings-6f3e4ea5.js} +2 -2
  13. flowfile/web/static/assets/{DatabaseManager-9662ec5b.js → DatabaseManager-cf5ef661.js} +2 -2
  14. flowfile/web/static/assets/{DatabaseReader-4f035d0c.js → DatabaseReader-d38c7295.js} +9 -9
  15. flowfile/web/static/assets/{DatabaseWriter-f65dcd54.js → DatabaseWriter-b04ef46a.js} +8 -8
  16. flowfile/web/static/assets/{ExploreData-94c43dfc.js → ExploreData-5fa10ed8.js} +5 -5
  17. flowfile/web/static/assets/{ExternalSource-ac04b3cc.js → ExternalSource-d39af878.js} +5 -5
  18. flowfile/web/static/assets/{Filter-812dcbca.js → Filter-9b6d08db.js} +7 -7
  19. flowfile/web/static/assets/{Formula-71472193.js → Formula-6b04fb1d.js} +7 -7
  20. flowfile/web/static/assets/{FuzzyMatch-b317f631.js → FuzzyMatch-999521f4.js} +8 -8
  21. flowfile/web/static/assets/{GraphSolver-754a234f.js → GraphSolver-17dd2198.js} +6 -6
  22. flowfile/web/static/assets/{GroupBy-6c6f9802.js → GroupBy-6b039e18.js} +5 -5
  23. flowfile/web/static/assets/{Join-a1b800be.js → Join-24d0f113.js} +8 -8
  24. flowfile/web/static/assets/{ManualInput-a9640276.js → ManualInput-34639209.js} +4 -4
  25. flowfile/web/static/assets/{MultiSelect-97213888.js → MultiSelect-0e8724a3.js} +2 -2
  26. flowfile/web/static/assets/{MultiSelect.vue_vue_type_script_setup_true_lang-6ffe088a.js → MultiSelect.vue_vue_type_script_setup_true_lang-b0e538c2.js} +1 -1
  27. flowfile/web/static/assets/{NumericInput-e638088a.js → NumericInput-3d63a470.js} +2 -2
  28. flowfile/web/static/assets/{NumericInput.vue_vue_type_script_setup_true_lang-90eb2cba.js → NumericInput.vue_vue_type_script_setup_true_lang-e0edeccc.js} +1 -1
  29. flowfile/web/static/assets/{Output-ddc9079f.css → Output-283fe388.css} +5 -5
  30. flowfile/web/static/assets/{Output-76750610.js → Output-edea9802.js} +57 -38
  31. flowfile/web/static/assets/{Pivot-7814803f.js → Pivot-61d19301.js} +7 -7
  32. flowfile/web/static/assets/{PivotValidation-f92137d2.js → PivotValidation-de9f43fe.js} +1 -1
  33. flowfile/web/static/assets/{PivotValidation-76dd431a.js → PivotValidation-f97fec5b.js} +1 -1
  34. flowfile/web/static/assets/{PolarsCode-889c3008.js → PolarsCode-bc3c9984.js} +5 -5
  35. flowfile/web/static/assets/{Read-637b72a7.js → Read-64a3f259.js} +80 -105
  36. flowfile/web/static/assets/{Read-6b17491f.css → Read-e808b239.css} +10 -10
  37. flowfile/web/static/assets/{RecordCount-2b050c41.js → RecordCount-3d5039be.js} +4 -4
  38. flowfile/web/static/assets/{RecordId-81df7784.js → RecordId-597510e0.js} +6 -6
  39. flowfile/web/static/assets/{SQLQueryComponent-88dcfe53.js → SQLQueryComponent-df51adbe.js} +1 -1
  40. flowfile/web/static/assets/{Sample-258ad2a9.js → Sample-4be0a507.js} +4 -4
  41. flowfile/web/static/assets/{SecretManager-2a2cb7e2.js → SecretManager-4839be57.js} +2 -2
  42. flowfile/web/static/assets/{Select-850215fd.js → Select-9b72f201.js} +7 -7
  43. flowfile/web/static/assets/{SettingsSection-29b4fa6b.js → SettingsSection-7ded385d.js} +1 -1
  44. flowfile/web/static/assets/{SettingsSection-0e8d9123.js → SettingsSection-e1e9c953.js} +1 -1
  45. flowfile/web/static/assets/{SettingsSection-55bae608.js → SettingsSection-f0f75a42.js} +1 -1
  46. flowfile/web/static/assets/{SingleSelect-bebd408b.js → SingleSelect-6c777aac.js} +2 -2
  47. flowfile/web/static/assets/{SingleSelect.vue_vue_type_script_setup_true_lang-6093741c.js → SingleSelect.vue_vue_type_script_setup_true_lang-33e3ff9b.js} +1 -1
  48. flowfile/web/static/assets/{SliderInput-6a05ab61.js → SliderInput-7cb93e62.js} +1 -1
  49. flowfile/web/static/assets/{Sort-10ab48ed.js → Sort-6cbde21a.js} +5 -5
  50. flowfile/web/static/assets/{TextInput-df9d6259.js → TextInput-d9a40c11.js} +2 -2
  51. flowfile/web/static/assets/{TextInput.vue_vue_type_script_setup_true_lang-000e1178.js → TextInput.vue_vue_type_script_setup_true_lang-5896c375.js} +1 -1
  52. flowfile/web/static/assets/{TextToRows-6c2d93d8.js → TextToRows-c4fcbf4d.js} +7 -7
  53. flowfile/web/static/assets/{ToggleSwitch-0ff7ac52.js → ToggleSwitch-4ef91d19.js} +2 -2
  54. flowfile/web/static/assets/{ToggleSwitch.vue_vue_type_script_setup_true_lang-c6dc3029.js → ToggleSwitch.vue_vue_type_script_setup_true_lang-38478c20.js} +1 -1
  55. flowfile/web/static/assets/{UnavailableFields-1bab97cb.js → UnavailableFields-a03f512c.js} +2 -2
  56. flowfile/web/static/assets/{Union-b563478a.js → Union-bfe9b996.js} +4 -4
  57. flowfile/web/static/assets/{Unique-f90db5db.js → Unique-5d023a27.js} +8 -20
  58. flowfile/web/static/assets/{Unpivot-bcb0025f.js → Unpivot-91cc5354.js} +6 -6
  59. flowfile/web/static/assets/{UnpivotValidation-c4e73b04.js → UnpivotValidation-7ee2de44.js} +1 -1
  60. flowfile/web/static/assets/{VueGraphicWalker-bb8535e2.js → VueGraphicWalker-e51b9924.js} +1 -1
  61. flowfile/web/static/assets/{api-2d6adc4f.js → api-c1bad5ca.js} +1 -1
  62. flowfile/web/static/assets/{api-4c8e3822.js → api-cf1221f0.js} +1 -1
  63. flowfile/web/static/assets/{designer-e3c150ec.css → designer-8da3ba3a.css} +90 -67
  64. flowfile/web/static/assets/{designer-f3656d8c.js → designer-9633482a.js} +119 -51
  65. flowfile/web/static/assets/{documentation-52b241e7.js → documentation-ca400224.js} +1 -1
  66. flowfile/web/static/assets/{dropDown-1bca8a74.js → dropDown-614b998d.js} +1 -1
  67. flowfile/web/static/assets/{fullEditor-2985687e.js → fullEditor-f7971590.js} +2 -2
  68. flowfile/web/static/assets/{genericNodeSettings-0476ba4e.js → genericNodeSettings-4fe5f36b.js} +3 -3
  69. flowfile/web/static/assets/{index-246f201c.js → index-5429bbf8.js} +6 -8
  70. flowfile/web/static/assets/nodeInput-5d0d6b79.js +41 -0
  71. flowfile/web/static/assets/{outputCsv-d686eeaf.js → outputCsv-076b85ab.js} +1 -1
  72. flowfile/web/static/assets/{outputExcel-8809ea2f.js → outputExcel-0fd17dbe.js} +1 -1
  73. flowfile/web/static/assets/{outputParquet-53ba645a.js → outputParquet-b61e0847.js} +1 -1
  74. flowfile/web/static/assets/{readCsv-053bf97b.js → readCsv-a8bb8b61.js} +21 -20
  75. flowfile/web/static/assets/{readCsv-bca3ed53.css → readCsv-c767cb37.css} +13 -13
  76. flowfile/web/static/assets/{readExcel-ad531eab.js → readExcel-67b4aee0.js} +10 -12
  77. flowfile/web/static/assets/{readExcel-e1b381ea.css → readExcel-806d2826.css} +12 -12
  78. flowfile/web/static/assets/{readParquet-cee068e2.css → readParquet-48c81530.css} +3 -3
  79. flowfile/web/static/assets/{readParquet-58e899a1.js → readParquet-92ce1dbc.js} +4 -7
  80. flowfile/web/static/assets/{secretApi-538058f3.js → secretApi-68435402.js} +1 -1
  81. flowfile/web/static/assets/{selectDynamic-b38de2ba.js → selectDynamic-92e25ee3.js} +3 -3
  82. flowfile/web/static/assets/{vue-codemirror.esm-db9b8936.js → vue-codemirror.esm-41b0e0d7.js} +7 -4
  83. flowfile/web/static/assets/{vue-content-loader.es-b5f3ac30.js → vue-content-loader.es-2c8e608f.js} +1 -1
  84. flowfile/web/static/index.html +1 -1
  85. {flowfile-0.4.1.dist-info → flowfile-0.5.1.dist-info}/METADATA +3 -2
  86. {flowfile-0.4.1.dist-info → flowfile-0.5.1.dist-info}/RECORD +138 -126
  87. {flowfile-0.4.1.dist-info → flowfile-0.5.1.dist-info}/WHEEL +1 -1
  88. {flowfile-0.4.1.dist-info → flowfile-0.5.1.dist-info}/entry_points.txt +1 -0
  89. flowfile_core/__init__.py +3 -0
  90. flowfile_core/flowfile/analytics/analytics_processor.py +1 -0
  91. flowfile_core/flowfile/code_generator/code_generator.py +62 -64
  92. flowfile_core/flowfile/flow_data_engine/create/funcs.py +73 -56
  93. flowfile_core/flowfile/flow_data_engine/flow_data_engine.py +77 -86
  94. flowfile_core/flowfile/flow_data_engine/fuzzy_matching/prepare_for_fuzzy_match.py +23 -23
  95. flowfile_core/flowfile/flow_data_engine/join/utils.py +1 -1
  96. flowfile_core/flowfile/flow_data_engine/join/verify_integrity.py +9 -4
  97. flowfile_core/flowfile/flow_data_engine/subprocess_operations/subprocess_operations.py +184 -78
  98. flowfile_core/flowfile/flow_data_engine/utils.py +2 -0
  99. flowfile_core/flowfile/flow_graph.py +129 -26
  100. flowfile_core/flowfile/flow_node/flow_node.py +3 -0
  101. flowfile_core/flowfile/flow_node/models.py +2 -1
  102. flowfile_core/flowfile/handler.py +5 -5
  103. flowfile_core/flowfile/manage/compatibility_enhancements.py +404 -41
  104. flowfile_core/flowfile/manage/io_flowfile.py +394 -0
  105. flowfile_core/flowfile/node_designer/__init__.py +1 -1
  106. flowfile_core/flowfile/node_designer/_type_registry.py +2 -2
  107. flowfile_core/flowfile/node_designer/custom_node.py +1 -1
  108. flowfile_core/flowfile/node_designer/ui_components.py +1 -1
  109. flowfile_core/flowfile/schema_callbacks.py +8 -5
  110. flowfile_core/flowfile/setting_generator/settings.py +15 -9
  111. flowfile_core/routes/routes.py +8 -10
  112. flowfile_core/schemas/cloud_storage_schemas.py +0 -2
  113. flowfile_core/schemas/input_schema.py +222 -65
  114. flowfile_core/schemas/output_model.py +1 -1
  115. flowfile_core/schemas/schemas.py +145 -32
  116. flowfile_core/schemas/transform_schema.py +1083 -413
  117. flowfile_core/schemas/yaml_types.py +103 -0
  118. flowfile_core/{flowfile/node_designer/data_types.py → types.py} +11 -1
  119. flowfile_frame/__init__.py +3 -1
  120. flowfile_frame/flow_frame.py +15 -18
  121. flowfile_frame/flow_frame_methods.py +12 -9
  122. flowfile_worker/__init__.py +3 -0
  123. flowfile_worker/create/__init__.py +3 -21
  124. flowfile_worker/create/funcs.py +68 -56
  125. flowfile_worker/create/models.py +130 -62
  126. flowfile_worker/routes.py +5 -8
  127. tools/migrate/README.md +56 -0
  128. tools/migrate/__init__.py +12 -0
  129. tools/migrate/__main__.py +131 -0
  130. tools/migrate/legacy_schemas.py +621 -0
  131. tools/migrate/migrate.py +598 -0
  132. tools/migrate/tests/__init__.py +0 -0
  133. tools/migrate/tests/conftest.py +23 -0
  134. tools/migrate/tests/test_migrate.py +627 -0
  135. tools/migrate/tests/test_migration_e2e.py +1010 -0
  136. tools/migrate/tests/test_node_migrations.py +813 -0
  137. flowfile_core/flowfile/manage/open_flowfile.py +0 -143
  138. {flowfile-0.4.1.dist-info → flowfile-0.5.1.dist-info}/licenses/LICENSE +0 -0
  139. /flowfile_core/flowfile/manage/manage_flowfile.py → /tools/__init__.py +0 -0
@@ -1,23 +1,11 @@
1
- import { r as ref, d as defineComponent, l as computed, n as onMounted, R as nextTick, o as onUnmounted, c as openBlock, e as createElementBlock, f as createVNode, w as withCtx, h as createBlock, u as unref, _ as _export_sfc } from "./index-246f201c.js";
2
- import { C as CodeLoader } from "./vue-content-loader.es-b5f3ac30.js";
3
- import { u as useNodeStore } from "./vue-codemirror.esm-db9b8936.js";
4
- import { s as selectDynamic } from "./selectDynamic-b38de2ba.js";
5
- import { G as GenericNodeSettings } from "./genericNodeSettings-0476ba4e.js";
6
- import "./UnavailableFields-1bab97cb.js";
7
- import "./designer-f3656d8c.js";
8
- const createSelectInputFromName = (columnName, keep = true) => {
9
- return {
10
- old_name: columnName,
11
- new_name: columnName,
12
- keep,
13
- is_altered: false,
14
- data_type_change: false,
15
- is_available: true,
16
- position: 0,
17
- original_position: 0
18
- };
19
- };
20
- ref(null);
1
+ import { f as createSelectInputFromName } from "./nodeInput-5d0d6b79.js";
2
+ import { C as CodeLoader } from "./vue-content-loader.es-2c8e608f.js";
3
+ import { u as useNodeStore } from "./vue-codemirror.esm-41b0e0d7.js";
4
+ import { s as selectDynamic } from "./selectDynamic-92e25ee3.js";
5
+ import { G as GenericNodeSettings } from "./genericNodeSettings-4fe5f36b.js";
6
+ import { d as defineComponent, r as ref, l as computed, n as onMounted, R as nextTick, o as onUnmounted, c as openBlock, e as createElementBlock, f as createVNode, w as withCtx, h as createBlock, u as unref, _ as _export_sfc } from "./index-5429bbf8.js";
7
+ import "./UnavailableFields-a03f512c.js";
8
+ import "./designer-9633482a.js";
21
9
  const _hoisted_1 = {
22
10
  key: 0,
23
11
  class: "listbox-wrapper"
@@ -1,9 +1,9 @@
1
- import { d as defineComponent, r as ref, 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, v as withModifiers, t as toDisplayString, h as createBlock, i as createCommentVNode, _ as _export_sfc } from "./index-246f201c.js";
2
- import { u as useNodeStore } from "./vue-codemirror.esm-db9b8936.js";
3
- import ContextMenu from "./ContextMenu-cf18d2cc.js";
4
- import SettingsSection from "./SettingsSection-55bae608.js";
5
- import { G as GenericNodeSettings } from "./genericNodeSettings-0476ba4e.js";
6
- import "./designer-f3656d8c.js";
1
+ import { d as defineComponent, r as ref, 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, v as withModifiers, t as toDisplayString, h as createBlock, i as createCommentVNode, _ as _export_sfc } from "./index-5429bbf8.js";
2
+ import { u as useNodeStore } from "./vue-codemirror.esm-41b0e0d7.js";
3
+ import ContextMenu from "./ContextMenu-23e909da.js";
4
+ import SettingsSection from "./SettingsSection-f0f75a42.js";
5
+ import { G as GenericNodeSettings } from "./genericNodeSettings-4fe5f36b.js";
6
+ import "./designer-9633482a.js";
7
7
  const _hoisted_1 = {
8
8
  key: 0,
9
9
  class: "listbox-wrapper"
@@ -1,4 +1,4 @@
1
- import { d as defineComponent, l as computed, c as openBlock, h as createBlock, w as withCtx, f as createVNode, p as createBaseVNode, u as unref, ar as ElIcon, e as createElementBlock, i as createCommentVNode, as as ElPopover, _ as _export_sfc } from "./index-246f201c.js";
1
+ import { d as defineComponent, l as computed, c as openBlock, h as createBlock, w as withCtx, f as createVNode, p as createBaseVNode, u as unref, ar as ElIcon, e as createElementBlock, i as createCommentVNode, as as ElPopover, _ as _export_sfc } from "./index-5429bbf8.js";
2
2
  const _hoisted_1 = { class: "validation-wrapper" };
3
3
  const _hoisted_2 = {
4
4
  key: 0,
@@ -1,4 +1,4 @@
1
- import { k as getDefaultExportFromCjs, d as defineComponent, r as ref, n as onMounted, o as onUnmounted, c as openBlock, e as createElementBlock, aj as toRaw, _ as _export_sfc } from "./index-246f201c.js";
1
+ import { k as getDefaultExportFromCjs, d as defineComponent, r as ref, n as onMounted, o as onUnmounted, c as openBlock, e as createElementBlock, aj as toRaw, _ as _export_sfc } from "./index-5429bbf8.js";
2
2
  function _mergeNamespaces(n10, m10) {
3
3
  for (var i = 0; i < m10.length; i++) {
4
4
  const e19 = m10[i];
@@ -1,4 +1,4 @@
1
- import { a as axios } from "./index-246f201c.js";
1
+ import { a as axios } from "./index-5429bbf8.js";
2
2
  const API_BASE_URL = "/cloud_connections";
3
3
  const toPythonFormat = (connection) => {
4
4
  return {
@@ -1,4 +1,4 @@
1
- import { a as axios } from "./index-246f201c.js";
1
+ import { a as axios } from "./index-5429bbf8.js";
2
2
  const API_BASE_URL = "/db_connection_lib";
3
3
  const toPythonFormat = (connection) => {
4
4
  return {
@@ -59,7 +59,7 @@
59
59
  box-shadow: none;
60
60
  }
61
61
 
62
- .browser-title[data-v-b74852a7] {
62
+ .browser-title[data-v-11a74179] {
63
63
  display: flex;
64
64
  align-items: center;
65
65
  gap: 8px;
@@ -68,28 +68,28 @@
68
68
  font-weight: 600;
69
69
  color: #333;
70
70
  }
71
- .mode-selector[data-v-b74852a7] {
71
+ .mode-selector[data-v-11a74179] {
72
72
  display: flex;
73
73
  justify-content: center;
74
74
  }
75
- .browser-content[data-v-b74852a7] {
75
+ .browser-content[data-v-11a74179] {
76
76
  display: flex;
77
77
  flex-direction: column;
78
78
  height: calc(100% - 116px); /* Adjust based on header height */
79
79
  overflow: hidden;
80
80
  }
81
- .browser-toolbar[data-v-b74852a7] {
81
+ .browser-toolbar[data-v-11a74179] {
82
82
  padding: 16px;
83
83
  background-color: #fff;
84
84
  border-bottom: 1px solid #e9ecef;
85
85
  }
86
- .path-navigation[data-v-b74852a7] {
86
+ .path-navigation[data-v-11a74179] {
87
87
  display: flex;
88
88
  align-items: center;
89
89
  gap: 12px;
90
90
  margin-bottom: 12px;
91
91
  }
92
- .nav-button[data-v-b74852a7] {
92
+ .nav-button[data-v-11a74179] {
93
93
  display: inline-flex;
94
94
  align-items: center;
95
95
  gap: 4px;
@@ -102,11 +102,11 @@
102
102
  cursor: pointer;
103
103
  transition: all 0.2s ease;
104
104
  }
105
- .nav-button[data-v-b74852a7]:hover:not(:disabled) {
105
+ .nav-button[data-v-11a74179]:hover:not(:disabled) {
106
106
  background-color: #f8f9fa;
107
107
  border-color: #ced4da;
108
108
  }
109
- .current-path[data-v-b74852a7] {
109
+ .current-path[data-v-11a74179] {
110
110
  flex: 1;
111
111
  padding: 8px 12px;
112
112
  background-color: #f8f9fa;
@@ -115,57 +115,57 @@
115
115
  font-family: monospace;
116
116
  color: #495057;
117
117
  }
118
- .search-container[data-v-b74852a7] {
118
+ .search-container[data-v-11a74179] {
119
119
  display: flex;
120
120
  align-items: center;
121
121
  gap: 16px;
122
122
  flex: 1;
123
123
  }
124
- .search-input[data-v-b74852a7] {
124
+ .search-input[data-v-11a74179] {
125
125
  flex: 1;
126
126
  }
127
- .browser-main[data-v-b74852a7] {
127
+ .browser-main[data-v-11a74179] {
128
128
  flex: 1;
129
129
  overflow-y: auto;
130
130
  padding: 16px;
131
131
  }
132
- .file-item[data-v-b74852a7] {
132
+ .file-item[data-v-11a74179] {
133
133
  border: 1px solid #e9ecef;
134
134
  border-radius: 8px;
135
135
  overflow: hidden;
136
136
  transition: all 0.2s ease;
137
137
  }
138
- .file-item[data-v-b74852a7]:hover {
138
+ .file-item[data-v-11a74179]:hover {
139
139
  transform: translateY(-2px);
140
140
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
141
141
  }
142
- .file-item.selected[data-v-b74852a7] {
142
+ .file-item.selected[data-v-11a74179] {
143
143
  border-color: #3b82f6;
144
144
  background-color: #eff6ff;
145
145
  }
146
- .file-item-content[data-v-b74852a7] {
146
+ .file-item-content[data-v-11a74179] {
147
147
  padding: 12px;
148
148
  display: flex;
149
149
  align-items: center;
150
150
  gap: 12px;
151
151
  }
152
- .file-icon-wrapper[data-v-b74852a7] {
152
+ .file-icon-wrapper[data-v-11a74179] {
153
153
  display: flex;
154
154
  align-items: center;
155
155
  justify-content: center;
156
156
  width: 30px;
157
157
  height: 30px;
158
158
  }
159
- .file-icon[data-v-b74852a7] {
159
+ .file-icon[data-v-11a74179] {
160
160
  width: 24px;
161
161
  height: 24px;
162
162
  color: #6b7280;
163
163
  }
164
- .file-details[data-v-b74852a7] {
164
+ .file-details[data-v-11a74179] {
165
165
  flex: 1;
166
166
  min-width: 0;
167
167
  }
168
- .file-name[data-v-b74852a7] {
168
+ .file-name[data-v-11a74179] {
169
169
  font-weight: 500;
170
170
  color: #1f2937;
171
171
  margin-bottom: 4px;
@@ -173,11 +173,11 @@
173
173
  overflow: hidden;
174
174
  text-overflow: ellipsis;
175
175
  }
176
- .file-info[data-v-b74852a7] {
176
+ .file-info[data-v-11a74179] {
177
177
  font-size: 12px;
178
178
  color: #6b7280;
179
179
  }
180
- .browser-actions[data-v-b74852a7] {
180
+ .browser-actions[data-v-11a74179] {
181
181
  padding: 16px;
182
182
  background-color: #f8f9fa;
183
183
  border-top: 1px solid #e9ecef;
@@ -188,25 +188,25 @@
188
188
  box-sizing: border-box;
189
189
  gap: 12px; /* Add gap between buttons */
190
190
  }
191
- .selected-file[data-v-b74852a7] {
191
+ .selected-file[data-v-11a74179] {
192
192
  color: #6b7280;
193
193
  font-size: 14px;
194
194
  }
195
- .loading-state[data-v-b74852a7],
196
- .error-state[data-v-b74852a7] {
195
+ .loading-state[data-v-11a74179],
196
+ .error-state[data-v-11a74179] {
197
197
  display: flex;
198
198
  align-items: center;
199
199
  justify-content: center;
200
200
  height: 200px;
201
201
  color: #6b7280;
202
202
  }
203
- .error-state[data-v-b74852a7] {
203
+ .error-state[data-v-11a74179] {
204
204
  color: #dc2626;
205
205
  }
206
- .hidden-file[data-v-b74852a7] {
206
+ .hidden-file[data-v-11a74179] {
207
207
  opacity: 0.5;
208
208
  }
209
- .file-browser[data-v-b74852a7] {
209
+ .file-browser[data-v-11a74179] {
210
210
  display: flex;
211
211
  flex-direction: column;
212
212
  height: 70vh; /* Set to 70% of viewport height */
@@ -214,20 +214,20 @@
214
214
  border-radius: 8px;
215
215
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
216
216
  }
217
- .browser-content[data-v-b74852a7] {
217
+ .browser-content[data-v-11a74179] {
218
218
  display: flex;
219
219
  flex-direction: column;
220
220
  flex: 1;
221
221
  min-height: 0; /* Enable proper flex child scrolling */
222
222
  overflow: hidden;
223
223
  }
224
- .browser-main[data-v-b74852a7] {
224
+ .browser-main[data-v-11a74179] {
225
225
  flex: 1;
226
226
  overflow-y: auto; /* Make this section scrollable */
227
227
  padding: 16px;
228
228
  min-height: 0; /* Enable proper flex child scrolling */
229
229
  }
230
- .grid-container[data-v-b74852a7] {
230
+ .grid-container[data-v-11a74179] {
231
231
  display: grid;
232
232
  grid-template-columns: repeat(auto-fill, minmax(205px, 1fr));
233
233
  gap: 16px;
@@ -235,25 +235,25 @@
235
235
  }
236
236
 
237
237
  /* Optional: if you want to maintain icon size consistency */
238
- .file-icon[data-v-b74852a7] {
238
+ .file-icon[data-v-11a74179] {
239
239
  width: 24px;
240
240
  height: 24px;
241
241
  object-fit: contain;
242
242
  }
243
243
 
244
244
  /* Add new styles for sort controls */
245
- .search-and-sort-container[data-v-b74852a7] {
245
+ .search-and-sort-container[data-v-11a74179] {
246
246
  display: flex;
247
247
  flex-direction: column;
248
248
  gap: 12px;
249
249
  }
250
- .sort-controls[data-v-b74852a7] {
250
+ .sort-controls[data-v-11a74179] {
251
251
  display: flex;
252
252
  align-items: center;
253
253
  gap: 8px;
254
254
  min-width: 180px; /* Prevent select from being too narrow */
255
255
  }
256
- .sort-direction-button[data-v-b74852a7] {
256
+ .sort-direction-button[data-v-11a74179] {
257
257
  display: inline-flex;
258
258
  align-items: center;
259
259
  justify-content: center;
@@ -261,14 +261,37 @@
261
261
  height: 32px;
262
262
  padding: 0;
263
263
  }
264
- .controls-row[data-v-b74852a7] {
264
+ .controls-row[data-v-11a74179] {
265
265
  display: flex;
266
266
  align-items: center;
267
267
  gap: 16px;
268
268
  margin-top: 12px;
269
269
  }
270
+ .form-hint[data-v-11a74179] {
271
+ font-size: 12px;
272
+ color: #6b7280;
273
+ margin-top: 8px;
274
+ display: flex;
275
+ align-items: center;
276
+ gap: 6px;
277
+ flex-wrap: wrap;
278
+ }
279
+ .preview-label[data-v-11a74179] {
280
+ color: #374151;
281
+ }
282
+ .form-hint code[data-v-11a74179] {
283
+ background-color: #f3f4f6;
284
+ padding: 2px 6px;
285
+ border-radius: 4px;
286
+ font-family: monospace;
287
+ color: #1f2937;
288
+ }
289
+ .auto-extension-hint[data-v-11a74179] {
290
+ color: #9ca3af;
291
+ font-style: italic;
292
+ }
270
293
 
271
- .action-buttons[data-v-2566c44c] {
294
+ .action-buttons[data-v-3359ec07] {
272
295
  padding-left: 20px;
273
296
  display: flex;
274
297
  align-items: center;
@@ -281,7 +304,7 @@
281
304
  BlinkMacSystemFont,
282
305
  sans-serif;
283
306
  }
284
- .action-btn[data-v-2566c44c] {
307
+ .action-btn[data-v-3359ec07] {
285
308
  display: flex;
286
309
  align-items: center;
287
310
  gap: 6px;
@@ -298,22 +321,22 @@
298
321
  letter-spacing: 0.01em;
299
322
  box-shadow: 0 1px 2px rgba(1, 5, 13, 0.08); /* Slightly darker shadow */
300
323
  }
301
- .action-btn[data-v-2566c44c]:hover {
324
+ .action-btn[data-v-3359ec07]:hover {
302
325
  background-color: rgba(16, 24, 40, 0.08); /* Darker hover background */
303
326
  border-color: rgba(16, 24, 40, 0.18); /* Darker hover border */
304
327
  }
305
- .action-btn[data-v-2566c44c]:active {
328
+ .action-btn[data-v-3359ec07]:active {
306
329
  transform: translateY(1px);
307
330
  box-shadow: none;
308
331
  }
309
- .btn-icon[data-v-2566c44c] {
332
+ .btn-icon[data-v-3359ec07] {
310
333
  font-size: 16px;
311
334
  color: rgb(2, 27, 45); /* Darker icon color */
312
335
  }
313
- .btn-text[data-v-2566c44c] {
336
+ .btn-text[data-v-3359ec07] {
314
337
  white-space: nowrap;
315
338
  }
316
- .settings-modal-content[data-v-2566c44c] {
339
+ .settings-modal-content[data-v-3359ec07] {
317
340
  padding: 16px;
318
341
  font-family:
319
342
  "Inter",
@@ -322,30 +345,30 @@
322
345
  BlinkMacSystemFont,
323
346
  sans-serif;
324
347
  }
325
- .form-group[data-v-2566c44c] {
348
+ .form-group[data-v-3359ec07] {
326
349
  margin-bottom: 16px;
327
350
  }
328
- .form-group label[data-v-2566c44c] {
351
+ .form-group label[data-v-3359ec07] {
329
352
  display: block;
330
353
  margin-bottom: 8px;
331
354
  font-size: 14px;
332
355
  font-weight: 500;
333
356
  color: rgba(16, 24, 40, 0.9);
334
357
  }
335
- .quick-create-modal[data-v-2566c44c] {
358
+ .quick-create-modal[data-v-3359ec07] {
336
359
  padding: 16px 0;
337
360
  }
338
- .quick-create-modal .form-group[data-v-2566c44c] {
361
+ .quick-create-modal .form-group[data-v-3359ec07] {
339
362
  margin-bottom: 20px;
340
363
  }
341
- .quick-create-modal label[data-v-2566c44c] {
364
+ .quick-create-modal label[data-v-3359ec07] {
342
365
  display: block;
343
366
  margin-bottom: 8px;
344
367
  font-size: 14px;
345
368
  font-weight: 500;
346
369
  color: rgba(16, 24, 40, 0.9);
347
370
  }
348
- .preview-text[data-v-2566c44c] {
371
+ .preview-text[data-v-3359ec07] {
349
372
  padding: 12px;
350
373
  background-color: rgba(3, 11, 27, 0.03);
351
374
  border: 1px solid rgba(16, 24, 40, 0.08);
@@ -353,14 +376,14 @@
353
376
  font-size: 13px;
354
377
  color: rgba(16, 24, 40, 0.7);
355
378
  }
356
- .preview-text code[data-v-2566c44c] {
379
+ .preview-text code[data-v-3359ec07] {
357
380
  background-color: rgba(16, 24, 40, 0.08);
358
381
  padding: 2px 6px;
359
382
  border-radius: 3px;
360
383
  font-family: "Monaco", "Menlo", "Ubuntu Mono", monospace;
361
384
  font-size: 12px;
362
385
  }
363
- .dialog-footer[data-v-2566c44c] {
386
+ .dialog-footer[data-v-3359ec07] {
364
387
  display: flex;
365
388
  gap: 8px;
366
389
  }
@@ -622,7 +645,7 @@
622
645
  font-size: 12px;
623
646
  }
624
647
 
625
- .custom-node[data-v-e5db3d68] {
648
+ .custom-node[data-v-0887a495] {
626
649
  border-radius: 4px;
627
650
  padding: 1px;
628
651
  background-color: white;
@@ -631,10 +654,10 @@
631
654
  align-items: center;
632
655
  position: relative;
633
656
  }
634
- .selected[data-v-e5db3d68] {
657
+ .selected[data-v-0887a495] {
635
658
  border: 2px solid #409eff;
636
659
  }
637
- .custom-node-header[data-v-e5db3d68] {
660
+ .custom-node-header[data-v-0887a495] {
638
661
  font-weight: 100;
639
662
  font-size: small;
640
663
  width: 20px;
@@ -643,7 +666,7 @@
643
666
  text-overflow: ellipsis;
644
667
  font-family: "Roboto", "Source Sans Pro", Avenir, Helvetica, Arial, sans-serif;
645
668
  }
646
- .description-display[data-v-e5db3d68] {
669
+ .description-display[data-v-0887a495] {
647
670
  position: relative;
648
671
  white-space: normal;
649
672
  min-width: 100px;
@@ -658,7 +681,7 @@
658
681
  gap: 4px;
659
682
  border-radius: 4px;
660
683
  }
661
- .edit-icon[data-v-e5db3d68] {
684
+ .edit-icon[data-v-0887a495] {
662
685
  opacity: 0;
663
686
  transition: opacity 0.2s;
664
687
  color: #0f275f;
@@ -667,26 +690,26 @@
667
690
  align-items: center;
668
691
  padding: 2px;
669
692
  }
670
- .description-display:hover .edit-icon[data-v-e5db3d68] {
693
+ .description-display:hover .edit-icon[data-v-0887a495] {
671
694
  opacity: 1;
672
695
  }
673
- .edit-icon[data-v-e5db3d68]:hover {
696
+ .edit-icon[data-v-0887a495]:hover {
674
697
  color: #051233;
675
698
  }
676
- .description-text[data-v-e5db3d68] {
699
+ .description-text[data-v-0887a495] {
677
700
  margin: 0;
678
701
  white-space: pre-wrap;
679
702
  word-wrap: break-word;
680
703
  font-family: "Roboto", "Source Sans Pro", Avenir, Helvetica, Arial, sans-serif;
681
704
  }
682
- .edit-overlay[data-v-e5db3d68] {
705
+ .edit-overlay[data-v-0887a495] {
683
706
  position: fixed;
684
707
  z-index: 1000;
685
708
  background: white;
686
709
  border-radius: 4px;
687
710
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
688
711
  }
689
- .description-input[data-v-e5db3d68] {
712
+ .description-input[data-v-0887a495] {
690
713
  width: 200px;
691
714
  height: 75px;
692
715
  resize: both;
@@ -697,15 +720,15 @@
697
720
  font-family: "Roboto", "Source Sans Pro", Avenir, Helvetica, Arial, sans-serif;
698
721
  background-color: white;
699
722
  }
700
- .handle-input[data-v-e5db3d68] {
723
+ .handle-input[data-v-0887a495] {
701
724
  position: absolute;
702
725
  left: -8px;
703
726
  }
704
- .handle-output[data-v-e5db3d68] {
727
+ .handle-output[data-v-0887a495] {
705
728
  position: absolute;
706
729
  right: -8px;
707
730
  }
708
- .context-menu[data-v-e5db3d68] {
731
+ .context-menu[data-v-0887a495] {
709
732
  position: fixed;
710
733
  z-index: 10000;
711
734
  background-color: white;
@@ -715,7 +738,7 @@
715
738
  min-width: 120px;
716
739
  font-family: "Roboto", "Source Sans Pro", Avenir, Helvetica, Arial, sans-serif;
717
740
  }
718
- .context-menu-item[data-v-e5db3d68] {
741
+ .context-menu-item[data-v-0887a495] {
719
742
  padding: 8px 12px;
720
743
  display: flex;
721
744
  align-items: center;
@@ -725,13 +748,13 @@
725
748
  transition: background-color 0.2s;
726
749
  font-family: "Roboto", "Source Sans Pro", Avenir, Helvetica, Arial, sans-serif;
727
750
  }
728
- .context-menu-item[data-v-e5db3d68]:hover {
751
+ .context-menu-item[data-v-0887a495]:hover {
729
752
  background-color: #f5f5f5;
730
753
  }
731
- .context-menu-item svg[data-v-e5db3d68] {
754
+ .context-menu-item svg[data-v-0887a495] {
732
755
  color: #555;
733
756
  }
734
- .context-menu-item span[data-v-e5db3d68] {
757
+ .context-menu-item span[data-v-0887a495] {
735
758
  font-family: "Roboto", "Source Sans Pro", Avenir, Helvetica, Arial, sans-serif;
736
759
  }
737
760