import { jsx as _jsx } from "react/jsx-runtime"; import * as echarts from 'echarts'; import { useRef, useEffect } from 'react'; import { isEmpty, merge } from 'lodash'; import { CHARTS_COLORS, LOADING_COLOR } from './type'; import { useSize } from 'ahooks'; export function ChartsMix(props) { const { color = CHARTS_COLORS, category = [], series, loading, style, smooth, options, loadingType = { color: LOADING_COLOR }, } = props; const contentEle = useRef(); const chartRef = useRef(); const defaultOptions = merge({ color: color, title: { show: false, }, tooltip: { trigger: 'axis', }, legend: { show: true, itemWidth: 10, itemHeight: 10, left: 'right', top: 0, }, grid: { top: 30, left: 0, right: 0, bottom: 0, containLabel: true, }, xAxis: { type: 'category', data: category, axisPointer: { type: 'shadow', }, }, yAxis: [ { type: 'value', splitLine: { show: true, }, }, { type: 'value', axisLabel: { formatter: '{value} %', }, splitLine: { show: false, }, }, ], }, options); const responsive = useSize(contentEle.current); useEffect(() => { var _a; (_a = chartRef.current) === null || _a === void 0 ? void 0 : _a.resize(); }, [JSON.stringify(responsive)]); useEffect(() => { if (!chartRef.current) { chartRef.current = echarts.init(contentEle.current); } if (loading) { chartRef.current.showLoading(Object.assign({ text: '' }, loadingType)); return; } else { chartRef.current.hideLoading(); } if (!isEmpty(series)) { chartRef.current.setOption(Object.assign(Object.assign({}, defaultOptions), { series: series.map((item) => (Object.assign({ type: 'line', data: item.data, smooth: smooth || true, barWidth: 20, symbol: 'none', itemStyle: { color: item.color, } }, item))) })); } }, [series, loading]); return (_jsx("div", { ref: contentEle, style: Object.assign({ width: '100%', height: '100%' }, style) })); }