@flowdrop/flowdrop 1.0.1 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (385) hide show
  1. package/README.md +50 -50
  2. package/dist/adapters/WorkflowAdapter.d.ts +1 -1
  3. package/dist/adapters/WorkflowAdapter.js +25 -25
  4. package/dist/adapters/agentspec/AgentSpecAdapter.d.ts +2 -2
  5. package/dist/adapters/agentspec/AgentSpecAdapter.js +133 -122
  6. package/dist/adapters/agentspec/agentAdapter.d.ts +2 -2
  7. package/dist/adapters/agentspec/agentAdapter.js +10 -10
  8. package/dist/adapters/agentspec/autoLayout.d.ts +1 -1
  9. package/dist/adapters/agentspec/autoLayout.js +2 -2
  10. package/dist/adapters/agentspec/componentTypeDefaults.d.ts +1 -1
  11. package/dist/adapters/agentspec/componentTypeDefaults.js +120 -120
  12. package/dist/adapters/agentspec/defaultNodeTypes.d.ts +2 -2
  13. package/dist/adapters/agentspec/defaultNodeTypes.js +307 -307
  14. package/dist/adapters/agentspec/index.d.ts +10 -10
  15. package/dist/adapters/agentspec/index.js +6 -6
  16. package/dist/adapters/agentspec/validator.d.ts +2 -2
  17. package/dist/adapters/agentspec/validator.js +22 -20
  18. package/dist/api/enhanced-client.d.ts +3 -3
  19. package/dist/api/enhanced-client.js +73 -72
  20. package/dist/components/App.svelte +1090 -961
  21. package/dist/components/App.svelte.d.ts +9 -6
  22. package/dist/components/CanvasBanner.stories.svelte +23 -20
  23. package/dist/components/CanvasBanner.stories.svelte.d.ts +1 -1
  24. package/dist/components/CanvasBanner.svelte +52 -46
  25. package/dist/components/ConfigForm.svelte +1164 -1065
  26. package/dist/components/ConfigForm.svelte.d.ts +2 -2
  27. package/dist/components/ConfigModal.svelte +180 -180
  28. package/dist/components/ConfigModal.svelte.d.ts +1 -1
  29. package/dist/components/ConfigPanel.stories.svelte +35 -35
  30. package/dist/components/ConfigPanel.stories.svelte.d.ts +1 -1
  31. package/dist/components/ConfigPanel.svelte +178 -167
  32. package/dist/components/ConfigPanel.svelte.d.ts +1 -1
  33. package/dist/components/ConnectionLine.svelte +25 -25
  34. package/dist/components/EdgeRefresher.svelte +26 -26
  35. package/dist/components/FlowDropEdge.stories.svelte +179 -143
  36. package/dist/components/FlowDropEdge.svelte +147 -147
  37. package/dist/components/FlowDropEdge.svelte.d.ts +1 -1
  38. package/dist/components/FlowDropZone.svelte +63 -60
  39. package/dist/components/FlowDropZone.svelte.d.ts +1 -1
  40. package/dist/components/LoadingSpinner.stories.svelte +19 -19
  41. package/dist/components/LoadingSpinner.stories.svelte.d.ts +1 -1
  42. package/dist/components/LoadingSpinner.svelte +21 -21
  43. package/dist/components/LoadingSpinner.svelte.d.ts +1 -1
  44. package/dist/components/Logo.stories.svelte +13 -13
  45. package/dist/components/Logo.stories.svelte.d.ts +1 -1
  46. package/dist/components/Logo.svelte +101 -95
  47. package/dist/components/LogsSidebar.svelte +553 -546
  48. package/dist/components/LogsSidebar.svelte.d.ts +1 -1
  49. package/dist/components/MarkdownDisplay.stories.svelte +29 -23
  50. package/dist/components/MarkdownDisplay.stories.svelte.d.ts +1 -1
  51. package/dist/components/MarkdownDisplay.svelte +16 -14
  52. package/dist/components/Navbar.stories.svelte +43 -38
  53. package/dist/components/Navbar.stories.svelte.d.ts +1 -1
  54. package/dist/components/Navbar.svelte +760 -706
  55. package/dist/components/Navbar.svelte.d.ts +1 -1
  56. package/dist/components/NodeSidebar.svelte +905 -746
  57. package/dist/components/NodeSidebar.svelte.d.ts +5 -1
  58. package/dist/components/NodeStatusOverlay.stories.svelte +82 -70
  59. package/dist/components/NodeStatusOverlay.stories.svelte.d.ts +1 -1
  60. package/dist/components/NodeStatusOverlay.svelte +295 -280
  61. package/dist/components/NodeStatusOverlay.svelte.d.ts +3 -3
  62. package/dist/components/PipelineStatus.svelte +326 -300
  63. package/dist/components/PipelineStatus.svelte.d.ts +4 -4
  64. package/dist/components/PortCoordinateTracker.svelte +49 -47
  65. package/dist/components/PortCoordinateTracker.svelte.d.ts +1 -1
  66. package/dist/components/ReadOnlyDetails.svelte +156 -156
  67. package/dist/components/SchemaForm.stories.svelte +106 -98
  68. package/dist/components/SchemaForm.stories.svelte.d.ts +1 -1
  69. package/dist/components/SchemaForm.svelte +490 -463
  70. package/dist/components/SchemaForm.svelte.d.ts +2 -2
  71. package/dist/components/SettingsModal.svelte +226 -223
  72. package/dist/components/SettingsModal.svelte.d.ts +1 -1
  73. package/dist/components/SettingsPanel.svelte +637 -601
  74. package/dist/components/SettingsPanel.svelte.d.ts +1 -1
  75. package/dist/components/StatusIcon.stories.svelte +62 -49
  76. package/dist/components/StatusIcon.stories.svelte.d.ts +1 -1
  77. package/dist/components/StatusIcon.svelte +87 -87
  78. package/dist/components/StatusIcon.svelte.d.ts +2 -2
  79. package/dist/components/StatusLabel.stories.svelte +12 -12
  80. package/dist/components/StatusLabel.stories.svelte.d.ts +1 -1
  81. package/dist/components/StatusLabel.svelte +19 -19
  82. package/dist/components/ThemeToggle.stories.svelte +16 -16
  83. package/dist/components/ThemeToggle.stories.svelte.d.ts +1 -1
  84. package/dist/components/ThemeToggle.svelte +180 -169
  85. package/dist/components/ThemeToggle.svelte.d.ts +1 -1
  86. package/dist/components/UniversalNode.svelte +150 -138
  87. package/dist/components/UniversalNode.svelte.d.ts +3 -3
  88. package/dist/components/WorkflowEditor.svelte +1069 -1014
  89. package/dist/components/WorkflowEditor.svelte.d.ts +4 -4
  90. package/dist/components/form/FormArray.svelte +1034 -973
  91. package/dist/components/form/FormArray.svelte.d.ts +1 -1
  92. package/dist/components/form/FormAutocomplete.svelte +1021 -978
  93. package/dist/components/form/FormAutocomplete.svelte.d.ts +1 -1
  94. package/dist/components/form/FormCheckboxGroup.stories.svelte +23 -20
  95. package/dist/components/form/FormCheckboxGroup.stories.svelte.d.ts +1 -1
  96. package/dist/components/form/FormCheckboxGroup.svelte +136 -136
  97. package/dist/components/form/FormCodeEditor.svelte +452 -434
  98. package/dist/components/form/FormField.svelte +366 -355
  99. package/dist/components/form/FormField.svelte.d.ts +2 -2
  100. package/dist/components/form/FormFieldLight.svelte +400 -384
  101. package/dist/components/form/FormFieldLight.svelte.d.ts +1 -1
  102. package/dist/components/form/FormFieldWrapper.stories.svelte +42 -42
  103. package/dist/components/form/FormFieldWrapper.stories.svelte.d.ts +1 -1
  104. package/dist/components/form/FormFieldWrapper.svelte +100 -93
  105. package/dist/components/form/FormFieldWrapper.svelte.d.ts +1 -1
  106. package/dist/components/form/FormFieldset.svelte +108 -108
  107. package/dist/components/form/FormFieldset.svelte.d.ts +2 -2
  108. package/dist/components/form/FormMarkdownEditor.svelte +758 -725
  109. package/dist/components/form/FormNumberField.stories.svelte +25 -25
  110. package/dist/components/form/FormNumberField.stories.svelte.d.ts +1 -1
  111. package/dist/components/form/FormNumberField.svelte +88 -88
  112. package/dist/components/form/FormRangeField.stories.svelte +20 -20
  113. package/dist/components/form/FormRangeField.stories.svelte.d.ts +1 -1
  114. package/dist/components/form/FormRangeField.svelte +234 -226
  115. package/dist/components/form/FormSelect.stories.svelte +38 -38
  116. package/dist/components/form/FormSelect.stories.svelte.d.ts +1 -1
  117. package/dist/components/form/FormSelect.svelte +101 -101
  118. package/dist/components/form/FormSelect.svelte.d.ts +1 -1
  119. package/dist/components/form/FormTemplateEditor.svelte +847 -798
  120. package/dist/components/form/FormTemplateEditor.svelte.d.ts +1 -1
  121. package/dist/components/form/FormTextField.stories.svelte +29 -23
  122. package/dist/components/form/FormTextField.stories.svelte.d.ts +1 -1
  123. package/dist/components/form/FormTextField.svelte +68 -68
  124. package/dist/components/form/FormTextarea.stories.svelte +28 -25
  125. package/dist/components/form/FormTextarea.stories.svelte.d.ts +1 -1
  126. package/dist/components/form/FormTextarea.svelte +74 -74
  127. package/dist/components/form/FormToggle.stories.svelte +23 -20
  128. package/dist/components/form/FormToggle.stories.svelte.d.ts +1 -1
  129. package/dist/components/form/FormToggle.svelte +98 -98
  130. package/dist/components/form/FormUISchemaRenderer.svelte +120 -113
  131. package/dist/components/form/FormUISchemaRenderer.svelte.d.ts +3 -3
  132. package/dist/components/form/index.d.ts +19 -19
  133. package/dist/components/form/index.js +18 -18
  134. package/dist/components/form/templateAutocomplete.d.ts +2 -2
  135. package/dist/components/form/templateAutocomplete.js +64 -55
  136. package/dist/components/form/types.d.ts +6 -6
  137. package/dist/components/form/types.js +9 -4
  138. package/dist/components/icons/AlertCircleIcon.svelte +11 -0
  139. package/dist/components/icons/AlertCircleIcon.svelte.d.ts +26 -0
  140. package/dist/components/icons/CogIcon.svelte +11 -0
  141. package/dist/components/icons/CogIcon.svelte.d.ts +26 -0
  142. package/dist/components/interrupt/ChoicePrompt.stories.svelte +54 -38
  143. package/dist/components/interrupt/ChoicePrompt.stories.svelte.d.ts +1 -1
  144. package/dist/components/interrupt/ChoicePrompt.svelte +407 -383
  145. package/dist/components/interrupt/ChoicePrompt.svelte.d.ts +1 -1
  146. package/dist/components/interrupt/ConfirmationPrompt.stories.svelte +48 -48
  147. package/dist/components/interrupt/ConfirmationPrompt.stories.svelte.d.ts +1 -1
  148. package/dist/components/interrupt/ConfirmationPrompt.svelte +280 -274
  149. package/dist/components/interrupt/ConfirmationPrompt.svelte.d.ts +1 -1
  150. package/dist/components/interrupt/FormPrompt.svelte +223 -218
  151. package/dist/components/interrupt/FormPrompt.svelte.d.ts +1 -1
  152. package/dist/components/interrupt/InterruptBubble.svelte +617 -583
  153. package/dist/components/interrupt/InterruptBubble.svelte.d.ts +2 -2
  154. package/dist/components/interrupt/ReviewPrompt.stories.svelte +66 -56
  155. package/dist/components/interrupt/ReviewPrompt.stories.svelte.d.ts +1 -1
  156. package/dist/components/interrupt/ReviewPrompt.svelte +861 -841
  157. package/dist/components/interrupt/ReviewPrompt.svelte.d.ts +1 -1
  158. package/dist/components/interrupt/TextInputPrompt.stories.svelte +38 -33
  159. package/dist/components/interrupt/TextInputPrompt.stories.svelte.d.ts +1 -1
  160. package/dist/components/interrupt/TextInputPrompt.svelte +333 -328
  161. package/dist/components/interrupt/TextInputPrompt.svelte.d.ts +1 -1
  162. package/dist/components/interrupt/index.d.ts +5 -5
  163. package/dist/components/interrupt/index.js +5 -5
  164. package/dist/components/layouts/MainLayout.svelte +724 -691
  165. package/dist/components/layouts/MainLayout.svelte.d.ts +6 -6
  166. package/dist/components/nodes/GatewayNode.stories.svelte +100 -99
  167. package/dist/components/nodes/GatewayNode.svelte +605 -571
  168. package/dist/components/nodes/GatewayNode.svelte.d.ts +3 -3
  169. package/dist/components/nodes/IdeaNode.stories.svelte +44 -43
  170. package/dist/components/nodes/IdeaNode.svelte +451 -437
  171. package/dist/components/nodes/IdeaNode.svelte.d.ts +1 -1
  172. package/dist/components/nodes/NotesNode.stories.svelte +65 -64
  173. package/dist/components/nodes/NotesNode.svelte +380 -369
  174. package/dist/components/nodes/NotesNode.svelte.d.ts +1 -1
  175. package/dist/components/nodes/SimpleNode.stories.svelte +145 -144
  176. package/dist/components/nodes/SimpleNode.svelte +486 -424
  177. package/dist/components/nodes/SimpleNode.svelte.d.ts +1 -1
  178. package/dist/components/nodes/SquareNode.stories.svelte +73 -73
  179. package/dist/components/nodes/SquareNode.svelte +439 -380
  180. package/dist/components/nodes/SquareNode.svelte.d.ts +1 -1
  181. package/dist/components/nodes/TerminalNode.stories.svelte +13 -13
  182. package/dist/components/nodes/TerminalNode.svelte +709 -670
  183. package/dist/components/nodes/TerminalNode.svelte.d.ts +1 -1
  184. package/dist/components/nodes/ToolNode.stories.svelte +181 -180
  185. package/dist/components/nodes/ToolNode.svelte +505 -447
  186. package/dist/components/nodes/ToolNode.svelte.d.ts +1 -1
  187. package/dist/components/nodes/WorkflowNode.stories.svelte +70 -46
  188. package/dist/components/nodes/WorkflowNode.svelte +621 -551
  189. package/dist/components/nodes/WorkflowNode.svelte.d.ts +3 -3
  190. package/dist/components/playground/ChatPanel.svelte +945 -889
  191. package/dist/components/playground/ExecutionLogs.svelte +495 -472
  192. package/dist/components/playground/InputCollector.svelte +449 -428
  193. package/dist/components/playground/MessageBubble.stories.svelte +47 -47
  194. package/dist/components/playground/MessageBubble.stories.svelte.d.ts +1 -1
  195. package/dist/components/playground/MessageBubble.svelte +626 -610
  196. package/dist/components/playground/MessageBubble.svelte.d.ts +1 -1
  197. package/dist/components/playground/Playground.svelte +1088 -1057
  198. package/dist/components/playground/Playground.svelte.d.ts +3 -3
  199. package/dist/components/playground/PlaygroundModal.svelte +208 -204
  200. package/dist/components/playground/PlaygroundModal.svelte.d.ts +3 -3
  201. package/dist/components/playground/SessionManager.svelte +527 -521
  202. package/dist/components/playground/SessionManager.svelte.d.ts +1 -1
  203. package/dist/config/agentSpecEndpoints.d.ts +1 -1
  204. package/dist/config/agentSpecEndpoints.js +20 -20
  205. package/dist/config/constants.js +2 -2
  206. package/dist/config/defaultCategories.d.ts +1 -1
  207. package/dist/config/defaultCategories.js +86 -86
  208. package/dist/config/defaultPortConfig.d.ts +1 -1
  209. package/dist/config/defaultPortConfig.js +144 -144
  210. package/dist/config/endpoints.d.ts +4 -4
  211. package/dist/config/endpoints.js +65 -65
  212. package/dist/config/runtimeConfig.d.ts +2 -2
  213. package/dist/config/runtimeConfig.js +8 -8
  214. package/dist/core/index.d.ts +63 -59
  215. package/dist/core/index.js +35 -33
  216. package/dist/display/index.d.ts +2 -2
  217. package/dist/display/index.js +2 -2
  218. package/dist/editor/index.d.ts +62 -62
  219. package/dist/editor/index.js +53 -53
  220. package/dist/form/code.d.ts +5 -5
  221. package/dist/form/code.js +14 -14
  222. package/dist/form/fieldRegistry.d.ts +3 -3
  223. package/dist/form/fieldRegistry.js +11 -9
  224. package/dist/form/full.d.ts +8 -8
  225. package/dist/form/full.js +9 -9
  226. package/dist/form/index.d.ts +18 -18
  227. package/dist/form/index.js +16 -16
  228. package/dist/form/markdown.d.ts +4 -4
  229. package/dist/form/markdown.js +8 -8
  230. package/dist/helpers/proximityConnect.d.ts +3 -3
  231. package/dist/helpers/proximityConnect.js +34 -32
  232. package/dist/helpers/workflowEditorHelper.d.ts +5 -5
  233. package/dist/helpers/workflowEditorHelper.js +108 -96
  234. package/dist/index.d.ts +6 -6
  235. package/dist/index.js +6 -6
  236. package/dist/mocks/app-environment.js +2 -2
  237. package/dist/mocks/app-forms.js +9 -9
  238. package/dist/mocks/app-navigation.js +11 -11
  239. package/dist/mocks/app-stores.js +8 -8
  240. package/dist/playground/index.d.ts +19 -19
  241. package/dist/playground/index.js +16 -16
  242. package/dist/playground/mount.d.ts +3 -3
  243. package/dist/playground/mount.js +24 -24
  244. package/dist/registry/builtinFormats.js +13 -13
  245. package/dist/registry/builtinNodes.d.ts +2 -2
  246. package/dist/registry/builtinNodes.js +77 -77
  247. package/dist/registry/index.d.ts +4 -4
  248. package/dist/registry/index.js +4 -4
  249. package/dist/registry/nodeComponentRegistry.d.ts +8 -8
  250. package/dist/registry/nodeComponentRegistry.js +11 -9
  251. package/dist/registry/plugin.d.ts +2 -2
  252. package/dist/registry/plugin.js +11 -11
  253. package/dist/registry/workflowFormatRegistry.d.ts +3 -3
  254. package/dist/registry/workflowFormatRegistry.js +2 -2
  255. package/dist/schema/index.d.ts +1 -1
  256. package/dist/schema/index.js +2 -2
  257. package/dist/services/agentSpecExecutionService.d.ts +3 -3
  258. package/dist/services/agentSpecExecutionService.js +59 -55
  259. package/dist/services/api.d.ts +2 -2
  260. package/dist/services/api.js +37 -37
  261. package/dist/services/apiVariableService.d.ts +1 -1
  262. package/dist/services/apiVariableService.js +41 -34
  263. package/dist/services/autoSaveService.js +8 -8
  264. package/dist/services/categoriesApi.d.ts +2 -2
  265. package/dist/services/categoriesApi.js +8 -8
  266. package/dist/services/draftStorage.d.ts +1 -1
  267. package/dist/services/draftStorage.js +11 -11
  268. package/dist/services/dynamicSchemaService.d.ts +1 -1
  269. package/dist/services/dynamicSchemaService.js +41 -39
  270. package/dist/services/globalSave.d.ts +2 -2
  271. package/dist/services/globalSave.js +41 -38
  272. package/dist/services/historyService.d.ts +1 -1
  273. package/dist/services/historyService.js +8 -8
  274. package/dist/services/interruptService.d.ts +1 -1
  275. package/dist/services/interruptService.js +35 -29
  276. package/dist/services/nodeExecutionService.d.ts +1 -1
  277. package/dist/services/nodeExecutionService.js +45 -44
  278. package/dist/services/playgroundService.d.ts +1 -1
  279. package/dist/services/playgroundService.js +29 -29
  280. package/dist/services/portConfigApi.d.ts +2 -2
  281. package/dist/services/portConfigApi.js +8 -8
  282. package/dist/services/settingsService.d.ts +2 -2
  283. package/dist/services/settingsService.js +25 -19
  284. package/dist/services/toastService.d.ts +4 -4
  285. package/dist/services/toastService.js +33 -33
  286. package/dist/services/variableService.d.ts +1 -1
  287. package/dist/services/variableService.js +36 -36
  288. package/dist/services/workflowStorage.d.ts +2 -2
  289. package/dist/services/workflowStorage.js +13 -13
  290. package/dist/settings/index.d.ts +7 -7
  291. package/dist/settings/index.js +6 -6
  292. package/dist/skins/default.d.ts +2 -0
  293. package/dist/skins/default.js +1 -0
  294. package/dist/skins/index.d.ts +13 -0
  295. package/dist/skins/index.js +30 -0
  296. package/dist/skins/slate.d.ts +2 -0
  297. package/dist/skins/slate.js +78 -0
  298. package/dist/stores/categoriesStore.svelte.d.ts +1 -1
  299. package/dist/stores/categoriesStore.svelte.js +5 -5
  300. package/dist/stores/editorStateMachine.svelte.d.ts +2 -2
  301. package/dist/stores/editorStateMachine.svelte.js +65 -33
  302. package/dist/stores/historyStore.svelte.d.ts +4 -4
  303. package/dist/stores/historyStore.svelte.js +4 -4
  304. package/dist/stores/interruptStore.svelte.d.ts +3 -3
  305. package/dist/stores/interruptStore.svelte.js +21 -21
  306. package/dist/stores/playgroundStore.svelte.d.ts +2 -2
  307. package/dist/stores/playgroundStore.svelte.js +25 -18
  308. package/dist/stores/portCoordinateStore.svelte.d.ts +2 -2
  309. package/dist/stores/portCoordinateStore.svelte.js +15 -8
  310. package/dist/stores/settingsStore.svelte.d.ts +2 -2
  311. package/dist/stores/settingsStore.svelte.js +62 -57
  312. package/dist/stores/workflowStore.svelte.d.ts +3 -3
  313. package/dist/stores/workflowStore.svelte.js +50 -47
  314. package/dist/stories/CanvasDecorator.svelte +35 -32
  315. package/dist/stories/CanvasDecorator.svelte.d.ts +2 -2
  316. package/dist/stories/EdgeDecorator.svelte +102 -99
  317. package/dist/stories/EdgeDecorator.svelte.d.ts +1 -1
  318. package/dist/stories/NodeDecorator.svelte +59 -53
  319. package/dist/stories/NodeDecorator.svelte.d.ts +1 -1
  320. package/dist/stories/utils.d.ts +2 -2
  321. package/dist/stories/utils.js +105 -67
  322. package/dist/styles/base.css +599 -595
  323. package/dist/styles/toast.css +14 -14
  324. package/dist/styles/tokens.css +409 -378
  325. package/dist/svelte-app.d.ts +12 -9
  326. package/dist/svelte-app.js +40 -39
  327. package/dist/themes/default.d.ts +2 -0
  328. package/dist/themes/default.js +9 -0
  329. package/dist/themes/index.d.ts +13 -0
  330. package/dist/themes/index.js +44 -0
  331. package/dist/themes/minimal.d.ts +2 -0
  332. package/dist/themes/minimal.js +11 -0
  333. package/dist/types/agentspec.d.ts +18 -18
  334. package/dist/types/agentspec.js +2 -2
  335. package/dist/types/auth.d.ts +1 -1
  336. package/dist/types/auth.js +6 -6
  337. package/dist/types/config.d.ts +6 -6
  338. package/dist/types/events.d.ts +2 -2
  339. package/dist/types/events.js +2 -2
  340. package/dist/types/index.d.ts +32 -32
  341. package/dist/types/index.js +6 -6
  342. package/dist/types/interrupt.d.ts +6 -6
  343. package/dist/types/interrupt.js +21 -21
  344. package/dist/types/interruptState.d.ts +12 -12
  345. package/dist/types/interruptState.js +66 -66
  346. package/dist/types/playground.d.ts +7 -7
  347. package/dist/types/playground.js +14 -14
  348. package/dist/types/settings.d.ts +5 -3
  349. package/dist/types/settings.js +25 -18
  350. package/dist/types/skin.d.ts +31 -0
  351. package/dist/types/skin.js +1 -0
  352. package/dist/types/theme.d.ts +35 -0
  353. package/dist/types/theme.js +1 -0
  354. package/dist/types/uischema.d.ts +4 -4
  355. package/dist/types/uischema.js +3 -3
  356. package/dist/utils/colors.d.ts +1 -1
  357. package/dist/utils/colors.js +97 -95
  358. package/dist/utils/config.d.ts +2 -2
  359. package/dist/utils/config.js +48 -48
  360. package/dist/utils/connections.d.ts +2 -2
  361. package/dist/utils/connections.js +15 -15
  362. package/dist/utils/errors.js +3 -3
  363. package/dist/utils/fetchWithAuth.d.ts +1 -1
  364. package/dist/utils/fetchWithAuth.js +2 -2
  365. package/dist/utils/handleIds.d.ts +2 -2
  366. package/dist/utils/handleIds.js +8 -8
  367. package/dist/utils/handlePositioning.d.ts +1 -1
  368. package/dist/utils/handlePositioning.js +2 -2
  369. package/dist/utils/icons.d.ts +1 -1
  370. package/dist/utils/icons.js +74 -74
  371. package/dist/utils/logger.d.ts +1 -1
  372. package/dist/utils/logger.js +7 -7
  373. package/dist/utils/nodeStatus.d.ts +1 -1
  374. package/dist/utils/nodeStatus.js +48 -48
  375. package/dist/utils/nodeTypes.d.ts +1 -1
  376. package/dist/utils/nodeTypes.js +21 -20
  377. package/dist/utils/nodeWrapper.d.ts +7 -7
  378. package/dist/utils/nodeWrapper.js +21 -19
  379. package/dist/utils/performanceUtils.d.ts +1 -1
  380. package/dist/utils/performanceUtils.js +2 -1
  381. package/dist/utils/sanitize.js +1 -1
  382. package/dist/utils/uischema.d.ts +2 -2
  383. package/dist/utils/uischema.js +8 -8
  384. package/dist/utils/validation.js +20 -8
  385. package/package.json +1 -1
