From 4eb09f26c7b484df0277a543d8068d87d73240cf Mon Sep 17 00:00:00 2001 From: vcoppe Date: Mon, 5 Aug 2024 17:52:24 +0200 Subject: [PATCH] fix merging embedding options with default ones, closes #39 --- website/src/lib/components/embedding/Embedding.ts | 12 ++++++++++++ website/src/routes/[...language]/embed/+page.svelte | 4 ++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/website/src/lib/components/embedding/Embedding.ts b/website/src/lib/components/embedding/Embedding.ts index 76c0cd81..3fe1870c 100644 --- a/website/src/lib/components/embedding/Embedding.ts +++ b/website/src/lib/components/embedding/Embedding.ts @@ -48,6 +48,18 @@ export function getDefaultEmbeddingOptions(): EmbeddingOptions { return JSON.parse(JSON.stringify(defaultEmbeddingOptions)); } +export function getMergedEmbeddingOptions(options: any, defaultOptions: any = defaultEmbeddingOptions): EmbeddingOptions { + const mergedOptions = JSON.parse(JSON.stringify(defaultOptions)); + for (const key in options) { + if (typeof options[key] === 'object' && options[key] !== null && !Array.isArray(options[key])) { + mergedOptions[key] = getMergedEmbeddingOptions(options[key], defaultOptions[key]); + } else { + mergedOptions[key] = options[key]; + } + } + return mergedOptions; +} + export function getCleanedEmbeddingOptions(options: any, defaultOptions: any = defaultEmbeddingOptions): any { const cleanedOptions = JSON.parse(JSON.stringify(options)); for (const key in cleanedOptions) { diff --git a/website/src/routes/[...language]/embed/+page.svelte b/website/src/routes/[...language]/embed/+page.svelte index 34b4b700..f9d9626c 100644 --- a/website/src/routes/[...language]/embed/+page.svelte +++ b/website/src/routes/[...language]/embed/+page.svelte @@ -3,7 +3,7 @@ import { onMount } from 'svelte'; import Embedding from '$lib/components/embedding/Embedding.svelte'; import { - getDefaultEmbeddingOptions, + getMergedEmbeddingOptions, type EmbeddingOptions } from '$lib/components/embedding/Embedding'; @@ -18,7 +18,7 @@ if (options === null) { return; } - embeddingOptions = Object.assign(getDefaultEmbeddingOptions(), options); + embeddingOptions = getMergedEmbeddingOptions(options); });