You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@echarts.apache.org by sh...@apache.org on 2021/09/09 02:17:26 UTC
[echarts] branch improve-types updated: fix(type): fix callback
type in itemStyle.color #14279
This is an automated email from the ASF dual-hosted git repository.
shenyi pushed a commit to branch improve-types
in repository https://gitbox.apache.org/repos/asf/echarts.git
The following commit(s) were added to refs/heads/improve-types by this push:
new 0779757 fix(type): fix callback type in itemStyle.color #14279
0779757 is described below
commit 0779757dd37bbda7598754b963138425ac3ce592
Author: pissang <bm...@gmail.com>
AuthorDate: Thu Sep 9 10:16:40 2021 +0800
fix(type): fix callback type in itemStyle.color #14279
---
src/chart/bar/BarSeries.ts | 13 ++++++++-----
src/chart/boxplot/BoxplotSeries.ts | 12 +++++++-----
src/chart/effectScatter/EffectScatterSeries.ts | 7 ++++---
src/chart/funnel/FunnelSeries.ts | 18 ++++++++++++------
src/chart/gauge/GaugeSeries.ts | 12 +++++++-----
src/chart/graph/GraphSeries.ts | 9 +++++----
src/chart/heatmap/HeatmapSeries.ts | 19 ++++++++++++++-----
src/chart/line/LineSeries.ts | 8 ++++----
src/chart/lines/LinesSeries.ts | 14 ++++++++------
src/chart/map/MapSeries.ts | 14 ++++++++------
src/chart/parallel/ParallelSeries.ts | 16 ++++++++--------
src/chart/pie/PieSeries.ts | 17 +++++++++++------
src/chart/radar/RadarSeries.ts | 10 ++++++----
src/chart/sankey/SankeySeries.ts | 13 +++++++------
src/chart/scatter/ScatterSeries.ts | 7 ++++---
src/chart/sunburst/SunburstSeries.ts | 9 +++++----
src/chart/themeRiver/ThemeRiverSeries.ts | 15 +++++++++++----
src/chart/tree/TreeSeries.ts | 7 ++++---
src/chart/treemap/TreemapSeries.ts | 13 ++++++-------
src/coord/geo/GeoModel.ts | 2 +-
src/util/types.ts | 18 +++++++-----------
21 files changed, 147 insertions(+), 106 deletions(-)
diff --git a/src/chart/bar/BarSeries.ts b/src/chart/bar/BarSeries.ts
index 57323c5..d2b76ab 100644
--- a/src/chart/bar/BarSeries.ts
+++ b/src/chart/bar/BarSeries.ts
@@ -27,7 +27,8 @@ import {
SeriesSamplingOptionMixin,
SeriesLabelOption,
SeriesEncodeOptionMixin,
- DefaultStatesMixinEmpasis
+ DefaultStatesMixinEmpasis,
+ CallbackDataParams
} from '../../util/types';
import type Cartesian2D from '../../coord/cartesian/Cartesian2D';
import createSeriesData from '../helper/createSeriesData';
@@ -42,8 +43,8 @@ export type PolarBarLabelPosition = SeriesLabelOption['position']
export type BarSeriesLabelOption = Omit<SeriesLabelOption, 'position'>
& {position?: PolarBarLabelPosition | 'outside'};
-export interface BarStateOption {
- itemStyle?: BarItemStyleOption
+export interface BarStateOption<TCbParams = never> {
+ itemStyle?: BarItemStyleOption<TCbParams>
label?: BarSeriesLabelOption
}
@@ -51,7 +52,7 @@ interface BarStatesMixin {
emphasis?: DefaultStatesMixinEmpasis
}
-export interface BarItemStyleOption extends ItemStyleOption {
+export interface BarItemStyleOption<TCbParams = never> extends ItemStyleOption<TCbParams> {
// Border radius is not supported for bar on polar
borderRadius?: number | number[]
}
@@ -61,7 +62,9 @@ export interface BarDataItemOption extends BarStateOption,
cursor?: string
}
-export interface BarSeriesOption extends BaseBarSeriesOption<BarStateOption, BarStatesMixin>, BarStateOption,
+export interface BarSeriesOption
+ extends BaseBarSeriesOption<BarStateOption<CallbackDataParams>, BarStatesMixin>,
+ BarStateOption<CallbackDataParams>,
SeriesStackOptionMixin, SeriesSamplingOptionMixin, SeriesEncodeOptionMixin {
type?: 'bar'
diff --git a/src/chart/boxplot/BoxplotSeries.ts b/src/chart/boxplot/BoxplotSeries.ts
index 60cbc41..b87276b 100644
--- a/src/chart/boxplot/BoxplotSeries.ts
+++ b/src/chart/boxplot/BoxplotSeries.ts
@@ -28,7 +28,8 @@ import {
OptionDataValueNumeric,
StatesOptionMixin,
SeriesEncodeOptionMixin,
- DefaultEmphasisFocus
+ DefaultEmphasisFocus,
+ CallbackDataParams
} from '../../util/types';
import type Axis2D from '../../coord/cartesian/Axis2D';
import Cartesian2D from '../../coord/cartesian/Cartesian2D';
@@ -37,9 +38,8 @@ import { mixin } from 'zrender/src/core/util';
// [min, Q1, median (or Q2), Q3, max]
type BoxplotDataValue = OptionDataValueNumeric[];
-
-export interface BoxplotStateOption {
- itemStyle?: ItemStyleOption
+export interface BoxplotStateOption<TCbParams = never> {
+ itemStyle?: ItemStyleOption<TCbParams>
label?: SeriesLabelOption
}
@@ -55,7 +55,9 @@ interface ExtraStateOption {
}
}
-export interface BoxplotSeriesOption extends SeriesOption<BoxplotStateOption, ExtraStateOption>, BoxplotStateOption,
+export interface BoxplotSeriesOption
+ extends SeriesOption<BoxplotStateOption<CallbackDataParams>, ExtraStateOption>,
+ BoxplotStateOption<CallbackDataParams>,
SeriesOnCartesianOptionMixin, SeriesEncodeOptionMixin {
type?: 'boxplot'
diff --git a/src/chart/effectScatter/EffectScatterSeries.ts b/src/chart/effectScatter/EffectScatterSeries.ts
index 8e936b3..19a468c 100644
--- a/src/chart/effectScatter/EffectScatterSeries.ts
+++ b/src/chart/effectScatter/EffectScatterSeries.ts
@@ -48,8 +48,8 @@ interface EffectScatterStatesOptionMixin {
scale?: boolean
}
}
-export interface EffectScatterStateOption {
- itemStyle?: ItemStyleOption
+export interface EffectScatterStateOption<TCbParams = never> {
+ itemStyle?: ItemStyleOption<TCbParams>
label?: SeriesLabelOption
}
@@ -64,7 +64,8 @@ export interface EffectScatterDataItemOption extends SymbolOptionMixin,
}
export interface EffectScatterSeriesOption
- extends SeriesOption<EffectScatterStateOption, EffectScatterStatesOptionMixin>, EffectScatterStateOption,
+ extends SeriesOption<EffectScatterStateOption<CallbackDataParams>, EffectScatterStatesOptionMixin>,
+ EffectScatterStateOption<CallbackDataParams>,
SeriesOnCartesianOptionMixin, SeriesOnPolarOptionMixin, SeriesOnCalendarOptionMixin,
SeriesOnGeoOptionMixin, SeriesOnSingleOptionMixin, SymbolOptionMixin<CallbackDataParams>,
SeriesEncodeOptionMixin {
diff --git a/src/chart/funnel/FunnelSeries.ts b/src/chart/funnel/FunnelSeries.ts
index 8ac6fcf..f102f79 100644
--- a/src/chart/funnel/FunnelSeries.ts
+++ b/src/chart/funnel/FunnelSeries.ts
@@ -37,7 +37,8 @@ import {
VerticalAlign,
SeriesLabelOption,
SeriesEncodeOptionMixin,
- DefaultStatesMixinEmpasis
+ DefaultStatesMixinEmpasis,
+ CallbackDataParams
} from '../../util/types';
import GlobalModel from '../../model/Global';
import SeriesData from '../../data/SeriesData';
@@ -51,8 +52,11 @@ interface FunnelStatesMixin {
emphasis?: DefaultStatesMixinEmpasis
}
-export interface FunnelStateOption {
- itemStyle?: ItemStyleOption
+export interface FunnelCallbackDataParams extends CallbackDataParams {
+ percent: number
+}
+export interface FunnelStateOption<TCbParams = never> {
+ itemStyle?: ItemStyleOption<TCbParams>
label?: FunnelLabelOption
labelLine?: LabelLineOption
}
@@ -67,7 +71,9 @@ export interface FunnelDataItemOption
}
}
-export interface FunnelSeriesOption extends SeriesOption<FunnelStateOption, FunnelStatesMixin>, FunnelStateOption,
+export interface FunnelSeriesOption
+ extends SeriesOption<FunnelStateOption<FunnelCallbackDataParams>, FunnelStatesMixin>,
+ FunnelStateOption<FunnelCallbackDataParams>,
BoxLayoutOptionMixin, SeriesEncodeOptionMixin {
type?: 'funnel'
@@ -128,9 +134,9 @@ class FunnelSeriesModel extends SeriesModel<FunnelSeriesOption> {
}
// Overwrite
- getDataParams(dataIndex: number) {
+ getDataParams(dataIndex: number): FunnelCallbackDataParams {
const data = this.getData();
- const params = super.getDataParams(dataIndex);
+ const params = super.getDataParams(dataIndex) as FunnelCallbackDataParams;
const valueDim = data.mapDimension('value');
const sum = data.getSum(valueDim);
// Percent is 0 if sum is 0
diff --git a/src/chart/gauge/GaugeSeries.ts b/src/chart/gauge/GaugeSeries.ts
index b861bf7..c444a6e 100644
--- a/src/chart/gauge/GaugeSeries.ts
+++ b/src/chart/gauge/GaugeSeries.ts
@@ -29,7 +29,8 @@ import {
OptionDataValueNumeric,
StatesOptionMixin,
SeriesEncodeOptionMixin,
- DefaultStatesMixinEmpasis
+ DefaultStatesMixinEmpasis,
+ CallbackDataParams
} from '../../util/types';
import GlobalModel from '../../model/Global';
import SeriesData from '../../data/SeriesData';
@@ -106,12 +107,12 @@ interface DetailOption extends LabelOption {
interface GaugeStatesMixin {
emphasis?: DefaultStatesMixinEmpasis
}
-export interface GaugeStateOption {
- itemStyle?: ItemStyleOption
+export interface GaugeStateOption<TCbParams = never> {
+ itemStyle?: ItemStyleOption<TCbParams>
}
export interface GaugeDataItemOption extends GaugeStateOption,
- StatesOptionMixin<GaugeStateOption, GaugeStatesMixin> {
+ StatesOptionMixin<GaugeStateOption<CallbackDataParams>, GaugeStatesMixin> {
name?: string
value?: OptionDataValueNumeric
pointer?: PointerOption
@@ -119,7 +120,8 @@ export interface GaugeDataItemOption extends GaugeStateOption,
title?: TitleOption
detail?: DetailOption
}
-export interface GaugeSeriesOption extends SeriesOption<GaugeStateOption, GaugeStatesMixin>, GaugeStateOption,
+export interface GaugeSeriesOption extends SeriesOption<GaugeStateOption, GaugeStatesMixin>,
+ GaugeStateOption<CallbackDataParams>,
CircleLayoutOptionMixin, SeriesEncodeOptionMixin {
type?: 'gauge'
diff --git a/src/chart/graph/GraphSeries.ts b/src/chart/graph/GraphSeries.ts
index eb03401..a3241c0 100644
--- a/src/chart/graph/GraphSeries.ts
+++ b/src/chart/graph/GraphSeries.ts
@@ -62,8 +62,8 @@ interface GraphEdgeLineStyleOption extends LineStyleOption {
curveness?: number
}
-export interface GraphNodeStateOption {
- itemStyle?: ItemStyleOption
+export interface GraphNodeStateOption<TCbParams = never> {
+ itemStyle?: ItemStyleOption<TCbParams>
label?: SeriesLabelOption
}
@@ -136,7 +136,8 @@ export interface GraphCategoryItemOption extends SymbolOptionMixin,
value?: OptionDataValue
}
-export interface GraphSeriesOption extends SeriesOption<GraphNodeStateOption, GraphNodeStatesMixin>,
+export interface GraphSeriesOption
+ extends SeriesOption<GraphNodeStateOption<CallbackDataParams>, GraphNodeStatesMixin>,
SeriesOnCartesianOptionMixin, SeriesOnPolarOptionMixin, SeriesOnCalendarOptionMixin,
SeriesOnGeoOptionMixin, SeriesOnSingleOptionMixin,
SymbolOptionMixin<CallbackDataParams>,
@@ -177,7 +178,7 @@ export interface GraphSeriesOption extends SeriesOption<GraphNodeStateOption, Gr
edgeLabel?: SeriesLineLabelOption
label?: SeriesLabelOption
- itemStyle?: ItemStyleOption
+ itemStyle?: ItemStyleOption<CallbackDataParams>
lineStyle?: GraphEdgeLineStyleOption
emphasis?: {
diff --git a/src/chart/heatmap/HeatmapSeries.ts b/src/chart/heatmap/HeatmapSeries.ts
index 3a78569..7fcd89f 100644
--- a/src/chart/heatmap/HeatmapSeries.ts
+++ b/src/chart/heatmap/HeatmapSeries.ts
@@ -30,7 +30,8 @@ import {
StatesOptionMixin,
SeriesEncodeOptionMixin,
SeriesOnCalendarOptionMixin,
- DefaultStatesMixinEmpasis
+ DefaultStatesMixinEmpasis,
+ CallbackDataParams
} from '../../util/types';
import GlobalModel from '../../model/Global';
import SeriesData from '../../data/SeriesData';
@@ -40,9 +41,9 @@ import type Calendar from '../../coord/calendar/Calendar';
type HeatmapDataValue = OptionDataValue[];
-export interface HeatmapStateOption {
+export interface HeatmapStateOption<TCbParams = never> {
// Available on cartesian2d coordinate system
- itemStyle?: ItemStyleOption
+ itemStyle?: ItemStyleOption<TCbParams>
label?: SeriesLabelOption
}
@@ -54,8 +55,14 @@ export interface HeatmapDataItemOption extends HeatmapStateOption,
value: HeatmapDataValue
}
-export interface HeatmapSeriesOption extends SeriesOption<HeatmapStateOption, FunnelStatesMixin>, HeatmapStateOption,
- SeriesOnCartesianOptionMixin, SeriesOnGeoOptionMixin, SeriesOnCalendarOptionMixin, SeriesEncodeOptionMixin {
+export interface HeatmapSeriesOption
+ extends SeriesOption<HeatmapStateOption<CallbackDataParams>, FunnelStatesMixin>,
+ HeatmapStateOption<CallbackDataParams>,
+ SeriesOnCartesianOptionMixin,
+ SeriesOnGeoOptionMixin,
+ SeriesOnCalendarOptionMixin,
+ SeriesEncodeOptionMixin {
+
type?: 'heatmap'
coordinateSystem?: 'cartesian2d' | 'geo' | 'calendar'
@@ -69,6 +76,8 @@ export interface HeatmapSeriesOption extends SeriesOption<HeatmapStateOption, Fu
data?: (HeatmapDataItemOption | HeatmapDataValue)[]
}
+
+
class HeatmapSeriesModel extends SeriesModel<HeatmapSeriesOption> {
static readonly type = 'series.heatmap';
readonly type = HeatmapSeriesModel.type;
diff --git a/src/chart/line/LineSeries.ts b/src/chart/line/LineSeries.ts
index 5c569e6..1b572b5 100644
--- a/src/chart/line/LineSeries.ts
+++ b/src/chart/line/LineSeries.ts
@@ -52,8 +52,8 @@ interface LineStateOptionMixin {
}
}
-export interface LineStateOption {
- itemStyle?: ItemStyleOption
+export interface LineStateOption<TCbParams = never> {
+ itemStyle?: ItemStyleOption<TCbParams>
label?: SeriesLabelOption
endLabel?: LineEndLabelOption
}
@@ -70,7 +70,7 @@ export interface LineEndLabelOption extends SeriesLabelOption {
}
-export interface LineSeriesOption extends SeriesOption<LineStateOption, LineStateOptionMixin & {
+export interface LineSeriesOption extends SeriesOption<LineStateOption<CallbackDataParams>, LineStateOptionMixin & {
emphasis?: {
lineStyle?: LineStyleOption | {
width?: 'bolder'
@@ -81,7 +81,7 @@ export interface LineSeriesOption extends SeriesOption<LineStateOption, LineStat
lineStyle?: LineStyleOption
areaStyle?: AreaStyleOption
}
-}>, LineStateOption,
+}>, LineStateOption<CallbackDataParams>,
SeriesOnCartesianOptionMixin,
SeriesOnPolarOptionMixin,
SeriesStackOptionMixin,
diff --git a/src/chart/lines/LinesSeries.ts b/src/chart/lines/LinesSeries.ts
index 61e4d44..b762fe1 100644
--- a/src/chart/lines/LinesSeries.ts
+++ b/src/chart/lines/LinesSeries.ts
@@ -35,7 +35,9 @@ import {
StatesOptionMixin,
SeriesLineLabelOption,
DimensionDefinitionLoose,
- DefaultStatesMixinEmpasis
+ DefaultStatesMixinEmpasis,
+ ZRColor,
+ CallbackDataParams
} from '../../util/types';
import GlobalModel from '../../model/Global';
import type { LineDrawModelOption } from '../helper/LineDraw';
@@ -73,7 +75,7 @@ type LinesCoords = number[][];
type LinesValue = OptionDataValue | OptionDataValue[];
-interface LinesLineStyleOption extends LineStyleOption {
+interface LinesLineStyleOption<TClr> extends LineStyleOption<TClr> {
curveness?: number
}
@@ -86,13 +88,13 @@ interface LegacyDataItemOption {
interface LinesStatesMixin {
emphasis?: DefaultStatesMixinEmpasis
}
-export interface LinesStateOption {
- lineStyle?: LinesLineStyleOption
+export interface LinesStateOption<TCbParams = never> {
+ lineStyle?: LinesLineStyleOption<TCbParams extends never ? never : (params: TCbParams) => ZRColor>
label?: SeriesLineLabelOption
}
-export interface LinesDataItemOption extends LinesStateOption,
- StatesOptionMixin<LinesStateOption, LinesStatesMixin> {
+export interface LinesDataItemOption extends LinesStateOption<CallbackDataParams>,
+ StatesOptionMixin<LinesStateOption<CallbackDataParams>, LinesStatesMixin> {
name?: string
fromName?: string
diff --git a/src/chart/map/MapSeries.ts b/src/chart/map/MapSeries.ts
index d146f11..4aab23a 100644
--- a/src/chart/map/MapSeries.ts
+++ b/src/chart/map/MapSeries.ts
@@ -33,7 +33,8 @@ import {
SeriesOnGeoOptionMixin,
StatesOptionMixin,
SeriesLabelOption,
- StatesMixinBase
+ StatesMixinBase,
+ CallbackDataParams
} from '../../util/types';
import { Dictionary } from 'zrender/src/core/types';
import GeoModel, { GeoCommonOptionMixin, GeoItemStyleOption } from '../../coord/geo/GeoModel';
@@ -45,11 +46,12 @@ import {createSymbol, ECSymbol} from '../../util/symbol';
import {LegendIconParams} from '../../component/legend/LegendModel';
import {Group} from '../../util/graphic';
-export interface MapStateOption {
- itemStyle?: GeoItemStyleOption
+export interface MapStateOption<TCbParams = never> {
+ itemStyle?: GeoItemStyleOption<TCbParams>
label?: SeriesLabelOption
}
-export interface MapDataItemOption extends MapStateOption, StatesOptionMixin<MapStateOption, StatesMixinBase>,
+export interface MapDataItemOption extends MapStateOption,
+ StatesOptionMixin<MapStateOption, StatesMixinBase>,
OptionDataItemObject<OptionDataValueNumeric> {
cursor?: string
}
@@ -57,8 +59,8 @@ export interface MapDataItemOption extends MapStateOption, StatesOptionMixin<Map
export type MapValueCalculationType = 'sum' | 'average' | 'min' | 'max';
export interface MapSeriesOption extends
- SeriesOption<MapStateOption, StatesMixinBase>, MapStateOption,
-
+ SeriesOption<MapStateOption<CallbackDataParams>, StatesMixinBase>,
+ MapStateOption<CallbackDataParams>,
GeoCommonOptionMixin,
// If `geoIndex` is not specified, a exclusive geo will be
// created. Otherwise use the specified geo component, and
diff --git a/src/chart/parallel/ParallelSeries.ts b/src/chart/parallel/ParallelSeries.ts
index 4b44d79..9a8f68e 100644
--- a/src/chart/parallel/ParallelSeries.ts
+++ b/src/chart/parallel/ParallelSeries.ts
@@ -33,7 +33,9 @@ import {
OptionEncodeValue,
Dictionary,
OptionEncode,
- DefaultStatesMixinEmpasis
+ DefaultStatesMixinEmpasis,
+ ZRColor,
+ CallbackDataParams
} from '../../util/types';
import GlobalModel from '../../model/Global';
import SeriesData from '../../data/SeriesData';
@@ -46,8 +48,8 @@ type ParallelSeriesDataValue = OptionDataValue[];
interface ParallelStatesMixin {
emphasis?: DefaultStatesMixinEmpasis
}
-export interface ParallelStateOption {
- lineStyle?: LineStyleOption
+export interface ParallelStateOption<TCbParams = never> {
+ lineStyle?: LineStyleOption<TCbParams extends never ? never : (params: TCbParams) => ZRColor>
label?: SeriesLabelOption
}
@@ -56,7 +58,8 @@ export interface ParallelSeriesDataItemOption extends ParallelStateOption,
value?: ParallelSeriesDataValue[]
}
export interface ParallelSeriesOption extends
- SeriesOption<ParallelStateOption, ParallelStatesMixin>, ParallelStateOption,
+ SeriesOption<ParallelStateOption<CallbackDataParams>, ParallelStatesMixin>,
+ ParallelStateOption<CallbackDataParams>,
SeriesEncodeOptionMixin {
type?: 'parallel';
@@ -74,14 +77,11 @@ export interface ParallelSeriesOption extends
parallelAxisDefault?: ParallelAxisOption;
- emphasis?: {
- label?: SeriesLabelOption;
- lineStyle?: LineStyleOption;
- }
data?: (ParallelSeriesDataValue | ParallelSeriesDataItemOption)[]
}
+
class ParallelSeriesModel extends SeriesModel<ParallelSeriesOption> {
static type = 'series.parallel';
diff --git a/src/chart/pie/PieSeries.ts b/src/chart/pie/PieSeries.ts
index de283ad..efa5bda 100644
--- a/src/chart/pie/PieSeries.ts
+++ b/src/chart/pie/PieSeries.ts
@@ -40,7 +40,7 @@ import {
} from '../../util/types';
import SeriesData from '../../data/SeriesData';
-interface PieItemStyleOption extends ItemStyleOption {
+interface PieItemStyleOption<TCbParams = never> extends ItemStyleOption<TCbParams> {
// can be 10
// which means that both innerCornerRadius and outerCornerRadius are 10
// can also be an array [20, 10]
@@ -52,9 +52,13 @@ interface PieItemStyleOption extends ItemStyleOption {
borderRadius?: (number | string)[] | number | string
}
-export interface PieStateOption {
+export interface PieCallbackDataParams extends CallbackDataParams {
+ percent: number
+}
+
+export interface PieStateOption<TCbParams = never> {
// TODO: TYPE Color Callback
- itemStyle?: PieItemStyleOption
+ itemStyle?: PieItemStyleOption<TCbParams>
label?: PieLabelOption
labelLine?: PieLabelLineOption
}
@@ -94,7 +98,8 @@ export interface PieDataItemOption extends
cursor?: string
}
export interface PieSeriesOption extends
- Omit<SeriesOption<PieStateOption, ExtraStateOption>, 'labelLine'>, PieStateOption,
+ Omit<SeriesOption<PieStateOption<PieCallbackDataParams>, ExtraStateOption>, 'labelLine'>,
+ PieStateOption<PieCallbackDataParams>,
CircleLayoutOptionMixin,
BoxLayoutOptionMixin,
SeriesEncodeOptionMixin {
@@ -163,9 +168,9 @@ class PieSeriesModel extends SeriesModel<PieSeriesOption> {
/**
* @overwrite
*/
- getDataParams(dataIndex: number): CallbackDataParams {
+ getDataParams(dataIndex: number): PieCallbackDataParams {
const data = this.getData();
- const params = super.getDataParams(dataIndex);
+ const params = super.getDataParams(dataIndex) as PieCallbackDataParams;
// FIXME toFixed?
const valueList: number[] = [];
diff --git a/src/chart/radar/RadarSeries.ts b/src/chart/radar/RadarSeries.ts
index 25829db..c6f9bc5 100644
--- a/src/chart/radar/RadarSeries.ts
+++ b/src/chart/radar/RadarSeries.ts
@@ -47,19 +47,21 @@ type RadarSeriesDataValue = OptionDataValue[];
interface RadarStatesMixin {
emphasis?: DefaultStatesMixinEmpasis
}
-export interface RadarSeriesStateOption {
+export interface RadarSeriesStateOption<TCbParams = never> {
lineStyle?: LineStyleOption
areaStyle?: AreaStyleOption
label?: SeriesLabelOption
- itemStyle?: ItemStyleOption
+ itemStyle?: ItemStyleOption<TCbParams>
}
export interface RadarSeriesDataItemOption extends SymbolOptionMixin,
- RadarSeriesStateOption, StatesOptionMixin<RadarSeriesStateOption, RadarStatesMixin>,
+ RadarSeriesStateOption<CallbackDataParams>,
+ StatesOptionMixin<RadarSeriesStateOption<CallbackDataParams>, RadarStatesMixin>,
OptionDataItemObject<RadarSeriesDataValue> {
}
export interface RadarSeriesOption
- extends SeriesOption<RadarSeriesStateOption, RadarStatesMixin>, RadarSeriesStateOption,
+ extends SeriesOption<RadarSeriesStateOption, RadarStatesMixin>,
+ RadarSeriesStateOption,
SymbolOptionMixin<CallbackDataParams>, SeriesEncodeOptionMixin {
type?: 'radar'
coordinateSystem?: 'radar'
diff --git a/src/chart/sankey/SankeySeries.ts b/src/chart/sankey/SankeySeries.ts
index 6131f56..0479035 100644
--- a/src/chart/sankey/SankeySeries.ts
+++ b/src/chart/sankey/SankeySeries.ts
@@ -33,7 +33,8 @@ import {
OptionDataItemObject,
GraphEdgeItemObject,
OptionDataValueNumeric,
- DefaultEmphasisFocus
+ DefaultEmphasisFocus,
+ CallbackDataParams
} from '../../util/types';
import GlobalModel from '../../model/Global';
import SeriesData from '../../data/SeriesData';
@@ -43,17 +44,16 @@ import { createTooltipMarkup } from '../../component/tooltip/tooltipMarkup';
type FocusNodeAdjacency = boolean | 'inEdges' | 'outEdges' | 'allEdges';
-export interface SankeyNodeStateOption {
+export interface SankeyNodeStateOption<TCbParams = never> {
label?: SeriesLabelOption
- itemStyle?: ItemStyleOption
+ itemStyle?: ItemStyleOption<TCbParams>
}
export interface SankeyEdgeStateOption {
lineStyle?: SankeyEdgeStyleOption
}
-interface SankeyBothStateOption extends SankeyNodeStateOption, SankeyEdgeStateOption {
-}
+interface SankeyBothStateOption<TCbParams> extends SankeyNodeStateOption<TCbParams>, SankeyEdgeStateOption {}
interface SankeyEdgeStyleOption extends LineStyleOption {
curveness?: number
@@ -92,7 +92,8 @@ export interface SankeyLevelOption extends SankeyNodeStateOption, SankeyEdgeStat
}
export interface SankeySeriesOption
- extends SeriesOption<SankeyBothStateOption, ExtraStateOption>, SankeyBothStateOption,
+ extends SeriesOption<SankeyBothStateOption<CallbackDataParams>, ExtraStateOption>,
+ SankeyBothStateOption<CallbackDataParams>,
BoxLayoutOptionMixin {
type?: 'sankey'
diff --git a/src/chart/scatter/ScatterSeries.ts b/src/chart/scatter/ScatterSeries.ts
index f2b1482..f79f422 100644
--- a/src/chart/scatter/ScatterSeries.ts
+++ b/src/chart/scatter/ScatterSeries.ts
@@ -42,8 +42,8 @@ import GlobalModel from '../../model/Global';
import SeriesData from '../../data/SeriesData';
import { BrushCommonSelectorsForSeries } from '../../component/brush/selector';
-interface ScatterStateOption {
- itemStyle?: ItemStyleOption
+interface ScatterStateOption<TCbParams = never> {
+ itemStyle?: ItemStyleOption<TCbParams>
label?: SeriesLabelOption
}
@@ -60,7 +60,8 @@ export interface ScatterDataItemOption extends SymbolOptionMixin,
}
export interface ScatterSeriesOption
- extends SeriesOption<ScatterStateOption, ScatterStatesOptionMixin>, ScatterStateOption,
+ extends SeriesOption<ScatterStateOption<CallbackDataParams>, ScatterStatesOptionMixin>,
+ ScatterStateOption<CallbackDataParams>,
SeriesOnCartesianOptionMixin, SeriesOnPolarOptionMixin, SeriesOnCalendarOptionMixin,
SeriesOnGeoOptionMixin, SeriesOnSingleOptionMixin,
SeriesLargeOptionMixin, SeriesStackOptionMixin,
diff --git a/src/chart/sunburst/SunburstSeries.ts b/src/chart/sunburst/SunburstSeries.ts
index afbe542..f7d801c 100644
--- a/src/chart/sunburst/SunburstSeries.ts
+++ b/src/chart/sunburst/SunburstSeries.ts
@@ -38,7 +38,7 @@ import SeriesData from '../../data/SeriesData';
import Model from '../../model/Model';
import enableAriaDecalForTree from '../helper/enableAriaDecalForTree';
-interface SunburstItemStyleOption extends ItemStyleOption {
+interface SunburstItemStyleOption<TCbParams = never> extends ItemStyleOption<TCbParams> {
// can be 10
// which means that both innerCornerRadius and outerCornerRadius are 10
// can also be an array [20, 10]
@@ -71,13 +71,14 @@ interface SunburstStatesMixin {
}
}
-export interface SunburstStateOption {
- itemStyle?: SunburstItemStyleOption
+export interface SunburstStateOption<TCbParams = never> {
+ itemStyle?: SunburstItemStyleOption<TCbParams>
label?: SunburstLabelOption
}
export interface SunburstSeriesNodeItemOption extends
- SunburstStateOption, StatesOptionMixin<SunburstStateOption, SunburstStatesMixin>,
+ SunburstStateOption<CallbackDataParams>,
+ StatesOptionMixin<SunburstStateOption<CallbackDataParams>, SunburstStatesMixin>,
OptionDataItemObject<OptionDataValue>
{
nodeClick?: 'rootToNode' | 'link'
diff --git a/src/chart/themeRiver/ThemeRiverSeries.ts b/src/chart/themeRiver/ThemeRiverSeries.ts
index 4cd6c57..2e05a9a 100644
--- a/src/chart/themeRiver/ThemeRiverSeries.ts
+++ b/src/chart/themeRiver/ThemeRiverSeries.ts
@@ -33,7 +33,9 @@ import {
BoxLayoutOptionMixin,
ZRColor,
Dictionary,
- SeriesLabelOption
+ SeriesLabelOption,
+ CallbackDataParams,
+ DefaultStatesMixinEmpasis
} from '../../util/types';
import SingleAxis from '../../coord/single/SingleAxis';
import GlobalModel from '../../model/Global';
@@ -48,12 +50,17 @@ interface ThemeRiverSeriesLabelOption extends SeriesLabelOption {
type ThemerRiverDataItem = [OptionDataValueDate, OptionDataValueNumeric, string];
-export interface ThemeRiverStateOption {
+interface ThemeRiverStatesMixin {
+ emphasis?: DefaultStatesMixinEmpasis
+}
+export interface ThemeRiverStateOption<TCbParams = never> {
label?: ThemeRiverSeriesLabelOption
- itemStyle?: ItemStyleOption
+ itemStyle?: ItemStyleOption<TCbParams>
}
-export interface ThemeRiverSeriesOption extends SeriesOption<ThemeRiverStateOption>, ThemeRiverStateOption,
+export interface ThemeRiverSeriesOption
+ extends SeriesOption<ThemeRiverStateOption<CallbackDataParams>, ThemeRiverStatesMixin>,
+ ThemeRiverStateOption<CallbackDataParams>,
SeriesOnSingleOptionMixin, BoxLayoutOptionMixin {
type?: 'themeRiver'
diff --git a/src/chart/tree/TreeSeries.ts b/src/chart/tree/TreeSeries.ts
index c51181f..5d7b8f5 100644
--- a/src/chart/tree/TreeSeries.ts
+++ b/src/chart/tree/TreeSeries.ts
@@ -44,8 +44,8 @@ interface CurveLineStyleOption extends LineStyleOption{
curveness?: number
}
-export interface TreeSeriesStateOption {
- itemStyle?: ItemStyleOption
+export interface TreeSeriesStateOption<TCbParams = never> {
+ itemStyle?: ItemStyleOption<TCbParams>
/**
* Line style of the edge between node and it's parent.
*/
@@ -61,7 +61,8 @@ interface TreeStatesMixin {
}
export interface TreeSeriesNodeItemOption extends SymbolOptionMixin<CallbackDataParams>,
- TreeSeriesStateOption, StatesOptionMixin<TreeSeriesStateOption, TreeStatesMixin>,
+ TreeSeriesStateOption<CallbackDataParams>,
+ StatesOptionMixin<TreeSeriesStateOption<CallbackDataParams>, TreeStatesMixin>,
OptionDataItemObject<OptionDataValue> {
children?: TreeSeriesNodeItemOption[]
diff --git a/src/chart/treemap/TreemapSeries.ts b/src/chart/treemap/TreemapSeries.ts
index 287540e..043018c 100644
--- a/src/chart/treemap/TreemapSeries.ts
+++ b/src/chart/treemap/TreemapSeries.ts
@@ -36,8 +36,7 @@ import {
DecalObject,
SeriesLabelOption,
DefaultEmphasisFocus,
- AriaOptionMixin,
- ColorBy
+ AriaOptionMixin
} from '../../util/types';
import GlobalModel from '../../model/Global';
import { LayoutRect } from '../../util/layout';
@@ -59,7 +58,7 @@ interface TreemapSeriesLabelOption extends SeriesLabelOption {
formatter?: string | ((params: CallbackDataParams) => string)
}
-interface TreemapSeriesItemStyleOption extends ItemStyleOption {
+interface TreemapSeriesItemStyleOption<TCbParams = never> extends ItemStyleOption<TCbParams> {
borderRadius?: number | number[]
colorAlpha?: number
@@ -91,8 +90,8 @@ interface ExtraStateOption {
}
}
-export interface TreemapStateOption {
- itemStyle?: TreemapSeriesItemStyleOption
+export interface TreemapStateOption<TCbParams = never> {
+ itemStyle?: TreemapSeriesItemStyleOption<TCbParams>
label?: TreemapSeriesLabelOption
upperLabel?: TreemapSeriesLabelOption
}
@@ -149,8 +148,8 @@ export interface TreemapSeriesNodeItemOption extends TreemapSeriesVisualOption,
}
export interface TreemapSeriesOption
- extends SeriesOption<TreemapStateOption, ExtraStateOption>,
- TreemapStateOption,
+ extends SeriesOption<TreemapStateOption<TreemapSeriesCallbackDataParams>, ExtraStateOption>,
+ TreemapStateOption<TreemapSeriesCallbackDataParams>,
BoxLayoutOptionMixin,
RoamOptionMixin,
TreemapSeriesVisualOption {
diff --git a/src/coord/geo/GeoModel.ts b/src/coord/geo/GeoModel.ts
index 4f89d40..adbafee 100644
--- a/src/coord/geo/GeoModel.ts
+++ b/src/coord/geo/GeoModel.ts
@@ -43,7 +43,7 @@ import GlobalModel from '../../model/Global';
import geoSourceManager from './geoSourceManager';
-export interface GeoItemStyleOption extends ItemStyleOption {
+export interface GeoItemStyleOption<TCbParams = never> extends ItemStyleOption<TCbParams> {
areaColor?: ZRColor;
};
interface GeoLabelOption extends LabelOption {
diff --git a/src/util/types.ts b/src/util/types.ts
index a484f42..e6ccb58 100644
--- a/src/util/types.ts
+++ b/src/util/types.ts
@@ -938,37 +938,33 @@ export type SymbolOffsetCallback<T> = (rawValue: any, params: T) => string | num
* Mixin of option set to control the element symbol.
* Include type of symbol, and size of symbol.
*/
-export interface SymbolOptionMixin<T = unknown> {
+export interface SymbolOptionMixin<T = never> {
/**
* type of symbol, like `cirlce`, `rect`, or custom path and image.
*/
- symbol?: string | (unknown extends T ? never : SymbolCallback<T>)
+ symbol?: string | (T extends never ? never : SymbolCallback<T>)
/**
* Size of symbol.
*/
- symbolSize?: number | number[] | (unknown extends T ? never : SymbolSizeCallback<T>)
+ symbolSize?: number | number[] | (T extends never ? never : SymbolSizeCallback<T>)
- symbolRotate?: number | (unknown extends T ? never : SymbolRotateCallback<T>)
+ symbolRotate?: number | (T extends never ? never : SymbolRotateCallback<T>)
symbolKeepAspect?: boolean
- symbolOffset?: string | number | (string | number)[] | (unknown extends T ? never : SymbolOffsetCallback<T>)
+ symbolOffset?: string | number | (string | number)[] | (T extends never ? never : SymbolOffsetCallback<T>)
}
/**
* ItemStyleOption is a most common used set to config element styles.
* It includes both fill and stroke style.
*/
-export interface ItemStyleOption extends ShadowOptionMixin, BorderOptionMixin {
- color?: ZRColor
+export interface ItemStyleOption<TCbParams = never> extends ShadowOptionMixin, BorderOptionMixin {
+ color?: ZRColor | (TCbParams extends never ? never : ((params: TCbParams) => ZRColor))
opacity?: number
decal?: DecalObject | 'none'
}
-export interface SeriesItemStyleOption<TParams = CallbackDataParams> extends Omit<ItemStyleOption, 'color'> {
- color?: ZRColor | ((params: TParams) => string)
-}
-
/**
* ItemStyleOption is a option set to control styles on lines.
* Used in the components or series like `line`, `axis`
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@echarts.apache.org
For additional commands, e-mail: commits-help@echarts.apache.org