@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.
- package/LICENSE +21 -0
- package/README.md +252 -0
- package/dist/adapters/WorkflowAdapter.d.ts +167 -0
- package/dist/adapters/WorkflowAdapter.js +368 -0
- package/dist/adapters/agentspec/AgentSpecAdapter.d.ts +96 -0
- package/dist/adapters/agentspec/AgentSpecAdapter.js +626 -0
- package/dist/adapters/agentspec/agentAdapter.d.ts +59 -0
- package/dist/adapters/agentspec/agentAdapter.js +91 -0
- package/dist/adapters/agentspec/autoLayout.d.ts +34 -0
- package/dist/adapters/agentspec/autoLayout.js +127 -0
- package/dist/adapters/agentspec/componentTypeDefaults.d.ts +73 -0
- package/dist/adapters/agentspec/componentTypeDefaults.js +238 -0
- package/dist/adapters/agentspec/defaultNodeTypes.d.ts +53 -0
- package/dist/adapters/agentspec/defaultNodeTypes.js +561 -0
- package/dist/adapters/agentspec/index.d.ts +37 -0
- package/dist/adapters/agentspec/index.js +39 -0
- package/dist/adapters/agentspec/validator.d.ts +34 -0
- package/dist/adapters/agentspec/validator.js +169 -0
- package/dist/api/enhanced-client.d.ts +183 -0
- package/dist/api/enhanced-client.js +430 -0
- package/dist/components/App.svelte +981 -0
- package/dist/components/App.svelte.d.ts +54 -0
- package/dist/components/CanvasBanner.stories.svelte +29 -0
- package/dist/components/CanvasBanner.stories.svelte.d.ts +27 -0
- package/dist/components/CanvasBanner.svelte +57 -0
- package/dist/components/CanvasBanner.svelte.d.ts +8 -0
- package/dist/components/ConfigForm.svelte +1138 -0
- package/dist/components/ConfigForm.svelte.d.ts +44 -0
- package/dist/components/ConfigModal.svelte +188 -0
- package/dist/components/ConfigModal.svelte.d.ts +13 -0
- package/dist/components/ConfigPanel.stories.svelte +47 -0
- package/dist/components/ConfigPanel.stories.svelte.d.ts +27 -0
- package/dist/components/ConfigPanel.svelte +182 -0
- package/dist/components/ConfigPanel.svelte.d.ts +32 -0
- package/dist/components/ConnectionLine.svelte +32 -0
- package/dist/components/ConnectionLine.svelte.d.ts +3 -0
- package/dist/components/EdgeRefresher.svelte +41 -0
- package/dist/components/EdgeRefresher.svelte.d.ts +9 -0
- package/dist/components/FlowDropZone.svelte +83 -0
- package/dist/components/FlowDropZone.svelte.d.ts +13 -0
- package/dist/components/LoadingSpinner.stories.svelte +30 -0
- package/dist/components/LoadingSpinner.stories.svelte.d.ts +27 -0
- package/dist/components/LoadingSpinner.svelte +36 -0
- package/dist/components/LoadingSpinner.svelte.d.ts +8 -0
- package/dist/components/Logo.stories.svelte +22 -0
- package/dist/components/Logo.stories.svelte.d.ts +27 -0
- package/dist/components/Logo.svelte +102 -0
- package/dist/components/Logo.svelte.d.ts +26 -0
- package/dist/components/LogsSidebar.svelte +563 -0
- package/dist/components/LogsSidebar.svelte.d.ts +17 -0
- package/dist/components/MarkdownDisplay.stories.svelte +36 -0
- package/dist/components/MarkdownDisplay.stories.svelte.d.ts +27 -0
- package/dist/components/MarkdownDisplay.svelte +29 -0
- package/dist/components/MarkdownDisplay.svelte.d.ts +7 -0
- package/dist/components/Navbar.stories.svelte +53 -0
- package/dist/components/Navbar.stories.svelte.d.ts +27 -0
- package/dist/components/Navbar.svelte +726 -0
- package/dist/components/Navbar.svelte.d.ts +29 -0
- package/dist/components/NodeSidebar.svelte +762 -0
- package/dist/components/NodeSidebar.svelte.d.ts +9 -0
- package/dist/components/NodeStatusOverlay.stories.svelte +85 -0
- package/dist/components/NodeStatusOverlay.stories.svelte.d.ts +27 -0
- package/dist/components/NodeStatusOverlay.svelte +327 -0
- package/dist/components/NodeStatusOverlay.svelte.d.ts +11 -0
- package/dist/components/PipelineStatus.svelte +314 -0
- package/dist/components/PipelineStatus.svelte.d.ts +20 -0
- package/dist/components/PortCoordinateTracker.svelte +58 -0
- package/dist/components/PortCoordinateTracker.svelte.d.ts +12 -0
- package/dist/components/ReadOnlyDetails.svelte +170 -0
- package/dist/components/ReadOnlyDetails.svelte.d.ts +25 -0
- package/dist/components/SchemaForm.stories.svelte +116 -0
- package/dist/components/SchemaForm.stories.svelte.d.ts +27 -0
- package/dist/components/SchemaForm.svelte +536 -0
- package/dist/components/SchemaForm.svelte.d.ts +83 -0
- package/dist/components/SettingsModal.svelte +279 -0
- package/dist/components/SettingsModal.svelte.d.ts +23 -0
- package/dist/components/SettingsPanel.svelte +638 -0
- package/dist/components/SettingsPanel.svelte.d.ts +21 -0
- package/dist/components/StatusIcon.stories.svelte +60 -0
- package/dist/components/StatusIcon.stories.svelte.d.ts +27 -0
- package/dist/components/StatusIcon.svelte +119 -0
- package/dist/components/StatusIcon.svelte.d.ts +10 -0
- package/dist/components/StatusLabel.stories.svelte +17 -0
- package/dist/components/StatusLabel.stories.svelte.d.ts +27 -0
- package/dist/components/StatusLabel.svelte +33 -0
- package/dist/components/StatusLabel.svelte.d.ts +7 -0
- package/dist/components/ThemeToggle.stories.svelte +25 -0
- package/dist/components/ThemeToggle.stories.svelte.d.ts +27 -0
- package/dist/components/ThemeToggle.svelte +185 -0
- package/dist/components/ThemeToggle.svelte.d.ts +14 -0
- package/dist/components/UniversalNode.svelte +155 -0
- package/dist/components/UniversalNode.svelte.d.ts +15 -0
- package/dist/components/WorkflowEditor.svelte +1035 -0
- package/dist/components/WorkflowEditor.svelte.d.ts +23 -0
- package/dist/components/form/FormArray.svelte +1049 -0
- package/dist/components/form/FormArray.svelte.d.ts +22 -0
- package/dist/components/form/FormAutocomplete.svelte +1009 -0
- package/dist/components/form/FormAutocomplete.svelte.d.ts +25 -0
- package/dist/components/form/FormCheckboxGroup.stories.svelte +28 -0
- package/dist/components/form/FormCheckboxGroup.stories.svelte.d.ts +27 -0
- package/dist/components/form/FormCheckboxGroup.svelte +155 -0
- package/dist/components/form/FormCheckboxGroup.svelte.d.ts +17 -0
- package/dist/components/form/FormCodeEditor.svelte +458 -0
- package/dist/components/form/FormCodeEditor.svelte.d.ts +25 -0
- package/dist/components/form/FormField.svelte +417 -0
- package/dist/components/form/FormField.svelte.d.ts +29 -0
- package/dist/components/form/FormFieldLight.svelte +425 -0
- package/dist/components/form/FormFieldLight.svelte.d.ts +18 -0
- package/dist/components/form/FormFieldWrapper.stories.svelte +53 -0
- package/dist/components/form/FormFieldWrapper.stories.svelte.d.ts +27 -0
- package/dist/components/form/FormFieldWrapper.svelte +125 -0
- package/dist/components/form/FormFieldWrapper.svelte.d.ts +18 -0
- package/dist/components/form/FormFieldset.svelte +142 -0
- package/dist/components/form/FormFieldset.svelte.d.ts +11 -0
- package/dist/components/form/FormMarkdownEditor.svelte +752 -0
- package/dist/components/form/FormMarkdownEditor.svelte.d.ts +33 -0
- package/dist/components/form/FormNumberField.stories.svelte +36 -0
- package/dist/components/form/FormNumberField.stories.svelte.d.ts +27 -0
- package/dist/components/form/FormNumberField.svelte +112 -0
- package/dist/components/form/FormNumberField.svelte.d.ts +25 -0
- package/dist/components/form/FormRangeField.stories.svelte +31 -0
- package/dist/components/form/FormRangeField.stories.svelte.d.ts +27 -0
- package/dist/components/form/FormRangeField.svelte +246 -0
- package/dist/components/form/FormRangeField.svelte.d.ts +23 -0
- package/dist/components/form/FormSelect.stories.svelte +50 -0
- package/dist/components/form/FormSelect.stories.svelte.d.ts +27 -0
- package/dist/components/form/FormSelect.svelte +129 -0
- package/dist/components/form/FormSelect.svelte.d.ts +20 -0
- package/dist/components/form/FormTemplateEditor.svelte +825 -0
- package/dist/components/form/FormTemplateEditor.svelte.d.ts +41 -0
- package/dist/components/form/FormTextField.stories.svelte +30 -0
- package/dist/components/form/FormTextField.stories.svelte.d.ts +27 -0
- package/dist/components/form/FormTextField.svelte +91 -0
- package/dist/components/form/FormTextField.svelte.d.ts +19 -0
- package/dist/components/form/FormTextarea.stories.svelte +34 -0
- package/dist/components/form/FormTextarea.stories.svelte.d.ts +27 -0
- package/dist/components/form/FormTextarea.svelte +97 -0
- package/dist/components/form/FormTextarea.svelte.d.ts +21 -0
- package/dist/components/form/FormToggle.stories.svelte +30 -0
- package/dist/components/form/FormToggle.stories.svelte.d.ts +27 -0
- package/dist/components/form/FormToggle.svelte +126 -0
- package/dist/components/form/FormToggle.svelte.d.ts +19 -0
- package/dist/components/form/FormUISchemaRenderer.svelte +136 -0
- package/dist/components/form/FormUISchemaRenderer.svelte.d.ts +32 -0
- package/dist/components/form/index.d.ts +50 -0
- package/dist/components/form/index.js +54 -0
- package/dist/components/form/templateAutocomplete.d.ts +29 -0
- package/dist/components/form/templateAutocomplete.js +254 -0
- package/dist/components/form/types.d.ts +485 -0
- package/dist/components/form/types.js +73 -0
- package/dist/components/interrupt/ChoicePrompt.stories.svelte +52 -0
- package/dist/components/interrupt/ChoicePrompt.stories.svelte.d.ts +27 -0
- package/dist/components/interrupt/ChoicePrompt.svelte +401 -0
- package/dist/components/interrupt/ChoicePrompt.svelte.d.ts +23 -0
- package/dist/components/interrupt/ConfirmationPrompt.stories.svelte +71 -0
- package/dist/components/interrupt/ConfirmationPrompt.stories.svelte.d.ts +27 -0
- package/dist/components/interrupt/ConfirmationPrompt.svelte +292 -0
- package/dist/components/interrupt/ConfirmationPrompt.svelte.d.ts +25 -0
- package/dist/components/interrupt/FormPrompt.svelte +236 -0
- package/dist/components/interrupt/FormPrompt.svelte.d.ts +23 -0
- package/dist/components/interrupt/InterruptBubble.svelte +601 -0
- package/dist/components/interrupt/InterruptBubble.svelte.d.ts +16 -0
- package/dist/components/interrupt/ReviewPrompt.stories.svelte +67 -0
- package/dist/components/interrupt/ReviewPrompt.stories.svelte.d.ts +27 -0
- package/dist/components/interrupt/ReviewPrompt.svelte +861 -0
- package/dist/components/interrupt/ReviewPrompt.svelte.d.ts +23 -0
- package/dist/components/interrupt/TextInputPrompt.stories.svelte +47 -0
- package/dist/components/interrupt/TextInputPrompt.stories.svelte.d.ts +27 -0
- package/dist/components/interrupt/TextInputPrompt.svelte +346 -0
- package/dist/components/interrupt/TextInputPrompt.svelte.d.ts +23 -0
- package/dist/components/interrupt/index.d.ts +13 -0
- package/dist/components/interrupt/index.js +15 -0
- package/dist/components/layouts/MainLayout.svelte +718 -0
- package/dist/components/layouts/MainLayout.svelte.d.ts +62 -0
- package/dist/components/nodes/GatewayNode.stories.svelte +108 -0
- package/dist/components/nodes/GatewayNode.stories.svelte.d.ts +26 -0
- package/dist/components/nodes/GatewayNode.svelte +591 -0
- package/dist/components/nodes/GatewayNode.svelte.d.ts +15 -0
- package/dist/components/nodes/IdeaNode.stories.svelte +52 -0
- package/dist/components/nodes/IdeaNode.stories.svelte.d.ts +26 -0
- package/dist/components/nodes/IdeaNode.svelte +455 -0
- package/dist/components/nodes/IdeaNode.svelte.d.ts +24 -0
- package/dist/components/nodes/NotesNode.stories.svelte +76 -0
- package/dist/components/nodes/NotesNode.stories.svelte.d.ts +26 -0
- package/dist/components/nodes/NotesNode.svelte +378 -0
- package/dist/components/nodes/NotesNode.svelte.d.ts +24 -0
- package/dist/components/nodes/SimpleNode.stories.svelte +159 -0
- package/dist/components/nodes/SimpleNode.stories.svelte.d.ts +26 -0
- package/dist/components/nodes/SimpleNode.svelte +451 -0
- package/dist/components/nodes/SimpleNode.svelte.d.ts +25 -0
- package/dist/components/nodes/SquareNode.stories.svelte +82 -0
- package/dist/components/nodes/SquareNode.stories.svelte.d.ts +26 -0
- package/dist/components/nodes/SquareNode.svelte +407 -0
- package/dist/components/nodes/SquareNode.svelte.d.ts +25 -0
- package/dist/components/nodes/TerminalNode.stories.svelte +25 -0
- package/dist/components/nodes/TerminalNode.stories.svelte.d.ts +26 -0
- package/dist/components/nodes/TerminalNode.svelte +690 -0
- package/dist/components/nodes/TerminalNode.svelte.d.ts +25 -0
- package/dist/components/nodes/ToolNode.stories.svelte +189 -0
- package/dist/components/nodes/ToolNode.stories.svelte.d.ts +26 -0
- package/dist/components/nodes/ToolNode.svelte +471 -0
- package/dist/components/nodes/ToolNode.svelte.d.ts +36 -0
- package/dist/components/nodes/WorkflowNode.stories.svelte +55 -0
- package/dist/components/nodes/WorkflowNode.stories.svelte.d.ts +26 -0
- package/dist/components/nodes/WorkflowNode.svelte +571 -0
- package/dist/components/nodes/WorkflowNode.svelte.d.ts +15 -0
- package/dist/components/playground/ChatPanel.svelte +905 -0
- package/dist/components/playground/ChatPanel.svelte.d.ts +46 -0
- package/dist/components/playground/ExecutionLogs.svelte +488 -0
- package/dist/components/playground/ExecutionLogs.svelte.d.ts +14 -0
- package/dist/components/playground/InputCollector.svelte +444 -0
- package/dist/components/playground/InputCollector.svelte.d.ts +16 -0
- package/dist/components/playground/MessageBubble.stories.svelte +62 -0
- package/dist/components/playground/MessageBubble.stories.svelte.d.ts +27 -0
- package/dist/components/playground/MessageBubble.svelte +633 -0
- package/dist/components/playground/MessageBubble.svelte.d.ts +24 -0
- package/dist/components/playground/Playground.svelte +1075 -0
- package/dist/components/playground/Playground.svelte.d.ts +25 -0
- package/dist/components/playground/PlaygroundModal.svelte +220 -0
- package/dist/components/playground/PlaygroundModal.svelte.d.ts +25 -0
- package/dist/components/playground/SessionManager.svelte +538 -0
- package/dist/components/playground/SessionManager.svelte.d.ts +20 -0
- package/dist/config/agentSpecEndpoints.d.ts +70 -0
- package/dist/config/agentSpecEndpoints.js +65 -0
- package/dist/config/constants.d.ts +43 -0
- package/dist/config/constants.js +31 -0
- package/dist/config/defaultCategories.d.ts +7 -0
- package/dist/config/defaultCategories.js +126 -0
- package/dist/config/defaultPortConfig.d.ts +6 -0
- package/dist/config/defaultPortConfig.js +201 -0
- package/dist/config/endpoints.d.ts +160 -0
- package/dist/config/endpoints.js +146 -0
- package/dist/config/runtimeConfig.d.ts +47 -0
- package/dist/config/runtimeConfig.js +80 -0
- package/dist/core/index.d.ts +75 -0
- package/dist/core/index.js +92 -0
- package/dist/display/index.d.ts +29 -0
- package/dist/display/index.js +36 -0
- package/dist/editor/index.d.ts +95 -0
- package/dist/editor/index.js +138 -0
- package/dist/form/code.d.ts +101 -0
- package/dist/form/code.js +168 -0
- package/dist/form/fieldRegistry.d.ts +169 -0
- package/dist/form/fieldRegistry.js +152 -0
- package/dist/form/full.d.ts +56 -0
- package/dist/form/full.js +80 -0
- package/dist/form/index.d.ts +77 -0
- package/dist/form/index.js +91 -0
- package/dist/form/markdown.d.ts +69 -0
- package/dist/form/markdown.js +103 -0
- package/dist/helpers/nodeLayoutHelper.d.ts +14 -0
- package/dist/helpers/nodeLayoutHelper.js +19 -0
- package/dist/helpers/proximityConnect.d.ts +94 -0
- package/dist/helpers/proximityConnect.js +314 -0
- package/dist/helpers/workflowEditorHelper.d.ts +183 -0
- package/dist/helpers/workflowEditorHelper.js +595 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.js +64 -0
- package/dist/mocks/app-environment.d.ts +8 -0
- package/dist/mocks/app-environment.js +16 -0
- package/dist/mocks/app-forms.d.ts +2 -0
- package/dist/mocks/app-forms.js +22 -0
- package/dist/mocks/app-navigation.d.ts +5 -0
- package/dist/mocks/app-navigation.js +36 -0
- package/dist/mocks/app-stores.d.ts +14 -0
- package/dist/mocks/app-stores.js +26 -0
- package/dist/playground/index.d.ts +131 -0
- package/dist/playground/index.js +172 -0
- package/dist/playground/mount.d.ts +203 -0
- package/dist/playground/mount.js +235 -0
- package/dist/registry/BaseRegistry.d.ts +92 -0
- package/dist/registry/BaseRegistry.js +124 -0
- package/dist/registry/builtinFormats.d.ts +23 -0
- package/dist/registry/builtinFormats.js +70 -0
- package/dist/registry/builtinNodes.d.ts +77 -0
- package/dist/registry/builtinNodes.js +211 -0
- package/dist/registry/index.d.ts +8 -0
- package/dist/registry/index.js +12 -0
- package/dist/registry/nodeComponentRegistry.d.ts +276 -0
- package/dist/registry/nodeComponentRegistry.js +262 -0
- package/dist/registry/plugin.d.ts +215 -0
- package/dist/registry/plugin.js +249 -0
- package/dist/registry/workflowFormatRegistry.d.ts +122 -0
- package/dist/registry/workflowFormatRegistry.js +96 -0
- package/dist/schema/index.d.ts +23 -0
- package/dist/schema/index.js +23 -0
- package/dist/schemas/v1/workflow.schema.json +1078 -0
- package/dist/services/agentSpecExecutionService.d.ts +106 -0
- package/dist/services/agentSpecExecutionService.js +334 -0
- package/dist/services/api.d.ts +115 -0
- package/dist/services/api.js +214 -0
- package/dist/services/apiVariableService.d.ts +114 -0
- package/dist/services/apiVariableService.js +338 -0
- package/dist/services/autoSaveService.d.ts +112 -0
- package/dist/services/autoSaveService.js +227 -0
- package/dist/services/categoriesApi.d.ts +14 -0
- package/dist/services/categoriesApi.js +49 -0
- package/dist/services/draftStorage.d.ts +171 -0
- package/dist/services/draftStorage.js +299 -0
- package/dist/services/dynamicSchemaService.d.ts +108 -0
- package/dist/services/dynamicSchemaService.js +444 -0
- package/dist/services/globalSave.d.ts +69 -0
- package/dist/services/globalSave.js +248 -0
- package/dist/services/historyService.d.ts +208 -0
- package/dist/services/historyService.js +321 -0
- package/dist/services/interruptService.d.ts +133 -0
- package/dist/services/interruptService.js +280 -0
- package/dist/services/nodeExecutionService.d.ts +63 -0
- package/dist/services/nodeExecutionService.js +266 -0
- package/dist/services/playgroundService.d.ts +130 -0
- package/dist/services/playgroundService.js +321 -0
- package/dist/services/portConfigApi.d.ts +14 -0
- package/dist/services/portConfigApi.js +54 -0
- package/dist/services/settingsService.d.ts +92 -0
- package/dist/services/settingsService.js +196 -0
- package/dist/services/toastService.d.ts +156 -0
- package/dist/services/toastService.js +265 -0
- package/dist/services/variableService.d.ts +141 -0
- package/dist/services/variableService.js +463 -0
- package/dist/services/workflowStorage.d.ts +37 -0
- package/dist/services/workflowStorage.js +116 -0
- package/dist/settings/index.d.ts +25 -0
- package/dist/settings/index.js +33 -0
- package/dist/stores/categoriesStore.svelte.d.ts +32 -0
- package/dist/stores/categoriesStore.svelte.js +77 -0
- package/dist/stores/editorStateMachine.svelte.d.ts +42 -0
- package/dist/stores/editorStateMachine.svelte.js +132 -0
- package/dist/stores/historyStore.svelte.d.ts +136 -0
- package/dist/stores/historyStore.svelte.js +207 -0
- package/dist/stores/interruptStore.svelte.d.ts +179 -0
- package/dist/stores/interruptStore.svelte.js +346 -0
- package/dist/stores/playgroundStore.svelte.d.ts +230 -0
- package/dist/stores/playgroundStore.svelte.js +515 -0
- package/dist/stores/portCoordinateStore.svelte.d.ts +66 -0
- package/dist/stores/portCoordinateStore.svelte.js +186 -0
- package/dist/stores/settingsStore.svelte.d.ts +158 -0
- package/dist/stores/settingsStore.svelte.js +544 -0
- package/dist/stores/workflowStore.svelte.d.ts +260 -0
- package/dist/stores/workflowStore.svelte.js +649 -0
- package/dist/stories/CanvasDecorator.svelte +49 -0
- package/dist/stories/CanvasDecorator.svelte.d.ts +8 -0
- package/dist/stories/NodeDecorator.svelte +73 -0
- package/dist/stories/NodeDecorator.svelte.d.ts +8 -0
- package/dist/stories/utils.d.ts +93 -0
- package/dist/stories/utils.js +122 -0
- package/dist/styles/base.css +1300 -0
- package/dist/styles/toast.css +35 -0
- package/dist/styles/tokens.css +475 -0
- package/dist/svelte-app.d.ts +150 -0
- package/dist/svelte-app.js +295 -0
- package/dist/types/agentspec.d.ts +318 -0
- package/dist/types/agentspec.js +48 -0
- package/dist/types/auth.d.ts +263 -0
- package/dist/types/auth.js +229 -0
- package/dist/types/config.d.ts +151 -0
- package/dist/types/config.js +7 -0
- package/dist/types/events.d.ts +190 -0
- package/dist/types/events.js +30 -0
- package/dist/types/index.d.ts +1234 -0
- package/dist/types/index.js +27 -0
- package/dist/types/interrupt.d.ts +390 -0
- package/dist/types/interrupt.js +145 -0
- package/dist/types/interruptState.d.ts +211 -0
- package/dist/types/interruptState.js +308 -0
- package/dist/types/playground.d.ts +351 -0
- package/dist/types/playground.js +95 -0
- package/dist/types/settings.d.ts +189 -0
- package/dist/types/settings.js +97 -0
- package/dist/types/uischema.d.ts +144 -0
- package/dist/types/uischema.js +51 -0
- package/dist/utils/colors.d.ts +288 -0
- package/dist/utils/colors.js +548 -0
- package/dist/utils/config.d.ts +37 -0
- package/dist/utils/config.js +226 -0
- package/dist/utils/connections.d.ts +125 -0
- package/dist/utils/connections.js +414 -0
- package/dist/utils/errors.d.ts +28 -0
- package/dist/utils/errors.js +44 -0
- package/dist/utils/fetchWithAuth.d.ts +25 -0
- package/dist/utils/fetchWithAuth.js +34 -0
- package/dist/utils/handleIds.d.ts +35 -0
- package/dist/utils/handleIds.js +58 -0
- package/dist/utils/handlePositioning.d.ts +31 -0
- package/dist/utils/handlePositioning.js +35 -0
- package/dist/utils/icons.d.ts +106 -0
- package/dist/utils/icons.js +157 -0
- package/dist/utils/logger.d.ts +47 -0
- package/dist/utils/logger.js +72 -0
- package/dist/utils/nodeStatus.d.ts +53 -0
- package/dist/utils/nodeStatus.js +183 -0
- package/dist/utils/nodeTypes.d.ts +117 -0
- package/dist/utils/nodeTypes.js +244 -0
- package/dist/utils/nodeWrapper.d.ts +39 -0
- package/dist/utils/nodeWrapper.js +62 -0
- package/dist/utils/performanceUtils.d.ts +30 -0
- package/dist/utils/performanceUtils.js +108 -0
- package/dist/utils/sanitize.d.ts +19 -0
- package/dist/utils/sanitize.js +31 -0
- package/dist/utils/uischema.d.ts +52 -0
- package/dist/utils/uischema.js +88 -0
- package/dist/utils/validation.d.ts +29 -0
- package/dist/utils/validation.js +39 -0
- package/package.json +292 -0
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FlowDrop Editor Module
|
|
3
|
+
*
|
|
4
|
+
* Provides the WorkflowEditor component and related functionality for
|
|
5
|
+
* building visual workflow editors. This module includes @xyflow/svelte
|
|
6
|
+
* and all node components.
|
|
7
|
+
*
|
|
8
|
+
* **Important: Single-instance only.** FlowDrop uses module-level singleton
|
|
9
|
+
* stores for state management. Only one FlowDrop editor instance per page
|
|
10
|
+
* is supported. This is a known architectural limitation.
|
|
11
|
+
*
|
|
12
|
+
* @module editor
|
|
13
|
+
*
|
|
14
|
+
* @example Mounting a standalone workflow editor:
|
|
15
|
+
* ```typescript
|
|
16
|
+
* import { mountFlowDropApp, WorkflowEditor } from "@flowdrop/flowdrop/editor";
|
|
17
|
+
* import "@flowdrop/flowdrop/styles";
|
|
18
|
+
*
|
|
19
|
+
* const app = await mountFlowDropApp(document.getElementById("editor"), {
|
|
20
|
+
* workflow: myWorkflow,
|
|
21
|
+
* nodes: availableNodes
|
|
22
|
+
* });
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @example Using WorkflowEditor in Svelte:
|
|
26
|
+
* ```svelte
|
|
27
|
+
* <script>
|
|
28
|
+
* import { WorkflowEditor } from "@flowdrop/flowdrop/editor";
|
|
29
|
+
* </script>
|
|
30
|
+
*
|
|
31
|
+
* <WorkflowEditor nodes={availableNodes} />
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
// ============================================================================
|
|
35
|
+
// Initialize Built-in Nodes
|
|
36
|
+
// This side effect is intentional for the editor module - users importing
|
|
37
|
+
// the editor expect all node types to be available.
|
|
38
|
+
// ============================================================================
|
|
39
|
+
import '../registry/builtinNodes.js';
|
|
40
|
+
// ============================================================================
|
|
41
|
+
// Main Editor Components
|
|
42
|
+
// ============================================================================
|
|
43
|
+
export { default as WorkflowEditor } from '../components/WorkflowEditor.svelte';
|
|
44
|
+
export { default as App } from '../components/App.svelte';
|
|
45
|
+
// ============================================================================
|
|
46
|
+
// Node Components
|
|
47
|
+
// ============================================================================
|
|
48
|
+
export { default as WorkflowNodeComponent } from '../components/nodes/WorkflowNode.svelte';
|
|
49
|
+
export { default as SimpleNode } from '../components/nodes/SimpleNode.svelte';
|
|
50
|
+
export { default as ToolNode } from '../components/nodes/ToolNode.svelte';
|
|
51
|
+
export { default as NotesNode } from '../components/nodes/NotesNode.svelte';
|
|
52
|
+
export { default as GatewayNode } from '../components/nodes/GatewayNode.svelte';
|
|
53
|
+
export { default as SquareNode } from '../components/nodes/SquareNode.svelte';
|
|
54
|
+
export { default as TerminalNode } from '../components/nodes/TerminalNode.svelte';
|
|
55
|
+
export { default as UniversalNode } from '../components/UniversalNode.svelte';
|
|
56
|
+
// ============================================================================
|
|
57
|
+
// Supporting Editor Components
|
|
58
|
+
// ============================================================================
|
|
59
|
+
export { default as NodeSidebar } from '../components/NodeSidebar.svelte';
|
|
60
|
+
export { default as CanvasBanner } from '../components/CanvasBanner.svelte';
|
|
61
|
+
export { default as LoadingSpinner } from '../components/LoadingSpinner.svelte';
|
|
62
|
+
export { default as StatusIcon } from '../components/StatusIcon.svelte';
|
|
63
|
+
export { default as StatusLabel } from '../components/StatusLabel.svelte';
|
|
64
|
+
export { default as NodeStatusOverlay } from '../components/NodeStatusOverlay.svelte';
|
|
65
|
+
export { default as ConfigForm } from '../components/ConfigForm.svelte';
|
|
66
|
+
export { default as ConfigModal } from '../components/ConfigModal.svelte';
|
|
67
|
+
export { default as ConfigPanel } from '../components/ConfigPanel.svelte';
|
|
68
|
+
export { default as ReadOnlyDetails } from '../components/ReadOnlyDetails.svelte';
|
|
69
|
+
export { default as ConnectionLine } from '../components/ConnectionLine.svelte';
|
|
70
|
+
export { default as LogsSidebar } from '../components/LogsSidebar.svelte';
|
|
71
|
+
export { default as PipelineStatus } from '../components/PipelineStatus.svelte';
|
|
72
|
+
export { default as Navbar } from '../components/Navbar.svelte';
|
|
73
|
+
export { default as Logo } from '../components/Logo.svelte';
|
|
74
|
+
// Playground Components
|
|
75
|
+
export { default as Playground } from '../components/playground/Playground.svelte';
|
|
76
|
+
export { default as PlaygroundModal } from '../components/playground/PlaygroundModal.svelte';
|
|
77
|
+
export { default as ChatPanel } from '../components/playground/ChatPanel.svelte';
|
|
78
|
+
export { default as SessionManager } from '../components/playground/SessionManager.svelte';
|
|
79
|
+
export { default as InputCollector } from '../components/playground/InputCollector.svelte';
|
|
80
|
+
export { default as ExecutionLogs } from '../components/playground/ExecutionLogs.svelte';
|
|
81
|
+
export { default as MessageBubble } from '../components/playground/MessageBubble.svelte';
|
|
82
|
+
// ============================================================================
|
|
83
|
+
// Mount Functions
|
|
84
|
+
// ============================================================================
|
|
85
|
+
export { mountWorkflowEditor, mountFlowDropApp, unmountFlowDropApp } from '../svelte-app.js';
|
|
86
|
+
// ============================================================================
|
|
87
|
+
// Node Component Registry
|
|
88
|
+
// ============================================================================
|
|
89
|
+
export {
|
|
90
|
+
// Core registry
|
|
91
|
+
nodeComponentRegistry, createNamespacedType, parseNamespacedType,
|
|
92
|
+
// Built-in nodes
|
|
93
|
+
BUILTIN_NODE_COMPONENTS, BUILTIN_NODE_TYPES, FLOWDROP_SOURCE, registerBuiltinNodes, areBuiltinsRegistered, isBuiltinType, getBuiltinTypes, resolveBuiltinAlias,
|
|
94
|
+
// Plugin system
|
|
95
|
+
registerFlowDropPlugin, unregisterFlowDropPlugin, registerCustomNode, createPlugin, isValidNamespace, getRegisteredPlugins, getPluginNodeCount } from '../registry/index.js';
|
|
96
|
+
// ============================================================================
|
|
97
|
+
// Editor Helpers
|
|
98
|
+
// ============================================================================
|
|
99
|
+
export { EdgeStylingHelper, NodeOperationsHelper, WorkflowOperationsHelper, ConfigurationHelper } from '../helpers/workflowEditorHelper.js';
|
|
100
|
+
// ============================================================================
|
|
101
|
+
// Stores
|
|
102
|
+
// ============================================================================
|
|
103
|
+
export { getWorkflowStore, workflowActions, getWorkflowId, getWorkflowName, getWorkflowNodes, getWorkflowEdges, getWorkflowMetadata, getWorkflowFormat, getWorkflowChanged, getWorkflowValidation, getWorkflowMetadataChanged, getConnectedHandles,
|
|
104
|
+
// Dirty state tracking
|
|
105
|
+
getIsDirty, isDirty, markAsSaved, getWorkflow as getWorkflowFromStore, setOnDirtyStateChange, setOnWorkflowChange,
|
|
106
|
+
// History control
|
|
107
|
+
setHistoryEnabled, isHistoryEnabled, setRestoringFromHistory } from '../stores/workflowStore.svelte.js';
|
|
108
|
+
// Port Coordinate Store (Svelte 5 runes-based)
|
|
109
|
+
export { rebuildAllPortCoordinates, updateNodePortCoordinates, removeNodePortCoordinates, getPortCoordinate, getNodePortCoordinates, getPortCoordinateSnapshot, getPortCoordinates } from '../stores/portCoordinateStore.svelte.js';
|
|
110
|
+
// History Store and Service
|
|
111
|
+
export { getHistoryState, getCanUndo, getCanRedo, historyActions, setOnRestoreCallback, cleanupHistorySubscription, historyService, HistoryService } from '../stores/historyStore.svelte.js';
|
|
112
|
+
// ============================================================================
|
|
113
|
+
// Services
|
|
114
|
+
// ============================================================================
|
|
115
|
+
export { setEndpointConfig, getEndpointConfig, nodeApi, workflowApi, api } from '../services/api.js';
|
|
116
|
+
export { showSuccess, showError, showWarning, showInfo, showLoading, dismissToast, dismissAllToasts, showPromise, showConfirmation, apiToasts, workflowToasts, pipelineToasts } from '../services/toastService.js';
|
|
117
|
+
export { NodeExecutionService, nodeExecutionService } from '../services/nodeExecutionService.js';
|
|
118
|
+
// Playground Service and Store
|
|
119
|
+
export { PlaygroundService, playgroundService } from '../services/playgroundService.js';
|
|
120
|
+
export { getCurrentSession, getSessions, getMessages, getIsExecuting, getIsLoading, getError as getPlaygroundError, getCurrentWorkflow, getLastPollTimestamp, getSessionStatus, getMessageCount, getChatMessages, getLogMessages, getLatestMessage, getInputFields, getHasChatInput, getSessionCount, playgroundActions, createPollingCallback, subscribeToSessionStatus, getCurrentSessionId, isSessionSelected, getMessagesSnapshot, getLatestMessageTimestamp } from '../stores/playgroundStore.svelte.js';
|
|
121
|
+
export { saveWorkflow, updateWorkflow, getWorkflow, getWorkflows, deleteWorkflow, getWorkflowCount, initializeSampleWorkflows } from '../services/workflowStorage.js';
|
|
122
|
+
export { globalSaveWorkflow, globalExportWorkflow } from '../services/globalSave.js';
|
|
123
|
+
export { fetchPortConfig, validatePortConfig } from '../services/portConfigApi.js';
|
|
124
|
+
export { fetchCategories, validateCategories } from '../services/categoriesApi.js';
|
|
125
|
+
export { fetchDynamicSchema, resolveExternalEditUrl, getEffectiveConfigEditOptions, clearSchemaCache, invalidateSchemaCache, hasConfigEditOptions, shouldShowExternalEdit, shouldUseDynamicSchema } from '../services/dynamicSchemaService.js';
|
|
126
|
+
export { getDraftStorageKey, saveDraft, loadDraft, deleteDraft, hasDraft, getDraftMetadata, DraftAutoSaveManager } from '../services/draftStorage.js';
|
|
127
|
+
// ============================================================================
|
|
128
|
+
// API Clients
|
|
129
|
+
// ============================================================================
|
|
130
|
+
export { EnhancedFlowDropApiClient, ApiError } from '../api/enhanced-client.js';
|
|
131
|
+
// ============================================================================
|
|
132
|
+
// Connection Utilities
|
|
133
|
+
// ============================================================================
|
|
134
|
+
export { isLoopbackEdge, isValidLoopbackCycle, PortCompatibilityChecker, initializePortCompatibility, getPortCompatibilityChecker, getPossibleConnections, validateConnection, getConnectionSuggestions, hasCycles, hasInvalidCycles, getExecutionOrder } from '../utils/connections.js';
|
|
135
|
+
// ============================================================================
|
|
136
|
+
// Runtime Configuration
|
|
137
|
+
// ============================================================================
|
|
138
|
+
export { fetchRuntimeConfig, getRuntimeConfig, clearRuntimeConfigCache, initRuntimeConfig } from '../config/runtimeConfig.js';
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FlowDrop Form Code Editor Module
|
|
3
|
+
*
|
|
4
|
+
* Adds CodeMirror-based code/JSON editor support to SchemaForm.
|
|
5
|
+
* This module bundles CodeMirror dependencies (~300KB).
|
|
6
|
+
*
|
|
7
|
+
* @module form/code
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* import { SchemaForm } from "@flowdrop/flowdrop/form";
|
|
12
|
+
* import { registerCodeEditorField, registerTemplateEditorField } from "@flowdrop/flowdrop/form/code";
|
|
13
|
+
*
|
|
14
|
+
* // Register code editor support (call once at app startup)
|
|
15
|
+
* registerCodeEditorField();
|
|
16
|
+
*
|
|
17
|
+
* // Optionally also register template editor
|
|
18
|
+
* registerTemplateEditorField();
|
|
19
|
+
*
|
|
20
|
+
* // Now SchemaForm will render code editors for format: "json", "code", or "template"
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
import type { FieldComponent } from './fieldRegistry.js';
|
|
24
|
+
import type { FieldSchema } from '../components/form/types.js';
|
|
25
|
+
export { default as FormCodeEditor } from '../components/form/FormCodeEditor.svelte';
|
|
26
|
+
export { default as FormTemplateEditor } from '../components/form/FormTemplateEditor.svelte';
|
|
27
|
+
export type { CodeEditorFieldProps, TemplateEditorFieldProps } from '../components/form/types.js';
|
|
28
|
+
/**
|
|
29
|
+
* Matcher for code/JSON editor fields
|
|
30
|
+
* Matches: format "json", "code", or type "object" without specific format
|
|
31
|
+
*/
|
|
32
|
+
export declare function codeEditorFieldMatcher(schema: FieldSchema): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Matcher for template editor fields
|
|
35
|
+
* Matches: format "template" (Twig/Liquid-style templates)
|
|
36
|
+
*/
|
|
37
|
+
export declare function templateEditorFieldMatcher(schema: FieldSchema): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Register the code/JSON editor field component
|
|
40
|
+
*
|
|
41
|
+
* Call this function once at application startup to enable
|
|
42
|
+
* code editor fields in SchemaForm. This loads CodeMirror dependencies.
|
|
43
|
+
*
|
|
44
|
+
* @param priority - Priority for field matching (default: 100)
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```typescript
|
|
48
|
+
* // In your app's entry point:
|
|
49
|
+
* import { registerCodeEditorField } from "@flowdrop/flowdrop/form/code";
|
|
50
|
+
*
|
|
51
|
+
* registerCodeEditorField();
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export declare function registerCodeEditorField(priority?: number): void;
|
|
55
|
+
/**
|
|
56
|
+
* Register the template editor field component
|
|
57
|
+
*
|
|
58
|
+
* Call this function once at application startup to enable
|
|
59
|
+
* template editor fields (Twig/Liquid syntax) in SchemaForm.
|
|
60
|
+
*
|
|
61
|
+
* @param priority - Priority for field matching (default: 100)
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* ```typescript
|
|
65
|
+
* // In your app's entry point:
|
|
66
|
+
* import { registerTemplateEditorField } from "@flowdrop/flowdrop/form/code";
|
|
67
|
+
*
|
|
68
|
+
* registerTemplateEditorField();
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
export declare function registerTemplateEditorField(priority?: number): void;
|
|
72
|
+
/**
|
|
73
|
+
* Register all code-related editor fields (code + template)
|
|
74
|
+
*
|
|
75
|
+
* Convenience function to register both code editor types at once.
|
|
76
|
+
*
|
|
77
|
+
* @param priority - Priority for field matching (default: 100)
|
|
78
|
+
*/
|
|
79
|
+
export declare function registerAllCodeEditors(priority?: number): void;
|
|
80
|
+
/**
|
|
81
|
+
* Synchronously register code editor field using the imported component
|
|
82
|
+
*
|
|
83
|
+
* Use this when you've already imported the component and want immediate registration.
|
|
84
|
+
*
|
|
85
|
+
* @param priority - Priority for field matching (default: 100)
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* ```typescript
|
|
89
|
+
* import { registerCodeEditorFieldWithComponent, FormCodeEditor } from "@flowdrop/flowdrop/form/code";
|
|
90
|
+
* registerCodeEditorFieldWithComponent(FormCodeEditor);
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
export declare function registerCodeEditorFieldWithComponent(component: FieldComponent, priority?: number): void;
|
|
94
|
+
/**
|
|
95
|
+
* Check if code editor field is registered
|
|
96
|
+
*/
|
|
97
|
+
export declare function isCodeEditorRegistered(): boolean;
|
|
98
|
+
/**
|
|
99
|
+
* Check if template editor field is registered
|
|
100
|
+
*/
|
|
101
|
+
export declare function isTemplateEditorRegistered(): boolean;
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FlowDrop Form Code Editor Module
|
|
3
|
+
*
|
|
4
|
+
* Adds CodeMirror-based code/JSON editor support to SchemaForm.
|
|
5
|
+
* This module bundles CodeMirror dependencies (~300KB).
|
|
6
|
+
*
|
|
7
|
+
* @module form/code
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* import { SchemaForm } from "@flowdrop/flowdrop/form";
|
|
12
|
+
* import { registerCodeEditorField, registerTemplateEditorField } from "@flowdrop/flowdrop/form/code";
|
|
13
|
+
*
|
|
14
|
+
* // Register code editor support (call once at app startup)
|
|
15
|
+
* registerCodeEditorField();
|
|
16
|
+
*
|
|
17
|
+
* // Optionally also register template editor
|
|
18
|
+
* registerTemplateEditorField();
|
|
19
|
+
*
|
|
20
|
+
* // Now SchemaForm will render code editors for format: "json", "code", or "template"
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
import { fieldComponentRegistry } from './fieldRegistry.js';
|
|
24
|
+
// Re-export the components for direct usage if needed
|
|
25
|
+
export { default as FormCodeEditor } from '../components/form/FormCodeEditor.svelte';
|
|
26
|
+
export { default as FormTemplateEditor } from '../components/form/FormTemplateEditor.svelte';
|
|
27
|
+
/**
|
|
28
|
+
* Matcher for code/JSON editor fields
|
|
29
|
+
* Matches: format "json", "code", or type "object" without specific format
|
|
30
|
+
*/
|
|
31
|
+
export function codeEditorFieldMatcher(schema) {
|
|
32
|
+
// JSON/code format
|
|
33
|
+
if (schema.format === 'json' || schema.format === 'code') {
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
// Object type without specific format (render as JSON editor)
|
|
37
|
+
if (schema.type === 'object' && !schema.format) {
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Matcher for template editor fields
|
|
44
|
+
* Matches: format "template" (Twig/Liquid-style templates)
|
|
45
|
+
*/
|
|
46
|
+
export function templateEditorFieldMatcher(schema) {
|
|
47
|
+
return schema.format === 'template';
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Track if code editor is registered
|
|
51
|
+
*/
|
|
52
|
+
let codeEditorRegistered = false;
|
|
53
|
+
/**
|
|
54
|
+
* Track if template editor is registered
|
|
55
|
+
*/
|
|
56
|
+
let templateEditorRegistered = false;
|
|
57
|
+
// Sync registration flags with registry.clear() for test isolation
|
|
58
|
+
fieldComponentRegistry.onClear(() => {
|
|
59
|
+
codeEditorRegistered = false;
|
|
60
|
+
templateEditorRegistered = false;
|
|
61
|
+
});
|
|
62
|
+
/**
|
|
63
|
+
* Register the code/JSON editor field component
|
|
64
|
+
*
|
|
65
|
+
* Call this function once at application startup to enable
|
|
66
|
+
* code editor fields in SchemaForm. This loads CodeMirror dependencies.
|
|
67
|
+
*
|
|
68
|
+
* @param priority - Priority for field matching (default: 100)
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```typescript
|
|
72
|
+
* // In your app's entry point:
|
|
73
|
+
* import { registerCodeEditorField } from "@flowdrop/flowdrop/form/code";
|
|
74
|
+
*
|
|
75
|
+
* registerCodeEditorField();
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
export function registerCodeEditorField(priority = 100) {
|
|
79
|
+
if (codeEditorRegistered) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
// Dynamic import to ensure proper code splitting
|
|
83
|
+
import('../components/form/FormCodeEditor.svelte').then((module) => {
|
|
84
|
+
fieldComponentRegistry.register('code-editor', {
|
|
85
|
+
component: module.default,
|
|
86
|
+
matcher: codeEditorFieldMatcher,
|
|
87
|
+
priority
|
|
88
|
+
});
|
|
89
|
+
codeEditorRegistered = true;
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Register the template editor field component
|
|
94
|
+
*
|
|
95
|
+
* Call this function once at application startup to enable
|
|
96
|
+
* template editor fields (Twig/Liquid syntax) in SchemaForm.
|
|
97
|
+
*
|
|
98
|
+
* @param priority - Priority for field matching (default: 100)
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* ```typescript
|
|
102
|
+
* // In your app's entry point:
|
|
103
|
+
* import { registerTemplateEditorField } from "@flowdrop/flowdrop/form/code";
|
|
104
|
+
*
|
|
105
|
+
* registerTemplateEditorField();
|
|
106
|
+
* ```
|
|
107
|
+
*/
|
|
108
|
+
export function registerTemplateEditorField(priority = 100) {
|
|
109
|
+
if (templateEditorRegistered) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
// Dynamic import to ensure proper code splitting
|
|
113
|
+
import('../components/form/FormTemplateEditor.svelte').then((module) => {
|
|
114
|
+
fieldComponentRegistry.register('template-editor', {
|
|
115
|
+
component: module.default,
|
|
116
|
+
matcher: templateEditorFieldMatcher,
|
|
117
|
+
priority
|
|
118
|
+
});
|
|
119
|
+
templateEditorRegistered = true;
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Register all code-related editor fields (code + template)
|
|
124
|
+
*
|
|
125
|
+
* Convenience function to register both code editor types at once.
|
|
126
|
+
*
|
|
127
|
+
* @param priority - Priority for field matching (default: 100)
|
|
128
|
+
*/
|
|
129
|
+
export function registerAllCodeEditors(priority = 100) {
|
|
130
|
+
registerCodeEditorField(priority);
|
|
131
|
+
registerTemplateEditorField(priority);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Synchronously register code editor field using the imported component
|
|
135
|
+
*
|
|
136
|
+
* Use this when you've already imported the component and want immediate registration.
|
|
137
|
+
*
|
|
138
|
+
* @param priority - Priority for field matching (default: 100)
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* ```typescript
|
|
142
|
+
* import { registerCodeEditorFieldWithComponent, FormCodeEditor } from "@flowdrop/flowdrop/form/code";
|
|
143
|
+
* registerCodeEditorFieldWithComponent(FormCodeEditor);
|
|
144
|
+
* ```
|
|
145
|
+
*/
|
|
146
|
+
export function registerCodeEditorFieldWithComponent(component, priority = 100) {
|
|
147
|
+
if (codeEditorRegistered) {
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
fieldComponentRegistry.register('code-editor', {
|
|
151
|
+
component,
|
|
152
|
+
matcher: codeEditorFieldMatcher,
|
|
153
|
+
priority
|
|
154
|
+
});
|
|
155
|
+
codeEditorRegistered = true;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Check if code editor field is registered
|
|
159
|
+
*/
|
|
160
|
+
export function isCodeEditorRegistered() {
|
|
161
|
+
return codeEditorRegistered;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Check if template editor field is registered
|
|
165
|
+
*/
|
|
166
|
+
export function isTemplateEditorRegistered() {
|
|
167
|
+
return templateEditorRegistered;
|
|
168
|
+
}
|
|
@@ -0,0 +1,169 @@
|
|
|
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 type { Component } from 'svelte';
|
|
32
|
+
import type { FieldSchema } from '../components/form/types.js';
|
|
33
|
+
import { BaseRegistry } from '../registry/BaseRegistry.js';
|
|
34
|
+
/**
|
|
35
|
+
* Base field component props that all registered field components should accept.
|
|
36
|
+
* Components may have additional specific props.
|
|
37
|
+
*/
|
|
38
|
+
export interface FieldComponentProps {
|
|
39
|
+
/** Field identifier */
|
|
40
|
+
id: string;
|
|
41
|
+
/** Current field value */
|
|
42
|
+
value: unknown;
|
|
43
|
+
/** Placeholder text */
|
|
44
|
+
placeholder?: string;
|
|
45
|
+
/** Whether field is required */
|
|
46
|
+
required?: boolean;
|
|
47
|
+
/** ARIA description ID */
|
|
48
|
+
ariaDescribedBy?: string;
|
|
49
|
+
/** Change callback */
|
|
50
|
+
onChange: (value: unknown) => void;
|
|
51
|
+
/** Additional schema-derived props */
|
|
52
|
+
[key: string]: unknown;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Function type for determining if a field schema should use a specific component
|
|
56
|
+
*/
|
|
57
|
+
export type FieldMatcher = (schema: FieldSchema) => boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Generic component type that accepts any props
|
|
60
|
+
* This is needed because different field components have different prop requirements
|
|
61
|
+
*/
|
|
62
|
+
export type FieldComponent = Component<any, any, any>;
|
|
63
|
+
/**
|
|
64
|
+
* Framework-agnostic matcher registration (no Svelte dependency).
|
|
65
|
+
* Contains the matching logic and priority without the component.
|
|
66
|
+
*/
|
|
67
|
+
export interface FieldMatcherRegistration {
|
|
68
|
+
/** Function to determine if this registration should handle a given schema */
|
|
69
|
+
matcher: FieldMatcher;
|
|
70
|
+
/** Priority for matching (higher = checked first) */
|
|
71
|
+
priority: number;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Full registration entry for a field component.
|
|
75
|
+
* Extends FieldMatcherRegistration with the Svelte component needed for rendering.
|
|
76
|
+
*/
|
|
77
|
+
export interface FieldComponentRegistration extends FieldMatcherRegistration {
|
|
78
|
+
/** The Svelte component to render */
|
|
79
|
+
component: FieldComponent;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Class-based field component registry.
|
|
83
|
+
* Extends BaseRegistry with priority-based field resolution.
|
|
84
|
+
*/
|
|
85
|
+
declare class FieldComponentRegistry extends BaseRegistry<string, FieldComponentRegistration> {
|
|
86
|
+
/** Cached ordered keys by priority (highest first), invalidated on mutation */
|
|
87
|
+
private orderedKeys;
|
|
88
|
+
/**
|
|
89
|
+
* Register a field component.
|
|
90
|
+
* Silently overwrites existing registrations (preserves legacy behavior).
|
|
91
|
+
*
|
|
92
|
+
* @param type - Unique identifier for this field type
|
|
93
|
+
* @param registration - The field component registration
|
|
94
|
+
*/
|
|
95
|
+
register(type: string, registration: FieldComponentRegistration): void;
|
|
96
|
+
/**
|
|
97
|
+
* Override unregister to invalidate the priority cache.
|
|
98
|
+
*/
|
|
99
|
+
unregister(key: string): boolean;
|
|
100
|
+
/**
|
|
101
|
+
* Override clear to invalidate the priority cache.
|
|
102
|
+
*/
|
|
103
|
+
clear(): void;
|
|
104
|
+
/**
|
|
105
|
+
* Resolve which component should render a given field schema.
|
|
106
|
+
* Checks registered matchers in priority order (highest first).
|
|
107
|
+
*
|
|
108
|
+
* @param schema - The field schema to resolve
|
|
109
|
+
* @returns The matching registration or null if no match
|
|
110
|
+
*/
|
|
111
|
+
resolveFieldComponent(schema: FieldSchema): FieldComponentRegistration | null;
|
|
112
|
+
/**
|
|
113
|
+
* Get keys ordered by priority (cached).
|
|
114
|
+
*/
|
|
115
|
+
private getOrderedKeys;
|
|
116
|
+
}
|
|
117
|
+
/** Singleton instance of the field component registry */
|
|
118
|
+
export declare const fieldComponentRegistry: FieldComponentRegistry;
|
|
119
|
+
/**
|
|
120
|
+
* Matcher for hidden fields (should not render)
|
|
121
|
+
*/
|
|
122
|
+
export declare const hiddenFieldMatcher: FieldMatcher;
|
|
123
|
+
/**
|
|
124
|
+
* Matcher for checkbox group fields (enum with multiple)
|
|
125
|
+
*/
|
|
126
|
+
export declare const checkboxGroupMatcher: FieldMatcher;
|
|
127
|
+
/**
|
|
128
|
+
* Matcher for enum select fields
|
|
129
|
+
*/
|
|
130
|
+
export declare const enumSelectMatcher: FieldMatcher;
|
|
131
|
+
/**
|
|
132
|
+
* Matcher for multiline textarea fields
|
|
133
|
+
*/
|
|
134
|
+
export declare const textareaMatcher: FieldMatcher;
|
|
135
|
+
/**
|
|
136
|
+
* Matcher for range slider fields
|
|
137
|
+
*/
|
|
138
|
+
export declare const rangeMatcher: FieldMatcher;
|
|
139
|
+
/**
|
|
140
|
+
* Matcher for string text fields
|
|
141
|
+
*/
|
|
142
|
+
export declare const textFieldMatcher: FieldMatcher;
|
|
143
|
+
/**
|
|
144
|
+
* Matcher for number fields
|
|
145
|
+
*/
|
|
146
|
+
export declare const numberFieldMatcher: FieldMatcher;
|
|
147
|
+
/**
|
|
148
|
+
* Matcher for boolean toggle fields
|
|
149
|
+
*/
|
|
150
|
+
export declare const toggleMatcher: FieldMatcher;
|
|
151
|
+
/**
|
|
152
|
+
* Matcher for select fields with labeled options (JSON Schema oneOf pattern)
|
|
153
|
+
*
|
|
154
|
+
* @example
|
|
155
|
+
* ```json
|
|
156
|
+
* { "type": "string", "oneOf": [{ "const": "a", "title": "Option A" }] }
|
|
157
|
+
* ```
|
|
158
|
+
*/
|
|
159
|
+
export declare const selectOptionsMatcher: FieldMatcher;
|
|
160
|
+
/**
|
|
161
|
+
* Matcher for array fields
|
|
162
|
+
*/
|
|
163
|
+
export declare const arrayMatcher: FieldMatcher;
|
|
164
|
+
/**
|
|
165
|
+
* Matcher for autocomplete fields
|
|
166
|
+
* Matches when format is "autocomplete" and autocomplete config with URL is provided
|
|
167
|
+
*/
|
|
168
|
+
export declare const autocompleteMatcher: FieldMatcher;
|
|
169
|
+
export {};
|