@@ -1,161 +1,197 @@
1
1
  <script module>
2
- import { defineMeta } from '@storybook/addon-svelte-csf';
3
- import EdgeDecorator from '../../lib/stories/EdgeDecorator.svelte';
4
- import { createSampleNodeData } from '../../lib/stories/utils.js';
5
- import { EDGE_MARKER_SIZES } from '../../lib/config/constants.js';
2
+ import { defineMeta } from "@storybook/addon-svelte-csf";
3
+ import EdgeDecorator from "../../lib/stories/EdgeDecorator.svelte";
4
+ import { createSampleNodeData } from "../../lib/stories/utils.js";
5
+ import { EDGE_MARKER_SIZES } from "../../lib/config/constants.js";
6
6
 
7
- const { Story } = defineMeta({
8
- title: 'Edges/FlowDropEdge',
9
- tags: ['autodocs'],
10
- parameters: {
11
- layout: 'centered'
12
- }
13
- });
7
+ const { Story } = defineMeta({
8
+ title: "Edges/FlowDropEdge",
9
+ tags: ["autodocs"],
10
+ parameters: {
11
+ layout: "centered",
12
+ },
13
+ });
14
14
 
15
- const sourceNode = createSampleNodeData({
16
- label: 'Text Input',
17
- metadata: {
18
- id: 'text_input',
19
- name: 'Text Input',
20
- description: 'Simple text input',
21
- category: 'inputs',
22
- version: '1.0.0',
23
- type: 'simple',
24
- icon: 'mdi:text',
25
- color: '#22c55e',
26
- inputs: [],
27
- outputs: [
28
- { id: 'output', name: 'Output', type: 'output', dataType: 'string', required: false }
29
- ]
30
- }
31
- });
15
+ const sourceNode = createSampleNodeData({
16
+ label: "Text Input",
17
+ metadata: {
18
+ id: "text_input",
19
+ name: "Text Input",
20
+ description: "Simple text input",
21
+ category: "inputs",
22
+ version: "1.0.0",
23
+ type: "simple",
24
+ icon: "mdi:text",
25
+ color: "#22c55e",
26
+ inputs: [],
27
+ outputs: [
28
+ {
29
+ id: "output",
30
+ name: "Output",
31
+ type: "output",
32
+ dataType: "string",
33
+ required: false,
34
+ },
35
+ ],
36
+ },
37
+ });
32
38
 
