@visactor/vchart 1.8.3-alpha.0 → 1.8.4

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.
Files changed (180) hide show
  1. package/build/es5/index.js +1 -1
  2. package/build/index.js +4083 -3822
  3. package/build/index.min.js +1 -1
  4. package/build/tsconfig.tsbuildinfo +1 -1
  5. package/cjs/animation/utils.d.ts +1 -1
  6. package/cjs/animation/utils.js +15 -14
  7. package/cjs/animation/utils.js.map +1 -1
  8. package/cjs/chart/base/base-chart.js +2 -2
  9. package/cjs/chart/base/base-chart.js.map +1 -1
  10. package/cjs/chart/stack.js +1 -2
  11. package/cjs/compile/grammar-item.js +2 -1
  12. package/cjs/compile/interface/compiler.d.ts +1 -0
  13. package/cjs/compile/interface/compiler.js.map +1 -1
  14. package/cjs/component/axis/base-axis.js +2 -2
  15. package/cjs/component/axis/base-axis.js.map +1 -1
  16. package/cjs/component/brush/brush.d.ts +1 -0
  17. package/cjs/component/brush/brush.js +6 -1
  18. package/cjs/component/brush/brush.js.map +1 -1
  19. package/cjs/component/crosshair/base.js.map +1 -1
  20. package/cjs/component/label/label.js +12 -12
  21. package/cjs/component/label/label.js.map +1 -1
  22. package/cjs/component/label/util.d.ts +5 -0
  23. package/cjs/component/label/util.js +18 -3
  24. package/cjs/component/label/util.js.map +1 -1
  25. package/cjs/component/marker/mark-area/mark-area.js +6 -15
  26. package/cjs/component/marker/mark-area/mark-area.js.map +1 -1
  27. package/cjs/component/marker/mark-line/mark-line.js +17 -23
  28. package/cjs/component/marker/mark-line/mark-line.js.map +1 -1
  29. package/cjs/component/marker/mark-point/mark-point.js +27 -23
  30. package/cjs/component/marker/mark-point/mark-point.js.map +1 -1
  31. package/cjs/component/marker/utils.d.ts +2 -1
  32. package/cjs/component/marker/utils.js +34 -2
  33. package/cjs/component/marker/utils.js.map +1 -1
  34. package/cjs/component/tooltip/processor/base.js +4 -4
  35. package/cjs/component/tooltip/processor/base.js.map +1 -1
  36. package/cjs/component/tooltip/tooltip.js +1 -1
  37. package/cjs/component/tooltip/tooltip.js.map +1 -1
  38. package/cjs/core/index.d.ts +2 -1
  39. package/cjs/core/index.js +3 -3
  40. package/cjs/core/index.js.map +1 -1
  41. package/cjs/core/interface.d.ts +4 -1
  42. package/cjs/core/interface.js.map +1 -1
  43. package/cjs/core/vchart.d.ts +2 -2
  44. package/cjs/core/vchart.js +7 -12
  45. package/cjs/core/vchart.js.map +1 -1
  46. package/cjs/interaction/zoom/zoomable.d.ts +2 -0
  47. package/cjs/interaction/zoom/zoomable.js +28 -23
  48. package/cjs/interaction/zoom/zoomable.js.map +1 -1
  49. package/cjs/layout/layout-item.js +1 -1
  50. package/cjs/layout/layout-item.js.map +1 -1
  51. package/cjs/plugin/chart/media-query/interface/common.d.ts +0 -4
  52. package/cjs/plugin/chart/media-query/interface/common.js.map +1 -1
  53. package/cjs/plugin/chart/media-query/interface/index.d.ts +1 -1
  54. package/cjs/plugin/chart/media-query/interface/index.js +1 -1
  55. package/cjs/plugin/chart/media-query/interface/index.js.map +1 -1
  56. package/cjs/plugin/chart/media-query/media-query.d.ts +3 -1
  57. package/cjs/plugin/chart/media-query/media-query.js +14 -11
  58. package/cjs/plugin/chart/media-query/media-query.js.map +1 -1
  59. package/cjs/plugin/chart/media-query/util/action.d.ts +2 -2
  60. package/cjs/plugin/chart/media-query/util/action.js +2 -2
  61. package/cjs/plugin/chart/media-query/util/action.js.map +1 -1
  62. package/cjs/plugin/chart/media-query/util/filter.d.ts +3 -3
  63. package/cjs/plugin/chart/media-query/util/filter.js +4 -4
  64. package/cjs/plugin/chart/media-query/util/filter.js.map +1 -1
  65. package/cjs/series/base/base-series-transformer.js.map +1 -1
  66. package/cjs/series/base/base-series.d.ts +4 -1
  67. package/cjs/series/base/base-series.js +22 -13
  68. package/cjs/series/base/base-series.js.map +1 -1
  69. package/cjs/series/funnel/funnel.js +17 -4
  70. package/cjs/series/funnel/funnel.js.map +1 -1
  71. package/cjs/series/interface/series.d.ts +2 -1
  72. package/cjs/series/interface/series.js.map +1 -1
  73. package/cjs/series/mixin/line-mixin.js +1 -1
  74. package/cjs/series/mixin/line-mixin.js.map +1 -1
  75. package/cjs/series/treemap/treemap-transform.d.ts +6 -0
  76. package/cjs/series/treemap/treemap-transform.js +17 -0
  77. package/cjs/series/treemap/treemap-transform.js.map +1 -0
  78. package/cjs/series/treemap/treemap.d.ts +6 -3
  79. package/cjs/series/treemap/treemap.js +24 -43
  80. package/cjs/series/treemap/treemap.js.map +1 -1
  81. package/cjs/typings/spec/common.d.ts +2 -0
  82. package/cjs/typings/spec/common.js.map +1 -1
  83. package/cjs/typings/spec/index.d.ts +1 -0
  84. package/cjs/typings/spec/index.js +2 -1
  85. package/cjs/typings/spec/index.js.map +1 -1
  86. package/cjs/{plugin/chart/media-query/interface/spec.d.ts → typings/spec/media-query.d.ts} +8 -5
  87. package/cjs/{plugin/chart/media-query/interface/spec.js → typings/spec/media-query.js} +1 -1
  88. package/cjs/typings/spec/media-query.js.map +1 -0
  89. package/cjs/util/env.js +8 -6
  90. package/cjs/util/env.js.map +1 -1
  91. package/esm/animation/utils.d.ts +1 -1
  92. package/esm/animation/utils.js +15 -14
  93. package/esm/animation/utils.js.map +1 -1
  94. package/esm/chart/base/base-chart.js +2 -2
  95. package/esm/chart/base/base-chart.js.map +1 -1
  96. package/esm/chart/stack.js +1 -2
  97. package/esm/compile/grammar-item.js +2 -1
  98. package/esm/compile/interface/compiler.d.ts +1 -0
  99. package/esm/compile/interface/compiler.js.map +1 -1
  100. package/esm/component/axis/base-axis.js +2 -2
  101. package/esm/component/axis/base-axis.js.map +1 -1
  102. package/esm/component/brush/brush.d.ts +1 -0
  103. package/esm/component/brush/brush.js +6 -1
  104. package/esm/component/brush/brush.js.map +1 -1
  105. package/esm/component/crosshair/base.js.map +1 -1
  106. package/esm/component/label/label.js +12 -12
  107. package/esm/component/label/label.js.map +1 -1
  108. package/esm/component/label/util.d.ts +5 -0
  109. package/esm/component/label/util.js +16 -1
  110. package/esm/component/label/util.js.map +1 -1
  111. package/esm/component/marker/mark-area/mark-area.js +7 -16
  112. package/esm/component/marker/mark-area/mark-area.js.map +1 -1
  113. package/esm/component/marker/mark-line/mark-line.js +18 -24
  114. package/esm/component/marker/mark-line/mark-line.js.map +1 -1
  115. package/esm/component/marker/mark-point/mark-point.js +28 -24
  116. package/esm/component/marker/mark-point/mark-point.js.map +1 -1
  117. package/esm/component/marker/utils.d.ts +2 -1
  118. package/esm/component/marker/utils.js +32 -2
  119. package/esm/component/marker/utils.js.map +1 -1
  120. package/esm/component/tooltip/processor/base.js +4 -4
  121. package/esm/component/tooltip/processor/base.js.map +1 -1
  122. package/esm/component/tooltip/tooltip.js +1 -1
  123. package/esm/component/tooltip/tooltip.js.map +1 -1
  124. package/esm/core/index.d.ts +2 -1
  125. package/esm/core/index.js +3 -1
  126. package/esm/core/index.js.map +1 -1
  127. package/esm/core/interface.d.ts +4 -1
  128. package/esm/core/interface.js.map +1 -1
  129. package/esm/core/vchart.d.ts +2 -2
  130. package/esm/core/vchart.js +10 -14
  131. package/esm/core/vchart.js.map +1 -1
  132. package/esm/interaction/zoom/zoomable.d.ts +2 -0
  133. package/esm/interaction/zoom/zoomable.js +29 -23
  134. package/esm/interaction/zoom/zoomable.js.map +1 -1
  135. package/esm/layout/layout-item.js +1 -1
  136. package/esm/layout/layout-item.js.map +1 -1
  137. package/esm/plugin/chart/media-query/interface/common.d.ts +0 -4
  138. package/esm/plugin/chart/media-query/interface/common.js.map +1 -1
  139. package/esm/plugin/chart/media-query/interface/index.d.ts +1 -1
  140. package/esm/plugin/chart/media-query/interface/index.js +1 -1
  141. package/esm/plugin/chart/media-query/interface/index.js.map +1 -1
  142. package/esm/plugin/chart/media-query/media-query.d.ts +3 -1
  143. package/esm/plugin/chart/media-query/media-query.js +14 -11
  144. package/esm/plugin/chart/media-query/media-query.js.map +1 -1
  145. package/esm/plugin/chart/media-query/util/action.d.ts +2 -2
  146. package/esm/plugin/chart/media-query/util/action.js +2 -2
  147. package/esm/plugin/chart/media-query/util/action.js.map +1 -1
  148. package/esm/plugin/chart/media-query/util/filter.d.ts +3 -3
  149. package/esm/plugin/chart/media-query/util/filter.js +4 -4
  150. package/esm/plugin/chart/media-query/util/filter.js.map +1 -1
  151. package/esm/series/base/base-series-transformer.js.map +1 -1
  152. package/esm/series/base/base-series.d.ts +4 -1
  153. package/esm/series/base/base-series.js +22 -13
  154. package/esm/series/base/base-series.js.map +1 -1
  155. package/esm/series/funnel/funnel.js +17 -4
  156. package/esm/series/funnel/funnel.js.map +1 -1
  157. package/esm/series/interface/series.d.ts +2 -1
  158. package/esm/series/interface/series.js.map +1 -1
  159. package/esm/series/mixin/line-mixin.js +1 -1
  160. package/esm/series/mixin/line-mixin.js.map +1 -1
  161. package/esm/series/treemap/treemap-transform.d.ts +6 -0
  162. package/esm/series/treemap/treemap-transform.js +11 -0
  163. package/esm/series/treemap/treemap-transform.js.map +1 -0
  164. package/esm/series/treemap/treemap.d.ts +6 -3
  165. package/esm/series/treemap/treemap.js +25 -41
  166. package/esm/series/treemap/treemap.js.map +1 -1
  167. package/esm/typings/spec/common.d.ts +2 -0
  168. package/esm/typings/spec/common.js.map +1 -1
  169. package/esm/typings/spec/index.d.ts +1 -0
  170. package/esm/typings/spec/index.js +2 -0
  171. package/esm/typings/spec/index.js.map +1 -1
  172. package/esm/{plugin/chart/media-query/interface/spec.d.ts → typings/spec/media-query.d.ts} +8 -5
  173. package/esm/typings/spec/media-query.js +2 -0
  174. package/esm/typings/spec/media-query.js.map +1 -0
  175. package/esm/util/env.js +4 -2
  176. package/esm/util/env.js.map +1 -1
  177. package/package.json +15 -15
  178. package/cjs/plugin/chart/media-query/interface/spec.js.map +0 -1
  179. package/esm/plugin/chart/media-query/interface/spec.js +0 -2
  180. package/esm/plugin/chart/media-query/interface/spec.js.map +0 -1
@@ -4,12 +4,12 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.registerTreemapSeries = exports.TreemapSeries = void 0;
6
6
 
7
- const interface_1 = require("../../compile/mark/interface"), constant_1 = require("../../constant"), type_1 = require("../../mark/interface/type"), cartesian_1 = require("../cartesian/cartesian"), type_2 = require("../interface/type"), register_1 = require("../../data/register"), treemap_1 = require("../../data/transforms/treemap"), flatten_1 = require("../../data/transforms/flatten"), vutils_1 = require("@visactor/vutils"), vdataset_1 = require("@visactor/vdataset"), hierarchy_dimension_statistics_1 = require("../../data/transforms/hierarchy-dimension-statistics"), add_property_1 = require("../../data/transforms/add-property"), data_key_1 = require("../../data/transforms/data-key"), hierarchy_1 = require("../../constant/hierarchy"), tooltip_helper_1 = require("./tooltip-helper"), utils_1 = require("../../animation/utils"), config_1 = require("../../animation/config"), zoomable_1 = require("../../interaction/zoom/zoomable"), drillable_1 = require("../../interaction/drill/drillable"), rect_1 = require("../../mark/rect"), text_1 = require("../../mark/text"), constant_2 = require("./constant"), factory_1 = require("../../core/factory"), animation_1 = require("./animation"), initialize_1 = require("../../data/initialize");
7
+ const interface_1 = require("../../compile/mark/interface"), constant_1 = require("../../constant"), type_1 = require("../../mark/interface/type"), cartesian_1 = require("../cartesian/cartesian"), type_2 = require("../interface/type"), register_1 = require("../../data/register"), treemap_1 = require("../../data/transforms/treemap"), flatten_1 = require("../../data/transforms/flatten"), vutils_1 = require("@visactor/vutils"), vdataset_1 = require("@visactor/vdataset"), hierarchy_dimension_statistics_1 = require("../../data/transforms/hierarchy-dimension-statistics"), add_property_1 = require("../../data/transforms/add-property"), data_key_1 = require("../../data/transforms/data-key"), hierarchy_1 = require("../../constant/hierarchy"), tooltip_helper_1 = require("./tooltip-helper"), utils_1 = require("../../animation/utils"), config_1 = require("../../animation/config"), zoomable_1 = require("../../interaction/zoom/zoomable"), drillable_1 = require("../../interaction/drill/drillable"), rect_1 = require("../../mark/rect"), text_1 = require("../../mark/text"), constant_2 = require("./constant"), factory_1 = require("../../core/factory"), animation_1 = require("./animation"), initialize_1 = require("../../data/initialize"), treemap_transform_1 = require("./treemap-transform");
8
8
 
9
9
  class TreemapSeries extends cartesian_1.CartesianSeries {
10
10
  constructor() {
11
- super(...arguments), this.type = type_2.SeriesTypeEnum.treemap, this._viewBox = new vutils_1.Bounds,
12
- this._clickEnable = !0, this._enableAnimationHook = this.enableMarkAnimation.bind(this);
11
+ super(...arguments), this.type = type_2.SeriesTypeEnum.treemap, this.transformerConstructor = treemap_transform_1.TreemapSeriesSpecTransformer,
12
+ this._viewBox = new vutils_1.Bounds, this._enableAnimationHook = this.enableMarkAnimation.bind(this);
13
13
  }
14
14
  getCategoryField() {
15
15
  return this._categoryField;
@@ -136,7 +136,7 @@ class TreemapSeries extends cartesian_1.CartesianSeries {
136
136
  } ]);
