@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,548 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralized color management for FlowDrop
|
|
3
|
+
* Ensures consistent category colors across sidebar and canvas
|
|
4
|
+
* Uses BEM syntax for CSS classes
|
|
5
|
+
*/
|
|
6
|
+
import { getPortCompatibilityChecker } from './connections.js';
|
|
7
|
+
import { getCategoryColor as getCategoryColorFromStore } from '../stores/categoriesStore.svelte.js';
|
|
8
|
+
import { logger } from './logger.js';
|
|
9
|
+
/**
|
|
10
|
+
* Category color mapping to design tokens (CSS variables)
|
|
11
|
+
* Uses --fd-node-* tokens from tokens.css
|
|
12
|
+
* These serve as static defaults; the categories store provides dynamic overrides.
|
|
13
|
+
*/
|
|
14
|
+
export const CATEGORY_COLOR_TOKENS = {
|
|
15
|
+
triggers: 'var(--fd-node-cyan)',
|
|
16
|
+
inputs: 'var(--fd-node-emerald)',
|
|
17
|
+
outputs: 'var(--fd-node-blue)',
|
|
18
|
+
prompts: 'var(--fd-node-amber)',
|
|
19
|
+
models: 'var(--fd-node-indigo)',
|
|
20
|
+
processing: 'var(--fd-node-teal)',
|
|
21
|
+
logic: 'var(--fd-node-purple)',
|
|
22
|
+
data: 'var(--fd-node-orange)',
|
|
23
|
+
helpers: 'var(--fd-node-slate)',
|
|
24
|
+
tools: 'var(--fd-node-amber)',
|
|
25
|
+
'vector stores': 'var(--fd-node-emerald)',
|
|
26
|
+
embeddings: 'var(--fd-node-indigo)',
|
|
27
|
+
memories: 'var(--fd-node-blue)',
|
|
28
|
+
agents: 'var(--fd-node-teal)',
|
|
29
|
+
ai: 'var(--fd-node-purple)',
|
|
30
|
+
interrupts: 'var(--fd-node-red)',
|
|
31
|
+
bundles: 'var(--fd-node-slate)'
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Default data type colors for fallback when port configuration is not available
|
|
35
|
+
* Uses --fd-node-* tokens from tokens.css
|
|
36
|
+
*/
|
|
37
|
+
const DEFAULT_DATA_TYPE_COLORS = {
|
|
38
|
+
string: 'var(--fd-node-emerald)',
|
|
39
|
+
text: 'var(--fd-node-emerald)',
|
|
40
|
+
number: 'var(--fd-node-blue)',
|
|
41
|
+
integer: 'var(--fd-node-blue)',
|
|
42
|
+
float: 'var(--fd-node-blue)',
|
|
43
|
+
boolean: 'var(--fd-node-purple)',
|
|
44
|
+
array: 'var(--fd-node-amber)',
|
|
45
|
+
list: 'var(--fd-node-amber)',
|
|
46
|
+
object: 'var(--fd-node-orange)',
|
|
47
|
+
json: 'var(--fd-node-orange)',
|
|
48
|
+
mixed: 'var(--fd-node-orange)',
|
|
49
|
+
file: 'var(--fd-node-red)',
|
|
50
|
+
document: 'var(--fd-node-red)',
|
|
51
|
+
image: 'var(--fd-node-pink)',
|
|
52
|
+
picture: 'var(--fd-node-pink)',
|
|
53
|
+
audio: 'var(--fd-node-indigo)',
|
|
54
|
+
sound: 'var(--fd-node-indigo)',
|
|
55
|
+
video: 'var(--fd-node-teal)',
|
|
56
|
+
movie: 'var(--fd-node-teal)',
|
|
57
|
+
url: 'var(--fd-node-cyan)',
|
|
58
|
+
email: 'var(--fd-node-cyan)',
|
|
59
|
+
date: 'var(--fd-node-lime)',
|
|
60
|
+
datetime: 'var(--fd-node-lime)',
|
|
61
|
+
time: 'var(--fd-node-lime)',
|
|
62
|
+
tool: 'var(--fd-node-amber)',
|
|
63
|
+
trigger: 'var(--fd-edge-trigger)',
|
|
64
|
+
branch: 'var(--fd-node-purple)'
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Get the design token for a category color.
|
|
68
|
+
* Checks the categories store first (which includes API overrides),
|
|
69
|
+
* then falls back to the static CATEGORY_COLOR_TOKENS map, then to slate.
|
|
70
|
+
*/
|
|
71
|
+
export function getCategoryColorToken(category) {
|
|
72
|
+
return getCategoryColorFromStore(category);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Get the reference color token for a data type (configurable version)
|
|
76
|
+
*/
|
|
77
|
+
export function getDataTypeColorToken(dataType) {
|
|
78
|
+
try {
|
|
79
|
+
const checker = getPortCompatibilityChecker();
|
|
80
|
+
const config = checker.getDataTypeConfig(dataType);
|
|
81
|
+
if (config?.color) {
|
|
82
|
+
return config.color;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
// Fallback to static color mapping if port checker not initialized
|
|
87
|
+
}
|
|
88
|
+
return DEFAULT_DATA_TYPE_COLORS[dataType.toLowerCase()] || 'var(--fd-node-slate)';
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Get data type configuration from port config
|
|
92
|
+
*/
|
|
93
|
+
export function getDataTypeConfig(dataType) {
|
|
94
|
+
try {
|
|
95
|
+
const checker = getPortCompatibilityChecker();
|
|
96
|
+
return checker.getDataTypeConfig(dataType);
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
logger.warn('Port compatibility checker not initialized:', error);
|
|
100
|
+
return undefined;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Get all available data types from port configuration
|
|
105
|
+
*/
|
|
106
|
+
export function getAvailableDataTypes() {
|
|
107
|
+
try {
|
|
108
|
+
const checker = getPortCompatibilityChecker();
|
|
109
|
+
return checker.getEnabledDataTypes();
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
logger.warn('Port compatibility checker not initialized:', error);
|
|
113
|
+
return [];
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Default colors for fallback cases
|
|
118
|
+
*/
|
|
119
|
+
export const DEFAULT_COLORS = {
|
|
120
|
+
background: 'flowdrop-color--base-light',
|
|
121
|
+
accent: 'flowdrop-color--neutral',
|
|
122
|
+
text: 'flowdrop-color--base-text',
|
|
123
|
+
border: 'flowdrop-color--base-border'
|
|
124
|
+
};
|
|
125
|
+
/**
|
|
126
|
+
* Get category colors
|
|
127
|
+
* @param category - The node category
|
|
128
|
+
* @returns The color configuration for the category
|
|
129
|
+
*/
|
|
130
|
+
export function getCategoryColors(category) {
|
|
131
|
+
return getCategoryColorFromStore(category);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Get category background color
|
|
135
|
+
* @param category - The node category
|
|
136
|
+
* @returns The background color class
|
|
137
|
+
*/
|
|
138
|
+
export function getCategoryBackground(category) {
|
|
139
|
+
return getCategoryColors(category);
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Get category accent color
|
|
143
|
+
* @param category - The node category
|
|
144
|
+
* @returns The accent color class
|
|
145
|
+
*/
|
|
146
|
+
export function getCategoryAccent(category) {
|
|
147
|
+
return getCategoryColors(category);
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Get category text color
|
|
151
|
+
* @param category - The node category
|
|
152
|
+
* @returns The text color class
|
|
153
|
+
*/
|
|
154
|
+
export function getCategoryText(category) {
|
|
155
|
+
return getCategoryColors(category);
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Get category border color
|
|
159
|
+
* @param category - The node category
|
|
160
|
+
* @returns The border color class
|
|
161
|
+
*/
|
|
162
|
+
export function getCategoryBorder(category) {
|
|
163
|
+
return getCategoryColors(category);
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Get node colors based on category and state
|
|
167
|
+
* @param category - The node category
|
|
168
|
+
* @param isError - Whether the node is in error state
|
|
169
|
+
* @param isProcessing - Whether the node is processing
|
|
170
|
+
* @param isSelected - Whether the node is selected
|
|
171
|
+
* @returns The color configuration object
|
|
172
|
+
*/
|
|
173
|
+
export function getNodeColors(category, isError = false, isProcessing = false, isSelected = false) {
|
|
174
|
+
const baseColor = getCategoryColors(category);
|
|
175
|
+
if (isError) {
|
|
176
|
+
return {
|
|
177
|
+
background: 'var(--fd-error-muted)',
|
|
178
|
+
accent: 'var(--fd-error)',
|
|
179
|
+
text: 'var(--fd-error-hover)',
|
|
180
|
+
border: 'var(--fd-error)'
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
if (isProcessing) {
|
|
184
|
+
return {
|
|
185
|
+
background: 'var(--fd-info-muted)',
|
|
186
|
+
accent: 'var(--fd-info)',
|
|
187
|
+
text: 'var(--fd-primary-hover)',
|
|
188
|
+
border: 'var(--fd-primary)'
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
if (isSelected) {
|
|
192
|
+
return {
|
|
193
|
+
background: 'var(--fd-accent-muted)',
|
|
194
|
+
accent: 'var(--fd-accent)',
|
|
195
|
+
text: 'var(--fd-accent-hover)',
|
|
196
|
+
border: 'var(--fd-accent)'
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
return {
|
|
200
|
+
background: baseColor,
|
|
201
|
+
accent: baseColor,
|
|
202
|
+
text: 'var(--fd-foreground)',
|
|
203
|
+
border: baseColor
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Get node background color
|
|
208
|
+
* @param category - The node category
|
|
209
|
+
* @param isError - Whether the node is in error state
|
|
210
|
+
* @param isProcessing - Whether the node is processing
|
|
211
|
+
* @param isSelected - Whether the node is selected
|
|
212
|
+
* @returns The background color
|
|
213
|
+
*/
|
|
214
|
+
export function getNodeBackground(category, isError = false, isProcessing = false, isSelected = false) {
|
|
215
|
+
return getNodeColors(category, isError, isProcessing, isSelected).background;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Get node accent color
|
|
219
|
+
* @param category - The node category
|
|
220
|
+
* @param isError - Whether the node is in error state
|
|
221
|
+
* @param isProcessing - Whether the node is processing
|
|
222
|
+
* @param isSelected - Whether the node is selected
|
|
223
|
+
* @returns The accent color
|
|
224
|
+
*/
|
|
225
|
+
export function getNodeAccent(category, isError = false, isProcessing = false, isSelected = false) {
|
|
226
|
+
return getNodeColors(category, isError, isProcessing, isSelected).accent;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Get node text color
|
|
230
|
+
* @param category - The node category
|
|
231
|
+
* @param isError - Whether the node is in error state
|
|
232
|
+
* @param isProcessing - Whether the node is processing
|
|
233
|
+
* @param isSelected - Whether the node is selected
|
|
234
|
+
* @returns The text color
|
|
235
|
+
*/
|
|
236
|
+
export function getNodeText(category, isError = false, isProcessing = false, isSelected = false) {
|
|
237
|
+
return getNodeColors(category, isError, isProcessing, isSelected).text;
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Get node border color
|
|
241
|
+
* @param category - The node category
|
|
242
|
+
* @param isError - Whether the node is in error state
|
|
243
|
+
* @param isProcessing - Whether the node is processing
|
|
244
|
+
* @param isSelected - Whether the node is selected
|
|
245
|
+
* @returns The border color
|
|
246
|
+
*/
|
|
247
|
+
export function getNodeBorder(category, isError = false, isProcessing = false, isSelected = false) {
|
|
248
|
+
return getNodeColors(category, isError, isProcessing, isSelected).border;
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Get data type color
|
|
252
|
+
* @param dataType - The data type
|
|
253
|
+
* @returns The color for the data type
|
|
254
|
+
*/
|
|
255
|
+
export function getDataTypeColor(dataType) {
|
|
256
|
+
return getDataTypeColorToken(dataType);
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Parse typed array notation and get display information
|
|
260
|
+
* @param dataType - The data type (e.g., "string[]", "number", "object[]")
|
|
261
|
+
* @returns Object with display information
|
|
262
|
+
*/
|
|
263
|
+
export function parseDataTypeDisplay(dataType) {
|
|
264
|
+
// Check if it's a typed array (ends with [])
|
|
265
|
+
const isArray = dataType.endsWith('[]');
|
|
266
|
+
if (isArray) {
|
|
267
|
+
const elementType = dataType.slice(0, -2); // Remove []
|
|
268
|
+
const config = getDataTypeConfig(dataType);
|
|
269
|
+
return {
|
|
270
|
+
baseType: dataType,
|
|
271
|
+
isArray: true,
|
|
272
|
+
displayName: config?.name || `${elementType}[]`,
|
|
273
|
+
elementType: elementType
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
const config = getDataTypeConfig(dataType);
|
|
278
|
+
return {
|
|
279
|
+
baseType: dataType,
|
|
280
|
+
isArray: false,
|
|
281
|
+
displayName: config?.name || dataType
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Get formatted display text for a data type
|
|
287
|
+
* @param dataType - The data type
|
|
288
|
+
* @returns Formatted display text
|
|
289
|
+
*/
|
|
290
|
+
export function getDataTypeDisplayText(dataType) {
|
|
291
|
+
const parsed = parseDataTypeDisplay(dataType);
|
|
292
|
+
return parsed.displayName;
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Check if a data type represents an array
|
|
296
|
+
* @param dataType - The data type
|
|
297
|
+
* @returns True if it's an array type
|
|
298
|
+
*/
|
|
299
|
+
export function isArrayDataType(dataType) {
|
|
300
|
+
return dataType.endsWith('[]') || dataType === 'array' || dataType === 'list';
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Get the element type from an array data type
|
|
304
|
+
* @param arrayDataType - The array data type (e.g., "string[]")
|
|
305
|
+
* @returns The element type (e.g., "string") or null if not an array
|
|
306
|
+
*/
|
|
307
|
+
export function getArrayElementType(arrayDataType) {
|
|
308
|
+
if (arrayDataType.endsWith('[]')) {
|
|
309
|
+
return arrayDataType.slice(0, -2);
|
|
310
|
+
}
|
|
311
|
+
return null;
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Parse a hex color string to RGB components
|
|
315
|
+
* @param hex - Hex color string (e.g., "#f59e0b" or "f59e0b")
|
|
316
|
+
* @returns Object with r, g, b values (0-255) or null if invalid
|
|
317
|
+
*/
|
|
318
|
+
export function hexToRgb(hex) {
|
|
319
|
+
const cleanHex = hex.replace(/^#/, '');
|
|
320
|
+
if (!/^[0-9A-Fa-f]{6}$/.test(cleanHex)) {
|
|
321
|
+
return null;
|
|
322
|
+
}
|
|
323
|
+
const r = parseInt(cleanHex.substring(0, 2), 16);
|
|
324
|
+
const g = parseInt(cleanHex.substring(2, 4), 16);
|
|
325
|
+
const b = parseInt(cleanHex.substring(4, 6), 16);
|
|
326
|
+
return { r, g, b };
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Calculate the relative luminance of a color
|
|
330
|
+
* Based on WCAG 2.1 guidelines for contrast calculations
|
|
331
|
+
* @param r - Red component (0-255)
|
|
332
|
+
* @param g - Green component (0-255)
|
|
333
|
+
* @param b - Blue component (0-255)
|
|
334
|
+
* @returns Relative luminance value (0-1)
|
|
335
|
+
*/
|
|
336
|
+
export function getRelativeLuminance(r, g, b) {
|
|
337
|
+
const toLinear = (value) => {
|
|
338
|
+
const srgb = value / 255;
|
|
339
|
+
return srgb <= 0.03928 ? srgb / 12.92 : Math.pow((srgb + 0.055) / 1.055, 2.4);
|
|
340
|
+
};
|
|
341
|
+
return 0.2126 * toLinear(r) + 0.7152 * toLinear(g) + 0.0722 * toLinear(b);
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Determine if a background color is considered "light" (needs dark text)
|
|
345
|
+
* @param hex - Hex color string
|
|
346
|
+
* @returns True if the color is light and needs dark text for contrast
|
|
347
|
+
*/
|
|
348
|
+
export function isLightColor(hex) {
|
|
349
|
+
const rgb = hexToRgb(hex);
|
|
350
|
+
if (!rgb) {
|
|
351
|
+
return false; // Default to dark background assumption
|
|
352
|
+
}
|
|
353
|
+
const luminance = getRelativeLuminance(rgb.r, rgb.g, rgb.b);
|
|
354
|
+
// WCAG recommends contrast ratio of 4.5:1 for normal text
|
|
355
|
+
// Luminance > 0.179 generally requires dark text for good contrast
|
|
356
|
+
return luminance > 0.179;
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Get the appropriate contrast text color (black or white) for a background
|
|
360
|
+
* @param backgroundColor - Hex color string of the background
|
|
361
|
+
* @returns CSS color value for text that provides good contrast
|
|
362
|
+
*/
|
|
363
|
+
export function getContrastTextColor(backgroundColor) {
|
|
364
|
+
return isLightColor(backgroundColor) ? '#18181b' : '#ffffff';
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* Mapping of CSS variable tokens to their resolved hex values
|
|
368
|
+
* Used for contrast calculations when working with design tokens
|
|
369
|
+
*/
|
|
370
|
+
const TOKEN_TO_HEX = {
|
|
371
|
+
'var(--fd-node-cyan)': '#06b6d4',
|
|
372
|
+
'var(--fd-node-emerald)': '#10b981',
|
|
373
|
+
'var(--fd-node-blue)': '#3b82f6',
|
|
374
|
+
'var(--fd-node-amber)': '#f59e0b',
|
|
375
|
+
'var(--fd-node-indigo)': '#6366f1',
|
|
376
|
+
'var(--fd-node-teal)': '#14b8a6',
|
|
377
|
+
'var(--fd-node-purple)': '#8b5cf6',
|
|
378
|
+
'var(--fd-node-orange)': '#f97316',
|
|
379
|
+
'var(--fd-node-slate)': '#64748b',
|
|
380
|
+
'var(--fd-node-red)': '#ef4444',
|
|
381
|
+
'var(--fd-node-pink)': '#ec4899',
|
|
382
|
+
'var(--fd-node-lime)': '#84cc16'
|
|
383
|
+
};
|
|
384
|
+
/**
|
|
385
|
+
* Resolve a CSS variable token to its hex value
|
|
386
|
+
* @param token - CSS variable token (e.g., "var(--fd-node-amber)")
|
|
387
|
+
* @returns Hex color value or the original value if not a known token
|
|
388
|
+
*/
|
|
389
|
+
export function resolveColorToken(token) {
|
|
390
|
+
return TOKEN_TO_HEX[token] || token;
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* Get the appropriate contrast text color for a data type badge
|
|
394
|
+
* @param dataType - The data type (e.g., "array", "string", "number")
|
|
395
|
+
* @returns CSS color value for text that provides good contrast on the data type's background
|
|
396
|
+
*/
|
|
397
|
+
export function getContrastTextColorForDataType(dataType) {
|
|
398
|
+
const colorToken = getDataTypeColorToken(dataType);
|
|
399
|
+
const hexColor = resolveColorToken(colorToken);
|
|
400
|
+
return getContrastTextColor(hexColor);
|
|
401
|
+
}
|
|
402
|
+
/**
|
|
403
|
+
* Get the appropriate contrast text color for a category badge
|
|
404
|
+
* @param category - The node category
|
|
405
|
+
* @returns CSS color value for text that provides good contrast on the category's background
|
|
406
|
+
*/
|
|
407
|
+
export function getContrastTextColorForCategory(category) {
|
|
408
|
+
const colorToken = getCategoryColorToken(category);
|
|
409
|
+
const hexColor = resolveColorToken(colorToken);
|
|
410
|
+
return getContrastTextColor(hexColor);
|
|
411
|
+
}
|
|
412
|
+
/**
|
|
413
|
+
* Get a semi-transparent tinted background color for ports
|
|
414
|
+
* Creates a cohesive look with the icon wrapper styling
|
|
415
|
+
* @param dataType - The data type
|
|
416
|
+
* @param opacity - Opacity percentage (default 25%)
|
|
417
|
+
* @returns CSS color-mix expression for the tinted background
|
|
418
|
+
*/
|
|
419
|
+
export function getPortBackgroundColor(dataType, opacity = 25) {
|
|
420
|
+
const colorToken = getDataTypeColorToken(dataType);
|
|
421
|
+
return `color-mix(in srgb, ${colorToken} ${opacity}%, transparent)`;
|
|
422
|
+
}
|
|
423
|
+
/**
|
|
424
|
+
* Get the border color for ports (solid data type color)
|
|
425
|
+
* @param dataType - The data type
|
|
426
|
+
* @returns CSS color value for the port border
|
|
427
|
+
*/
|
|
428
|
+
export function getPortBorderColor(dataType) {
|
|
429
|
+
return getDataTypeColorToken(dataType);
|
|
430
|
+
}
|
|
431
|
+
/**
|
|
432
|
+
* Convert RGB components to hex color string
|
|
433
|
+
* @param r - Red component (0-255)
|
|
434
|
+
* @param g - Green component (0-255)
|
|
435
|
+
* @param b - Blue component (0-255)
|
|
436
|
+
* @returns Hex color string with # prefix
|
|
437
|
+
*/
|
|
438
|
+
export function rgbToHex(r, g, b) {
|
|
439
|
+
const toHex = (value) => {
|
|
440
|
+
const clamped = Math.max(0, Math.min(255, Math.round(value)));
|
|
441
|
+
return clamped.toString(16).padStart(2, '0');
|
|
442
|
+
};
|
|
443
|
+
return `#${toHex(r)}${toHex(g)}${toHex(b)}`;
|
|
444
|
+
}
|
|
445
|
+
/**
|
|
446
|
+
* Generate a light tint of a color (similar to Tailwind's -50 shade)
|
|
447
|
+
* Creates a very light background-friendly version of the color for light mode
|
|
448
|
+
* @param hex - Base hex color string
|
|
449
|
+
* @returns Light tint hex color string
|
|
450
|
+
*/
|
|
451
|
+
export function getLightTint(hex) {
|
|
452
|
+
const rgb = hexToRgb(hex);
|
|
453
|
+
if (!rgb) {
|
|
454
|
+
return '#fffbeb'; // Fallback to amber-50
|
|
455
|
+
}
|
|
456
|
+
// Mix with white at 95% to create a very light tint
|
|
457
|
+
const mixRatio = 0.95;
|
|
458
|
+
const r = rgb.r + (255 - rgb.r) * mixRatio;
|
|
459
|
+
const g = rgb.g + (255 - rgb.g) * mixRatio;
|
|
460
|
+
const b = rgb.b + (255 - rgb.b) * mixRatio;
|
|
461
|
+
return rgbToHex(r, g, b);
|
|
462
|
+
}
|
|
463
|
+
/**
|
|
464
|
+
* Generate a dark tint of a color for dark mode backgrounds
|
|
465
|
+
* Creates a subtle, muted version of the color that works well on dark backgrounds
|
|
466
|
+
* @param hex - Base hex color string
|
|
467
|
+
* @param opacity - Optional opacity for the color overlay (default 0.15)
|
|
468
|
+
* @returns Dark tint hex color string
|
|
469
|
+
*/
|
|
470
|
+
export function getDarkTint(hex, opacity = 0.15) {
|
|
471
|
+
const rgb = hexToRgb(hex);
|
|
472
|
+
if (!rgb) {
|
|
473
|
+
return '#2a2518'; // Fallback dark amber tint
|
|
474
|
+
}
|
|
475
|
+
// Mix with dark background (#1a1a1e) to create a subtle dark tint
|
|
476
|
+
const darkBg = { r: 26, g: 26, b: 30 };
|
|
477
|
+
const r = darkBg.r + (rgb.r - darkBg.r) * opacity;
|
|
478
|
+
const g = darkBg.g + (rgb.g - darkBg.g) * opacity;
|
|
479
|
+
const b = darkBg.b + (rgb.b - darkBg.b) * opacity;
|
|
480
|
+
return rgbToHex(r, g, b);
|
|
481
|
+
}
|
|
482
|
+
/**
|
|
483
|
+
* Generate a border tint of a color (similar to Tailwind's -300 shade)
|
|
484
|
+
* Creates a medium-light version suitable for borders in light mode
|
|
485
|
+
* @param hex - Base hex color string
|
|
486
|
+
* @returns Border tint hex color string
|
|
487
|
+
*/
|
|
488
|
+
export function getBorderTint(hex) {
|
|
489
|
+
const rgb = hexToRgb(hex);
|
|
490
|
+
if (!rgb) {
|
|
491
|
+
return '#fcd34d'; // Fallback to amber-300
|
|
492
|
+
}
|
|
493
|
+
// Mix with white at 60% to create a medium-light tint
|
|
494
|
+
const mixRatio = 0.6;
|
|
495
|
+
const r = rgb.r + (255 - rgb.r) * mixRatio;
|
|
496
|
+
const g = rgb.g + (255 - rgb.g) * mixRatio;
|
|
497
|
+
const b = rgb.b + (255 - rgb.b) * mixRatio;
|
|
498
|
+
return rgbToHex(r, g, b);
|
|
499
|
+
}
|
|
500
|
+
/**
|
|
501
|
+
* Generate a dark border tint of a color for dark mode
|
|
502
|
+
* Creates a medium-dark version suitable for borders in dark mode
|
|
503
|
+
* @param hex - Base hex color string
|
|
504
|
+
* @returns Dark border tint hex color string
|
|
505
|
+
*/
|
|
506
|
+
export function getDarkBorderTint(hex) {
|
|
507
|
+
const rgb = hexToRgb(hex);
|
|
508
|
+
if (!rgb) {
|
|
509
|
+
return '#5c4a1e'; // Fallback dark amber border
|
|
510
|
+
}
|
|
511
|
+
// Mix with dark background to create a muted but visible border
|
|
512
|
+
const darkBg = { r: 26, g: 26, b: 30 };
|
|
513
|
+
const mixRatio = 0.35;
|
|
514
|
+
const r = darkBg.r + (rgb.r - darkBg.r) * mixRatio;
|
|
515
|
+
const g = darkBg.g + (rgb.g - darkBg.g) * mixRatio;
|
|
516
|
+
const b = darkBg.b + (rgb.b - darkBg.b) * mixRatio;
|
|
517
|
+
return rgbToHex(r, g, b);
|
|
518
|
+
}
|
|
519
|
+
/**
|
|
520
|
+
* Generate color variants for theming a component
|
|
521
|
+
* Returns variants for both light and dark modes
|
|
522
|
+
* @param baseColor - Base hex color string
|
|
523
|
+
* @returns Object with base, light, border, darkLight, and darkBorder color variants
|
|
524
|
+
*/
|
|
525
|
+
export function getColorVariants(baseColor) {
|
|
526
|
+
return {
|
|
527
|
+
base: baseColor,
|
|
528
|
+
light: getLightTint(baseColor),
|
|
529
|
+
border: getBorderTint(baseColor),
|
|
530
|
+
darkLight: getDarkTint(baseColor),
|
|
531
|
+
darkBorder: getDarkBorderTint(baseColor)
|
|
532
|
+
};
|
|
533
|
+
}
|
|
534
|
+
/**
|
|
535
|
+
* Get theme-aware color variants
|
|
536
|
+
* Returns the appropriate light or dark variants based on the theme
|
|
537
|
+
* @param baseColor - Base hex color string
|
|
538
|
+
* @param isDarkMode - Whether dark mode is active
|
|
539
|
+
* @returns Object with base, background, and border colors appropriate for the theme
|
|
540
|
+
*/
|
|
541
|
+
export function getThemeAwareColorVariants(baseColor, isDarkMode) {
|
|
542
|
+
const variants = getColorVariants(baseColor);
|
|
543
|
+
return {
|
|
544
|
+
base: variants.base,
|
|
545
|
+
background: isDarkMode ? variants.darkLight : variants.light,
|
|
546
|
+
border: isDarkMode ? variants.darkBorder : variants.border
|
|
547
|
+
};
|
|
548
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration utilities for FlowDrop Editor
|
|
3
|
+
*/
|
|
4
|
+
import type { WorkflowEditorConfig, EditorFeatures, UIConfig, APIConfig, ExecutionConfig, StorageConfig } from '../types/config.js';
|
|
5
|
+
import type { EndpointConfig } from '../config/endpoints.js';
|
|
6
|
+
/**
|
|
7
|
+
* Create default editor features configuration
|
|
8
|
+
*/
|
|
9
|
+
export declare function createDefaultFeatures(): EditorFeatures;
|
|
10
|
+
/**
|
|
11
|
+
* Create default UI configuration
|
|
12
|
+
*/
|
|
13
|
+
export declare function createDefaultUIConfig(): UIConfig;
|
|
14
|
+
/**
|
|
15
|
+
* Create default API configuration
|
|
16
|
+
*/
|
|
17
|
+
export declare function createDefaultAPIConfig(): APIConfig;
|
|
18
|
+
/**
|
|
19
|
+
* Create default execution configuration
|
|
20
|
+
*/
|
|
21
|
+
export declare function createDefaultExecutionConfig(): ExecutionConfig;
|
|
22
|
+
/**
|
|
23
|
+
* Create default storage configuration
|
|
24
|
+
*/
|
|
25
|
+
export declare function createDefaultStorageConfig(): StorageConfig;
|
|
26
|
+
/**
|
|
27
|
+
* Create default workflow editor configuration
|
|
28
|
+
*/
|
|
29
|
+
export declare function createDefaultConfig(endpointConfig?: EndpointConfig): WorkflowEditorConfig;
|
|
30
|
+
/**
|
|
31
|
+
* Merge configuration with defaults
|
|
32
|
+
*/
|
|
33
|
+
export declare function mergeConfig(userConfig: Partial<WorkflowEditorConfig>, defaultConfig: WorkflowEditorConfig): WorkflowEditorConfig;
|
|
34
|
+
/**
|
|
35
|
+
* Validate configuration
|
|
36
|
+
*/
|
|
37
|
+
export declare function validateConfig(config: WorkflowEditorConfig): string[];
|