33
- const targetNode = createSampleNodeData({
34
- label: 'Text Output',
35
- metadata: {
36
- id: 'text_output',
37
- name: 'Text Output',
38
- description: 'Display text output',
39
- category: 'outputs',
40
- version: '1.0.0',
41
- type: 'simple',
42
- icon: 'mdi:text-box',
43
- color: '#ef4444',
44
- inputs: [
45
- { id: 'input', name: 'Input', type: 'input', dataType: 'string', required: false }
46
- ],
47
- outputs: []
48
- }
49
- });
39
+ const targetNode = createSampleNodeData({
40
+ label: "Text Output",
41
+ metadata: {
42
+ id: "text_output",
43
+ name: "Text Output",
44
+ description: "Display text output",
45
+ category: "outputs",
46
+ version: "1.0.0",
47
+ type: "simple",
48
+ icon: "mdi:text-box",
49
+ color: "#ef4444",
50
+ inputs: [
51
+ {
52
+ id: "input",
53
+ name: "Input",
54
+ type: "input",
55
+ dataType: "string",
56
+ required: false,
57
+ },
58
+ ],
59
+ outputs: [],
60
+ },
61
+ });
50
62
 
51
- const triggerSource = createSampleNodeData({
52
- label: 'Trigger Source',
53
- metadata: {
54
- id: 'trigger_source',
55
- name: 'Trigger Source',
56
- description: 'Emits a trigger signal',
57
- category: 'processing',
58
- version: '1.0.0',
59
- type: 'simple',
60
- icon: 'mdi:play',
61
- color: '#3b82f6',
62
- inputs: [],
63
- outputs: [
64
- { id: 'trigger', name: 'Trigger', type: 'output', dataType: 'trigger', required: false }
65
- ]
66
- }
67
- });
63
+ const triggerSource = createSampleNodeData({
64
+ label: "Trigger Source",
65
+ metadata: {
66
+ id: "trigger_source",
67
+ name: "Trigger Source",
68
+ description: "Emits a trigger signal",
69
+ category: "processing",
70
+ version: "1.0.0",
71
+ type: "simple",
72
+ icon: "mdi:play",
73
+ color: "#3b82f6",
74
+ inputs: [],
75
+ outputs: [
76
+ {
77
+ id: "trigger",
78
+ name: "Trigger",
79
+ type: "output",
80
+ dataType: "trigger",
81
+ required: false,
82
+ },
83
+ ],
84
+ },
85
+ });
68
86
 