137
137
  }
138
138
  initMark() {
139
- var _a, _b, _c, _d;
139
+ var _a, _b;
140
140
  const nonLeafMark = this._createMark(TreemapSeries.mark.nonLeaf, {
141
141
  isSeriesMark: !0,
142
142
  customShape: null === (_a = this._spec.nonLeaf) || void 0 === _a ? void 0 : _a.customShape
@@ -149,29 +149,13 @@ class TreemapSeries extends cartesian_1.CartesianSeries {
149
149
  isSeriesMark: !0,
150
150
  customShape: null === (_b = this._spec.leaf) || void 0 === _b ? void 0 : _b.customShape
151
151
  });
152
- if (leafMark && (leafMark.setTransform([ {
152
+ leafMark && (leafMark.setTransform([ {
153
153
  type: "filter",
154
154
  callback: datum => !this._shouldFilterElement(datum, "leaf")
155
- } ]), this._leafMark = leafMark, this._trigger.registerMark(leafMark)), null === (_c = this._spec.label) || void 0 === _c ? void 0 : _c.visible) {
156
- const textMark = this._createMark(TreemapSeries.mark.label, {
157
- skipBeforeLayouted: !1
158
- });
159
- textMark && (textMark.setTransform([ {
160
- type: "filter",
161
- callback: datum => !this._shouldFilterElement(datum, "leaf")
162
- } ]), this._labelMark = textMark, this._trigger.registerMark(textMark));
163
- }
164
- if (null === (_d = this._spec.nonLeafLabel) || void 0 === _d ? void 0 : _d.visible) {
165
- const textMark = this._createMark(TreemapSeries.mark.nonLeafLabel);
166
- textMark && (textMark.setTransform([ {
167
- type: "filter",
168
- callback: datum => !this._shouldFilterElement(datum, "nonLeaf")
169
- } ]), this._nonLeafLabelMark = textMark, this._trigger.registerMark(textMark));
170
- }
155
+ } ]), this._leafMark = leafMark, this._trigger.registerMark(leafMark));
171
156
  }
172
157
  initMarkStyle() {
173
- this._initLeafMarkStyle(), this._initNonLeafMarkStyle(), this._initLabelMarkStyle(),
174
- this._initNonLeafLabelMarkStyle();
158
+ this._initLeafMarkStyle(), this._initNonLeafMarkStyle();
175
159
  }
176
160
  _initLeafMarkStyle() {
177
161
  this._leafMark && this.setMarkStyle(this._leafMark, {
@@ -191,33 +175,28 @@ class TreemapSeries extends cartesian_1.CartesianSeries {
191
175
  fill: this.getColorAttribute()
192
176
  }, interface_1.STATE_VALUE_ENUM.STATE_NORMAL, constant_1.AttributeLevel.Series);
193
177
  }
194
- _initLabelMarkStyle() {
195
- this._labelMark && this.setMarkStyle(this._labelMark, {
196
- visible: (datum, ctx, {element: element}) => {
197
- if (!datum.isLeaf) return !1;
198
- const bounds = element.getBounds(), {y0: y0, y1: y1} = datum;
199
- return !!bounds && bounds.y1 > y0 && bounds.y2 < y1;
200
- },
178
+ initLabelMarkStyle(labelMark) {
179
+ labelMark && (this._labelMark = labelMark, labelMark.setRule("treemap"), this.setMarkStyle(labelMark, {
201
180
  x: datum => (datum.x0 + datum.x1) / 2,
202
181
  y: datum => (datum.y0 + datum.y1) / 2,
203
182
  text: datum => {
204
183
  var _a;
205
184
  return null === (_a = datum.datum[datum.depth]) || void 0 === _a ? void 0 : _a[this.getDimensionField()[0]];
206
185
  },
207
- limit: datum => datum.x1 === datum.x0 ? Number.MIN_VALUE : datum.x1 - datum.x0
208
- }, interface_1.STATE_VALUE_ENUM.STATE_NORMAL, constant_1.AttributeLevel.Series);
186
+ maxLineWidth: datum => datum.x1 === datum.x0 ? Number.MIN_VALUE : datum.x1 - datum.x0
187
+ }, interface_1.STATE_VALUE_ENUM.STATE_NORMAL, constant_1.AttributeLevel.Series));
209
188
  }
210
- _initNonLeafLabelMarkStyle() {
211
- this._nonLeafLabelMark && this.setMarkStyle(this._nonLeafLabelMark, {
212
- visible: datum => !!datum.labelRect,
189
+ initNonLeafLabelMarkStyle(labelMark) {
190
+ labelMark && (this._nonLeafLabelMark = labelMark, labelMark.setRule("treemap"),
191
+ this.setMarkStyle(labelMark, {
213
192
  x: datum => datum.labelRect ? (datum.labelRect.x0 + datum.labelRect.x1) / 2 : (datum.x0 + datum.x1) / 2,
214
193
  y: datum => datum.labelRect ? (datum.labelRect.y0 + datum.labelRect.y1) / 2 : (datum.y0 + datum.y1) / 2,
215
194
  text: datum => {
216
195
  var _a;
217
196
  return null === (_a = datum.datum[datum.depth]) || void 0 === _a ? void 0 : _a[this.getDimensionField()[0]];
218
197
  },
219
- limit: datum => datum.x1 === datum.x0 ? Number.MIN_VALUE : datum.x1 - datum.x0
220
- }, interface_1.STATE_VALUE_ENUM.STATE_NORMAL, constant_1.AttributeLevel.Series);
198
+ maxLineWidth: datum => datum.x1 === datum.x0 ? Number.MIN_VALUE : datum.x1 - datum.x0
199
+ }, interface_1.STATE_VALUE_ENUM.STATE_NORMAL, constant_1.AttributeLevel.Series));
221
200
  }
222
201
  initAnimation() {
223
202
  this.getMarksInType(type_1.MarkTypeEnum.rect).forEach((mark => {
@@ -241,10 +220,8 @@ class TreemapSeries extends cartesian_1.CartesianSeries {
241
220
  return "key";
242
221
  }
243
222
  initTooltip() {
244
- this._tooltipHelper = new tooltip_helper_1.TreemapTooltipHelper(this), this._nonLeafLabelMark && this._tooltipHelper.activeTriggerSet.mark.add(this._nonLeafMark),
245
- this._leafMark && this._tooltipHelper.activeTriggerSet.mark.add(this._leafMark),
246
- this._labelMark && this._tooltipHelper.activeTriggerSet.mark.add(this._labelMark),
247
- this._nonLeafLabelMark && this._tooltipHelper.activeTriggerSet.mark.add(this._nonLeafLabelMark);
223
+ this._tooltipHelper = new tooltip_helper_1.TreemapTooltipHelper(this), this._leafMark && this._tooltipHelper.activeTriggerSet.mark.add(this._leafMark),
224
+ this._nonLeafMark && this._tooltipHelper.activeTriggerSet.mark.add(this._nonLeafMark);
248
225
  }
249
226
  _shouldFilterElement(datum, nodeType) {
250
227
  const isLeaf = datum.isLeaf;
@@ -282,12 +259,16 @@ class TreemapSeries extends cartesian_1.CartesianSeries {
282
259
  this.getMarks().forEach((mark => {
283
260
  var _a;
284
261
  null === (_a = mark.getProduct().animate) || void 0 === _a || _a.enable();
262
+ })), [ this._labelMark, this._nonLeafLabelMark ].forEach((m => {
263
+ m && m.getComponent() && m.getComponent().getProduct().getGroupGraphicItem().enableAnimation();
285
264
  })), this.event.off(constant_1.VGRAMMAR_HOOK_EVENT.AFTER_DO_RENDER, this._enableAnimationHook);
286
265
  }
287
266
  disableMarkAnimation() {
288
267
  this.getMarks().forEach((mark => {
289
268
  var _a;
290
269
  null === (_a = mark.getProduct().animate) || void 0 === _a || _a.disable();
270
+ })), [ this._labelMark, this._nonLeafLabelMark ].forEach((m => {
271
+ m && m.getComponent() && m.getComponent().getProduct().getGroupGraphicItem().disableAnimation();
291
272
  }));
292
273
  }
293
274
  getDefaultShapeType() {
@@ -299,8 +280,8 @@ class TreemapSeries extends cartesian_1.CartesianSeries {
299
280
  }
300
281
 
301
282
  exports.TreemapSeries = TreemapSeries, TreemapSeries.type = type_2.SeriesTypeEnum.treemap,
302
- TreemapSeries.mark = constant_2.treemapSeriesMark, (0, vutils_1.mixin)(TreemapSeries, zoomable_1.Zoomable),
303
- (0, vutils_1.mixin)(TreemapSeries, drillable_1.Drillable);
283
+ TreemapSeries.mark = constant_2.treemapSeriesMark, TreemapSeries.transformerConstructor = treemap_transform_1.TreemapSeriesSpecTransformer,
284
+ (0, vutils_1.mixin)(TreemapSeries, drillable_1.Drillable), (0, vutils_1.mixin)(TreemapSeries, zoomable_1.Zoomable);
304
285
 
305
286
  const registerTreemapSeries = () => {
306
287
  (0, rect_1.registerRectMark)(), (0, text_1.registerTextMark)(), (0, animation_1.registerTreemapAnimation)(),
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/series/treemap/treemap.ts"],"names":[],"mappings":"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","file":"treemap.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport { STATE_VALUE_ENUM } from '../../compile/mark/interface';\nimport { AttributeLevel, DEFAULT_DATA_KEY, VGRAMMAR_HOOK_EVENT } from '../../constant';\nimport type { IMark } from '../../mark/interface';\nimport { MarkTypeEnum } from '../../mark/interface/type';\nimport type { IRectMark } from '../../mark/rect';\nimport type { ITextMark } from '../../mark/text';\nimport type { Datum, IRectMarkSpec, ITextMarkSpec } from '../../typings';\nimport { CartesianSeries } from '../cartesian/cartesian';\nimport type { SeriesMarkMap } from '../interface';\nimport { SeriesTypeEnum } from '../interface/type';\nimport type { ITreemapSeriesSpec } from './interface';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport type { ITreemapOpt } from '../../data/transforms/treemap';\nimport { treemap } from '../../data/transforms/treemap';\nimport { flatten } from '../../data/transforms/flatten';\nimport type { IBounds, IBoundsLike } from '@visactor/vutils';\nimport { isValidNumber, Bounds, Matrix, mixin } from '@visactor/vutils';\nimport type { PanEventParam, ZoomEventParam } from '../../event/interface';\nimport type { TreemapNodeElement } from '@visactor/vgrammar-hierarchy';\nimport { DataView } from '@visactor/vdataset';\nimport { hierarchyDimensionStatistics } from '../../data/transforms/hierarchy-dimension-statistics';\nimport { addVChartProperty } from '../../data/transforms/add-property';\nimport { addHierarchyDataKey, initHierarchyKeyMap } from '../../data/transforms/data-key';\nimport { DEFAULT_HIERARCHY_DEPTH, DEFAULT_HIERARCHY_ROOT } from '../../constant/hierarchy';\nimport { TreemapTooltipHelper } from './tooltip-helper';\nimport { animationConfig, userAnimationConfig } from '../../animation/utils';\nimport { registerFadeInOutAnimation } from '../../animation/config';\nimport type { TransformSpec } from '@visactor/vgrammar-core';\nimport type { IZoomable } from '../../interaction/zoom/zoomable';\nimport { Zoomable } from '../../interaction/zoom/zoomable';\nimport type { IDrillable } from '../../interaction/drill/drillable';\nimport { Drillable } from '../../interaction/drill/drillable';\nimport { RectMark, registerRectMark } from '../../mark/rect';\nimport { TextMark, registerTextMark } from '../../mark/text';\nimport { treemapSeriesMark } from './constant';\nimport { Factory } from '../../core/factory';\nimport { registerTreemapAnimation } from './animation';\nimport { TransformLevel } from '../../data/initialize';\n\nexport class TreemapSeries extends CartesianSeries<any> {\n static readonly type: string = SeriesTypeEnum.treemap;\n type = SeriesTypeEnum.treemap;\n\n static readonly mark: SeriesMarkMap = treemapSeriesMark;\n\n private _leafMark: IRectMark;\n private _nonLeafMark: IRectMark;\n private _labelMark: ITextMark;\n private _nonLeafLabelMark: ITextMark;\n\n protected declare _spec: ITreemapSeriesSpec;\n\n protected _categoryField!: string;\n getCategoryField() {\n return this._categoryField;\n }\n setCategoryField(f: string): string {\n this._categoryField = f;\n return this._categoryField;\n }\n\n protected _valueField!: string;\n getValueField() {\n return this._valueField;\n }\n setValueField(f: string): string {\n this._valueField = f;\n return this._valueField;\n }\n\n private _maxDepth: number;\n\n // global scale and translate matrix\n private _matrix: Matrix;\n\n // range for treemap layout, change while zoom and pan\n private _viewBox: IBounds = new Bounds();\n\n private _clickEnable: boolean = true;\n\n private _enableAnimationHook = this.enableMarkAnimation.bind(this);\n\n setAttrFromSpec(): void {\n super.setAttrFromSpec();\n this.setCategoryField(this._spec.categoryField);\n this.setValueField(this._spec.valueField);\n this.setSeriesField(this._spec.seriesField ?? DEFAULT_HIERARCHY_ROOT);\n\n if (this._spec.roam) {\n (this as unknown as IZoomable).initZoomable(this.event, this._option.mode);\n this._matrix = new Matrix();\n }\n if (this._spec.drill) {\n (this as unknown as IDrillable).initDrillable({\n event: this.event,\n mode: this._option.mode,\n drillField: () => this._spec.drillField ?? DEFAULT_DATA_KEY,\n getRawData: () => this.getRawData()\n });\n }\n\n if (isValidNumber(this._spec.maxDepth)) {\n this._maxDepth = this._spec.maxDepth - 1;\n }\n }\n\n initData() {\n super.initData();\n // 矩形树图中原始数据为层次结果,图元数据为平坦化后的结构,具体逻辑如下:\n // spec.data => rawData(hierarchy) => viewDataFilter => treemap transform => flatten transform => viewData\n if (this.getViewData()) {\n // 对原始数据进行上卷下钻筛选\n if (this._spec.drill) {\n (this as unknown as IDrillable).initDrillableData(this._dataSet);\n }\n\n registerDataSetInstanceTransform(this._dataSet, 'treemap', treemap);\n registerDataSetInstanceTransform(this._dataSet, 'flatten', flatten);\n\n this.addViewDataFilter({\n type: 'treemap',\n options: {\n range: () => {\n return {\n x0: this._viewBox.x1,\n x1: this._viewBox.x2,\n y0: this._viewBox.y1,\n y1: this._viewBox.y2\n };\n },\n maxDepth: this._maxDepth,\n gapWidth: this._spec.gapWidth,\n padding: this._spec.nodePadding,\n splitType: this._spec.splitType,\n aspectRatio: this._spec.aspectRatio,\n labelPadding: this._spec.nonLeafLabel?.visible ? this._spec.nonLeafLabel?.padding : 0,\n labelPosition: this._spec.nonLeafLabel?.position,\n minVisibleArea: this._spec.minVisibleArea ?? 10,\n minChildrenVisibleArea: this._spec.minChildrenVisibleArea,\n minChildrenVisibleSize: this._spec.minChildrenVisibleSize\n } as ITreemapOpt,\n level: TransformLevel.treemapFilter\n });\n\n this.addViewDataFilter({\n type: 'flatten',\n options: {\n callback: (node: TreemapNodeElement) => {\n if (node.datum) {\n const nodeData = node.datum[node.depth];\n return { ...node, ...nodeData };\n }\n return node;\n }\n },\n level: TransformLevel.treemapFlatten\n });\n }\n }\n\n protected _addDataIndexAndKey() {\n if (this._rawData?.dataSet) {\n registerDataSetInstanceTransform(this._rawData.dataSet, 'addVChartProperty', addVChartProperty);\n this._rawData.transform(\n {\n type: 'addVChartProperty',\n options: {\n beforeCall: initHierarchyKeyMap.bind(this),\n call: addHierarchyDataKey\n }\n }\n // rawDataStatistic 需要统计 addHierarchyDataKey 的一些字段,所以必须要运行一下\n // false\n );\n }\n }\n\n getRawDataStatisticsByField(field: string, isNumeric?: boolean) {\n if (!this._rawDataStatistics) {\n const rawDataName = `${this.type}_${this.id}_rawDataStatic`;\n this._rawDataStatistics = this._createHierarchyDataStatistics(rawDataName, [this._rawData]);\n this._rawData.target.removeListener('change', this._rawDataStatistics.reRunAllTransform);\n this._rawDataStatistics.reRunAllTransform();\n }\n\n return this._rawDataStatistics.latestData?.[field];\n }\n\n protected _createHierarchyDataStatistics(dataName: string, rawData: DataView[]) {\n registerDataSetInstanceTransform(this._dataSet, 'hierarchyDimensionStatistics', hierarchyDimensionStatistics);\n registerDataSetInstanceTransform(this._dataSet, 'flatten', flatten);\n const data = new DataView(this._dataSet, { name: dataName });\n data.parse(rawData, {\n type: 'dataview'\n });\n data.transform(\n {\n type: 'hierarchyDimensionStatistics',\n options: {\n fields: () => {\n const fields = this.getStatisticFields();\n if (this._seriesField && this._seriesField !== this._categoryField) {\n fields.push({\n key: this._seriesField,\n operations: ['values']\n });\n }\n return fields;\n }\n }\n },\n false\n );\n return data;\n }\n\n getStatisticFields() {\n const fields = super.getStatisticFields();\n return fields.concat([\n {\n key: this._categoryField,\n operations: ['values']\n },\n {\n key: this._valueField,\n operations: ['max', 'min']\n },\n {\n key: DEFAULT_HIERARCHY_DEPTH,\n operations: ['max', 'min', 'values']\n },\n {\n key: DEFAULT_HIERARCHY_ROOT,\n operations: ['values']\n }\n ]);\n }\n\n initMark() {\n const nonLeafMark = this._createMark(TreemapSeries.mark.nonLeaf, {\n isSeriesMark: true,\n customShape: this._spec.nonLeaf?.customShape\n });\n if (nonLeafMark) {\n nonLeafMark.setTransform([\n {\n type: 'filter',\n callback: (datum: TreemapNodeElement) => {\n return !this._shouldFilterElement(datum, 'nonLeaf');\n }\n } as TransformSpec\n ]);\n this._trigger.registerMark(nonLeafMark);\n this._nonLeafMark = nonLeafMark;\n }\n\n const leafMark = this._createMark(TreemapSeries.mark.leaf, {\n isSeriesMark: true,\n customShape: this._spec.leaf?.customShape\n });\n if (leafMark) {\n leafMark.setTransform([\n {\n type: 'filter',\n callback: (datum: TreemapNodeElement) => {\n return !this._shouldFilterElement(datum, 'leaf');\n }\n } as TransformSpec\n ]);\n this._leafMark = leafMark;\n this._trigger.registerMark(leafMark);\n }\n\n if (this._spec.label?.visible) {\n const textMark = this._createMark(TreemapSeries.mark.label, {\n skipBeforeLayouted: false\n });\n if (textMark) {\n textMark.setTransform([\n {\n type: 'filter',\n callback: (datum: TreemapNodeElement) => {\n return !this._shouldFilterElement(datum, 'leaf');\n }\n } as TransformSpec\n ]);\n this._labelMark = textMark;\n this._trigger.registerMark(textMark);\n }\n }\n\n if (this._spec.nonLeafLabel?.visible) {\n const textMark = this._createMark(TreemapSeries.mark.nonLeafLabel);\n if (textMark) {\n textMark.setTransform([\n {\n type: 'filter' as string,\n callback: (datum: TreemapNodeElement) => {\n return !this._shouldFilterElement(datum, 'nonLeaf');\n }\n } as TransformSpec\n ]);\n this._nonLeafLabelMark = textMark;\n this._trigger.registerMark(textMark);\n }\n }\n }\n\n initMarkStyle() {\n this._initLeafMarkStyle();\n this._initNonLeafMarkStyle();\n this._initLabelMarkStyle();\n this._initNonLeafLabelMarkStyle();\n }\n\n protected _initLeafMarkStyle() {\n if (!this._leafMark) {\n return;\n }\n\n this.setMarkStyle<IRectMarkSpec>(\n this._leafMark,\n {\n x: datum => datum.x0,\n y: datum => datum.y0,\n x1: datum => datum.x1,\n y1: datum => datum.y1,\n fill: this.getColorAttribute()\n },\n STATE_VALUE_ENUM.STATE_NORMAL,\n AttributeLevel.Series\n );\n }\n\n protected _initNonLeafMarkStyle() {\n if (!this._nonLeafMark) {\n return;\n }\n this.setMarkStyle<IRectMarkSpec>(\n this._nonLeafMark,\n {\n x: datum => datum.x0,\n y: datum => datum.y0,\n x1: datum => datum.x1,\n y1: datum => datum.y1,\n fill: this.getColorAttribute()\n },\n STATE_VALUE_ENUM.STATE_NORMAL,\n AttributeLevel.Series\n );\n }\n\n protected _initLabelMarkStyle() {\n if (!this._labelMark) {\n return;\n }\n this.setMarkStyle<ITextMarkSpec>(\n this._labelMark,\n {\n visible: (datum, ctx, { element }) => {\n const isLeaf = datum.isLeaf;\n if (!isLeaf) {\n return false;\n }\n const bounds = element.getBounds() as IBoundsLike;\n const { y0, y1 } = datum;\n // 只需要判断高度,宽度放不下会由 limit 来处理\n return !!bounds && bounds.y1 > y0 && bounds.y2 < y1;\n },\n x: datum => (datum.x0 + datum.x1) / 2,\n y: datum => (datum.y0 + datum.y1) / 2,\n text: datum => {\n return datum.datum[datum.depth]?.[this.getDimensionField()[0]];\n },\n limit: (datum: Datum) => {\n return datum.x1 === datum.x0 ? Number.MIN_VALUE : datum.x1 - datum.x0;\n }\n },\n STATE_VALUE_ENUM.STATE_NORMAL,\n AttributeLevel.Series\n );\n }\n\n protected _initNonLeafLabelMarkStyle() {\n if (!this._nonLeafLabelMark) {\n return;\n }\n this.setMarkStyle<ITextMarkSpec>(\n this._nonLeafLabelMark,\n {\n visible: datum => !!datum.labelRect,\n x: datum => {\n if (datum.labelRect) {\n return (datum.labelRect.x0 + datum.labelRect.x1) / 2;\n }\n return (datum.x0 + datum.x1) / 2;\n },\n y: datum => {\n if (datum.labelRect) {\n return (datum.labelRect.y0 + datum.labelRect.y1) / 2;\n }\n return (datum.y0 + datum.y1) / 2;\n },\n text: datum => {\n return datum.datum[datum.depth]?.[this.getDimensionField()[0]];\n },\n limit: (datum: any) => {\n return datum.x1 === datum.x0 ? Number.MIN_VALUE : datum.x1 - datum.x0;\n }\n },\n STATE_VALUE_ENUM.STATE_NORMAL,\n AttributeLevel.Series\n );\n }\n\n initAnimation(): void {\n this.getMarksInType(MarkTypeEnum.rect).forEach(mark => {\n mark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('treemap')?.(),\n userAnimationConfig(mark.name, this._spec, this._markAttributeContext)\n )\n );\n });\n\n this.getMarksInType(MarkTypeEnum.text).forEach(mark => {\n mark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('fadeInOut')?.(),\n userAnimationConfig(mark.name, this._spec, this._markAttributeContext)\n )\n );\n });\n }\n\n protected initEvent(): void {\n super.initEvent();\n // Roam\n if (this._spec.roam) {\n // 拖拽事件\n (this as unknown as IZoomable).initDragEventOfSeries(this);\n this.event.on('panmove', e => {\n this.handlePan(e as PanEventParam);\n });\n // 缩放事件\n (this as unknown as IZoomable).initZoomEventOfSeries(this);\n this.event.on('zoom', e => {\n this.handleZoom(e as ZoomEventParam);\n });\n }\n // Drill\n if (this._spec.drill) {\n (this as unknown as IDrillable).bindDrillEvent();\n }\n }\n\n protected _getDataIdKey() {\n return 'key';\n }\n\n protected initTooltip() {\n this._tooltipHelper = new TreemapTooltipHelper(this);\n this._nonLeafLabelMark && this._tooltipHelper.activeTriggerSet.mark.add(this._nonLeafMark);\n this._leafMark && this._tooltipHelper.activeTriggerSet.mark.add(this._leafMark);\n this._labelMark && this._tooltipHelper.activeTriggerSet.mark.add(this._labelMark);\n this._nonLeafLabelMark && this._tooltipHelper.activeTriggerSet.mark.add(this._nonLeafLabelMark);\n }\n\n private _shouldFilterElement(datum: TreemapNodeElement, nodeType: 'leaf' | 'nonLeaf') {\n const isLeaf = datum.isLeaf;\n // 过滤掉非需要的节点\n return nodeType === 'leaf' ? !isLeaf : isLeaf;\n }\n\n handlePan(event: PanEventParam) {\n const { delta } = event;\n if (delta[0] === 0 && delta[1] === 0) {\n return;\n }\n this._matrix.reset();\n this._matrix.translate(delta[0], delta[1]);\n const { a, b, c, d, e, f } = this._matrix;\n this._matrix.multiply(a, b, c, d, e, f);\n\n this._viewBox.transformWithMatrix(this._matrix);\n\n this.reFilterViewData();\n }\n\n handleZoom(event: ZoomEventParam) {\n const { scale, scaleCenter } = event;\n if (scale === 1) {\n return;\n }\n\n this._matrix.reset();\n const { x, y } = scaleCenter;\n this._matrix.translate(x, y);\n this._matrix.scale(scale, scale);\n this._matrix.translate(-x, -y);\n const { a, b, c, d, e, f } = this._matrix;\n this._matrix.multiply(a, b, c, d, e, f);\n // 缩放过程中会有新增/减少的element,对应执行enter/exit动画,会使得缩放交互效果体验很差\n // 这里在缩放过程中先关闭所有动画\n this.disableMarkAnimation();\n this.event.on(VGRAMMAR_HOOK_EVENT.AFTER_DO_RENDER, this._enableAnimationHook);\n this._viewBox.transformWithMatrix(this._matrix);\n this.reFilterViewData();\n }\n\n getDimensionField() {\n return [this._categoryField];\n }\n\n getMeasureField(): string[] {\n return [this._valueField];\n }\n\n onLayoutEnd(ctx: any): void {\n super.onLayoutEnd(ctx);\n this._viewBox.set(0, 0, this.getLayoutRect().width, this.getLayoutRect().height);\n this._rawData.reRunAllTransform();\n }\n\n protected enableMarkAnimation() {\n this.getMarks().forEach(mark => {\n mark.getProduct().animate?.enable();\n });\n // 在所有动画执行之后关闭动画\n this.event.off(VGRAMMAR_HOOK_EVENT.AFTER_DO_RENDER, this._enableAnimationHook);\n }\n\n protected disableMarkAnimation() {\n this.getMarks().forEach(mark => {\n mark.getProduct().animate?.disable();\n });\n }\n\n getDefaultShapeType(): string {\n return 'square';\n }\n\n getActiveMarks(): IMark[] {\n return [this._nonLeafMark, this._leafMark];\n }\n}\n\nmixin(TreemapSeries, Zoomable);\nmixin(TreemapSeries, Drillable);\n\nexport const registerTreemapSeries = () => {\n registerRectMark();\n registerTextMark();\n registerTreemapAnimation();\n registerFadeInOutAnimation();\n Factory.registerSeries(TreemapSeries.type, TreemapSeries);\n};\n"]}
1
+ {"version":3,"sources":["../src/series/treemap/treemap.ts"],"names":[],"mappings":"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","file":"treemap.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport { STATE_VALUE_ENUM } from '../../compile/mark/interface';\nimport { AttributeLevel, DEFAULT_DATA_KEY, VGRAMMAR_HOOK_EVENT } from '../../constant';\nimport type { IMark } from '../../mark/interface';\nimport { MarkTypeEnum } from '../../mark/interface/type';\nimport type { IRectMark } from '../../mark/rect';\nimport type { Datum, IRectMarkSpec, ITextMarkSpec } from '../../typings';\nimport { CartesianSeries } from '../cartesian/cartesian';\nimport type { SeriesMarkMap } from '../interface';\nimport { SeriesTypeEnum } from '../interface/type';\nimport type { ITreemapSeriesSpec } from './interface';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport type { ITreemapOpt } from '../../data/transforms/treemap';\nimport { treemap } from '../../data/transforms/treemap';\nimport { flatten } from '../../data/transforms/flatten';\nimport type { IBounds } from '@visactor/vutils';\nimport { isValidNumber, Bounds, Matrix, mixin } from '@visactor/vutils';\nimport type { PanEventParam, ZoomEventParam } from '../../event/interface';\nimport type { TreemapNodeElement } from '@visactor/vgrammar-hierarchy';\nimport { DataView } from '@visactor/vdataset';\nimport { hierarchyDimensionStatistics } from '../../data/transforms/hierarchy-dimension-statistics';\nimport { addVChartProperty } from '../../data/transforms/add-property';\nimport { addHierarchyDataKey, initHierarchyKeyMap } from '../../data/transforms/data-key';\nimport { DEFAULT_HIERARCHY_DEPTH, DEFAULT_HIERARCHY_ROOT } from '../../constant/hierarchy';\nimport { TreemapTooltipHelper } from './tooltip-helper';\nimport { animationConfig, userAnimationConfig } from '../../animation/utils';\nimport { registerFadeInOutAnimation } from '../../animation/config';\nimport type { TransformSpec } from '@visactor/vgrammar-core';\nimport type { IZoomable } from '../../interaction/zoom/zoomable';\nimport { Zoomable } from '../../interaction/zoom/zoomable';\nimport type { IDrillable } from '../../interaction/drill/drillable';\nimport { Drillable } from '../../interaction/drill/drillable';\nimport { registerRectMark } from '../../mark/rect';\nimport { registerTextMark } from '../../mark/text';\nimport { treemapSeriesMark } from './constant';\nimport { Factory } from '../../core/factory';\nimport { registerTreemapAnimation } from './animation';\nimport { TransformLevel } from '../../data/initialize';\nimport type { ILabelMark } from '../../mark/label';\nimport { TreemapSeriesSpecTransformer } from './treemap-transform';\n\nexport class TreemapSeries extends CartesianSeries<any> {\n static readonly type: string = SeriesTypeEnum.treemap;\n type = SeriesTypeEnum.treemap;\n\n static readonly mark: SeriesMarkMap = treemapSeriesMark;\n\n static readonly transformerConstructor = TreemapSeriesSpecTransformer;\n readonly transformerConstructor = TreemapSeriesSpecTransformer;\n\n private _leafMark: IRectMark;\n private _nonLeafMark: IRectMark;\n private _labelMark: ILabelMark;\n private _nonLeafLabelMark: ILabelMark;\n\n protected declare _spec: ITreemapSeriesSpec;\n\n protected _categoryField!: string;\n getCategoryField() {\n return this._categoryField;\n }\n setCategoryField(f: string): string {\n this._categoryField = f;\n return this._categoryField;\n }\n\n protected _valueField!: string;\n getValueField() {\n return this._valueField;\n }\n setValueField(f: string): string {\n this._valueField = f;\n return this._valueField;\n }\n\n private _maxDepth: number;\n\n // global scale and translate matrix\n private _matrix: Matrix;\n\n // range for treemap layout, change while zoom and pan\n private _viewBox: IBounds = new Bounds();\n\n private _enableAnimationHook = this.enableMarkAnimation.bind(this);\n\n setAttrFromSpec(): void {\n super.setAttrFromSpec();\n this.setCategoryField(this._spec.categoryField);\n this.setValueField(this._spec.valueField);\n this.setSeriesField(this._spec.seriesField ?? DEFAULT_HIERARCHY_ROOT);\n\n if (this._spec.roam) {\n (this as unknown as IZoomable).initZoomable(this.event, this._option.mode);\n this._matrix = new Matrix();\n }\n if (this._spec.drill) {\n (this as unknown as IDrillable).initDrillable({\n event: this.event,\n mode: this._option.mode,\n drillField: () => this._spec.drillField ?? DEFAULT_DATA_KEY,\n getRawData: () => this.getRawData()\n });\n }\n\n if (isValidNumber(this._spec.maxDepth)) {\n this._maxDepth = this._spec.maxDepth - 1;\n }\n }\n\n initData() {\n super.initData();\n // 矩形树图中原始数据为层次结果,图元数据为平坦化后的结构,具体逻辑如下:\n // spec.data => rawData(hierarchy) => viewDataFilter => treemap transform => flatten transform => viewData\n if (this.getViewData()) {\n // 对原始数据进行上卷下钻筛选\n if (this._spec.drill) {\n (this as unknown as IDrillable).initDrillableData(this._dataSet);\n }\n\n registerDataSetInstanceTransform(this._dataSet, 'treemap', treemap);\n registerDataSetInstanceTransform(this._dataSet, 'flatten', flatten);\n\n this.addViewDataFilter({\n type: 'treemap',\n options: {\n range: () => {\n return {\n x0: this._viewBox.x1,\n x1: this._viewBox.x2,\n y0: this._viewBox.y1,\n y1: this._viewBox.y2\n };\n },\n maxDepth: this._maxDepth,\n gapWidth: this._spec.gapWidth,\n padding: this._spec.nodePadding,\n splitType: this._spec.splitType,\n aspectRatio: this._spec.aspectRatio,\n labelPadding: this._spec.nonLeafLabel?.visible ? this._spec.nonLeafLabel?.padding : 0,\n labelPosition: this._spec.nonLeafLabel?.position,\n minVisibleArea: this._spec.minVisibleArea ?? 10,\n minChildrenVisibleArea: this._spec.minChildrenVisibleArea,\n minChildrenVisibleSize: this._spec.minChildrenVisibleSize\n } as ITreemapOpt,\n level: TransformLevel.treemapFilter\n });\n\n this.addViewDataFilter({\n type: 'flatten',\n options: {\n callback: (node: TreemapNodeElement) => {\n if (node.datum) {\n const nodeData = node.datum[node.depth];\n return { ...node, ...nodeData };\n }\n return node;\n }\n },\n level: TransformLevel.treemapFlatten\n });\n }\n }\n\n protected _addDataIndexAndKey() {\n if (this._rawData?.dataSet) {\n registerDataSetInstanceTransform(this._rawData.dataSet, 'addVChartProperty', addVChartProperty);\n this._rawData.transform(\n {\n type: 'addVChartProperty',\n options: {\n beforeCall: initHierarchyKeyMap.bind(this),\n call: addHierarchyDataKey\n }\n }\n // rawDataStatistic 需要统计 addHierarchyDataKey 的一些字段,所以必须要运行一下\n // false\n );\n }\n }\n\n getRawDataStatisticsByField(field: string, isNumeric?: boolean) {\n if (!this._rawDataStatistics) {\n const rawDataName = `${this.type}_${this.id}_rawDataStatic`;\n this._rawDataStatistics = this._createHierarchyDataStatistics(rawDataName, [this._rawData]);\n this._rawData.target.removeListener('change', this._rawDataStatistics.reRunAllTransform);\n this._rawDataStatistics.reRunAllTransform();\n }\n\n return this._rawDataStatistics.latestData?.[field];\n }\n\n protected _createHierarchyDataStatistics(dataName: string, rawData: DataView[]) {\n registerDataSetInstanceTransform(this._dataSet, 'hierarchyDimensionStatistics', hierarchyDimensionStatistics);\n registerDataSetInstanceTransform(this._dataSet, 'flatten', flatten);\n const data = new DataView(this._dataSet, { name: dataName });\n data.parse(rawData, {\n type: 'dataview'\n });\n data.transform(\n {\n type: 'hierarchyDimensionStatistics',\n options: {\n fields: () => {\n const fields = this.getStatisticFields();\n if (this._seriesField && this._seriesField !== this._categoryField) {\n fields.push({\n key: this._seriesField,\n operations: ['values']\n });\n }\n return fields;\n }\n }\n },\n false\n );\n return data;\n }\n\n getStatisticFields() {\n const fields = super.getStatisticFields();\n return fields.concat([\n {\n key: this._categoryField,\n operations: ['values']\n },\n {\n key: this._valueField,\n operations: ['max', 'min']\n },\n {\n key: DEFAULT_HIERARCHY_DEPTH,\n operations: ['max', 'min', 'values']\n },\n {\n key: DEFAULT_HIERARCHY_ROOT,\n operations: ['values']\n }\n ]);\n }\n\n initMark() {\n const nonLeafMark = this._createMark(TreemapSeries.mark.nonLeaf, {\n isSeriesMark: true,\n customShape: this._spec.nonLeaf?.customShape\n });\n if (nonLeafMark) {\n nonLeafMark.setTransform([\n {\n type: 'filter',\n callback: (datum: TreemapNodeElement) => {\n return !this._shouldFilterElement(datum, 'nonLeaf');\n }\n } as TransformSpec\n ]);\n this._trigger.registerMark(nonLeafMark);\n this._nonLeafMark = nonLeafMark;\n }\n\n const leafMark = this._createMark(TreemapSeries.mark.leaf, {\n isSeriesMark: true,\n customShape: this._spec.leaf?.customShape\n });\n if (leafMark) {\n leafMark.setTransform([\n {\n type: 'filter',\n callback: (datum: TreemapNodeElement) => {\n return !this._shouldFilterElement(datum, 'leaf');\n }\n } as TransformSpec\n ]);\n this._leafMark = leafMark;\n this._trigger.registerMark(leafMark);\n }\n }\n\n initMarkStyle() {\n this._initLeafMarkStyle();\n this._initNonLeafMarkStyle();\n }\n\n protected _initLeafMarkStyle() {\n if (!this._leafMark) {\n return;\n }\n\n this.setMarkStyle<IRectMarkSpec>(\n this._leafMark,\n {\n x: datum => datum.x0,\n y: datum => datum.y0,\n x1: datum => datum.x1,\n y1: datum => datum.y1,\n fill: this.getColorAttribute()\n },\n STATE_VALUE_ENUM.STATE_NORMAL,\n AttributeLevel.Series\n );\n }\n\n protected _initNonLeafMarkStyle() {\n if (!this._nonLeafMark) {\n return;\n }\n this.setMarkStyle<IRectMarkSpec>(\n this._nonLeafMark,\n {\n x: datum => datum.x0,\n y: datum => datum.y0,\n x1: datum => datum.x1,\n y1: datum => datum.y1,\n fill: this.getColorAttribute()\n },\n STATE_VALUE_ENUM.STATE_NORMAL,\n AttributeLevel.Series\n );\n }\n\n initLabelMarkStyle(labelMark: ILabelMark) {\n if (!labelMark) {\n return;\n }\n this._labelMark = labelMark;\n labelMark.setRule('treemap');\n this.setMarkStyle<ITextMarkSpec>(\n labelMark,\n {\n x: datum => (datum.x0 + datum.x1) / 2,\n y: datum => (datum.y0 + datum.y1) / 2,\n text: datum => {\n return datum.datum[datum.depth]?.[this.getDimensionField()[0]];\n },\n maxLineWidth: (datum: Datum) => {\n return datum.x1 === datum.x0 ? Number.MIN_VALUE : datum.x1 - datum.x0;\n }\n },\n STATE_VALUE_ENUM.STATE_NORMAL,\n AttributeLevel.Series\n );\n }\n\n protected initNonLeafLabelMarkStyle(labelMark: ILabelMark) {\n if (!labelMark) {\n return;\n }\n this._nonLeafLabelMark = labelMark;\n labelMark.setRule('treemap');\n this.setMarkStyle<ITextMarkSpec>(\n labelMark,\n {\n x: datum => {\n if (datum.labelRect) {\n return (datum.labelRect.x0 + datum.labelRect.x1) / 2;\n }\n return (datum.x0 + datum.x1) / 2;\n },\n y: datum => {\n if (datum.labelRect) {\n return (datum.labelRect.y0 + datum.labelRect.y1) / 2;\n }\n return (datum.y0 + datum.y1) / 2;\n },\n text: datum => {\n return datum.datum[datum.depth]?.[this.getDimensionField()[0]];\n },\n maxLineWidth: (datum: any) => {\n return datum.x1 === datum.x0 ? Number.MIN_VALUE : datum.x1 - datum.x0;\n }\n },\n STATE_VALUE_ENUM.STATE_NORMAL,\n AttributeLevel.Series\n );\n }\n\n initAnimation(): void {\n this.getMarksInType(MarkTypeEnum.rect).forEach(mark => {\n mark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('treemap')?.(),\n userAnimationConfig(mark.name, this._spec, this._markAttributeContext)\n )\n );\n });\n\n this.getMarksInType(MarkTypeEnum.text).forEach(mark => {\n mark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('fadeInOut')?.(),\n userAnimationConfig(mark.name, this._spec, this._markAttributeContext)\n )\n );\n });\n }\n\n protected initEvent(): void {\n super.initEvent();\n // Roam\n if (this._spec.roam) {\n // 拖拽事件\n (this as unknown as IZoomable).initDragEventOfSeries(this);\n this.event.on('panmove', e => {\n this.handlePan(e as PanEventParam);\n });\n // 缩放事件\n (this as unknown as IZoomable).initZoomEventOfSeries(this);\n this.event.on('zoom', e => {\n this.handleZoom(e as ZoomEventParam);\n });\n }\n // Drill\n if (this._spec.drill) {\n (this as unknown as IDrillable).bindDrillEvent();\n }\n }\n\n protected _getDataIdKey() {\n return 'key';\n }\n\n protected initTooltip() {\n this._tooltipHelper = new TreemapTooltipHelper(this);\n this._leafMark && this._tooltipHelper.activeTriggerSet.mark.add(this._leafMark);\n this._nonLeafMark && this._tooltipHelper.activeTriggerSet.mark.add(this._nonLeafMark);\n }\n\n private _shouldFilterElement(datum: TreemapNodeElement, nodeType: 'leaf' | 'nonLeaf') {\n const isLeaf = datum.isLeaf;\n // 过滤掉非需要的节点\n return nodeType === 'leaf' ? !isLeaf : isLeaf;\n }\n\n handlePan(event: PanEventParam) {\n const { delta } = event;\n if (delta[0] === 0 && delta[1] === 0) {\n return;\n }\n this._matrix.reset();\n this._matrix.translate(delta[0], delta[1]);\n const { a, b, c, d, e, f } = this._matrix;\n this._matrix.multiply(a, b, c, d, e, f);\n\n this._viewBox.transformWithMatrix(this._matrix);\n\n this.reFilterViewData();\n }\n\n handleZoom(event: ZoomEventParam) {\n const { scale, scaleCenter } = event;\n if (scale === 1) {\n return;\n }\n\n this._matrix.reset();\n const { x, y } = scaleCenter;\n this._matrix.translate(x, y);\n this._matrix.scale(scale, scale);\n this._matrix.translate(-x, -y);\n const { a, b, c, d, e, f } = this._matrix;\n this._matrix.multiply(a, b, c, d, e, f);\n // 缩放过程中会有新增/减少的element,对应执行enter/exit动画,会使得缩放交互效果体验很差\n // 这里在缩放过程中先关闭所有动画\n this.disableMarkAnimation();\n this.event.on(VGRAMMAR_HOOK_EVENT.AFTER_DO_RENDER, this._enableAnimationHook);\n this._viewBox.transformWithMatrix(this._matrix);\n this.reFilterViewData();\n }\n\n getDimensionField() {\n return [this._categoryField];\n }\n\n getMeasureField(): string[] {\n return [this._valueField];\n }\n\n onLayoutEnd(ctx: any): void {\n super.onLayoutEnd(ctx);\n this._viewBox.set(0, 0, this.getLayoutRect().width, this.getLayoutRect().height);\n this._rawData.reRunAllTransform();\n }\n\n protected enableMarkAnimation() {\n this.getMarks().forEach(mark => {\n mark.getProduct().animate?.enable();\n });\n [this._labelMark, this._nonLeafLabelMark].forEach(m => {\n if (m && m.getComponent()) {\n m.getComponent().getProduct().getGroupGraphicItem().enableAnimation();\n }\n });\n // 在所有动画执行之后关闭动画\n this.event.off(VGRAMMAR_HOOK_EVENT.AFTER_DO_RENDER, this._enableAnimationHook);\n }\n\n protected disableMarkAnimation() {\n this.getMarks().forEach(mark => {\n mark.getProduct().animate?.disable();\n });\n [this._labelMark, this._nonLeafLabelMark].forEach(m => {\n if (m && m.getComponent()) {\n m.getComponent().getProduct().getGroupGraphicItem().disableAnimation();\n }\n });\n }\n\n getDefaultShapeType(): string {\n return 'square';\n }\n\n getActiveMarks(): IMark[] {\n return [this._nonLeafMark, this._leafMark];\n }\n}\n\nmixin(TreemapSeries, Drillable);\nmixin(TreemapSeries, Zoomable);\n\nexport const registerTreemapSeries = () => {\n registerRectMark();\n registerTextMark();\n registerTreemapAnimation();\n registerFadeInOutAnimation();\n Factory.registerSeries(TreemapSeries.type, TreemapSeries);\n};\n"]}
@@ -25,6 +25,7 @@ import type { ILegendSpec } from '../../component/legend';
25
25
  import type { ILayoutOrientPadding, ILayoutPaddingSpec } from '../layout';
26
26
  import type { ICustomPath2D } from '@visactor/vrender-core';
27
27
  import type { ICommonAxisSpec } from '../../component/axis';
28
+ import type { IMediaQuerySpec } from '..';
28
29
  export type IChartPadding = ILayoutOrientPadding | number;
29
30
  export interface IInitOption extends Omit<IRenderOption, 'pluginList'> {
30
31
  dom?: string | HTMLElement;
@@ -80,6 +81,7 @@ export interface IChartSpec {
80
81
  theme?: Omit<ITheme, 'name'> | string;
81
82
  background?: IBackgroundSpec;
82
83
  stackInverse?: boolean;
84
+ media?: IMediaQuerySpec;
83
85
  }
84
86
  export type IBackgroundStyleSpec = ConvertToMarkStyleSpec<Omit<IFillMarkSpec, 'width' | 'height' | 'background'>> & {
85
87
  image?: IRectMarkSpec['background'];
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/typings/spec/common.ts"],"names":[],"mappings":";;;AAyHA,IAAY,cASX;AATD,WAAY,cAAc;IACxB,qDAAqC,CAAA;IACrC,mDAAmC,CAAA;IACnC,+BAAe,CAAA;IACf,mCAAmB,CAAA;IACnB,qCAAqB,CAAA;IACrB,2BAAW,CAAA;IACX,qDAAqC,CAAA;IACrC,+BAAe,CAAA;AACjB,CAAC,EATW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QASzB","file":"common.js","sourcesContent":["import type { IFillMarkSpec, IImageMarkSpec } from '../visual';\nimport type { LayoutCallBack } from '../../layout/interface';\nimport type { IElement, srIOption3DType } from '@visactor/vgrammar-core';\nimport type {\n DataSet,\n DataView,\n ISimplifyOptions,\n IFieldsOptions,\n IFilterOptions,\n IFoldOptions,\n IDsvParserOptions\n} from '@visactor/vdataset';\nimport type { IRegionSpec } from '../../region/interface';\nimport type { IHoverSpec, ISelectSpec, ITriggerSpec } from '../../interaction/interface';\nimport type { IRenderOption } from '../../compile/interface';\nimport type { ITooltipSpec } from '../../component/tooltip/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport type { ILayoutSpec } from '../../layout/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport type {\n ConvertToMarkStyleSpec,\n IArc3dMarkSpec,\n IArcMarkSpec,\n IAreaMarkSpec,\n IBoxPlotMarkSpec,\n ICommonSpec,\n IGroupMarkSpec,\n ILineMarkSpec,\n ILinkPathMarkSpec,\n IPathMarkSpec,\n IPolygonMarkSpec,\n IProgressArcMarkSpec,\n IPyramid3dMarkSpec,\n IRect3dMarkSpec,\n IRectMarkSpec,\n IRuleMarkSpec,\n ISymbolMarkSpec,\n IRippleMarkSpec,\n ITextMarkSpec,\n IVisualSpecScale\n} from '../visual';\nimport type { StateValue } from '../../compile/mark';\nimport type { ISeriesStyle, SeriesType } from '../../series/interface';\nimport type { Datum, StringOrNumber } from '../common';\nimport type { IInvalidType } from '../data';\nimport type { IMorphSeriesSpec } from '../../animation/spec';\nimport type { IPlayer } from '../../component/player';\nimport type { IMarkProgressiveConfig, MarkTypeEnum } from '../../mark/interface';\nimport type { IDataZoomSpec, IScrollBarSpec } from '../../component/data-zoom';\nimport type { ICrosshairSpec } from '../../component/crosshair/interface';\nimport type { ITheme } from '../../theme';\nimport type { ITitleSpec } from '../../component/title/interface';\nimport type { IBrushSpec } from '../../component/brush';\nimport type { ITotalLabelSpec } from '../../component/label';\nimport type { ILegendSpec } from '../../component/legend';\nimport type { ILayoutOrientPadding, ILayoutPaddingSpec } from '../layout';\nimport type { ICustomPath2D } from '@visactor/vrender-core';\nimport type { ICommonAxisSpec } from '../../component/axis';\n\nexport type IChartPadding = ILayoutOrientPadding | number;\n\n/** chart option */\nexport interface IInitOption extends Omit<IRenderOption, 'pluginList'> {\n /**\n * **仅生效于浏览器环境。**\n * 图表挂载的父容器,可以直接指定容器 id,也可以传入 dom 对象\n */\n dom?: string | HTMLElement;\n /**\n * 除去选择 dom 属性进行挂载父容器,也可以使用 renderCanvas 属性直接传入 canvas 实例/ canvasId\n * 小程序/小组件环境请直接传入 id\n */\n renderCanvas?: string | HTMLCanvasElement;\n /** 数据集 */\n dataSet?: DataSet;\n /** 是否自适应容器大小 */\n autoFit?: boolean;\n /**\n * 性能测试钩子\n */\n performanceHook?: IPerformanceHook;\n /**\n * 是否开启动画\n */\n animation?: boolean;\n /**\n * 3d配置\n */\n options3d?: srIOption3DType;\n\n /**\n * 自定义布局函数\n */\n layout?: LayoutCallBack;\n\n /**\n * 当文本省略时,鼠标 hover 到文本上时是否显示 poptip\n * @default true\n */\n poptip?: boolean;\n\n /**\n * 报错的回调函数\n * @since 1.2.0\n */\n onError?: (...args: any[]) => void;\n\n /**\n * 默认主题(支持完整主题对象或者主题名称,主题名称需要提前在 `ThemeManager` 中注册)\n * @since 1.3.0\n */\n theme?: string | ITheme;\n\n /**\n * 是否关闭交互效果\n * @since 1.9.0\n * @default false\n */\n disableTriggerEvent?: boolean;\n}\n\nexport enum RenderModeEnum {\n 'desktop-browser' = 'desktop-browser',\n 'mobile-browser' = 'mobile-browser',\n 'node' = 'node',\n 'worker' = 'worker',\n 'miniApp' = 'miniApp',\n 'wx' = 'wx',\n 'desktop-miniApp' = 'desktop-miniApp',\n 'lynx' = 'lynx'\n}\nexport type RenderMode = keyof typeof RenderModeEnum;\n\n/** chart spec */\nexport interface IChartSpec {\n /** 图表类型 */\n type: string;\n /** 数据 */\n data?: IData;\n /** 画布宽度 */\n width?: number;\n /** 画布高度 */\n height?: number;\n /**\n * 图表宽高是否自适应容器,浏览器环境下默认为 true。\n * 该配置的优先级高于构造函数中的 autoFit 配置。\n * 如果用户配置了 width,则以用户配置的 width 为准,height 同理。\n */\n autoFit?: boolean;\n /**\n * 图表整体 padding 设置\n */\n padding?: ILayoutPaddingSpec;\n /**\n * 图表色系配置\n */\n color?: string[] | Omit<IVisualSpecScale<unknown, string>, 'id'>;\n /**\n * 系列\n * @description 仅在组合图中使用, 文档中除组合图外均未透出该配置\n */\n series?: ISeriesSpec[];\n /**\n * 系列样式\n * @description 仅在图表配置了seriesField时生效\n */\n seriesStyle?: ISeriesStyle;\n\n /**\n * 自动关闭动画的阀值,对应的是单系列data的长度\n * @since 1.2.0\n */\n animationThreshold?: number;\n\n /** hover 交互 */\n hover?: boolean | IHoverSpec;\n /** select 交互 */\n select?: boolean | ISelectSpec;\n\n /** region配置 */\n region?: IRegionSpec[];\n /** 图表标题配置 */\n title?: ITitleSpec;\n /** 布局配置 */\n layout?: ILayoutSpec;\n /** 图例配置 */\n legends?: ILegendSpec | ILegendSpec[];\n /** 十字辅助线配置 */\n crosshair?: ICrosshairSpec | ICrosshairSpec[];\n /** tooltip配置 */\n tooltip?: ITooltipSpec;\n /** 播放器配置 */\n player?: IPlayer;\n /** 缩略轴配置 */\n dataZoom?: IDataZoomSpec | IDataZoomSpec[];\n /** 滚动条配置 */\n scrollBar?: IScrollBarSpec | IScrollBarSpec[];\n /** 框选配置 */\n brush?: IBrushSpec;\n /** 全局 scale 配置 */\n scales?: IVisualSpecScale<unknown, unknown>[];\n /** 自定义mark */\n customMark?: ICustomMarkSpec<EnableMarkType>[];\n /** 轴 */\n axes?: ICommonAxisSpec[];\n /**\n * 图表上的主题定义。\n * 可以直接配置主题名,前提是该主题名已经注册\n */\n theme?: Omit<ITheme, 'name'> | string;\n /**\n * 图表背景色配置,优先级高于构造函数中的 background 配置\n */\n background?: IBackgroundSpec;\n\n // TODO:后续开放,现在仍有问题\n // poptip?: PopTipAttributes;\n // TODO: 补充动画配置\n\n /**\n * 堆积时是否逆序\n * @default false\n * @since 1.4.0\n */\n stackInverse?: boolean;\n}\n\nexport type IBackgroundStyleSpec = ConvertToMarkStyleSpec<Omit<IFillMarkSpec, 'width' | 'height' | 'background'>> & {\n image?: IRectMarkSpec['background'];\n cornerRadius?: IRectMarkSpec['cornerRadius'];\n};\n\nexport type IBackgroundSpec = string | IBackgroundStyleSpec;\n\n/** data */\nexport type IDataType = IDataValues | DataView;\nexport type IData = IDataType | IDataType[];\nexport type DataKeyType = string | string[] | ((data: Datum, index: number) => string);\nexport type BuildInTransformOptions =\n | {\n /** 地理数据简化 */\n type: 'simplify';\n options: ISimplifyOptions;\n }\n | {\n /** 数据维度处理,包括排序,逆序,数据筛选能力 */\n type: 'fields';\n options: IFieldsOptions;\n }\n | {\n /** 使用回调的自定义筛选 */\n type: 'filter';\n options: IFilterOptions;\n }\n | {\n /** 数据展开 */\n type: 'fold';\n options: IFoldOptions;\n };\n\nexport interface IFieldsMeta {\n /** TODO: 字段通用format, 暂时先不支持 */\n // format?: (datum: Datum, index: number) => unknown;\n /** 字段别名 */\n alias?: string;\n /** 字段取值范围 */\n domain?: StringOrNumber[];\n /** 是否使用 domain 锁定统计信息。默认为 false */\n lockStatisticsByDomain?: boolean;\n /** 连续型 还是 离散型 */\n type?: 'ordinal' | 'linear';\n /** 排序顺序 不设置的话当前维度不进行排序 */\n sortIndex?: number;\n /** 排序时是否反转 默认为 false */\n sortReverse?: boolean;\n}\n\nexport interface SheetParseOptions extends CommonParseOptions {\n type: 'csv' | 'dsv' | 'tsv';\n options?: IDsvParserOptions;\n}\n\nexport interface CommonParseOptions {\n /**\n * 是否需要对数据进行 clone,默认为 true。\n * 如果考虑性能,你可以将其关闭,但是这会带了一些副作用,即我们会对传入的数据进行修改(不会对原有字段及值修改,只会在原有数据基础上添加一些字段)。\n * @default true\n * @since 1.3.0\n */\n clone?: boolean;\n}\n\nexport interface IDataValues {\n /**\n * 数据唯一标识\n */\n id?: StringOrNumber;\n /**\n * 数据\n */\n values: Datum[] | string;\n /**\n * 引用的数据索引\n */\n fromDataIndex?: number;\n /**\n * 引用的数据 id\n */\n fromDataId?: StringOrNumber;\n /**\n * 数据 transform 配置\n */\n transforms?: BuildInTransformOptions[];\n /**\n * 数据字段相关配置\n */\n fields?: Record<\n /** 字段key */\n string,\n IFieldsMeta\n >;\n\n parser?: SheetParseOptions | CommonParseOptions;\n}\n\nexport type IHierarchyNodeData = {\n value?: number;\n children?: IHierarchyNodeData[];\n} & Datum;\n\nexport interface IHierarchyDataValues extends Omit<IDataValues, 'values'> {\n values: IHierarchyNodeData;\n}\n\nexport type IHierarchyData = DataView | IHierarchyDataValues;\n\n/** series */\nexport interface ISeriesSpec extends ITriggerSpec {\n /** 系列类型 */\n type: SeriesType;\n\n /** 系列名称 */\n name?: string;\n\n /** 用户自定义的 series id */\n id?: StringOrNumber;\n /**\n * 系列数据\n * @description 系列可以配置自身的数据,也可以从chart.data中获取数据\n */\n data?: IDataType;\n /**\n * 系列关联的数据索引\n * @default 0\n */\n dataIndex?: number;\n /**\n * 系列关联的数据id\n */\n dataId?: StringOrNumber;\n /**\n * dataKey用于绑定数据与Mark的关系, 该配置在动画中非常重要.\n */\n dataKey?: DataKeyType;\n\n /**\n * 系列关联的region索引\n * @default 0\n */\n regionIndex?: number;\n /** 系列关联的region id */\n regionId?: StringOrNumber;\n /**\n * 分组字段\n */\n seriesField?: string;\n /**\n * 系列样式\n * @description 仅在图表配置了seriesField时生效\n */\n seriesStyle?: ISeriesStyle;\n\n /** 是否对数据进行堆叠处理 */\n stack?: boolean;\n\n /**\n * 堆叠时的分组值\n * stackValue 相等的系列将在一起堆积。没有配置的系列将在一组\n * @since 1.4.0\n */\n stackValue?: StringOrNumber;\n\n /** 堆叠汇总标签\n * @since 1.3.0\n */\n totalLabel?: ITotalLabelSpec;\n\n /** 是否对数据进行百分比处理 */\n percent?: boolean;\n\n /** 是否围绕中心轴偏移轮廓 */\n stackOffsetSilhouette?: boolean;\n\n /**\n * 非合规数据点连接方式\n * @description null,undefined等非法数据点连接方式。\n * @default 'break'\n * 'break'指在该数据点处断开\n * 'link' 指忽略该点保持连续\n * 'zero' 指该点默认数值为0\n * 'ignore' 指不处理\n */\n invalidType?: IInvalidType;\n\n /** 提示信息 */\n tooltip?: ITooltipSpec;\n\n /**\n * 是否开启系列动画\n */\n animation?: boolean;\n /**\n * 自动关闭动画的阀值,对应的是单系列data的长度\n * @since 1.2.0\n */\n animationThreshold?: number;\n\n /**\n * 是否支持3d视角\n */\n support3d?: boolean;\n /**\n * morph 动画配置\n */\n morph?: IMorphSeriesSpec;\n\n /**\n * 扩展mark\n */\n extensionMark?: (IExtensionMarkSpec<Exclude<EnableMarkType, MarkTypeEnum.group>> | IExtensionGroupMarkSpec)[];\n\n /**\n * series background\n * 作用是支持系列的图形对系列背景进行 mask,或者切分等效果。不是作为背景图\n * 暂时不开放api,避免出现break change\n */\n // background?: IBackgroundSpec;\n}\n\nexport type IChartExtendsSeriesSpec<T extends ISeriesSpec> = Omit<T, 'data' | 'morph' | 'stackValue'>;\n\nexport type AdaptiveSpec<T, K extends keyof any> = {\n [key in Exclude<keyof T, K>]: T[key];\n} & { [key in K]: any };\n\n/** markSpec */\nexport type IMarkSpec<T extends ICommonSpec = ICommonSpec> = {\n /**\n * 用户id\n */\n id?: StringOrNumber;\n /**\n * 是否响应交互\n */\n interactive?: boolean;\n // /**\n // * 是否会被region区域裁减\n // * @todo 暂未支持\n // */\n // clip?: boolean;\n /**\n * 与其他mark元素的层级\n */\n zIndex?: number;\n /**\n * mark 层 是否显示配置\n */\n visible?: boolean;\n /** 默认样式设置 */\n style?: ConvertToMarkStyleSpec<T>;\n /** 不同状态下的样式配置 */\n state?: Record<StateValue, IMarkStateSpec<T> | IMarkStateStyleSpec<T>>;\n\n /* 是否是3d视角的mark */\n support3d?: boolean;\n /* customized shape of mark */\n customShape?: (datum: any[], attrs: any, path: ICustomPath2D) => ICustomPath2D;\n} & IMarkProgressiveConfig;\n\nexport type IMarkStateFilter =\n | {\n /** 维度筛选 */\n fields: { [key in string]: { type: 'ordinal' | 'linear'; domain: StringOrNumber[] } };\n }\n | {\n /** 筛选数据 */\n datums: Datum[];\n /** 筛选数据 */\n datumKeys: string[];\n }\n | {\n /** 筛选 item */\n items: IElement[];\n }\n /** 筛选函数 */\n | ((datum: Datum, options: Record<string, any>) => boolean);\n\nexport interface IMarkStateSpec<T> {\n /** 筛选器 */\n filter?: IMarkStateFilter;\n /** 状态优先级 */\n level?: number | undefined;\n style: ConvertToMarkStyleSpec<T>;\n}\n\nexport type IMarkStateStyleSpec<T> = ConvertToMarkStyleSpec<T>;\n\nexport type IMarkTheme<T> = {\n /**\n * mark 层 是否显示配置\n */\n visible?: boolean;\n /** 默认样式设置 */\n style?: T;\n /** 不同状态下的样式配置 */\n state?: Record<StateValue, T>;\n /**\n * 可交互的开关\n */\n interactive?: boolean;\n};\n\nexport interface IPerformanceHook {\n // InitRender\n // ├── InitializeChart\n // ├── CompileToVGrammar\n // ├── ParseView\n // | └── ParseExpression\n // ├── (new View)\n // | ├── CreateRuntime\n // | └── (view.initialize)\n // | └── CreateVRenderStage\n // └── SrViewEvaluateAsync / SrViewRunAsync\n // ├── MarkTransform\n // ├── FacetTransform\n // ├── CreateVRenderMark\n // └── VRenderDraw\n\n // 初始化图表配置\n beforeInitializeChart?: () => void;\n afterInitializeChart?: () => void;\n\n // 编译\n beforeCompileToVGrammar?: () => void;\n afterCompileToVGrammar?: () => void;\n // 各个图表模块编译\n beforeRegionCompile?: () => void;\n afterRegionCompile?: () => void;\n beforeSeriesCompile?: () => void;\n afterSeriesCompile?: () => void;\n beforeComponentCompile?: () => void;\n afterComponentCompile?: () => void;\n\n // resize的时候的钩子\n beforeResizeWithUpdate?: () => void;\n afterResizeWithUpdate?: () => void;\n\n // LayoutWithSceneGraph 二次布局\n beforeLayoutWithSceneGraph?: () => void;\n afterLayoutWithSceneGraph?: () => void;\n\n // VGrammar 解析spec\n beforeParseView?: () => void;\n afterParseView?: () => void;\n\n // 初始化runtime\n beforeCreateRuntime?: () => void;\n afterCreateRuntime?: () => void;\n\n // VGrammar EvaluateAsync 时间\n beforeSrViewEvaluateAsync?: () => void;\n afterSrViewEvaluateAsync?: () => void;\n\n // VGrammar RunAsync 时间\n beforeSrViewRunAsync?: () => void;\n afterSrViewRunAsync?: () => void;\n\n // transform测量\n beforeTransform?: (name: string) => void;\n afterTransform?: (name: string) => void;\n\n // Create VRender Stage 时间\n beforeCreateVRenderStage?: () => void;\n afterCreateVRenderStage?: () => void;\n\n // Create VRender Mark 时间\n beforeCreateVRenderMark?: () => void;\n afterCreateVRenderMark?: () => void;\n\n // VRender Draw 时间\n beforeVRenderDraw?: () => void;\n afterVRenderDraw?: () => void;\n}\n\nexport type IBuildinMarkSpec = {\n [MarkTypeEnum.group]: IGroupMarkSpec;\n\n [MarkTypeEnum.symbol]: ISymbolMarkSpec;\n [MarkTypeEnum.rule]: IRuleMarkSpec;\n [MarkTypeEnum.line]: ILineMarkSpec;\n [MarkTypeEnum.text]: ITextMarkSpec;\n [MarkTypeEnum.rect]: IRectMarkSpec;\n [MarkTypeEnum.rect3d]: IRect3dMarkSpec;\n [MarkTypeEnum.image]: IImageMarkSpec;\n [MarkTypeEnum.path]: IPathMarkSpec;\n [MarkTypeEnum.area]: IAreaMarkSpec;\n [MarkTypeEnum.arc]: IArcMarkSpec;\n [MarkTypeEnum.arc3d]: IArc3dMarkSpec;\n [MarkTypeEnum.polygon]: IPolygonMarkSpec;\n [MarkTypeEnum.pyramid3d]: IPyramid3dMarkSpec;\n [MarkTypeEnum.boxPlot]: IBoxPlotMarkSpec;\n [MarkTypeEnum.linkPath]: ILinkPathMarkSpec;\n [MarkTypeEnum.progressArc]: IProgressArcMarkSpec;\n [MarkTypeEnum.ripple]: IRippleMarkSpec;\n};\nexport type EnableMarkType = keyof IBuildinMarkSpec;\nexport interface ICustomMarkSpec<T extends EnableMarkType> extends IMarkSpec<IBuildinMarkSpec[T]> {\n type: T;\n /**\n * 关联的数据索引\n * @default 与系列使用同一份数据\n */\n dataIndex?: number;\n /**\n * 关联的数据id\n */\n dataId?: StringOrNumber;\n}\nexport interface ICustomMarkGroupSpec extends ICustomMarkSpec<MarkTypeEnum.group> {\n children?: ICustomMarkSpec<EnableMarkType>[];\n}\n\nexport interface IExtensionMarkSpec<T extends Exclude<EnableMarkType, MarkTypeEnum.group>> extends ICustomMarkSpec<T> {\n /**\n * 关联的数据索引\n * @default 与系列使用同一份数据\n */\n dataIndex?: number;\n /**\n * 关联的数据id\n */\n dataId?: StringOrNumber;\n}\n\nexport interface IExtensionGroupMarkSpec extends ICustomMarkSpec<MarkTypeEnum.group> {\n /**\n * 支持子节点\n */\n children?: ICustomMarkSpec<EnableMarkType>[];\n}\n"]}
1
+ {"version":3,"sources":["../src/typings/spec/common.ts"],"names":[],"mappings":";;;AA0HA,IAAY,cASX;AATD,WAAY,cAAc;IACxB,qDAAqC,CAAA;IACrC,mDAAmC,CAAA;IACnC,+BAAe,CAAA;IACf,mCAAmB,CAAA;IACnB,qCAAqB,CAAA;IACrB,2BAAW,CAAA;IACX,qDAAqC,CAAA;IACrC,+BAAe,CAAA;AACjB,CAAC,EATW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QASzB","file":"common.js","sourcesContent":["import type { IFillMarkSpec, IImageMarkSpec } from '../visual';\nimport type { LayoutCallBack } from '../../layout/interface';\nimport type { IElement, srIOption3DType } from '@visactor/vgrammar-core';\nimport type {\n DataSet,\n DataView,\n ISimplifyOptions,\n IFieldsOptions,\n IFilterOptions,\n IFoldOptions,\n IDsvParserOptions\n} from '@visactor/vdataset';\nimport type { IRegionSpec } from '../../region/interface';\nimport type { IHoverSpec, ISelectSpec, ITriggerSpec } from '../../interaction/interface';\nimport type { IRenderOption } from '../../compile/interface';\nimport type { ITooltipSpec } from '../../component/tooltip/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport type { ILayoutSpec } from '../../layout/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport type {\n ConvertToMarkStyleSpec,\n IArc3dMarkSpec,\n IArcMarkSpec,\n IAreaMarkSpec,\n IBoxPlotMarkSpec,\n ICommonSpec,\n IGroupMarkSpec,\n ILineMarkSpec,\n ILinkPathMarkSpec,\n IPathMarkSpec,\n IPolygonMarkSpec,\n IProgressArcMarkSpec,\n IPyramid3dMarkSpec,\n IRect3dMarkSpec,\n IRectMarkSpec,\n IRuleMarkSpec,\n ISymbolMarkSpec,\n IRippleMarkSpec,\n ITextMarkSpec,\n IVisualSpecScale\n} from '../visual';\nimport type { StateValue } from '../../compile/mark';\nimport type { ISeriesStyle, SeriesType } from '../../series/interface';\nimport type { Datum, StringOrNumber } from '../common';\nimport type { IInvalidType } from '../data';\nimport type { IMorphSeriesSpec } from '../../animation/spec';\nimport type { IPlayer } from '../../component/player';\nimport type { IMarkProgressiveConfig, MarkTypeEnum } from '../../mark/interface';\nimport type { IDataZoomSpec, IScrollBarSpec } from '../../component/data-zoom';\nimport type { ICrosshairSpec } from '../../component/crosshair/interface';\nimport type { ITheme } from '../../theme';\nimport type { ITitleSpec } from '../../component/title/interface';\nimport type { IBrushSpec } from '../../component/brush';\nimport type { ITotalLabelSpec } from '../../component/label';\nimport type { ILegendSpec } from '../../component/legend';\nimport type { ILayoutOrientPadding, ILayoutPaddingSpec } from '../layout';\nimport type { ICustomPath2D } from '@visactor/vrender-core';\nimport type { ICommonAxisSpec } from '../../component/axis';\nimport type { IMediaQuerySpec } from '..';\n\nexport type IChartPadding = ILayoutOrientPadding | number;\n\n/** chart option */\nexport interface IInitOption extends Omit<IRenderOption, 'pluginList'> {\n /**\n * **仅生效于浏览器环境。**\n * 图表挂载的父容器,可以直接指定容器 id,也可以传入 dom 对象\n */\n dom?: string | HTMLElement;\n /**\n * 除去选择 dom 属性进行挂载父容器,也可以使用 renderCanvas 属性直接传入 canvas 实例/ canvasId\n * 小程序/小组件环境请直接传入 id\n */\n renderCanvas?: string | HTMLCanvasElement;\n /** 数据集 */\n dataSet?: DataSet;\n /** 是否自适应容器大小 */\n autoFit?: boolean;\n /**\n * 性能测试钩子\n */\n performanceHook?: IPerformanceHook;\n /**\n * 是否开启动画\n */\n animation?: boolean;\n /**\n * 3d配置\n */\n options3d?: srIOption3DType;\n\n /**\n * 自定义布局函数\n */\n layout?: LayoutCallBack;\n\n /**\n * 当文本省略时,鼠标 hover 到文本上时是否显示 poptip\n * @default true\n */\n poptip?: boolean;\n\n /**\n * 报错的回调函数\n * @since 1.2.0\n */\n onError?: (...args: any[]) => void;\n\n /**\n * 默认主题(支持完整主题对象或者主题名称,主题名称需要提前在 `ThemeManager` 中注册)\n * @since 1.3.0\n */\n theme?: string | ITheme;\n\n /**\n * 是否关闭交互效果\n * @since 1.9.0\n * @default false\n */\n disableTriggerEvent?: boolean;\n}\n\nexport enum RenderModeEnum {\n 'desktop-browser' = 'desktop-browser',\n 'mobile-browser' = 'mobile-browser',\n 'node' = 'node',\n 'worker' = 'worker',\n 'miniApp' = 'miniApp',\n 'wx' = 'wx',\n 'desktop-miniApp' = 'desktop-miniApp',\n 'lynx' = 'lynx'\n}\nexport type RenderMode = keyof typeof RenderModeEnum;\n\n/** chart spec */\nexport interface IChartSpec {\n /** 图表类型 */\n type: string;\n /** 数据 */\n data?: IData;\n /** 画布宽度 */\n width?: number;\n /** 画布高度 */\n height?: number;\n /**\n * 图表宽高是否自适应容器,浏览器环境下默认为 true。\n * 该配置的优先级高于构造函数中的 autoFit 配置。\n * 如果用户配置了 width,则以用户配置的 width 为准,height 同理。\n */\n autoFit?: boolean;\n /**\n * 图表整体 padding 设置\n */\n padding?: ILayoutPaddingSpec;\n /**\n * 图表色系配置\n */\n color?: string[] | Omit<IVisualSpecScale<unknown, string>, 'id'>;\n /**\n * 系列\n * @description 仅在组合图中使用, 文档中除组合图外均未透出该配置\n */\n series?: ISeriesSpec[];\n /**\n * 系列样式\n * @description 仅在图表配置了seriesField时生效\n */\n seriesStyle?: ISeriesStyle;\n\n /**\n * 自动关闭动画的阀值,对应的是单系列data的长度\n * @since 1.2.0\n */\n animationThreshold?: number;\n\n /** hover 交互 */\n hover?: boolean | IHoverSpec;\n /** select 交互 */\n select?: boolean | ISelectSpec;\n\n /** region配置 */\n region?: IRegionSpec[];\n /** 图表标题配置 */\n title?: ITitleSpec;\n /** 布局配置 */\n layout?: ILayoutSpec;\n /** 图例配置 */\n legends?: ILegendSpec | ILegendSpec[];\n /** 十字辅助线配置 */\n crosshair?: ICrosshairSpec | ICrosshairSpec[];\n /** tooltip配置 */\n tooltip?: ITooltipSpec;\n /** 播放器配置 */\n player?: IPlayer;\n /** 缩略轴配置 */\n dataZoom?: IDataZoomSpec | IDataZoomSpec[];\n /** 滚动条配置 */\n scrollBar?: IScrollBarSpec | IScrollBarSpec[];\n /** 框选配置 */\n brush?: IBrushSpec;\n /** 全局 scale 配置 */\n scales?: IVisualSpecScale<unknown, unknown>[];\n /** 自定义mark */\n customMark?: ICustomMarkSpec<EnableMarkType>[];\n /** 轴 */\n axes?: ICommonAxisSpec[];\n /**\n * 图表上的主题定义。\n * 可以直接配置主题名,前提是该主题名已经注册\n */\n theme?: Omit<ITheme, 'name'> | string;\n /**\n * 图表背景色配置,优先级高于构造函数中的 background 配置\n */\n background?: IBackgroundSpec;\n\n // TODO:后续开放,现在仍有问题\n // poptip?: PopTipAttributes;\n // TODO: 补充动画配置\n\n /**\n * 堆积时是否逆序\n * @default false\n * @since 1.4.0\n */\n stackInverse?: boolean;\n /**\n * 媒体查询配置\n * @since 1.8.0\n */\n media?: IMediaQuerySpec;\n}\n\nexport type IBackgroundStyleSpec = ConvertToMarkStyleSpec<Omit<IFillMarkSpec, 'width' | 'height' | 'background'>> & {\n image?: IRectMarkSpec['background'];\n cornerRadius?: IRectMarkSpec['cornerRadius'];\n};\n\nexport type IBackgroundSpec = string | IBackgroundStyleSpec;\n\n/** data */\nexport type IDataType = IDataValues | DataView;\nexport type IData = IDataType | IDataType[];\nexport type DataKeyType = string | string[] | ((data: Datum, index: number) => string);\nexport type BuildInTransformOptions =\n | {\n /** 地理数据简化 */\n type: 'simplify';\n options: ISimplifyOptions;\n }\n | {\n /** 数据维度处理,包括排序,逆序,数据筛选能力 */\n type: 'fields';\n options: IFieldsOptions;\n }\n | {\n /** 使用回调的自定义筛选 */\n type: 'filter';\n options: IFilterOptions;\n }\n | {\n /** 数据展开 */\n type: 'fold';\n options: IFoldOptions;\n };\n\nexport interface IFieldsMeta {\n /** TODO: 字段通用format, 暂时先不支持 */\n // format?: (datum: Datum, index: number) => unknown;\n /** 字段别名 */\n alias?: string;\n /** 字段取值范围 */\n domain?: StringOrNumber[];\n /** 是否使用 domain 锁定统计信息。默认为 false */\n lockStatisticsByDomain?: boolean;\n /** 连续型 还是 离散型 */\n type?: 'ordinal' | 'linear';\n /** 排序顺序 不设置的话当前维度不进行排序 */\n sortIndex?: number;\n /** 排序时是否反转 默认为 false */\n sortReverse?: boolean;\n}\n\nexport interface SheetParseOptions extends CommonParseOptions {\n type: 'csv' | 'dsv' | 'tsv';\n options?: IDsvParserOptions;\n}\n\nexport interface CommonParseOptions {\n /**\n * 是否需要对数据进行 clone,默认为 true。\n * 如果考虑性能,你可以将其关闭,但是这会带了一些副作用,即我们会对传入的数据进行修改(不会对原有字段及值修改,只会在原有数据基础上添加一些字段)。\n * @default true\n * @since 1.3.0\n */\n clone?: boolean;\n}\n\nexport interface IDataValues {\n /**\n * 数据唯一标识\n */\n id?: StringOrNumber;\n /**\n * 数据\n */\n values: Datum[] | string;\n /**\n * 引用的数据索引\n */\n fromDataIndex?: number;\n /**\n * 引用的数据 id\n */\n fromDataId?: StringOrNumber;\n /**\n * 数据 transform 配置\n */\n transforms?: BuildInTransformOptions[];\n /**\n * 数据字段相关配置\n */\n fields?: Record<\n /** 字段key */\n string,\n IFieldsMeta\n >;\n\n parser?: SheetParseOptions | CommonParseOptions;\n}\n\nexport type IHierarchyNodeData = {\n value?: number;\n children?: IHierarchyNodeData[];\n} & Datum;\n\nexport interface IHierarchyDataValues extends Omit<IDataValues, 'values'> {\n values: IHierarchyNodeData;\n}\n\nexport type IHierarchyData = DataView | IHierarchyDataValues;\n\n/** series */\nexport interface ISeriesSpec extends ITriggerSpec {\n /** 系列类型 */\n type: SeriesType;\n\n /** 系列名称 */\n name?: string;\n\n /** 用户自定义的 series id */\n id?: StringOrNumber;\n /**\n * 系列数据\n * @description 系列可以配置自身的数据,也可以从chart.data中获取数据\n */\n data?: IDataType;\n /**\n * 系列关联的数据索引\n * @default 0\n */\n dataIndex?: number;\n /**\n * 系列关联的数据id\n */\n dataId?: StringOrNumber;\n /**\n * dataKey用于绑定数据与Mark的关系, 该配置在动画中非常重要.\n */\n dataKey?: DataKeyType;\n\n /**\n * 系列关联的region索引\n * @default 0\n */\n regionIndex?: number;\n /** 系列关联的region id */\n regionId?: StringOrNumber;\n /**\n * 分组字段\n */\n seriesField?: string;\n /**\n * 系列样式\n * @description 仅在图表配置了seriesField时生效\n */\n seriesStyle?: ISeriesStyle;\n\n /** 是否对数据进行堆叠处理 */\n stack?: boolean;\n\n /**\n * 堆叠时的分组值\n * stackValue 相等的系列将在一起堆积。没有配置的系列将在一组\n * @since 1.4.0\n */\n stackValue?: StringOrNumber;\n\n /** 堆叠汇总标签\n * @since 1.3.0\n */\n totalLabel?: ITotalLabelSpec;\n\n /** 是否对数据进行百分比处理 */\n percent?: boolean;\n\n /** 是否围绕中心轴偏移轮廓 */\n stackOffsetSilhouette?: boolean;\n\n /**\n * 非合规数据点连接方式\n * @description null,undefined等非法数据点连接方式。\n * @default 'break'\n * 'break'指在该数据点处断开\n * 'link' 指忽略该点保持连续\n * 'zero' 指该点默认数值为0\n * 'ignore' 指不处理\n */\n invalidType?: IInvalidType;\n\n /** 提示信息 */\n tooltip?: ITooltipSpec;\n\n /**\n * 是否开启系列动画\n */\n animation?: boolean;\n /**\n * 自动关闭动画的阀值,对应的是单系列data的长度\n * @since 1.2.0\n */\n animationThreshold?: number;\n\n /**\n * 是否支持3d视角\n */\n support3d?: boolean;\n /**\n * morph 动画配置\n */\n morph?: IMorphSeriesSpec;\n\n /**\n * 扩展mark\n */\n extensionMark?: (IExtensionMarkSpec<Exclude<EnableMarkType, MarkTypeEnum.group>> | IExtensionGroupMarkSpec)[];\n\n /**\n * series background\n * 作用是支持系列的图形对系列背景进行 mask,或者切分等效果。不是作为背景图\n * 暂时不开放api,避免出现break change\n */\n // background?: IBackgroundSpec;\n}\n\nexport type IChartExtendsSeriesSpec<T extends ISeriesSpec> = Omit<T, 'data' | 'morph' | 'stackValue'>;\n\nexport type AdaptiveSpec<T, K extends keyof any> = {\n [key in Exclude<keyof T, K>]: T[key];\n} & { [key in K]: any };\n\n/** markSpec */\nexport type IMarkSpec<T extends ICommonSpec = ICommonSpec> = {\n /**\n * 用户id\n */\n id?: StringOrNumber;\n /**\n * 是否响应交互\n */\n interactive?: boolean;\n // /**\n // * 是否会被region区域裁减\n // * @todo 暂未支持\n // */\n // clip?: boolean;\n /**\n * 与其他mark元素的层级\n */\n zIndex?: number;\n /**\n * mark 层 是否显示配置\n */\n visible?: boolean;\n /** 默认样式设置 */\n style?: ConvertToMarkStyleSpec<T>;\n /** 不同状态下的样式配置 */\n state?: Record<StateValue, IMarkStateSpec<T> | IMarkStateStyleSpec<T>>;\n\n /* 是否是3d视角的mark */\n support3d?: boolean;\n /* customized shape of mark */\n customShape?: (datum: any[], attrs: any, path: ICustomPath2D) => ICustomPath2D;\n} & IMarkProgressiveConfig;\n\nexport type IMarkStateFilter =\n | {\n /** 维度筛选 */\n fields: { [key in string]: { type: 'ordinal' | 'linear'; domain: StringOrNumber[] } };\n }\n | {\n /** 筛选数据 */\n datums: Datum[];\n /** 筛选数据 */\n datumKeys: string[];\n }\n | {\n /** 筛选 item */\n items: IElement[];\n }\n /** 筛选函数 */\n | ((datum: Datum, options: Record<string, any>) => boolean);\n\nexport interface IMarkStateSpec<T> {\n /** 筛选器 */\n filter?: IMarkStateFilter;\n /** 状态优先级 */\n level?: number | undefined;\n style: ConvertToMarkStyleSpec<T>;\n}\n\nexport type IMarkStateStyleSpec<T> = ConvertToMarkStyleSpec<T>;\n\nexport type IMarkTheme<T> = {\n /**\n * mark 层 是否显示配置\n */\n visible?: boolean;\n /** 默认样式设置 */\n style?: T;\n /** 不同状态下的样式配置 */\n state?: Record<StateValue, T>;\n /**\n * 可交互的开关\n */\n interactive?: boolean;\n};\n\nexport interface IPerformanceHook {\n // InitRender\n // ├── InitializeChart\n // ├── CompileToVGrammar\n // ├── ParseView\n // | └── ParseExpression\n // ├── (new View)\n // | ├── CreateRuntime\n // | └── (view.initialize)\n // | └── CreateVRenderStage\n // └── SrViewEvaluateAsync / SrViewRunAsync\n // ├── MarkTransform\n // ├── FacetTransform\n // ├── CreateVRenderMark\n // └── VRenderDraw\n\n // 初始化图表配置\n beforeInitializeChart?: () => void;\n afterInitializeChart?: () => void;\n\n // 编译\n beforeCompileToVGrammar?: () => void;\n afterCompileToVGrammar?: () => void;\n // 各个图表模块编译\n beforeRegionCompile?: () => void;\n afterRegionCompile?: () => void;\n beforeSeriesCompile?: () => void;\n afterSeriesCompile?: () => void;\n beforeComponentCompile?: () => void;\n afterComponentCompile?: () => void;\n\n // resize的时候的钩子\n beforeResizeWithUpdate?: () => void;\n afterResizeWithUpdate?: () => void;\n\n // LayoutWithSceneGraph 二次布局\n beforeLayoutWithSceneGraph?: () => void;\n afterLayoutWithSceneGraph?: () => void;\n\n // VGrammar 解析spec\n beforeParseView?: () => void;\n afterParseView?: () => void;\n\n // 初始化runtime\n beforeCreateRuntime?: () => void;\n afterCreateRuntime?: () => void;\n\n // VGrammar EvaluateAsync 时间\n beforeSrViewEvaluateAsync?: () => void;\n afterSrViewEvaluateAsync?: () => void;\n\n // VGrammar RunAsync 时间\n beforeSrViewRunAsync?: () => void;\n afterSrViewRunAsync?: () => void;\n\n // transform测量\n beforeTransform?: (name: string) => void;\n afterTransform?: (name: string) => void;\n\n // Create VRender Stage 时间\n beforeCreateVRenderStage?: () => void;\n afterCreateVRenderStage?: () => void;\n\n // Create VRender Mark 时间\n beforeCreateVRenderMark?: () => void;\n afterCreateVRenderMark?: () => void;\n\n // VRender Draw 时间\n beforeVRenderDraw?: () => void;\n afterVRenderDraw?: () => void;\n}\n\nexport type IBuildinMarkSpec = {\n [MarkTypeEnum.group]: IGroupMarkSpec;\n\n [MarkTypeEnum.symbol]: ISymbolMarkSpec;\n [MarkTypeEnum.rule]: IRuleMarkSpec;\n [MarkTypeEnum.line]: ILineMarkSpec;\n [MarkTypeEnum.text]: ITextMarkSpec;\n [MarkTypeEnum.rect]: IRectMarkSpec;\n [MarkTypeEnum.rect3d]: IRect3dMarkSpec;\n [MarkTypeEnum.image]: IImageMarkSpec;\n [MarkTypeEnum.path]: IPathMarkSpec;\n [MarkTypeEnum.area]: IAreaMarkSpec;\n [MarkTypeEnum.arc]: IArcMarkSpec;\n [MarkTypeEnum.arc3d]: IArc3dMarkSpec;\n [MarkTypeEnum.polygon]: IPolygonMarkSpec;\n [MarkTypeEnum.pyramid3d]: IPyramid3dMarkSpec;\n [MarkTypeEnum.boxPlot]: IBoxPlotMarkSpec;\n [MarkTypeEnum.linkPath]: ILinkPathMarkSpec;\n [MarkTypeEnum.progressArc]: IProgressArcMarkSpec;\n [MarkTypeEnum.ripple]: IRippleMarkSpec;\n};\nexport type EnableMarkType = keyof IBuildinMarkSpec;\nexport interface ICustomMarkSpec<T extends EnableMarkType> extends IMarkSpec<IBuildinMarkSpec[T]> {\n type: T;\n /**\n * 关联的数据索引\n * @default 与系列使用同一份数据\n */\n dataIndex?: number;\n /**\n * 关联的数据id\n */\n dataId?: StringOrNumber;\n}\nexport interface ICustomMarkGroupSpec extends ICustomMarkSpec<MarkTypeEnum.group> {\n children?: ICustomMarkSpec<EnableMarkType>[];\n}\n\nexport interface IExtensionMarkSpec<T extends Exclude<EnableMarkType, MarkTypeEnum.group>> extends ICustomMarkSpec<T> {\n /**\n * 关联的数据索引\n * @default 与系列使用同一份数据\n */\n dataIndex?: number;\n /**\n * 关联的数据id\n */\n dataId?: StringOrNumber;\n}\n\nexport interface IExtensionGroupMarkSpec extends ICustomMarkSpec<MarkTypeEnum.group> {\n /**\n * 支持子节点\n */\n children?: ICustomMarkSpec<EnableMarkType>[];\n}\n"]}
@@ -2,3 +2,4 @@ export * from './common';
2
2
  export type { IStateSpec, StateValueType } from '../../compile/mark';
3
3
  export * from './chart';
4
4
  export type { IRegionSpec, IGeoRegionSpec } from '../../region/interface';
5
+ export * from './media-query';
@@ -17,5 +17,6 @@ var __createBinding = this && this.__createBinding || (Object.create ? function(
17
17
 
18
18
  Object.defineProperty(exports, "__esModule", {
19
19
  value: !0
20
- }), __exportStar(require("./common"), exports), __exportStar(require("./chart"), exports);
20
+ }), __exportStar(require("./common"), exports), __exportStar(require("./chart"), exports),
21
+ __exportStar(require("./media-query"), exports);
21
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/typings/spec/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AAEzB,0CAAwB","file":"index.js","sourcesContent":["export * from './common';\nexport type { IStateSpec, StateValueType } from '../../compile/mark';\nexport * from './chart';\nexport type { IRegionSpec, IGeoRegionSpec } from '../../region/interface';\n"]}
1
+ {"version":3,"sources":["../src/typings/spec/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AAEzB,0CAAwB;AAExB,gDAA8B","file":"index.js","sourcesContent":["export * from './common';\nexport type { IStateSpec, StateValueType } from '../../compile/mark';\nexport * from './chart';\nexport type { IRegionSpec, IGeoRegionSpec } from '../../region/interface';\nexport * from './media-query';\n"]}
@@ -1,8 +1,11 @@
1
- import type { ComponentTypeEnum } from '../../../../component/interface';
2
- import type { IChartSpec, IVChart } from '../../../../core';
3
- import type { IModelSpecInfo } from '../../../../model/interface';
4
- import type { SeriesTypeEnum } from '../../../../series';
5
- import type { IMediaInfo } from './common';
1
+ import type { ComponentTypeEnum } from '../../component/interface';
2
+ import type { IChartSpec, IVChart } from '../../core';
3
+ import type { IModelSpecInfo } from '../../model/interface';
4
+ import type { SeriesTypeEnum } from '../../series';
5
+ export interface IMediaInfo {
6
+ width: number;
7
+ height: number;
8
+ }
6
9
  export type IMediaQuerySpec = IMediaQueryItem[];
7
10
  export interface IMediaQueryItem {
8
11
  query: IMediaQueryCondition;
@@ -3,4 +3,4 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  });
6
- //# sourceMappingURL=spec.js.map
6
+ //# sourceMappingURL=media-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/typings/spec/media-query.ts"],"names":[],"mappings":"","file":"media-query.js","sourcesContent":["import type { ComponentTypeEnum } from '../../component/interface';\nimport type { IChartSpec, IVChart } from '../../core';\nimport type { IModelSpecInfo } from '../../model/interface';\nimport type { SeriesTypeEnum } from '../../series';\n\nexport interface IMediaInfo {\n /** 图表宽度 */\n width: number;\n /** 图表高度 */\n height: number;\n}\n\n/**\n * 媒体查询配置(包含多项查询)\n * @since 1.8.0\n */\nexport type IMediaQuerySpec = IMediaQueryItem[];\n\n/** 媒体查询配置(表示一项查询)*/\nexport interface IMediaQueryItem {\n /** 媒体查询条件 */\n query: IMediaQueryCondition;\n /** 命中媒体查询条件之后的动作 */\n action: IMediaQueryAction | IMediaQueryAction[];\n}\n\n/** 媒体查询条件,多个属性之间为“且”关系 */\nexport interface IMediaQueryCondition {\n /** 最小图表宽度 */\n minWidth?: number;\n /** 最大图表宽度 */\n maxWidth?: number;\n /** 最小图表高度 */\n minHeight?: number;\n /** 最大图表高度 */\n maxHeight?: number;\n /** 当图表宽度或高度发生变化时触发的回调,由回调指定是否命中查询条件 */\n onResize?: (info: IMediaInfo, vchart: IVChart) => boolean;\n}\n\n/** 命中媒体查询条件之后的动作 */\nexport interface IMediaQueryAction<T extends Record<string, unknown> = any> {\n /**\n * 需要应用的新 spec\n * - 如果元素过滤器匹配到了某些图表元素,新 spec 将依次合并到这些元素\n * - 如果元素过滤器没有匹配到任何图表元素,新 spec 可能会作为新的图表元素添加到图表(forceAppend 为 true 的情况)。\n *\n * 有两种配置类型:\n * - 直接指定新 spec\n * - 使用回调的方式返回新 spec\n */\n spec:\n | Partial<T>\n | ((\n /** filter 匹配到的图表元素信息 */\n filteredModelInfo: IModelSpecInfo<T>[],\n /** 当前 action 对象 */\n action: IMediaQueryAction<T>,\n /** 当前媒体查询条件 */\n query: IMediaQueryCondition\n ) => Partial<T>);\n /**\n * 元素过滤器类型\n * (规定 filter 需要过滤的元素类型,以及新 spec 对应的元素类型)\n * @default 'chart'\n */\n filterType?: MediaQueryActionFilterType;\n /**\n * 元素过滤器\n * (如果不配置,则匹配 filterType 对应的所有元素)\n *\n * 有两种配置类型:\n * - 配置为元素 spec 的一部分,在过滤图表元素时基于此 spec 进行模糊匹配\n * - 配置为函数回调,依次决定当前 filterType 类型下的每个元素实例是否被匹配\n */\n filter?: MediaQueryActionFilter<T> | Array<MediaQueryActionFilter<T>>;\n /**\n * 元素过滤器匹配不到图表元素时,是否将新 spec 作为新的图表元素添加到图表\n * (filterType 为 'chart' 时该配置失效)\n * @default false\n */\n forceAppend?: boolean;\n}\n\n/**\n * 元素过滤器类型\n */\nexport type MediaQueryActionFilterType =\n | 'region'\n | 'series'\n | 'chart'\n | `${SeriesTypeEnum}` // 具体 series 类型,如 'bar'、'line'\n | `${ComponentTypeEnum}` // 具体 component 类型,如 'cartesianAxis-band'\n | keyof IChartSpec; // 组件 spec key,可视为简化版 component 类型,如 'axes'、'legends'、'crosshair'\n\n/**\n * 元素过滤器\n *\n * 有两种配置类型:\n * - 配置为元素 spec 的一部分,在过滤图表元素时基于此 spec 进行模糊匹配\n * - 配置为函数回调,依次决定当前 filterType 类型下的每个元素实例是否被匹配\n */\nexport type MediaQueryActionFilter<T extends Record<string, unknown> = any> =\n | Partial<T>\n | ((\n /** 当前图表元素信息 */\n modelInfo: IModelSpecInfo<T>,\n /** 当前 action 对象 */\n action: IMediaQueryAction<T>,\n /** 当前媒体查询条件 */\n query: IMediaQueryCondition\n ) => boolean);\n"]}
package/cjs/util/env.js CHANGED
@@ -1,5 +1,11 @@
1
1
  "use strict";
2
2
 
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.isMiniAppLikeMode = exports.isMobileLikeMode = exports.isPcLikeMode = exports.isTrueBrowser = exports.domDocument = exports.isBrowser = void 0;
6
+
7
+ const vrender_core_1 = require("@visactor/vrender-core");
8
+
3
9
  function isTrueBrowser(mode) {
4
10
  return ("desktop-browser" === mode || "mobile-browser" === mode) && exports.isBrowser;
5
11
  }
@@ -16,11 +22,7 @@ function isMiniAppLikeMode(mode) {
16
22
  return mode.includes("miniApp") || "lynx" === mode || "wx" === mode;
17
23
  }
18
24
 
19
- Object.defineProperty(exports, "__esModule", {
20
- value: !0
21
- }), exports.isMiniAppLikeMode = exports.isMobileLikeMode = exports.isPcLikeMode = exports.isTrueBrowser = exports.domDocument = exports.isBrowser = void 0,
22
- exports.isBrowser = "undefined" != typeof window && void 0 !== window.document,
23
- exports.domDocument = exports.isBrowser ? globalThis.document : void 0, exports.isTrueBrowser = isTrueBrowser,
24
- exports.isPcLikeMode = isPcLikeMode, exports.isMobileLikeMode = isMobileLikeMode,
25
+ exports.isBrowser = (0, vrender_core_1.isBrowserEnv)(), exports.domDocument = exports.isBrowser && globalThis ? globalThis.document : void 0,
26
+ exports.isTrueBrowser = isTrueBrowser, exports.isPcLikeMode = isPcLikeMode, exports.isMobileLikeMode = isMobileLikeMode,
25
27
  exports.isMiniAppLikeMode = isMiniAppLikeMode;
26
28
  //# sourceMappingURL=env.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/util/env.ts"],"names":[],"mappings":";;;AAEa,QAAA,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,WAAW,CAAC;AACpF,QAAA,WAAW,GAAG,iBAAS,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AAGvE,SAAgB,aAAa,CAAC,IAAgB;IAC5C,OAAO,CAAC,IAAI,KAAK,iBAAiB,IAAI,IAAI,KAAK,gBAAgB,CAAC,IAAI,iBAAS,CAAC;AAChF,CAAC;AAFD,sCAEC;AAED,SAAgB,YAAY,CAAC,IAAgB;IAC3C,OAAO,IAAI,KAAK,iBAAiB,IAAI,IAAI,KAAK,iBAAiB,CAAC;AAClE,CAAC;AAFD,oCAEC;AAED,SAAgB,gBAAgB,CAAC,IAAgB;IAC/C,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,gBAAgB,CAAC;AACzD,CAAC;AAFD,4CAEC;AAED,SAAgB,iBAAiB,CAAC,IAAgB;IAChD,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,IAAI,CAAC;AACtE,CAAC;AAFD,8CAEC","file":"env.js","sourcesContent":["import type { RenderMode } from '../typings/spec';\n\nexport const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\nexport const domDocument = isBrowser ? globalThis.document : undefined;\n\n// Taro 会模拟实现 DOM,所以还是加上 mode 的判断\nexport function isTrueBrowser(mode: RenderMode): boolean {\n return (mode === 'desktop-browser' || mode === 'mobile-browser') && isBrowser;\n}\n\nexport function isPcLikeMode(mode: RenderMode) {\n return mode === 'desktop-miniApp' || mode === 'desktop-browser';\n}\n\nexport function isMobileLikeMode(mode: RenderMode) {\n return mode === 'miniApp' || mode === 'mobile-browser';\n}\n\nexport function isMiniAppLikeMode(mode: RenderMode) {\n return mode.includes('miniApp') || mode === 'lynx' || mode === 'wx';\n}\n"]}
1
+ {"version":3,"sources":["../src/util/env.ts"],"names":[],"mappings":";;;AAAA,yDAAsD;AAGzC,QAAA,SAAS,GAAG,IAAA,2BAAY,GAAE,CAAC;AAC3B,QAAA,WAAW,GAAG,iBAAS,IAAI,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AAGrF,SAAgB,aAAa,CAAC,IAAgB;IAC5C,OAAO,CAAC,IAAI,KAAK,iBAAiB,IAAI,IAAI,KAAK,gBAAgB,CAAC,IAAI,iBAAS,CAAC;AAChF,CAAC;AAFD,sCAEC;AAED,SAAgB,YAAY,CAAC,IAAgB;IAC3C,OAAO,IAAI,KAAK,iBAAiB,IAAI,IAAI,KAAK,iBAAiB,CAAC;AAClE,CAAC;AAFD,oCAEC;AAED,SAAgB,gBAAgB,CAAC,IAAgB;IAC/C,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,gBAAgB,CAAC;AACzD,CAAC;AAFD,4CAEC;AAED,SAAgB,iBAAiB,CAAC,IAAgB;IAChD,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,IAAI,CAAC;AACtE,CAAC;AAFD,8CAEC","file":"env.js","sourcesContent":["import { isBrowserEnv } from '@visactor/vrender-core';\nimport type { RenderMode } from '../typings/spec';\n\nexport const isBrowser = isBrowserEnv();\nexport const domDocument = isBrowser && globalThis ? globalThis.document : undefined;\n\n// Taro 会模拟实现 DOM,所以还是加上 mode 的判断\nexport function isTrueBrowser(mode: RenderMode): boolean {\n return (mode === 'desktop-browser' || mode === 'mobile-browser') && isBrowser;\n}\n\nexport function isPcLikeMode(mode: RenderMode) {\n return mode === 'desktop-miniApp' || mode === 'desktop-browser';\n}\n\nexport function isMobileLikeMode(mode: RenderMode) {\n return mode === 'miniApp' || mode === 'mobile-browser';\n}\n\nexport function isMiniAppLikeMode(mode: RenderMode) {\n return mode.includes('miniApp') || mode === 'lynx' || mode === 'wx';\n}\n"]}
@@ -10,7 +10,7 @@ export declare function animationConfig<Preset extends string>(defaultConfig?: M
10
10
  dataIndex: (datum: any) => number;
11
11
  dataCount: () => number;
12
12
  }): MarkAnimationSpec;
13
- export declare function userAnimationConfig<M extends string, Preset extends string>(markName: SeriesMarkNameEnum | string, spec: IAnimationSpec<M, Preset>, ctx: ISeriesMarkAttributeContext): Partial<Record<"none" | "normal" | "state" | "exit" | "update" | "appear" | "enter" | "disappear", boolean | IAnimationConfig | IStateAnimateSpec<string> | IAnimationConfig[]>>;
13
+ export declare function userAnimationConfig<M extends string, Preset extends string>(markName: SeriesMarkNameEnum | string, spec: IAnimationSpec<M, Preset>, ctx: ISeriesMarkAttributeContext): Partial<Record<"none" | "normal" | "state" | "exit" | "update" | "appear" | "enter" | "disappear", boolean | IAnimationConfig | IAnimationConfig[] | IStateAnimateSpec<Preset>>>;
14
14
  export declare function shouldMarkDoMorph(spec: ISeriesSpec & IAnimationSpec<string, string>, markName: string): boolean;
15
15
  export declare function isTimeLineAnimation(animationConfig: IAnimationConfig): boolean;
16
16
  export declare function isChannelAnimation(animationConfig: IAnimationConfig): boolean;
@@ -13,21 +13,22 @@ export const AnimationStates = [ "appear", "enter", "update", "exit", "disappear
13
13
  export function animationConfig(defaultConfig = {}, userConfig, params) {
14
14
  const config = {};
15
15
  for (let i = 0; i < AnimationStates.length; i++) {
16
- const state = AnimationStates[i];
17
- if (!1 === (null == userConfig ? void 0 : userConfig[state])) continue;
16
+ const state = AnimationStates[i], userStateConfig = userConfig ? userConfig[state] : void 0;
17
+ if (!1 === userStateConfig) continue;
18
18
  if ("normal" === state) {
19
- userConfig.normal && (config.normal = userConfig.normal);
19
+ userStateConfig && (config.normal = userStateConfig);
20
20
  continue;
21
21
  }
22
+ if ("update" !== state && !userStateConfig && !defaultConfig[state]) continue;
22
23
  let defaultStateConfig, stateConfig;
23
24
  (defaultStateConfig = isArray(defaultConfig[state]) ? defaultConfig[state] : [ Object.assign(Object.assign({}, DEFAULT_ANIMATION_CONFIG[state]), defaultConfig[state]) ],
24
25
  "exit" === state && defaultStateConfig.forEach((exitConfig => {
25
26
  exitConfig.controlOptions = {
26
27
  stopWhenStateChange: !0
27
28
  };
28
- })), null == userConfig ? void 0 : userConfig[state]) ? (stateConfig = isArray(userConfig[state]) ? userConfig[state] : defaultStateConfig.map(((stateConfig, i) => {
29
+ })), userStateConfig) ? (stateConfig = isArray(userStateConfig) ? userStateConfig : defaultStateConfig.map(((stateConfig, i) => {
29
30
  var _a;
30
- let singleConfig = mergeSpec({}, defaultStateConfig[i], userConfig[state]);
31
+ let singleConfig = mergeSpec({}, defaultStateConfig[i], userStateConfig);
31
32
  return isChannelAnimation(singleConfig) && delete singleConfig.type, singleConfig.oneByOne && (singleConfig = produceOneByOne(singleConfig, null !== (_a = null == params ? void 0 : params.dataIndex) && void 0 !== _a ? _a : defaultDataIndex, null == params ? void 0 : params.dataCount)),
32
33
  singleConfig;
33
34
  })), config[state] = stateConfig) : config[state] = defaultStateConfig;
@@ -36,15 +37,15 @@ export function animationConfig(defaultConfig = {}, userConfig, params) {
36
37
  }
37
38
 
38
39
  export function userAnimationConfig(markName, spec, ctx) {
39
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
40
- return uniformAnimationConfig({
41
- appear: null !== (_b = null === (_a = spec.animationAppear) || void 0 === _a ? void 0 : _a[markName]) && void 0 !== _b ? _b : spec.animationAppear,
42
- disappear: null !== (_d = null === (_c = spec.animationDisappear) || void 0 === _c ? void 0 : _c[markName]) && void 0 !== _d ? _d : spec.animationDisappear,
43
- enter: null !== (_f = null === (_e = spec.animationEnter) || void 0 === _e ? void 0 : _e[markName]) && void 0 !== _f ? _f : spec.animationEnter,
44
- exit: null !== (_h = null === (_g = spec.animationExit) || void 0 === _g ? void 0 : _g[markName]) && void 0 !== _h ? _h : spec.animationExit,
45
- update: null !== (_k = null === (_j = spec.animationUpdate) || void 0 === _j ? void 0 : _j[markName]) && void 0 !== _k ? _k : spec.animationUpdate,
46
- normal: null === (_l = spec.animationNormal) || void 0 === _l ? void 0 : _l[markName]
47
- }, ctx);
40
+ var _a, _b, _c, _d, _e;
41
+ const userConfig = {};
42
+ return spec.animationAppear && (userConfig.appear = null !== (_a = spec.animationAppear[markName]) && void 0 !== _a ? _a : spec.animationAppear),
43
+ spec.animationDisappear && (userConfig.disappear = null !== (_b = spec.animationDisappear[markName]) && void 0 !== _b ? _b : spec.animationDisappear),
44
+ spec.animationEnter && (userConfig.enter = null !== (_c = spec.animationEnter[markName]) && void 0 !== _c ? _c : spec.animationEnter),
45
+ spec.animationExit && (userConfig.exit = null !== (_d = spec.animationExit[markName]) && void 0 !== _d ? _d : spec.animationExit),
46
+ spec.animationUpdate && (userConfig.update = null !== (_e = spec.animationUpdate[markName]) && void 0 !== _e ? _e : spec.animationUpdate),
47
+ spec.animationNormal && spec.animationNormal[markName] && (userConfig.normal = spec.animationNormal[markName]),
48
+ uniformAnimationConfig(userConfig, ctx);
48
49
  }
49
50
 
50
51
  function produceOneByOne(stateConfig, dataIndex, dataCount) {