diff --git a/frontend/src/lib/components/InputTransformForm.svelte b/frontend/src/lib/components/InputTransformForm.svelte index 2c3bef45a8..0e8bd9b601 100644 --- a/frontend/src/lib/components/InputTransformForm.svelte +++ b/frontend/src/lib/components/InputTransformForm.svelte @@ -6,7 +6,7 @@ import ArgInput from './ArgInput.svelte' import FieldHeader from './FieldHeader.svelte' import DynamicInputHelpBox from './flows/content/DynamicInputHelpBox.svelte' - import type { FlowEditorContext } from './flows/types' + import type { PropPickerWrapperContext } from './flows/propPicker/PropPickerWrapper.svelte' import { codeToStaticTemplate, getDefaultExpr } from './flows/utils' import SimpleEditor from './SimpleEditor.svelte' import { Button } from '$lib/components/common' @@ -39,7 +39,6 @@ export let argExtra: Record = {} export let pickableProperties: PickableProperties | undefined = undefined export let enableAi = false - export let id: string let monaco: SimpleEditor | undefined = undefined let monacoTemplate: TemplateEditor | undefined = undefined @@ -147,8 +146,6 @@ function onFocus() { focused = true - if (!focusProp) return - if (isStaticTemplate(inputCat)) { focusProp(argName, 'append', (path) => { const toAppend = `\$\{${path}}` @@ -169,7 +166,7 @@ } } - const { flowInputsStore } = getContext('FlowEditorContext') + const { focusProp, propPickerConfig } = getContext('PropPickerWrapper') $: isStaticTemplate(inputCat) && propertyType == 'static' && setPropertyType(arg?.value) @@ -192,14 +189,11 @@ loadResourceTypes() - $: propPickerConfig = $flowInputsStore[id]?.connectingInputs?.propPickerConfig - $: focusProp = $flowInputsStore[id]?.connectingInputs?.focusProp - $: connecting = $propPickerConfig?.propName == argName && $propPickerConfig?.insertionMode == 'connect' -{#if arg != undefined && focusProp} +{#if arg != undefined}
- {#if $propPickerConfig?.propName == argName && ($propPickerConfig?.insertionMode == 'insert' || $propPickerConfig?.insertionMode == 'append')} + {#if $propPickerConfig?.propName == argName && $propPickerConfig?.insertionMode == 'insert'}
{ - dispatch('connect', e.detail) - console.log('dbg connect 2', e.detail) - }} - {id} />
{/if} diff --git a/frontend/src/lib/components/common/button/AnimatedButton.svelte b/frontend/src/lib/components/common/button/AnimatedButton.svelte index f6696fb79b..40dfa1f024 100644 --- a/frontend/src/lib/components/common/button/AnimatedButton.svelte +++ b/frontend/src/lib/components/common/button/AnimatedButton.svelte @@ -4,7 +4,7 @@ export let marginWidth = '2px' export let animationDuration = '2s' export let baseRadius = '4px' - export let animate: boolean = true + export let animate = true export let wrapperClasses = '' export let ringColor = 'transparent' diff --git a/frontend/src/lib/components/flows/content/FlowConstants.svelte b/frontend/src/lib/components/flows/content/FlowConstants.svelte index 52b7256e0e..df0688f177 100644 --- a/frontend/src/lib/components/flows/content/FlowConstants.svelte +++ b/frontend/src/lib/components/flows/content/FlowConstants.svelte @@ -3,7 +3,9 @@ import FlowCard from '../common/FlowCard.svelte' import { Alert, Badge } from '$lib/components/common' import type { FlowModule, FlowModuleValue, InputTransform, PathScript, RawScript } from '$lib/gen' - import { getContext } from 'svelte' + import { getContext, setContext } from 'svelte' + import type { PropPickerWrapperContext } from '../propPicker/PropPickerWrapper.svelte' + import { writable } from 'svelte/store' import Toggle from '../../Toggle.svelte' import InputTransformSchemaForm from '$lib/components/InputTransformSchemaForm.svelte' import type { FlowEditorContext } from '../types' @@ -73,6 +75,12 @@ ] as [Record, string[], FlowModule] ) .filter(([i, f, m]) => f.length > 0) + + setContext('PropPickerWrapper', { + focusProp: () => {}, + propPickerConfig: writable(undefined), + clearFocus: () => {} + })
@@ -127,7 +135,6 @@ class="mt-2" schema={$flowStateStore[m.id]?.schema ?? {}} bind:args - id={m.id} />
{/if} diff --git a/frontend/src/lib/components/flows/content/FlowModuleComponent.svelte b/frontend/src/lib/components/flows/content/FlowModuleComponent.svelte index 321b190af6..12df94be76 100644 --- a/frontend/src/lib/components/flows/content/FlowModuleComponent.svelte +++ b/frontend/src/lib/components/flows/content/FlowModuleComponent.svelte @@ -13,7 +13,7 @@ import FlowModuleHeader from './FlowModuleHeader.svelte' import { getLatestHashForScript, scriptLangToEditorLang } from '$lib/scripts' import PropPickerWrapper from '../propPicker/PropPickerWrapper.svelte' - import { afterUpdate, getContext, tick, createEventDispatcher } from 'svelte' + import { afterUpdate, getContext, tick } from 'svelte' import type { FlowEditorContext } from '../types' import FlowModuleScript from './FlowModuleScript.svelte' import FlowModuleEarlyStop from './FlowModuleEarlyStop.svelte' @@ -48,8 +48,6 @@ import { debounce } from '$lib/utils' import { dfs } from '../dfs' import FlowModuleSkip from './FlowModuleSkip.svelte' - import { writable } from 'svelte/store' - import type { PropPickerConfig } from '../types' const { selectedId, @@ -215,33 +213,6 @@ } debouncedWarning(argName) } - - function setConnect() { - const dispatch = createEventDispatcher() - if ($flowInputsStore && flowModule.id && $flowInputsStore?.[flowModule.id] === undefined) { - $flowInputsStore[flowModule.id] = {} - } - - const propPickerConfig = writable(undefined) - $flowInputsStore[flowModule.id] = { - connectingInputs: { - propPickerConfig, - focusProp: (propName, insertionMode, onSelect) => { - propPickerConfig.set({ - propName, - insertionMode, - onSelect - }) - }, - clearFocus: () => { - propPickerConfig.set(undefined) - dispatch('connect', false) - } - } - } - } - - setConnect() @@ -408,10 +379,6 @@ pickableProperties={stepPropPicker.pickableProperties} error={failureModule} noPadding - on:connect={(e) => { - console.log('dbg connect', e.detail) - }} - id={flowModule.id} > { const { argName } = e.detail setFlowInput(argName) - console.log('dbg changeArg', argName) }} - on:connect={(e) => { - console.log('dbg connect 3', e.detail) - }} - id={flowModule.id} />
diff --git a/frontend/src/lib/components/flows/map/FlowModuleSchemaItem.svelte b/frontend/src/lib/components/flows/map/FlowModuleSchemaItem.svelte index abdf5d45df..d93d85366d 100644 --- a/frontend/src/lib/components/flows/map/FlowModuleSchemaItem.svelte +++ b/frontend/src/lib/components/flows/map/FlowModuleSchemaItem.svelte @@ -15,8 +15,7 @@ Square, SkipForward, Voicemail, - X, - Plug + X } from 'lucide-svelte' import { createEventDispatcher, getContext } from 'svelte' import { fade } from 'svelte/transition' @@ -29,7 +28,6 @@ import DrawerContent from '$lib/components/common/drawer/DrawerContent.svelte' import { getDependeeAndDependentComponents } from '../flowExplorer' import { replaceId } from '../flowStore' - import AnimatedButton from '$lib/components/common/button/AnimatedButton.svelte' export let selected: boolean = false export let deletable: boolean = false @@ -292,25 +290,6 @@ outline-[1px] outline dark:outline-gray-500 outline-gray-300 bg-surface duration {/if} - {#if hover || selected} - - - - {/if} - {#if (id && Object.values($flowInputsStore?.[id]?.flowStepWarnings || {}).length > 0) || Boolean(warningMessage)}
diff --git a/frontend/src/lib/components/flows/propPicker/PropPickerWrapper.svelte b/frontend/src/lib/components/flows/propPicker/PropPickerWrapper.svelte index dd42f90465..13bbb6c611 100644 --- a/frontend/src/lib/components/flows/propPicker/PropPickerWrapper.svelte +++ b/frontend/src/lib/components/flows/propPicker/PropPickerWrapper.svelte @@ -1,15 +1,31 @@ + +
{#if result} @@ -104,12 +93,11 @@ {notSelectable} allowCopy={!notSelectable && !$propPickerConfig} on:select={({ detail }) => { - //dispatch('select', detail) + dispatch('select', detail) if ($propPickerConfig?.onSelect(detail)) { propPickerConfig.set(undefined) } }} - {id} /> {/if} diff --git a/frontend/src/lib/components/flows/types.ts b/frontend/src/lib/components/flows/types.ts index fd3d881fd5..2cf7127018 100644 --- a/frontend/src/lib/components/flows/types.ts +++ b/frontend/src/lib/components/flows/types.ts @@ -5,25 +5,9 @@ import type ScriptEditorDrawer from './content/ScriptEditorDrawer.svelte' import type { FlowState } from './flowState' import type { FlowBuilderWhitelabelCustomUi } from '../custom_ui' -export type InsertionMode = 'connect' | 'insert' | 'append' -export type SelectCallback = (detail: any) => boolean - -export type PropPickerConfig = { - propName: string - insertionMode: InsertionMode - onSelect: SelectCallback -} - -export type PropPickerWrapper = { - propPickerConfig: Writable - focusProp: (propName: string, insertionMode: InsertionMode, onSelect: SelectCallback) => void - clearFocus: () => void -} - export type FlowInput = Record< string, { - connectingInputs?: PropPickerWrapper flowStepWarnings?: Record< string, { diff --git a/frontend/src/lib/components/propertyPicker/PropPicker.svelte b/frontend/src/lib/components/propertyPicker/PropPicker.svelte index a00f0ea237..5311c4ae53 100644 --- a/frontend/src/lib/components/propertyPicker/PropPicker.svelte +++ b/frontend/src/lib/components/propertyPicker/PropPicker.svelte @@ -3,7 +3,7 @@ import { workspaceStore } from '$lib/stores' import { getContext } from 'svelte' import { Badge, Button } from '../common' - import type { FlowEditorContext } from '../flows/types' + import type { PropPickerWrapperContext } from '../flows/propPicker/PropPickerWrapper.svelte' import ObjectViewer from './ObjectViewer.svelte' import { keepByKey } from './utils' @@ -15,7 +15,6 @@ export let notSelectable: boolean export let error: boolean = false export let allowCopy = false - export let id: string $: previousId = pickableProperties?.previousId let variables: Record = {} @@ -27,9 +26,7 @@ const EMPTY_STRING = '' let search = '' - const { flowInputsStore } = getContext('FlowEditorContext') - - $: propPickerConfig = flowInputsStore[id]?.connectingInputs?.propPickerConfig + const { propPickerConfig } = getContext('PropPickerWrapper') $: flowInputsFiltered = search === EMPTY_STRING