@visactor/vrender-components 1.1.8-alpha.0 → 1.1.8-alpha.1

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.
package/cjs/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export declare const version = "1.1.8-alpha.0";
1
+ export declare const version = "1.1.8-alpha.1";
2
2
  export * from './core/base';
3
3
  export { AbstractComponent } from './core/base';
4
4
  export * from './core/type';
package/cjs/index.js CHANGED
@@ -18,7 +18,7 @@ var __createBinding = this && this.__createBinding || (Object.create ? function(
18
18
  Object.defineProperty(exports, "__esModule", {
19
19
  value: !0
20
20
  }), exports.labelSmartInvert = exports.IOperateType = exports.Brush = exports.PlayerEventEnum = exports.ContinuousPlayer = exports.DiscretePlayer = exports.Indicator = exports.Title = exports.SizeContinuousLegend = exports.ColorContinuousLegend = exports.registerMarkPointAnimate = exports.MarkPoint = exports.registerMarkArcAreaAnimate = exports.MarkArcArea = exports.registerMarkArcLineAnimate = exports.MarkArcLine = exports.registerMarkAreaAnimate = exports.MarkArea = exports.registerMarkLineAnimate = exports.MarkLine = exports.DataZoom = exports.Segment = exports.CircleAxisGrid = exports.LineAxisGrid = exports.polarAngleAxisDiscreteTicks = exports.continuousTicks = exports.CircleAxis = exports.LineAxis = exports.registerSymbolDataLabel = exports.DataLabel = exports.PolygonCrosshair = exports.SectorCrosshair = exports.CircleCrosshair = exports.LineCrosshair = exports.loadPoptip = exports.loadScrollbar = exports.ScrollBar = exports.AbstractComponent = exports.version = void 0,
21
- exports.version = "1.1.8-alpha.0", __exportStar(require("./core/base"), exports);
21
+ exports.version = "1.1.8-alpha.1", __exportStar(require("./core/base"), exports);
22
22
 
23
23
  var base_1 = require("./core/base");
24
24
 
package/cjs/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACa,QAAA,OAAO,GAAG,eAAe,CAAC;AAEvC,8CAA4B;AAC5B,oCAAgD;AAAvC,yGAAA,iBAAiB,OAAA;AAC1B,8CAA4B;AAC5B,8CAA4B;AAC5B,mDAAkD;AAAzC,sGAAA,SAAS,OAAA;AAClB,6CAAmD;AAA1C,uGAAA,aAAa,OAAA;AACtB,wCAAsB;AACtB,2CAAyB;AACzB,0CAA6C;AAApC,oGAAA,UAAU,OAAA;AACnB,8CAA4B;AAC5B,yCAAiD;AAAxC,qGAAA,aAAa,OAAA;AACtB,6CAAqD;AAA5C,yGAAA,eAAe,OAAA;AACxB,6CAAqD;AAA5C,yGAAA,eAAe,OAAA;AACxB,+CAAuD;AAA9C,2GAAA,gBAAgB,OAAA;AACzB,0CAAwB;AACxB,+CAA8C;AAArC,sGAAA,SAAS,OAAA;AAClB,yCAAyD;AAAhD,iHAAA,uBAAuB,OAAA;AAChC,yCAAuB;AACvB,oCAAuC;AAA9B,gGAAA,QAAQ,OAAA;AACjB,wCAA2C;AAAlC,oGAAA,UAAU,OAAA;AACnB,0DAA8D;AAArD,6GAAA,eAAe,OAAA;AACxB,qEAAoF;AAA3E,0HAAA,2BAA2B,OAAA;AACpC,8CAA4B;AAC5B,yCAAgD;AAAvC,oGAAA,YAAY,OAAA;AACrB,6CAAoD;AAA3C,wGAAA,cAAc,OAAA;AACvB,4CAA0B;AAC1B,6CAA4C;AAAnC,kGAAA,OAAO,OAAA;AAChB,8CAA4B;AAC5B,mDAAiD;AAAxC,qGAAA,QAAQ,OAAA;AACjB,2CAAyB;AACzB,sCAAkE;AAAzD,gGAAA,QAAQ,OAAA;AAAE,+GAAA,uBAAuB,OAAA;AAC1C,sCAAkE;AAAzD,gGAAA,QAAQ,OAAA;AAAE,+GAAA,uBAAuB,OAAA;AAC1C,8CAA4E;AAAnE,uGAAA,WAAW,OAAA;AAAE,sHAAA,0BAA0B,OAAA;AAChD,8CAA4E;AAAnE,uGAAA,WAAW,OAAA;AAAE,sHAAA,0BAA0B,OAAA;AAChD,wCAAqE;AAA5D,kGAAA,SAAS,OAAA;AAAE,iHAAA,wBAAwB,OAAA;AAC5C,0CAAwB;AACxB,2CAAyB;AACzB,8CAA6D;AAApD,8GAAA,qBAAqB,OAAA;AAC9B,2CAA0D;AAAjD,4GAAA,oBAAoB,OAAA;AAC7B,0CAAwB;AACxB,uCAAsC;AAA7B,8FAAA,KAAK,OAAA;AACd,8CAA4B;AAC5B,mDAAkD;AAAzC,sGAAA,SAAS,OAAA;AAClB,2CAAyB;AACzB,8CAA4B;AAC5B,2CAAyB;AACzB,4DAA0D;AAAjD,iHAAA,cAAc,OAAA;AACvB,gEAA8D;AAArD,qHAAA,gBAAgB,OAAA;AACzB,6CAAsD;AAA7C,wGAAA,eAAe,OAAA;AACxB,0CAAwB;AACxB,uCAAsC;AAA7B,8FAAA,KAAK,OAAA;AACd,qCAA4C;AAAnC,oGAAA,YAAY,OAAA;AACrB,4CAA0B;AAC1B,6CAA2B;AAC3B,8CAA4B;AAC5B,wCAAsB;AACtB,6CAA2B;AAC3B,0CAAwB;AACxB,8CAA4B;AAC5B,4CAA0B;AAC1B,yCAAuB;AACvB,8DAA4D;AAAnD,qHAAA,gBAAgB,OAAA;AACzB,2CAAyB;AACzB,+CAA6B;AAC7B,wDAAsC","file":"index.js","sourcesContent":["// 导出版本号\nexport const version = \"1.1.8-alpha.0\";\n\nexport * from './core/base';\nexport { AbstractComponent } from './core/base';\nexport * from './core/type';\nexport * from './scrollbar';\nexport { ScrollBar } from './scrollbar/scrollbar';\nexport { loadScrollbar } from './scrollbar/module';\nexport * from './tag';\nexport * from './poptip';\nexport { loadPoptip } from './poptip/module';\nexport * from './crosshair';\nexport { LineCrosshair } from './crosshair/line';\nexport { CircleCrosshair } from './crosshair/circle';\nexport { SectorCrosshair } from './crosshair/sector';\nexport { PolygonCrosshair } from './crosshair/polygon';\nexport * from './label';\nexport { DataLabel } from './label/dataLabel';\nexport { registerSymbolDataLabel } from './label/symbol';\nexport * from './axis';\nexport { LineAxis } from './axis/line';\nexport { CircleAxis } from './axis/circle';\nexport { continuousTicks } from './axis/tick-data/continuous';\nexport { polarAngleAxisDiscreteTicks } from './axis/tick-data/discrete/polar-angle';\nexport * from './axis/grid';\nexport { LineAxisGrid } from './axis/grid/line';\nexport { CircleAxisGrid } from './axis/grid/circle';\nexport * from './segment';\nexport { Segment } from './segment/segment';\nexport * from './data-zoom';\nexport { DataZoom } from './data-zoom/data-zoom';\nexport * from './marker';\nexport { MarkLine, registerMarkLineAnimate } from './marker/line';\nexport { MarkArea, registerMarkAreaAnimate } from './marker/area';\nexport { MarkArcLine, registerMarkArcLineAnimate } from './marker/arc-line';\nexport { MarkArcArea, registerMarkArcAreaAnimate } from './marker/arc-area';\nexport { MarkPoint, registerMarkPointAnimate } from './marker/point';\nexport * from './pager';\nexport * from './legend';\nexport { ColorContinuousLegend } from './legend/color/color';\nexport { SizeContinuousLegend } from './legend/size/size';\nexport * from './title';\nexport { Title } from './title/title';\nexport * from './indicator';\nexport { Indicator } from './indicator/indicator';\nexport * from './slider';\nexport * from './link-path';\nexport * from './player';\nexport { DiscretePlayer } from './player/discrete-player';\nexport { ContinuousPlayer } from './player/continuous-player';\nexport { PlayerEventEnum } from './player/type/event';\nexport * from './brush';\nexport { Brush } from './brush/brush';\nexport { IOperateType } from './brush/type';\nexport * from './tooltip';\nexport * from './timeline';\nexport * from './interface';\nexport * from './jsx';\nexport * from './checkbox';\nexport * from './radio';\nexport * from './empty-tip';\nexport * from './weather';\nexport * from './util';\nexport { labelSmartInvert } from './util/label-smartInvert';\nexport * from './switch';\nexport * from './label-item';\nexport * from './table-series-number';\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACa,QAAA,OAAO,GAAG,eAAe,CAAC;AAEvC,8CAA4B;AAC5B,oCAAgD;AAAvC,yGAAA,iBAAiB,OAAA;AAC1B,8CAA4B;AAC5B,8CAA4B;AAC5B,mDAAkD;AAAzC,sGAAA,SAAS,OAAA;AAClB,6CAAmD;AAA1C,uGAAA,aAAa,OAAA;AACtB,wCAAsB;AACtB,2CAAyB;AACzB,0CAA6C;AAApC,oGAAA,UAAU,OAAA;AACnB,8CAA4B;AAC5B,yCAAiD;AAAxC,qGAAA,aAAa,OAAA;AACtB,6CAAqD;AAA5C,yGAAA,eAAe,OAAA;AACxB,6CAAqD;AAA5C,yGAAA,eAAe,OAAA;AACxB,+CAAuD;AAA9C,2GAAA,gBAAgB,OAAA;AACzB,0CAAwB;AACxB,+CAA8C;AAArC,sGAAA,SAAS,OAAA;AAClB,yCAAyD;AAAhD,iHAAA,uBAAuB,OAAA;AAChC,yCAAuB;AACvB,oCAAuC;AAA9B,gGAAA,QAAQ,OAAA;AACjB,wCAA2C;AAAlC,oGAAA,UAAU,OAAA;AACnB,0DAA8D;AAArD,6GAAA,eAAe,OAAA;AACxB,qEAAoF;AAA3E,0HAAA,2BAA2B,OAAA;AACpC,8CAA4B;AAC5B,yCAAgD;AAAvC,oGAAA,YAAY,OAAA;AACrB,6CAAoD;AAA3C,wGAAA,cAAc,OAAA;AACvB,4CAA0B;AAC1B,6CAA4C;AAAnC,kGAAA,OAAO,OAAA;AAChB,8CAA4B;AAC5B,mDAAiD;AAAxC,qGAAA,QAAQ,OAAA;AACjB,2CAAyB;AACzB,sCAAkE;AAAzD,gGAAA,QAAQ,OAAA;AAAE,+GAAA,uBAAuB,OAAA;AAC1C,sCAAkE;AAAzD,gGAAA,QAAQ,OAAA;AAAE,+GAAA,uBAAuB,OAAA;AAC1C,8CAA4E;AAAnE,uGAAA,WAAW,OAAA;AAAE,sHAAA,0BAA0B,OAAA;AAChD,8CAA4E;AAAnE,uGAAA,WAAW,OAAA;AAAE,sHAAA,0BAA0B,OAAA;AAChD,wCAAqE;AAA5D,kGAAA,SAAS,OAAA;AAAE,iHAAA,wBAAwB,OAAA;AAC5C,0CAAwB;AACxB,2CAAyB;AACzB,8CAA6D;AAApD,8GAAA,qBAAqB,OAAA;AAC9B,2CAA0D;AAAjD,4GAAA,oBAAoB,OAAA;AAC7B,0CAAwB;AACxB,uCAAsC;AAA7B,8FAAA,KAAK,OAAA;AACd,8CAA4B;AAC5B,mDAAkD;AAAzC,sGAAA,SAAS,OAAA;AAClB,2CAAyB;AACzB,8CAA4B;AAC5B,2CAAyB;AACzB,4DAA0D;AAAjD,iHAAA,cAAc,OAAA;AACvB,gEAA8D;AAArD,qHAAA,gBAAgB,OAAA;AACzB,6CAAsD;AAA7C,wGAAA,eAAe,OAAA;AACxB,0CAAwB;AACxB,uCAAsC;AAA7B,8FAAA,KAAK,OAAA;AACd,qCAA4C;AAAnC,oGAAA,YAAY,OAAA;AACrB,4CAA0B;AAC1B,6CAA2B;AAC3B,8CAA4B;AAC5B,wCAAsB;AACtB,6CAA2B;AAC3B,0CAAwB;AACxB,8CAA4B;AAC5B,4CAA0B;AAC1B,yCAAuB;AACvB,8DAA4D;AAAnD,qHAAA,gBAAgB,OAAA;AACzB,2CAAyB;AACzB,+CAA6B;AAC7B,wDAAsC","file":"index.js","sourcesContent":["// 导出版本号\nexport const version = \"1.1.8-alpha.1\";\n\nexport * from './core/base';\nexport { AbstractComponent } from './core/base';\nexport * from './core/type';\nexport * from './scrollbar';\nexport { ScrollBar } from './scrollbar/scrollbar';\nexport { loadScrollbar } from './scrollbar/module';\nexport * from './tag';\nexport * from './poptip';\nexport { loadPoptip } from './poptip/module';\nexport * from './crosshair';\nexport { LineCrosshair } from './crosshair/line';\nexport { CircleCrosshair } from './crosshair/circle';\nexport { SectorCrosshair } from './crosshair/sector';\nexport { PolygonCrosshair } from './crosshair/polygon';\nexport * from './label';\nexport { DataLabel } from './label/dataLabel';\nexport { registerSymbolDataLabel } from './label/symbol';\nexport * from './axis';\nexport { LineAxis } from './axis/line';\nexport { CircleAxis } from './axis/circle';\nexport { continuousTicks } from './axis/tick-data/continuous';\nexport { polarAngleAxisDiscreteTicks } from './axis/tick-data/discrete/polar-angle';\nexport * from './axis/grid';\nexport { LineAxisGrid } from './axis/grid/line';\nexport { CircleAxisGrid } from './axis/grid/circle';\nexport * from './segment';\nexport { Segment } from './segment/segment';\nexport * from './data-zoom';\nexport { DataZoom } from './data-zoom/data-zoom';\nexport * from './marker';\nexport { MarkLine, registerMarkLineAnimate } from './marker/line';\nexport { MarkArea, registerMarkAreaAnimate } from './marker/area';\nexport { MarkArcLine, registerMarkArcLineAnimate } from './marker/arc-line';\nexport { MarkArcArea, registerMarkArcAreaAnimate } from './marker/arc-area';\nexport { MarkPoint, registerMarkPointAnimate } from './marker/point';\nexport * from './pager';\nexport * from './legend';\nexport { ColorContinuousLegend } from './legend/color/color';\nexport { SizeContinuousLegend } from './legend/size/size';\nexport * from './title';\nexport { Title } from './title/title';\nexport * from './indicator';\nexport { Indicator } from './indicator/indicator';\nexport * from './slider';\nexport * from './link-path';\nexport * from './player';\nexport { DiscretePlayer } from './player/discrete-player';\nexport { ContinuousPlayer } from './player/continuous-player';\nexport { PlayerEventEnum } from './player/type/event';\nexport * from './brush';\nexport { Brush } from './brush/brush';\nexport { IOperateType } from './brush/type';\nexport * from './tooltip';\nexport * from './timeline';\nexport * from './interface';\nexport * from './jsx';\nexport * from './checkbox';\nexport * from './radio';\nexport * from './empty-tip';\nexport * from './weather';\nexport * from './util';\nexport { labelSmartInvert } from './util/label-smartInvert';\nexport * from './switch';\nexport * from './label-item';\nexport * from './table-series-number';\n"]}
@@ -15,6 +15,7 @@ export declare class DiscreteLegend extends LegendBase<DiscreteLegendAttrs> {
15
15
  private _itemContext;
16
16
  private _scrollMask;
17
17
  private _scrollMaskContext;
18
+ private _stateDefinitionsCache;
18
19
  static defaultAttributes: Partial<DiscreteLegendAttrs>;
19
20
  constructor(attributes: DiscreteLegendAttrs, options?: ComponentOptions);
20
21
  render(): void;
@@ -14,7 +14,7 @@ Object.defineProperty(exports, "__esModule", {
14
14
  value: !0
15
15
  }), exports.DiscreteLegend = void 0;
16
16
 
17
- const vutils_1 = require("@visactor/vutils"), graphic_creator_1 = require("../../util/graphic-creator"), base_1 = require("../base"), pager_1 = require("../../pager"), constant_1 = require("../constant"), register_1 = require("../register"), util_1 = require("../../util"), scrollbar_1 = require("../../scrollbar"), static_truth_1 = require("../../animation/static-truth"), DEFAULT_STATES = {
17
+ const vutils_1 = require("@visactor/vutils"), vrender_core_1 = require("@visactor/vrender-core"), graphic_creator_1 = require("../../util/graphic-creator"), base_1 = require("../base"), pager_1 = require("../../pager"), constant_1 = require("../constant"), register_1 = require("../register"), util_1 = require("../../util"), scrollbar_1 = require("../../scrollbar"), static_truth_1 = require("../../animation/static-truth"), DEFAULT_STATES = {
18
18
  [constant_1.LegendStateValue.focus]: {},
19
19
  [constant_1.LegendStateValue.selected]: {},
20
20
  [constant_1.LegendStateValue.selectedHover]: {},
@@ -28,7 +28,8 @@ class DiscreteLegend extends base_1.LegendBase {
28
28
  constructor(attributes, options) {
29
29
  super((null == options ? void 0 : options.skipDefault) ? attributes : (0, vutils_1.merge)({}, DiscreteLegend.defaultAttributes, attributes)),
30
30
  this.name = "discreteLegend", this._itemsContainer = null, this._itemHeightByUser = void 0,
31
- this._itemHeight = 0, this._itemMaxWidth = 0, this._contentMaxHeight = 0, this._onHover = e => {
31
+ this._itemHeight = 0, this._itemMaxWidth = 0, this._contentMaxHeight = 0, this._stateDefinitionsCache = new WeakMap,
32
+ this._onHover = e => {
32
33
  const target = e.target;
33
34
  if (target && target.name && target.name.startsWith(constant_1.LEGEND_ELEMENT_NAME.item)) {
34
35
  const legendItem = target.delegate;
@@ -78,7 +79,7 @@ class DiscreteLegend extends base_1.LegendBase {
78
79
  };
79
80
  }
80
81
  render() {
81
- super.render(), this._lastActiveItem = null;
82
+ this._stateDefinitionsCache = new WeakMap, super.render(), this._lastActiveItem = null;
82
83
  }
83
84
  setSelected(selectedData) {
84
85
  var _a;
@@ -199,7 +200,7 @@ class DiscreteLegend extends base_1.LegendBase {
199
200
  }), this._appendDataToShape(itemGroup, constant_1.LEGEND_ELEMENT_NAME.item, item, itemGroup)) : (itemGroup = graphic_creator_1.graphicCreator.group(Object.assign({
200
201
  x: 0,
201
202
  y: 0
202
- }, backgroundStyle.style)), this._appendDataToShape(itemGroup, constant_1.LEGEND_ELEMENT_NAME.item, item, itemGroup, backgroundStyle.state)),
203
+ }, backgroundStyle.style)), this._appendDataToShape(itemGroup, constant_1.LEGEND_ELEMENT_NAME.item, item, itemGroup, backgroundStyle.state, backgroundStyle.reuseStateDefinitions)),
203
204
  itemGroup.id = `${null != id ? id : label}-${index}`, itemGroup.addState(isSelected ? constant_1.LegendStateValue.selected : constant_1.LegendStateValue.unSelected);
204
205
  const innerGroup = graphic_creator_1.graphicCreator.group({
205
206
  x: 0,
@@ -221,7 +222,7 @@ class DiscreteLegend extends base_1.LegendBase {
221
222
  const color = shapeStyle.state[key].fill || shapeStyle.state[key].stroke;
222
223
  shape.fill && (0, vutils_1.isNil)(shapeStyle.state[key].fill) && color && (shapeStyle.state[key].fill = color),
223
224
  shape.stroke && (0, vutils_1.isNil)(shapeStyle.state[key].stroke) && color && (shapeStyle.state[key].stroke = color);
224
- })), this._appendDataToShape(itemShape, constant_1.LEGEND_ELEMENT_NAME.itemShape, item, itemGroup, shapeStyle.state),
225
+ })), this._appendDataToShape(itemShape, constant_1.LEGEND_ELEMENT_NAME.itemShape, item, itemGroup, shapeStyle.state, !1),
225
226
  itemShape.addState(isSelected ? constant_1.LegendStateValue.selected : constant_1.LegendStateValue.unSelected),
226
227
  innerGroup.add(itemShape);
227
228
  }
