/home/arranoyd/energyclinic/wp-content/plugins/extendify/src/Shared/lib/utils.js
export const deepMerge = (target, ...sources) => {
	return sources.reduce((acc, source) => {
		if (!isObject(acc) || !isObject(source)) {
			return null;
		}

		const newTarget = { ...acc };

		for (const key in source) {
			if (isObject(source[key]) && key in newTarget) {
				newTarget[key] = deepMerge(newTarget[key], source[key]);
			} else {
				newTarget[key] = source[key];
			}
		}

		return newTarget;
	}, target);
};

export const isObject = (value) => {
	return typeof value === 'object' && !Array.isArray(value) && value !== null;
};

export const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));