69
- const triggerTarget = createSampleNodeData({
70
- label: 'Trigger Target',
71
- metadata: {
72
- id: 'trigger_target',
73
- name: 'Trigger Target',
74
- description: 'Receives a trigger signal',
75
- category: 'processing',
76
- version: '1.0.0',
77
- type: 'simple',
78
- icon: 'mdi:lightning-bolt',
79
- color: '#8b5cf6',
80
- inputs: [
81
- { id: 'trigger', name: 'Trigger', type: 'input', dataType: 'trigger', required: false }
82
- ],
83
- outputs: []
84
- }
85
- });
87
+ const triggerTarget = createSampleNodeData({
88
+ label: "Trigger Target",
89
+ metadata: {
90
+ id: "trigger_target",
91
+ name: "Trigger Target",
92
+ description: "Receives a trigger signal",
93
+ category: "processing",
94
+ version: "1.0.0",
95
+ type: "simple",
96
+ icon: "mdi:lightning-bolt",
97
+ color: "#8b5cf6",
98
+ inputs: [
99
+ {
100
+ id: "trigger",
101
+ name: "Trigger",
102
+ type: "input",
103
+ dataType: "trigger",
104
+ required: false,
105
+ },
106
+ ],
107
+ outputs: [],
108
+ },
109
+ });
86
110
 
