@flowdrop/flowdrop 1.0.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 (403) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +252 -0
  3. package/dist/adapters/WorkflowAdapter.d.ts +167 -0
  4. package/dist/adapters/WorkflowAdapter.js +368 -0
  5. package/dist/adapters/agentspec/AgentSpecAdapter.d.ts +96 -0
  6. package/dist/adapters/agentspec/AgentSpecAdapter.js +626 -0
  7. package/dist/adapters/agentspec/agentAdapter.d.ts +59 -0
  8. package/dist/adapters/agentspec/agentAdapter.js +91 -0
  9. package/dist/adapters/agentspec/autoLayout.d.ts +34 -0
  10. package/dist/adapters/agentspec/autoLayout.js +127 -0
  11. package/dist/adapters/agentspec/componentTypeDefaults.d.ts +73 -0
  12. package/dist/adapters/agentspec/componentTypeDefaults.js +238 -0
  13. package/dist/adapters/agentspec/defaultNodeTypes.d.ts +53 -0
  14. package/dist/adapters/agentspec/defaultNodeTypes.js +561 -0
  15. package/dist/adapters/agentspec/index.d.ts +37 -0
  16. package/dist/adapters/agentspec/index.js +39 -0
  17. package/dist/adapters/agentspec/validator.d.ts +34 -0
  18. package/dist/adapters/agentspec/validator.js +169 -0
  19. package/dist/api/enhanced-client.d.ts +183 -0
  20. package/dist/api/enhanced-client.js +430 -0
  21. package/dist/components/App.svelte +981 -0
  22. package/dist/components/App.svelte.d.ts +54 -0
  23. package/dist/components/CanvasBanner.stories.svelte +29 -0
  24. package/dist/components/CanvasBanner.stories.svelte.d.ts +27 -0
  25. package/dist/components/CanvasBanner.svelte +57 -0
  26. package/dist/components/CanvasBanner.svelte.d.ts +8 -0
  27. package/dist/components/ConfigForm.svelte +1138 -0
  28. package/dist/components/ConfigForm.svelte.d.ts +44 -0
  29. package/dist/components/ConfigModal.svelte +188 -0
  30. package/dist/components/ConfigModal.svelte.d.ts +13 -0
  31. package/dist/components/ConfigPanel.stories.svelte +47 -0
  32. package/dist/components/ConfigPanel.stories.svelte.d.ts +27 -0
  33. package/dist/components/ConfigPanel.svelte +182 -0
  34. package/dist/components/ConfigPanel.svelte.d.ts +32 -0
  35. package/dist/components/ConnectionLine.svelte +32 -0
  36. package/dist/components/ConnectionLine.svelte.d.ts +3 -0
  37. package/dist/components/EdgeRefresher.svelte +41 -0
  38. package/dist/components/EdgeRefresher.svelte.d.ts +9 -0
  39. package/dist/components/FlowDropZone.svelte +83 -0
  40. package/dist/components/FlowDropZone.svelte.d.ts +13 -0
  41. package/dist/components/LoadingSpinner.stories.svelte +30 -0
  42. package/dist/components/LoadingSpinner.stories.svelte.d.ts +27 -0
  43. package/dist/components/LoadingSpinner.svelte +36 -0
  44. package/dist/components/LoadingSpinner.svelte.d.ts +8 -0
  45. package/dist/components/Logo.stories.svelte +22 -0
  46. package/dist/components/Logo.stories.svelte.d.ts +27 -0
  47. package/dist/components/Logo.svelte +102 -0
  48. package/dist/components/Logo.svelte.d.ts +26 -0
  49. package/dist/components/LogsSidebar.svelte +563 -0
  50. package/dist/components/LogsSidebar.svelte.d.ts +17 -0
  51. package/dist/components/MarkdownDisplay.stories.svelte +36 -0
  52. package/dist/components/MarkdownDisplay.stories.svelte.d.ts +27 -0
  53. package/dist/components/MarkdownDisplay.svelte +29 -0
  54. package/dist/components/MarkdownDisplay.svelte.d.ts +7 -0
  55. package/dist/components/Navbar.stories.svelte +53 -0
  56. package/dist/components/Navbar.stories.svelte.d.ts +27 -0
  57. package/dist/components/Navbar.svelte +726 -0
  58. package/dist/components/Navbar.svelte.d.ts +29 -0
  59. package/dist/components/NodeSidebar.svelte +762 -0
  60. package/dist/components/NodeSidebar.svelte.d.ts +9 -0
  61. package/dist/components/NodeStatusOverlay.stories.svelte +85 -0
  62. package/dist/components/NodeStatusOverlay.stories.svelte.d.ts +27 -0
  63. package/dist/components/NodeStatusOverlay.svelte +327 -0
  64. package/dist/components/NodeStatusOverlay.svelte.d.ts +11 -0
  65. package/dist/components/PipelineStatus.svelte +314 -0
  66. package/dist/components/PipelineStatus.svelte.d.ts +20 -0
  67. package/dist/components/PortCoordinateTracker.svelte +58 -0
  68. package/dist/components/PortCoordinateTracker.svelte.d.ts +12 -0
  69. package/dist/components/ReadOnlyDetails.svelte +170 -0
  70. package/dist/components/ReadOnlyDetails.svelte.d.ts +25 -0
  71. package/dist/components/SchemaForm.stories.svelte +116 -0
  72. package/dist/components/SchemaForm.stories.svelte.d.ts +27 -0
  73. package/dist/components/SchemaForm.svelte +536 -0
  74. package/dist/components/SchemaForm.svelte.d.ts +83 -0
  75. package/dist/components/SettingsModal.svelte +279 -0
  76. package/dist/components/SettingsModal.svelte.d.ts +23 -0
  77. package/dist/components/SettingsPanel.svelte +638 -0
  78. package/dist/components/SettingsPanel.svelte.d.ts +21 -0
  79. package/dist/components/StatusIcon.stories.svelte +60 -0
  80. package/dist/components/StatusIcon.stories.svelte.d.ts +27 -0
  81. package/dist/components/StatusIcon.svelte +119 -0
  82. package/dist/components/StatusIcon.svelte.d.ts +10 -0
  83. package/dist/components/StatusLabel.stories.svelte +17 -0
  84. package/dist/components/StatusLabel.stories.svelte.d.ts +27 -0
  85. package/dist/components/StatusLabel.svelte +33 -0
  86. package/dist/components/StatusLabel.svelte.d.ts +7 -0
  87. package/dist/components/ThemeToggle.stories.svelte +25 -0
  88. package/dist/components/ThemeToggle.stories.svelte.d.ts +27 -0
  89. package/dist/components/ThemeToggle.svelte +185 -0
  90. package/dist/components/ThemeToggle.svelte.d.ts +14 -0
  91. package/dist/components/UniversalNode.svelte +155 -0
  92. package/dist/components/UniversalNode.svelte.d.ts +15 -0
  93. package/dist/components/WorkflowEditor.svelte +1035 -0
  94. package/dist/components/WorkflowEditor.svelte.d.ts +23 -0
  95. package/dist/components/form/FormArray.svelte +1049 -0
  96. package/dist/components/form/FormArray.svelte.d.ts +22 -0
  97. package/dist/components/form/FormAutocomplete.svelte +1009 -0
  98. package/dist/components/form/FormAutocomplete.svelte.d.ts +25 -0
  99. package/dist/components/form/FormCheckboxGroup.stories.svelte +28 -0
  100. package/dist/components/form/FormCheckboxGroup.stories.svelte.d.ts +27 -0
  101. package/dist/components/form/FormCheckboxGroup.svelte +155 -0
  102. package/dist/components/form/FormCheckboxGroup.svelte.d.ts +17 -0
  103. package/dist/components/form/FormCodeEditor.svelte +458 -0
  104. package/dist/components/form/FormCodeEditor.svelte.d.ts +25 -0
  105. package/dist/components/form/FormField.svelte +417 -0
  106. package/dist/components/form/FormField.svelte.d.ts +29 -0
  107. package/dist/components/form/FormFieldLight.svelte +425 -0
  108. package/dist/components/form/FormFieldLight.svelte.d.ts +18 -0
  109. package/dist/components/form/FormFieldWrapper.stories.svelte +53 -0
  110. package/dist/components/form/FormFieldWrapper.stories.svelte.d.ts +27 -0
  111. package/dist/components/form/FormFieldWrapper.svelte +125 -0
  112. package/dist/components/form/FormFieldWrapper.svelte.d.ts +18 -0
  113. package/dist/components/form/FormFieldset.svelte +142 -0
  114. package/dist/components/form/FormFieldset.svelte.d.ts +11 -0
  115. package/dist/components/form/FormMarkdownEditor.svelte +752 -0
  116. package/dist/components/form/FormMarkdownEditor.svelte.d.ts +33 -0
  117. package/dist/components/form/FormNumberField.stories.svelte +36 -0
  118. package/dist/components/form/FormNumberField.stories.svelte.d.ts +27 -0
  119. package/dist/components/form/FormNumberField.svelte +112 -0
  120. package/dist/components/form/FormNumberField.svelte.d.ts +25 -0
  121. package/dist/components/form/FormRangeField.stories.svelte +31 -0
  122. package/dist/components/form/FormRangeField.stories.svelte.d.ts +27 -0
  123. package/dist/components/form/FormRangeField.svelte +246 -0
  124. package/dist/components/form/FormRangeField.svelte.d.ts +23 -0
  125. package/dist/components/form/FormSelect.stories.svelte +50 -0
  126. package/dist/components/form/FormSelect.stories.svelte.d.ts +27 -0
  127. package/dist/components/form/FormSelect.svelte +129 -0
  128. package/dist/components/form/FormSelect.svelte.d.ts +20 -0
  129. package/dist/components/form/FormTemplateEditor.svelte +825 -0
  130. package/dist/components/form/FormTemplateEditor.svelte.d.ts +41 -0
  131. package/dist/components/form/FormTextField.stories.svelte +30 -0
  132. package/dist/components/form/FormTextField.stories.svelte.d.ts +27 -0
  133. package/dist/components/form/FormTextField.svelte +91 -0
  134. package/dist/components/form/FormTextField.svelte.d.ts +19 -0
  135. package/dist/components/form/FormTextarea.stories.svelte +34 -0
  136. package/dist/components/form/FormTextarea.stories.svelte.d.ts +27 -0
  137. package/dist/components/form/FormTextarea.svelte +97 -0
  138. package/dist/components/form/FormTextarea.svelte.d.ts +21 -0
  139. package/dist/components/form/FormToggle.stories.svelte +30 -0
  140. package/dist/components/form/FormToggle.stories.svelte.d.ts +27 -0
  141. package/dist/components/form/FormToggle.svelte +126 -0
  142. package/dist/components/form/FormToggle.svelte.d.ts +19 -0
  143. package/dist/components/form/FormUISchemaRenderer.svelte +136 -0
  144. package/dist/components/form/FormUISchemaRenderer.svelte.d.ts +32 -0
  145. package/dist/components/form/index.d.ts +50 -0
  146. package/dist/components/form/index.js +54 -0
  147. package/dist/components/form/templateAutocomplete.d.ts +29 -0
  148. package/dist/components/form/templateAutocomplete.js +254 -0
  149. package/dist/components/form/types.d.ts +485 -0
  150. package/dist/components/form/types.js +73 -0
  151. package/dist/components/interrupt/ChoicePrompt.stories.svelte +52 -0
  152. package/dist/components/interrupt/ChoicePrompt.stories.svelte.d.ts +27 -0
  153. package/dist/components/interrupt/ChoicePrompt.svelte +401 -0
  154. package/dist/components/interrupt/ChoicePrompt.svelte.d.ts +23 -0
  155. package/dist/components/interrupt/ConfirmationPrompt.stories.svelte +71 -0
  156. package/dist/components/interrupt/ConfirmationPrompt.stories.svelte.d.ts +27 -0
  157. package/dist/components/interrupt/ConfirmationPrompt.svelte +292 -0
  158. package/dist/components/interrupt/ConfirmationPrompt.svelte.d.ts +25 -0
  159. package/dist/components/interrupt/FormPrompt.svelte +236 -0
  160. package/dist/components/interrupt/FormPrompt.svelte.d.ts +23 -0
  161. package/dist/components/interrupt/InterruptBubble.svelte +601 -0
  162. package/dist/components/interrupt/InterruptBubble.svelte.d.ts +16 -0
  163. package/dist/components/interrupt/ReviewPrompt.stories.svelte +67 -0
  164. package/dist/components/interrupt/ReviewPrompt.stories.svelte.d.ts +27 -0
  165. package/dist/components/interrupt/ReviewPrompt.svelte +861 -0
  166. package/dist/components/interrupt/ReviewPrompt.svelte.d.ts +23 -0
  167. package/dist/components/interrupt/TextInputPrompt.stories.svelte +47 -0
  168. package/dist/components/interrupt/TextInputPrompt.stories.svelte.d.ts +27 -0
  169. package/dist/components/interrupt/TextInputPrompt.svelte +346 -0
  170. package/dist/components/interrupt/TextInputPrompt.svelte.d.ts +23 -0
  171. package/dist/components/interrupt/index.d.ts +13 -0
  172. package/dist/components/interrupt/index.js +15 -0
  173. package/dist/components/layouts/MainLayout.svelte +718 -0
  174. package/dist/components/layouts/MainLayout.svelte.d.ts +62 -0
  175. package/dist/components/nodes/GatewayNode.stories.svelte +108 -0
  176. package/dist/components/nodes/GatewayNode.stories.svelte.d.ts +26 -0
  177. package/dist/components/nodes/GatewayNode.svelte +591 -0
  178. package/dist/components/nodes/GatewayNode.svelte.d.ts +15 -0
  179. package/dist/components/nodes/IdeaNode.stories.svelte +52 -0
  180. package/dist/components/nodes/IdeaNode.stories.svelte.d.ts +26 -0
  181. package/dist/components/nodes/IdeaNode.svelte +455 -0
  182. package/dist/components/nodes/IdeaNode.svelte.d.ts +24 -0
  183. package/dist/components/nodes/NotesNode.stories.svelte +76 -0
  184. package/dist/components/nodes/NotesNode.stories.svelte.d.ts +26 -0
  185. package/dist/components/nodes/NotesNode.svelte +378 -0
  186. package/dist/components/nodes/NotesNode.svelte.d.ts +24 -0
  187. package/dist/components/nodes/SimpleNode.stories.svelte +159 -0
  188. package/dist/components/nodes/SimpleNode.stories.svelte.d.ts +26 -0
  189. package/dist/components/nodes/SimpleNode.svelte +451 -0
  190. package/dist/components/nodes/SimpleNode.svelte.d.ts +25 -0
  191. package/dist/components/nodes/SquareNode.stories.svelte +82 -0
  192. package/dist/components/nodes/SquareNode.stories.svelte.d.ts +26 -0
  193. package/dist/components/nodes/SquareNode.svelte +407 -0
  194. package/dist/components/nodes/SquareNode.svelte.d.ts +25 -0
  195. package/dist/components/nodes/TerminalNode.stories.svelte +25 -0
  196. package/dist/components/nodes/TerminalNode.stories.svelte.d.ts +26 -0
  197. package/dist/components/nodes/TerminalNode.svelte +690 -0
  198. package/dist/components/nodes/TerminalNode.svelte.d.ts +25 -0
  199. package/dist/components/nodes/ToolNode.stories.svelte +189 -0
  200. package/dist/components/nodes/ToolNode.stories.svelte.d.ts +26 -0
  201. package/dist/components/nodes/ToolNode.svelte +471 -0
  202. package/dist/components/nodes/ToolNode.svelte.d.ts +36 -0
  203. package/dist/components/nodes/WorkflowNode.stories.svelte +55 -0
  204. package/dist/components/nodes/WorkflowNode.stories.svelte.d.ts +26 -0
  205. package/dist/components/nodes/WorkflowNode.svelte +571 -0
  206. package/dist/components/nodes/WorkflowNode.svelte.d.ts +15 -0
  207. package/dist/components/playground/ChatPanel.svelte +905 -0
  208. package/dist/components/playground/ChatPanel.svelte.d.ts +46 -0
  209. package/dist/components/playground/ExecutionLogs.svelte +488 -0
  210. package/dist/components/playground/ExecutionLogs.svelte.d.ts +14 -0
  211. package/dist/components/playground/InputCollector.svelte +444 -0
  212. package/dist/components/playground/InputCollector.svelte.d.ts +16 -0
  213. package/dist/components/playground/MessageBubble.stories.svelte +62 -0
  214. package/dist/components/playground/MessageBubble.stories.svelte.d.ts +27 -0
  215. package/dist/components/playground/MessageBubble.svelte +633 -0
  216. package/dist/components/playground/MessageBubble.svelte.d.ts +24 -0
  217. package/dist/components/playground/Playground.svelte +1075 -0
  218. package/dist/components/playground/Playground.svelte.d.ts +25 -0
  219. package/dist/components/playground/PlaygroundModal.svelte +220 -0
  220. package/dist/components/playground/PlaygroundModal.svelte.d.ts +25 -0
  221. package/dist/components/playground/SessionManager.svelte +538 -0
  222. package/dist/components/playground/SessionManager.svelte.d.ts +20 -0
  223. package/dist/config/agentSpecEndpoints.d.ts +70 -0
  224. package/dist/config/agentSpecEndpoints.js +65 -0
  225. package/dist/config/constants.d.ts +43 -0
  226. package/dist/config/constants.js +31 -0
  227. package/dist/config/defaultCategories.d.ts +7 -0
  228. package/dist/config/defaultCategories.js +126 -0
  229. package/dist/config/defaultPortConfig.d.ts +6 -0
  230. package/dist/config/defaultPortConfig.js +201 -0
  231. package/dist/config/endpoints.d.ts +160 -0
  232. package/dist/config/endpoints.js +146 -0
  233. package/dist/config/runtimeConfig.d.ts +47 -0
  234. package/dist/config/runtimeConfig.js +80 -0
  235. package/dist/core/index.d.ts +75 -0
  236. package/dist/core/index.js +92 -0
  237. package/dist/display/index.d.ts +29 -0
  238. package/dist/display/index.js +36 -0
  239. package/dist/editor/index.d.ts +95 -0
  240. package/dist/editor/index.js +138 -0
  241. package/dist/form/code.d.ts +101 -0
  242. package/dist/form/code.js +168 -0
  243. package/dist/form/fieldRegistry.d.ts +169 -0
  244. package/dist/form/fieldRegistry.js +152 -0
  245. package/dist/form/full.d.ts +56 -0
  246. package/dist/form/full.js +80 -0
  247. package/dist/form/index.d.ts +77 -0
  248. package/dist/form/index.js +91 -0
  249. package/dist/form/markdown.d.ts +69 -0
  250. package/dist/form/markdown.js +103 -0
  251. package/dist/helpers/nodeLayoutHelper.d.ts +14 -0
  252. package/dist/helpers/nodeLayoutHelper.js +19 -0
  253. package/dist/helpers/proximityConnect.d.ts +94 -0
  254. package/dist/helpers/proximityConnect.js +314 -0
  255. package/dist/helpers/workflowEditorHelper.d.ts +183 -0
  256. package/dist/helpers/workflowEditorHelper.js +595 -0
  257. package/dist/index.d.ts +37 -0
  258. package/dist/index.js +64 -0
  259. package/dist/mocks/app-environment.d.ts +8 -0
  260. package/dist/mocks/app-environment.js +16 -0
  261. package/dist/mocks/app-forms.d.ts +2 -0
  262. package/dist/mocks/app-forms.js +22 -0
  263. package/dist/mocks/app-navigation.d.ts +5 -0
  264. package/dist/mocks/app-navigation.js +36 -0
  265. package/dist/mocks/app-stores.d.ts +14 -0
  266. package/dist/mocks/app-stores.js +26 -0
  267. package/dist/playground/index.d.ts +131 -0
  268. package/dist/playground/index.js +172 -0
  269. package/dist/playground/mount.d.ts +203 -0
  270. package/dist/playground/mount.js +235 -0
  271. package/dist/registry/BaseRegistry.d.ts +92 -0
  272. package/dist/registry/BaseRegistry.js +124 -0
  273. package/dist/registry/builtinFormats.d.ts +23 -0
  274. package/dist/registry/builtinFormats.js +70 -0
  275. package/dist/registry/builtinNodes.d.ts +77 -0
  276. package/dist/registry/builtinNodes.js +211 -0
  277. package/dist/registry/index.d.ts +8 -0
  278. package/dist/registry/index.js +12 -0
  279. package/dist/registry/nodeComponentRegistry.d.ts +276 -0
  280. package/dist/registry/nodeComponentRegistry.js +262 -0
  281. package/dist/registry/plugin.d.ts +215 -0
  282. package/dist/registry/plugin.js +249 -0
  283. package/dist/registry/workflowFormatRegistry.d.ts +122 -0
  284. package/dist/registry/workflowFormatRegistry.js +96 -0
  285. package/dist/schema/index.d.ts +23 -0
  286. package/dist/schema/index.js +23 -0
  287. package/dist/schemas/v1/workflow.schema.json +1078 -0
  288. package/dist/services/agentSpecExecutionService.d.ts +106 -0
  289. package/dist/services/agentSpecExecutionService.js +334 -0
  290. package/dist/services/api.d.ts +115 -0
  291. package/dist/services/api.js +214 -0
  292. package/dist/services/apiVariableService.d.ts +114 -0
  293. package/dist/services/apiVariableService.js +338 -0
  294. package/dist/services/autoSaveService.d.ts +112 -0
  295. package/dist/services/autoSaveService.js +227 -0
  296. package/dist/services/categoriesApi.d.ts +14 -0
  297. package/dist/services/categoriesApi.js +49 -0
  298. package/dist/services/draftStorage.d.ts +171 -0
  299. package/dist/services/draftStorage.js +299 -0
  300. package/dist/services/dynamicSchemaService.d.ts +108 -0
  301. package/dist/services/dynamicSchemaService.js +444 -0
  302. package/dist/services/globalSave.d.ts +69 -0
  303. package/dist/services/globalSave.js +248 -0
  304. package/dist/services/historyService.d.ts +208 -0
  305. package/dist/services/historyService.js +321 -0
  306. package/dist/services/interruptService.d.ts +133 -0
  307. package/dist/services/interruptService.js +280 -0
  308. package/dist/services/nodeExecutionService.d.ts +63 -0
  309. package/dist/services/nodeExecutionService.js +266 -0
  310. package/dist/services/playgroundService.d.ts +130 -0
  311. package/dist/services/playgroundService.js +321 -0
  312. package/dist/services/portConfigApi.d.ts +14 -0
  313. package/dist/services/portConfigApi.js +54 -0
  314. package/dist/services/settingsService.d.ts +92 -0
  315. package/dist/services/settingsService.js +196 -0
  316. package/dist/services/toastService.d.ts +156 -0
  317. package/dist/services/toastService.js +265 -0
  318. package/dist/services/variableService.d.ts +141 -0
  319. package/dist/services/variableService.js +463 -0
  320. package/dist/services/workflowStorage.d.ts +37 -0
  321. package/dist/services/workflowStorage.js +116 -0
  322. package/dist/settings/index.d.ts +25 -0
  323. package/dist/settings/index.js +33 -0
  324. package/dist/stores/categoriesStore.svelte.d.ts +32 -0
  325. package/dist/stores/categoriesStore.svelte.js +77 -0
  326. package/dist/stores/editorStateMachine.svelte.d.ts +42 -0
  327. package/dist/stores/editorStateMachine.svelte.js +132 -0
  328. package/dist/stores/historyStore.svelte.d.ts +136 -0
  329. package/dist/stores/historyStore.svelte.js +207 -0
  330. package/dist/stores/interruptStore.svelte.d.ts +179 -0
  331. package/dist/stores/interruptStore.svelte.js +346 -0
  332. package/dist/stores/playgroundStore.svelte.d.ts +230 -0
  333. package/dist/stores/playgroundStore.svelte.js +515 -0
  334. package/dist/stores/portCoordinateStore.svelte.d.ts +66 -0
  335. package/dist/stores/portCoordinateStore.svelte.js +186 -0
  336. package/dist/stores/settingsStore.svelte.d.ts +158 -0
  337. package/dist/stores/settingsStore.svelte.js +544 -0
  338. package/dist/stores/workflowStore.svelte.d.ts +260 -0
  339. package/dist/stores/workflowStore.svelte.js +649 -0
  340. package/dist/stories/CanvasDecorator.svelte +49 -0
  341. package/dist/stories/CanvasDecorator.svelte.d.ts +8 -0
  342. package/dist/stories/NodeDecorator.svelte +73 -0
  343. package/dist/stories/NodeDecorator.svelte.d.ts +8 -0
  344. package/dist/stories/utils.d.ts +93 -0
  345. package/dist/stories/utils.js +122 -0
  346. package/dist/styles/base.css +1300 -0
  347. package/dist/styles/toast.css +35 -0
  348. package/dist/styles/tokens.css +475 -0
  349. package/dist/svelte-app.d.ts +150 -0
  350. package/dist/svelte-app.js +295 -0
  351. package/dist/types/agentspec.d.ts +318 -0
  352. package/dist/types/agentspec.js +48 -0
  353. package/dist/types/auth.d.ts +263 -0
  354. package/dist/types/auth.js +229 -0
  355. package/dist/types/config.d.ts +151 -0
  356. package/dist/types/config.js +7 -0
  357. package/dist/types/events.d.ts +190 -0
  358. package/dist/types/events.js +30 -0
  359. package/dist/types/index.d.ts +1234 -0
  360. package/dist/types/index.js +27 -0
  361. package/dist/types/interrupt.d.ts +390 -0
  362. package/dist/types/interrupt.js +145 -0
  363. package/dist/types/interruptState.d.ts +211 -0
  364. package/dist/types/interruptState.js +308 -0
  365. package/dist/types/playground.d.ts +351 -0
  366. package/dist/types/playground.js +95 -0
  367. package/dist/types/settings.d.ts +189 -0
  368. package/dist/types/settings.js +97 -0
  369. package/dist/types/uischema.d.ts +144 -0
  370. package/dist/types/uischema.js +51 -0
  371. package/dist/utils/colors.d.ts +288 -0
  372. package/dist/utils/colors.js +548 -0
  373. package/dist/utils/config.d.ts +37 -0
  374. package/dist/utils/config.js +226 -0
  375. package/dist/utils/connections.d.ts +125 -0
  376. package/dist/utils/connections.js +414 -0
  377. package/dist/utils/errors.d.ts +28 -0
  378. package/dist/utils/errors.js +44 -0
  379. package/dist/utils/fetchWithAuth.d.ts +25 -0
  380. package/dist/utils/fetchWithAuth.js +34 -0
  381. package/dist/utils/handleIds.d.ts +35 -0
  382. package/dist/utils/handleIds.js +58 -0
  383. package/dist/utils/handlePositioning.d.ts +31 -0
  384. package/dist/utils/handlePositioning.js +35 -0
  385. package/dist/utils/icons.d.ts +106 -0
  386. package/dist/utils/icons.js +157 -0
  387. package/dist/utils/logger.d.ts +47 -0
  388. package/dist/utils/logger.js +72 -0
  389. package/dist/utils/nodeStatus.d.ts +53 -0
  390. package/dist/utils/nodeStatus.js +183 -0
  391. package/dist/utils/nodeTypes.d.ts +117 -0
  392. package/dist/utils/nodeTypes.js +244 -0
  393. package/dist/utils/nodeWrapper.d.ts +39 -0
  394. package/dist/utils/nodeWrapper.js +62 -0
  395. package/dist/utils/performanceUtils.d.ts +30 -0
  396. package/dist/utils/performanceUtils.js +108 -0
  397. package/dist/utils/sanitize.d.ts +19 -0
  398. package/dist/utils/sanitize.js +31 -0
  399. package/dist/utils/uischema.d.ts +52 -0
  400. package/dist/utils/uischema.js +88 -0
  401. package/dist/utils/validation.d.ts +29 -0
  402. package/dist/utils/validation.js +39 -0
  403. package/package.json +292 -0
