@hitachivantara/uikit-react-viz 5.2.6 → 5.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"BaseChart.cjs","sources":["../../../../src/components/BaseChart/BaseChart.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n DatasetComponent,\n GridComponent,\n TooltipComponent,\n AriaComponent,\n LegendComponent,\n DataZoomSliderComponent,\n DataZoomInsideComponent,\n} from \"echarts/components\";\nimport { CanvasRenderer } from \"echarts/renderers\";\nimport * as echarts from \"echarts/core\";\nimport {\n BarChart,\n BarSeriesOption,\n LineChart,\n LineSeriesOption,\n} from \"echarts/charts\";\nimport type { YAXisComponentOption } from \"echarts/types/dist/echarts\";\n\nimport ReactECharts from \"echarts-for-react/lib/core\";\nimport type { EChartsOption } from \"echarts-for-react/lib/types\";\n\nimport { from, internal, not, table, desc } from \"arquero\";\nimport type ColumnTable from \"arquero/dist/types/table/column-table\";\n\nimport { ExtractNames, Arrayable } from \"@hitachivantara/uikit-react-core\";\n\nimport {\n HvChartAggregation,\n HvChartOrder,\n HvChartAxis,\n HvChartEmptyCellMode,\n HvChartSampling,\n HvChartTooltip,\n HvChartTooltipParams,\n HvChartGrid,\n} from \"@viz/types\";\nimport { getAgFunc, getAxisType, getLegendIcon } from \"@viz/utils\";\nimport { useVizTheme } from \"@viz/hooks\";\nimport { useClasses } from \"./BaseChart.styles\";\n\n// Register chart components\necharts.use([\n BarChart,\n LineChart,\n CanvasRenderer,\n DatasetComponent,\n GridComponent,\n AriaComponent,\n TooltipComponent,\n LegendComponent,\n DataZoomSliderComponent,\n DataZoomInsideComponent,\n]);\n\nexport type HvBaseChartClasses = Partial<ExtractNames<typeof useClasses>>;\n\ntype GroupByField = string;\ntype SplitByField = string;\n\ntype FullSortByField = {\n /** Column name. */\n field: string;\n /** Order function to use. If no `order` is defined, it will default to `asc`. */\n order?: HvChartOrder;\n};\ntype SortByField = string | FullSortByField;\n\ninterface BaseFullMeasuresField {\n /** Column name. */\n field: string;\n /** Sampling function to use. */\n sampling?: HvChartSampling;\n /** Id of the yAxis. */\n yAxis?: string;\n /** Aggregation function to use. If no `agg` is defined, it will default to `sum`. */\n agg?: HvChartAggregation;\n /**\n * Stack name to use when the measure should be stacked.\n *\n * Measures stacked together have the same name.\n *\n * If not specified, it defaults to the global `stacked` prop.\n */\n stack?: string;\n /** Strategy to use when there are empty cells. If not specified, it defaults to the global `emptyCellMode` prop. */\n valueFormatter?: (value?: string | number) => string;\n}\n\ninterface LineFullMeasuresField extends BaseFullMeasuresField {\n /** Whether to hide the symbol for data points. Defaults to `false`. */\n hideSymbol?: boolean;\n /** Whether the area under the lines should be filled. If not specified, it defaults to the global `area` prop. */\n area?: boolean;\n /** Sets opacity of the filled area if `area` is true. If not specified, it defaults to the global `areaOpacity` prop. */\n areaOpacity?: number;\n /** Strategy to use when there are empty cells. If not specified, it defaults to the global `emptyCellMode` prop. */\n emptyCellMode?: HvChartEmptyCellMode;\n}\n\ntype LineMeasuresField = string | LineFullMeasuresField;\n\ntype BarMeasuresField = string | BaseFullMeasuresField;\n\n/** Line and bar chart common props */\nexport interface HvBaseChartCommonProps {\n /** Chart data. */\n data:\n | Map<string | number, (string | number)[]>\n | Record<string | number, (string | number)[]>\n | Record<string | number, string | number>[]\n | ColumnTable;\n /** Columns to use to group the data. */\n groupBy: Arrayable<GroupByField>;\n /** Columns to use to split the measures. */\n splitBy?: Arrayable<SplitByField>;\n /** Columns to use to sort the data points. */\n sortBy?: Arrayable<SortByField>;\n /** Options for the xAxis, i.e. the horizontal axis. */\n xAxis?: HvChartAxis;\n /** Options for the yAxis, i.e. the vertical axis. */\n yAxis?: HvChartAxis | [HvChartAxis, HvChartAxis];\n /** Tooltip options. */\n tooltip?: HvChartTooltip;\n /** Legend options. */\n legend?: {\n /** Whether to show the legend or not. The legend will appear by default for multiple series. Otherwise, the legend will not be shown. */\n show?: boolean;\n };\n /** Formatter for the series names used on the tooltips and legend. */\n seriesNameFormatter?: (value?: string) => string;\n /** Stack name to use when all the series should be stacked together. If not provided, the series are not stacked. */\n stack?: string;\n /** Ranger slider options for the horizontal axis. */\n horizontalRangeSlider?: {\n /** Whether to show the ranger slider or not. Defaults to `false`. */\n show?: boolean;\n };\n /** Grid options. */\n grid?: HvChartGrid;\n}\n\n/** Line chart props only */\nexport interface HvBaseChartLineProps {\n /** Columns to measure on the chart. */\n measures: Arrayable<LineMeasuresField>;\n /** Strategy to use when there are empty cells. Defaults to `void`. */\n emptyCellMode?: HvChartEmptyCellMode;\n /** Whether the area under the lines should be filled. Defaults to `false`. */\n area?: boolean;\n /** Sets opacity of the filled area if `area` is true. Defaults to `0.5`. */\n areaOpacity?: number;\n}\n\n/** Bar chart props only */\nexport interface HvBaseChartBarProps {\n /** Columns to measure on the chart. */\n measures: Arrayable<BarMeasuresField>;\n /** Whether the bar chart should be horizontal. Defaults to `false`. */\n horizontal?: boolean;\n}\n\n/** Base chart only props */\ninterface HvBaseChartOnlyProps {\n /** Chart type. */\n type: \"line\" | \"bar\";\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvBaseChartClasses;\n}\n\nexport interface HvBaseChartProps\n extends HvBaseChartCommonProps,\n Omit<HvBaseChartLineProps, \"measures\">,\n Omit<HvBaseChartBarProps, \"measures\">,\n HvBaseChartOnlyProps {\n /** Columns to measure on the chart. */\n measures: Arrayable<string | (BaseFullMeasuresField & LineFullMeasuresField)>;\n}\n\n/** Echarts doesn't seem to have the type for the tooltip params */\ninterface EChartsTooltipParams {\n seriesName: string;\n value: (string | number)[];\n encode: { [key: string]: number[] };\n color: string;\n dimensionNames: string[];\n}\n\n/**\n * Base chart for the line and bar chart.\n */\nexport const HvBaseChart = ({\n type,\n data,\n groupBy,\n splitBy,\n measures,\n sortBy,\n xAxis,\n yAxis,\n legend,\n tooltip,\n seriesNameFormatter,\n area = false,\n stack,\n emptyCellMode = \"void\",\n horizontalRangeSlider,\n areaOpacity = 0.5,\n classes: classesProp = {},\n grid,\n horizontal = false,\n}: HvBaseChartProps) => {\n const { theme } = useVizTheme();\n const { classes } = useClasses(classesProp);\n\n const currentTheme = useRef<string | undefined>(theme);\n const chartRef = useRef<ReactECharts>(null);\n const isMounted = useRef<boolean>(false);\n\n const groupByKey = Array.isArray(groupBy) ? groupBy.join(\"_\") : groupBy;\n\n const chartData = useMemo<ColumnTable>(() => {\n let tableData: ColumnTable;\n if (data instanceof internal.ColumnTable) {\n tableData = data;\n } else if (Array.isArray(data)) {\n tableData = from(data);\n } else {\n tableData = table(data);\n }\n\n const groupByFields = groupBy\n ? Array.isArray(groupBy)\n ? groupBy\n : [groupBy]\n : [];\n\n const splitByFields = Array.isArray(splitBy)\n ? splitBy\n : splitBy != null\n ? [splitBy]\n : [];\n\n const measuresFields: { [key: string]: string } =\n measures == null\n ? {}\n : typeof measures === \"string\"\n ? { [measures]: getAgFunc(\"sum\", measures) }\n : Array.isArray(measures)\n ? measures.reduce<{ [key: string]: string }>((acc, value) => {\n let field: string;\n let agFunction: HvChartAggregation;\n if (typeof value === \"string\") {\n field = value;\n agFunction = \"sum\";\n } else {\n field = value.field;\n agFunction = value.agg ?? \"sum\";\n }\n\n return {\n ...acc,\n [field]: getAgFunc(agFunction, field),\n };\n }, {})\n : {\n [measures.field]: getAgFunc(measures.agg ?? \"sum\", measures.field),\n };\n\n const sortByFields: { [key: string]: HvChartOrder } =\n sortBy == null\n ? {}\n : typeof sortBy === \"string\"\n ? { [sortBy]: \"asc\" }\n : Array.isArray(sortBy)\n ? sortBy.reduce<{ [key: string]: HvChartOrder }>((acc, value) => {\n let field: string;\n let orderFunction: HvChartOrder;\n if (typeof value === \"string\") {\n field = value;\n orderFunction = \"asc\";\n } else {\n field = value.field;\n orderFunction = value.order ?? \"asc\";\n }\n\n return {\n ...acc,\n [field]: orderFunction,\n };\n }, {})\n : { [sortBy.field]: sortBy.order ?? \"asc\" };\n\n const allFields = [\n ...groupByFields,\n ...splitByFields,\n ...Object.keys(measuresFields),\n ];\n\n // remove unneeded fields\n tableData = tableData.select(...allFields);\n\n // group by groupBy fields\n if (groupByFields.length > 0) {\n tableData = tableData.groupby(groupByFields);\n }\n\n if (splitByFields.length > 0) {\n // pivot by splitBy fields\n tableData = tableData.pivot(splitByFields, measuresFields);\n } else {\n // if there is no splitBy fields, just aggregate measures fields\n tableData = tableData.rollup(measuresFields);\n }\n\n // if grouped by multiple fields, create a new joint field\n // as the line chart doesn't implement hierarchical axis label grouping\n if (groupByFields.length > 1) {\n const expression = `d => ${groupByFields\n .map((field) => `d.${field}`)\n .join(\" + '_' + \")}`;\n\n tableData = tableData.derive(\n { [groupByKey]: expression },\n { after: groupByFields[groupByFields.length - 1] }\n );\n }\n\n // sort by sortBy fields\n if (Object.keys(sortByFields).length > 0) {\n tableData = tableData.orderby(\n ...Object.keys(sortByFields)\n // only sort by fields that are in the table, ignore the rest\n .filter((key) => allFields.includes(key))\n .map((key) => (sortByFields[key] === \"desc\" ? desc(key) : key))\n );\n }\n\n // if a derived field was created, remove the original fields\n if (groupByFields.length > 1) {\n tableData = tableData.select(not(...groupByFields));\n }\n\n return tableData;\n }, [data, groupBy, groupByKey, splitBy, measures, sortBy]);\n\n const chartDataset = useMemo<Pick<EChartsOption, \"dataset\">>(() => {\n return {\n dataset: {\n source: chartData.columnNames().reduce(\n (acc, c) => ({\n ...acc,\n [c]: chartData.array(c),\n }),\n {}\n ),\n },\n };\n }, [chartData]);\n\n const chartXAxis = useMemo<Pick<EChartsOption, \"xAxis\">>(() => {\n return {\n xAxis: {\n id: xAxis?.id,\n type: getAxisType(xAxis?.type) ?? (horizontal ? \"value\" : \"category\"),\n name: xAxis?.name,\n scale: !(type === \"bar\"),\n axisLabel: {\n rotate: xAxis?.labelRotation ?? 0,\n formatter: xAxis?.labelFormatter,\n },\n max: xAxis?.maxValue === \"max\" ? \"dataMax\" : xAxis?.maxValue,\n min: xAxis?.minValue === \"min\" ? \"dataMin\" : xAxis?.minValue,\n },\n };\n }, [xAxis, type, horizontal]);\n\n const chartYAxis = useMemo<Pick<EChartsOption, \"yAxis\">>(() => {\n if (!yAxis || !Array.isArray(yAxis)) {\n return {\n yAxis: {\n id: yAxis?.id,\n type: getAxisType(yAxis?.type) ?? (horizontal ? \"category\" : \"value\"),\n name: yAxis?.name,\n axisLabel: {\n rotate: yAxis?.labelRotation ?? 0,\n formatter: yAxis?.labelFormatter,\n },\n max: yAxis?.maxValue === \"max\" ? \"dataMax\" : yAxis?.maxValue,\n min: yAxis?.minValue === \"min\" ? \"dataMin\" : yAxis?.minValue,\n },\n };\n }\n\n return {\n yAxis: yAxis.map<YAXisComponentOption>((axis) => ({\n id: axis?.id,\n type: getAxisType(axis?.type) ?? \"value\",\n name: axis?.name,\n axisLabel: {\n rotate: axis?.labelRotation ?? 0,\n formatter: axis?.labelFormatter,\n },\n max: axis?.maxValue === \"max\" ? \"dataMax\" : axis?.maxValue,\n min: axis?.minValue === \"min\" ? \"dataMin\" : axis?.minValue,\n })),\n };\n }, [yAxis, horizontal]);\n\n const getMeasure = (name: string, msr: HvBaseChartProps[\"measures\"]) => {\n const measureName = name.split(\"_\")[0];\n const measuresArray = Array.isArray(msr) ? msr : [msr];\n // find the measure in measures array or return the first one\n return (\n measuresArray.find((m) => {\n if (typeof m === \"string\") {\n return m === measureName;\n }\n return m.field === measureName;\n }) ?? measuresArray[0]\n );\n };\n\n const chartSeries = useMemo<Pick<EChartsOption, \"series\">>(() => {\n return {\n series: chartData\n .columnNames()\n .filter((c) => c !== groupByKey)\n .map<LineSeriesOption | BarSeriesOption>((c) => {\n const measure = getMeasure(c, measures);\n\n const showSymbol =\n typeof measure !== \"string\" ? !measure.hideSymbol : true;\n const sampling =\n typeof measure !== \"string\" ? measure.sampling : undefined;\n const yAxisId =\n typeof measure !== \"string\" ? measure.yAxis : undefined;\n const isArea =\n typeof measure !== \"string\" ? measure.area ?? area : area;\n const aOpacity =\n typeof measure !== \"string\"\n ? measure.areaOpacity ?? areaOpacity\n : areaOpacity;\n const stackName =\n typeof measure !== \"string\"\n ? measure.stack ?? stack ?? undefined\n : stack ?? undefined;\n const connectNulls =\n typeof measure !== \"string\" && measure.emptyCellMode\n ? measure.emptyCellMode === \"connect\"\n : emptyCellMode === \"connect\";\n\n return {\n id: `series~${groupByKey}~${c}`,\n name: seriesNameFormatter ? seriesNameFormatter(c) : c,\n encode: horizontal\n ? {\n x: c,\n y: groupByKey,\n }\n : {\n x: groupByKey,\n y: c,\n },\n type,\n showSymbol,\n sampling,\n areaStyle: isArea ? { opacity: aOpacity } : undefined,\n connectNulls,\n stack: stackName,\n yAxisId,\n barMaxWidth: 90,\n barMinWidth: 3,\n };\n }),\n };\n }, [\n chartData,\n groupByKey,\n area,\n stack,\n seriesNameFormatter,\n emptyCellMode,\n areaOpacity,\n measures,\n type,\n horizontal,\n ]);\n\n const renderTooltip = useCallback(\n (\n params: EChartsTooltipParams[],\n single: boolean,\n msr: HvBaseChartProps[\"measures\"],\n reverse: boolean,\n cls?: typeof classes,\n valueFormatter?: (value?: string | number) => string,\n titleFormatter?: (value?: string | number) => string\n ) => {\n const title = reverse\n ? params[0].value[params[0].encode.y[0]]\n : params[0].value[params[0].encode.x[0]];\n const formattedTitle = titleFormatter ? titleFormatter(title) : title;\n\n if (single) {\n const measure = getMeasure(\n reverse\n ? params[0].dimensionNames[params[0].encode.x[0]]\n : params[0].dimensionNames[params[0].encode.y[0]],\n msr\n );\n const value = reverse\n ? params[0].value[params[0].encode.x[0]]\n : params[0].value[params[0].encode.y[0]];\n const formattedValue =\n typeof measure !== \"string\" && measure.valueFormatter\n ? measure.valueFormatter(value)\n : valueFormatter\n ? valueFormatter(value)\n : value;\n\n return `\n <div class=\"${cls?.singleTooltipRoot}\">\n <p class=\"${cls?.singleTooltipTitle}\">${formattedTitle}</p>\n <p class=\"${cls?.singleTooltipValue}\">${formattedValue}</p>\n </div>\n `;\n }\n\n return `\n <div class=\"${cls?.multipleTooltipRoot}\">\n <div class=\"${cls?.multipleTooltipTitleContainer}\">\n <div>\n <p class=\"${cls?.multipleTooltipTitle}\">${formattedTitle}</p>\n </div>\n </div>\n <div class=\"${cls?.multipleTooltipValuesContainer}\">\n ${params\n .map((s) => {\n const measure = getMeasure(\n reverse\n ? s.dimensionNames[s.encode.x[0]]\n : s.dimensionNames[s.encode.y[0]],\n msr\n );\n const value = reverse\n ? s.value[s.encode.x[0]]\n : s.value[s.encode.y[0]];\n const formattedValue =\n typeof measure !== \"string\" && measure.valueFormatter\n ? measure.valueFormatter(value)\n : valueFormatter\n ? valueFormatter(value)\n : value;\n\n return `\n <div key=\"${s.seriesName}\" class=\"${cls?.multipleTooltipSeriesContainer}\">\n <div class=\"${cls?.multipleTooltipSeriesNameContainer}\">\n <p style=\"background-color: ${s.color};\" class=\"${cls?.multipleTooltipSeriesColor}\" />\n <p class=\"${cls?.multipleTooltipSeriesName}\">${s.seriesName}</p>\n </div>\n <p class=\"${cls?.multipleTooltipSeriesValue}\">${formattedValue}</p>\n </div>\n `;\n })\n .join(\" \")}\n </div>\n </div>\n `;\n },\n []\n );\n\n const renderCustomTooltip = (\n params: EChartsTooltipParams[],\n reverse: boolean,\n customTooltip: Required<HvChartTooltip[\"component\"]>\n ) => {\n if (typeof customTooltip === \"function\") {\n const values: HvChartTooltipParams = {\n title: reverse\n ? params[0].value[params[0].encode.y[0]]\n : params[0].value[params[0].encode.x[0]],\n series: params.map((p) => {\n return {\n color: p.color,\n name: p.seriesName,\n value: reverse ? p.value[p.encode.x[0]] : p.value[p.encode.y[0]],\n };\n }),\n };\n\n return customTooltip(values);\n }\n\n return customTooltip;\n };\n\n const chartTooltip = useMemo<Pick<EChartsOption, \"tooltip\">>(() => {\n return {\n tooltip: {\n confine: false,\n show: tooltip?.show ?? true,\n trigger: \"axis\",\n position: (point, params, dom, rect, size) => {\n return [point[0], point[1] - size.contentSize[1]];\n },\n formatter: (params) =>\n tooltip?.component\n ? renderCustomTooltip(params, horizontal, tooltip.component)\n : renderTooltip(\n params,\n tooltip?.type === \"single\",\n measures,\n horizontal,\n classes,\n tooltip?.valueFormatter,\n tooltip?.titleFormatter\n ),\n },\n };\n }, [tooltip, classes, measures, horizontal, renderTooltip]);\n\n const chartLegend = useMemo<Pick<EChartsOption, \"legend\">>(() => {\n return {\n legend: {\n show:\n legend?.show ??\n (Array.isArray(chartSeries.series) && chartSeries.series.length > 1),\n itemGap: 20,\n data:\n legend?.show !== false && Array.isArray(chartSeries.series)\n ? chartSeries.series.map((s) => {\n return {\n name: s.name as string,\n icon: getLegendIcon(\n (s as any).areaStyle != null || s.type === \"bar\"\n ),\n };\n })\n : undefined,\n },\n };\n }, [chartSeries, legend]);\n\n const chartHorizontalRangerSlider = useMemo<\n Pick<EChartsOption, \"dataZoom\">\n >(() => {\n return {\n dataZoom: [\n {\n show: horizontalRangeSlider?.show ?? false,\n type: \"slider\",\n orient: \"horizontal\",\n },\n {\n show: horizontalRangeSlider?.show ?? false,\n type: \"inside\",\n orient: \"horizontal\",\n zoomOnMouseWheel: \"shift\",\n moveOnMouseWheel: true,\n },\n ],\n };\n }, [horizontalRangeSlider]);\n\n const chartGrid = useMemo(() => {\n return {\n // if no value is defined we shouldn't pass anything because echarts doesn't behave well otherwise\n grid: {\n ...(grid?.top != null && {\n top: grid.top,\n }),\n ...(grid?.bottom != null && {\n bottom: grid.bottom,\n }),\n ...(grid?.left != null && {\n left: grid.left,\n }),\n ...(grid?.right != null && {\n right: grid.right,\n }),\n },\n };\n }, [grid]);\n\n const [initialOption, setInitialOption] = useState<EChartsOption>({\n aria: {\n enabled: true,\n },\n animation: false,\n ...chartDataset,\n ...chartXAxis,\n ...chartYAxis,\n ...chartSeries,\n ...chartTooltip,\n ...chartLegend,\n ...chartHorizontalRangerSlider,\n ...chartGrid,\n });\n\n useEffect(() => {\n if (!isMounted.current) {\n isMounted.current = true;\n return;\n }\n\n // when the theme changes echarts destroys the chart and mounts it again\n // thus we need to reset the initial option\n if (theme !== currentTheme.current) {\n setInitialOption({\n aria: {\n enabled: true,\n },\n animation: false,\n ...chartDataset,\n ...chartXAxis,\n ...chartYAxis,\n ...chartSeries,\n ...chartTooltip,\n ...chartLegend,\n ...chartHorizontalRangerSlider,\n ...chartGrid,\n });\n currentTheme.current = theme;\n return;\n }\n\n chartRef.current?.getEchartsInstance().setOption(\n {\n ...chartDataset,\n ...chartXAxis,\n ...chartYAxis,\n ...chartSeries,\n ...chartLegend,\n ...chartTooltip,\n ...chartHorizontalRangerSlider,\n ...chartGrid,\n },\n {\n replaceMerge: [\"xAxis\", \"yAxis\", \"series\", \"dataset\"],\n }\n );\n }, [\n theme,\n chartDataset,\n chartXAxis,\n chartYAxis,\n chartSeries,\n chartLegend,\n chartTooltip,\n chartHorizontalRangerSlider,\n chartGrid,\n ]);\n\n return (\n <ReactECharts\n ref={chartRef}\n echarts={echarts}\n option={initialOption}\n theme={theme}\n notMerge\n />\n );\n};\n"],"names":["echarts","use","BarChart","LineChart","CanvasRenderer","DatasetComponent","GridComponent","AriaComponent","TooltipComponent","LegendComponent","DataZoomSliderComponent","DataZoomInsideComponent","HvBaseChart","type","data","groupBy","splitBy","measures","sortBy","xAxis","yAxis","legend","tooltip","seriesNameFormatter","area","stack","emptyCellMode","horizontalRangeSlider","areaOpacity","classes","classesProp","grid","horizontal","theme","useVizTheme","useClasses","currentTheme","useRef","chartRef","isMounted","groupByKey","Array","isArray","join","chartData","useMemo","tableData","internal","ColumnTable","from","table","groupByFields","splitByFields","measuresFields","getAgFunc","reduce","acc","value","field","agFunction","agg","sortByFields","orderFunction","order","allFields","Object","keys","select","length","groupby","pivot","rollup","expression","map","derive","after","orderby","filter","key","includes","desc","not","chartDataset","dataset","source","columnNames","c","array","chartXAxis","id","getAxisType","name","scale","axisLabel","rotate","labelRotation","formatter","labelFormatter","max","maxValue","min","minValue","chartYAxis","axis","getMeasure","msr","measureName","split","measuresArray","find","m","chartSeries","series","measure","showSymbol","hideSymbol","sampling","undefined","yAxisId","isArea","aOpacity","stackName","connectNulls","encode","x","y","areaStyle","opacity","barMaxWidth","barMinWidth","renderTooltip","useCallback","params","single","reverse","cls","valueFormatter","titleFormatter","title","formattedTitle","dimensionNames","formattedValue","singleTooltipRoot","singleTooltipTitle","singleTooltipValue","multipleTooltipRoot","multipleTooltipTitleContainer","multipleTooltipTitle","multipleTooltipValuesContainer","s","seriesName","multipleTooltipSeriesContainer","multipleTooltipSeriesNameContainer","color","multipleTooltipSeriesColor","multipleTooltipSeriesName","multipleTooltipSeriesValue","renderCustomTooltip","customTooltip","values","p","chartTooltip","confine","show","trigger","position","point","dom","rect","size","contentSize","component","chartLegend","itemGap","icon","getLegendIcon","chartHorizontalRangerSlider","dataZoom","orient","zoomOnMouseWheel","moveOnMouseWheel","chartGrid","top","bottom","left","right","initialOption","setInitialOption","useState","aria","enabled","animation","useEffect","current","getEchartsInstance","setOption","replaceMerge","ReactECharts","ref","option","notMerge"],"mappings":"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"}
1
+ {"version":3,"file":"BaseChart.cjs","sources":["../../../../src/components/BaseChart/BaseChart.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n DatasetComponent,\n GridComponent,\n TooltipComponent,\n AriaComponent,\n LegendComponent,\n DataZoomSliderComponent,\n DataZoomInsideComponent,\n} from \"echarts/components\";\nimport { CanvasRenderer } from \"echarts/renderers\";\nimport * as echarts from \"echarts/core\";\nimport {\n BarChart,\n BarSeriesOption,\n LineChart,\n LineSeriesOption,\n} from \"echarts/charts\";\nimport type { YAXisComponentOption } from \"echarts/types/dist/echarts\";\n\nimport ReactECharts from \"echarts-for-react/lib/core\";\nimport type { EChartsOption } from \"echarts-for-react/lib/types\";\n\nimport { from, internal, not, table, desc } from \"arquero\";\nimport type ColumnTable from \"arquero/dist/types/table/column-table\";\n\nimport { ExtractNames, Arrayable } from \"@hitachivantara/uikit-react-core\";\n\nimport {\n HvChartAggregation,\n HvChartOrder,\n HvChartAxis,\n HvChartEmptyCellMode,\n HvChartSampling,\n HvChartTooltip,\n HvChartTooltipParams,\n HvChartGrid,\n} from \"@viz/types\";\nimport { getAgFunc, getAxisType, getLegendIcon } from \"@viz/utils\";\nimport { useVizTheme } from \"@viz/hooks\";\nimport { useClasses } from \"./BaseChart.styles\";\n\n// Register chart components\necharts.use([\n BarChart,\n LineChart,\n CanvasRenderer,\n DatasetComponent,\n GridComponent,\n AriaComponent,\n TooltipComponent,\n LegendComponent,\n DataZoomSliderComponent,\n DataZoomInsideComponent,\n]);\n\nexport type HvBaseChartClasses = ExtractNames<typeof useClasses>;\n\ntype GroupByField = string;\ntype SplitByField = string;\n\ntype FullSortByField = {\n /** Column name. */\n field: string;\n /** Order function to use. If no `order` is defined, it will default to `asc`. */\n order?: HvChartOrder;\n};\ntype SortByField = string | FullSortByField;\n\ninterface BaseFullMeasuresField {\n /** Column name. */\n field: string;\n /** Sampling function to use. */\n sampling?: HvChartSampling;\n /** Id of the yAxis. */\n yAxis?: string;\n /** Aggregation function to use. If no `agg` is defined, it will default to `sum`. */\n agg?: HvChartAggregation;\n /**\n * Stack name to use when the measure should be stacked.\n *\n * Measures stacked together have the same name.\n *\n * If not specified, it defaults to the global `stacked` prop.\n */\n stack?: string;\n /** Strategy to use when there are empty cells. If not specified, it defaults to the global `emptyCellMode` prop. */\n valueFormatter?: (value?: string | number) => string;\n}\n\ninterface LineFullMeasuresField extends BaseFullMeasuresField {\n /** Whether to hide the symbol for data points. Defaults to `false`. */\n hideSymbol?: boolean;\n /** Whether the area under the lines should be filled. If not specified, it defaults to the global `area` prop. */\n area?: boolean;\n /** Sets opacity of the filled area if `area` is true. If not specified, it defaults to the global `areaOpacity` prop. */\n areaOpacity?: number;\n /** Strategy to use when there are empty cells. If not specified, it defaults to the global `emptyCellMode` prop. */\n emptyCellMode?: HvChartEmptyCellMode;\n}\n\ntype LineMeasuresField = string | LineFullMeasuresField;\n\ntype BarMeasuresField = string | BaseFullMeasuresField;\n\n/** Line and bar chart common props */\nexport interface HvBaseChartCommonProps {\n /** Chart data. */\n data:\n | Map<string | number, (string | number)[]>\n | Record<string | number, (string | number)[]>\n | Record<string | number, string | number>[]\n | ColumnTable;\n /** Columns to use to group the data. */\n groupBy: Arrayable<GroupByField>;\n /** Columns to use to split the measures. */\n splitBy?: Arrayable<SplitByField>;\n /** Columns to use to sort the data points. */\n sortBy?: Arrayable<SortByField>;\n /** Options for the xAxis, i.e. the horizontal axis. */\n xAxis?: HvChartAxis;\n /** Options for the yAxis, i.e. the vertical axis. */\n yAxis?: HvChartAxis | [HvChartAxis, HvChartAxis];\n /** Tooltip options. */\n tooltip?: HvChartTooltip;\n /** Legend options. */\n legend?: {\n /** Whether to show the legend or not. The legend will appear by default for multiple series. Otherwise, the legend will not be shown. */\n show?: boolean;\n };\n /** Formatter for the series names used on the tooltips and legend. */\n seriesNameFormatter?: (value?: string) => string;\n /** Stack name to use when all the series should be stacked together. If not provided, the series are not stacked. */\n stack?: string;\n /** Ranger slider options for the horizontal axis. */\n horizontalRangeSlider?: {\n /** Whether to show the ranger slider or not. Defaults to `false`. */\n show?: boolean;\n };\n /** Grid options. */\n grid?: HvChartGrid;\n}\n\n/** Line chart props only */\nexport interface HvBaseChartLineProps {\n /** Columns to measure on the chart. */\n measures: Arrayable<LineMeasuresField>;\n /** Strategy to use when there are empty cells. Defaults to `void`. */\n emptyCellMode?: HvChartEmptyCellMode;\n /** Whether the area under the lines should be filled. Defaults to `false`. */\n area?: boolean;\n /** Sets opacity of the filled area if `area` is true. Defaults to `0.5`. */\n areaOpacity?: number;\n}\n\n/** Bar chart props only */\nexport interface HvBaseChartBarProps {\n /** Columns to measure on the chart. */\n measures: Arrayable<BarMeasuresField>;\n /** Whether the bar chart should be horizontal. Defaults to `false`. */\n horizontal?: boolean;\n}\n\n/** Base chart only props */\ninterface HvBaseChartOnlyProps {\n /** Chart type. */\n type: \"line\" | \"bar\";\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvBaseChartClasses;\n}\n\nexport interface HvBaseChartProps\n extends HvBaseChartCommonProps,\n Omit<HvBaseChartLineProps, \"measures\">,\n Omit<HvBaseChartBarProps, \"measures\">,\n HvBaseChartOnlyProps {\n /** Columns to measure on the chart. */\n measures: Arrayable<string | (BaseFullMeasuresField & LineFullMeasuresField)>;\n}\n\n/** Echarts doesn't seem to have the type for the tooltip params */\ninterface EChartsTooltipParams {\n seriesName: string;\n value: (string | number)[];\n encode: { [key: string]: number[] };\n color: string;\n dimensionNames: string[];\n}\n\n/**\n * Base chart for the line and bar chart.\n */\nexport const HvBaseChart = ({\n type,\n data,\n groupBy,\n splitBy,\n measures,\n sortBy,\n xAxis,\n yAxis,\n legend,\n tooltip,\n seriesNameFormatter,\n area = false,\n stack,\n emptyCellMode = \"void\",\n horizontalRangeSlider,\n areaOpacity = 0.5,\n classes: classesProp = {},\n grid,\n horizontal = false,\n}: HvBaseChartProps) => {\n const { theme } = useVizTheme();\n const { classes } = useClasses(classesProp);\n\n const currentTheme = useRef<string | undefined>(theme);\n const chartRef = useRef<ReactECharts>(null);\n const isMounted = useRef<boolean>(false);\n\n const groupByKey = Array.isArray(groupBy) ? groupBy.join(\"_\") : groupBy;\n\n const chartData = useMemo<ColumnTable>(() => {\n let tableData: ColumnTable;\n if (data instanceof internal.ColumnTable) {\n tableData = data;\n } else if (Array.isArray(data)) {\n tableData = from(data);\n } else {\n tableData = table(data);\n }\n\n const groupByFields = groupBy\n ? Array.isArray(groupBy)\n ? groupBy\n : [groupBy]\n : [];\n\n const splitByFields = Array.isArray(splitBy)\n ? splitBy\n : splitBy != null\n ? [splitBy]\n : [];\n\n const measuresFields: { [key: string]: string } =\n measures == null\n ? {}\n : typeof measures === \"string\"\n ? { [measures]: getAgFunc(\"sum\", measures) }\n : Array.isArray(measures)\n ? measures.reduce<{ [key: string]: string }>((acc, value) => {\n let field: string;\n let agFunction: HvChartAggregation;\n if (typeof value === \"string\") {\n field = value;\n agFunction = \"sum\";\n } else {\n field = value.field;\n agFunction = value.agg ?? \"sum\";\n }\n\n return {\n ...acc,\n [field]: getAgFunc(agFunction, field),\n };\n }, {})\n : {\n [measures.field]: getAgFunc(measures.agg ?? \"sum\", measures.field),\n };\n\n const sortByFields: { [key: string]: HvChartOrder } =\n sortBy == null\n ? {}\n : typeof sortBy === \"string\"\n ? { [sortBy]: \"asc\" }\n : Array.isArray(sortBy)\n ? sortBy.reduce<{ [key: string]: HvChartOrder }>((acc, value) => {\n let field: string;\n let orderFunction: HvChartOrder;\n if (typeof value === \"string\") {\n field = value;\n orderFunction = \"asc\";\n } else {\n field = value.field;\n orderFunction = value.order ?? \"asc\";\n }\n\n return {\n ...acc,\n [field]: orderFunction,\n };\n }, {})\n : { [sortBy.field]: sortBy.order ?? \"asc\" };\n\n const allFields = [\n ...groupByFields,\n ...splitByFields,\n ...Object.keys(measuresFields),\n ];\n\n // remove unneeded fields\n tableData = tableData.select(...allFields);\n\n // group by groupBy fields\n if (groupByFields.length > 0) {\n tableData = tableData.groupby(groupByFields);\n }\n\n if (splitByFields.length > 0) {\n // pivot by splitBy fields\n tableData = tableData.pivot(splitByFields, measuresFields);\n } else {\n // if there is no splitBy fields, just aggregate measures fields\n tableData = tableData.rollup(measuresFields);\n }\n\n // if grouped by multiple fields, create a new joint field\n // as the line chart doesn't implement hierarchical axis label grouping\n if (groupByFields.length > 1) {\n const expression = `d => ${groupByFields\n .map((field) => `d.${field}`)\n .join(\" + '_' + \")}`;\n\n tableData = tableData.derive(\n { [groupByKey]: expression },\n { after: groupByFields[groupByFields.length - 1] }\n );\n }\n\n // sort by sortBy fields\n if (Object.keys(sortByFields).length > 0) {\n tableData = tableData.orderby(\n ...Object.keys(sortByFields)\n // only sort by fields that are in the table, ignore the rest\n .filter((key) => allFields.includes(key))\n .map((key) => (sortByFields[key] === \"desc\" ? desc(key) : key))\n );\n }\n\n // if a derived field was created, remove the original fields\n if (groupByFields.length > 1) {\n tableData = tableData.select(not(...groupByFields));\n }\n\n return tableData;\n }, [data, groupBy, groupByKey, splitBy, measures, sortBy]);\n\n const chartDataset = useMemo<Pick<EChartsOption, \"dataset\">>(() => {\n return {\n dataset: {\n source: chartData.columnNames().reduce(\n (acc, c) => ({\n ...acc,\n [c]: chartData.array(c),\n }),\n {}\n ),\n },\n };\n }, [chartData]);\n\n const chartXAxis = useMemo<Pick<EChartsOption, \"xAxis\">>(() => {\n return {\n xAxis: {\n id: xAxis?.id,\n type: getAxisType(xAxis?.type) ?? (horizontal ? \"value\" : \"category\"),\n name: xAxis?.name,\n scale: !(type === \"bar\"),\n axisLabel: {\n rotate: xAxis?.labelRotation ?? 0,\n formatter: xAxis?.labelFormatter,\n },\n max: xAxis?.maxValue === \"max\" ? \"dataMax\" : xAxis?.maxValue,\n min: xAxis?.minValue === \"min\" ? \"dataMin\" : xAxis?.minValue,\n },\n };\n }, [xAxis, type, horizontal]);\n\n const chartYAxis = useMemo<Pick<EChartsOption, \"yAxis\">>(() => {\n if (!yAxis || !Array.isArray(yAxis)) {\n return {\n yAxis: {\n id: yAxis?.id,\n type: getAxisType(yAxis?.type) ?? (horizontal ? \"category\" : \"value\"),\n name: yAxis?.name,\n axisLabel: {\n rotate: yAxis?.labelRotation ?? 0,\n formatter: yAxis?.labelFormatter,\n },\n max: yAxis?.maxValue === \"max\" ? \"dataMax\" : yAxis?.maxValue,\n min: yAxis?.minValue === \"min\" ? \"dataMin\" : yAxis?.minValue,\n },\n };\n }\n\n return {\n yAxis: yAxis.map<YAXisComponentOption>((axis) => ({\n id: axis?.id,\n type: getAxisType(axis?.type) ?? \"value\",\n name: axis?.name,\n axisLabel: {\n rotate: axis?.labelRotation ?? 0,\n formatter: axis?.labelFormatter,\n },\n max: axis?.maxValue === \"max\" ? \"dataMax\" : axis?.maxValue,\n min: axis?.minValue === \"min\" ? \"dataMin\" : axis?.minValue,\n })),\n };\n }, [yAxis, horizontal]);\n\n const getMeasure = (name: string, msr: HvBaseChartProps[\"measures\"]) => {\n const measureName = name.split(\"_\")[0];\n const measuresArray = Array.isArray(msr) ? msr : [msr];\n // find the measure in measures array or return the first one\n return (\n measuresArray.find((m) => {\n if (typeof m === \"string\") {\n return m === measureName;\n }\n return m.field === measureName;\n }) ?? measuresArray[0]\n );\n };\n\n const chartSeries = useMemo<Pick<EChartsOption, \"series\">>(() => {\n return {\n series: chartData\n .columnNames()\n .filter((c) => c !== groupByKey)\n .map<LineSeriesOption | BarSeriesOption>((c) => {\n const measure = getMeasure(c, measures);\n\n const showSymbol =\n typeof measure !== \"string\" ? !measure.hideSymbol : true;\n const sampling =\n typeof measure !== \"string\" ? measure.sampling : undefined;\n const yAxisId =\n typeof measure !== \"string\" ? measure.yAxis : undefined;\n const isArea =\n typeof measure !== \"string\" ? measure.area ?? area : area;\n const aOpacity =\n typeof measure !== \"string\"\n ? measure.areaOpacity ?? areaOpacity\n : areaOpacity;\n const stackName =\n typeof measure !== \"string\"\n ? measure.stack ?? stack ?? undefined\n : stack ?? undefined;\n const connectNulls =\n typeof measure !== \"string\" && measure.emptyCellMode\n ? measure.emptyCellMode === \"connect\"\n : emptyCellMode === \"connect\";\n\n return {\n id: `series~${groupByKey}~${c}`,\n name: seriesNameFormatter ? seriesNameFormatter(c) : c,\n encode: horizontal\n ? {\n x: c,\n y: groupByKey,\n }\n : {\n x: groupByKey,\n y: c,\n },\n type,\n showSymbol,\n sampling,\n areaStyle: isArea ? { opacity: aOpacity } : undefined,\n connectNulls,\n stack: stackName,\n yAxisId,\n barMaxWidth: 90,\n barMinWidth: 3,\n };\n }),\n };\n }, [\n chartData,\n groupByKey,\n area,\n stack,\n seriesNameFormatter,\n emptyCellMode,\n areaOpacity,\n measures,\n type,\n horizontal,\n ]);\n\n const renderTooltip = useCallback(\n (\n params: EChartsTooltipParams[],\n single: boolean,\n msr: HvBaseChartProps[\"measures\"],\n reverse: boolean,\n cls?: typeof classes,\n valueFormatter?: (value?: string | number) => string,\n titleFormatter?: (value?: string | number) => string\n ) => {\n const title = reverse\n ? params[0].value[params[0].encode.y[0]]\n : params[0].value[params[0].encode.x[0]];\n const formattedTitle = titleFormatter ? titleFormatter(title) : title;\n\n if (single) {\n const measure = getMeasure(\n reverse\n ? params[0].dimensionNames[params[0].encode.x[0]]\n : params[0].dimensionNames[params[0].encode.y[0]],\n msr\n );\n const value = reverse\n ? params[0].value[params[0].encode.x[0]]\n : params[0].value[params[0].encode.y[0]];\n const formattedValue =\n typeof measure !== \"string\" && measure.valueFormatter\n ? measure.valueFormatter(value)\n : valueFormatter\n ? valueFormatter(value)\n : value;\n\n return `\n <div class=\"${cls?.singleTooltipRoot}\">\n <p class=\"${cls?.singleTooltipTitle}\">${formattedTitle}</p>\n <p class=\"${cls?.singleTooltipValue}\">${formattedValue}</p>\n </div>\n `;\n }\n\n return `\n <div class=\"${cls?.multipleTooltipRoot}\">\n <div class=\"${cls?.multipleTooltipTitleContainer}\">\n <div>\n <p class=\"${cls?.multipleTooltipTitle}\">${formattedTitle}</p>\n </div>\n </div>\n <div class=\"${cls?.multipleTooltipValuesContainer}\">\n ${params\n .map((s) => {\n const measure = getMeasure(\n reverse\n ? s.dimensionNames[s.encode.x[0]]\n : s.dimensionNames[s.encode.y[0]],\n msr\n );\n const value = reverse\n ? s.value[s.encode.x[0]]\n : s.value[s.encode.y[0]];\n const formattedValue =\n typeof measure !== \"string\" && measure.valueFormatter\n ? measure.valueFormatter(value)\n : valueFormatter\n ? valueFormatter(value)\n : value;\n\n return `\n <div key=\"${s.seriesName}\" class=\"${cls?.multipleTooltipSeriesContainer}\">\n <div class=\"${cls?.multipleTooltipSeriesNameContainer}\">\n <p style=\"background-color: ${s.color};\" class=\"${cls?.multipleTooltipSeriesColor}\" />\n <p class=\"${cls?.multipleTooltipSeriesName}\">${s.seriesName}</p>\n </div>\n <p class=\"${cls?.multipleTooltipSeriesValue}\">${formattedValue}</p>\n </div>\n `;\n })\n .join(\" \")}\n </div>\n </div>\n `;\n },\n []\n );\n\n const renderCustomTooltip = (\n params: EChartsTooltipParams[],\n reverse: boolean,\n customTooltip: Required<HvChartTooltip[\"component\"]>\n ) => {\n if (typeof customTooltip === \"function\") {\n const values: HvChartTooltipParams = {\n title: reverse\n ? params[0].value[params[0].encode.y[0]]\n : params[0].value[params[0].encode.x[0]],\n series: params.map((p) => {\n return {\n color: p.color,\n name: p.seriesName,\n value: reverse ? p.value[p.encode.x[0]] : p.value[p.encode.y[0]],\n };\n }),\n };\n\n return customTooltip(values);\n }\n\n return customTooltip;\n };\n\n const chartTooltip = useMemo<Pick<EChartsOption, \"tooltip\">>(() => {\n return {\n tooltip: {\n confine: false,\n show: tooltip?.show ?? true,\n trigger: \"axis\",\n position: (point, params, dom, rect, size) => {\n return [point[0], point[1] - size.contentSize[1]];\n },\n formatter: (params) =>\n tooltip?.component\n ? renderCustomTooltip(params, horizontal, tooltip.component)\n : renderTooltip(\n params,\n tooltip?.type === \"single\",\n measures,\n horizontal,\n classes,\n tooltip?.valueFormatter,\n tooltip?.titleFormatter\n ),\n },\n };\n }, [tooltip, classes, measures, horizontal, renderTooltip]);\n\n const chartLegend = useMemo<Pick<EChartsOption, \"legend\">>(() => {\n return {\n legend: {\n show:\n legend?.show ??\n (Array.isArray(chartSeries.series) && chartSeries.series.length > 1),\n itemGap: 20,\n data:\n legend?.show !== false && Array.isArray(chartSeries.series)\n ? chartSeries.series.map((s) => {\n return {\n name: s.name as string,\n icon: getLegendIcon(\n (s as any).areaStyle != null || s.type === \"bar\"\n ),\n };\n })\n : undefined,\n },\n };\n }, [chartSeries, legend]);\n\n const chartHorizontalRangerSlider = useMemo<\n Pick<EChartsOption, \"dataZoom\">\n >(() => {\n return {\n dataZoom: [\n {\n show: horizontalRangeSlider?.show ?? false,\n type: \"slider\",\n orient: \"horizontal\",\n },\n {\n show: horizontalRangeSlider?.show ?? false,\n type: \"inside\",\n orient: \"horizontal\",\n zoomOnMouseWheel: \"shift\",\n moveOnMouseWheel: true,\n },\n ],\n };\n }, [horizontalRangeSlider]);\n\n const chartGrid = useMemo(() => {\n return {\n // if no value is defined we shouldn't pass anything because echarts doesn't behave well otherwise\n grid: {\n ...(grid?.top != null && {\n top: grid.top,\n }),\n ...(grid?.bottom != null && {\n bottom: grid.bottom,\n }),\n ...(grid?.left != null && {\n left: grid.left,\n }),\n ...(grid?.right != null && {\n right: grid.right,\n }),\n },\n };\n }, [grid]);\n\n const [initialOption, setInitialOption] = useState<EChartsOption>({\n aria: {\n enabled: true,\n },\n animation: false,\n ...chartDataset,\n ...chartXAxis,\n ...chartYAxis,\n ...chartSeries,\n ...chartTooltip,\n ...chartLegend,\n ...chartHorizontalRangerSlider,\n ...chartGrid,\n });\n\n useEffect(() => {\n if (!isMounted.current) {\n isMounted.current = true;\n return;\n }\n\n // when the theme changes echarts destroys the chart and mounts it again\n // thus we need to reset the initial option\n if (theme !== currentTheme.current) {\n setInitialOption({\n aria: {\n enabled: true,\n },\n animation: false,\n ...chartDataset,\n ...chartXAxis,\n ...chartYAxis,\n ...chartSeries,\n ...chartTooltip,\n ...chartLegend,\n ...chartHorizontalRangerSlider,\n ...chartGrid,\n });\n currentTheme.current = theme;\n return;\n }\n\n chartRef.current?.getEchartsInstance().setOption(\n {\n ...chartDataset,\n ...chartXAxis,\n ...chartYAxis,\n ...chartSeries,\n ...chartLegend,\n ...chartTooltip,\n ...chartHorizontalRangerSlider,\n ...chartGrid,\n },\n {\n replaceMerge: [\"xAxis\", \"yAxis\", \"series\", \"dataset\"],\n }\n );\n }, [\n theme,\n chartDataset,\n chartXAxis,\n chartYAxis,\n chartSeries,\n chartLegend,\n chartTooltip,\n chartHorizontalRangerSlider,\n chartGrid,\n ]);\n\n return (\n <ReactECharts\n ref={chartRef}\n echarts={echarts}\n option={initialOption}\n theme={theme}\n notMerge\n />\n );\n};\n"],"names":["echarts","use","BarChart","LineChart","CanvasRenderer","DatasetComponent","GridComponent","AriaComponent","TooltipComponent","LegendComponent","DataZoomSliderComponent","DataZoomInsideComponent","HvBaseChart","type","data","groupBy","splitBy","measures","sortBy","xAxis","yAxis","legend","tooltip","seriesNameFormatter","area","stack","emptyCellMode","horizontalRangeSlider","areaOpacity","classes","classesProp","grid","horizontal","theme","useVizTheme","useClasses","currentTheme","useRef","chartRef","isMounted","groupByKey","Array","isArray","join","chartData","useMemo","tableData","internal","ColumnTable","from","table","groupByFields","splitByFields","measuresFields","getAgFunc","reduce","acc","value","field","agFunction","agg","sortByFields","orderFunction","order","allFields","Object","keys","select","length","groupby","pivot","rollup","expression","map","derive","after","orderby","filter","key","includes","desc","not","chartDataset","dataset","source","columnNames","c","array","chartXAxis","id","getAxisType","name","scale","axisLabel","rotate","labelRotation","formatter","labelFormatter","max","maxValue","min","minValue","chartYAxis","axis","getMeasure","msr","measureName","split","measuresArray","find","m","chartSeries","series","measure","showSymbol","hideSymbol","sampling","undefined","yAxisId","isArea","aOpacity","stackName","connectNulls","encode","x","y","areaStyle","opacity","barMaxWidth","barMinWidth","renderTooltip","useCallback","params","single","reverse","cls","valueFormatter","titleFormatter","title","formattedTitle","dimensionNames","formattedValue","singleTooltipRoot","singleTooltipTitle","singleTooltipValue","multipleTooltipRoot","multipleTooltipTitleContainer","multipleTooltipTitle","multipleTooltipValuesContainer","s","seriesName","multipleTooltipSeriesContainer","multipleTooltipSeriesNameContainer","color","multipleTooltipSeriesColor","multipleTooltipSeriesName","multipleTooltipSeriesValue","renderCustomTooltip","customTooltip","values","p","chartTooltip","confine","show","trigger","position","point","dom","rect","size","contentSize","component","chartLegend","itemGap","icon","getLegendIcon","chartHorizontalRangerSlider","dataZoom","orient","zoomOnMouseWheel","moveOnMouseWheel","chartGrid","top","bottom","left","right","initialOption","setInitialOption","useState","aria","enabled","animation","useEffect","current","getEchartsInstance","setOption","replaceMerge","ReactECharts","ref","option","notMerge"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"BaseChart.js","sources":["../../../../src/components/BaseChart/BaseChart.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n DatasetComponent,\n GridComponent,\n TooltipComponent,\n AriaComponent,\n LegendComponent,\n DataZoomSliderComponent,\n DataZoomInsideComponent,\n} from \"echarts/components\";\nimport { CanvasRenderer } from \"echarts/renderers\";\nimport * as echarts from \"echarts/core\";\nimport {\n BarChart,\n BarSeriesOption,\n LineChart,\n LineSeriesOption,\n} from \"echarts/charts\";\nimport type { YAXisComponentOption } from \"echarts/types/dist/echarts\";\n\nimport ReactECharts from \"echarts-for-react/lib/core\";\nimport type { EChartsOption } from \"echarts-for-react/lib/types\";\n\nimport { from, internal, not, table, desc } from \"arquero\";\nimport type ColumnTable from \"arquero/dist/types/table/column-table\";\n\nimport { ExtractNames, Arrayable } from \"@hitachivantara/uikit-react-core\";\n\nimport {\n HvChartAggregation,\n HvChartOrder,\n HvChartAxis,\n HvChartEmptyCellMode,\n HvChartSampling,\n HvChartTooltip,\n HvChartTooltipParams,\n HvChartGrid,\n} from \"@viz/types\";\nimport { getAgFunc, getAxisType, getLegendIcon } from \"@viz/utils\";\nimport { useVizTheme } from \"@viz/hooks\";\nimport { useClasses } from \"./BaseChart.styles\";\n\n// Register chart components\necharts.use([\n BarChart,\n LineChart,\n CanvasRenderer,\n DatasetComponent,\n GridComponent,\n AriaComponent,\n TooltipComponent,\n LegendComponent,\n DataZoomSliderComponent,\n DataZoomInsideComponent,\n]);\n\nexport type HvBaseChartClasses = Partial<ExtractNames<typeof useClasses>>;\n\ntype GroupByField = string;\ntype SplitByField = string;\n\ntype FullSortByField = {\n /** Column name. */\n field: string;\n /** Order function to use. If no `order` is defined, it will default to `asc`. */\n order?: HvChartOrder;\n};\ntype SortByField = string | FullSortByField;\n\ninterface BaseFullMeasuresField {\n /** Column name. */\n field: string;\n /** Sampling function to use. */\n sampling?: HvChartSampling;\n /** Id of the yAxis. */\n yAxis?: string;\n /** Aggregation function to use. If no `agg` is defined, it will default to `sum`. */\n agg?: HvChartAggregation;\n /**\n * Stack name to use when the measure should be stacked.\n *\n * Measures stacked together have the same name.\n *\n * If not specified, it defaults to the global `stacked` prop.\n */\n stack?: string;\n /** Strategy to use when there are empty cells. If not specified, it defaults to the global `emptyCellMode` prop. */\n valueFormatter?: (value?: string | number) => string;\n}\n\ninterface LineFullMeasuresField extends BaseFullMeasuresField {\n /** Whether to hide the symbol for data points. Defaults to `false`. */\n hideSymbol?: boolean;\n /** Whether the area under the lines should be filled. If not specified, it defaults to the global `area` prop. */\n area?: boolean;\n /** Sets opacity of the filled area if `area` is true. If not specified, it defaults to the global `areaOpacity` prop. */\n areaOpacity?: number;\n /** Strategy to use when there are empty cells. If not specified, it defaults to the global `emptyCellMode` prop. */\n emptyCellMode?: HvChartEmptyCellMode;\n}\n\ntype LineMeasuresField = string | LineFullMeasuresField;\n\ntype BarMeasuresField = string | BaseFullMeasuresField;\n\n/** Line and bar chart common props */\nexport interface HvBaseChartCommonProps {\n /** Chart data. */\n data:\n | Map<string | number, (string | number)[]>\n | Record<string | number, (string | number)[]>\n | Record<string | number, string | number>[]\n | ColumnTable;\n /** Columns to use to group the data. */\n groupBy: Arrayable<GroupByField>;\n /** Columns to use to split the measures. */\n splitBy?: Arrayable<SplitByField>;\n /** Columns to use to sort the data points. */\n sortBy?: Arrayable<SortByField>;\n /** Options for the xAxis, i.e. the horizontal axis. */\n xAxis?: HvChartAxis;\n /** Options for the yAxis, i.e. the vertical axis. */\n yAxis?: HvChartAxis | [HvChartAxis, HvChartAxis];\n /** Tooltip options. */\n tooltip?: HvChartTooltip;\n /** Legend options. */\n legend?: {\n /** Whether to show the legend or not. The legend will appear by default for multiple series. Otherwise, the legend will not be shown. */\n show?: boolean;\n };\n /** Formatter for the series names used on the tooltips and legend. */\n seriesNameFormatter?: (value?: string) => string;\n /** Stack name to use when all the series should be stacked together. If not provided, the series are not stacked. */\n stack?: string;\n /** Ranger slider options for the horizontal axis. */\n horizontalRangeSlider?: {\n /** Whether to show the ranger slider or not. Defaults to `false`. */\n show?: boolean;\n };\n /** Grid options. */\n grid?: HvChartGrid;\n}\n\n/** Line chart props only */\nexport interface HvBaseChartLineProps {\n /** Columns to measure on the chart. */\n measures: Arrayable<LineMeasuresField>;\n /** Strategy to use when there are empty cells. Defaults to `void`. */\n emptyCellMode?: HvChartEmptyCellMode;\n /** Whether the area under the lines should be filled. Defaults to `false`. */\n area?: boolean;\n /** Sets opacity of the filled area if `area` is true. Defaults to `0.5`. */\n areaOpacity?: number;\n}\n\n/** Bar chart props only */\nexport interface HvBaseChartBarProps {\n /** Columns to measure on the chart. */\n measures: Arrayable<BarMeasuresField>;\n /** Whether the bar chart should be horizontal. Defaults to `false`. */\n horizontal?: boolean;\n}\n\n/** Base chart only props */\ninterface HvBaseChartOnlyProps {\n /** Chart type. */\n type: \"line\" | \"bar\";\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvBaseChartClasses;\n}\n\nexport interface HvBaseChartProps\n extends HvBaseChartCommonProps,\n Omit<HvBaseChartLineProps, \"measures\">,\n Omit<HvBaseChartBarProps, \"measures\">,\n HvBaseChartOnlyProps {\n /** Columns to measure on the chart. */\n measures: Arrayable<string | (BaseFullMeasuresField & LineFullMeasuresField)>;\n}\n\n/** Echarts doesn't seem to have the type for the tooltip params */\ninterface EChartsTooltipParams {\n seriesName: string;\n value: (string | number)[];\n encode: { [key: string]: number[] };\n color: string;\n dimensionNames: string[];\n}\n\n/**\n * Base chart for the line and bar chart.\n */\nexport const HvBaseChart = ({\n type,\n data,\n groupBy,\n splitBy,\n measures,\n sortBy,\n xAxis,\n yAxis,\n legend,\n tooltip,\n seriesNameFormatter,\n area = false,\n stack,\n emptyCellMode = \"void\",\n horizontalRangeSlider,\n areaOpacity = 0.5,\n classes: classesProp = {},\n grid,\n horizontal = false,\n}: HvBaseChartProps) => {\n const { theme } = useVizTheme();\n const { classes } = useClasses(classesProp);\n\n const currentTheme = useRef<string | undefined>(theme);\n const chartRef = useRef<ReactECharts>(null);\n const isMounted = useRef<boolean>(false);\n\n const groupByKey = Array.isArray(groupBy) ? groupBy.join(\"_\") : groupBy;\n\n const chartData = useMemo<ColumnTable>(() => {\n let tableData: ColumnTable;\n if (data instanceof internal.ColumnTable) {\n tableData = data;\n } else if (Array.isArray(data)) {\n tableData = from(data);\n } else {\n tableData = table(data);\n }\n\n const groupByFields = groupBy\n ? Array.isArray(groupBy)\n ? groupBy\n : [groupBy]\n : [];\n\n const splitByFields = Array.isArray(splitBy)\n ? splitBy\n : splitBy != null\n ? [splitBy]\n : [];\n\n const measuresFields: { [key: string]: string } =\n measures == null\n ? {}\n : typeof measures === \"string\"\n ? { [measures]: getAgFunc(\"sum\", measures) }\n : Array.isArray(measures)\n ? measures.reduce<{ [key: string]: string }>((acc, value) => {\n let field: string;\n let agFunction: HvChartAggregation;\n if (typeof value === \"string\") {\n field = value;\n agFunction = \"sum\";\n } else {\n field = value.field;\n agFunction = value.agg ?? \"sum\";\n }\n\n return {\n ...acc,\n [field]: getAgFunc(agFunction, field),\n };\n }, {})\n : {\n [measures.field]: getAgFunc(measures.agg ?? \"sum\", measures.field),\n };\n\n const sortByFields: { [key: string]: HvChartOrder } =\n sortBy == null\n ? {}\n : typeof sortBy === \"string\"\n ? { [sortBy]: \"asc\" }\n : Array.isArray(sortBy)\n ? sortBy.reduce<{ [key: string]: HvChartOrder }>((acc, value) => {\n let field: string;\n let orderFunction: HvChartOrder;\n if (typeof value === \"string\") {\n field = value;\n orderFunction = \"asc\";\n } else {\n field = value.field;\n orderFunction = value.order ?? \"asc\";\n }\n\n return {\n ...acc,\n [field]: orderFunction,\n };\n }, {})\n : { [sortBy.field]: sortBy.order ?? \"asc\" };\n\n const allFields = [\n ...groupByFields,\n ...splitByFields,\n ...Object.keys(measuresFields),\n ];\n\n // remove unneeded fields\n tableData = tableData.select(...allFields);\n\n // group by groupBy fields\n if (groupByFields.length > 0) {\n tableData = tableData.groupby(groupByFields);\n }\n\n if (splitByFields.length > 0) {\n // pivot by splitBy fields\n tableData = tableData.pivot(splitByFields, measuresFields);\n } else {\n // if there is no splitBy fields, just aggregate measures fields\n tableData = tableData.rollup(measuresFields);\n }\n\n // if grouped by multiple fields, create a new joint field\n // as the line chart doesn't implement hierarchical axis label grouping\n if (groupByFields.length > 1) {\n const expression = `d => ${groupByFields\n .map((field) => `d.${field}`)\n .join(\" + '_' + \")}`;\n\n tableData = tableData.derive(\n { [groupByKey]: expression },\n { after: groupByFields[groupByFields.length - 1] }\n );\n }\n\n // sort by sortBy fields\n if (Object.keys(sortByFields).length > 0) {\n tableData = tableData.orderby(\n ...Object.keys(sortByFields)\n // only sort by fields that are in the table, ignore the rest\n .filter((key) => allFields.includes(key))\n .map((key) => (sortByFields[key] === \"desc\" ? desc(key) : key))\n );\n }\n\n // if a derived field was created, remove the original fields\n if (groupByFields.length > 1) {\n tableData = tableData.select(not(...groupByFields));\n }\n\n return tableData;\n }, [data, groupBy, groupByKey, splitBy, measures, sortBy]);\n\n const chartDataset = useMemo<Pick<EChartsOption, \"dataset\">>(() => {\n return {\n dataset: {\n source: chartData.columnNames().reduce(\n (acc, c) => ({\n ...acc,\n [c]: chartData.array(c),\n }),\n {}\n ),\n },\n };\n }, [chartData]);\n\n const chartXAxis = useMemo<Pick<EChartsOption, \"xAxis\">>(() => {\n return {\n xAxis: {\n id: xAxis?.id,\n type: getAxisType(xAxis?.type) ?? (horizontal ? \"value\" : \"category\"),\n name: xAxis?.name,\n scale: !(type === \"bar\"),\n axisLabel: {\n rotate: xAxis?.labelRotation ?? 0,\n formatter: xAxis?.labelFormatter,\n },\n max: xAxis?.maxValue === \"max\" ? \"dataMax\" : xAxis?.maxValue,\n min: xAxis?.minValue === \"min\" ? \"dataMin\" : xAxis?.minValue,\n },\n };\n }, [xAxis, type, horizontal]);\n\n const chartYAxis = useMemo<Pick<EChartsOption, \"yAxis\">>(() => {\n if (!yAxis || !Array.isArray(yAxis)) {\n return {\n yAxis: {\n id: yAxis?.id,\n type: getAxisType(yAxis?.type) ?? (horizontal ? \"category\" : \"value\"),\n name: yAxis?.name,\n axisLabel: {\n rotate: yAxis?.labelRotation ?? 0,\n formatter: yAxis?.labelFormatter,\n },\n max: yAxis?.maxValue === \"max\" ? \"dataMax\" : yAxis?.maxValue,\n min: yAxis?.minValue === \"min\" ? \"dataMin\" : yAxis?.minValue,\n },\n };\n }\n\n return {\n yAxis: yAxis.map<YAXisComponentOption>((axis) => ({\n id: axis?.id,\n type: getAxisType(axis?.type) ?? \"value\",\n name: axis?.name,\n axisLabel: {\n rotate: axis?.labelRotation ?? 0,\n formatter: axis?.labelFormatter,\n },\n max: axis?.maxValue === \"max\" ? \"dataMax\" : axis?.maxValue,\n min: axis?.minValue === \"min\" ? \"dataMin\" : axis?.minValue,\n })),\n };\n }, [yAxis, horizontal]);\n\n const getMeasure = (name: string, msr: HvBaseChartProps[\"measures\"]) => {\n const measureName = name.split(\"_\")[0];\n const measuresArray = Array.isArray(msr) ? msr : [msr];\n // find the measure in measures array or return the first one\n return (\n measuresArray.find((m) => {\n if (typeof m === \"string\") {\n return m === measureName;\n }\n return m.field === measureName;\n }) ?? measuresArray[0]\n );\n };\n\n const chartSeries = useMemo<Pick<EChartsOption, \"series\">>(() => {\n return {\n series: chartData\n .columnNames()\n .filter((c) => c !== groupByKey)\n .map<LineSeriesOption | BarSeriesOption>((c) => {\n const measure = getMeasure(c, measures);\n\n const showSymbol =\n typeof measure !== \"string\" ? !measure.hideSymbol : true;\n const sampling =\n typeof measure !== \"string\" ? measure.sampling : undefined;\n const yAxisId =\n typeof measure !== \"string\" ? measure.yAxis : undefined;\n const isArea =\n typeof measure !== \"string\" ? measure.area ?? area : area;\n const aOpacity =\n typeof measure !== \"string\"\n ? measure.areaOpacity ?? areaOpacity\n : areaOpacity;\n const stackName =\n typeof measure !== \"string\"\n ? measure.stack ?? stack ?? undefined\n : stack ?? undefined;\n const connectNulls =\n typeof measure !== \"string\" && measure.emptyCellMode\n ? measure.emptyCellMode === \"connect\"\n : emptyCellMode === \"connect\";\n\n return {\n id: `series~${groupByKey}~${c}`,\n name: seriesNameFormatter ? seriesNameFormatter(c) : c,\n encode: horizontal\n ? {\n x: c,\n y: groupByKey,\n }\n : {\n x: groupByKey,\n y: c,\n },\n type,\n showSymbol,\n sampling,\n areaStyle: isArea ? { opacity: aOpacity } : undefined,\n connectNulls,\n stack: stackName,\n yAxisId,\n barMaxWidth: 90,\n barMinWidth: 3,\n };\n }),\n };\n }, [\n chartData,\n groupByKey,\n area,\n stack,\n seriesNameFormatter,\n emptyCellMode,\n areaOpacity,\n measures,\n type,\n horizontal,\n ]);\n\n const renderTooltip = useCallback(\n (\n params: EChartsTooltipParams[],\n single: boolean,\n msr: HvBaseChartProps[\"measures\"],\n reverse: boolean,\n cls?: typeof classes,\n valueFormatter?: (value?: string | number) => string,\n titleFormatter?: (value?: string | number) => string\n ) => {\n const title = reverse\n ? params[0].value[params[0].encode.y[0]]\n : params[0].value[params[0].encode.x[0]];\n const formattedTitle = titleFormatter ? titleFormatter(title) : title;\n\n if (single) {\n const measure = getMeasure(\n reverse\n ? params[0].dimensionNames[params[0].encode.x[0]]\n : params[0].dimensionNames[params[0].encode.y[0]],\n msr\n );\n const value = reverse\n ? params[0].value[params[0].encode.x[0]]\n : params[0].value[params[0].encode.y[0]];\n const formattedValue =\n typeof measure !== \"string\" && measure.valueFormatter\n ? measure.valueFormatter(value)\n : valueFormatter\n ? valueFormatter(value)\n : value;\n\n return `\n <div class=\"${cls?.singleTooltipRoot}\">\n <p class=\"${cls?.singleTooltipTitle}\">${formattedTitle}</p>\n <p class=\"${cls?.singleTooltipValue}\">${formattedValue}</p>\n </div>\n `;\n }\n\n return `\n <div class=\"${cls?.multipleTooltipRoot}\">\n <div class=\"${cls?.multipleTooltipTitleContainer}\">\n <div>\n <p class=\"${cls?.multipleTooltipTitle}\">${formattedTitle}</p>\n </div>\n </div>\n <div class=\"${cls?.multipleTooltipValuesContainer}\">\n ${params\n .map((s) => {\n const measure = getMeasure(\n reverse\n ? s.dimensionNames[s.encode.x[0]]\n : s.dimensionNames[s.encode.y[0]],\n msr\n );\n const value = reverse\n ? s.value[s.encode.x[0]]\n : s.value[s.encode.y[0]];\n const formattedValue =\n typeof measure !== \"string\" && measure.valueFormatter\n ? measure.valueFormatter(value)\n : valueFormatter\n ? valueFormatter(value)\n : value;\n\n return `\n <div key=\"${s.seriesName}\" class=\"${cls?.multipleTooltipSeriesContainer}\">\n <div class=\"${cls?.multipleTooltipSeriesNameContainer}\">\n <p style=\"background-color: ${s.color};\" class=\"${cls?.multipleTooltipSeriesColor}\" />\n <p class=\"${cls?.multipleTooltipSeriesName}\">${s.seriesName}</p>\n </div>\n <p class=\"${cls?.multipleTooltipSeriesValue}\">${formattedValue}</p>\n </div>\n `;\n })\n .join(\" \")}\n </div>\n </div>\n `;\n },\n []\n );\n\n const renderCustomTooltip = (\n params: EChartsTooltipParams[],\n reverse: boolean,\n customTooltip: Required<HvChartTooltip[\"component\"]>\n ) => {\n if (typeof customTooltip === \"function\") {\n const values: HvChartTooltipParams = {\n title: reverse\n ? params[0].value[params[0].encode.y[0]]\n : params[0].value[params[0].encode.x[0]],\n series: params.map((p) => {\n return {\n color: p.color,\n name: p.seriesName,\n value: reverse ? p.value[p.encode.x[0]] : p.value[p.encode.y[0]],\n };\n }),\n };\n\n return customTooltip(values);\n }\n\n return customTooltip;\n };\n\n const chartTooltip = useMemo<Pick<EChartsOption, \"tooltip\">>(() => {\n return {\n tooltip: {\n confine: false,\n show: tooltip?.show ?? true,\n trigger: \"axis\",\n position: (point, params, dom, rect, size) => {\n return [point[0], point[1] - size.contentSize[1]];\n },\n formatter: (params) =>\n tooltip?.component\n ? renderCustomTooltip(params, horizontal, tooltip.component)\n : renderTooltip(\n params,\n tooltip?.type === \"single\",\n measures,\n horizontal,\n classes,\n tooltip?.valueFormatter,\n tooltip?.titleFormatter\n ),\n },\n };\n }, [tooltip, classes, measures, horizontal, renderTooltip]);\n\n const chartLegend = useMemo<Pick<EChartsOption, \"legend\">>(() => {\n return {\n legend: {\n show:\n legend?.show ??\n (Array.isArray(chartSeries.series) && chartSeries.series.length > 1),\n itemGap: 20,\n data:\n legend?.show !== false && Array.isArray(chartSeries.series)\n ? chartSeries.series.map((s) => {\n return {\n name: s.name as string,\n icon: getLegendIcon(\n (s as any).areaStyle != null || s.type === \"bar\"\n ),\n };\n })\n : undefined,\n },\n };\n }, [chartSeries, legend]);\n\n const chartHorizontalRangerSlider = useMemo<\n Pick<EChartsOption, \"dataZoom\">\n >(() => {\n return {\n dataZoom: [\n {\n show: horizontalRangeSlider?.show ?? false,\n type: \"slider\",\n orient: \"horizontal\",\n },\n {\n show: horizontalRangeSlider?.show ?? false,\n type: \"inside\",\n orient: \"horizontal\",\n zoomOnMouseWheel: \"shift\",\n moveOnMouseWheel: true,\n },\n ],\n };\n }, [horizontalRangeSlider]);\n\n const chartGrid = useMemo(() => {\n return {\n // if no value is defined we shouldn't pass anything because echarts doesn't behave well otherwise\n grid: {\n ...(grid?.top != null && {\n top: grid.top,\n }),\n ...(grid?.bottom != null && {\n bottom: grid.bottom,\n }),\n ...(grid?.left != null && {\n left: grid.left,\n }),\n ...(grid?.right != null && {\n right: grid.right,\n }),\n },\n };\n }, [grid]);\n\n const [initialOption, setInitialOption] = useState<EChartsOption>({\n aria: {\n enabled: true,\n },\n animation: false,\n ...chartDataset,\n ...chartXAxis,\n ...chartYAxis,\n ...chartSeries,\n ...chartTooltip,\n ...chartLegend,\n ...chartHorizontalRangerSlider,\n ...chartGrid,\n });\n\n useEffect(() => {\n if (!isMounted.current) {\n isMounted.current = true;\n return;\n }\n\n // when the theme changes echarts destroys the chart and mounts it again\n // thus we need to reset the initial option\n if (theme !== currentTheme.current) {\n setInitialOption({\n aria: {\n enabled: true,\n },\n animation: false,\n ...chartDataset,\n ...chartXAxis,\n ...chartYAxis,\n ...chartSeries,\n ...chartTooltip,\n ...chartLegend,\n ...chartHorizontalRangerSlider,\n ...chartGrid,\n });\n currentTheme.current = theme;\n return;\n }\n\n chartRef.current?.getEchartsInstance().setOption(\n {\n ...chartDataset,\n ...chartXAxis,\n ...chartYAxis,\n ...chartSeries,\n ...chartLegend,\n ...chartTooltip,\n ...chartHorizontalRangerSlider,\n ...chartGrid,\n },\n {\n replaceMerge: [\"xAxis\", \"yAxis\", \"series\", \"dataset\"],\n }\n );\n }, [\n theme,\n chartDataset,\n chartXAxis,\n chartYAxis,\n chartSeries,\n chartLegend,\n chartTooltip,\n chartHorizontalRangerSlider,\n chartGrid,\n ]);\n\n return (\n <ReactECharts\n ref={chartRef}\n echarts={echarts}\n option={initialOption}\n theme={theme}\n notMerge\n />\n );\n};\n"],"names":["echarts","use","BarChart","LineChart","CanvasRenderer","DatasetComponent","GridComponent","AriaComponent","TooltipComponent","LegendComponent","DataZoomSliderComponent","DataZoomInsideComponent","HvBaseChart","type","data","groupBy","splitBy","measures","sortBy","xAxis","yAxis","legend","tooltip","seriesNameFormatter","area","stack","emptyCellMode","horizontalRangeSlider","areaOpacity","classes","classesProp","grid","horizontal","theme","useVizTheme","useClasses","currentTheme","useRef","chartRef","isMounted","groupByKey","Array","isArray","join","chartData","useMemo","tableData","internal","ColumnTable","from","table","groupByFields","splitByFields","measuresFields","getAgFunc","reduce","acc","value","field","agFunction","agg","sortByFields","orderFunction","order","allFields","Object","keys","select","length","groupby","pivot","rollup","expression","map","derive","after","orderby","filter","key","includes","desc","not","chartDataset","dataset","source","columnNames","c","array","chartXAxis","id","getAxisType","name","scale","axisLabel","rotate","labelRotation","formatter","labelFormatter","max","maxValue","min","minValue","chartYAxis","axis","getMeasure","msr","measureName","split","measuresArray","find","m","chartSeries","series","measure","showSymbol","hideSymbol","sampling","undefined","yAxisId","isArea","aOpacity","stackName","connectNulls","encode","x","y","areaStyle","opacity","barMaxWidth","barMinWidth","renderTooltip","useCallback","params","single","reverse","cls","valueFormatter","titleFormatter","title","formattedTitle","dimensionNames","formattedValue","singleTooltipRoot","singleTooltipTitle","singleTooltipValue","multipleTooltipRoot","multipleTooltipTitleContainer","multipleTooltipTitle","multipleTooltipValuesContainer","s","seriesName","multipleTooltipSeriesContainer","multipleTooltipSeriesNameContainer","color","multipleTooltipSeriesColor","multipleTooltipSeriesName","multipleTooltipSeriesValue","renderCustomTooltip","customTooltip","values","p","chartTooltip","confine","show","trigger","position","point","dom","rect","size","contentSize","component","chartLegend","itemGap","icon","getLegendIcon","chartHorizontalRangerSlider","dataZoom","orient","zoomOnMouseWheel","moveOnMouseWheel","chartGrid","top","bottom","left","right","initialOption","setInitialOption","useState","aria","enabled","animation","useEffect","current","getEchartsInstance","setOption","replaceMerge","ReactECharts","ref","option","notMerge"],"mappings":"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"}
1
+ {"version":3,"file":"BaseChart.js","sources":["../../../../src/components/BaseChart/BaseChart.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n DatasetComponent,\n GridComponent,\n TooltipComponent,\n AriaComponent,\n LegendComponent,\n DataZoomSliderComponent,\n DataZoomInsideComponent,\n} from \"echarts/components\";\nimport { CanvasRenderer } from \"echarts/renderers\";\nimport * as echarts from \"echarts/core\";\nimport {\n BarChart,\n BarSeriesOption,\n LineChart,\n LineSeriesOption,\n} from \"echarts/charts\";\nimport type { YAXisComponentOption } from \"echarts/types/dist/echarts\";\n\nimport ReactECharts from \"echarts-for-react/lib/core\";\nimport type { EChartsOption } from \"echarts-for-react/lib/types\";\n\nimport { from, internal, not, table, desc } from \"arquero\";\nimport type ColumnTable from \"arquero/dist/types/table/column-table\";\n\nimport { ExtractNames, Arrayable } from \"@hitachivantara/uikit-react-core\";\n\nimport {\n HvChartAggregation,\n HvChartOrder,\n HvChartAxis,\n HvChartEmptyCellMode,\n HvChartSampling,\n HvChartTooltip,\n HvChartTooltipParams,\n HvChartGrid,\n} from \"@viz/types\";\nimport { getAgFunc, getAxisType, getLegendIcon } from \"@viz/utils\";\nimport { useVizTheme } from \"@viz/hooks\";\nimport { useClasses } from \"./BaseChart.styles\";\n\n// Register chart components\necharts.use([\n BarChart,\n LineChart,\n CanvasRenderer,\n DatasetComponent,\n GridComponent,\n AriaComponent,\n TooltipComponent,\n LegendComponent,\n DataZoomSliderComponent,\n DataZoomInsideComponent,\n]);\n\nexport type HvBaseChartClasses = ExtractNames<typeof useClasses>;\n\ntype GroupByField = string;\ntype SplitByField = string;\n\ntype FullSortByField = {\n /** Column name. */\n field: string;\n /** Order function to use. If no `order` is defined, it will default to `asc`. */\n order?: HvChartOrder;\n};\ntype SortByField = string | FullSortByField;\n\ninterface BaseFullMeasuresField {\n /** Column name. */\n field: string;\n /** Sampling function to use. */\n sampling?: HvChartSampling;\n /** Id of the yAxis. */\n yAxis?: string;\n /** Aggregation function to use. If no `agg` is defined, it will default to `sum`. */\n agg?: HvChartAggregation;\n /**\n * Stack name to use when the measure should be stacked.\n *\n * Measures stacked together have the same name.\n *\n * If not specified, it defaults to the global `stacked` prop.\n */\n stack?: string;\n /** Strategy to use when there are empty cells. If not specified, it defaults to the global `emptyCellMode` prop. */\n valueFormatter?: (value?: string | number) => string;\n}\n\ninterface LineFullMeasuresField extends BaseFullMeasuresField {\n /** Whether to hide the symbol for data points. Defaults to `false`. */\n hideSymbol?: boolean;\n /** Whether the area under the lines should be filled. If not specified, it defaults to the global `area` prop. */\n area?: boolean;\n /** Sets opacity of the filled area if `area` is true. If not specified, it defaults to the global `areaOpacity` prop. */\n areaOpacity?: number;\n /** Strategy to use when there are empty cells. If not specified, it defaults to the global `emptyCellMode` prop. */\n emptyCellMode?: HvChartEmptyCellMode;\n}\n\ntype LineMeasuresField = string | LineFullMeasuresField;\n\ntype BarMeasuresField = string | BaseFullMeasuresField;\n\n/** Line and bar chart common props */\nexport interface HvBaseChartCommonProps {\n /** Chart data. */\n data:\n | Map<string | number, (string | number)[]>\n | Record<string | number, (string | number)[]>\n | Record<string | number, string | number>[]\n | ColumnTable;\n /** Columns to use to group the data. */\n groupBy: Arrayable<GroupByField>;\n /** Columns to use to split the measures. */\n splitBy?: Arrayable<SplitByField>;\n /** Columns to use to sort the data points. */\n sortBy?: Arrayable<SortByField>;\n /** Options for the xAxis, i.e. the horizontal axis. */\n xAxis?: HvChartAxis;\n /** Options for the yAxis, i.e. the vertical axis. */\n yAxis?: HvChartAxis | [HvChartAxis, HvChartAxis];\n /** Tooltip options. */\n tooltip?: HvChartTooltip;\n /** Legend options. */\n legend?: {\n /** Whether to show the legend or not. The legend will appear by default for multiple series. Otherwise, the legend will not be shown. */\n show?: boolean;\n };\n /** Formatter for the series names used on the tooltips and legend. */\n seriesNameFormatter?: (value?: string) => string;\n /** Stack name to use when all the series should be stacked together. If not provided, the series are not stacked. */\n stack?: string;\n /** Ranger slider options for the horizontal axis. */\n horizontalRangeSlider?: {\n /** Whether to show the ranger slider or not. Defaults to `false`. */\n show?: boolean;\n };\n /** Grid options. */\n grid?: HvChartGrid;\n}\n\n/** Line chart props only */\nexport interface HvBaseChartLineProps {\n /** Columns to measure on the chart. */\n measures: Arrayable<LineMeasuresField>;\n /** Strategy to use when there are empty cells. Defaults to `void`. */\n emptyCellMode?: HvChartEmptyCellMode;\n /** Whether the area under the lines should be filled. Defaults to `false`. */\n area?: boolean;\n /** Sets opacity of the filled area if `area` is true. Defaults to `0.5`. */\n areaOpacity?: number;\n}\n\n/** Bar chart props only */\nexport interface HvBaseChartBarProps {\n /** Columns to measure on the chart. */\n measures: Arrayable<BarMeasuresField>;\n /** Whether the bar chart should be horizontal. Defaults to `false`. */\n horizontal?: boolean;\n}\n\n/** Base chart only props */\ninterface HvBaseChartOnlyProps {\n /** Chart type. */\n type: \"line\" | \"bar\";\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvBaseChartClasses;\n}\n\nexport interface HvBaseChartProps\n extends HvBaseChartCommonProps,\n Omit<HvBaseChartLineProps, \"measures\">,\n Omit<HvBaseChartBarProps, \"measures\">,\n HvBaseChartOnlyProps {\n /** Columns to measure on the chart. */\n measures: Arrayable<string | (BaseFullMeasuresField & LineFullMeasuresField)>;\n}\n\n/** Echarts doesn't seem to have the type for the tooltip params */\ninterface EChartsTooltipParams {\n seriesName: string;\n value: (string | number)[];\n encode: { [key: string]: number[] };\n color: string;\n dimensionNames: string[];\n}\n\n/**\n * Base chart for the line and bar chart.\n */\nexport const HvBaseChart = ({\n type,\n data,\n groupBy,\n splitBy,\n measures,\n sortBy,\n xAxis,\n yAxis,\n legend,\n tooltip,\n seriesNameFormatter,\n area = false,\n stack,\n emptyCellMode = \"void\",\n horizontalRangeSlider,\n areaOpacity = 0.5,\n classes: classesProp = {},\n grid,\n horizontal = false,\n}: HvBaseChartProps) => {\n const { theme } = useVizTheme();\n const { classes } = useClasses(classesProp);\n\n const currentTheme = useRef<string | undefined>(theme);\n const chartRef = useRef<ReactECharts>(null);\n const isMounted = useRef<boolean>(false);\n\n const groupByKey = Array.isArray(groupBy) ? groupBy.join(\"_\") : groupBy;\n\n const chartData = useMemo<ColumnTable>(() => {\n let tableData: ColumnTable;\n if (data instanceof internal.ColumnTable) {\n tableData = data;\n } else if (Array.isArray(data)) {\n tableData = from(data);\n } else {\n tableData = table(data);\n }\n\n const groupByFields = groupBy\n ? Array.isArray(groupBy)\n ? groupBy\n : [groupBy]\n : [];\n\n const splitByFields = Array.isArray(splitBy)\n ? splitBy\n : splitBy != null\n ? [splitBy]\n : [];\n\n const measuresFields: { [key: string]: string } =\n measures == null\n ? {}\n : typeof measures === \"string\"\n ? { [measures]: getAgFunc(\"sum\", measures) }\n : Array.isArray(measures)\n ? measures.reduce<{ [key: string]: string }>((acc, value) => {\n let field: string;\n let agFunction: HvChartAggregation;\n if (typeof value === \"string\") {\n field = value;\n agFunction = \"sum\";\n } else {\n field = value.field;\n agFunction = value.agg ?? \"sum\";\n }\n\n return {\n ...acc,\n [field]: getAgFunc(agFunction, field),\n };\n }, {})\n : {\n [measures.field]: getAgFunc(measures.agg ?? \"sum\", measures.field),\n };\n\n const sortByFields: { [key: string]: HvChartOrder } =\n sortBy == null\n ? {}\n : typeof sortBy === \"string\"\n ? { [sortBy]: \"asc\" }\n : Array.isArray(sortBy)\n ? sortBy.reduce<{ [key: string]: HvChartOrder }>((acc, value) => {\n let field: string;\n let orderFunction: HvChartOrder;\n if (typeof value === \"string\") {\n field = value;\n orderFunction = \"asc\";\n } else {\n field = value.field;\n orderFunction = value.order ?? \"asc\";\n }\n\n return {\n ...acc,\n [field]: orderFunction,\n };\n }, {})\n : { [sortBy.field]: sortBy.order ?? \"asc\" };\n\n const allFields = [\n ...groupByFields,\n ...splitByFields,\n ...Object.keys(measuresFields),\n ];\n\n // remove unneeded fields\n tableData = tableData.select(...allFields);\n\n // group by groupBy fields\n if (groupByFields.length > 0) {\n tableData = tableData.groupby(groupByFields);\n }\n\n if (splitByFields.length > 0) {\n // pivot by splitBy fields\n tableData = tableData.pivot(splitByFields, measuresFields);\n } else {\n // if there is no splitBy fields, just aggregate measures fields\n tableData = tableData.rollup(measuresFields);\n }\n\n // if grouped by multiple fields, create a new joint field\n // as the line chart doesn't implement hierarchical axis label grouping\n if (groupByFields.length > 1) {\n const expression = `d => ${groupByFields\n .map((field) => `d.${field}`)\n .join(\" + '_' + \")}`;\n\n tableData = tableData.derive(\n { [groupByKey]: expression },\n { after: groupByFields[groupByFields.length - 1] }\n );\n }\n\n // sort by sortBy fields\n if (Object.keys(sortByFields).length > 0) {\n tableData = tableData.orderby(\n ...Object.keys(sortByFields)\n // only sort by fields that are in the table, ignore the rest\n .filter((key) => allFields.includes(key))\n .map((key) => (sortByFields[key] === \"desc\" ? desc(key) : key))\n );\n }\n\n // if a derived field was created, remove the original fields\n if (groupByFields.length > 1) {\n tableData = tableData.select(not(...groupByFields));\n }\n\n return tableData;\n }, [data, groupBy, groupByKey, splitBy, measures, sortBy]);\n\n const chartDataset = useMemo<Pick<EChartsOption, \"dataset\">>(() => {\n return {\n dataset: {\n source: chartData.columnNames().reduce(\n (acc, c) => ({\n ...acc,\n [c]: chartData.array(c),\n }),\n {}\n ),\n },\n };\n }, [chartData]);\n\n const chartXAxis = useMemo<Pick<EChartsOption, \"xAxis\">>(() => {\n return {\n xAxis: {\n id: xAxis?.id,\n type: getAxisType(xAxis?.type) ?? (horizontal ? \"value\" : \"category\"),\n name: xAxis?.name,\n scale: !(type === \"bar\"),\n axisLabel: {\n rotate: xAxis?.labelRotation ?? 0,\n formatter: xAxis?.labelFormatter,\n },\n max: xAxis?.maxValue === \"max\" ? \"dataMax\" : xAxis?.maxValue,\n min: xAxis?.minValue === \"min\" ? \"dataMin\" : xAxis?.minValue,\n },\n };\n }, [xAxis, type, horizontal]);\n\n const chartYAxis = useMemo<Pick<EChartsOption, \"yAxis\">>(() => {\n if (!yAxis || !Array.isArray(yAxis)) {\n return {\n yAxis: {\n id: yAxis?.id,\n type: getAxisType(yAxis?.type) ?? (horizontal ? \"category\" : \"value\"),\n name: yAxis?.name,\n axisLabel: {\n rotate: yAxis?.labelRotation ?? 0,\n formatter: yAxis?.labelFormatter,\n },\n max: yAxis?.maxValue === \"max\" ? \"dataMax\" : yAxis?.maxValue,\n min: yAxis?.minValue === \"min\" ? \"dataMin\" : yAxis?.minValue,\n },\n };\n }\n\n return {\n yAxis: yAxis.map<YAXisComponentOption>((axis) => ({\n id: axis?.id,\n type: getAxisType(axis?.type) ?? \"value\",\n name: axis?.name,\n axisLabel: {\n rotate: axis?.labelRotation ?? 0,\n formatter: axis?.labelFormatter,\n },\n max: axis?.maxValue === \"max\" ? \"dataMax\" : axis?.maxValue,\n min: axis?.minValue === \"min\" ? \"dataMin\" : axis?.minValue,\n })),\n };\n }, [yAxis, horizontal]);\n\n const getMeasure = (name: string, msr: HvBaseChartProps[\"measures\"]) => {\n const measureName = name.split(\"_\")[0];\n const measuresArray = Array.isArray(msr) ? msr : [msr];\n // find the measure in measures array or return the first one\n return (\n measuresArray.find((m) => {\n if (typeof m === \"string\") {\n return m === measureName;\n }\n return m.field === measureName;\n }) ?? measuresArray[0]\n );\n };\n\n const chartSeries = useMemo<Pick<EChartsOption, \"series\">>(() => {\n return {\n series: chartData\n .columnNames()\n .filter((c) => c !== groupByKey)\n .map<LineSeriesOption | BarSeriesOption>((c) => {\n const measure = getMeasure(c, measures);\n\n const showSymbol =\n typeof measure !== \"string\" ? !measure.hideSymbol : true;\n const sampling =\n typeof measure !== \"string\" ? measure.sampling : undefined;\n const yAxisId =\n typeof measure !== \"string\" ? measure.yAxis : undefined;\n const isArea =\n typeof measure !== \"string\" ? measure.area ?? area : area;\n const aOpacity =\n typeof measure !== \"string\"\n ? measure.areaOpacity ?? areaOpacity\n : areaOpacity;\n const stackName =\n typeof measure !== \"string\"\n ? measure.stack ?? stack ?? undefined\n : stack ?? undefined;\n const connectNulls =\n typeof measure !== \"string\" && measure.emptyCellMode\n ? measure.emptyCellMode === \"connect\"\n : emptyCellMode === \"connect\";\n\n return {\n id: `series~${groupByKey}~${c}`,\n name: seriesNameFormatter ? seriesNameFormatter(c) : c,\n encode: horizontal\n ? {\n x: c,\n y: groupByKey,\n }\n : {\n x: groupByKey,\n y: c,\n },\n type,\n showSymbol,\n sampling,\n areaStyle: isArea ? { opacity: aOpacity } : undefined,\n connectNulls,\n stack: stackName,\n yAxisId,\n barMaxWidth: 90,\n barMinWidth: 3,\n };\n }),\n };\n }, [\n chartData,\n groupByKey,\n area,\n stack,\n seriesNameFormatter,\n emptyCellMode,\n areaOpacity,\n measures,\n type,\n horizontal,\n ]);\n\n const renderTooltip = useCallback(\n (\n params: EChartsTooltipParams[],\n single: boolean,\n msr: HvBaseChartProps[\"measures\"],\n reverse: boolean,\n cls?: typeof classes,\n valueFormatter?: (value?: string | number) => string,\n titleFormatter?: (value?: string | number) => string\n ) => {\n const title = reverse\n ? params[0].value[params[0].encode.y[0]]\n : params[0].value[params[0].encode.x[0]];\n const formattedTitle = titleFormatter ? titleFormatter(title) : title;\n\n if (single) {\n const measure = getMeasure(\n reverse\n ? params[0].dimensionNames[params[0].encode.x[0]]\n : params[0].dimensionNames[params[0].encode.y[0]],\n msr\n );\n const value = reverse\n ? params[0].value[params[0].encode.x[0]]\n : params[0].value[params[0].encode.y[0]];\n const formattedValue =\n typeof measure !== \"string\" && measure.valueFormatter\n ? measure.valueFormatter(value)\n : valueFormatter\n ? valueFormatter(value)\n : value;\n\n return `\n <div class=\"${cls?.singleTooltipRoot}\">\n <p class=\"${cls?.singleTooltipTitle}\">${formattedTitle}</p>\n <p class=\"${cls?.singleTooltipValue}\">${formattedValue}</p>\n </div>\n `;\n }\n\n return `\n <div class=\"${cls?.multipleTooltipRoot}\">\n <div class=\"${cls?.multipleTooltipTitleContainer}\">\n <div>\n <p class=\"${cls?.multipleTooltipTitle}\">${formattedTitle}</p>\n </div>\n </div>\n <div class=\"${cls?.multipleTooltipValuesContainer}\">\n ${params\n .map((s) => {\n const measure = getMeasure(\n reverse\n ? s.dimensionNames[s.encode.x[0]]\n : s.dimensionNames[s.encode.y[0]],\n msr\n );\n const value = reverse\n ? s.value[s.encode.x[0]]\n : s.value[s.encode.y[0]];\n const formattedValue =\n typeof measure !== \"string\" && measure.valueFormatter\n ? measure.valueFormatter(value)\n : valueFormatter\n ? valueFormatter(value)\n : value;\n\n return `\n <div key=\"${s.seriesName}\" class=\"${cls?.multipleTooltipSeriesContainer}\">\n <div class=\"${cls?.multipleTooltipSeriesNameContainer}\">\n <p style=\"background-color: ${s.color};\" class=\"${cls?.multipleTooltipSeriesColor}\" />\n <p class=\"${cls?.multipleTooltipSeriesName}\">${s.seriesName}</p>\n </div>\n <p class=\"${cls?.multipleTooltipSeriesValue}\">${formattedValue}</p>\n </div>\n `;\n })\n .join(\" \")}\n </div>\n </div>\n `;\n },\n []\n );\n\n const renderCustomTooltip = (\n params: EChartsTooltipParams[],\n reverse: boolean,\n customTooltip: Required<HvChartTooltip[\"component\"]>\n ) => {\n if (typeof customTooltip === \"function\") {\n const values: HvChartTooltipParams = {\n title: reverse\n ? params[0].value[params[0].encode.y[0]]\n : params[0].value[params[0].encode.x[0]],\n series: params.map((p) => {\n return {\n color: p.color,\n name: p.seriesName,\n value: reverse ? p.value[p.encode.x[0]] : p.value[p.encode.y[0]],\n };\n }),\n };\n\n return customTooltip(values);\n }\n\n return customTooltip;\n };\n\n const chartTooltip = useMemo<Pick<EChartsOption, \"tooltip\">>(() => {\n return {\n tooltip: {\n confine: false,\n show: tooltip?.show ?? true,\n trigger: \"axis\",\n position: (point, params, dom, rect, size) => {\n return [point[0], point[1] - size.contentSize[1]];\n },\n formatter: (params) =>\n tooltip?.component\n ? renderCustomTooltip(params, horizontal, tooltip.component)\n : renderTooltip(\n params,\n tooltip?.type === \"single\",\n measures,\n horizontal,\n classes,\n tooltip?.valueFormatter,\n tooltip?.titleFormatter\n ),\n },\n };\n }, [tooltip, classes, measures, horizontal, renderTooltip]);\n\n const chartLegend = useMemo<Pick<EChartsOption, \"legend\">>(() => {\n return {\n legend: {\n show:\n legend?.show ??\n (Array.isArray(chartSeries.series) && chartSeries.series.length > 1),\n itemGap: 20,\n data:\n legend?.show !== false && Array.isArray(chartSeries.series)\n ? chartSeries.series.map((s) => {\n return {\n name: s.name as string,\n icon: getLegendIcon(\n (s as any).areaStyle != null || s.type === \"bar\"\n ),\n };\n })\n : undefined,\n },\n };\n }, [chartSeries, legend]);\n\n const chartHorizontalRangerSlider = useMemo<\n Pick<EChartsOption, \"dataZoom\">\n >(() => {\n return {\n dataZoom: [\n {\n show: horizontalRangeSlider?.show ?? false,\n type: \"slider\",\n orient: \"horizontal\",\n },\n {\n show: horizontalRangeSlider?.show ?? false,\n type: \"inside\",\n orient: \"horizontal\",\n zoomOnMouseWheel: \"shift\",\n moveOnMouseWheel: true,\n },\n ],\n };\n }, [horizontalRangeSlider]);\n\n const chartGrid = useMemo(() => {\n return {\n // if no value is defined we shouldn't pass anything because echarts doesn't behave well otherwise\n grid: {\n ...(grid?.top != null && {\n top: grid.top,\n }),\n ...(grid?.bottom != null && {\n bottom: grid.bottom,\n }),\n ...(grid?.left != null && {\n left: grid.left,\n }),\n ...(grid?.right != null && {\n right: grid.right,\n }),\n },\n };\n }, [grid]);\n\n const [initialOption, setInitialOption] = useState<EChartsOption>({\n aria: {\n enabled: true,\n },\n animation: false,\n ...chartDataset,\n ...chartXAxis,\n ...chartYAxis,\n ...chartSeries,\n ...chartTooltip,\n ...chartLegend,\n ...chartHorizontalRangerSlider,\n ...chartGrid,\n });\n\n useEffect(() => {\n if (!isMounted.current) {\n isMounted.current = true;\n return;\n }\n\n // when the theme changes echarts destroys the chart and mounts it again\n // thus we need to reset the initial option\n if (theme !== currentTheme.current) {\n setInitialOption({\n aria: {\n enabled: true,\n },\n animation: false,\n ...chartDataset,\n ...chartXAxis,\n ...chartYAxis,\n ...chartSeries,\n ...chartTooltip,\n ...chartLegend,\n ...chartHorizontalRangerSlider,\n ...chartGrid,\n });\n currentTheme.current = theme;\n return;\n }\n\n chartRef.current?.getEchartsInstance().setOption(\n {\n ...chartDataset,\n ...chartXAxis,\n ...chartYAxis,\n ...chartSeries,\n ...chartLegend,\n ...chartTooltip,\n ...chartHorizontalRangerSlider,\n ...chartGrid,\n },\n {\n replaceMerge: [\"xAxis\", \"yAxis\", \"series\", \"dataset\"],\n }\n );\n }, [\n theme,\n chartDataset,\n chartXAxis,\n chartYAxis,\n chartSeries,\n chartLegend,\n chartTooltip,\n chartHorizontalRangerSlider,\n chartGrid,\n ]);\n\n return (\n <ReactECharts\n ref={chartRef}\n echarts={echarts}\n option={initialOption}\n theme={theme}\n notMerge\n />\n );\n};\n"],"names":["echarts","use","BarChart","LineChart","CanvasRenderer","DatasetComponent","GridComponent","AriaComponent","TooltipComponent","LegendComponent","DataZoomSliderComponent","DataZoomInsideComponent","HvBaseChart","type","data","groupBy","splitBy","measures","sortBy","xAxis","yAxis","legend","tooltip","seriesNameFormatter","area","stack","emptyCellMode","horizontalRangeSlider","areaOpacity","classes","classesProp","grid","horizontal","theme","useVizTheme","useClasses","currentTheme","useRef","chartRef","isMounted","groupByKey","Array","isArray","join","chartData","useMemo","tableData","internal","ColumnTable","from","table","groupByFields","splitByFields","measuresFields","getAgFunc","reduce","acc","value","field","agFunction","agg","sortByFields","orderFunction","order","allFields","Object","keys","select","length","groupby","pivot","rollup","expression","map","derive","after","orderby","filter","key","includes","desc","not","chartDataset","dataset","source","columnNames","c","array","chartXAxis","id","getAxisType","name","scale","axisLabel","rotate","labelRotation","formatter","labelFormatter","max","maxValue","min","minValue","chartYAxis","axis","getMeasure","msr","measureName","split","measuresArray","find","m","chartSeries","series","measure","showSymbol","hideSymbol","sampling","undefined","yAxisId","isArea","aOpacity","stackName","connectNulls","encode","x","y","areaStyle","opacity","barMaxWidth","barMinWidth","renderTooltip","useCallback","params","single","reverse","cls","valueFormatter","titleFormatter","title","formattedTitle","dimensionNames","formattedValue","singleTooltipRoot","singleTooltipTitle","singleTooltipValue","multipleTooltipRoot","multipleTooltipTitleContainer","multipleTooltipTitle","multipleTooltipValuesContainer","s","seriesName","multipleTooltipSeriesContainer","multipleTooltipSeriesNameContainer","color","multipleTooltipSeriesColor","multipleTooltipSeriesName","multipleTooltipSeriesValue","renderCustomTooltip","customTooltip","values","p","chartTooltip","confine","show","trigger","position","point","dom","rect","size","contentSize","component","chartLegend","itemGap","icon","getLegendIcon","chartHorizontalRangerSlider","dataZoom","orient","zoomOnMouseWheel","moveOnMouseWheel","chartGrid","top","bottom","left","right","initialOption","setInitialOption","useState","aria","enabled","animation","useEffect","current","getEchartsInstance","setOption","replaceMerge","ReactECharts","ref","option","notMerge"],"mappings":"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"}
@@ -61,7 +61,7 @@ declare interface HvBaseChartBarProps {
61
61
  horizontal?: boolean;
62
62
  }
63
63
 
64
- declare type HvBaseChartClasses = Partial<ExtractNames<typeof useClasses>>;
64
+ declare type HvBaseChartClasses = ExtractNames<typeof useClasses>;
65
65
 
66
66
  /** Line and bar chart common props */
67
67
  declare interface HvBaseChartCommonProps {
@@ -256,7 +256,7 @@ declare type SplitByField = string;
256
256
  /** Tooltip type */
257
257
  declare const tooltipType: readonly ["single", "multiple"];
258
258
 
259
- declare const useClasses: (classesProp?: Partial<Record<"singleTooltipRoot" | "singleTooltipTitle" | "singleTooltipValue" | "multipleTooltipRoot" | "multipleTooltipTitleContainer" | "multipleTooltipTitle" | "multipleTooltipValuesContainer" | "multipleTooltipSeriesContainer" | "multipleTooltipSeriesNameContainer" | "multipleTooltipSeriesColor" | "multipleTooltipSeriesName" | "multipleTooltipSeriesValue", string>>) => {
259
+ declare const useClasses: (classesProp?: Partial<Record<"singleTooltipRoot" | "singleTooltipTitle" | "singleTooltipValue" | "multipleTooltipRoot" | "multipleTooltipTitleContainer" | "multipleTooltipTitle" | "multipleTooltipValuesContainer" | "multipleTooltipSeriesContainer" | "multipleTooltipSeriesNameContainer" | "multipleTooltipSeriesColor" | "multipleTooltipSeriesName" | "multipleTooltipSeriesValue", string>>, addStatic?: boolean) => {
260
260
  classes: {
261
261
  singleTooltipRoot: string;
262
262
  singleTooltipTitle: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hitachivantara/uikit-react-viz",
3
- "version": "5.2.6",
3
+ "version": "5.2.8",
4
4
  "private": false,
5
5
  "author": "Hitachi Vantara UI Kit Team",
6
6
  "description": "Contributed React visualization components for the NEXT UI Kit.",
@@ -33,7 +33,7 @@
33
33
  },
34
34
  "dependencies": {
35
35
  "@emotion/css": "^11.11.0",
36
- "@hitachivantara/uikit-react-core": "^5.18.5"
36
+ "@hitachivantara/uikit-react-core": "^5.19.1"
37
37
  },
38
38
  "files": [
39
39
  "dist"
@@ -42,7 +42,7 @@
42
42
  "access": "public",
43
43
  "directory": "package"
44
44
  },
45
- "gitHead": "22678003d330065e81b3e2af237bb9fdedad390c",
45
+ "gitHead": "dbc404043e5ecb0c21d3765e6e191d0595d99122",
46
46
  "main": "dist/cjs/index.cjs",
47
47
  "exports": {
48
48
  ".": {