Flowfile 0.5.3__py3-none-any.whl → 0.5.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.
- flowfile/__init__.py +16 -0
- flowfile/web/static/assets/{AdminView-49392a9a.js → AdminView-f9847d67.js} +1 -1
- flowfile/web/static/assets/{CloudConnectionView-36bcd6df.css → CloudConnectionView-cf85f943.css} +17 -17
- flowfile/web/static/assets/{CloudConnectionView-f13f202b.js → CloudConnectionView-faace55b.js} +4 -4
- flowfile/web/static/assets/{CloudStorageReader-0023d4a5.js → CloudStorageReader-d86ecaa7.js} +8 -8
- flowfile/web/static/assets/{CloudStorageWriter-8e781e11.js → CloudStorageWriter-0f4d9a44.js} +8 -8
- flowfile/web/static/assets/ColumnActionInput-c44b7aee.css +159 -0
- flowfile/web/static/assets/ColumnActionInput-f4189ae0.js +330 -0
- flowfile/web/static/assets/{ColumnSelector-8ad68ea9.js → ColumnSelector-e66b33da.js} +1 -1
- flowfile/web/static/assets/ContextMenu-49463352.js +9 -0
- flowfile/web/static/assets/ContextMenu-dd5f3f25.js +9 -0
- flowfile/web/static/assets/ContextMenu-f709b884.js +9 -0
- flowfile/web/static/assets/ContextMenu.vue_vue_type_script_setup_true_lang-a1bd6314.js +59 -0
- flowfile/web/static/assets/{CrossJoin-03df6938.js → CrossJoin-24694b8f.js} +9 -9
- flowfile/web/static/assets/{CustomNode-8479239b.js → CustomNode-569d45ff.js} +27 -20
- flowfile/web/static/assets/CustomNode-edb9b939.css +42 -0
- flowfile/web/static/assets/{DatabaseConnectionSettings-e91df89a.css → DatabaseConnectionSettings-c20a1e16.css} +22 -20
- flowfile/web/static/assets/{DatabaseConnectionSettings-869e3efd.js → DatabaseConnectionSettings-cfc08938.js} +4 -4
- flowfile/web/static/assets/{DatabaseReader-36898a00.css → DatabaseReader-5bf8c75b.css} +39 -44
- flowfile/web/static/assets/{DatabaseReader-c58b9552.js → DatabaseReader-701feabb.js} +13 -13
- flowfile/web/static/assets/{DatabaseView-d26a9140.js → DatabaseView-0482e5b5.js} +2 -2
- flowfile/web/static/assets/{DatabaseWriter-4d05ddc7.js → DatabaseWriter-16721989.js} +12 -12
- flowfile/web/static/assets/{DatabaseWriter-217a99f1.css → DatabaseWriter-bdcf2c8b.css} +27 -25
- flowfile/web/static/assets/{DesignerView-a6d0ee84.css → DesignerView-49abb835.css} +391 -339
- flowfile/web/static/assets/{DesignerView-e6f5c0e8.js → DesignerView-f64749fb.js} +220 -118
- flowfile/web/static/assets/{DocumentationView-2e78ef1b.js → DocumentationView-61bd2990.js} +3 -3
- flowfile/web/static/assets/{DocumentationView-fd46c656.css → DocumentationView-9ea6e871.css} +9 -9
- flowfile/web/static/assets/{ExploreData-7b54caca.js → ExploreData-e2735b13.js} +7 -7
- flowfile/web/static/assets/{ExternalSource-3fa399b2.js → ExternalSource-2535c3b2.js} +9 -9
- flowfile/web/static/assets/{ExternalSource-47ab05a3.css → ExternalSource-7ac7373f.css} +17 -17
- flowfile/web/static/assets/{Filter-8cbbdbf3.js → Filter-2cdbc93c.js} +9 -9
- flowfile/web/static/assets/{Formula-aac42b1e.js → Formula-fcda3c2c.js} +9 -9
- flowfile/web/static/assets/{FuzzyMatch-cd9bbfca.js → FuzzyMatch-f8d3b7d3.js} +10 -10
- flowfile/web/static/assets/{GraphSolver-c24dec17.css → GraphSolver-4b4d7db9.css} +4 -4
- flowfile/web/static/assets/{GraphSolver-c7e6780e.js → GraphSolver-72eaa695.js} +11 -11
- flowfile/web/static/assets/GroupBy-5792782d.css +9 -0
- flowfile/web/static/assets/{GroupBy-93c5d22b.js → GroupBy-8aa0598b.js} +9 -9
- flowfile/web/static/assets/{Join-a19b2de2.js → Join-e40f0ffa.js} +10 -10
- flowfile/web/static/assets/{LoginView-0df4ed0a.js → LoginView-5111c9ae.js} +1 -1
- flowfile/web/static/assets/{ManualInput-8d3374b2.js → ManualInput-9b6f3224.js} +6 -6
- flowfile/web/static/assets/{MultiSelect-ad1b6243.js → MultiSelect-ef28e19e.js} +2 -2
- flowfile/web/static/assets/{MultiSelect.vue_vue_type_script_setup_true_lang-e278950d.js → MultiSelect.vue_vue_type_script_setup_true_lang-83b3bbfd.js} +1 -1
- flowfile/web/static/assets/{NodeDesigner-5f53be3f.css → NodeDesigner-94cd4dd3.css} +190 -190
- flowfile/web/static/assets/{NodeDesigner-40b647c9.js → NodeDesigner-d2b7ee2b.js} +171 -69
- flowfile/web/static/assets/{NumericInput-7100234c.js → NumericInput-1d789794.js} +2 -2
- flowfile/web/static/assets/{NumericInput.vue_vue_type_script_setup_true_lang-5130219f.js → NumericInput.vue_vue_type_script_setup_true_lang-7775f83e.js} +1 -1
- flowfile/web/static/assets/{Output-35e97000.css → Output-692dd25d.css} +10 -10
- flowfile/web/static/assets/{Output-f5efd2aa.js → Output-cefef801.js} +13 -12
- flowfile/web/static/assets/{Pivot-d981d23c.js → Pivot-bab1b75b.js} +10 -10
- flowfile/web/static/assets/{PivotValidation-63de1f73.js → PivotValidation-e7941f91.js} +1 -1
- flowfile/web/static/assets/{PivotValidation-39386e95.js → PivotValidation-fba09336.js} +1 -1
- flowfile/web/static/assets/{PolarsCode-f9d69217.js → PolarsCode-740e40fa.js} +7 -7
- flowfile/web/static/assets/{PopOver-b22f049e.js → PopOver-862d7e28.js} +1 -1
- flowfile/web/static/assets/{Read-aec2e377.js → Read-225cc63f.js} +15 -14
- flowfile/web/static/assets/{Read-36e7bd51.css → Read-90f366bc.css} +13 -13
- flowfile/web/static/assets/{RecordCount-78ed6845.js → RecordCount-ffc71eca.js} +6 -6
- flowfile/web/static/assets/{RecordId-2156e890.js → RecordId-a70bb8df.js} +9 -9
- flowfile/web/static/assets/{SQLQueryComponent-48c72f5b.js → SQLQueryComponent-15a421f5.js} +3 -3
- flowfile/web/static/assets/SQLQueryComponent-edb90b98.css +29 -0
- flowfile/web/static/assets/{Sample-1352ca74.js → Sample-6c26afc7.js} +6 -6
- flowfile/web/static/assets/{SecretSelector-22b5ff89.js → SecretSelector-ceed9496.js} +2 -2
- flowfile/web/static/assets/{SecretsView-17df66ee.js → SecretsView-214d255a.js} +2 -2
- flowfile/web/static/assets/{Select-0aee4c54.js → Select-8fc29999.js} +9 -9
- flowfile/web/static/assets/{SettingsSection-f2002a6d.js → SettingsSection-3f70e4c3.js} +1 -1
- flowfile/web/static/assets/{SettingsSection-0784e157.js → SettingsSection-83090218.js} +1 -1
- flowfile/web/static/assets/{SettingsSection-cd341bb6.js → SettingsSection-9f0d1725.js} +1 -1
- flowfile/web/static/assets/SetupView-3fa0aa03.js +160 -0
- flowfile/web/static/assets/SetupView-e2da3442.css +230 -0
- flowfile/web/static/assets/{SingleSelect-460cc0ea.js → SingleSelect-a4a568cb.js} +2 -2
- flowfile/web/static/assets/{SingleSelect.vue_vue_type_script_setup_true_lang-30741bb2.js → SingleSelect.vue_vue_type_script_setup_true_lang-c8ebdd33.js} +1 -1
- flowfile/web/static/assets/{SliderInput-5d926864.js → SliderInput-be533e71.js} +1 -1
- flowfile/web/static/assets/{Sort-3cdc971b.js → Sort-154dad81.js} +9 -9
- flowfile/web/static/assets/Sort-4abb7fae.css +9 -0
- flowfile/web/static/assets/{TextInput-a2d0bfbd.js → TextInput-454e2bda.js} +2 -2
- flowfile/web/static/assets/{TextInput.vue_vue_type_script_setup_true_lang-abad1ca2.js → TextInput.vue_vue_type_script_setup_true_lang-e86510d0.js} +1 -1
- flowfile/web/static/assets/{TextToRows-918945f7.js → TextToRows-ea73433d.js} +9 -9
- flowfile/web/static/assets/{ToggleSwitch-f0ef5196.js → ToggleSwitch-9d7b30f1.js} +2 -2
- flowfile/web/static/assets/{ToggleSwitch.vue_vue_type_script_setup_true_lang-5605c793.js → ToggleSwitch.vue_vue_type_script_setup_true_lang-00f2580e.js} +1 -1
- flowfile/web/static/assets/{UnavailableFields-54d2f518.css → UnavailableFields-394a1f78.css} +13 -13
- flowfile/web/static/assets/{UnavailableFields-bdad6144.js → UnavailableFields-b72a2c72.js} +4 -4
- flowfile/web/static/assets/{Union-e8ab8c86.js → Union-1e44f263.js} +6 -6
- flowfile/web/static/assets/Unique-2b705521.css +3 -0
- flowfile/web/static/assets/{Unique-8cd4f976.js → Unique-a3bc6d0a.js} +12 -12
- flowfile/web/static/assets/{Unpivot-710a2948.css → Unpivot-b6ad6427.css} +6 -6
- flowfile/web/static/assets/{Unpivot-8da14095.js → Unpivot-e27935fc.js} +11 -11
- flowfile/web/static/assets/{UnpivotValidation-6f7d89ff.js → UnpivotValidation-72497680.js} +1 -1
- flowfile/web/static/assets/{VueGraphicWalker-3fb312e1.js → VueGraphicWalker-d9ab70a3.js} +1 -1
- flowfile/web/static/assets/{api-24483f0d.js → api-a2102880.js} +1 -1
- flowfile/web/static/assets/{api-8b81fa73.js → api-f75042b0.js} +1 -1
- flowfile/web/static/assets/{dropDown-3d8dc5fa.css → dropDown-1d6acbd9.css} +26 -26
- flowfile/web/static/assets/{dropDown-ac0fda9d.js → dropDown-2798a109.js} +3 -3
- flowfile/web/static/assets/{fullEditor-5497a84a.js → fullEditor-cf7d7d93.js} +3 -3
- flowfile/web/static/assets/{fullEditor-a0be62b3.css → fullEditor-fe9f7e18.css} +3 -3
- flowfile/web/static/assets/{genericNodeSettings-99014e1d.js → genericNodeSettings-14eac1c3.js} +3 -3
- flowfile/web/static/assets/{index-fb6493ae.js → index-387a6f18.js} +175 -86
- flowfile/web/static/assets/{index-07dda503.js → index-6b367bb5.js} +1 -1
- flowfile/web/static/assets/{index-e6289dd0.css → index-e96ab018.css} +249 -10
- flowfile/web/static/assets/{index-3ba44389.js → index-f0a6e5a5.js} +2 -2
- flowfile/web/static/assets/nodeInput-ed2ae8d7.js +2 -0
- flowfile/web/static/assets/{outputCsv-8f8ba42d.js → outputCsv-3c1757e8.js} +1 -1
- flowfile/web/static/assets/{outputExcel-393f4fef.js → outputExcel-686e1f48.js} +1 -1
- flowfile/web/static/assets/{outputParquet-07c81f65.js → outputParquet-df28faa7.js} +1 -1
- flowfile/web/static/assets/{readCsv-07f6d9ad.js → readCsv-e37eee21.js} +1 -1
- flowfile/web/static/assets/{readExcel-ed69bc8f.js → readExcel-a13f14bb.js} +3 -3
- flowfile/web/static/assets/{readParquet-e3ed4528.js → readParquet-344cf746.js} +1 -1
- flowfile/web/static/assets/{secrets.api-002e7d7e.js → secrets.api-ae198c5c.js} +1 -1
- flowfile/web/static/assets/{selectDynamic-80b92899.js → selectDynamic-6b4b0767.js} +3 -3
- flowfile/web/static/assets/{vue-codemirror.esm-0965f39f.js → vue-codemirror.esm-31ba0e0b.js} +1 -1
- flowfile/web/static/assets/{vue-content-loader.es-c506ad97.js → vue-content-loader.es-4469c8ff.js} +1 -1
- flowfile/web/static/index.html +2 -2
- {flowfile-0.5.3.dist-info → flowfile-0.5.4.dist-info}/METADATA +2 -2
- {flowfile-0.5.3.dist-info → flowfile-0.5.4.dist-info}/RECORD +134 -129
- flowfile_core/auth/secrets.py +56 -13
- flowfile_core/fileExplorer/funcs.py +26 -4
- flowfile_core/flowfile/code_generator/__init__.py +11 -0
- flowfile_core/flowfile/code_generator/code_generator.py +347 -2
- flowfile_core/flowfile/flow_data_engine/flow_data_engine.py +13 -1
- flowfile_core/flowfile/flow_graph.py +2 -0
- flowfile_core/flowfile/flow_node/flow_node.py +52 -28
- flowfile_core/flowfile/node_designer/__init__.py +4 -0
- flowfile_core/flowfile/node_designer/ui_components.py +144 -1
- flowfile_core/routes/public.py +43 -1
- flowfile_core/schemas/cloud_storage_schemas.py +39 -15
- flowfile_core/secret_manager/secret_manager.py +107 -6
- flowfile_frame/__init__.py +11 -0
- flowfile_frame/database/__init__.py +36 -0
- flowfile_frame/database/connection_manager.py +205 -0
- flowfile_frame/database/frame_helpers.py +249 -0
- flowfile_worker/configs.py +31 -15
- flowfile_worker/secrets.py +105 -15
- flowfile_worker/spawner.py +10 -6
- flowfile/web/static/assets/ContextMenu-26d4dd27.css +0 -26
- flowfile/web/static/assets/ContextMenu-31ee57f0.js +0 -41
- flowfile/web/static/assets/ContextMenu-69a74055.js +0 -41
- flowfile/web/static/assets/ContextMenu-8e2051c6.js +0 -41
- flowfile/web/static/assets/ContextMenu-8ec1729e.css +0 -26
- flowfile/web/static/assets/ContextMenu-9b310c60.css +0 -26
- flowfile/web/static/assets/CustomNode-59e99a86.css +0 -32
- flowfile/web/static/assets/GroupBy-be7ac0bf.css +0 -51
- flowfile/web/static/assets/SQLQueryComponent-1c2f26b4.css +0 -27
- flowfile/web/static/assets/Sort-8a871341.css +0 -51
- flowfile/web/static/assets/Unique-9fb2f567.css +0 -51
- flowfile/web/static/assets/nodeInput-0eb13f1a.js +0 -2
- {flowfile-0.5.3.dist-info → flowfile-0.5.4.dist-info}/WHEEL +0 -0
- {flowfile-0.5.3.dist-info → flowfile-0.5.4.dist-info}/entry_points.txt +0 -0
- {flowfile-0.5.3.dist-info → flowfile-0.5.4.dist-info}/licenses/LICENSE +0 -0
|
@@ -8200,12 +8200,70 @@ readers do not read off random characters that represent icons */
|
|
|
8200
8200
|
/* Status colors */
|
|
8201
8201
|
--color-success: #10b981;
|
|
8202
8202
|
--color-success-light: #d1fae5;
|
|
8203
|
+
--color-success-hover: #059669;
|
|
8203
8204
|
--color-danger: #ef4444;
|
|
8204
8205
|
--color-danger-light: #fee2e2;
|
|
8206
|
+
--color-danger-hover: #dc2626;
|
|
8207
|
+
--color-danger-dark: #b91c1c;
|
|
8205
8208
|
--color-warning: #f59e0b;
|
|
8206
8209
|
--color-warning-light: #fef3c7;
|
|
8210
|
+
--color-warning-hover: #d97706;
|
|
8211
|
+
--color-warning-dark: #92400e;
|
|
8212
|
+
--color-warning-darker: #78350f;
|
|
8207
8213
|
--color-info: #3b82f6;
|
|
8208
8214
|
--color-info-light: #dbeafe;
|
|
8215
|
+
--color-info-hover: #2563eb;
|
|
8216
|
+
|
|
8217
|
+
/* Button primary colors (interactive elements) */
|
|
8218
|
+
--color-button-primary: #4a6cf7;
|
|
8219
|
+
--color-button-primary-hover: #3d5bd9;
|
|
8220
|
+
--color-button-secondary: #3498db;
|
|
8221
|
+
--color-button-secondary-hover: #2980b9;
|
|
8222
|
+
--color-button-secondary-light: #93c5fd;
|
|
8223
|
+
|
|
8224
|
+
/* Code editor colors */
|
|
8225
|
+
--color-code-bg: #282c34;
|
|
8226
|
+
--color-code-text: #abb2bf;
|
|
8227
|
+
--color-code-keyword: #f08d49;
|
|
8228
|
+
--color-code-string: #8ec07c;
|
|
8229
|
+
--color-code-function: #b8bb26;
|
|
8230
|
+
|
|
8231
|
+
/* Overlay/Modal colors */
|
|
8232
|
+
--color-overlay: rgba(0, 0, 0, 0.5);
|
|
8233
|
+
--color-overlay-dark: rgba(0, 0, 0, 0.7);
|
|
8234
|
+
|
|
8235
|
+
/* Brand provider colors */
|
|
8236
|
+
--color-brand-aws: #ff9900;
|
|
8237
|
+
--color-brand-microsoft: #0078d4;
|
|
8238
|
+
|
|
8239
|
+
/* Gradient decorative colors */
|
|
8240
|
+
--color-gradient-purple-start: #667eea;
|
|
8241
|
+
--color-gradient-purple-end: #764ba2;
|
|
8242
|
+
--color-gradient-canvas-1: #6f3381;
|
|
8243
|
+
--color-gradient-canvas-2: #81c7d4;
|
|
8244
|
+
--color-gradient-canvas-3: #fedfe1;
|
|
8245
|
+
--color-gradient-canvas-4: #fffffb;
|
|
8246
|
+
|
|
8247
|
+
/* Focus ring colors */
|
|
8248
|
+
--color-focus-ring: rgba(44, 116, 179, 0.1);
|
|
8249
|
+
--color-focus-ring-error: rgba(239, 68, 68, 0.1);
|
|
8250
|
+
--color-focus-ring-primary: rgba(0, 123, 255, 0.5);
|
|
8251
|
+
--color-focus-ring-accent: rgba(8, 145, 178, 0.15);
|
|
8252
|
+
--color-focus-ring-accent-strong: rgba(8, 145, 178, 0.25);
|
|
8253
|
+
--color-focus-ring-button: rgba(74, 108, 247, 0.1);
|
|
8254
|
+
--color-focus-ring-secondary: rgba(52, 152, 219, 0.3);
|
|
8255
|
+
--color-focus-ring-purple: rgba(102, 126, 234, 0.4);
|
|
8256
|
+
--color-focus-ring-purple-light: rgba(102, 126, 234, 0.1);
|
|
8257
|
+
|
|
8258
|
+
/* Utility transparent colors */
|
|
8259
|
+
--color-white-alpha-20: rgba(255, 255, 255, 0.2);
|
|
8260
|
+
--color-white-alpha-40: rgba(255, 255, 255, 0.4);
|
|
8261
|
+
--color-black-alpha-10: rgba(0, 0, 0, 0.1);
|
|
8262
|
+
--color-black-alpha-20: rgba(0, 0, 0, 0.2);
|
|
8263
|
+
|
|
8264
|
+
/* Node/Component specific */
|
|
8265
|
+
--color-node-error-bg: #ffcccc;
|
|
8266
|
+
--color-file-browser-bg: rgb(92, 92, 92);
|
|
8209
8267
|
|
|
8210
8268
|
/* Gray scale */
|
|
8211
8269
|
--color-gray-50: #f9fafb;
|
|
@@ -8298,6 +8356,9 @@ readers do not read off random characters that represent icons */
|
|
|
8298
8356
|
--z-index-popover: 1075;
|
|
8299
8357
|
--z-index-tooltip: 1100;
|
|
8300
8358
|
--z-index-notification: 1200;
|
|
8359
|
+
/* Canvas-specific z-index values - must be high to appear above canvas panels */
|
|
8360
|
+
--z-index-canvas-dropdown: 100001; /* Above DraggableItem panels (100000) */
|
|
8361
|
+
--z-index-canvas-context-menu: 100002; /* Above dropdowns */
|
|
8301
8362
|
|
|
8302
8363
|
/* ========== Component-Specific Tokens ========== */
|
|
8303
8364
|
/* Table */
|
|
@@ -8589,8 +8650,8 @@ readers do not read off random characters that represent icons */
|
|
|
8589
8650
|
}
|
|
8590
8651
|
|
|
8591
8652
|
.btn-danger-filled:hover:not(:disabled) {
|
|
8592
|
-
background-color:
|
|
8593
|
-
border-color:
|
|
8653
|
+
background-color: var(--color-danger-hover);
|
|
8654
|
+
border-color: var(--color-danger-hover);
|
|
8594
8655
|
box-shadow: var(--shadow-sm);
|
|
8595
8656
|
}
|
|
8596
8657
|
|
|
@@ -8601,8 +8662,8 @@ readers do not read off random characters that represent icons */
|
|
|
8601
8662
|
}
|
|
8602
8663
|
|
|
8603
8664
|
.btn-success:hover:not(:disabled) {
|
|
8604
|
-
background-color:
|
|
8605
|
-
border-color:
|
|
8665
|
+
background-color: var(--color-success-hover);
|
|
8666
|
+
border-color: var(--color-success-hover);
|
|
8606
8667
|
box-shadow: var(--shadow-sm);
|
|
8607
8668
|
}
|
|
8608
8669
|
|
|
@@ -9096,7 +9157,7 @@ readers do not read off random characters that represent icons */
|
|
|
9096
9157
|
|
|
9097
9158
|
.form-input:focus {
|
|
9098
9159
|
border-color: var(--input-border-focus);
|
|
9099
|
-
box-shadow: 0 0 0 3px
|
|
9160
|
+
box-shadow: 0 0 0 3px var(--color-focus-ring);
|
|
9100
9161
|
}
|
|
9101
9162
|
|
|
9102
9163
|
.form-input:disabled {
|
|
@@ -9185,7 +9246,7 @@ readers do not read off random characters that represent icons */
|
|
|
9185
9246
|
}
|
|
9186
9247
|
|
|
9187
9248
|
.form-input.is-error:focus {
|
|
9188
|
-
box-shadow: 0 0 0 3px
|
|
9249
|
+
box-shadow: 0 0 0 3px var(--color-focus-ring-error);
|
|
9189
9250
|
}
|
|
9190
9251
|
|
|
9191
9252
|
.form-error {
|
|
@@ -9205,7 +9266,7 @@ readers do not read off random characters that represent icons */
|
|
|
9205
9266
|
.modal-overlay {
|
|
9206
9267
|
position: fixed;
|
|
9207
9268
|
inset: 0;
|
|
9208
|
-
background-color:
|
|
9269
|
+
background-color: var(--color-overlay);
|
|
9209
9270
|
backdrop-filter: blur(2px);
|
|
9210
9271
|
display: flex;
|
|
9211
9272
|
justify-content: center;
|
|
@@ -9526,6 +9587,163 @@ readers do not read off random characters that represent icons */
|
|
|
9526
9587
|
visibility: visible;
|
|
9527
9588
|
}
|
|
9528
9589
|
|
|
9590
|
+
/* ========== High Z-Index Dialogs ========== */
|
|
9591
|
+
|
|
9592
|
+
/* Ensure dialogs appear above all other UI elements (draggable items, context menus, etc.) */
|
|
9593
|
+
|
|
9594
|
+
.el-overlay:has(.high-z-index-dialog),
|
|
9595
|
+
.el-overlay:has(.overwrite-confirm-dialog) {
|
|
9596
|
+
z-index: 200000 !important;
|
|
9597
|
+
}
|
|
9598
|
+
|
|
9599
|
+
.high-z-index-dialog,
|
|
9600
|
+
.overwrite-confirm-dialog {
|
|
9601
|
+
z-index: 200001 !important;
|
|
9602
|
+
}
|
|
9603
|
+
|
|
9604
|
+
/* styles/components/_context-menu.css - Centralized Context Menu Styles */
|
|
9605
|
+
|
|
9606
|
+
/* Base context menu container */
|
|
9607
|
+
|
|
9608
|
+
.context-menu {
|
|
9609
|
+
position: fixed;
|
|
9610
|
+
min-width: 120px;
|
|
9611
|
+
background-color: var(--color-background-primary);
|
|
9612
|
+
border: 1px solid var(--color-border-primary);
|
|
9613
|
+
border-radius: var(--border-radius-md);
|
|
9614
|
+
box-shadow: var(--shadow-lg);
|
|
9615
|
+
z-index: var(--z-index-canvas-context-menu, 100002);
|
|
9616
|
+
overflow: hidden;
|
|
9617
|
+
user-select: none;
|
|
9618
|
+
}
|
|
9619
|
+
|
|
9620
|
+
/* Context menu with header variant */
|
|
9621
|
+
|
|
9622
|
+
.context-menu-header {
|
|
9623
|
+
padding: var(--spacing-2) var(--spacing-3);
|
|
9624
|
+
font-weight: var(--font-weight-semibold);
|
|
9625
|
+
background-color: var(--color-background-secondary);
|
|
9626
|
+
border-bottom: 1px solid var(--color-border-primary);
|
|
9627
|
+
font-size: var(--font-size-sm);
|
|
9628
|
+
color: var(--color-text-primary);
|
|
9629
|
+
}
|
|
9630
|
+
|
|
9631
|
+
/* Container for menu items */
|
|
9632
|
+
|
|
9633
|
+
.context-menu-items {
|
|
9634
|
+
max-height: 300px;
|
|
9635
|
+
overflow-y: auto;
|
|
9636
|
+
}
|
|
9637
|
+
|
|
9638
|
+
/* List-based context menu (ul/li pattern) */
|
|
9639
|
+
|
|
9640
|
+
.context-menu ul {
|
|
9641
|
+
list-style: none;
|
|
9642
|
+
padding: 0;
|
|
9643
|
+
margin: 0;
|
|
9644
|
+
}
|
|
9645
|
+
|
|
9646
|
+
.context-menu li {
|
|
9647
|
+
padding: var(--spacing-2) var(--spacing-4);
|
|
9648
|
+
cursor: pointer;
|
|
9649
|
+
font-size: var(--font-size-sm);
|
|
9650
|
+
color: var(--color-text-primary);
|
|
9651
|
+
transition: background-color var(--transition-fast);
|
|
9652
|
+
}
|
|
9653
|
+
|
|
9654
|
+
.context-menu li:hover:not(.disabled) {
|
|
9655
|
+
background-color: var(--color-background-tertiary);
|
|
9656
|
+
}
|
|
9657
|
+
|
|
9658
|
+
.context-menu li.disabled {
|
|
9659
|
+
color: var(--color-text-muted);
|
|
9660
|
+
cursor: not-allowed;
|
|
9661
|
+
}
|
|
9662
|
+
|
|
9663
|
+
/* Button-based context menu (button pattern) */
|
|
9664
|
+
|
|
9665
|
+
.context-menu button {
|
|
9666
|
+
display: block;
|
|
9667
|
+
width: 100%;
|
|
9668
|
+
padding: var(--spacing-2) var(--spacing-3);
|
|
9669
|
+
background: none;
|
|
9670
|
+
border: none;
|
|
9671
|
+
text-align: left;
|
|
9672
|
+
cursor: pointer;
|
|
9673
|
+
font-size: var(--font-size-sm);
|
|
9674
|
+
color: var(--color-text-primary);
|
|
9675
|
+
transition: background-color var(--transition-fast);
|
|
9676
|
+
}
|
|
9677
|
+
|
|
9678
|
+
.context-menu button:hover {
|
|
9679
|
+
background-color: var(--color-background-tertiary);
|
|
9680
|
+
}
|
|
9681
|
+
|
|
9682
|
+
.context-menu button:disabled {
|
|
9683
|
+
color: var(--color-text-muted);
|
|
9684
|
+
cursor: not-allowed;
|
|
9685
|
+
}
|
|
9686
|
+
|
|
9687
|
+
.context-menu button:disabled:hover {
|
|
9688
|
+
background-color: transparent;
|
|
9689
|
+
}
|
|
9690
|
+
|
|
9691
|
+
/* Individual menu item (div-based pattern) */
|
|
9692
|
+
|
|
9693
|
+
.context-menu-item {
|
|
9694
|
+
display: flex;
|
|
9695
|
+
align-items: center;
|
|
9696
|
+
padding: var(--spacing-2) var(--spacing-3);
|
|
9697
|
+
cursor: pointer;
|
|
9698
|
+
font-size: var(--font-size-sm);
|
|
9699
|
+
color: var(--color-text-primary);
|
|
9700
|
+
transition: background-color var(--transition-fast);
|
|
9701
|
+
}
|
|
9702
|
+
|
|
9703
|
+
.context-menu-item:hover {
|
|
9704
|
+
background-color: var(--color-background-tertiary);
|
|
9705
|
+
}
|
|
9706
|
+
|
|
9707
|
+
.context-menu-item.disabled {
|
|
9708
|
+
color: var(--color-text-muted);
|
|
9709
|
+
cursor: not-allowed;
|
|
9710
|
+
}
|
|
9711
|
+
|
|
9712
|
+
.context-menu-item.disabled:hover {
|
|
9713
|
+
background-color: transparent;
|
|
9714
|
+
}
|
|
9715
|
+
|
|
9716
|
+
/* Icon support for menu items */
|
|
9717
|
+
|
|
9718
|
+
.context-menu-icon {
|
|
9719
|
+
margin-right: var(--spacing-2);
|
|
9720
|
+
width: 20px;
|
|
9721
|
+
text-align: center;
|
|
9722
|
+
color: var(--color-text-secondary);
|
|
9723
|
+
}
|
|
9724
|
+
|
|
9725
|
+
/* Separator/divider between menu sections */
|
|
9726
|
+
|
|
9727
|
+
.context-menu-divider {
|
|
9728
|
+
height: 1px;
|
|
9729
|
+
margin: var(--spacing-1) 0;
|
|
9730
|
+
background-color: var(--color-border-primary);
|
|
9731
|
+
}
|
|
9732
|
+
|
|
9733
|
+
/* Danger/destructive action styling */
|
|
9734
|
+
|
|
9735
|
+
.context-menu-item.danger,
|
|
9736
|
+
.context-menu button.danger,
|
|
9737
|
+
.context-menu li.danger {
|
|
9738
|
+
color: var(--color-danger);
|
|
9739
|
+
}
|
|
9740
|
+
|
|
9741
|
+
.context-menu-item.danger:hover,
|
|
9742
|
+
.context-menu button.danger:hover,
|
|
9743
|
+
.context-menu li.danger:hover:not(.disabled) {
|
|
9744
|
+
background-color: var(--color-danger-light);
|
|
9745
|
+
}
|
|
9746
|
+
|
|
9529
9747
|
.p-default {
|
|
9530
9748
|
margin: var(--spacing-xs);
|
|
9531
9749
|
margin-bottom: var(--spacing-sm);
|
|
@@ -10083,6 +10301,27 @@ button {
|
|
|
10083
10301
|
color: var(--color-text-primary);
|
|
10084
10302
|
}
|
|
10085
10303
|
|
|
10304
|
+
/* ========== Element Plus Popper Z-Index Fix ========== */
|
|
10305
|
+
|
|
10306
|
+
/* Fix for el-select dropdowns appearing behind dialogs and canvas elements.
|
|
10307
|
+
Element Plus poppers are teleported to body and need high z-index to appear above:
|
|
10308
|
+
- Canvas panels (DraggableItem panels at z-index 100000)
|
|
10309
|
+
- High z-index dialogs (at z-index 200001)
|
|
10310
|
+
Set to 200010 to ensure dropdowns always appear above modal dialogs */
|
|
10311
|
+
|
|
10312
|
+
.el-popper,
|
|
10313
|
+
.el-select-dropdown,
|
|
10314
|
+
.el-select__popper,
|
|
10315
|
+
.el-autocomplete-suggestion,
|
|
10316
|
+
.el-cascader__dropdown,
|
|
10317
|
+
.el-color-dropdown,
|
|
10318
|
+
.el-date-editor .el-picker-panel,
|
|
10319
|
+
.el-picker__popper,
|
|
10320
|
+
.el-tooltip__popper,
|
|
10321
|
+
.el-popover.el-popper {
|
|
10322
|
+
z-index: 200010 !important;
|
|
10323
|
+
}
|
|
10324
|
+
|
|
10086
10325
|
/* ========== CodeMirror Dark Mode Styling ========== */
|
|
10087
10326
|
|
|
10088
10327
|
/* These styles must be global because CodeMirror tooltips are rendered as portals */
|
|
@@ -10118,11 +10357,11 @@ button {
|
|
|
10118
10357
|
}
|
|
10119
10358
|
|
|
10120
10359
|
.cm-editor .cm-selectionBackground {
|
|
10121
|
-
background-color:
|
|
10360
|
+
background-color: var(--color-focus-ring-accent) !important;
|
|
10122
10361
|
}
|
|
10123
10362
|
|
|
10124
10363
|
.cm-editor.cm-focused .cm-selectionBackground {
|
|
10125
|
-
background-color:
|
|
10364
|
+
background-color: var(--color-focus-ring-accent-strong) !important;
|
|
10126
10365
|
}
|
|
10127
10366
|
|
|
10128
10367
|
/* Placeholder styling */
|
|
@@ -10160,7 +10399,7 @@ button {
|
|
|
10160
10399
|
.cm-tooltip-autocomplete > ul > li[aria-selected],
|
|
10161
10400
|
.cm-tooltip-autocomplete > ul > li[aria-selected="true"] {
|
|
10162
10401
|
background-color: var(--color-accent) !important;
|
|
10163
|
-
color:
|
|
10402
|
+
color: var(--color-text-inverse) !important;
|
|
10164
10403
|
}
|
|
10165
10404
|
|
|
10166
10405
|
/* Completion label and detail */
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { e as Parser, N as NodeSet, f as NodeType, D as DefaultBufferLength, g as NodeProp, h as Tree, I as IterMode, s as styleTags, t as tags, L as LanguageSupport, j as syntaxTree, l as ifNotIn, m as LRLanguage, n as indentNodeProp, o as delimitedIndent, p as foldNodeProp, q as foldInside, r as completeFromList, u as NodeWeakMap, v as snippetCompletion, H as HighlightStyle, w as syntaxHighlighting, E as EditorView } from "./vue-codemirror.esm-
|
|
1
|
+
import { am as flowfileCorebaseURL, k as axios } from "./index-387a6f18.js";
|
|
2
|
+
import { e as Parser, N as NodeSet, f as NodeType, D as DefaultBufferLength, g as NodeProp, h as Tree, I as IterMode, s as styleTags, t as tags, L as LanguageSupport, j as syntaxTree, l as ifNotIn, m as LRLanguage, n as indentNodeProp, o as delimitedIndent, p as foldNodeProp, q as foldInside, r as completeFromList, u as NodeWeakMap, v as snippetCompletion, H as HighlightStyle, w as syntaxHighlighting, E as EditorView } from "./vue-codemirror.esm-31ba0e0b.js";
|
|
3
3
|
const __vite_glob_0_0 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACkAAAApCAYAAACoYAD2AAACO0lEQVR4nN2Yz0vbYBjHv29NbZUy0B43QUG9zNPEHUT05NCTiu6o0NbDLk5a/RMERaonkSrO8zw4alFQtBsMBG96kJ5EUTcRh78QRGvsu4O8MSk1fdMmaeLnlL7p++ST53kfkjeADSCKX5GI4Ci+XQCl3uwzKXUkyYD4ZWjXKDnpUuxA+BbeBEij9hD0SgwMl+kplY5McoLmHEVMNYi06E/eNs4iEQf/zjEyonDRR9IAxMCQ5OYopIgawlz4gR1bVhKECJgPvwOsLAlAoIgAFpdMgXgAQFD704M/ZI4NAOf85IvnLJ1Jhi0kVcvNUCtFvvAsKVtk0haSXOU2s8sz8XoyqWfjsKpMJ3bQUVmNt6WerHNMzSQT/ByPYXDrJyq/z+Li/i7rPK5M6gET7NqIYvloXxovd7mzzjW1cdrXFrHx91BzXNPKnS6Y1HDjhjYOy1TnelQp6Aum7QDVMSyTTLAnHsPK8fMaTPqCIESLokGScsGlwz1pPBdBgLPciR4fd8CaN0+72871qDKD/pCmEsvhkmQX5qVtdRHxE2WT5CoI6Ng4/to6zDR9wlRiWymosUkyoduaHG1oBgAEt35JY7muwXR0eeJ4BCfKXW78Pn36iDH+sQXBuno9QgPglIy1dqme97pLAAA752eGvNZxSbZXVHEF+/r+Q14yL2GL90lbSKqW28hdohYsnUkCeglYXPKx2NkHyCQpJT8Kp5MJmkTv4A0gk3zsD3WnQMYKJyWHXouBYVehLV4f/wHit6c8llKODwAAAABJRU5ErkJggg==";
|
|
4
4
|
const __vite_glob_0_1 = "/assets/airbyte-292aa232.png";
|
|
5
5
|
const __vite_glob_0_2 = "/assets/cloud_storage_reader-aa1415d6.png";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { d as defineComponent, r as ref,
|
|
1
|
+
import { d as defineComponent, r as ref, C as watch, o as openBlock, c as createElementBlock, a as createBaseVNode, p as createVNode, q as withCtx, G as Fragment, H as renderList, y as createBlock, x as unref, ay as ElOption, az as ElSelect, g as _export_sfc } from "./index-387a6f18.js";
|
|
2
2
|
const _hoisted_1 = { class: "csv-table-settings" };
|
|
3
3
|
const _hoisted_2 = { class: "input-group" };
|
|
4
4
|
const _hoisted_3 = { class: "input-group" };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { d as defineComponent, r as ref,
|
|
1
|
+
import { d as defineComponent, r as ref, C as watch, m as resolveComponent, o as openBlock, c as createElementBlock, a as createBaseVNode, p as createVNode, e as createCommentVNode, g as _export_sfc } from "./index-387a6f18.js";
|
|
2
2
|
const _hoisted_1 = { class: "excel-table-settings" };
|
|
3
3
|
const _hoisted_2 = { class: "mandatory-section" };
|
|
4
4
|
const _hoisted_3 = {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { d as defineComponent, r as ref,
|
|
1
|
+
import { d as defineComponent, r as ref, C as watch, o as openBlock, c as createElementBlock, g as _export_sfc } from "./index-387a6f18.js";
|
|
2
2
|
const _hoisted_1 = { class: "parquet-table-settings" };
|
|
3
3
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
4
4
|
__name: "outputParquet",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { d as defineComponent, r as ref,
|
|
1
|
+
import { d as defineComponent, r as ref, C as watch, m as resolveComponent, o as openBlock, c as createElementBlock, a as createBaseVNode, p as createVNode, q as withCtx, G as Fragment, H as renderList, y as createBlock, g as _export_sfc } from "./index-387a6f18.js";
|
|
2
2
|
const _hoisted_1 = { class: "csv-table-settings" };
|
|
3
3
|
const _hoisted_2 = { class: "row" };
|
|
4
4
|
const _hoisted_3 = { class: "row" };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { C as ColumnSelector } from "./dropDown-
|
|
3
|
-
import { C as CodeLoader } from "./vue-content-loader.es-
|
|
1
|
+
import { k as axios, d as defineComponent, r as ref, B as computed, F as onMounted, C as watch, m as resolveComponent, o as openBlock, c as createElementBlock, a as createBaseVNode, p as createVNode, q as withCtx, e as createCommentVNode, t as toDisplayString, i as withDirectives, v as vModelText, y as createBlock, x as unref, g as _export_sfc } from "./index-387a6f18.js";
|
|
2
|
+
import { C as ColumnSelector } from "./dropDown-2798a109.js";
|
|
3
|
+
import { C as CodeLoader } from "./vue-content-loader.es-4469c8ff.js";
|
|
4
4
|
const getXlsxSheetNamesForPath = async (path) => {
|
|
5
5
|
const response = await axios.get(`/api/get_xlsx_sheet_names?path=${path}`);
|
|
6
6
|
return response.data;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { d as defineComponent, o as openBlock, c as createElementBlock,
|
|
1
|
+
import { d as defineComponent, o as openBlock, c as createElementBlock, a as createBaseVNode, g as _export_sfc } from "./index-387a6f18.js";
|
|
2
2
|
const _hoisted_1 = { class: "parquet-table-settings" };
|
|
3
3
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
4
4
|
__name: "readParquet",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { d as defineComponent, r as ref,
|
|
2
|
-
import { u as useNodeStore } from "./PopOver-
|
|
3
|
-
import { u as unavailableField } from "./UnavailableFields-
|
|
1
|
+
import { d as defineComponent, r as ref, ab as watchEffect, B as computed, F as onMounted, l as onUnmounted, m as resolveComponent, o as openBlock, c as createElementBlock, p as createVNode, a as createBaseVNode, e as createCommentVNode, t as toDisplayString, a0 as normalizeStyle, f as createTextVNode, G as Fragment, H as renderList, n as normalizeClass, w as withModifiers, q as withCtx, x as unref, y as createBlock, g as _export_sfc } from "./index-387a6f18.js";
|
|
2
|
+
import { u as useNodeStore } from "./PopOver-862d7e28.js";
|
|
3
|
+
import { u as unavailableField } from "./UnavailableFields-b72a2c72.js";
|
|
4
4
|
const _hoisted_1 = { key: 0 };
|
|
5
5
|
const _hoisted_2 = {
|
|
6
6
|
key: 1,
|
flowfile/web/static/assets/{vue-codemirror.esm-0965f39f.js → vue-codemirror.esm-31ba0e0b.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { d as defineComponent,
|
|
1
|
+
import { d as defineComponent, a4 as shallowRef, L as inject, B as computed, F as onMounted, C as watch, a1 as onBeforeUnmount, a5 as h$1, as as toRaw } from "./index-387a6f18.js";
|
|
2
2
|
let rangeFrom = [], rangeTo = [];
|
|
3
3
|
(() => {
|
|
4
4
|
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);
|
flowfile/web/static/index.html
CHANGED
|
@@ -12,8 +12,8 @@
|
|
|
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-
|
|
16
|
-
<link rel="stylesheet" href="/assets/index-
|
|
15
|
+
<script type="module" crossorigin src="/assets/index-387a6f18.js"></script>
|
|
16
|
+
<link rel="stylesheet" href="/assets/index-e96ab018.css">
|
|
17
17
|
</head>
|
|
18
18
|
<body>
|
|
19
19
|
<div id="app"></div>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: Flowfile
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.4
|
|
4
4
|
Summary: Project combining flowfile core (backend) and flowfile_worker (compute offloader) and flowfile_frame (api)
|
|
5
5
|
License-File: LICENSE
|
|
6
6
|
Author: Edward van Eechoud
|
|
@@ -33,7 +33,7 @@ Requires-Dist: polars (>=1.8.2,<1.32) ; sys_platform != "win32"
|
|
|
33
33
|
Requires-Dist: polars (>=1.8.2,<=1.25.2) ; sys_platform == "win32"
|
|
34
34
|
Requires-Dist: polars-distance (>=0.4.3,<0.5.0)
|
|
35
35
|
Requires-Dist: polars-ds (>=0.6.0)
|
|
36
|
-
Requires-Dist: polars-expr-transformer (>=0.
|
|
36
|
+
Requires-Dist: polars-expr-transformer (>=0.5.0)
|
|
37
37
|
Requires-Dist: polars-grouper (>=0.3.0,<0.4.0)
|
|
38
38
|
Requires-Dist: polars_simed (>=0.3.4,<0.4.0)
|
|
39
39
|
Requires-Dist: pyarrow (>=18.0.0,<19.0.0)
|