@flowdrop/flowdrop 1.5.0 → 1.7.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/README.md +46 -47
- package/dist/adapters/WorkflowAdapter.d.ts +1 -1
- package/dist/adapters/WorkflowAdapter.js +26 -26
- package/dist/adapters/agentspec/AgentSpecAdapter.d.ts +2 -2
- package/dist/adapters/agentspec/AgentSpecAdapter.js +122 -133
- package/dist/adapters/agentspec/agentAdapter.d.ts +2 -2
- package/dist/adapters/agentspec/agentAdapter.js +10 -10
- package/dist/adapters/agentspec/autoLayout.d.ts +1 -1
- package/dist/adapters/agentspec/autoLayout.js +7 -9
- package/dist/adapters/agentspec/componentTypeDefaults.d.ts +1 -1
- package/dist/adapters/agentspec/componentTypeDefaults.js +120 -120
- package/dist/adapters/agentspec/defaultNodeTypes.d.ts +2 -2
- package/dist/adapters/agentspec/defaultNodeTypes.js +307 -307
- package/dist/adapters/agentspec/index.d.ts +10 -10
- package/dist/adapters/agentspec/index.js +6 -6
- package/dist/adapters/agentspec/validator.d.ts +2 -2
- package/dist/adapters/agentspec/validator.js +20 -22
- package/dist/api/enhanced-client.d.ts +3 -3
- package/dist/api/enhanced-client.js +72 -73
- package/dist/chat/commandClassifier.js +6 -6
- package/dist/chat/index.d.ts +5 -5
- package/dist/chat/index.js +4 -4
- package/dist/chat/responseParser.d.ts +6 -6
- package/dist/chat/responseParser.js +28 -24
- package/dist/commands/batch.d.ts +1 -1
- package/dist/commands/batch.js +5 -7
- package/dist/commands/executor.d.ts +2 -2
- package/dist/commands/executor.js +320 -231
- package/dist/commands/index.d.ts +6 -6
- package/dist/commands/index.js +5 -5
- package/dist/commands/parser.d.ts +1 -1
- package/dist/commands/parser.js +91 -74
- package/dist/commands/positioner.d.ts +2 -2
- package/dist/commands/positioner.js +1 -1
- package/dist/commands/storeIntegration.svelte.d.ts +2 -2
- package/dist/commands/storeIntegration.svelte.js +5 -5
- package/dist/commands/types.d.ts +42 -42
- package/dist/commands/types.js +2 -2
- package/dist/components/App.svelte +280 -303
- package/dist/components/App.svelte.d.ts +11 -9
- package/dist/components/CanvasBanner.stories.svelte +10 -16
- package/dist/components/CanvasBanner.stories.svelte.d.ts +1 -1
- package/dist/components/CanvasBanner.svelte +2 -2
- package/dist/components/CanvasBanner.svelte.d.ts +1 -1
- package/dist/components/CanvasController.svelte +3 -4
- package/dist/components/ConfigForm.svelte +118 -256
- package/dist/components/ConfigForm.svelte.d.ts +2 -2
- package/dist/components/ConfigMappingRow.svelte +7 -9
- package/dist/components/ConfigMappingRow.svelte.d.ts +1 -1
- package/dist/components/ConfigModal.svelte +3 -3
- package/dist/components/ConfigModal.svelte.d.ts +1 -1
- package/dist/components/ConfigPanel.stories.svelte +19 -19
- package/dist/components/ConfigPanel.stories.svelte.d.ts +1 -1
- package/dist/components/ConfigPanel.svelte +9 -20
- package/dist/components/ConfigPanel.svelte.d.ts +1 -1
- package/dist/components/ConnectionLine.svelte +4 -4
- package/dist/components/EdgeRefresher.svelte +1 -1
- package/dist/components/FlowDropEdge.stories.svelte +110 -110
- package/dist/components/FlowDropEdge.svelte +9 -9
- package/dist/components/FlowDropEdge.svelte.d.ts +1 -1
- package/dist/components/FlowDropZone.svelte +6 -9
- package/dist/components/FlowDropZone.svelte.d.ts +1 -1
- package/dist/components/LoadingSpinner.stories.svelte +13 -13
- package/dist/components/LoadingSpinner.stories.svelte.d.ts +1 -1
- package/dist/components/LoadingSpinner.svelte +3 -3
- package/dist/components/LoadingSpinner.svelte.d.ts +1 -1
- package/dist/components/Logo.stories.svelte +4 -4
- package/dist/components/Logo.stories.svelte.d.ts +1 -1
- package/dist/components/Logo.svelte +3 -9
- package/dist/components/LogsSidebar.svelte +41 -48
- package/dist/components/LogsSidebar.svelte.d.ts +1 -1
- package/dist/components/MarkdownDisplay.stories.svelte +10 -14
- package/dist/components/MarkdownDisplay.stories.svelte.d.ts +1 -1
- package/dist/components/MarkdownDisplay.svelte +4 -6
- package/dist/components/Navbar.stories.svelte +19 -19
- package/dist/components/Navbar.stories.svelte.d.ts +1 -1
- package/dist/components/Navbar.svelte +28 -49
- package/dist/components/Navbar.svelte.d.ts +2 -2
- package/dist/components/NodeSidebar.svelte +42 -88
- package/dist/components/NodeSidebar.svelte.d.ts +1 -1
- package/dist/components/NodeStatusOverlay.stories.svelte +19 -31
- package/dist/components/NodeStatusOverlay.stories.svelte.d.ts +1 -1
- package/dist/components/NodeStatusOverlay.svelte +40 -55
- package/dist/components/NodeStatusOverlay.svelte.d.ts +3 -3
- package/dist/components/NodeSwapPicker.svelte +20 -64
- package/dist/components/NodeSwapPicker.svelte.d.ts +1 -1
- package/dist/components/PipelineStatus.svelte +63 -89
- package/dist/components/PipelineStatus.svelte.d.ts +4 -4
- package/dist/components/PortCoordinateTracker.svelte +5 -7
- package/dist/components/PortCoordinateTracker.svelte.d.ts +1 -1
- package/dist/components/PortMappingRow.svelte +20 -24
- package/dist/components/PortMappingRow.svelte.d.ts +2 -2
- package/dist/components/ReadOnlyDetails.svelte +1 -1
- package/dist/components/SchemaForm.stories.svelte +53 -53
- package/dist/components/SchemaForm.stories.svelte.d.ts +1 -1
- package/dist/components/SchemaForm.svelte +24 -51
- package/dist/components/SchemaForm.svelte.d.ts +2 -2
- package/dist/components/SettingsModal.svelte +6 -9
- package/dist/components/SettingsModal.svelte.d.ts +1 -1
- package/dist/components/SettingsPanel.svelte +138 -158
- package/dist/components/SettingsPanel.svelte.d.ts +1 -1
- package/dist/components/StatusIcon.stories.svelte +16 -29
- package/dist/components/StatusIcon.stories.svelte.d.ts +1 -1
- package/dist/components/StatusIcon.svelte +19 -19
- package/dist/components/StatusIcon.svelte.d.ts +2 -2
- package/dist/components/StatusLabel.stories.svelte +8 -8
- package/dist/components/StatusLabel.stories.svelte.d.ts +1 -1
- package/dist/components/SwapMappingEditor.svelte +35 -56
- package/dist/components/SwapMappingEditor.svelte.d.ts +2 -2
- package/dist/components/ThemeToggle.stories.svelte +10 -10
- package/dist/components/ThemeToggle.stories.svelte.d.ts +1 -1
- package/dist/components/ThemeToggle.svelte +22 -33
- package/dist/components/ThemeToggle.svelte.d.ts +1 -1
- package/dist/components/UniversalNode.svelte +29 -41
- package/dist/components/UniversalNode.svelte.d.ts +3 -3
- package/dist/components/WorkflowEditor.svelte +113 -168
- package/dist/components/WorkflowEditor.svelte.d.ts +4 -4
- package/dist/components/chat/AIChatPanel.svelte +272 -133
- package/dist/components/chat/AIChatPanel.svelte.d.ts +3 -3
- package/dist/components/chat/CommandPreview.svelte +74 -24
- package/dist/components/chat/CommandPreview.svelte.d.ts +1 -1
- package/dist/components/console/CommandConsole.stories.svelte +71 -53
- package/dist/components/console/CommandConsole.stories.svelte.d.ts +1 -1
- package/dist/components/console/CommandConsole.svelte +39 -35
- package/dist/components/console/CommandConsole.svelte.d.ts +2 -2
- package/dist/components/console/ConsoleAutocomplete.svelte +6 -3
- package/dist/components/console/ConsoleInput.svelte +148 -89
- package/dist/components/console/ConsoleInput.svelte.d.ts +1 -1
- package/dist/components/console/ConsoleOutput.svelte +5 -10
- package/dist/components/console/ConsoleOutput.svelte.d.ts +1 -1
- package/dist/components/console/formatters.d.ts +1 -1
- package/dist/components/console/formatters.js +27 -29
- package/dist/components/form/FormArray.svelte +75 -132
- package/dist/components/form/FormArray.svelte.d.ts +1 -1
- package/dist/components/form/FormAutocomplete.svelte +65 -108
- package/dist/components/form/FormAutocomplete.svelte.d.ts +1 -1
- package/dist/components/form/FormCheckboxGroup.stories.svelte +13 -16
- package/dist/components/form/FormCheckboxGroup.stories.svelte.d.ts +1 -1
- package/dist/components/form/FormCheckboxGroup.svelte +2 -2
- package/dist/components/form/FormCodeEditor.svelte +46 -59
- package/dist/components/form/FormField.svelte +79 -90
- package/dist/components/form/FormField.svelte.d.ts +2 -2
- package/dist/components/form/FormFieldLight.svelte +72 -88
- package/dist/components/form/FormFieldLight.svelte.d.ts +1 -1
- package/dist/components/form/FormFieldWrapper.stories.svelte +14 -14
- package/dist/components/form/FormFieldWrapper.stories.svelte.d.ts +1 -1
- package/dist/components/form/FormFieldWrapper.svelte +2 -9
- package/dist/components/form/FormFieldWrapper.svelte.d.ts +1 -1
- package/dist/components/form/FormFieldset.svelte +3 -3
- package/dist/components/form/FormFieldset.svelte.d.ts +2 -2
- package/dist/components/form/FormMarkdownEditor.svelte +123 -156
- package/dist/components/form/FormNumberField.stories.svelte +18 -18
- package/dist/components/form/FormNumberField.stories.svelte.d.ts +1 -1
- package/dist/components/form/FormNumberField.svelte +6 -6
- package/dist/components/form/FormRangeField.stories.svelte +13 -13
- package/dist/components/form/FormRangeField.stories.svelte.d.ts +1 -1
- package/dist/components/form/FormRangeField.svelte +4 -12
- package/dist/components/form/FormSelect.stories.svelte +21 -21
- package/dist/components/form/FormSelect.stories.svelte.d.ts +1 -1
- package/dist/components/form/FormSelect.svelte +5 -5
- package/dist/components/form/FormSelect.svelte.d.ts +1 -1
- package/dist/components/form/FormTemplateEditor.svelte +126 -175
- package/dist/components/form/FormTemplateEditor.svelte.d.ts +1 -1
- package/dist/components/form/FormTextField.stories.svelte +17 -23
- package/dist/components/form/FormTextField.stories.svelte.d.ts +1 -1
- package/dist/components/form/FormTextField.svelte +4 -4
- package/dist/components/form/FormTextarea.stories.svelte +18 -21
- package/dist/components/form/FormTextarea.stories.svelte.d.ts +1 -1
- package/dist/components/form/FormTextarea.svelte +4 -4
- package/dist/components/form/FormToggle.stories.svelte +13 -16
- package/dist/components/form/FormToggle.stories.svelte.d.ts +1 -1
- package/dist/components/form/FormToggle.svelte +3 -3
- package/dist/components/form/FormUISchemaRenderer.svelte +12 -19
- package/dist/components/form/FormUISchemaRenderer.svelte.d.ts +3 -3
- package/dist/components/form/index.d.ts +19 -19
- package/dist/components/form/index.js +18 -18
- package/dist/components/form/templateAutocomplete.d.ts +2 -2
- package/dist/components/form/templateAutocomplete.js +55 -64
- package/dist/components/form/types.d.ts +6 -6
- package/dist/components/form/types.js +4 -9
- package/dist/components/icons/AlertCircleIcon.svelte +1 -6
- package/dist/components/icons/CogIcon.svelte +1 -6
- package/dist/components/interrupt/ChoicePrompt.stories.svelte +27 -27
- package/dist/components/interrupt/ChoicePrompt.stories.svelte.d.ts +1 -1
- package/dist/components/interrupt/ChoicePrompt.svelte +17 -41
- package/dist/components/interrupt/ChoicePrompt.svelte.d.ts +1 -1
- package/dist/components/interrupt/ConfirmationPrompt.stories.svelte +17 -17
- package/dist/components/interrupt/ConfirmationPrompt.stories.svelte.d.ts +1 -1
- package/dist/components/interrupt/ConfirmationPrompt.svelte +10 -16
- package/dist/components/interrupt/ConfirmationPrompt.svelte.d.ts +1 -1
- package/dist/components/interrupt/FormPrompt.svelte +10 -15
- package/dist/components/interrupt/FormPrompt.svelte.d.ts +1 -1
- package/dist/components/interrupt/InterruptBubble.svelte +87 -121
- package/dist/components/interrupt/InterruptBubble.svelte.d.ts +2 -2
- package/dist/components/interrupt/ReviewPrompt.stories.svelte +37 -37
- package/dist/components/interrupt/ReviewPrompt.stories.svelte.d.ts +1 -1
- package/dist/components/interrupt/ReviewPrompt.svelte +55 -75
- package/dist/components/interrupt/ReviewPrompt.svelte.d.ts +1 -1
- package/dist/components/interrupt/TextInputPrompt.stories.svelte +16 -17
- package/dist/components/interrupt/TextInputPrompt.stories.svelte.d.ts +1 -1
- package/dist/components/interrupt/TextInputPrompt.svelte +13 -18
- package/dist/components/interrupt/TextInputPrompt.svelte.d.ts +1 -1
- package/dist/components/interrupt/index.d.ts +6 -6
- package/dist/components/interrupt/index.js +6 -6
- package/dist/components/layouts/MainLayout.svelte +46 -84
- package/dist/components/layouts/MainLayout.svelte.d.ts +6 -6
- package/dist/components/nodes/GatewayNode.stories.svelte +64 -65
- package/dist/components/nodes/GatewayNode.svelte +37 -70
- package/dist/components/nodes/GatewayNode.svelte.d.ts +3 -3
- package/dist/components/nodes/IdeaNode.stories.svelte +25 -26
- package/dist/components/nodes/IdeaNode.svelte +22 -36
- package/dist/components/nodes/IdeaNode.svelte.d.ts +1 -1
- package/dist/components/nodes/NotesNode.stories.svelte +37 -38
- package/dist/components/nodes/NotesNode.svelte +28 -39
- package/dist/components/nodes/NotesNode.svelte.d.ts +1 -1
- package/dist/components/nodes/SimpleNode.stories.svelte +137 -138
- package/dist/components/nodes/SimpleNode.svelte +51 -81
- package/dist/components/nodes/SimpleNode.svelte.d.ts +1 -1
- package/dist/components/nodes/SquareNode.stories.svelte +75 -75
- package/dist/components/nodes/SquareNode.svelte +42 -68
- package/dist/components/nodes/SquareNode.svelte.d.ts +1 -1
- package/dist/components/nodes/TerminalNode.stories.svelte +10 -10
- package/dist/components/nodes/TerminalNode.svelte +74 -112
- package/dist/components/nodes/TerminalNode.svelte.d.ts +1 -1
- package/dist/components/nodes/ToolNode.stories.svelte +115 -116
- package/dist/components/nodes/ToolNode.svelte +31 -64
- package/dist/components/nodes/ToolNode.svelte.d.ts +1 -1
- package/dist/components/nodes/WorkflowNode.stories.svelte +84 -89
- package/dist/components/nodes/WorkflowNode.svelte +50 -103
- package/dist/components/nodes/WorkflowNode.svelte.d.ts +3 -3
- package/dist/components/playground/ChatPanel.svelte +47 -103
- package/dist/components/playground/ExecutionLogs.svelte +45 -68
- package/dist/components/playground/InputCollector.svelte +32 -51
- package/dist/components/playground/MessageBubble.stories.svelte +25 -25
- package/dist/components/playground/MessageBubble.stories.svelte.d.ts +1 -1
- package/dist/components/playground/MessageBubble.svelte +54 -70
- package/dist/components/playground/MessageBubble.svelte.d.ts +1 -1
- package/dist/components/playground/Playground.svelte +60 -91
- package/dist/components/playground/Playground.svelte.d.ts +3 -3
- package/dist/components/playground/PlaygroundModal.svelte +8 -12
- package/dist/components/playground/PlaygroundModal.svelte.d.ts +3 -3
- package/dist/components/playground/SessionManager.svelte +34 -40
- package/dist/components/playground/SessionManager.svelte.d.ts +1 -1
- package/dist/config/agentSpecEndpoints.d.ts +1 -1
- package/dist/config/agentSpecEndpoints.js +20 -20
- package/dist/config/constants.js +2 -2
- package/dist/config/defaultCategories.d.ts +1 -1
- package/dist/config/defaultCategories.js +86 -86
- package/dist/config/defaultPortConfig.d.ts +1 -1
- package/dist/config/defaultPortConfig.js +144 -144
- package/dist/config/endpoints.d.ts +4 -4
- package/dist/config/endpoints.js +68 -68
- package/dist/config/runtimeConfig.d.ts +2 -2
- package/dist/config/runtimeConfig.js +8 -8
- package/dist/core/index.d.ts +68 -68
- package/dist/core/index.js +38 -38
- package/dist/display/index.d.ts +2 -2
- package/dist/display/index.js +2 -2
- package/dist/editor/index.d.ts +64 -64
- package/dist/editor/index.js +54 -54
- package/dist/form/code.d.ts +5 -5
- package/dist/form/code.js +14 -14
- package/dist/form/fieldRegistry.d.ts +3 -3
- package/dist/form/fieldRegistry.js +9 -11
- package/dist/form/full.d.ts +8 -8
- package/dist/form/full.js +9 -9
- package/dist/form/index.d.ts +18 -18
- package/dist/form/index.js +16 -16
- package/dist/form/markdown.d.ts +4 -4
- package/dist/form/markdown.js +8 -8
- package/dist/helpers/proximityConnect.d.ts +3 -3
- package/dist/helpers/proximityConnect.js +32 -34
- package/dist/helpers/workflowEditorHelper.d.ts +6 -6
- package/dist/helpers/workflowEditorHelper.js +64 -68
- package/dist/index.d.ts +6 -6
- package/dist/index.js +6 -6
- package/dist/mocks/app-environment.js +2 -2
- package/dist/mocks/app-forms.js +1 -1
- package/dist/mocks/app-navigation.js +2 -2
- package/dist/mocks/app-stores.js +3 -3
- package/dist/playground/index.d.ts +19 -19
- package/dist/playground/index.js +16 -16
- package/dist/playground/mount.d.ts +3 -3
- package/dist/playground/mount.js +24 -24
- package/dist/registry/builtinFormats.js +13 -13
- package/dist/registry/builtinNodes.d.ts +2 -2
- package/dist/registry/builtinNodes.js +77 -77
- package/dist/registry/index.d.ts +4 -4
- package/dist/registry/index.js +4 -4
- package/dist/registry/nodeComponentRegistry.d.ts +8 -8
- package/dist/registry/nodeComponentRegistry.js +9 -11
- package/dist/registry/plugin.d.ts +2 -2
- package/dist/registry/plugin.js +11 -11
- package/dist/registry/workflowFormatRegistry.d.ts +3 -3
- package/dist/registry/workflowFormatRegistry.js +2 -2
- package/dist/schema/index.d.ts +1 -1
- package/dist/schema/index.js +2 -2
- package/dist/schemas/v1/workflow.schema.json +5 -0
- package/dist/services/agentSpecExecutionService.d.ts +3 -3
- package/dist/services/agentSpecExecutionService.js +55 -56
- package/dist/services/api.d.ts +2 -2
- package/dist/services/api.js +37 -37
- package/dist/services/apiVariableService.d.ts +1 -1
- package/dist/services/apiVariableService.js +34 -41
- package/dist/services/autoSaveService.js +8 -8
- package/dist/services/categoriesApi.d.ts +2 -2
- package/dist/services/categoriesApi.js +8 -8
- package/dist/services/chatService.d.ts +1 -1
- package/dist/services/chatService.js +18 -18
- package/dist/services/draftStorage.d.ts +1 -1
- package/dist/services/draftStorage.js +11 -11
- package/dist/services/dynamicSchemaService.d.ts +1 -1
- package/dist/services/dynamicSchemaService.js +39 -41
- package/dist/services/globalSave.d.ts +2 -2
- package/dist/services/globalSave.js +38 -41
- package/dist/services/historyService.d.ts +1 -1
- package/dist/services/historyService.js +10 -10
- package/dist/services/interruptService.d.ts +1 -1
- package/dist/services/interruptService.js +29 -35
- package/dist/services/nodeExecutionService.d.ts +1 -1
- package/dist/services/nodeExecutionService.js +44 -45
- package/dist/services/playgroundService.d.ts +1 -1
- package/dist/services/playgroundService.js +29 -29
- package/dist/services/portConfigApi.d.ts +2 -2
- package/dist/services/portConfigApi.js +8 -8
- package/dist/services/settingsService.d.ts +2 -2
- package/dist/services/settingsService.js +19 -25
- package/dist/services/toastService.d.ts +4 -4
- package/dist/services/toastService.js +33 -33
- package/dist/services/variableService.d.ts +1 -1
- package/dist/services/variableService.js +36 -36
- package/dist/services/workflowStorage.d.ts +2 -2
- package/dist/services/workflowStorage.js +13 -13
- package/dist/settings/index.d.ts +7 -7
- package/dist/settings/index.js +6 -6
- package/dist/skins/default.d.ts +1 -1
- package/dist/skins/default.js +1 -1
- package/dist/skins/index.d.ts +3 -3
- package/dist/skins/index.js +7 -7
- package/dist/skins/slate.d.ts +1 -1
- package/dist/skins/slate.js +69 -69
- package/dist/stores/categoriesStore.svelte.d.ts +1 -1
- package/dist/stores/categoriesStore.svelte.js +5 -5
- package/dist/stores/editorStateMachine.svelte.d.ts +2 -2
- package/dist/stores/editorStateMachine.svelte.js +34 -34
- package/dist/stores/historyStore.svelte.d.ts +4 -4
- package/dist/stores/historyStore.svelte.js +4 -4
- package/dist/stores/interruptStore.svelte.d.ts +3 -3
- package/dist/stores/interruptStore.svelte.js +21 -21
- package/dist/stores/playgroundStore.svelte.d.ts +2 -2
- package/dist/stores/playgroundStore.svelte.js +18 -21
- package/dist/stores/portCoordinateStore.svelte.d.ts +2 -2
- package/dist/stores/portCoordinateStore.svelte.js +10 -13
- package/dist/stores/settingsStore.svelte.d.ts +2 -2
- package/dist/stores/settingsStore.svelte.js +57 -62
- package/dist/stores/workflowStore.svelte.d.ts +4 -3
- package/dist/stores/workflowStore.svelte.js +47 -47
- package/dist/stories/CanvasDecorator.svelte +7 -10
- package/dist/stories/CanvasDecorator.svelte.d.ts +2 -2
- package/dist/stories/EdgeDecorator.svelte +28 -31
- package/dist/stories/EdgeDecorator.svelte.d.ts +1 -1
- package/dist/stories/NodeDecorator.svelte +14 -20
- package/dist/stories/NodeDecorator.svelte.d.ts +1 -1
- package/dist/stories/utils.d.ts +2 -2
- package/dist/stories/utils.js +89 -93
- package/dist/styles/base.css +16 -50
- package/dist/styles/tokens.css +10 -28
- package/dist/svelte-app.d.ts +10 -10
- package/dist/svelte-app.js +39 -39
- package/dist/themes/default.d.ts +1 -1
- package/dist/themes/default.js +4 -4
- package/dist/themes/index.d.ts +3 -3
- package/dist/themes/index.js +11 -11
- package/dist/themes/minimal.d.ts +1 -1
- package/dist/themes/minimal.js +5 -5
- package/dist/types/agentspec.d.ts +18 -18
- package/dist/types/agentspec.js +2 -2
- package/dist/types/auth.d.ts +1 -1
- package/dist/types/auth.js +6 -6
- package/dist/types/chat.d.ts +2 -2
- package/dist/types/config.d.ts +6 -6
- package/dist/types/events.d.ts +3 -3
- package/dist/types/events.js +2 -2
- package/dist/types/index.d.ts +34 -32
- package/dist/types/index.js +6 -6
- package/dist/types/interrupt.d.ts +6 -6
- package/dist/types/interrupt.js +21 -21
- package/dist/types/interruptState.d.ts +12 -12
- package/dist/types/interruptState.js +66 -66
- package/dist/types/playground.d.ts +7 -7
- package/dist/types/playground.js +14 -14
- package/dist/types/settings.d.ts +7 -5
- package/dist/types/settings.js +19 -24
- package/dist/types/skin.d.ts +1 -1
- package/dist/types/theme.d.ts +2 -2
- package/dist/types/uischema.d.ts +4 -4
- package/dist/types/uischema.js +3 -3
- package/dist/utils/colors.d.ts +1 -1
- package/dist/utils/colors.js +95 -97
- package/dist/utils/config.d.ts +2 -2
- package/dist/utils/config.js +48 -48
- package/dist/utils/connections.d.ts +6 -2
- package/dist/utils/connections.js +21 -15
- package/dist/utils/edgeStyling.d.ts +2 -2
- package/dist/utils/edgeStyling.js +36 -39
- package/dist/utils/errors.js +3 -3
- package/dist/utils/fetchWithAuth.d.ts +1 -1
- package/dist/utils/fetchWithAuth.js +2 -2
- package/dist/utils/handleIds.d.ts +2 -2
- package/dist/utils/handleIds.js +8 -8
- package/dist/utils/handlePositioning.d.ts +1 -1
- package/dist/utils/handlePositioning.js +2 -2
- package/dist/utils/icons.d.ts +1 -1
- package/dist/utils/icons.js +74 -74
- package/dist/utils/logger.d.ts +1 -1
- package/dist/utils/logger.js +7 -7
- package/dist/utils/nodeIds.d.ts +1 -1
- package/dist/utils/nodeIds.js +1 -1
- package/dist/utils/nodeStatus.d.ts +1 -1
- package/dist/utils/nodeStatus.js +48 -48
- package/dist/utils/nodeSwap.d.ts +9 -9
- package/dist/utils/nodeSwap.js +52 -58
- package/dist/utils/nodeTypes.d.ts +1 -1
- package/dist/utils/nodeTypes.js +20 -21
- package/dist/utils/nodeWrapper.d.ts +7 -7
- package/dist/utils/nodeWrapper.js +19 -21
- package/dist/utils/performanceUtils.d.ts +1 -1
- package/dist/utils/performanceUtils.js +1 -2
- package/dist/utils/portUtils.d.ts +2 -2
- package/dist/utils/portUtils.js +1 -1
- package/dist/utils/sanitize.js +1 -1
- package/dist/utils/uischema.d.ts +2 -2
- package/dist/utils/uischema.js +8 -8
- package/dist/utils/validation.js +8 -8
- package/package.json +7 -11
|
@@ -10,29 +10,22 @@
|
|
|
10
10
|
-->
|
|
11
11
|
|
|
12
12
|
<script lang="ts">
|
|
13
|
-
import { Position, Handle } from
|
|
13
|
+
import { Position, Handle } from '@xyflow/svelte';
|
|
14
14
|
import type {
|
|
15
15
|
ConfigValues,
|
|
16
16
|
NodeMetadata,
|
|
17
17
|
NodeExtensions,
|
|
18
18
|
NodePort,
|
|
19
|
-
DynamicPort
|
|
20
|
-
} from
|
|
21
|
-
import { dynamicPortToNodePort } from
|
|
22
|
-
import Icon from
|
|
23
|
-
import {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
} from
|
|
27
|
-
import
|
|
28
|
-
import
|
|
29
|
-
import {
|
|
30
|
-
applyPortOrder,
|
|
31
|
-
getPortTop,
|
|
32
|
-
isPortVisible,
|
|
33
|
-
} from "../../utils/portUtils.js";
|
|
34
|
-
import CogIcon from "../icons/CogIcon.svelte";
|
|
35
|
-
import AlertCircleIcon from "../icons/AlertCircleIcon.svelte";
|
|
19
|
+
DynamicPort
|
|
20
|
+
} from '../../types/index.js';
|
|
21
|
+
import { dynamicPortToNodePort } from '../../types/index.js';
|
|
22
|
+
import Icon from '@iconify/svelte';
|
|
23
|
+
import { getDataTypeColor, getCategoryColorToken } from '../../utils/colors.js';
|
|
24
|
+
import { getNodeIcon } from '../../utils/icons.js';
|
|
25
|
+
import { getConnectedHandles } from '../../stores/workflowStore.svelte.js';
|
|
26
|
+
import { applyPortOrder, getPortTop, isPortVisible } from '../../utils/portUtils.js';
|
|
27
|
+
import CogIcon from '../icons/CogIcon.svelte';
|
|
28
|
+
import AlertCircleIcon from '../icons/AlertCircleIcon.svelte';
|
|
36
29
|
|
|
37
30
|
const props = $props<{
|
|
38
31
|
data: {
|
|
@@ -58,45 +51,37 @@
|
|
|
58
51
|
const hideUnconnectedHandles = $derived(
|
|
59
52
|
props.data.extensions?.ui?.hideUnconnectedHandles ??
|
|
60
53
|
props.data.metadata?.extensions?.ui?.hideUnconnectedHandles ??
|
|
61
|
-
false
|
|
54
|
+
false
|
|
62
55
|
);
|
|
63
56
|
|
|
64
57
|
const hiddenPorts = $derived(
|
|
65
|
-
props.data.extensions?.ui?.hiddenPorts ??
|
|
66
|
-
props.data.metadata?.extensions?.ui?.hiddenPorts ??
|
|
67
|
-
{},
|
|
58
|
+
props.data.extensions?.ui?.hiddenPorts ?? props.data.metadata?.extensions?.ui?.hiddenPorts ?? {}
|
|
68
59
|
);
|
|
69
60
|
|
|
70
61
|
const portOrder = $derived(
|
|
71
|
-
props.data.extensions?.ui?.portOrder ??
|
|
72
|
-
props.data.metadata?.extensions?.ui?.portOrder ??
|
|
73
|
-
{},
|
|
62
|
+
props.data.extensions?.ui?.portOrder ?? props.data.metadata?.extensions?.ui?.portOrder ?? {}
|
|
74
63
|
);
|
|
75
64
|
|
|
76
65
|
/**
|
|
77
66
|
* Get icon using the same resolution as WorkflowNode
|
|
78
67
|
* Uses getNodeIcon utility with category fallback
|
|
79
68
|
*/
|
|
80
|
-
let squareIcon = $derived(
|
|
81
|
-
getNodeIcon(props.data.metadata?.icon, props.data.metadata?.category),
|
|
82
|
-
);
|
|
69
|
+
let squareIcon = $derived(getNodeIcon(props.data.metadata?.icon, props.data.metadata?.category));
|
|
83
70
|
|
|
84
71
|
/**
|
|
85
72
|
* Get icon color using category-based color tokens for consistency
|
|
86
73
|
* Falls back to primary color if category not available
|
|
87
74
|
*/
|
|
88
|
-
let squareColor = $derived(
|
|
89
|
-
getCategoryColorToken(props.data.metadata?.category),
|
|
90
|
-
);
|
|
75
|
+
let squareColor = $derived(getCategoryColorToken(props.data.metadata?.category));
|
|
91
76
|
|
|
92
77
|
// Handle configuration sidebar - now using global ConfigSidebar
|
|
93
78
|
function openConfigSidebar(): void {
|
|
94
79
|
if (props.data.onConfigOpen) {
|
|
95
80
|
// Create a WorkflowNodeType-like object for the global ConfigSidebar
|
|
96
81
|
const nodeForConfig = {
|
|
97
|
-
id: props.data.nodeId ||
|
|
98
|
-
type:
|
|
99
|
-
data: props.data
|
|
82
|
+
id: props.data.nodeId || 'unknown',
|
|
83
|
+
type: 'square',
|
|
84
|
+
data: props.data
|
|
100
85
|
};
|
|
101
86
|
props.data.onConfigOpen(nodeForConfig);
|
|
102
87
|
}
|
|
@@ -114,21 +99,21 @@
|
|
|
114
99
|
|
|
115
100
|
// Handle keyboard events
|
|
116
101
|
function handleKeydown(event: KeyboardEvent): void {
|
|
117
|
-
if (event.key ===
|
|
102
|
+
if (event.key === 'Enter' || event.key === ' ') {
|
|
118
103
|
event.preventDefault();
|
|
119
104
|
openConfigSidebar();
|
|
120
105
|
}
|
|
121
106
|
}
|
|
122
107
|
const dynamicInputs = $derived(
|
|
123
108
|
((props.data.config?.dynamicInputs as DynamicPort[]) || []).map((port) =>
|
|
124
|
-
dynamicPortToNodePort(port,
|
|
125
|
-
)
|
|
109
|
+
dynamicPortToNodePort(port, 'input')
|
|
110
|
+
)
|
|
126
111
|
);
|
|
127
112
|
|
|
128
113
|
const dynamicOutputs = $derived(
|
|
129
114
|
((props.data.config?.dynamicOutputs as DynamicPort[]) || []).map((port) =>
|
|
130
|
-
dynamicPortToNodePort(port,
|
|
131
|
-
)
|
|
115
|
+
dynamicPortToNodePort(port, 'output')
|
|
116
|
+
)
|
|
132
117
|
);
|
|
133
118
|
|
|
134
119
|
/**
|
|
@@ -137,17 +122,17 @@
|
|
|
137
122
|
const visibleInputPorts = $derived(
|
|
138
123
|
applyPortOrder(
|
|
139
124
|
[...(props.data.metadata?.inputs ?? []), ...dynamicInputs],
|
|
140
|
-
portOrder.inputs
|
|
125
|
+
portOrder.inputs
|
|
141
126
|
).filter((p: NodePort) =>
|
|
142
127
|
isPortVisible(
|
|
143
128
|
p,
|
|
144
|
-
|
|
129
|
+
'input',
|
|
145
130
|
hiddenPorts,
|
|
146
131
|
hideUnconnectedHandles,
|
|
147
132
|
getConnectedHandles(),
|
|
148
|
-
props.data.nodeId
|
|
149
|
-
)
|
|
150
|
-
)
|
|
133
|
+
props.data.nodeId
|
|
134
|
+
)
|
|
135
|
+
)
|
|
151
136
|
);
|
|
152
137
|
|
|
153
138
|
/**
|
|
@@ -156,17 +141,17 @@
|
|
|
156
141
|
const visibleOutputPorts = $derived(
|
|
157
142
|
applyPortOrder(
|
|
158
143
|
[...(props.data.metadata?.outputs ?? []), ...dynamicOutputs],
|
|
159
|
-
portOrder.outputs
|
|
144
|
+
portOrder.outputs
|
|
160
145
|
).filter((p: NodePort) =>
|
|
161
146
|
isPortVisible(
|
|
162
147
|
p,
|
|
163
|
-
|
|
148
|
+
'output',
|
|
164
149
|
hiddenPorts,
|
|
165
150
|
hideUnconnectedHandles,
|
|
166
151
|
getConnectedHandles(),
|
|
167
|
-
props.data.nodeId
|
|
168
|
-
)
|
|
169
|
-
)
|
|
152
|
+
props.data.nodeId
|
|
153
|
+
)
|
|
154
|
+
)
|
|
170
155
|
);
|
|
171
156
|
|
|
172
157
|
/**
|
|
@@ -175,13 +160,9 @@
|
|
|
175
160
|
*/
|
|
176
161
|
const nodeSize = $derived(
|
|
177
162
|
(() => {
|
|
178
|
-
const maxPorts = Math.max(
|
|
179
|
-
visibleInputPorts.length,
|
|
180
|
-
visibleOutputPorts.length,
|
|
181
|
-
1,
|
|
182
|
-
);
|
|
163
|
+
const maxPorts = Math.max(visibleInputPorts.length, visibleOutputPorts.length, 1);
|
|
183
164
|
return maxPorts <= 1 ? 80 : 20 + maxPorts * 40;
|
|
184
|
-
})()
|
|
165
|
+
})()
|
|
185
166
|
);
|
|
186
167
|
</script>
|
|
187
168
|
|
|
@@ -191,10 +172,10 @@
|
|
|
191
172
|
type="target"
|
|
192
173
|
position={Position.Left}
|
|
193
174
|
style="--fd-handle-fill: var(--fd-port-skin-color, {getDataTypeColor(
|
|
194
|
-
port.dataType
|
|
175
|
+
port.dataType
|
|
195
176
|
)}); --fd-handle-border-color: var(--fd-handle-border); top: {getPortTop(
|
|
196
177
|
index,
|
|
197
|
-
visibleInputPorts.length
|
|
178
|
+
visibleInputPorts.length
|
|
198
179
|
)}px; transform: translateY(-50%); z-index: 30;"
|
|
199
180
|
id={`${props.data.nodeId}-input-${port.id}`}
|
|
200
181
|
/>
|
|
@@ -216,10 +197,7 @@
|
|
|
216
197
|
<!-- Square Layout: Always compact with centered icon in squircle wrapper -->
|
|
217
198
|
<div class="flowdrop-square-node__compact-content">
|
|
218
199
|
<!-- Squircle icon — visibility controlled by --fd-node-icon-display -->
|
|
219
|
-
<div
|
|
220
|
-
class="flowdrop-square-node__icon-wrapper"
|
|
221
|
-
style="--_icon-color: {squareColor}"
|
|
222
|
-
>
|
|
200
|
+
<div class="flowdrop-square-node__icon-wrapper" style="--_icon-color: {squareColor}">
|
|
223
201
|
<Icon icon={squareIcon} class="flowdrop-square-node__icon" />
|
|
224
202
|
</div>
|
|
225
203
|
<!-- Circle dot — visibility controlled by --fd-node-circle-display -->
|
|
@@ -259,10 +237,10 @@
|
|
|
259
237
|
type="source"
|
|
260
238
|
position={Position.Right}
|
|
261
239
|
style="--fd-handle-fill: var(--fd-port-skin-color, {getDataTypeColor(
|
|
262
|
-
port.dataType
|
|
240
|
+
port.dataType
|
|
263
241
|
)}); --fd-handle-border-color: var(--fd-handle-border); top: {getPortTop(
|
|
264
242
|
index,
|
|
265
|
-
visibleOutputPorts.length
|
|
243
|
+
visibleOutputPorts.length
|
|
266
244
|
)}px; transform: translateY(-50%); z-index: 30;"
|
|
267
245
|
id={`${props.data.nodeId}-output-${port.id}`}
|
|
268
246
|
/>
|
|
@@ -342,11 +320,7 @@
|
|
|
342
320
|
width: 3rem;
|
|
343
321
|
height: 3rem;
|
|
344
322
|
border-radius: 0.625rem;
|
|
345
|
-
background: color-mix(
|
|
346
|
-
in srgb,
|
|
347
|
-
var(--_icon-color) var(--fd-node-icon-bg-opacity),
|
|
348
|
-
transparent
|
|
349
|
-
);
|
|
323
|
+
background: color-mix(in srgb, var(--_icon-color) var(--fd-node-icon-bg-opacity), transparent);
|
|
350
324
|
flex-shrink: 0;
|
|
351
325
|
transition: all var(--fd-transition-normal);
|
|
352
326
|
}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
<script module>
|
|
2
|
-
import { defineMeta } from
|
|
3
|
-
import NodeDecorator from
|
|
4
|
-
import { createTerminalNodeData } from
|
|
2
|
+
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
3
|
+
import NodeDecorator from '../../stories/NodeDecorator.svelte';
|
|
4
|
+
import { createTerminalNodeData } from '../../stories/utils.js';
|
|
5
5
|
|
|
6
6
|
const { Story } = defineMeta({
|
|
7
|
-
title:
|
|
8
|
-
tags: [
|
|
7
|
+
title: 'Nodes/TerminalNode',
|
|
8
|
+
tags: ['autodocs'],
|
|
9
9
|
parameters: {
|
|
10
|
-
layout:
|
|
11
|
-
}
|
|
10
|
+
layout: 'centered'
|
|
11
|
+
}
|
|
12
12
|
});
|
|
13
13
|
</script>
|
|
14
14
|
|
|
15
15
|
<Story name="Start">
|
|
16
|
-
<NodeDecorator data={createTerminalNodeData(
|
|
16
|
+
<NodeDecorator data={createTerminalNodeData('start')} />
|
|
17
17
|
</Story>
|
|
18
18
|
|
|
19
19
|
<Story name="End">
|
|
20
|
-
<NodeDecorator data={createTerminalNodeData(
|
|
20
|
+
<NodeDecorator data={createTerminalNodeData('end')} />
|
|
21
21
|
</Story>
|
|
22
22
|
|
|
23
23
|
<Story name="Exit">
|
|
24
|
-
<NodeDecorator data={createTerminalNodeData(
|
|
24
|
+
<NodeDecorator data={createTerminalNodeData('exit')} />
|
|
25
25
|
</Story>
|
|
@@ -9,26 +9,18 @@
|
|
|
9
9
|
-->
|
|
10
10
|
|
|
11
11
|
<script lang="ts">
|
|
12
|
-
import { Position, Handle } from
|
|
13
|
-
import type {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
} from
|
|
19
|
-
import Icon from "@iconify/svelte";
|
|
20
|
-
import {
|
|
21
|
-
getDataTypeColor,
|
|
22
|
-
getCategoryColorToken,
|
|
23
|
-
} from "../../utils/colors.js";
|
|
24
|
-
import { getNodeIcon } from "../../utils/icons.js";
|
|
25
|
-
import { getCircleHandlePosition } from "../../utils/handlePositioning.js";
|
|
26
|
-
import { getConnectedHandles } from "../../stores/workflowStore.svelte.js";
|
|
12
|
+
import { Position, Handle } from '@xyflow/svelte';
|
|
13
|
+
import type { ConfigValues, NodeMetadata, NodeExtensions, NodePort } from '../../types/index.js';
|
|
14
|
+
import Icon from '@iconify/svelte';
|
|
15
|
+
import { getDataTypeColor, getCategoryColorToken } from '../../utils/colors.js';
|
|
16
|
+
import { getNodeIcon } from '../../utils/icons.js';
|
|
17
|
+
import { getCircleHandlePosition } from '../../utils/handlePositioning.js';
|
|
18
|
+
import { getConnectedHandles } from '../../stores/workflowStore.svelte.js';
|
|
27
19
|
|
|
28
20
|
/**
|
|
29
21
|
* Terminal node variant types
|
|
30
22
|
*/
|
|
31
|
-
type TerminalVariant =
|
|
23
|
+
type TerminalVariant = 'start' | 'end' | 'exit';
|
|
32
24
|
|
|
33
25
|
/**
|
|
34
26
|
* Configuration for each terminal variant
|
|
@@ -51,26 +43,26 @@
|
|
|
51
43
|
*/
|
|
52
44
|
const VARIANT_CONFIGS: Record<TerminalVariant, VariantConfig> = {
|
|
53
45
|
start: {
|
|
54
|
-
icon:
|
|
55
|
-
color:
|
|
56
|
-
label:
|
|
46
|
+
icon: 'mdi:play-circle',
|
|
47
|
+
color: 'var(--fd-node-emerald)',
|
|
48
|
+
label: 'Start',
|
|
57
49
|
hasInputs: false,
|
|
58
|
-
hasOutputs: true
|
|
50
|
+
hasOutputs: true
|
|
59
51
|
},
|
|
60
52
|
end: {
|
|
61
|
-
icon:
|
|
62
|
-
color:
|
|
63
|
-
label:
|
|
53
|
+
icon: 'mdi:stop-circle',
|
|
54
|
+
color: 'var(--fd-node-slate)',
|
|
55
|
+
label: 'End',
|
|
64
56
|
hasInputs: true,
|
|
65
|
-
hasOutputs: false
|
|
57
|
+
hasOutputs: false
|
|
66
58
|
},
|
|
67
59
|
exit: {
|
|
68
|
-
icon:
|
|
69
|
-
color:
|
|
70
|
-
label:
|
|
60
|
+
icon: 'mdi:close-circle',
|
|
61
|
+
color: 'var(--fd-node-red)',
|
|
62
|
+
label: 'Exit',
|
|
71
63
|
hasInputs: true,
|
|
72
|
-
hasOutputs: false
|
|
73
|
-
}
|
|
64
|
+
hasOutputs: false
|
|
65
|
+
}
|
|
74
66
|
};
|
|
75
67
|
|
|
76
68
|
const props = $props<{
|
|
@@ -104,44 +96,36 @@
|
|
|
104
96
|
|
|
105
97
|
// Check metadata tags for variant hints
|
|
106
98
|
const tags = props.data.metadata?.tags || [];
|
|
107
|
-
if (tags.includes(
|
|
108
|
-
return
|
|
99
|
+
if (tags.includes('start') || tags.includes('entry')) {
|
|
100
|
+
return 'start';
|
|
109
101
|
}
|
|
110
|
-
if (
|
|
111
|
-
|
|
112
|
-
tags.includes("abort") ||
|
|
113
|
-
tags.includes("error")
|
|
114
|
-
) {
|
|
115
|
-
return "exit";
|
|
102
|
+
if (tags.includes('exit') || tags.includes('abort') || tags.includes('error')) {
|
|
103
|
+
return 'exit';
|
|
116
104
|
}
|
|
117
|
-
if (
|
|
118
|
-
|
|
119
|
-
tags.includes("finish") ||
|
|
120
|
-
tags.includes("complete")
|
|
121
|
-
) {
|
|
122
|
-
return "end";
|
|
105
|
+
if (tags.includes('end') || tags.includes('finish') || tags.includes('complete')) {
|
|
106
|
+
return 'end';
|
|
123
107
|
}
|
|
124
108
|
|
|
125
109
|
// Check metadata id/name for hints
|
|
126
|
-
const idLower = (props.data.metadata?.id ||
|
|
127
|
-
const nameLower = (props.data.metadata?.name ||
|
|
128
|
-
if (idLower.includes(
|
|
129
|
-
return
|
|
110
|
+
const idLower = (props.data.metadata?.id || '').toLowerCase();
|
|
111
|
+
const nameLower = (props.data.metadata?.name || '').toLowerCase();
|
|
112
|
+
if (idLower.includes('start') || nameLower.includes('start')) {
|
|
113
|
+
return 'start';
|
|
130
114
|
}
|
|
131
115
|
if (
|
|
132
|
-
idLower.includes(
|
|
133
|
-
idLower.includes(
|
|
134
|
-
nameLower.includes(
|
|
135
|
-
nameLower.includes(
|
|
116
|
+
idLower.includes('exit') ||
|
|
117
|
+
idLower.includes('abort') ||
|
|
118
|
+
nameLower.includes('exit') ||
|
|
119
|
+
nameLower.includes('abort')
|
|
136
120
|
) {
|
|
137
|
-
return
|
|
121
|
+
return 'exit';
|
|
138
122
|
}
|
|
139
|
-
if (idLower.includes(
|
|
140
|
-
return
|
|
123
|
+
if (idLower.includes('end') || nameLower.includes('end')) {
|
|
124
|
+
return 'end';
|
|
141
125
|
}
|
|
142
126
|
|
|
143
127
|
// Default to start
|
|
144
|
-
return
|
|
128
|
+
return 'start';
|
|
145
129
|
}
|
|
146
130
|
|
|
147
131
|
let variant = $derived(getVariant());
|
|
@@ -158,13 +142,13 @@
|
|
|
158
142
|
const hideUnconnectedHandles = $derived(
|
|
159
143
|
props.data.extensions?.ui?.hideUnconnectedHandles ??
|
|
160
144
|
props.data.metadata?.extensions?.ui?.hideUnconnectedHandles ??
|
|
161
|
-
false
|
|
145
|
+
false
|
|
162
146
|
);
|
|
163
147
|
|
|
164
148
|
/**
|
|
165
149
|
* Check if a port should be visible based on connection state and settings
|
|
166
150
|
*/
|
|
167
|
-
function isPortVisible(port: NodePort, type:
|
|
151
|
+
function isPortVisible(port: NodePort, type: 'input' | 'output'): boolean {
|
|
168
152
|
if (!hideUnconnectedHandles) {
|
|
169
153
|
return true;
|
|
170
154
|
}
|
|
@@ -182,7 +166,7 @@
|
|
|
182
166
|
let terminalIcon = $derived(
|
|
183
167
|
props.data.metadata?.icon
|
|
184
168
|
? getNodeIcon(props.data.metadata.icon, props.data.metadata?.category)
|
|
185
|
-
: variantConfig.icon
|
|
169
|
+
: variantConfig.icon
|
|
186
170
|
);
|
|
187
171
|
|
|
188
172
|
/**
|
|
@@ -192,7 +176,7 @@
|
|
|
192
176
|
let terminalColor = $derived(
|
|
193
177
|
props.data.metadata?.category
|
|
194
178
|
? getCategoryColorToken(props.data.metadata.category)
|
|
195
|
-
: variantConfig.color
|
|
179
|
+
: variantConfig.color
|
|
196
180
|
);
|
|
197
181
|
|
|
198
182
|
/**
|
|
@@ -204,7 +188,7 @@
|
|
|
204
188
|
(props.data.config?.instanceTitle as string) ||
|
|
205
189
|
props.data.label ||
|
|
206
190
|
props.data.metadata?.name ||
|
|
207
|
-
variantConfig.label
|
|
191
|
+
variantConfig.label
|
|
208
192
|
);
|
|
209
193
|
|
|
210
194
|
/**
|
|
@@ -213,9 +197,7 @@
|
|
|
213
197
|
* This allows users to customize the node description per-instance via config.
|
|
214
198
|
*/
|
|
215
199
|
const displayDescription = $derived(
|
|
216
|
-
(props.data.config?.instanceDescription as string) ||
|
|
217
|
-
props.data.metadata?.description ||
|
|
218
|
-
"",
|
|
200
|
+
(props.data.config?.instanceDescription as string) || props.data.metadata?.description || ''
|
|
219
201
|
);
|
|
220
202
|
|
|
221
203
|
/**
|
|
@@ -230,30 +212,28 @@
|
|
|
230
212
|
/**
|
|
231
213
|
* Check if metadata explicitly defines outputs (including empty array)
|
|
232
214
|
*/
|
|
233
|
-
let hasExplicitOutputs = $derived(
|
|
234
|
-
Array.isArray(props.data.metadata?.outputs),
|
|
235
|
-
);
|
|
215
|
+
let hasExplicitOutputs = $derived(Array.isArray(props.data.metadata?.outputs));
|
|
236
216
|
|
|
237
217
|
/**
|
|
238
218
|
* Default trigger input port for end/exit nodes
|
|
239
219
|
*/
|
|
240
220
|
const DEFAULT_INPUT_PORT = {
|
|
241
|
-
id:
|
|
242
|
-
name:
|
|
243
|
-
type:
|
|
244
|
-
dataType:
|
|
245
|
-
description:
|
|
221
|
+
id: 'trigger',
|
|
222
|
+
name: 'Trigger',
|
|
223
|
+
type: 'input' as const,
|
|
224
|
+
dataType: 'trigger',
|
|
225
|
+
description: 'Workflow trigger input'
|
|
246
226
|
};
|
|
247
227
|
|
|
248
228
|
/**
|
|
249
229
|
* Default trigger output port for start nodes
|
|
250
230
|
*/
|
|
251
231
|
const DEFAULT_OUTPUT_PORT = {
|
|
252
|
-
id:
|
|
253
|
-
name:
|
|
254
|
-
type:
|
|
255
|
-
dataType:
|
|
256
|
-
description:
|
|
232
|
+
id: 'trigger',
|
|
233
|
+
name: 'Trigger',
|
|
234
|
+
type: 'output' as const,
|
|
235
|
+
dataType: 'trigger',
|
|
236
|
+
description: 'Workflow trigger output'
|
|
257
237
|
};
|
|
258
238
|
|
|
259
239
|
/**
|
|
@@ -267,7 +247,7 @@
|
|
|
267
247
|
? props.data.metadata.inputs
|
|
268
248
|
: variantConfig.hasInputs
|
|
269
249
|
? [DEFAULT_INPUT_PORT]
|
|
270
|
-
: []
|
|
250
|
+
: []
|
|
271
251
|
);
|
|
272
252
|
|
|
273
253
|
/**
|
|
@@ -281,21 +261,21 @@
|
|
|
281
261
|
? props.data.metadata.outputs
|
|
282
262
|
: variantConfig.hasOutputs
|
|
283
263
|
? [DEFAULT_OUTPUT_PORT]
|
|
284
|
-
: []
|
|
264
|
+
: []
|
|
285
265
|
);
|
|
286
266
|
|
|
287
267
|
/**
|
|
288
268
|
* Visible input ports filtered by hideUnconnectedHandles setting
|
|
289
269
|
*/
|
|
290
270
|
let visibleInputPorts = $derived(
|
|
291
|
-
inputPorts.filter((port: NodePort) => isPortVisible(port,
|
|
271
|
+
inputPorts.filter((port: NodePort) => isPortVisible(port, 'input'))
|
|
292
272
|
);
|
|
293
273
|
|
|
294
274
|
/**
|
|
295
275
|
* Visible output ports filtered by hideUnconnectedHandles setting
|
|
296
276
|
*/
|
|
297
277
|
let visibleOutputPorts = $derived(
|
|
298
|
-
outputPorts.filter((port: NodePort) => isPortVisible(port,
|
|
278
|
+
outputPorts.filter((port: NodePort) => isPortVisible(port, 'output'))
|
|
299
279
|
);
|
|
300
280
|
|
|
301
281
|
/**
|
|
@@ -314,9 +294,9 @@
|
|
|
314
294
|
function openConfigSidebar(): void {
|
|
315
295
|
if (props.data.onConfigOpen) {
|
|
316
296
|
const nodeForConfig = {
|
|
317
|
-
id: props.data.nodeId ||
|
|
318
|
-
type:
|
|
319
|
-
data: props.data
|
|
297
|
+
id: props.data.nodeId || 'unknown',
|
|
298
|
+
type: 'terminal',
|
|
299
|
+
data: props.data
|
|
320
300
|
};
|
|
321
301
|
props.data.onConfigOpen(nodeForConfig);
|
|
322
302
|
}
|
|
@@ -340,7 +320,7 @@
|
|
|
340
320
|
* Handle keyboard events for accessibility
|
|
341
321
|
*/
|
|
342
322
|
function handleKeydown(event: KeyboardEvent): void {
|
|
343
|
-
if (event.key ===
|
|
323
|
+
if (event.key === 'Enter' || event.key === ' ') {
|
|
344
324
|
event.preventDefault();
|
|
345
325
|
handleDoubleClick();
|
|
346
326
|
}
|
|
@@ -353,9 +333,9 @@
|
|
|
353
333
|
class:flowdrop-terminal-node--selected={props.selected}
|
|
354
334
|
class:flowdrop-terminal-node--processing={props.isProcessing}
|
|
355
335
|
class:flowdrop-terminal-node--error={props.isError}
|
|
356
|
-
class:flowdrop-terminal-node--start={variant ===
|
|
357
|
-
class:flowdrop-terminal-node--end={variant ===
|
|
358
|
-
class:flowdrop-terminal-node--exit={variant ===
|
|
336
|
+
class:flowdrop-terminal-node--start={variant === 'start'}
|
|
337
|
+
class:flowdrop-terminal-node--end={variant === 'end'}
|
|
338
|
+
class:flowdrop-terminal-node--exit={variant === 'exit'}
|
|
359
339
|
style="--terminal-color: {terminalColor};"
|
|
360
340
|
onclick={handleClick}
|
|
361
341
|
ondblclick={handleDoubleClick}
|
|
@@ -378,16 +358,12 @@
|
|
|
378
358
|
<!-- Input Handles (for end/exit variants) -->
|
|
379
359
|
{#if showInputs}
|
|
380
360
|
{#each visibleInputPorts as port, index (`${port.id}-${visibleInputPorts.length}`)}
|
|
381
|
-
{@const pos = getCircleHandlePosition(
|
|
382
|
-
index,
|
|
383
|
-
visibleInputPorts.length,
|
|
384
|
-
"left",
|
|
385
|
-
)}
|
|
361
|
+
{@const pos = getCircleHandlePosition(index, visibleInputPorts.length, 'left')}
|
|
386
362
|
<Handle
|
|
387
363
|
type="target"
|
|
388
364
|
position={Position.Left}
|
|
389
365
|
style="--fd-handle-fill: {getDataTypeColor(
|
|
390
|
-
port.dataType
|
|
366
|
+
port.dataType
|
|
391
367
|
)}; --fd-handle-border-color: var(--fd-handle-border); left: {pos.left}px; top: {pos.top}px; transform: translate(-50%, -50%); z-index: 30;"
|
|
392
368
|
id={`${props.data.nodeId}-input-${port.id}`}
|
|
393
369
|
/>
|
|
@@ -396,10 +372,7 @@
|
|
|
396
372
|
|
|
397
373
|
<!-- Circular content with icon in squircle wrapper -->
|
|
398
374
|
<div class="flowdrop-terminal-node__content">
|
|
399
|
-
<div
|
|
400
|
-
class="flowdrop-terminal-node__icon-wrapper"
|
|
401
|
-
style="--_icon-color: {terminalColor}"
|
|
402
|
-
>
|
|
375
|
+
<div class="flowdrop-terminal-node__icon-wrapper" style="--_icon-color: {terminalColor}">
|
|
403
376
|
<Icon icon={terminalIcon} class="flowdrop-terminal-node__icon" />
|
|
404
377
|
</div>
|
|
405
378
|
</div>
|
|
@@ -407,17 +380,13 @@
|
|
|
407
380
|
<!-- Output Handles (for start variant) -->
|
|
408
381
|
{#if showOutputs}
|
|
409
382
|
{#each visibleOutputPorts as port, index (`${port.id}-${visibleOutputPorts.length}`)}
|
|
410
|
-
{@const pos = getCircleHandlePosition(
|
|
411
|
-
index,
|
|
412
|
-
visibleOutputPorts.length,
|
|
413
|
-
"right",
|
|
414
|
-
)}
|
|
383
|
+
{@const pos = getCircleHandlePosition(index, visibleOutputPorts.length, 'right')}
|
|
415
384
|
<Handle
|
|
416
385
|
type="source"
|
|
417
386
|
position={Position.Right}
|
|
418
387
|
id={`${props.data.nodeId}-output-${port.id}`}
|
|
419
388
|
style="--fd-handle-fill: {getDataTypeColor(
|
|
420
|
-
port.dataType
|
|
389
|
+
port.dataType
|
|
421
390
|
)}; --fd-handle-border-color: var(--fd-handle-border); left: {pos.left}px; top: {pos.top}px; transform: translate(-50%, -50%); z-index: 30;"
|
|
422
391
|
/>
|
|
423
392
|
{/each}
|
|
@@ -446,10 +415,7 @@
|
|
|
446
415
|
<!-- Error indicator -->
|
|
447
416
|
{#if props.isError}
|
|
448
417
|
<div class="flowdrop-terminal-node__error">
|
|
449
|
-
<Icon
|
|
450
|
-
icon="mdi:alert-circle"
|
|
451
|
-
class="flowdrop-terminal-node__error-icon"
|
|
452
|
-
/>
|
|
418
|
+
<Icon icon="mdi:alert-circle" class="flowdrop-terminal-node__error-icon" />
|
|
453
419
|
</div>
|
|
454
420
|
{/if}
|
|
455
421
|
</div>
|
|
@@ -571,11 +537,7 @@
|
|
|
571
537
|
width: 2.75rem;
|
|
572
538
|
height: 2.75rem;
|
|
573
539
|
border-radius: 0.625rem;
|
|
574
|
-
background: color-mix(
|
|
575
|
-
in srgb,
|
|
576
|
-
var(--_icon-color) var(--fd-node-icon-bg-opacity),
|
|
577
|
-
transparent
|
|
578
|
-
);
|
|
540
|
+
background: color-mix(in srgb, var(--_icon-color) var(--fd-node-icon-bg-opacity), transparent);
|
|
579
541
|
flex-shrink: 0;
|
|
580
542
|
transition: all var(--fd-transition-normal);
|
|
581
543
|
}
|