87
- const toolSource = createSampleNodeData({
88
- label: 'Tool Provider',
89
- metadata: {
90
- id: 'tool_provider',
91
- name: 'Tool Provider',
92
- description: 'Provides a tool',
93
- category: 'processing',
94
- version: '1.0.0',
95
- type: 'simple',
96
- icon: 'mdi:wrench',
97
- color: '#f59e0b',
98
- inputs: [],
99
- outputs: [
100
- { id: 'tool', name: 'Tool', type: 'output', dataType: 'tool', required: false }
101
- ]
102
- }
103
- });
111
+ const toolSource = createSampleNodeData({
112
+ label: "Tool Provider",
113
+ metadata: {
114
+ id: "tool_provider",
115
+ name: "Tool Provider",
116
+ description: "Provides a tool",
117
+ category: "processing",
118
+ version: "1.0.0",
119
+ type: "simple",
120
+ icon: "mdi:wrench",
121
+ color: "#f59e0b",
122
+ inputs: [],
123
+ outputs: [
124
+ {
125
+ id: "tool",
126
+ name: "Tool",
127
+ type: "output",
128
+ dataType: "tool",
129
+ required: false,
130
+ },
131
+ ],
132
+ },
133
+ });
104
134
 
105
- const toolTarget = createSampleNodeData({
106
- label: 'Tool Consumer',
107
- metadata: {
108
- id: 'tool_consumer',
109
- name: 'Tool Consumer',
110
- description: 'Consumes a tool',
111
- category: 'processing',
112
- version: '1.0.0',
113
- type: 'simple',
114
- icon: 'mdi:cog',
115
- color: '#f59e0b',
116
- inputs: [
117
- { id: 'tool', name: 'Tool', type: 'input', dataType: 'tool', required: false }
118
- ],
119
- outputs: []
120
- }
121
- });
135
+ const toolTarget = createSampleNodeData({
136
+ label: "Tool Consumer",
137
+ metadata: {
138
+ id: "tool_consumer",
139
+ name: "Tool Consumer",
140
+ description: "Consumes a tool",
141
+ category: "processing",
142
+ version: "1.0.0",
143
+ type: "simple",
144
+ icon: "mdi:cog",
145
+ color: "#f59e0b",
146
+ inputs: [
147
+ {
148
+ id: "tool",
149
+ name: "Tool",
150
+ type: "input",
151
+ dataType: "tool",
152
+ required: false,
153
+ },
154
+ ],
155
+ outputs: [],
156
+ },
157
+ });
122
158
  </script>
