export function getG2theme()

in src/themes/themeTools.ts [639:748]


export function getG2theme(theme: Theme) {
  const g2StyleSheet = getG2StyleSheet(theme);

  const g2Theme = createThemeByStyleSheet(g2StyleSheet);

  // g2Theme.maxColumnWidth = 36;
  const baseFontSize = theme['widgets-font-size-1'];
  const baseFontSizeNum = pxToNumber(theme['widgets-font-size-1']);

  // legend 样式
  const legendStyle = g2Theme.components.legend;
  legendKeys.forEach((key) => {
    const style = legendStyle[key];
    merge(style, {
      // 超出占图表宽度的45%则省略,分页符占了10%,期望一页至少展示2个,所以定为0.45
      // 这里注意,测试结果中画布尺寸小于100会影响展示
      maxItemWidth: 0.45,
      // 这里设置 itemValue 会导致一直显示 value,所以放到 legend 中配置
      itemStates: {
        active: {
          nameStyle: {
            opacity: 1,
          },
          valueStyle: {
            opacity: 1,
          },
        },
        unchecked: {
          nameStyle: {
            fill: theme['widgets-legend-uncheck'],
          },
          valueStyle: {
            fill: theme['widgets-legend-uncheck'],
          },
          markerStyle: {
            fill: theme['widgets-legend-uncheck'],
            stroke: theme['widgets-legend-uncheck'],
          },
        },
        inactive: {
          nameStyle: {
            fill: theme['widgets-legend-uncheck'],
          },
          valueStyle: {
            fill: theme['widgets-legend-uncheck'],
          },
          markerStyle: {
            opacity: 0.3,
          },
        },
      },
    });
  });

  // tooltip 样式
  const tooltipStyle = g2Theme.components.tooltip.domStyles;

  Object.assign(tooltipStyle['g2-tooltip'], {
    padding: `0 ${theme['widgets-tooltip-padding']} ${Math.max(
      0,
      pxToNumber(theme['widgets-tooltip-padding']) - baseFontSizeNum,
    )}px ${theme['widgets-tooltip-padding']}`,
    backdropFilter: theme['widgets-tooltip-background-blur'],
  });
  Object.assign(tooltipStyle['g2-tooltip-title'], {
    marginBottom: baseFontSize,
    marginTop: theme['widgets-tooltip-padding'],
    color: theme['widgets-tooltip-title'],
  });
  Object.assign(tooltipStyle['g2-tooltip-list-item'], {
    marginBottom: baseFontSize,
    marginTop: 0,
  });
  Object.assign(tooltipStyle['g2-tooltip-marker'], {
    width: `${baseFontSizeNum / 2}px`,
    height: `${baseFontSizeNum / 2}px`,
    marginRight: `${baseFontSizeNum / 3}px`,
  });
  Object.assign(tooltipStyle['g2-tooltip-value'], {
    marginLeft: `${(2 * baseFontSizeNum) / 3}px`,
  });

  // slider 样式
  const sliderStyle = g2Theme.components.slider.common;
  const p = (baseFontSizeNum * 2) / 3;
  sliderStyle.padding = [baseFontSizeNum, 3, 0, 0];
  sliderStyle.height = pxToNumber(theme['widgets-font-size-6']);;
  sliderStyle.textStyle = {
    opacity: 0,
  };

  // scrollbar 样式
  const scrollbarStyle = g2Theme.components.scrollbar;
  // scrollbarStyle.common.categorySize = baseFontSizeNum * 10;
  Object.assign(scrollbarStyle, {
    default: {
      style: {
        trackColor: theme['widgets-scrollbar-bg'],
        thumbColor: theme['widgets-scrollbar-thumb'],
      },
    },
    hover: {
      style: {
        thumbColor: theme['widgets-scrollbar-thumb'],
      },
    },
  });

  return g2Theme;
}