@@ -0,0 +1,152 @@
1
+ /**
2
+ * Form Field Component Registry
3
+ *
4
+ * Provides a registry system for form field components that enables:
5
+ * - Tree-shaking: Heavy components (code editor, markdown) are only bundled when registered
6
+ * - Dynamic field types: Users can add custom field renderers
7
+ * - Lazy loading: Components can be registered at runtime
8
+ *
9
+ * Extends BaseRegistry for shared mechanics (subscribe, onClear, etc.).
10
+ *
11
+ * @module form/fieldRegistry
12
+ *
13
+ * @example Basic usage with light fields only (no codemirror):
14
+ * ```typescript
15
+ * import { SchemaForm } from "@flowdrop/flowdrop/form";
16
+ * // Uses only basic fields - small bundle size
17
+ * ```
18
+ *
19
+ * @example Adding code editor support:
20
+ * ```typescript
21
+ * import { fieldComponentRegistry } from "@flowdrop/flowdrop/form";
22
+ * import { FormCodeEditor, codeEditorFieldMatcher } from "@flowdrop/flowdrop/form/code";
23
+ *
24
+ * fieldComponentRegistry.register("code-editor", {
25
+ * component: FormCodeEditor,
26
+ * matcher: codeEditorFieldMatcher,
27
+ * priority: 100
28
+ * });
29
+ * ```
30
+ */
31
+ import { BaseRegistry } from '../registry/BaseRegistry.js';
32
+ /**
33
+ * Class-based field component registry.
34
+ * Extends BaseRegistry with priority-based field resolution.
35
+ */
36
+ class FieldComponentRegistry extends BaseRegistry {
37
+ /** Cached ordered keys by priority (highest first), invalidated on mutation */
38
+ orderedKeys = null;
39
+ /**
40
+ * Register a field component.
41
+ * Silently overwrites existing registrations (preserves legacy behavior).
42
+ *
43
+ * @param type - Unique identifier for this field type
44
+ * @param registration - The field component registration
45
+ */
46
+ register(type, registration) {
47
+ this.items.set(type, registration);
48
+ this.orderedKeys = null;
49
+ this.notifyListeners();
50
+ }
51
+ /**
52
+ * Override unregister to invalidate the priority cache.
53
+ */
54
+ unregister(key) {
55
+ const result = super.unregister(key);
56
+ if (result) {
57
+ this.orderedKeys = null;
58
+ }
59
+ return result;
60
+ }
61
+ /**
62
+ * Override clear to invalidate the priority cache.
63
+ */
64
+ clear() {
65
+ super.clear();
66
+ this.orderedKeys = null;
67
+ }
68
+ /**
69
+ * Resolve which component should render a given field schema.
70
+ * Checks registered matchers in priority order (highest first).
71
+ *
72
+ * @param schema - The field schema to resolve
73
+ * @returns The matching registration or null if no match
74
+ */
75
+ resolveFieldComponent(schema) {
76
+ const keys = this.getOrderedKeys();
77
+ for (const key of keys) {
78
+ const registration = this.items.get(key);
79
+ if (registration && registration.matcher(schema)) {
80
+ return registration;
81
+ }
82
+ }
83
+ return null;
84
+ }
85
+ /**
86
+ * Get keys ordered by priority (cached).
87
+ */
88
+ getOrderedKeys() {
89
+ if (this.orderedKeys === null) {
90
+ this.orderedKeys = Array.from(this.items.entries())
91
+ .sort((a, b) => b[1].priority - a[1].priority)
92
+ .map(([key]) => key);
93
+ }
94
+ return this.orderedKeys;
95
+ }
96
+ }
97
+ /** Singleton instance of the field component registry */
98
+ export const fieldComponentRegistry = new FieldComponentRegistry();
99
+ // ============================================================================
100
+ // Built-in Field Matchers (for light fields)
101
+ // These are always available and used by the base FormField component
102
+ // ============================================================================
103
+ /**
104
+ * Matcher for hidden fields (should not render)
105
+ */
106
+ export const hiddenFieldMatcher = (schema) => schema.format === 'hidden';
107
+ /**
108
+ * Matcher for checkbox group fields (enum with multiple)
109
+ */
110
+ export const checkboxGroupMatcher = (schema) => Boolean(schema.enum && schema.multiple);
111
+ /**
112
+ * Matcher for enum select fields
113
+ */
114
+ export const enumSelectMatcher = (schema) => Boolean(schema.enum && !schema.multiple);
115
+ /**
116
+ * Matcher for multiline textarea fields
117
+ */
118
+ export const textareaMatcher = (schema) => schema.type === 'string' && schema.format === 'multiline';
119
+ /**
120
+ * Matcher for range slider fields
121
+ */
122
+ export const rangeMatcher = (schema) => (schema.type === 'number' || schema.type === 'integer') && schema.format === 'range';
123
+ /**
124
+ * Matcher for string text fields
125
+ */
126
+ export const textFieldMatcher = (schema) => schema.type === 'string' && !schema.format;
127
+ /**
128
+ * Matcher for number fields
129
+ */
130
+ export const numberFieldMatcher = (schema) => (schema.type === 'number' || schema.type === 'integer') && schema.format !== 'range';
131
+ /**
132
+ * Matcher for boolean toggle fields
133
+ */
134
+ export const toggleMatcher = (schema) => schema.type === 'boolean';
135
+ /**
136
+ * Matcher for select fields with labeled options (JSON Schema oneOf pattern)
137
+ *
138
+ * @example
139
+ * ```json
140
+ * { "type": "string", "oneOf": [{ "const": "a", "title": "Option A" }] }
141
+ * ```
142
+ */
143
+ export const selectOptionsMatcher = (schema) => Boolean(schema.oneOf && schema.oneOf.length > 0);
144
+ /**
145
+ * Matcher for array fields
146
+ */
147
+ export const arrayMatcher = (schema) => schema.type === 'array' && Boolean(schema.items);
148
+ /**
149
+ * Matcher for autocomplete fields
150
+ * Matches when format is "autocomplete" and autocomplete config with URL is provided
151
+ */
152
+ export const autocompleteMatcher = (schema) => schema.format === 'autocomplete' && Boolean(schema.autocomplete?.url);
@@ -0,0 +1,56 @@
1
+ /**
2
+ * FlowDrop Form Full Module
3
+ *
4
+ * Convenience module that imports and registers all form field types,
5
+ * including heavy editors (CodeMirror).
6
+ *
7
+ * This is equivalent to importing from the light form module and manually
8
+ * registering all editor types.
9
+ *
10
+ * @module form/full
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * // Single import that sets up everything
15
+ * import { SchemaForm, initializeAllFieldTypes } from "@flowdrop/flowdrop/form/full";
16
+ *
17
+ * // Call once at app startup
18
+ * initializeAllFieldTypes();
19
+ *
20
+ * // Now all field types are available
21
+ * ```
22
+ */
23
+ export { SchemaForm, FormField, FormFieldFull, FormFieldWrapper, FormTextField, FormTextarea, FormNumberField, FormRangeField, FormToggle, FormSelect, FormCheckboxGroup, FormArray, FormFieldset, FormUISchemaRenderer } from './index.js';
24
+ export type { FieldSchema, FieldType, FieldFormat, FieldOption, OneOfItem, SchemaFormProps, BaseFieldProps, TextFieldProps, TextareaFieldProps, NumberFieldProps, ToggleFieldProps, RangeFieldProps, SelectFieldProps, CheckboxGroupFieldProps, ArrayFieldProps, FormFieldFactoryProps, FormFieldWrapperProps, FieldComponentProps, FieldMatcher, FieldMatcherRegistration, FieldComponent, FieldComponentRegistration } from './index.js';
25
+ export { isFieldOptionArray, isOneOfArray, normalizeOptions, oneOfToOptions, getSchemaOptions } from './index.js';
26
+ export { fieldComponentRegistry, hiddenFieldMatcher, checkboxGroupMatcher, enumSelectMatcher, textareaMatcher, rangeMatcher, textFieldMatcher, numberFieldMatcher, toggleMatcher, selectOptionsMatcher, arrayMatcher } from './index.js';
27
+ export { FormCodeEditor, FormTemplateEditor } from './code.js';
28
+ export { FormMarkdownEditor } from './markdown.js';
29
+ export { registerCodeEditorField, registerTemplateEditorField, registerAllCodeEditors, isCodeEditorRegistered, isTemplateEditorRegistered, codeEditorFieldMatcher, templateEditorFieldMatcher } from './code.js';
30
+ export { registerMarkdownEditorField, isMarkdownEditorRegistered, markdownEditorFieldMatcher } from './markdown.js';
31
+ /**
32
+ * Initialize all form field types including heavy editors
33
+ *
34
+ * Call this once at application startup to enable all field types.
35
+ * This includes:
36
+ * - Code/JSON editor (CodeMirror)
37
+ * - Template editor (CodeMirror with Twig/Liquid syntax)
38
+ * - Markdown editor (CodeMirror 6)
39
+ *
40
+ * @example
41
+ * ```typescript
42
+ * import { initializeAllFieldTypes } from "@flowdrop/flowdrop/form/full";
43
+ *
44
+ * // In your app's entry point
45
+ * initializeAllFieldTypes();
46
+ * ```
47
+ */
48
+ export declare function initializeAllFieldTypes(): void;
49
+ /**
50
+ * Check if all field types have been initialized
51
+ */
52
+ export declare function areAllFieldTypesInitialized(): boolean;
53
+ /**
54
+ * Reset initialization state (useful for testing)
55
+ */
56
+ export declare function resetFieldTypeInitialization(): void;
@@ -0,0 +1,80 @@
1
+ /**
2
+ * FlowDrop Form Full Module
3
+ *
4
+ * Convenience module that imports and registers all form field types,
5
+ * including heavy editors (CodeMirror).
6
+ *
7
+ * This is equivalent to importing from the light form module and manually
8
+ * registering all editor types.
9
+ *
10
+ * @module form/full
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * // Single import that sets up everything
15
+ * import { SchemaForm, initializeAllFieldTypes } from "@flowdrop/flowdrop/form/full";
16
+ *
17
+ * // Call once at app startup
18
+ * initializeAllFieldTypes();
19
+ *
20
+ * // Now all field types are available
21
+ * ```
22
+ */
23
+ // Re-export everything from the light form module
24
+ // Components
25
+ export { SchemaForm, FormField, FormFieldFull, FormFieldWrapper, FormTextField, FormTextarea, FormNumberField, FormRangeField, FormToggle, FormSelect, FormCheckboxGroup, FormArray, FormFieldset, FormUISchemaRenderer } from './index.js';
26
+ // Utility functions
27
+ export { isFieldOptionArray, isOneOfArray, normalizeOptions, oneOfToOptions, getSchemaOptions } from './index.js';
28
+ // Field Registry
29
+ export { fieldComponentRegistry, hiddenFieldMatcher, checkboxGroupMatcher, enumSelectMatcher, textareaMatcher, rangeMatcher, textFieldMatcher, numberFieldMatcher, toggleMatcher, selectOptionsMatcher, arrayMatcher } from './index.js';
30
+ // Import registration functions
31
+ import { registerCodeEditorField, registerTemplateEditorField } from './code.js';
32
+ import { registerMarkdownEditorField } from './markdown.js';
33
+ // Re-export heavy editor components for direct access
34
+ export { FormCodeEditor, FormTemplateEditor } from './code.js';
35
+ export { FormMarkdownEditor } from './markdown.js';
36
+ // Re-export registration functions
37
+ export { registerCodeEditorField, registerTemplateEditorField, registerAllCodeEditors, isCodeEditorRegistered, isTemplateEditorRegistered, codeEditorFieldMatcher, templateEditorFieldMatcher } from './code.js';
38
+ export { registerMarkdownEditorField, isMarkdownEditorRegistered, markdownEditorFieldMatcher } from './markdown.js';
39
+ /**
40
+ * Track if all field types have been initialized
41
+ */
42
+ let allFieldTypesInitialized = false;
43
+ /**
44
+ * Initialize all form field types including heavy editors
45
+ *
46
+ * Call this once at application startup to enable all field types.
47
+ * This includes:
48
+ * - Code/JSON editor (CodeMirror)
49
+ * - Template editor (CodeMirror with Twig/Liquid syntax)
50
+ * - Markdown editor (CodeMirror 6)
51
+ *
52
+ * @example
53
+ * ```typescript
54
+ * import { initializeAllFieldTypes } from "@flowdrop/flowdrop/form/full";
55
+ *
56
+ * // In your app's entry point
57
+ * initializeAllFieldTypes();
58
+ * ```
59
+ */
60
+ export function initializeAllFieldTypes() {
61
+ if (allFieldTypesInitialized) {
62
+ return;
63
+ }
64
+ registerCodeEditorField();
65
+ registerTemplateEditorField();
66
+ registerMarkdownEditorField();
67
+ allFieldTypesInitialized = true;
68
+ }
69
+ /**
70
+ * Check if all field types have been initialized
71
+ */
72
+ export function areAllFieldTypesInitialized() {
73
+ return allFieldTypesInitialized;
74
+ }
75
+ /**
76
+ * Reset initialization state (useful for testing)
77
+ */
78
+ export function resetFieldTypeInitialization() {
79
+ allFieldTypesInitialized = false;
80
+ }
@@ -0,0 +1,77 @@
1
+ /**
2
+ * FlowDrop Form Module
3
+ *
4
+ * Provides SchemaForm and form field components for building dynamic forms
5
+ * from JSON Schema definitions. This is the "light" version that includes
6
+ * only basic field types (text, number, select, checkbox, etc.).
7
+ *
8
+ * For code editor support (CodeMirror), import from "@flowdrop/flowdrop/form/code"
9
+ * For markdown editor support (CodeMirror 6), import from "@flowdrop/flowdrop/form/markdown"
10
+ *
11
+ * @module form
12
+ *
13
+ * @example Basic usage (small bundle - ~20KB):
14
+ * ```typescript
15
+ * import { SchemaForm } from "@flowdrop/flowdrop/form";
16
+ *
17
+ * const schema = {
18
+ * type: "object",
19
+ * properties: {
20
+ * name: { type: "string", title: "Name" },
21
+ * age: { type: "number", title: "Age" }
22
+ * }
23
+ * };
24
+ * ```
25
+ *
26
+ * @example Select field with labeled options (JSON Schema standard):
27
+ * ```typescript
28
+ * const schema = {
29
+ * type: "object",
30
+ * properties: {
31
+ * status: {
32
+ * type: "string",
33
+ * title: "Status",
34
+ * oneOf: [
35
+ * { const: "draft", title: "Draft" },
36
+ * { const: "published", title: "Published" },
37
+ * { const: "archived", title: "Archived" }
38
+ * ]
39
+ * }
40
+ * }
41
+ * };
42
+ * ```
43
+ *
44
+ * @example With code editor support (adds ~300KB):
45
+ * ```typescript
46
+ * import { SchemaForm } from "@flowdrop/flowdrop/form";
47
+ * import { registerCodeEditorField } from "@flowdrop/flowdrop/form/code";
48
+ *
49
+ * // Register code editor support before using
50
+ * registerCodeEditorField();
51
+ *
52
+ * const schema = {
53
+ * type: "object",
54
+ * properties: {
55
+ * config: { type: "object", format: "json", title: "Configuration" }
56
+ * }
57
+ * };
58
+ * ```
59
+ */
60
+ export { default as SchemaForm } from '../components/SchemaForm.svelte';
61
+ export { default as FormField } from '../components/form/FormFieldLight.svelte';
62
+ export { default as FormFieldFull } from '../components/form/FormField.svelte';
63
+ export { default as FormFieldWrapper } from '../components/form/FormFieldWrapper.svelte';
64
+ export { default as FormTextField } from '../components/form/FormTextField.svelte';
65
+ export { default as FormTextarea } from '../components/form/FormTextarea.svelte';
66
+ export { default as FormNumberField } from '../components/form/FormNumberField.svelte';
67
+ export { default as FormRangeField } from '../components/form/FormRangeField.svelte';
68
+ export { default as FormToggle } from '../components/form/FormToggle.svelte';
69
+ export { default as FormSelect } from '../components/form/FormSelect.svelte';
70
+ export { default as FormCheckboxGroup } from '../components/form/FormCheckboxGroup.svelte';
71
+ export { default as FormArray } from '../components/form/FormArray.svelte';
72
+ export { default as FormFieldset } from '../components/form/FormFieldset.svelte';
73
+ export { default as FormUISchemaRenderer } from '../components/form/FormUISchemaRenderer.svelte';
74
+ export type { FieldSchema, FieldType, FieldFormat, FieldOption, OneOfItem, SchemaFormProps, BaseFieldProps, TextFieldProps, TextareaFieldProps, NumberFieldProps, ToggleFieldProps, RangeFieldProps, SelectFieldProps, CheckboxGroupFieldProps, ArrayFieldProps, FormFieldFactoryProps, FormFieldWrapperProps } from '../components/form/types.js';
75
+ export { isFieldOptionArray, isOneOfArray, normalizeOptions, oneOfToOptions, getSchemaOptions } from '../components/form/types.js';
76
+ export { fieldComponentRegistry, hiddenFieldMatcher, checkboxGroupMatcher, enumSelectMatcher, textareaMatcher, rangeMatcher, textFieldMatcher, numberFieldMatcher, toggleMatcher, selectOptionsMatcher, arrayMatcher } from './fieldRegistry.js';
77
+ export type { FieldComponentProps, FieldMatcher, FieldMatcherRegistration, FieldComponent, FieldComponentRegistration } from './fieldRegistry.js';
@@ -0,0 +1,91 @@
1
+ /**
2
+ * FlowDrop Form Module
3
+ *
4
+ * Provides SchemaForm and form field components for building dynamic forms
5
+ * from JSON Schema definitions. This is the "light" version that includes
6
+ * only basic field types (text, number, select, checkbox, etc.).
7
+ *
8
+ * For code editor support (CodeMirror), import from "@flowdrop/flowdrop/form/code"
9
+ * For markdown editor support (CodeMirror 6), import from "@flowdrop/flowdrop/form/markdown"
10
+ *
11
+ * @module form
12
+ *
13
+ * @example Basic usage (small bundle - ~20KB):
14
+ * ```typescript
15
+ * import { SchemaForm } from "@flowdrop/flowdrop/form";
16
+ *
17
+ * const schema = {
18
+ * type: "object",
19
+ * properties: {
20
+ * name: { type: "string", title: "Name" },
21
+ * age: { type: "number", title: "Age" }
22
+ * }
23
+ * };
24
+ * ```
25
+ *
26
+ * @example Select field with labeled options (JSON Schema standard):
27
+ * ```typescript
28
+ * const schema = {
29
+ * type: "object",
30
+ * properties: {
31
+ * status: {
32
+ * type: "string",
33
+ * title: "Status",
34
+ * oneOf: [
35
+ * { const: "draft", title: "Draft" },
36
+ * { const: "published", title: "Published" },
37
+ * { const: "archived", title: "Archived" }
38
+ * ]
39
+ * }
40
+ * }
41
+ * };
42
+ * ```
43
+ *
44
+ * @example With code editor support (adds ~300KB):
45
+ * ```typescript
46
+ * import { SchemaForm } from "@flowdrop/flowdrop/form";
47
+ * import { registerCodeEditorField } from "@flowdrop/flowdrop/form/code";
48
+ *
49
+ * // Register code editor support before using
50
+ * registerCodeEditorField();
51
+ *
52
+ * const schema = {
53
+ * type: "object",
54
+ * properties: {
55
+ * config: { type: "object", format: "json", title: "Configuration" }
56
+ * }
57
+ * };
58
+ * ```
59
+ */
60
+ // ============================================================================
61
+ // Main Components
62
+ // ============================================================================
63
+ export { default as SchemaForm } from '../components/SchemaForm.svelte';
64
+ // ============================================================================
65
+ // Form Field Components (Light - no heavy dependencies)
66
+ // ============================================================================
67
+ // Use the light version of FormField that uses the registry for heavy editors
68
+ export { default as FormField } from '../components/form/FormFieldLight.svelte';
69
+ // Also export the original (full) version for users who want everything
70
+ export { default as FormFieldFull } from '../components/form/FormField.svelte';
71
+ export { default as FormFieldWrapper } from '../components/form/FormFieldWrapper.svelte';
72
+ export { default as FormTextField } from '../components/form/FormTextField.svelte';
73
+ export { default as FormTextarea } from '../components/form/FormTextarea.svelte';
74
+ export { default as FormNumberField } from '../components/form/FormNumberField.svelte';
75
+ export { default as FormRangeField } from '../components/form/FormRangeField.svelte';
76
+ export { default as FormToggle } from '../components/form/FormToggle.svelte';
77
+ export { default as FormSelect } from '../components/form/FormSelect.svelte';
78
+ export { default as FormCheckboxGroup } from '../components/form/FormCheckboxGroup.svelte';
79
+ export { default as FormArray } from '../components/form/FormArray.svelte';
80
+ // UISchema rendering components
81
+ export { default as FormFieldset } from '../components/form/FormFieldset.svelte';
82
+ export { default as FormUISchemaRenderer } from '../components/form/FormUISchemaRenderer.svelte';
83
+ export { isFieldOptionArray, isOneOfArray, normalizeOptions, oneOfToOptions, getSchemaOptions } from '../components/form/types.js';
84
+ // ============================================================================
85
+ // Field Registry (for dynamic field registration)
86
+ // ============================================================================
87
+ export {
88
+ // Registry singleton
89
+ fieldComponentRegistry,
90
+ // Built-in matchers for custom components
91
+ hiddenFieldMatcher, checkboxGroupMatcher, enumSelectMatcher, textareaMatcher, rangeMatcher, textFieldMatcher, numberFieldMatcher, toggleMatcher, selectOptionsMatcher, arrayMatcher } from './fieldRegistry.js';
@@ -0,0 +1,69 @@
1
+ /**
2
+ * FlowDrop Form Markdown Editor Module
3
+ *
4
+ * Adds CodeMirror 6-based markdown editor support to SchemaForm.
5
+ * Uses @codemirror/lang-markdown for syntax highlighting and marked for preview.
6
+ *
7
+ * @module form/markdown
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * import { SchemaForm } from "@flowdrop/flowdrop/form";
12
+ * import { registerMarkdownEditorField } from "@flowdrop/flowdrop/form/markdown";
13
+ *
14
+ * // Register markdown editor support (call once at app startup)
15
+ * registerMarkdownEditorField();
16
+ *
17
+ * // Now SchemaForm will render markdown editors for format: "markdown"
18
+ * const schema = {
19
+ * type: "object",
20
+ * properties: {
21
+ * content: { type: "string", format: "markdown", title: "Content" }
22
+ * }
23
+ * };
24
+ * ```
25
+ */
26
+ import type { FieldComponent } from './fieldRegistry.js';
27
+ import type { FieldSchema } from '../components/form/types.js';
28
+ export { default as FormMarkdownEditor } from '../components/form/FormMarkdownEditor.svelte';
29
+ export type { MarkdownEditorFieldProps } from '../components/form/types.js';
30
+ /**
31
+ * Matcher for markdown editor fields
32
+ * Matches: format "markdown"
33
+ */
34
+ export declare function markdownEditorFieldMatcher(schema: FieldSchema): boolean;
35
+ /**
36
+ * Register the markdown editor field component
37
+ *
38
+ * Call this function once at application startup to enable
39
+ * markdown editor fields in SchemaForm.
40
+ *
41
+ * @param priority - Priority for field matching (default: 100)
42
+ *
43
+ * @example
44
+ * ```typescript
45
+ * // In your app's entry point:
46
+ * import { registerMarkdownEditorField } from "@flowdrop/flowdrop/form/markdown";
47
+ *
48
+ * registerMarkdownEditorField();
49
+ * ```
50
+ */
51
+ export declare function registerMarkdownEditorField(priority?: number): void;
52
+ /**
53
+ * Synchronously register markdown editor field using the imported component
54
+ *
55
+ * Use this when you've already imported the component and want immediate registration.
56
+ *
57
+ * @param priority - Priority for field matching (default: 100)
58
+ *
59
+ * @example
60
+ * ```typescript
61
+ * import { registerMarkdownEditorFieldWithComponent, FormMarkdownEditor } from "@flowdrop/flowdrop/form/markdown";
62
+ * registerMarkdownEditorFieldWithComponent(FormMarkdownEditor);
63
+ * ```
64
+ */
65
+ export declare function registerMarkdownEditorFieldWithComponent(component: FieldComponent, priority?: number): void;
66
+ /**
67
+ * Check if markdown editor field is registered
68
+ */
69
+ export declare function isMarkdownEditorRegistered(): boolean;
@@ -0,0 +1,103 @@
1
+ /**
2
+ * FlowDrop Form Markdown Editor Module
3
+ *
4
+ * Adds CodeMirror 6-based markdown editor support to SchemaForm.
5
+ * Uses @codemirror/lang-markdown for syntax highlighting and marked for preview.
6
+ *
7
+ * @module form/markdown
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * import { SchemaForm } from "@flowdrop/flowdrop/form";
12
+ * import { registerMarkdownEditorField } from "@flowdrop/flowdrop/form/markdown";
13
+ *
14
+ * // Register markdown editor support (call once at app startup)
15
+ * registerMarkdownEditorField();
16
+ *
17
+ * // Now SchemaForm will render markdown editors for format: "markdown"
18
+ * const schema = {
19
+ * type: "object",
20
+ * properties: {
21
+ * content: { type: "string", format: "markdown", title: "Content" }
22
+ * }
23
+ * };
24
+ * ```
25
+ */
26
+ import { fieldComponentRegistry } from './fieldRegistry.js';
27
+ // Re-export the component for direct usage if needed
28
+ export { default as FormMarkdownEditor } from '../components/form/FormMarkdownEditor.svelte';
29
+ /**
30
+ * Matcher for markdown editor fields
31
+ * Matches: format "markdown"
32
+ */
33
+ export function markdownEditorFieldMatcher(schema) {
34
+ return schema.format === 'markdown';
35
+ }
36
+ /**
37
+ * Track if markdown editor is registered
38
+ */
39
+ let markdownEditorRegistered = false;
40
+ // Sync registration flag with registry.clear() for test isolation
41
+ fieldComponentRegistry.onClear(() => {
42
+ markdownEditorRegistered = false;
43
+ });
44
+ /**
45
+ * Register the markdown editor field component
46
+ *
47
+ * Call this function once at application startup to enable
48
+ * markdown editor fields in SchemaForm.
49
+ *
50
+ * @param priority - Priority for field matching (default: 100)
51
+ *
52
+ * @example
53
+ * ```typescript
54
+ * // In your app's entry point:
55
+ * import { registerMarkdownEditorField } from "@flowdrop/flowdrop/form/markdown";
56
+ *
57
+ * registerMarkdownEditorField();
58
+ * ```
59
+ */
60
+ export function registerMarkdownEditorField(priority = 100) {
61
+ if (markdownEditorRegistered) {
62
+ return;
63
+ }
64
+ // Dynamic import to ensure proper code splitting
65
+ import('../components/form/FormMarkdownEditor.svelte').then((module) => {
66
+ fieldComponentRegistry.register('markdown-editor', {
67
+ component: module.default,
68
+ matcher: markdownEditorFieldMatcher,
69
+ priority
70
+ });
71
+ markdownEditorRegistered = true;
72
+ });
73
+ }
74
+ /**
75
+ * Synchronously register markdown editor field using the imported component
76
+ *
77
+ * Use this when you've already imported the component and want immediate registration.
78
+ *
79
+ * @param priority - Priority for field matching (default: 100)
80
+ *
81
+ * @example
82
+ * ```typescript
83
+ * import { registerMarkdownEditorFieldWithComponent, FormMarkdownEditor } from "@flowdrop/flowdrop/form/markdown";
84
+ * registerMarkdownEditorFieldWithComponent(FormMarkdownEditor);
85
+ * ```
86
+ */
87
+ export function registerMarkdownEditorFieldWithComponent(component, priority = 100) {
88
+ if (markdownEditorRegistered) {
89
+ return;
90
+ }
91
+ fieldComponentRegistry.register('markdown-editor', {
92
+ component,
93
+ matcher: markdownEditorFieldMatcher,
94
+ priority
95
+ });
96
+ markdownEditorRegistered = true;
97
+ }
98
+ /**
99
+ * Check if markdown editor field is registered
100
+ */
101
+ export function isMarkdownEditorRegistered() {
102
+ return markdownEditorRegistered;
103
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Node layout helper
3
+ * Utilities for node dimensions and port positions aligned to a 10px grid.
4
+ * Used so edge connection points (handle centers) land on multiples of 10.
5
+ */
6
+ /**
7
+ * Y position (in px) for the center of a port handle in a list-based node
8
+ * (WorkflowNode, GatewayNode). Layout: header 60px, then section title row 20px,
9
+ * then port rows 20px each. First port center = 90px, then 110, 130, … (multiples of 10).
10
+ *
11
+ * @param portIndex - Zero-based index in the combined list (section title counts as row 0; first port is index 0)
12
+ * @returns Y coordinate in px for the handle center (use with transform: translateY(-50%))
13
+ */
14
+ export declare function getPortCenterY(portIndex: number): number;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Node layout helper
3
+ * Utilities for node dimensions and port positions aligned to a 10px grid.
4
+ * Used so edge connection points (handle centers) land on multiples of 10.
5
+ */
6
+ /**
7
+ * Y position (in px) for the center of a port handle in a list-based node
8
+ * (WorkflowNode, GatewayNode). Layout: header 60px, then section title row 20px,
9
+ * then port rows 20px each. First port center = 90px, then 110, 130, … (multiples of 10).
10
+ *
11
+ * @param portIndex - Zero-based index in the combined list (section title counts as row 0; first port is index 0)
12
+ * @returns Y coordinate in px for the handle center (use with transform: translateY(-50%))
13
+ */
14
+ export function getPortCenterY(portIndex) {
15
+ const headerHeight = 60;
16
+ const sectionTitleHeight = 20;
17
+ const rowHeight = 20;
18
+ return headerHeight + sectionTitleHeight + (portIndex + 0.5) * rowHeight;
19
+ }