From afe72b9ee18df06a433cafcaf043e74a9beec078 Mon Sep 17 00:00:00 2001 From: Codex Agent Date: Sun, 8 Mar 2026 19:49:08 +0000 Subject: [PATCH] Use minimal share params and source-aware hydration --- .../src/lib/components/Calculator.svelte | 39 ++++++++++++++++--- 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/hdyc-svelte/src/lib/components/Calculator.svelte b/hdyc-svelte/src/lib/components/Calculator.svelte index 07c60e8..e2f4bf6 100644 --- a/hdyc-svelte/src/lib/components/Calculator.svelte +++ b/hdyc-svelte/src/lib/components/Calculator.svelte @@ -80,10 +80,21 @@ const v1 = toQueryValue(val1); const v2 = toQueryValue(val2); const v3 = toQueryValue(val3); + const source: 1 | 2 | 3 = has3 ? activeField : (activeField === 2 ? 2 : 1); + params.set('src', String(source)); - if (v1 !== null) params.set('v1', v1); - if (v2 !== null) params.set('v2', v2); - if (has3 && v3 !== null) params.set('v3', v3); + if (!has3) { + const sourceValue = source === 1 ? v1 : v2; + if (sourceValue !== null) { + params.set(source === 1 ? 'v1' : 'v2', sourceValue); + } + } else if (source === 3) { + if (v2 !== null) params.set('v2', v2); + if (v3 !== null) params.set('v3', v3); + } else { + if (v1 !== null) params.set('v1', v1); + if (v2 !== null) params.set('v2', v2); + } const shareUrl = new URL($page.url); shareUrl.search = params.toString(); @@ -178,9 +189,25 @@ onMount(() => { const params = new URLSearchParams($page.url.search); - if (params.has('v1')) { val1 = params.get('v1')!; handleInput(1); } - else if (params.has('v2')) { val2 = params.get('v2')!; handleInput(2); } - else if (params.has('v3') && has3) { val3 = params.get('v3')!; handleInput(3); } + const srcParam = Number(params.get('src')); + const shareSource = srcParam === 1 || srcParam === 2 || srcParam === 3 ? srcParam : null; + + if (shareSource !== null) { + if (params.has('v1')) val1 = params.get('v1') ?? ''; + if (params.has('v2')) val2 = params.get('v2') ?? ''; + if (params.has('v3') && has3) val3 = params.get('v3') ?? ''; + const sourceToApply: 1 | 2 | 3 = has3 ? shareSource : (shareSource === 2 ? 2 : 1); + handleInput(sourceToApply); + } else if (params.has('v1')) { + val1 = params.get('v1') ?? ''; + handleInput(1); + } else if (params.has('v2')) { + val2 = params.get('v2') ?? ''; + handleInput(2); + } else if (params.has('v3') && has3) { + val3 = params.get('v3') ?? ''; + handleInput(3); + } setTimeout(() => { paramsInitializing = false; }, 0); });