diff --git a/packages/vanilla/src/utils/deep-assign.ts b/packages/vanilla/src/utils/deep-assign.ts
index eb74491..71fb3f1 100644
--- a/packages/vanilla/src/utils/deep-assign.ts
+++ b/packages/vanilla/src/utils/deep-assign.ts
@@ -2,13 +2,14 @@
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
export const deepAssign = (target: O, source: any): O => {
for (const [key, value] of Object.entries(target)) {
+ const sourceValue = source[key];
// Use the default value if there's no value specified
- target[key as keyof O] = source[key] === undefined ? target[key as keyof O] :
+ target[key as keyof O] = sourceValue === undefined ? target[key as keyof O] :
// Check if it's a nested object and merge if required
- (typeof value === 'object' && value !== null && !Array.isArray(value)) ?
- deepAssign(value as O, source[key] as Partial) : source[key];
+ (typeof sourceValue === 'object' && typeof value === 'object' && value !== null && !Array.isArray(value)) ?
+ deepAssign(value as O, sourceValue as Partial) : sourceValue;
}
return target;