import _ from 'lodash';

/** 图表全局配置 非echarts配置,自定义的一些全局配置 */
export const globalConfig = {};
let unsetPrimaryColor = true;

/**
 * 注册全局配置的方法 项目中注册一次即可,在项目入口或者初始化完成之后进行注册 或者有切换全局配置需求时,重新注册覆盖
 *
 * @param {any} config 配置对象
 * @returns
 */
export const injectGlobalConfig = (config) => {
  if (!config) return;

  if (Object.prototype.toString.call(config) !== '[object Object]')
    throw new TypeError('illegal params, config must be an object!');

  if (globalConfig.hasOwnProperty('primaryColor')) unsetPrimaryColor = false;

  globalConfig = _.merge(globalConfig, config);
};

/**
 * 运行时校验全局配置 目的是保证有些必需的配置需要有,或者一些需要有默认值的配置项赋值
 *
 * PrimaryColor 主题色,在运行时需要有默认值
 */
export const runtimeValidate = () => {
  // primaryColor 主题色
  if (!globalConfig.primaryColor || unsetPrimaryColor) {
    globalConfig.primaryColor = window.globalConfig?.variableTheme?.primaryColor ?? '#1685FF';
    unsetPrimaryColor = true;
  }
};