diff --git a/frontend/src/lib/components/apps/components/helpers/RunnableComponent.svelte b/frontend/src/lib/components/apps/components/helpers/RunnableComponent.svelte index 400100e83b..88b0f11102 100644 --- a/frontend/src/lib/components/apps/components/helpers/RunnableComponent.svelte +++ b/frontend/src/lib/components/apps/components/helpers/RunnableComponent.svelte @@ -594,6 +594,7 @@ {id} input={fields[key]} bind:value={runnableInputValues[key]} + onDemandOnly={v.onDemandOnly} /> {/if} {/each} diff --git a/frontend/src/lib/components/apps/editor/SettingsPanel.svelte b/frontend/src/lib/components/apps/editor/SettingsPanel.svelte index b1cfa1a438..7e30a78ddd 100644 --- a/frontend/src/lib/components/apps/editor/SettingsPanel.svelte +++ b/frontend/src/lib/components/apps/editor/SettingsPanel.svelte @@ -116,6 +116,8 @@ shouldCapitalize={false} bind:inputSpecs={hiddenInlineScript.script.fields} userInputEnabled={false} + recomputeOnInputChanged={hiddenInlineScript.script.recomputeOnInputChanged} + showOnDemandOnlyToggle /> {/key} diff --git a/frontend/src/lib/components/apps/editor/settingsPanel/ComponentPanel.svelte b/frontend/src/lib/components/apps/editor/settingsPanel/ComponentPanel.svelte index 95e1515500..b837c847f9 100644 --- a/frontend/src/lib/components/apps/editor/settingsPanel/ComponentPanel.svelte +++ b/frontend/src/lib/components/apps/editor/settingsPanel/ComponentPanel.svelte @@ -309,6 +309,9 @@ bind:inputSpecs={componentSettings.item.data.componentInput.fields} userInputEnabled={component.type === 'formcomponent' || component.type === 'formbuttoncomponent'} + recomputeOnInputChanged={componentSettings.item.data.componentInput + .recomputeOnInputChanged} + showOnDemandOnlyToggle /> {/if} diff --git a/frontend/src/lib/components/apps/editor/settingsPanel/InputsSpecEditor.svelte b/frontend/src/lib/components/apps/editor/settingsPanel/InputsSpecEditor.svelte index 850fe1133e..b6d7a9e3aa 100644 --- a/frontend/src/lib/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +++ b/frontend/src/lib/components/apps/editor/settingsPanel/InputsSpecEditor.svelte @@ -37,6 +37,8 @@ export let fixedOverflowWidgets: boolean = true export let loading: boolean = false export let acceptSelf: boolean = false + export let recomputeOnInputChanged = true + export let showOnDemandOnlyToggle = true const { connectingInput, app } = getContext('AppViewerContext') @@ -176,6 +178,8 @@ {id} bind:componentInput {fixedOverflowWidgets} + {recomputeOnInputChanged} + {showOnDemandOnlyToggle} /> {:else if componentInput?.type === 'upload'} diff --git a/frontend/src/lib/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte b/frontend/src/lib/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte index fb9014261b..05a3ad927f 100644 --- a/frontend/src/lib/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +++ b/frontend/src/lib/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte @@ -15,6 +15,8 @@ export let displayType = false export let deletable = false export let acceptSelf: boolean = false + export let recomputeOnInputChanged = true + export let showOnDemandOnlyToggle = false $: finalInputSpecsConfiguration = inputSpecsConfiguration ?? inputSpecs @@ -35,6 +37,8 @@ inputSpecsConfiguration={finalInputSpecsConfiguration?.[k]?.['configuration']} labels={finalInputSpecsConfiguration?.[k]?.['labels']} tooltip={finalInputSpecsConfiguration?.[k]?.['tooltip']} + {recomputeOnInputChanged} + {showOnDemandOnlyToggle} /> {:else} {@const meta = finalInputSpecsConfiguration?.[k]} @@ -56,6 +60,8 @@ customTitle={meta?.['customTitle']} loading={meta?.['loading']} {displayType} + {recomputeOnInputChanged} + {showOnDemandOnlyToggle} /> {#if deletable}
diff --git a/frontend/src/lib/components/apps/editor/settingsPanel/OneOfInputSpecsEditor.svelte b/frontend/src/lib/components/apps/editor/settingsPanel/OneOfInputSpecsEditor.svelte index 0016e4883b..3fc3e0f38b 100644 --- a/frontend/src/lib/components/apps/editor/settingsPanel/OneOfInputSpecsEditor.svelte +++ b/frontend/src/lib/components/apps/editor/settingsPanel/OneOfInputSpecsEditor.svelte @@ -15,6 +15,8 @@ export let tooltip: string | undefined export let disabledOptions: string[] = [] export let acceptSelf: boolean = false + export let recomputeOnInputChanged = true + export let showOnDemandOnlyToggle = true $: { if (oneOf == undefined) { @@ -82,6 +84,7 @@ {#if config && oneOf.configuration[oneOf.selected]} {/if} {/each} diff --git a/frontend/src/lib/components/apps/editor/settingsPanel/inputEditor/ColorInput.svelte b/frontend/src/lib/components/apps/editor/settingsPanel/inputEditor/ColorInput.svelte index ce41231798..5868f45eb4 100644 --- a/frontend/src/lib/components/apps/editor/settingsPanel/inputEditor/ColorInput.svelte +++ b/frontend/src/lib/components/apps/editor/settingsPanel/inputEditor/ColorInput.svelte @@ -25,7 +25,7 @@
@@ -50,6 +49,7 @@ border-radius: 0.375rem !important; top: 6px !important; z-index: 30 !important; + color: black; } .color-picker-input .slider-wrapper { @@ -69,7 +69,8 @@ .color-picker-input .input-container > input { background-color: #ffffff; - border: 1px solid #d1d5db; + border: 1px solid #d1d5db !important; border-radius: 6px; + color: black !important; } diff --git a/frontend/src/lib/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte b/frontend/src/lib/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte index 6032406f3b..ffe2203ffb 100644 --- a/frontend/src/lib/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte +++ b/frontend/src/lib/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte @@ -9,12 +9,15 @@ import { Maximize2, X } from 'lucide-svelte' import { Drawer } from '$lib/components/common' import { Pane, Splitpanes } from 'svelte-splitpanes' + import Toggle from '$lib/components/Toggle.svelte' export let componentInput: EvalV2AppInput | undefined export let id: string export let field: string export let fixedOverflowWidgets: boolean = true export let acceptSelf: boolean = false + export let recomputeOnInputChanged = true + export let showOnDemandOnlyToggle = false const { onchange, worldStore, state, app } = getContext('AppViewerContext') const { evalPreview } = getContext('AppEditorContext') @@ -143,9 +146,28 @@ or surround with
{'()'}
{/if} - {#if componentInput.connections?.length > 0} + + {#if componentInput.connections?.length > 0 && recomputeOnInputChanged}
-
Re-evaluated on changes to:
+ {#if showOnDemandOnlyToggle} + { + if (componentInput) { + componentInput.onDemandOnly = !componentInput.onDemandOnly + if (!componentInput.onDemandOnly) { + delete componentInput.onDemandOnly + } + } + }} + /> + {/if} +
{componentInput.onDemandOnly ? 'NOT' : ''} Re-evaluated on changes to:
{#each componentInput.connections as connection (connection.componentId + '-' + connection.id)}