123
159
 
124
160
  <Story name="Data Edge">
125
- <EdgeDecorator
126
- sourceData={sourceNode}
127
- targetData={targetNode}
128
- edgeStyle="stroke: var(--fd-edge-data, #64748b);"
129
- edgeClass="flowdrop--edge--data"
130
- edgeMarkerColor="#64748b"
131
- edgeMarkerSize={EDGE_MARKER_SIZES.data}
132
- sourceHandleId="output"
133
- targetHandleId="input"
134
- />
161
+ <EdgeDecorator
162
+ sourceData={sourceNode}
163
+ targetData={targetNode}
164
+ edgeStyle="stroke: var(--fd-edge-data, #64748b);"
165
+ edgeClass="flowdrop--edge--data"
166
+ edgeMarkerColor="#64748b"
167
+ edgeMarkerSize={EDGE_MARKER_SIZES.data}
168
+ sourceHandleId="output"
169
+ targetHandleId="input"
170
+ />
135
171
  </Story>
136
172
 
137
173
  <Story name="Trigger Edge">
138
- <EdgeDecorator
139
- sourceData={triggerSource}
140
- targetData={triggerTarget}
141
- edgeStyle="stroke: var(--fd-edge-trigger, #1e293b); stroke-width: 2px;"
142
- edgeClass="flowdrop--edge--trigger"
143
- edgeMarkerColor="#1e293b"
144
- edgeMarkerSize={EDGE_MARKER_SIZES.trigger}
145
- sourceHandleId="trigger"
146
- targetHandleId="trigger"
147
- />
174
+ <EdgeDecorator
175
+ sourceData={triggerSource}
176
+ targetData={triggerTarget}
177
+ edgeStyle="stroke: var(--fd-edge-trigger, #1e293b); stroke-width: 2px;"
178
+ edgeClass="flowdrop--edge--trigger"
179
+ edgeMarkerColor="#1e293b"
180
+ edgeMarkerSize={EDGE_MARKER_SIZES.trigger}
181
+ sourceHandleId="trigger"
182
+ targetHandleId="trigger"
183
+ />
148
184
  </Story>
149
185
 
150
186
  <Story name="Tool Edge">