@@ -249,7 +250,7 @@ class DiscreteLegend extends base_1.LegendBase {
249
250
  text: text,
250
251
  _originText: labelAttr.formatMethod ? label : void 0
251
252
  }), labelShape = (0, util_1.createTextGraphicByType)(labelAttributes);
252
- this._appendDataToShape(labelShape, constant_1.LEGEND_ELEMENT_NAME.itemLabel, item, itemGroup, labelStyle.state),
253
+ this._appendDataToShape(labelShape, constant_1.LEGEND_ELEMENT_NAME.itemLabel, item, itemGroup, labelStyle.state, labelStyle.reuseStateDefinitions),
253
254
  labelShape.addState(isSelected ? constant_1.LegendStateValue.selected : constant_1.LegendStateValue.unSelected),
254
255
  innerGroup.add(labelShape);
255
256
  const labelSpace = (0, vutils_1.get)(labelAttr, "space", constant_1.DEFAULT_LABEL_SPACE);
@@ -264,7 +265,7 @@ class DiscreteLegend extends base_1.LegendBase {
264
265
  text: valueText,
265
266
  _originText: valueAttr.formatMethod ? value : void 0
266
267
  }), valueShape = (0, util_1.createTextGraphicByType)(valueAttributes);
267
- if (this._appendDataToShape(valueShape, constant_1.LEGEND_ELEMENT_NAME.itemValue, item, itemGroup, valueStyle.state),
268
+ if (this._appendDataToShape(valueShape, constant_1.LEGEND_ELEMENT_NAME.itemValue, item, itemGroup, valueStyle.state, valueStyle.reuseStateDefinitions),
268
269
  valueShape.addState(isSelected ? constant_1.LegendStateValue.selected : constant_1.LegendStateValue.unSelected),
269
270
  this._itemWidthByUser) {
270
271
  const layoutWidth = this._itemWidthByUser - parsedPadding[1] - parsedPadding[3] - shapeSize - shapeSpace - labelSpace - focusSpace - valueSpace;
@@ -608,9 +609,17 @@ class DiscreteLegend extends base_1.LegendBase {
608
609
  item.hasState(constant_1.LegendStateValue.selected) && selectedData.push(item.data);
609
610
  })), selectedData;
