export const mergeConfig = (nextConfig: any, defaultConfig: any) => {
  if (!nextConfig) {
    return defaultConfig;
  }
  let layout = {
    ...(defaultConfig?.layout || {}),
    ...(nextConfig?.layout || {}),
  };

  let nodeLabelCfg = {
    ...(defaultConfig?.defaultNode?.labelCfg || {}),
    ...(nextConfig?.defaultNode?.labelCfg || {}),
  };
  let nodeStyle = {
    ...(defaultConfig?.defaultNode?.style || {}),
    ...(nextConfig?.defaultNode?.style || {}),
  };
  let defaultNode = {
    ...(defaultConfig?.defaultNode || {}),
    ...(nextConfig?.defaultNode || {}),
    ...{ labelCfg: nodeLabelCfg, style: nodeStyle },
  };

  let edgeLabelCfg = {
    ...(defaultConfig?.defaultEdge?.labelCfg || {}),
    ...(nextConfig?.defaultEdge?.labelCfg || {}),
  };
  let edgeStyle = {
    ...(defaultConfig?.defaultEdge?.style || {}),
    ...(nextConfig?.defaultEdge?.style || {}),
  };
  let defaultEdge = {
    ...(defaultConfig?.defaultEdge || {}),
    ...(nextConfig?.defaultEdge || {}),
    ...{ labelCfg: edgeLabelCfg, style: edgeStyle },
  };

  return {
    ...defaultConfig,
    ...nextConfig,
    layout,
    defaultNode,
    defaultEdge,
  };
};