151
- <EdgeDecorator
152
- sourceData={toolSource}
153
- targetData={toolTarget}
154
- edgeStyle="stroke: var(--fd-edge-tool, #f59e0b); stroke-dasharray: 5 3;"
155
- edgeClass="flowdrop--edge--tool"
156
- edgeMarkerColor="#f59e0b"
157
- edgeMarkerSize={EDGE_MARKER_SIZES.tool}
158
- sourceHandleId="tool"
159
- targetHandleId="tool"
160
- />
187
+ <EdgeDecorator
188
+ sourceData={toolSource}
189
+ targetData={toolTarget}
190
+ edgeStyle="stroke: var(--fd-edge-tool, #f59e0b); stroke-dasharray: 5 3;"
191
+ edgeClass="flowdrop--edge--tool"
192
+ edgeMarkerColor="#f59e0b"
193
+ edgeMarkerSize={EDGE_MARKER_SIZES.tool}
194
+ sourceHandleId="tool"
195
+ targetHandleId="tool"
196
+ />
161
197
  </Story>
@@ -11,158 +11,158 @@
11
11
  -->
12
12
 
13
13
  <script lang="ts">
14
- import { getBezierPath } from '@xyflow/svelte';
15
- import { BaseEdge } from '@xyflow/svelte';
16
- import type { BezierEdgeProps } from '@xyflow/svelte';
17
- import { ARROW_LENGTH_PX, ARROW_HALF_WIDTH_PX } from '../config/constants.js';
18
-
19
- let {
20
- id,
21
- interactionWidth,
22
- label,
23
- labelStyle,
24
- markerEnd: _markerEnd,
25
- markerStart,
26
- pathOptions,
27
- sourcePosition,
28
- sourceX,
29
- sourceY,
30
- style,
31
- targetPosition,
32
- targetX,
33
- targetY
34
- }: BezierEdgeProps = $props();
35
-
36
- /**
37
- * Extract stroke color from the edge's inline style for the arrowhead fill.
38
- */
39
- let strokeColor = $derived.by(() => {
40
- if (!style) return 'var(--fd-edge-data, #64748b)';
41
- const match = style.match(/stroke:\s*([^;]+)/);
42
- return match ? match[1].trim() : 'var(--fd-edge-data, #64748b)';
43
- });
44
-
45
- /**
46
- * Evaluate a cubic bezier at parameter t.
47
- * P(t) = (1-t)^3 * P0 + 3(1-t)^2 * t * P1 + 3(1-t) * t^2 * P2 + t^3 * P3
48
- */
49
- function bezierAt(
50
- p0x: number,
51
- p0y: number,
52
- p1x: number,
53
- p1y: number,
54
- p2x: number,
55
- p2y: number,
56
- p3x: number,
57
- p3y: number,
58
- t: number
59
- ): { x: number; y: number } {
60
- const u = 1 - t;
61
- const uu = u * u;
62
- const uuu = uu * u;
63
- const tt = t * t;
64
- const ttt = tt * t;
65
- return {
66
- x: uuu * p0x + 3 * uu * t * p1x + 3 * u * tt * p2x + ttt * p3x,
67
- y: uuu * p0y + 3 * uu * t * p1y + 3 * u * tt * p2y + ttt * p3y
68
- };
69
- }
70
-
71
- /**
72
- * Parse the SVG cubic bezier path "M x0,y0 C x1,y1 x2,y2 x3,y3"
73
- * into the four control points.
74
- */
75
- function parseCubicBezier(d: string) {
76
- const nums = d.match(/-?[\d.]+/g)?.map(Number);
77
- if (!nums || nums.length < 8) return null;
78
- return {
79
- p0x: nums[0],
80
- p0y: nums[1],
81
- p1x: nums[2],
82
- p1y: nums[3],
83
- p2x: nums[4],
84
- p2y: nums[5],
85
- p3x: nums[6],
86
- p3y: nums[7]
87
- };
88
- }
89
-
90
- // Parameter near the end of the curve for tangent sampling
91
- const T_SAMPLE = 0.9;
92
-
93
- let computed = $derived.by(() => {
94
- // 1. Get the full bezier path from xyflow
95
- const [fullPath, lx, ly] = getBezierPath({
96
- sourceX,
97
- sourceY,
98
- targetX,
99
- targetY,
100
- sourcePosition,
101
- targetPosition,
102
- curvature: pathOptions?.curvature
103
- });
104
-
105
- // 2. Parse control points from SVG path
106
- const cp = parseCubicBezier(fullPath);
107
- if (!cp) {
108
- return { path: fullPath, labelX: lx, labelY: ly, angleDeg: 0 };
109
- }
110
-
111
- // 3. Evaluate the curve at T_SAMPLE to get a reference point
112
- const ref = bezierAt(
113
- cp.p0x,
114
- cp.p0y,
115
- cp.p1x,
116
- cp.p1y,
117
- cp.p2x,
118
- cp.p2y,
119
- cp.p3x,
120
- cp.p3y,
121
- T_SAMPLE
122
- );
123
-
124
- // 4. Tangent direction: from reference point to the target
125
- const dx = targetX - ref.x;
126
- const dy = targetY - ref.y;
127
- const angleDeg = (Math.atan2(dy, dx) * 180) / Math.PI;
128
- const angleRad = Math.atan2(dy, dx);
129
-
130
- // 5. Shorten: move the endpoint back along the tangent
131
- const adjX = targetX - Math.cos(angleRad) * ARROW_LENGTH_PX;
132
- const adjY = targetY - Math.sin(angleRad) * ARROW_LENGTH_PX;
133
-
134
- // 6. Recompute the bezier path with the shortened target
135
- const [shortenedPath] = getBezierPath({
136
- sourceX,
137
- sourceY,
138
- targetX: adjX,
139
- targetY: adjY,
140
- sourcePosition,
141
- targetPosition,
142
- curvature: pathOptions?.curvature
143
- });
144
-
145
- return { path: shortenedPath, labelX: lx, labelY: ly, angleDeg };
146
- });
14
+ import { getBezierPath } from "@xyflow/svelte";
15
+ import { BaseEdge } from "@xyflow/svelte";
16
+ import type { BezierEdgeProps } from "@xyflow/svelte";
17
+ import { ARROW_LENGTH_PX, ARROW_HALF_WIDTH_PX } from "../config/constants.js";
18
+
19
+ let {
20
+ id,
21
+ interactionWidth,
22
+ label,
23
+ labelStyle,
24
+ markerEnd: _markerEnd,
25
+ markerStart,
26
+ pathOptions,
27
+ sourcePosition,
28
+ sourceX,
29
+ sourceY,
30
+ style,
31
+ targetPosition,
32
+ targetX,
33
+ targetY,
34
+ }: BezierEdgeProps = $props();
35
+
36
+ /**
37
+ * Extract stroke color from the edge's inline style for the arrowhead fill.
38
+ */
39
+ let strokeColor = $derived.by(() => {
40
+ if (!style) return "var(--fd-edge-data, #64748b)";
41
+ const match = style.match(/stroke:\s*([^;]+)/);
42
+ return match ? match[1].trim() : "var(--fd-edge-data, #64748b)";
43
+ });
44
+
45
+ /**
46
+ * Evaluate a cubic bezier at parameter t.
47
+ * P(t) = (1-t)^3 * P0 + 3(1-t)^2 * t * P1 + 3(1-t) * t^2 * P2 + t^3 * P3
48
+ */
49
+ function bezierAt(
50
+ p0x: number,
51
+ p0y: number,
52
+ p1x: number,
53
+ p1y: number,
54
+ p2x: number,
55
+ p2y: number,
56
+ p3x: number,
57
+ p3y: number,
58
+ t: number,
59
+ ): { x: number; y: number } {
60
+ const u = 1 - t;
61
+ const uu = u * u;
62
+ const uuu = uu * u;
63
+ const tt = t * t;
64
+ const ttt = tt * t;
65
+ return {
66
+ x: uuu * p0x + 3 * uu * t * p1x + 3 * u * tt * p2x + ttt * p3x,
67
+ y: uuu * p0y + 3 * uu * t * p1y + 3 * u * tt * p2y + ttt * p3y,
68
+ };
69
+ }
70
+
71
+ /**
72
+ * Parse the SVG cubic bezier path "M x0,y0 C x1,y1 x2,y2 x3,y3"
73
+ * into the four control points.
74
+ */
75
+ function parseCubicBezier(d: string) {
76
+ const nums = d.match(/-?[\d.]+/g)?.map(Number);
77
+ if (!nums || nums.length < 8) return null;
78
+ return {
79
+ p0x: nums[0],
80
+ p0y: nums[1],
81
+ p1x: nums[2],
82
+ p1y: nums[3],
83
+ p2x: nums[4],
84
+ p2y: nums[5],
85
+ p3x: nums[6],
86
+ p3y: nums[7],
87
+ };
88
+ }
89
+
90
+ // Parameter near the end of the curve for tangent sampling
91
+ const T_SAMPLE = 0.9;
92
+
93
+ let computed = $derived.by(() => {
94
+ // 1. Get the full bezier path from xyflow
95
+ const [fullPath, lx, ly] = getBezierPath({
96
+ sourceX,
97
+ sourceY,
98
+ targetX,
99
+ targetY,
100
+ sourcePosition,
101
+ targetPosition,
102
+ curvature: pathOptions?.curvature,
103
+ });
104
+
105
+ // 2. Parse control points from SVG path
106
+ const cp = parseCubicBezier(fullPath);
107
+ if (!cp) {
108
+ return { path: fullPath, labelX: lx, labelY: ly, angleDeg: 0 };
109
+ }
110
+
111
+ // 3. Evaluate the curve at T_SAMPLE to get a reference point
112
+ const ref = bezierAt(
113
+ cp.p0x,
114
+ cp.p0y,
115
+ cp.p1x,
116
+ cp.p1y,
117
+ cp.p2x,
118
+ cp.p2y,
119
+ cp.p3x,
120
+ cp.p3y,
121
+ T_SAMPLE,
122
+ );
123
+
124
+ // 4. Tangent direction: from reference point to the target
125
+ const dx = targetX - ref.x;
126
+ const dy = targetY - ref.y;
127
+ const angleDeg = (Math.atan2(dy, dx) * 180) / Math.PI;
128
+ const angleRad = Math.atan2(dy, dx);
129
+
130
+ // 5. Shorten: move the endpoint back along the tangent
131
+ const adjX = targetX - Math.cos(angleRad) * ARROW_LENGTH_PX;
132
+ const adjY = targetY - Math.sin(angleRad) * ARROW_LENGTH_PX;
133
+
134
+ // 6. Recompute the bezier path with the shortened target
135
+ const [shortenedPath] = getBezierPath({
136
+ sourceX,
137
+ sourceY,
138
+ targetX: adjX,
139
+ targetY: adjY,
140
+ sourcePosition,
141
+ targetPosition,
142
+ curvature: pathOptions?.curvature,
143
+ });
144
+
145
+ return { path: shortenedPath, labelX: lx, labelY: ly, angleDeg };
146
+ });
147
147
  </script>
