diff --git a/frontend/src/lib/components/ArgInput.svelte b/frontend/src/lib/components/ArgInput.svelte index 7f75cc4d97..ce3ca9bd37 100644 --- a/frontend/src/lib/components/ArgInput.svelte +++ b/frontend/src/lib/components/ArgInput.svelte @@ -7,7 +7,8 @@ setInputCat as computeInputCat, debounce, emptyString, - getSchemaFromProperties + getSchemaFromProperties, + clone } from '$lib/utils' import { DollarSign, Pipette, Plus, X, Check, Loader2 } from 'lucide-svelte' import { createEventDispatcher, onDestroy, onMount, tick, untrack } from 'svelte' @@ -244,7 +245,7 @@ nvalue = undefined } if ((value == undefined || value == null) && !ignoreValueUndefined) { - nvalue = structuredClone($state.snapshot(defaultValue)) + nvalue = clone(defaultValue) if (defaultValue === undefined || defaultValue === null) { if (inputCat === 'string') { nvalue = nullable ? null : '' @@ -296,7 +297,7 @@ lastValue = value } - let oldDefaultValue = structuredClone($state.snapshot(defaultValue)) + let oldDefaultValue = clone(defaultValue) function handleDefaultValueChange() { if ( deepEqual(value, oldDefaultValue) && @@ -305,7 +306,7 @@ ) { value = defaultValue } - oldDefaultValue = structuredClone($state.snapshot(defaultValue)) + oldDefaultValue = clone(defaultValue) } function isObjectCat(inputCat?: string) { diff --git a/frontend/src/lib/components/DiffDrawer.svelte b/frontend/src/lib/components/DiffDrawer.svelte index 5d178aab75..61fc568c4e 100644 --- a/frontend/src/lib/components/DiffDrawer.svelte +++ b/frontend/src/lib/components/DiffDrawer.svelte @@ -9,7 +9,8 @@ orderedJsonStringify, orderedYamlStringify, replaceFalseWithUndefined, - type Value + type Value, + clone } from '$lib/utils' import type { Script } from '$lib/gen' @@ -68,7 +69,7 @@ } function prepareDiff(data: Value) { - const metadata = structuredClone(cleanValueProperties(replaceFalseWithUndefined(data))) + const metadata = clone(cleanValueProperties(replaceFalseWithUndefined(data))) const content = metadata['content'] if (metadata['content'] !== undefined) { metadata['content'] = 'check content diff' diff --git a/frontend/src/lib/components/DynSelect.svelte b/frontend/src/lib/components/DynSelect.svelte index 93a3bf0ed3..ceb05273b8 100644 --- a/frontend/src/lib/components/DynSelect.svelte +++ b/frontend/src/lib/components/DynSelect.svelte @@ -23,7 +23,7 @@ import Tooltip from './Tooltip.svelte' import { Loader2 } from 'lucide-svelte' import { untrack } from 'svelte' - import { readFieldsRecursively } from '$lib/utils' + import { readFieldsRecursively, clone} from '$lib/utils' interface Props { value?: any @@ -37,7 +37,7 @@ let { value = $bindable(), helperScript, entrypoint, args: _args, name }: Props = $props() - let args = $state(structuredClone($state.snapshot(_args))) + let args = $state(clone(_args)) $effect(() => { readFieldsRecursively(_args, { excludeField: [name] }) untrack(() => !deepEqual(args, _args) && (args = $state.snapshot(_args))) diff --git a/frontend/src/lib/components/EditableSchemaForm.svelte b/frontend/src/lib/components/EditableSchemaForm.svelte index b19325f45b..44ca60063a 100644 --- a/frontend/src/lib/components/EditableSchemaForm.svelte +++ b/frontend/src/lib/components/EditableSchemaForm.svelte @@ -20,7 +20,7 @@ import Label from './Label.svelte' import { sendUserToast } from '$lib/toast' import Toggle from './Toggle.svelte' - import { emptyString } from '$lib/utils' + import { emptyString, clone} from '$lib/utils' import Popover from './meltComponents/Popover.svelte' import SchemaFormDnd from './schema/SchemaFormDND.svelte' import { deepEqual } from 'fast-equals' @@ -114,7 +114,7 @@ Object.keys(schema?.properties ?? {}).forEach((key) => { if (schema?.properties[key].default != undefined && args?.[key] == undefined) { let value = schema?.properties[key].default - nargs[key] = value === 'object' ? structuredClone($state.snapshot(value)) : value + nargs[key] = value === 'object' ? clone(value) : value } }) args = nargs diff --git a/frontend/src/lib/components/FlowBuilder.svelte b/frontend/src/lib/components/FlowBuilder.svelte index dbeebfa6f7..a86bfdcd9f 100644 --- a/frontend/src/lib/components/FlowBuilder.svelte +++ b/frontend/src/lib/components/FlowBuilder.svelte @@ -27,7 +27,8 @@ readFieldsRecursively, replaceFalseWithUndefined, type StateStore, - type Value + type Value, + clone } from '$lib/utils' import { sendUserToast } from '$lib/toast' import { Drawer } from '$lib/components/common' @@ -185,7 +186,7 @@ savedValue: savedFlow, modifiedValue: { ...flowStore.val, - draft_triggers: structuredClone(triggersState.getDraftTriggersSnapshot()) + draft_triggers: clone(triggersState.getDraftTriggersSnapshot()) } } } @@ -250,7 +251,7 @@ if (savedFlow) { const draftOrDeployed = cleanValueProperties(savedFlow.draft || savedFlow) - const currentDraftTriggers = structuredClone(triggersState.getDraftTriggersSnapshot()) + const currentDraftTriggers = clone(triggersState.getDraftTriggersSnapshot()) const current = cleanValueProperties( $state.snapshot({ ...flowStore.val, @@ -329,15 +330,15 @@ savedFlow = { ...(newFlow || savedFlow?.draft_only ? { - ...structuredClone($state.snapshot(flowStore.val)), + ...clone(flowStore.val), path: $pathStore, draft_only: true } : savedFlow), draft: { - ...structuredClone($state.snapshot(flowStore.val)), + ...clone(flowStore.val), path: $pathStore, - draft_triggers: structuredClone(triggersState.getDraftTriggersSnapshot()) + draft_triggers: clone(triggersState.getDraftTriggersSnapshot()) } } as FlowWithDraftAndDraftTriggers @@ -519,7 +520,7 @@ draft_triggers: Trigger[] } savedFlow = { - ...structuredClone($state.snapshot(newSavedFlow)), + ...clone(newSavedFlow), path: $pathStore } as Flow setDraftTriggers([]) @@ -1042,7 +1043,7 @@ await syncWithDeployed() - const currentDraftTriggers = structuredClone( + const currentDraftTriggers = clone( triggersState.getDraftTriggersSnapshot() ) diff --git a/frontend/src/lib/components/HistoricInputs.svelte b/frontend/src/lib/components/HistoricInputs.svelte index ac79c0479b..4a43bd1b1e 100644 --- a/frontend/src/lib/components/HistoricInputs.svelte +++ b/frontend/src/lib/components/HistoricInputs.svelte @@ -1,4 +1,5 @@