610
611
  }
611
- _appendDataToShape(shape, name, data, delegateShape, states = {}) {
612
- shape.name = name, shape.data = data, shape.delegate = delegateShape, shape.states = (0,
613
- vutils_1.merge)({}, DEFAULT_STATES, states);
612
+ _appendDataToShape(shape, name, data, delegateShape, states, reuseStateDefinitions = !0) {
613
+ if (shape.name = name, shape.data = data, shape.delegate = delegateShape, !reuseStateDefinitions) return void (shape.states = (0,
614
+ vutils_1.merge)({}, DEFAULT_STATES, states));
615
+ const source = null != states ? states : DEFAULT_STATES, cached = this._stateDefinitionsCache.get(source);
616
+ if (cached) return shape.states = cached.definitions, void shape.setStateDefinitionsWithCompiled(cached.definitions, cached.compiledDefinitions);
617
+ const definitions = states ? (0, vutils_1.merge)({}, DEFAULT_STATES, states) : DEFAULT_STATES, entry = {
618
+ definitions: definitions,
619
+ compiledDefinitions: (new vrender_core_1.StateDefinitionCompiler).compile(definitions)
620
+ };
621
+ this._stateDefinitionsCache.set(source, entry), shape.states = entry.definitions,
622
+ shape.setStateDefinitionsWithCompiled(entry.definitions, entry.compiledDefinitions);
614
623
  }
615
624
  _dispatchLegendEvent(eventName, legendItem, event) {
616
625
  const currentSelectedItems = this._getSelectedLegends();
@@ -627,13 +636,19 @@ class DiscreteLegend extends base_1.LegendBase {
627
636
  }
628
637
  _handleStyle(config, item, isSelected, index, items) {
629
638
  const newConfig = {};
630
- return config.style && ((0, vutils_1.isFunction)(config.style) ? newConfig.style = config.style(item, isSelected, index, items) : newConfig.style = config.style),
631
- config.state && (newConfig.state = {}, Object.keys(config.state).forEach((key => {
632
- config.state[key] && ((0, vutils_1.isFunction)(config.state[key]) ? newConfig.state[key] = config.state[key](item, isSelected, index, items) : newConfig.state[key] = config.state[key]);
633
- }))), newConfig;
639
+ if (config.style && ((0, vutils_1.isFunction)(config.style) ? newConfig.style = config.style(item, isSelected, index, items) : newConfig.style = config.style),
640
+ config.state) {
641
+ const stateKeys = Object.keys(config.state), hasStateFunction = stateKeys.some((key => (0,
642
+ vutils_1.isFunction)(config.state[key])));
643
+ newConfig.reuseStateDefinitions = !hasStateFunction, hasStateFunction ? (newConfig.state = {},
644
+ stateKeys.forEach((key => {
645
+ config.state[key] && (newConfig.state[key] = (0, vutils_1.isFunction)(config.state[key]) ? config.state[key](item, isSelected, index, items) : config.state[key]);
646
+ }))) : newConfig.state = config.state;
647
+ }
648
+ return newConfig;
634
649
  }
635
650
  release() {
636
- super.release(), this.removeAllEventListeners();
651
+ this._stateDefinitionsCache = new WeakMap, super.release(), this.removeAllEventListeners();
637
652
  }
638
653
  }
639
654