@flowdrop/flowdrop 1.5.0 → 1.6.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 +240 -294
- package/dist/components/App.svelte.d.ts +9 -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 +42 -56
- 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 +44 -74
- 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/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 +3 -3
- package/dist/stores/workflowStore.svelte.js +46 -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 +32 -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 +2 -2
- package/dist/utils/connections.js +15 -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
|
@@ -1,37 +1,34 @@
|
|
|
1
1
|
<script module>
|
|
2
|
-
import { defineMeta } from
|
|
3
|
-
import FormTextarea from
|
|
4
|
-
import { fn } from
|
|
2
|
+
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
3
|
+
import FormTextarea from './FormTextarea.svelte';
|
|
4
|
+
import { fn } from 'storybook/test';
|
|
5
5
|
|
|
6
6
|
const { Story } = defineMeta({
|
|
7
|
-
title:
|
|
7
|
+
title: 'Form/FormTextarea',
|
|
8
8
|
component: FormTextarea,
|
|
9
|
-
tags: [
|
|
9
|
+
tags: ['autodocs'],
|
|
10
10
|
argTypes: {
|
|
11
|
-
value: { control:
|
|
12
|
-
placeholder: { control:
|
|
13
|
-
rows: { control: { type:
|
|
14
|
-
required: { control:
|
|
15
|
-
disabled: { control:
|
|
11
|
+
value: { control: 'text' },
|
|
12
|
+
placeholder: { control: 'text' },
|
|
13
|
+
rows: { control: { type: 'number', min: 1, max: 20 } },
|
|
14
|
+
required: { control: 'boolean' },
|
|
15
|
+
disabled: { control: 'boolean' }
|
|
16
16
|
},
|
|
17
17
|
args: {
|
|
18
|
-
id:
|
|
19
|
-
value:
|
|
20
|
-
onChange: fn()
|
|
21
|
-
}
|
|
18
|
+
id: 'demo-textarea',
|
|
19
|
+
value: '',
|
|
20
|
+
onChange: fn()
|
|
21
|
+
}
|
|
22
22
|
});
|
|
23
23
|
</script>
|
|
24
24
|
|
|
25
|
-
<Story name="Default" args={{ placeholder:
|
|
25
|
+
<Story name="Default" args={{ placeholder: 'Enter your message...' }} />
|
|
26
26
|
|
|
27
|
-
<Story
|
|
28
|
-
name="Custom Rows"
|
|
29
|
-
args={{ rows: 8, placeholder: "Larger text area..." }}
|
|
30
|
-
/>
|
|
27
|
+
<Story name="Custom Rows" args={{ rows: 8, placeholder: 'Larger text area...' }} />
|
|
31
28
|
|
|
32
29
|
<Story
|
|
33
30
|
name="With Value"
|
|
34
|
-
args={{ value:
|
|
31
|
+
args={{ value: 'This is a multiline\ntext content\nwith several lines.' }}
|
|
35
32
|
/>
|
|
36
33
|
|
|
37
|
-
<Story name="Disabled" args={{ value:
|
|
34
|
+
<Story name="Disabled" args={{ value: 'Read-only content', disabled: true }} />
|
|
@@ -11,7 +11,7 @@ declare const FormTextarea: $$__sveltets_2_IsomorphicComponent<{
|
|
|
11
11
|
}, {
|
|
12
12
|
[evt: string]: CustomEvent<any>;
|
|
13
13
|
}, {}, {}, string>;
|
|
14
|
-
import FormTextarea from
|
|
14
|
+
import FormTextarea from './FormTextarea.svelte';
|
|
15
15
|
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
16
16
|
new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
|
|
17
17
|
$$bindings?: Bindings;
|
|
@@ -30,13 +30,13 @@
|
|
|
30
30
|
|
|
31
31
|
let {
|
|
32
32
|
id,
|
|
33
|
-
value =
|
|
34
|
-
placeholder =
|
|
33
|
+
value = '',
|
|
34
|
+
placeholder = '',
|
|
35
35
|
rows = 4,
|
|
36
36
|
required = false,
|
|
37
37
|
disabled = false,
|
|
38
38
|
ariaDescribedBy,
|
|
39
|
-
onChange
|
|
39
|
+
onChange
|
|
40
40
|
}: Props = $props();
|
|
41
41
|
|
|
42
42
|
/**
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
<textarea
|
|
52
52
|
{id}
|
|
53
53
|
class="form-textarea"
|
|
54
|
-
value={value ??
|
|
54
|
+
value={value ?? ''}
|
|
55
55
|
{placeholder}
|
|
56
56
|
{rows}
|
|
57
57
|
{disabled}
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
<script module>
|
|
2
|
-
import { defineMeta } from
|
|
3
|
-
import FormToggle from
|
|
4
|
-
import { fn } from
|
|
2
|
+
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
3
|
+
import FormToggle from './FormToggle.svelte';
|
|
4
|
+
import { fn } from 'storybook/test';
|
|
5
5
|
|
|
6
6
|
const { Story } = defineMeta({
|
|
7
|
-
title:
|
|
7
|
+
title: 'Form/FormToggle',
|
|
8
8
|
component: FormToggle,
|
|
9
|
-
tags: [
|
|
9
|
+
tags: ['autodocs'],
|
|
10
10
|
argTypes: {
|
|
11
|
-
value: { control:
|
|
12
|
-
onLabel: { control:
|
|
13
|
-
offLabel: { control:
|
|
14
|
-
disabled: { control:
|
|
11
|
+
value: { control: 'boolean' },
|
|
12
|
+
onLabel: { control: 'text' },
|
|
13
|
+
offLabel: { control: 'text' },
|
|
14
|
+
disabled: { control: 'boolean' }
|
|
15
15
|
},
|
|
16
16
|
args: {
|
|
17
|
-
id:
|
|
17
|
+
id: 'demo-toggle',
|
|
18
18
|
value: false,
|
|
19
|
-
onChange: fn()
|
|
20
|
-
}
|
|
19
|
+
onChange: fn()
|
|
20
|
+
}
|
|
21
21
|
});
|
|
22
22
|
</script>
|
|
23
23
|
|
|
@@ -25,9 +25,6 @@
|
|
|
25
25
|
|
|
26
26
|
<Story name="On" args={{ value: true }} />
|
|
27
27
|
|
|
28
|
-
<Story
|
|
29
|
-
name="Custom Labels"
|
|
30
|
-
args={{ value: true, onLabel: "Yes", offLabel: "No" }}
|
|
31
|
-
/>
|
|
28
|
+
<Story name="Custom Labels" args={{ value: true, onLabel: 'Yes', offLabel: 'No' }} />
|
|
32
29
|
|
|
33
30
|
<Story name="Disabled" args={{ value: true, disabled: true }} />
|
|
@@ -11,7 +11,7 @@ declare const FormToggle: $$__sveltets_2_IsomorphicComponent<{
|
|
|
11
11
|
}, {
|
|
12
12
|
[evt: string]: CustomEvent<any>;
|
|
13
13
|
}, {}, {}, string>;
|
|
14
|
-
import FormToggle from
|
|
14
|
+
import FormToggle from './FormToggle.svelte';
|
|
15
15
|
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
16
16
|
new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
|
|
17
17
|
$$bindings?: Bindings;
|
|
@@ -12,18 +12,13 @@
|
|
|
12
12
|
-->
|
|
13
13
|
|
|
14
14
|
<script lang="ts">
|
|
15
|
-
import type { UISchemaElement } from
|
|
16
|
-
import type {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
import type { FieldSchema } from "./types.js";
|
|
23
|
-
import { resolveScopeToKey } from "../../utils/uischema.js";
|
|
24
|
-
import FormField from "./FormField.svelte";
|
|
25
|
-
import FormFieldset from "./FormFieldset.svelte";
|
|
26
|
-
import Self from "./FormUISchemaRenderer.svelte";
|
|
15
|
+
import type { UISchemaElement } from '../../types/uischema.js';
|
|
16
|
+
import type { ConfigSchema, WorkflowNode, WorkflowEdge, AuthProvider } from '../../types/index.js';
|
|
17
|
+
import type { FieldSchema } from './types.js';
|
|
18
|
+
import { resolveScopeToKey } from '../../utils/uischema.js';
|
|
19
|
+
import FormField from './FormField.svelte';
|
|
20
|
+
import FormFieldset from './FormFieldset.svelte';
|
|
21
|
+
import Self from './FormUISchemaRenderer.svelte';
|
|
27
22
|
|
|
28
23
|
interface Props {
|
|
29
24
|
/** The UISchema element to render */
|
|
@@ -64,7 +59,7 @@
|
|
|
64
59
|
nodes,
|
|
65
60
|
edges,
|
|
66
61
|
workflowId,
|
|
67
|
-
authProvider
|
|
62
|
+
authProvider
|
|
68
63
|
}: Props = $props();
|
|
69
64
|
|
|
70
65
|
function isRequired(key: string): boolean {
|
|
@@ -72,12 +67,10 @@
|
|
|
72
67
|
}
|
|
73
68
|
</script>
|
|
74
69
|
|
|
75
|
-
{#if element.type ===
|
|
70
|
+
{#if element.type === 'Control'}
|
|
76
71
|
{@const key = resolveScopeToKey(element.scope)}
|
|
77
72
|
{#if key && schema.properties[key]}
|
|
78
|
-
{@const fieldSchema = toFieldSchema(
|
|
79
|
-
schema.properties[key] as Record<string, unknown>,
|
|
80
|
-
)}
|
|
73
|
+
{@const fieldSchema = toFieldSchema(schema.properties[key] as Record<string, unknown>)}
|
|
81
74
|
<FormField
|
|
82
75
|
fieldKey={key}
|
|
83
76
|
schema={fieldSchema}
|
|
@@ -92,7 +85,7 @@
|
|
|
92
85
|
onChange={(val) => onFieldChange(key, val)}
|
|
93
86
|
/>
|
|
94
87
|
{/if}
|
|
95
|
-
{:else if element.type ===
|
|
88
|
+
{:else if element.type === 'VerticalLayout'}
|
|
96
89
|
<div class="form-uischema-layout form-uischema-layout--vertical">
|
|
97
90
|
{#each element.elements as child, idx (idx)}
|
|
98
91
|
<Self
|
|
@@ -111,7 +104,7 @@
|
|
|
111
104
|
/>
|
|
112
105
|
{/each}
|
|
113
106
|
</div>
|
|
114
|
-
{:else if element.type ===
|
|
107
|
+
{:else if element.type === 'Group'}
|
|
115
108
|
<FormFieldset group={element}>
|
|
116
109
|
<div class="form-uischema-layout form-uischema-layout--vertical">
|
|
117
110
|
{#each element.elements as child, idx (idx)}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { UISchemaElement } from
|
|
2
|
-
import type { ConfigSchema, WorkflowNode, WorkflowEdge, AuthProvider } from
|
|
3
|
-
import type { FieldSchema } from
|
|
1
|
+
import type { UISchemaElement } from '../../types/uischema.js';
|
|
2
|
+
import type { ConfigSchema, WorkflowNode, WorkflowEdge, AuthProvider } from '../../types/index.js';
|
|
3
|
+
import type { FieldSchema } from './types.js';
|
|
4
4
|
interface Props {
|
|
5
5
|
/** The UISchema element to render */
|
|
6
6
|
element: UISchemaElement;
|
|
@@ -29,22 +29,22 @@
|
|
|
29
29
|
* />
|
|
30
30
|
* ```
|
|
31
31
|
*/
|
|
32
|
-
export type { FieldType, FieldFormat, FieldOption, OneOfItem, BaseFieldProps, TextFieldProps, TextareaFieldProps, NumberFieldProps, ToggleFieldProps, RangeFieldProps, SelectFieldProps, CheckboxGroupFieldProps, ArrayFieldProps, CodeEditorFieldProps, MarkdownEditorFieldProps, TemplateEditorFieldProps, AutocompleteFieldProps, FieldSchema, FormFieldFactoryProps, FormFieldWrapperProps, SchemaFormProps, AutocompleteConfig
|
|
33
|
-
export { isFieldOptionArray, isOneOfArray, oneOfToOptions, normalizeOptions, getSchemaOptions
|
|
34
|
-
export { default as FormField } from
|
|
35
|
-
export { default as FormFieldWrapper } from
|
|
36
|
-
export { default as FormTextField } from
|
|
37
|
-
export { default as FormTextarea } from
|
|
38
|
-
export { default as FormNumberField } from
|
|
39
|
-
export { default as FormRangeField } from
|
|
40
|
-
export { default as FormToggle } from
|
|
41
|
-
export { default as FormSelect } from
|
|
42
|
-
export { default as FormCheckboxGroup } from
|
|
43
|
-
export { default as FormArray } from
|
|
44
|
-
export { default as FormCodeEditor } from
|
|
45
|
-
export { default as FormMarkdownEditor } from
|
|
46
|
-
export { default as FormTemplateEditor } from
|
|
47
|
-
export { default as FormAutocomplete } from
|
|
48
|
-
export { default as FormFieldset } from
|
|
49
|
-
export { default as FormUISchemaRenderer } from
|
|
50
|
-
export { createTemplateAutocomplete } from
|
|
32
|
+
export type { FieldType, FieldFormat, FieldOption, OneOfItem, BaseFieldProps, TextFieldProps, TextareaFieldProps, NumberFieldProps, ToggleFieldProps, RangeFieldProps, SelectFieldProps, CheckboxGroupFieldProps, ArrayFieldProps, CodeEditorFieldProps, MarkdownEditorFieldProps, TemplateEditorFieldProps, AutocompleteFieldProps, FieldSchema, FormFieldFactoryProps, FormFieldWrapperProps, SchemaFormProps, AutocompleteConfig } from './types.js';
|
|
33
|
+
export { isFieldOptionArray, isOneOfArray, oneOfToOptions, normalizeOptions, getSchemaOptions } from './types.js';
|
|
34
|
+
export { default as FormField } from './FormField.svelte';
|
|
35
|
+
export { default as FormFieldWrapper } from './FormFieldWrapper.svelte';
|
|
36
|
+
export { default as FormTextField } from './FormTextField.svelte';
|
|
37
|
+
export { default as FormTextarea } from './FormTextarea.svelte';
|
|
38
|
+
export { default as FormNumberField } from './FormNumberField.svelte';
|
|
39
|
+
export { default as FormRangeField } from './FormRangeField.svelte';
|
|
40
|
+
export { default as FormToggle } from './FormToggle.svelte';
|
|
41
|
+
export { default as FormSelect } from './FormSelect.svelte';
|
|
42
|
+
export { default as FormCheckboxGroup } from './FormCheckboxGroup.svelte';
|
|
43
|
+
export { default as FormArray } from './FormArray.svelte';
|
|
44
|
+
export { default as FormCodeEditor } from './FormCodeEditor.svelte';
|
|
45
|
+
export { default as FormMarkdownEditor } from './FormMarkdownEditor.svelte';
|
|
46
|
+
export { default as FormTemplateEditor } from './FormTemplateEditor.svelte';
|
|
47
|
+
export { default as FormAutocomplete } from './FormAutocomplete.svelte';
|
|
48
|
+
export { default as FormFieldset } from './FormFieldset.svelte';
|
|
49
|
+
export { default as FormUISchemaRenderer } from './FormUISchemaRenderer.svelte';
|
|
50
|
+
export { createTemplateAutocomplete } from './templateAutocomplete.js';
|
|
@@ -29,26 +29,26 @@
|
|
|
29
29
|
* />
|
|
30
30
|
* ```
|
|
31
31
|
*/
|
|
32
|
-
export { isFieldOptionArray, isOneOfArray, oneOfToOptions, normalizeOptions, getSchemaOptions
|
|
32
|
+
export { isFieldOptionArray, isOneOfArray, oneOfToOptions, normalizeOptions, getSchemaOptions } from './types.js';
|
|
33
33
|
// Main factory component
|
|
34
|
-
export { default as FormField } from
|
|
34
|
+
export { default as FormField } from './FormField.svelte';
|
|
35
35
|
// Wrapper component
|
|
36
|
-
export { default as FormFieldWrapper } from
|
|
36
|
+
export { default as FormFieldWrapper } from './FormFieldWrapper.svelte';
|
|
37
37
|
// Individual field components
|
|
38
|
-
export { default as FormTextField } from
|
|
39
|
-
export { default as FormTextarea } from
|
|
40
|
-
export { default as FormNumberField } from
|
|
41
|
-
export { default as FormRangeField } from
|
|
42
|
-
export { default as FormToggle } from
|
|
43
|
-
export { default as FormSelect } from
|
|
44
|
-
export { default as FormCheckboxGroup } from
|
|
45
|
-
export { default as FormArray } from
|
|
46
|
-
export { default as FormCodeEditor } from
|
|
47
|
-
export { default as FormMarkdownEditor } from
|
|
48
|
-
export { default as FormTemplateEditor } from
|
|
49
|
-
export { default as FormAutocomplete } from
|
|
38
|
+
export { default as FormTextField } from './FormTextField.svelte';
|
|
39
|
+
export { default as FormTextarea } from './FormTextarea.svelte';
|
|
40
|
+
export { default as FormNumberField } from './FormNumberField.svelte';
|
|
41
|
+
export { default as FormRangeField } from './FormRangeField.svelte';
|
|
42
|
+
export { default as FormToggle } from './FormToggle.svelte';
|
|
43
|
+
export { default as FormSelect } from './FormSelect.svelte';
|
|
44
|
+
export { default as FormCheckboxGroup } from './FormCheckboxGroup.svelte';
|
|
45
|
+
export { default as FormArray } from './FormArray.svelte';
|
|
46
|
+
export { default as FormCodeEditor } from './FormCodeEditor.svelte';
|
|
47
|
+
export { default as FormMarkdownEditor } from './FormMarkdownEditor.svelte';
|
|
48
|
+
export { default as FormTemplateEditor } from './FormTemplateEditor.svelte';
|
|
49
|
+
export { default as FormAutocomplete } from './FormAutocomplete.svelte';
|
|
50
50
|
// UISchema rendering components
|
|
51
|
-
export { default as FormFieldset } from
|
|
52
|
-
export { default as FormUISchemaRenderer } from
|
|
51
|
+
export { default as FormFieldset } from './FormFieldset.svelte';
|
|
52
|
+
export { default as FormUISchemaRenderer } from './FormUISchemaRenderer.svelte';
|
|
53
53
|
// Template autocomplete utilities
|
|
54
|
-
export { createTemplateAutocomplete } from
|
|
54
|
+
export { createTemplateAutocomplete } from './templateAutocomplete.js';
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
*
|
|
11
11
|
* @module components/form/templateAutocomplete
|
|
12
12
|
*/
|
|
13
|
-
import type { Extension } from
|
|
14
|
-
import type { VariableSchema } from
|
|
13
|
+
import type { Extension } from '@codemirror/state';
|
|
14
|
+
import type { VariableSchema } from '../../types/index.js';
|
|
15
15
|
/**
|
|
16
16
|
* Creates a CodeMirror extension for template variable autocomplete.
|
|
17
17
|
*
|
|
@@ -10,20 +10,20 @@
|
|
|
10
10
|
*
|
|
11
11
|
* @module components/form/templateAutocomplete
|
|
12
12
|
*/
|
|
13
|
-
import { autocompletion
|
|
14
|
-
import { getChildVariables, getArrayIndexSuggestions, isArrayVariable, hasChildren
|
|
13
|
+
import { autocompletion } from '@codemirror/autocomplete';
|
|
14
|
+
import { getChildVariables, getArrayIndexSuggestions, isArrayVariable, hasChildren } from '../../services/variableService.js';
|
|
15
15
|
/**
|
|
16
16
|
* Icon type hints for different variable types in autocomplete dropdown.
|
|
17
17
|
*/
|
|
18
18
|
const TYPE_ICONS = {
|
|
19
|
-
string:
|
|
20
|
-
number:
|
|
21
|
-
integer:
|
|
22
|
-
float:
|
|
23
|
-
boolean:
|
|
24
|
-
array:
|
|
25
|
-
object:
|
|
26
|
-
mixed:
|
|
19
|
+
string: '𝑆',
|
|
20
|
+
number: '#',
|
|
21
|
+
integer: '#',
|
|
22
|
+
float: '#',
|
|
23
|
+
boolean: '☑',
|
|
24
|
+
array: '[]',
|
|
25
|
+
object: '{}',
|
|
26
|
+
mixed: '⋯'
|
|
27
27
|
};
|
|
28
28
|
/**
|
|
29
29
|
* Extracts the current variable path being typed inside {{ }}.
|
|
@@ -43,16 +43,12 @@ function extractVariablePath(text, pos) {
|
|
|
43
43
|
let searchPos = pos - 1;
|
|
44
44
|
while (searchPos >= 0) {
|
|
45
45
|
// Check for opening {{
|
|
46
|
-
if (text[searchPos] ===
|
|
47
|
-
searchPos > 0 &&
|
|
48
|
-
text[searchPos - 1] === "{") {
|
|
46
|
+
if (text[searchPos] === '{' && searchPos > 0 && text[searchPos - 1] === '{') {
|
|
49
47
|
openBracePos = searchPos - 1;
|
|
50
48
|
break;
|
|
51
49
|
}
|
|
52
50
|
// Check for closing }} - means we're outside an expression
|
|
53
|
-
if (text[searchPos] ===
|
|
54
|
-
searchPos > 0 &&
|
|
55
|
-
text[searchPos - 1] === "}") {
|
|
51
|
+
if (text[searchPos] === '}' && searchPos > 0 && text[searchPos - 1] === '}') {
|
|
56
52
|
return null;
|
|
57
53
|
}
|
|
58
54
|
searchPos--;
|
|
@@ -70,9 +66,8 @@ function extractVariablePath(text, pos) {
|
|
|
70
66
|
return {
|
|
71
67
|
path: content,
|
|
72
68
|
startPos: contentStart +
|
|
73
|
-
(text.slice(contentStart, pos).length -
|
|
74
|
-
|
|
75
|
-
isInsideExpression: true,
|
|
69
|
+
(text.slice(contentStart, pos).length - text.slice(contentStart, pos).trimStart().length),
|
|
70
|
+
isInsideExpression: true
|
|
76
71
|
};
|
|
77
72
|
}
|
|
78
73
|
/**
|
|
@@ -83,35 +78,35 @@ function extractVariablePath(text, pos) {
|
|
|
83
78
|
*/
|
|
84
79
|
function getCompletionType(path) {
|
|
85
80
|
// Empty or only whitespace - show top-level variables
|
|
86
|
-
if (path.trim() ===
|
|
87
|
-
return { type:
|
|
81
|
+
if (path.trim() === '') {
|
|
82
|
+
return { type: 'top-level' };
|
|
88
83
|
}
|
|
89
84
|
// Ends with [ - show array indices
|
|
90
|
-
if (path.endsWith(
|
|
85
|
+
if (path.endsWith('[')) {
|
|
91
86
|
const parentPath = path.slice(0, -1);
|
|
92
|
-
return { type:
|
|
87
|
+
return { type: 'array-index', parentPath };
|
|
93
88
|
}
|
|
94
89
|
// Ends with . - show child properties
|
|
95
|
-
if (path.endsWith(
|
|
90
|
+
if (path.endsWith('.')) {
|
|
96
91
|
const parentPath = path.slice(0, -1);
|
|
97
|
-
return { type:
|
|
92
|
+
return { type: 'property', parentPath };
|
|
98
93
|
}
|
|
99
94
|
// Otherwise, we're typing a variable name - show matching options
|
|
100
|
-
const lastDotIndex = path.lastIndexOf(
|
|
101
|
-
const lastBracketIndex = path.lastIndexOf(
|
|
95
|
+
const lastDotIndex = path.lastIndexOf('.');
|
|
96
|
+
const lastBracketIndex = path.lastIndexOf('[');
|
|
102
97
|
const lastSeparator = Math.max(lastDotIndex, lastBracketIndex);
|
|
103
98
|
if (lastSeparator === -1) {
|
|
104
99
|
// Typing at top level
|
|
105
|
-
return { type:
|
|
100
|
+
return { type: 'top-level' };
|
|
106
101
|
}
|
|
107
102
|
// Extract parent path based on separator
|
|
108
103
|
if (lastDotIndex > lastBracketIndex) {
|
|
109
104
|
// Last separator was a dot
|
|
110
|
-
return { type:
|
|
105
|
+
return { type: 'property', parentPath: path.slice(0, lastDotIndex) };
|
|
111
106
|
}
|
|
112
107
|
else {
|
|
113
108
|
// Last separator was a bracket
|
|
114
|
-
return { type:
|
|
109
|
+
return { type: 'array-index', parentPath: path.slice(0, lastBracketIndex) };
|
|
115
110
|
}
|
|
116
111
|
}
|
|
117
112
|
/**
|
|
@@ -121,23 +116,23 @@ function getCompletionType(path) {
|
|
|
121
116
|
* @param prefix - Prefix to add to the completion label
|
|
122
117
|
* @returns A CodeMirror Completion object
|
|
123
118
|
*/
|
|
124
|
-
function variableToCompletion(variable, prefix =
|
|
119
|
+
function variableToCompletion(variable, prefix = '') {
|
|
125
120
|
const icon = TYPE_ICONS[variable.type] ?? TYPE_ICONS.mixed;
|
|
126
121
|
const hasChildProps = variable.properties && Object.keys(variable.properties).length > 0;
|
|
127
|
-
const isArray = variable.type ===
|
|
122
|
+
const isArray = variable.type === 'array';
|
|
128
123
|
// Add indicator if variable can be drilled into
|
|
129
|
-
let suffix =
|
|
124
|
+
let suffix = '';
|
|
130
125
|
if (hasChildProps)
|
|
131
|
-
suffix =
|
|
126
|
+
suffix = '.';
|
|
132
127
|
else if (isArray)
|
|
133
|
-
suffix =
|
|
128
|
+
suffix = '[';
|
|
134
129
|
return {
|
|
135
130
|
label: `${prefix}${variable.name}`,
|
|
136
|
-
displayLabel: `${icon} ${variable.label ?? variable.name}${suffix ?
|
|
131
|
+
displayLabel: `${icon} ${variable.label ?? variable.name}${suffix ? ' ' + suffix : ''}`,
|
|
137
132
|
detail: variable.type,
|
|
138
133
|
info: variable.description,
|
|
139
|
-
type:
|
|
140
|
-
boost: hasChildProps || isArray ? 1 : 0
|
|
134
|
+
type: 'variable',
|
|
135
|
+
boost: hasChildProps || isArray ? 1 : 0 // Boost drillable variables
|
|
141
136
|
};
|
|
142
137
|
}
|
|
143
138
|
/**
|
|
@@ -155,13 +150,13 @@ function createTemplateCompletionSource(schema) {
|
|
|
155
150
|
if (!pathInfo) {
|
|
156
151
|
// Check if user just typed {{
|
|
157
152
|
const beforeCursor = text.slice(Math.max(0, pos - 2), pos);
|
|
158
|
-
if (beforeCursor ===
|
|
153
|
+
if (beforeCursor === '{{') {
|
|
159
154
|
// Show top-level variables
|
|
160
155
|
const options = Object.values(schema.variables).map((v) => variableToCompletion(v));
|
|
161
156
|
return {
|
|
162
157
|
from: pos,
|
|
163
158
|
options,
|
|
164
|
-
validFor: /^[\w.[\]]
|
|
159
|
+
validFor: /^[\w.[\]]*$/
|
|
165
160
|
};
|
|
166
161
|
}
|
|
167
162
|
return null;
|
|
@@ -171,46 +166,42 @@ function createTemplateCompletionSource(schema) {
|
|
|
171
166
|
let options = [];
|
|
172
167
|
let from = pos;
|
|
173
168
|
switch (completionType.type) {
|
|
174
|
-
case
|
|
169
|
+
case 'top-level': {
|
|
175
170
|
// Show all top-level variables
|
|
176
171
|
const currentWord = path.trim();
|
|
177
172
|
options = Object.values(schema.variables)
|
|
178
|
-
.filter((v) => currentWord ===
|
|
179
|
-
v.name.toLowerCase().startsWith(currentWord.toLowerCase()))
|
|
173
|
+
.filter((v) => currentWord === '' || v.name.toLowerCase().startsWith(currentWord.toLowerCase()))
|
|
180
174
|
.map((v) => variableToCompletion(v));
|
|
181
175
|
// Calculate from position for replacement
|
|
182
176
|
from = startPos + (path.length - path.trimStart().length);
|
|
183
177
|
break;
|
|
184
178
|
}
|
|
185
|
-
case
|
|
179
|
+
case 'property': {
|
|
186
180
|
// Show child properties of the parent
|
|
187
181
|
const children = getChildVariables(schema, completionType.parentPath);
|
|
188
|
-
const currentWord = path.slice(path.lastIndexOf(
|
|
182
|
+
const currentWord = path.slice(path.lastIndexOf('.') + 1);
|
|
189
183
|
options = children
|
|
190
|
-
.filter((v) => currentWord ===
|
|
191
|
-
v.name.toLowerCase().startsWith(currentWord.toLowerCase()))
|
|
184
|
+
.filter((v) => currentWord === '' || v.name.toLowerCase().startsWith(currentWord.toLowerCase()))
|
|
192
185
|
.map((v) => variableToCompletion(v));
|
|
193
186
|
// From should be right after the last dot
|
|
194
|
-
from = startPos + path.lastIndexOf(
|
|
187
|
+
from = startPos + path.lastIndexOf('.') + 1;
|
|
195
188
|
break;
|
|
196
189
|
}
|
|
197
|
-
case
|
|
190
|
+
case 'array-index': {
|
|
198
191
|
// Check if the parent is actually an array
|
|
199
192
|
if (isArrayVariable(schema, completionType.parentPath)) {
|
|
200
193
|
const indices = getArrayIndexSuggestions(5);
|
|
201
|
-
const currentIndex = path.slice(path.lastIndexOf(
|
|
194
|
+
const currentIndex = path.slice(path.lastIndexOf('[') + 1);
|
|
202
195
|
options = indices
|
|
203
|
-
.filter((idx) => currentIndex ===
|
|
196
|
+
.filter((idx) => currentIndex === '' || idx.startsWith(currentIndex))
|
|
204
197
|
.map((idx) => ({
|
|
205
198
|
label: idx,
|
|
206
|
-
displayLabel: idx ===
|
|
207
|
-
detail: idx ===
|
|
208
|
-
|
|
209
|
-
: `Index ${idx.slice(0, -1)}`,
|
|
210
|
-
type: "keyword",
|
|
199
|
+
displayLabel: idx === '*]' ? '* (all items)' : `[${idx}`,
|
|
200
|
+
detail: idx === '*]' ? 'Iterate all items' : `Index ${idx.slice(0, -1)}`,
|
|
201
|
+
type: 'keyword'
|
|
211
202
|
}));
|
|
212
203
|
// From should be right after the [
|
|
213
|
-
from = startPos + path.lastIndexOf(
|
|
204
|
+
from = startPos + path.lastIndexOf('[') + 1;
|
|
214
205
|
}
|
|
215
206
|
break;
|
|
216
207
|
}
|
|
@@ -221,7 +212,7 @@ function createTemplateCompletionSource(schema) {
|
|
|
221
212
|
return {
|
|
222
213
|
from,
|
|
223
214
|
options,
|
|
224
|
-
validFor: /^[\w\]*]
|
|
215
|
+
validFor: /^[\w\]*]*$/
|
|
225
216
|
};
|
|
226
217
|
};
|
|
227
218
|
}
|
|
@@ -244,20 +235,20 @@ export function createTemplateAutocomplete(schema) {
|
|
|
244
235
|
override: [createTemplateCompletionSource(schema)],
|
|
245
236
|
activateOnTyping: true,
|
|
246
237
|
defaultKeymap: true,
|
|
247
|
-
optionClass: () =>
|
|
238
|
+
optionClass: () => 'cm-template-autocomplete-option',
|
|
248
239
|
icons: false, // We use our own icons in displayLabel
|
|
249
240
|
addToOptions: [
|
|
250
241
|
{
|
|
251
242
|
render: (completion) => {
|
|
252
|
-
const el = document.createElement(
|
|
253
|
-
el.className =
|
|
243
|
+
const el = document.createElement('span');
|
|
244
|
+
el.className = 'cm-template-autocomplete-info';
|
|
254
245
|
if (completion.info) {
|
|
255
246
|
el.textContent = String(completion.info);
|
|
256
247
|
}
|
|
257
248
|
return el;
|
|
258
249
|
},
|
|
259
|
-
position: 100
|
|
260
|
-
}
|
|
261
|
-
]
|
|
250
|
+
position: 100
|
|
251
|
+
}
|
|
252
|
+
]
|
|
262
253
|
});
|
|
263
254
|
}
|