import type { GraphDocument3d } from './types'; import { copyExpressionPresentation } from '#lib/document/expression-presentation.js'; /** Strip Svelte proxies before posting a 3D document to a Worker/Wasm call. */ export function toTransferableDocument3d(document: GraphDocument3d): GraphDocument3d { const copy: GraphDocument3d = { bounds: { ...document.bounds }, expressions: document.expressions.map((expression) => { const result: GraphDocument3d['expressions'][number] = { id: expression.id, input_mode: expression.input_mode, source: expression.source, ...copyExpressionPresentation(expression), enabled: expression.enabled, color: expression.color }; if (expression.slider !== undefined) { result.slider = { ...expression.slider }; } return result; }) }; if (document.name !== undefined) { copy.name = document.name; } if (document.complex_mode !== undefined) { copy.complex_mode = document.complex_mode; } if (document.variable_overrides !== undefined) { copy.variable_overrides = { ...document.variable_overrides }; } return copy; }