148
148
 
149
149
  <BaseEdge
150
- {id}
151
- path={computed.path}
152
- labelX={computed.labelX}
153
- labelY={computed.labelY}
154
- {label}
155
- {labelStyle}
156
- {markerStart}
157
- {interactionWidth}
158
- {style}
150
+ {id}
151
+ path={computed.path}
152
+ labelX={computed.labelX}
153
+ labelY={computed.labelY}
154
+ {label}
155
+ {labelStyle}
156
+ {markerStart}
157
+ {interactionWidth}
158
+ {style}
159
159
  />
160
160
 
161
161
  <!-- Manual arrowhead: tip at origin pointing right, rotated to the bezier tangent -->
162
162
  <polygon
163
- points="0,0 {-ARROW_LENGTH_PX},{-ARROW_HALF_WIDTH_PX} {-ARROW_LENGTH_PX},{ARROW_HALF_WIDTH_PX}"
164
- fill={strokeColor}
165
- stroke="none"
166
- transform="translate({targetX},{targetY}) rotate({computed.angleDeg})"
167
- class="flowdrop-edge-arrow"
163
+ points="0,0 {-ARROW_LENGTH_PX},{-ARROW_HALF_WIDTH_PX} {-ARROW_LENGTH_PX},{ARROW_HALF_WIDTH_PX}"
164
+ fill={strokeColor}
165
+ stroke="none"
166
+ transform="translate({targetX},{targetY}) rotate({computed.angleDeg})"
167
+ class="flowdrop-edge-arrow"
168
168
  />
@@ -1,4 +1,4 @@
1
- import type { BezierEdgeProps } from '@xyflow/svelte';
1
+ import type { BezierEdgeProps } from "@xyflow/svelte";
2
2
  declare const FlowDropEdge: import("svelte").Component<BezierEdgeProps, {}, "">;
3
3
  type FlowDropEdge = ReturnType<typeof FlowDropEdge>;
4
4
  export default FlowDropEdge;