@visactor/vchart 1.13.5-vstory.3 → 1.13.6-alpha.0

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 (192) hide show
  1. package/build/es5/index.js +1 -1
  2. package/build/index.es.js +5715 -6456
  3. package/build/index.js +5724 -6455
  4. package/build/index.min.js +1 -1
  5. package/build/tsconfig.tsbuildinfo +1 -1
  6. package/cjs/chart/base/base-chart.js +6 -8
  7. package/cjs/chart/base/base-chart.js.map +1 -1
  8. package/cjs/chart/index.js +2 -1
  9. package/cjs/compile/compilable-base.js +1 -2
  10. package/cjs/component/brush/brush.js +7 -3
  11. package/cjs/component/brush/brush.js.map +1 -1
  12. package/cjs/component/crosshair/base.d.ts +23 -34
  13. package/cjs/component/crosshair/base.js +90 -6
  14. package/cjs/component/crosshair/base.js.map +1 -1
  15. package/cjs/component/crosshair/cartesian.d.ts +5 -28
  16. package/cjs/component/crosshair/cartesian.js +72 -170
  17. package/cjs/component/crosshair/cartesian.js.map +1 -1
  18. package/cjs/component/crosshair/interface/common.d.ts +67 -2
  19. package/cjs/component/crosshair/interface/common.js.map +1 -1
  20. package/cjs/component/crosshair/interface/index.d.ts +0 -2
  21. package/cjs/component/crosshair/interface/index.js +0 -1
  22. package/cjs/component/crosshair/interface/index.js.map +1 -1
  23. package/cjs/component/crosshair/interface/spec.d.ts +8 -4
  24. package/cjs/component/crosshair/interface/spec.js.map +1 -1
  25. package/cjs/component/crosshair/polar.d.ts +6 -22
  26. package/cjs/component/crosshair/polar.js +78 -143
  27. package/cjs/component/crosshair/polar.js.map +1 -1
  28. package/cjs/component/crosshair/utils/cartesian.d.ts +5 -26
  29. package/cjs/component/crosshair/utils/cartesian.js +86 -174
  30. package/cjs/component/crosshair/utils/cartesian.js.map +1 -1
  31. package/cjs/component/crosshair/utils/polar.d.ts +18 -11
  32. package/cjs/component/crosshair/utils/polar.js +72 -117
  33. package/cjs/component/crosshair/utils/polar.js.map +1 -1
  34. package/cjs/component/data-zoom/data-filter-base-component.d.ts +2 -2
  35. package/cjs/component/data-zoom/data-filter-base-component.js +8 -7
  36. package/cjs/component/data-zoom/data-filter-base-component.js.map +1 -1
  37. package/cjs/component/data-zoom/data-zoom/data-zoom.js +2 -2
  38. package/cjs/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
  39. package/cjs/component/data-zoom/interface.d.ts +11 -0
  40. package/cjs/component/data-zoom/interface.js.map +1 -1
  41. package/cjs/component/data-zoom/scroll-bar/scroll-bar.d.ts +0 -1
  42. package/cjs/component/data-zoom/scroll-bar/scroll-bar.js +7 -10
  43. package/cjs/component/data-zoom/scroll-bar/scroll-bar.js.map +1 -1
  44. package/cjs/component/label/interface.d.ts +2 -0
  45. package/cjs/component/label/interface.js.map +1 -1
  46. package/cjs/component/label/label.d.ts +2 -0
  47. package/cjs/component/label/label.js +15 -1
  48. package/cjs/component/label/label.js.map +1 -1
  49. package/cjs/component/tooltip/processor/mark-tooltip.js +13 -1
  50. package/cjs/component/tooltip/processor/mark-tooltip.js.map +1 -1
  51. package/cjs/component/tooltip/tooltip.d.ts +1 -0
  52. package/cjs/component/tooltip/tooltip.js +5 -4
  53. package/cjs/component/tooltip/tooltip.js.map +1 -1
  54. package/cjs/core/index.d.ts +2 -2
  55. package/cjs/core/index.js +42 -2
  56. package/cjs/core/index.js.map +1 -1
  57. package/cjs/data/transforms/waterfall.d.ts +1 -0
  58. package/cjs/data/transforms/waterfall.js +1 -1
  59. package/cjs/data/transforms/waterfall.js.map +1 -1
  60. package/cjs/event/index.d.ts +1 -0
  61. package/cjs/event/index.js +16 -1
  62. package/cjs/event/index.js.map +1 -1
  63. package/cjs/interaction/zoom/zoomable.d.ts +1 -0
  64. package/cjs/interaction/zoom/zoomable.js +4 -3
  65. package/cjs/interaction/zoom/zoomable.js.map +1 -1
  66. package/cjs/plugin/components/axis-sync/tick-align-transform.js +10 -5
  67. package/cjs/plugin/components/axis-sync/tick-align-transform.js.map +1 -1
  68. package/cjs/plugin/components/tooltip-handler/utils/attribute.js +1 -1
  69. package/cjs/plugin/components/tooltip-handler/utils/attribute.js.map +1 -1
  70. package/cjs/plugin/components/tooltip-handler/utils/position.d.ts +2 -4
  71. package/cjs/plugin/components/tooltip-handler/utils/position.js +23 -11
  72. package/cjs/plugin/components/tooltip-handler/utils/position.js.map +1 -1
  73. package/cjs/plugin/components/tooltip-handler/utils/style.js +2 -1
  74. package/cjs/plugin/components/tooltip-handler/utils/style.js.map +1 -1
  75. package/cjs/scale/global-scale.js +2 -1
  76. package/cjs/scale/global-scale.js.map +1 -1
  77. package/cjs/series/area/area.js +3 -1
  78. package/cjs/series/area/area.js.map +1 -1
  79. package/cjs/series/funnel/funnel.js +1 -1
  80. package/cjs/series/funnel/funnel.js.map +1 -1
  81. package/cjs/series/pictogram/pictogram.d.ts +2 -0
  82. package/cjs/series/pictogram/pictogram.js +7 -4
  83. package/cjs/series/pictogram/pictogram.js.map +1 -1
  84. package/cjs/series/progress/circular/circular.js +5 -0
  85. package/cjs/series/progress/circular/circular.js.map +1 -1
  86. package/cjs/series/sunburst/sunburst.js.map +1 -1
  87. package/cjs/series/waterfall/waterfall.js +4 -2
  88. package/cjs/series/waterfall/waterfall.js.map +1 -1
  89. package/cjs/typings/visual.d.ts +7 -0
  90. package/cjs/typings/visual.js.map +1 -1
  91. package/cjs/util/scale.js +1 -1
  92. package/cjs/util/scale.js.map +1 -1
  93. package/esm/chart/base/base-chart.js +6 -8
  94. package/esm/chart/base/base-chart.js.map +1 -1
  95. package/esm/chart/index.js +2 -1
  96. package/esm/compile/compilable-base.js +1 -2
  97. package/esm/component/brush/brush.js +7 -3
  98. package/esm/component/brush/brush.js.map +1 -1
  99. package/esm/component/crosshair/base.d.ts +23 -34
  100. package/esm/component/crosshair/base.js +95 -5
  101. package/esm/component/crosshair/base.js.map +1 -1
  102. package/esm/component/crosshair/cartesian.d.ts +5 -28
  103. package/esm/component/crosshair/cartesian.js +73 -174
  104. package/esm/component/crosshair/cartesian.js.map +1 -1
  105. package/esm/component/crosshair/interface/common.d.ts +67 -2
  106. package/esm/component/crosshair/interface/common.js.map +1 -1
  107. package/esm/component/crosshair/interface/index.d.ts +0 -2
  108. package/esm/component/crosshair/interface/index.js +0 -4
  109. package/esm/component/crosshair/interface/index.js.map +1 -1
  110. package/esm/component/crosshair/interface/spec.d.ts +8 -4
  111. package/esm/component/crosshair/interface/spec.js.map +1 -1
  112. package/esm/component/crosshair/polar.d.ts +6 -22
  113. package/esm/component/crosshair/polar.js +75 -146
  114. package/esm/component/crosshair/polar.js.map +1 -1
  115. package/esm/component/crosshair/utils/cartesian.d.ts +5 -26
  116. package/esm/component/crosshair/utils/cartesian.js +81 -166
  117. package/esm/component/crosshair/utils/cartesian.js.map +1 -1
  118. package/esm/component/crosshair/utils/polar.d.ts +18 -11
  119. package/esm/component/crosshair/utils/polar.js +67 -112
  120. package/esm/component/crosshair/utils/polar.js.map +1 -1
  121. package/esm/component/data-zoom/data-filter-base-component.d.ts +2 -2
  122. package/esm/component/data-zoom/data-filter-base-component.js +8 -7
  123. package/esm/component/data-zoom/data-filter-base-component.js.map +1 -1
  124. package/esm/component/data-zoom/data-zoom/data-zoom.js +2 -2
  125. package/esm/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
  126. package/esm/component/data-zoom/interface.d.ts +11 -0
  127. package/esm/component/data-zoom/interface.js.map +1 -1
  128. package/esm/component/data-zoom/scroll-bar/scroll-bar.d.ts +0 -1
  129. package/esm/component/data-zoom/scroll-bar/scroll-bar.js +8 -9
  130. package/esm/component/data-zoom/scroll-bar/scroll-bar.js.map +1 -1
  131. package/esm/component/label/interface.d.ts +2 -0
  132. package/esm/component/label/interface.js.map +1 -1
  133. package/esm/component/label/label.d.ts +2 -0
  134. package/esm/component/label/label.js +14 -1
  135. package/esm/component/label/label.js.map +1 -1
  136. package/esm/component/tooltip/processor/mark-tooltip.js +13 -1
  137. package/esm/component/tooltip/processor/mark-tooltip.js.map +1 -1
  138. package/esm/component/tooltip/tooltip.d.ts +1 -0
  139. package/esm/component/tooltip/tooltip.js +5 -4
  140. package/esm/component/tooltip/tooltip.js.map +1 -1
  141. package/esm/core/index.d.ts +2 -2
  142. package/esm/core/index.js +2 -2
  143. package/esm/core/index.js.map +1 -1
  144. package/esm/data/transforms/waterfall.d.ts +1 -0
  145. package/esm/data/transforms/waterfall.js +1 -1
  146. package/esm/data/transforms/waterfall.js.map +1 -1
  147. package/esm/event/index.d.ts +1 -0
  148. package/esm/event/index.js +2 -0
  149. package/esm/event/index.js.map +1 -1
  150. package/esm/interaction/zoom/zoomable.d.ts +1 -0
  151. package/esm/interaction/zoom/zoomable.js +4 -3
  152. package/esm/interaction/zoom/zoomable.js.map +1 -1
  153. package/esm/plugin/components/axis-sync/tick-align-transform.js +7 -5
  154. package/esm/plugin/components/axis-sync/tick-align-transform.js.map +1 -1
  155. package/esm/plugin/components/tooltip-handler/utils/attribute.js +1 -1
  156. package/esm/plugin/components/tooltip-handler/utils/attribute.js.map +1 -1
  157. package/esm/plugin/components/tooltip-handler/utils/position.d.ts +2 -4
  158. package/esm/plugin/components/tooltip-handler/utils/position.js +23 -10
  159. package/esm/plugin/components/tooltip-handler/utils/position.js.map +1 -1
  160. package/esm/plugin/components/tooltip-handler/utils/style.js +2 -1
  161. package/esm/plugin/components/tooltip-handler/utils/style.js.map +1 -1
  162. package/esm/scale/global-scale.js +2 -1
  163. package/esm/scale/global-scale.js.map +1 -1
  164. package/esm/series/area/area.js +4 -0
  165. package/esm/series/area/area.js.map +1 -1
  166. package/esm/series/funnel/funnel.js +1 -1
  167. package/esm/series/funnel/funnel.js.map +1 -1
  168. package/esm/series/pictogram/pictogram.d.ts +2 -0
  169. package/esm/series/pictogram/pictogram.js +7 -4
  170. package/esm/series/pictogram/pictogram.js.map +1 -1
  171. package/esm/series/progress/circular/circular.js +6 -1
  172. package/esm/series/progress/circular/circular.js.map +1 -1
  173. package/esm/series/sunburst/sunburst.js.map +1 -1
  174. package/esm/series/waterfall/waterfall.js +4 -2
  175. package/esm/series/waterfall/waterfall.js.map +1 -1
  176. package/esm/typings/visual.d.ts +7 -0
  177. package/esm/typings/visual.js.map +1 -1
  178. package/esm/util/scale.js +1 -1
  179. package/esm/util/scale.js.map +1 -1
  180. package/package.json +18 -18
  181. package/cjs/component/crosshair/interface/cartesian.d.ts +0 -33
  182. package/cjs/component/crosshair/interface/cartesian.js +0 -6
  183. package/cjs/component/crosshair/interface/cartesian.js.map +0 -1
  184. package/cjs/component/crosshair/interface/polar.d.ts +0 -25
  185. package/cjs/component/crosshair/interface/polar.js +0 -6
  186. package/cjs/component/crosshair/interface/polar.js.map +0 -1
  187. package/esm/component/crosshair/interface/cartesian.d.ts +0 -33
  188. package/esm/component/crosshair/interface/cartesian.js +0 -2
  189. package/esm/component/crosshair/interface/cartesian.js.map +0 -1
  190. package/esm/component/crosshair/interface/polar.d.ts +0 -25
  191. package/esm/component/crosshair/interface/polar.js +0 -2
  192. package/esm/component/crosshair/interface/polar.js.map +0 -1
@@ -1,124 +1,79 @@
1
- var __rest = this && this.__rest || function(s, e) {
2
- var t = {};
3
- for (var p in s) Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0 && (t[p] = s[p]);
4
- if (null != s && "function" == typeof Object.getOwnPropertySymbols) {
5
- var i = 0;
6
- for (p = Object.getOwnPropertySymbols(s); i < p.length; i++) e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]) && (t[p[i]] = s[p[i]]);
7
- }
8
- return t;
9
- };
10
-
11
1
  import { getAxisLabelOffset } from "../../axis/util";
12
2
 
13
3
  import { PointService, clamp, getAngleByPoint, getIntersectPoint, isValid, polarToCartesian } from "@visactor/vutils";
14
4
 
15
- import { mergeSpec } from "@visactor/vutils-extension";
16
-
17
5
  import { getFormatFunction } from "../../util";
18
6
 
19
- export const layoutByValue = (series, currValueAngle, currValueRadius, angleHair, radiusHair, enableRemain = !1, cacheAngleCrossHairInfo, cacheRadiusCrossHairInfo) => {
20
- let angleCrossHairInfo = {
21
- x: 0,
22
- y: 0,
23
- center: {
24
- x: 0,
25
- y: 0
26
- },
27
- radius: 0,
28
- distance: 0,
29
- startAngle: 0,
30
- endAngle: 0,
31
- innerRadius: 0,
32
- visible: !1,
33
- label: {
34
- visible: !1,
35
- text: "",
36
- offset: 0
37
- }
38
- }, radiusCrossHairInfo = {
39
- x: 0,
40
- y: 0,
41
- center: {
42
- x: 0,
43
- y: 0
44
- },
45
- radius: 0,
46
- distance: 0,
47
- startAngle: 0,
48
- endAngle: 0,
49
- innerRadius: 0,
50
- visible: !1,
51
- sides: series.angleAxisHelper.getScale(0).domain().length,
52
- label: {
53
- visible: !1,
54
- text: "",
55
- offset: 0
7
+ export const layoutByValue = (stateByField, series, enableRemain = !1) => {
8
+ Object.keys(stateByField).forEach((field => {
9
+ const {attributes: attributes, currentValue: currentValue, cacheInfo: cacheInfo, coordKey: coordKey} = stateByField[field];
10
+ if (attributes) {
11
+ const isVisible = !!currentValue.size, useCache = enableRemain && !isVisible && isValid(cacheInfo), newInfo = useCache ? cacheInfo : {
12
+ coord: 0,
13
+ axis: null,
14
+ visible: isVisible,
15
+ coordRange: [ 0, 0 ],
16
+ sizeRange: [ 0, 0 ],
17
+ labels: {
18
+ all: {
19
+ visible: !1,
20
+ text: "",
21
+ offset: 0
22
+ }
23
+ }
24
+ };
25
+ if (cacheInfo && (cacheInfo._isCache = useCache), "valueField" === field && (newInfo.sides = series.angleAxisHelper.getScale(0).domain().length),
26
+ currentValue.forEach((({axis: axis, datum: value = ""}) => {
27
+ var _a;
28
+ const niceLabelFormatter = axis.niceLabelFormatter;
29
+ if ((null === (_a = attributes.label) || void 0 === _a ? void 0 : _a.visible) && (newInfo.labels.all.visible = !0,
30
+ newInfo.labels.all.defaultFormatter = niceLabelFormatter, newInfo.labels.all.text = value,
31
+ newInfo.labels.all.offset = getAxisLabelOffset(axis.getSpec())), "categoryField" === field) {
32
+ const angle = series.angleAxisHelper.dataToPosition([ value ]), bandSize = series.angleAxisHelper.getBandwidth(0), radius = axis.getOuterRadius();
33
+ newInfo.coord = angle, newInfo.coordRange = [ angle - bandSize / 2, angle + bandSize / 2 ],
34
+ newInfo.sizeRange = [ radius, radius ];
35
+ } else {
36
+ const angle = axis.startAngle, radius = series.radiusAxisHelper.dataToPosition([ value ]);
37
+ newInfo.coord = radius, newInfo.coordRange = [ radius, radius ], newInfo.sizeRange = [ angle, angle ];
38
+ }
39
+ newInfo.axis = axis;
40
+ })), newInfo && !useCache && newInfo.labels.all.visible && attributes && attributes.label) {
41
+ const label = newInfo.labels.all, {formatMethod: formatMethod, formatter: formatter} = attributes.label, {formatFunc: formatFunc, args: args} = getFormatFunction(formatMethod, formatter, label.text, {
42
+ label: label.text,
43
+ orient: coordKey
44
+ });
45
+ formatFunc ? label.text = formatFunc(...args) : label.defaultFormatter && (label.text = label.defaultFormatter(label.text));
46
+ }
47
+ stateByField[field].cacheInfo = newInfo;
56
48
  }
57
- };
58
- if (angleHair) {
59
- angleCrossHairInfo.visible = !!currValueAngle.size;
60
- const bandWidth = series.angleAxisHelper.getBandwidth(0);
61
- currValueAngle.forEach((_a => {
62
- var _b, {axis: axis, value: value, coord: coord} = _a, rest = __rest(_a, [ "axis", "value", "coord" ]);
63
- value = null != value ? value : "", mergeSpec(angleCrossHairInfo, rest);
64
- const angle = series.angleAxisHelper.dataToPosition([ value ]);
65
- angleCrossHairInfo.angle = angle;
66
- const niceLabelFormatter = axis.niceLabelFormatter;
67
- (null === (_b = angleHair.label) || void 0 === _b ? void 0 : _b.visible) && (angleCrossHairInfo.label.visible = !0,
68
- angleCrossHairInfo.label.defaultFormatter = niceLabelFormatter, angleCrossHairInfo.label.text = value,
69
- angleCrossHairInfo.label.offset = getAxisLabelOffset(axis.getSpec())), angleCrossHairInfo.startAngle = angle - bandWidth / 2,
70
- angleCrossHairInfo.endAngle = angle + bandWidth / 2;
71
- }));
72
- }
73
- if (radiusHair && (radiusCrossHairInfo.visible = !!currValueRadius.size, currValueRadius.forEach((_a => {
74
- var _b, {axis: axis, value: value, coord: coord} = _a, rest = __rest(_a, [ "axis", "value", "coord" ]);
75
- value = null != value ? value : "";
76
- const niceLabelFormatter = axis.niceLabelFormatter;
77
- (null === (_b = radiusHair.label) || void 0 === _b ? void 0 : _b.visible) && (radiusCrossHairInfo.label.visible = !0,
78
- radiusCrossHairInfo.label.defaultFormatter = niceLabelFormatter, radiusCrossHairInfo.label.text = value,
79
- radiusCrossHairInfo.label.offset = getAxisLabelOffset(axis.getSpec())), radiusCrossHairInfo.angle = coord.angle,
80
- radiusCrossHairInfo.axis = axis, mergeSpec(radiusCrossHairInfo, rest);
81
- }))), enableRemain && !angleCrossHairInfo.visible && isValid(cacheAngleCrossHairInfo)) angleCrossHairInfo = cacheAngleCrossHairInfo; else if (angleCrossHairInfo.label.visible && angleHair && angleHair.label) {
82
- const {label: label} = angleCrossHairInfo, {formatMethod: formatMethod, formatter: formatter} = angleHair.label, {formatFunc: formatFunc, args: args} = getFormatFunction(formatMethod, formatter, label.text, {
83
- label: label.text,
84
- orient: "angle"
85
- });
86
- formatFunc ? label.text = formatFunc(...args) : label.defaultFormatter && (label.text = label.defaultFormatter(label.text));
87
- }
88
- if (enableRemain && !radiusCrossHairInfo.visible && isValid(cacheRadiusCrossHairInfo)) radiusCrossHairInfo = cacheRadiusCrossHairInfo; else if (radiusCrossHairInfo.label.visible && radiusHair && radiusHair.label) {
89
- const {label: label} = radiusCrossHairInfo, {formatMethod: formatMethod, formatter: formatter} = radiusHair.label, {formatFunc: formatFunc, args: args} = getFormatFunction(formatMethod, formatter, label.text, {
90
- label: label.text,
91
- orient: "radius"
92
- });
93
- formatFunc ? label.text = formatFunc(...args) : label.defaultFormatter && (label.text = label.defaultFormatter(label.text));
94
- }
95
- return {
96
- angle: angleCrossHairInfo,
97
- radius: radiusCrossHairInfo
98
- };
99
- };
100
-
101
- export const layoutAngleCrosshair = (angleHair, crosshairInfo) => {
102
- const {angle: angle, innerRadius: innerRadius, radius: radius, startAngle: startAngle, endAngle: endAngle, center: center} = crosshairInfo;
103
- let positionAttrs;
104
- return positionAttrs = "sector" === ("rect" === angleHair.type ? "sector" : "line") ? {
105
- center: center,
106
- innerRadius: innerRadius,
107
- radius: radius,
108
- startAngle: startAngle,
109
- endAngle: endAngle
110
- } : {
111
- start: polarToCartesian(center, innerRadius, angle),
112
- end: polarToCartesian(center, radius, angle)
113
- }, positionAttrs;
49
+ }));
114
50
  };
115
51
 
116
- export const layoutRadiusCrosshair = (radiusHair, crosshairInfo) => {
117
- const {center: center, startAngle: startAngle, endAngle: endAngle, distance: distance, sides: sides, axis: axis, point: point, radius: radius, innerRadius: innerRadius} = crosshairInfo;
118
- let polygonRadius = distance;
119
- if ("polygon" === (radiusHair.smooth ? "circle" : "polygon")) {
120
- const axisCenter = axis.getCenter(), curAngle = getAngleByPoint(axisCenter, point), stepAngle = (endAngle - startAngle) / sides, index = Math.floor((curAngle - startAngle) / stepAngle), preAngle = index * stepAngle + startAngle, nextAngle = Math.min((index + 1) * stepAngle + startAngle, endAngle), prePoint = polarToCartesian(axisCenter, distance, preAngle), nextPoint = polarToCartesian(axisCenter, distance, nextAngle), insertPoint = getIntersectPoint([ nextPoint.x, nextPoint.y ], [ prePoint.x, prePoint.y ], [ axisCenter.x, axisCenter.y ], [ point.x, point.y ]);
121
- insertPoint && (polygonRadius = clamp(PointService.distancePN(point, insertPoint[0], insertPoint[1]) + distance, innerRadius, radius));
52
+ export const layoutCrosshair = (stateItem, layoutStartPoint, smooth) => {
53
+ const {cacheInfo: cacheInfo, coordKey: coordKey, attributes: attributes} = stateItem, {axis: axis, coord: coord, sizeRange: sizeRange, coordRange: coordRange} = cacheInfo, axisCenter = axis.getCenter(), center = {
54
+ x: axisCenter.x + layoutStartPoint.x,
55
+ y: axisCenter.y + layoutStartPoint.y
56
+ };
57
+ if ("angle" === coordKey) {
58
+ return "sector" === ("rect" === attributes.type ? "sector" : "line") ? {
59
+ center: center,
60
+ innerRadius: axis.getInnerRadius(),
61
+ radius: axis.getOuterRadius(),
62
+ startAngle: coordRange[0],
63
+ endAngle: coordRange[1]
64
+ } : {
65
+ start: polarToCartesian(center, axis.getInnerRadius(), coord),
66
+ end: polarToCartesian(center, axis.getOuterRadius(), coord)
67
+ };
68
+ }
69
+ const startAngle = axis.startAngle, endAngle = axis.endAngle, sides = cacheInfo.sides;
70
+ let polygonRadius = coord;
71
+ if (!smooth) {
72
+ const axisCenter = axis.getCenter(), point = axis.coordToPoint({
73
+ angle: sizeRange[0],
74
+ radius: coord
75
+ }), curAngle = getAngleByPoint(axisCenter, point), stepAngle = (endAngle - startAngle) / sides, index = Math.floor((curAngle - startAngle) / stepAngle), preAngle = index * stepAngle + startAngle, nextAngle = Math.min((index + 1) * stepAngle + startAngle, endAngle), prePoint = polarToCartesian(axisCenter, coord, preAngle), nextPoint = polarToCartesian(axisCenter, coord, nextAngle), insertPoint = getIntersectPoint([ nextPoint.x, nextPoint.y ], [ prePoint.x, prePoint.y ], [ axisCenter.x, axisCenter.y ], [ point.x, point.y ]);
76
+ insertPoint && (polygonRadius = clamp(PointService.distancePN(point, insertPoint[0], insertPoint[1]) + coord, axis.getInnerRadius(), axis.getOuterRadius()));
122
77
  }
123
78
  return {
124
79
  center: center,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/crosshair/utils/polar.ts"],"names":[],"mappings":"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","file":"polar.js","sourcesContent":["import type { BandScale } from '@visactor/vscale';\nimport type { IPolarSeries } from '../../../series';\nimport type { IHair, IHairRadius } from '../base';\nimport type { AxisCurrentValueMap, IPolarCrosshairInfo } from '../interface';\nimport { getAxisLabelOffset } from '../../axis/util';\nimport { PointService, clamp, getAngleByPoint, getIntersectPoint, isValid, polarToCartesian } from '@visactor/vutils';\nimport type { ILinearAxis, IPolarAxis } from '../../axis';\nimport { mergeSpec } from '@visactor/vutils-extension';\nimport { getFormatFunction } from '../../util';\n\nexport const layoutByValue = (\n series: IPolarSeries,\n currValueAngle: AxisCurrentValueMap,\n currValueRadius: AxisCurrentValueMap,\n angleHair: IHair,\n radiusHair: IHair,\n enableRemain: boolean = false,\n cacheAngleCrossHairInfo?: IPolarCrosshairInfo,\n cacheRadiusCrossHairInfo?: IPolarCrosshairInfo\n) => {\n let angleCrossHairInfo = {\n x: 0,\n y: 0,\n center: { x: 0, y: 0 },\n radius: 0,\n distance: 0,\n startAngle: 0,\n endAngle: 0,\n innerRadius: 0,\n visible: false,\n label: { visible: false, text: '', offset: 0 }\n } as IPolarCrosshairInfo;\n let radiusCrossHairInfo = {\n x: 0,\n y: 0,\n center: { x: 0, y: 0 },\n radius: 0,\n distance: 0,\n startAngle: 0,\n endAngle: 0,\n innerRadius: 0,\n visible: false,\n sides: (series.angleAxisHelper.getScale(0) as BandScale).domain().length,\n label: { visible: false, text: '', offset: 0 }\n } as IPolarCrosshairInfo;\n\n // 计算x轴和y轴的数据,只允许最多一对x和一对y\n if (angleHair) {\n angleCrossHairInfo.visible = !!currValueAngle.size;\n const bandWidth = series.angleAxisHelper.getBandwidth(0);\n currValueAngle.forEach(({ axis, value, coord, ...rest }) => {\n value = value ?? '';\n mergeSpec(angleCrossHairInfo, rest);\n const angle = series.angleAxisHelper.dataToPosition([value]);\n angleCrossHairInfo.angle = angle;\n const niceLabelFormatter = (axis as ILinearAxis).niceLabelFormatter;\n if (angleHair.label?.visible) {\n angleCrossHairInfo.label.visible = true;\n angleCrossHairInfo.label.defaultFormatter = niceLabelFormatter;\n angleCrossHairInfo.label.text = value;\n angleCrossHairInfo.label.offset = getAxisLabelOffset(axis.getSpec());\n }\n\n angleCrossHairInfo.startAngle = angle - bandWidth / 2;\n angleCrossHairInfo.endAngle = angle + bandWidth / 2;\n });\n }\n\n if (radiusHair) {\n radiusCrossHairInfo.visible = !!currValueRadius.size;\n currValueRadius.forEach(({ axis, value, coord, ...rest }) => {\n value = value ?? '';\n const niceLabelFormatter = (axis as ILinearAxis).niceLabelFormatter;\n if (radiusHair.label?.visible) {\n radiusCrossHairInfo.label.visible = true;\n radiusCrossHairInfo.label.defaultFormatter = niceLabelFormatter;\n radiusCrossHairInfo.label.text = value;\n radiusCrossHairInfo.label.offset = getAxisLabelOffset(axis.getSpec());\n }\n radiusCrossHairInfo.angle = coord.angle;\n radiusCrossHairInfo.axis = axis as IPolarAxis;\n mergeSpec(radiusCrossHairInfo, rest);\n });\n }\n\n if (enableRemain && !angleCrossHairInfo.visible && isValid(cacheAngleCrossHairInfo)) {\n angleCrossHairInfo = cacheAngleCrossHairInfo;\n } else {\n if (angleCrossHairInfo.label.visible) {\n if (angleHair && angleHair.label) {\n const { label } = angleCrossHairInfo;\n const { formatMethod, formatter } = angleHair.label;\n const { formatFunc, args } = getFormatFunction(formatMethod, formatter, label.text, {\n label: label.text,\n orient: 'angle'\n });\n if (formatFunc) {\n label.text = formatFunc(...args);\n } else if (label.defaultFormatter) {\n label.text = label.defaultFormatter(label.text);\n }\n }\n }\n }\n\n if (enableRemain && !radiusCrossHairInfo.visible && isValid(cacheRadiusCrossHairInfo)) {\n radiusCrossHairInfo = cacheRadiusCrossHairInfo;\n } else {\n if (radiusCrossHairInfo.label.visible) {\n if (radiusHair && radiusHair.label) {\n const { label } = radiusCrossHairInfo;\n const { formatMethod, formatter } = radiusHair.label;\n const { formatFunc, args } = getFormatFunction(formatMethod, formatter, label.text, {\n label: label.text,\n orient: 'radius'\n });\n if (formatFunc) {\n label.text = formatFunc(...args);\n } else if (label.defaultFormatter) {\n label.text = label.defaultFormatter(label.text);\n }\n }\n }\n }\n\n return {\n angle: angleCrossHairInfo,\n radius: radiusCrossHairInfo\n };\n};\n\nexport const layoutAngleCrosshair = (angleHair: IHair, crosshairInfo: IPolarCrosshairInfo) => {\n const { angle, innerRadius, radius, startAngle, endAngle, center } = crosshairInfo;\n\n const crosshairType = angleHair.type === 'rect' ? 'sector' : 'line';\n let positionAttrs;\n if (crosshairType === 'sector') {\n positionAttrs = {\n center,\n innerRadius,\n radius,\n startAngle: startAngle,\n endAngle: endAngle\n };\n } else {\n positionAttrs = {\n start: polarToCartesian(center, innerRadius, angle),\n end: polarToCartesian(center, radius, angle)\n };\n }\n\n return positionAttrs;\n};\n\nexport const layoutRadiusCrosshair = (radiusHair: IHairRadius, crosshairInfo: IPolarCrosshairInfo) => {\n const { center, startAngle, endAngle, distance, sides, axis, point, radius, innerRadius } = crosshairInfo;\n\n const crosshairType = radiusHair.smooth ? 'circle' : 'polygon';\n\n let polygonRadius = distance;\n if (crosshairType === 'polygon') {\n const axisCenter = axis.getCenter();\n // 需要计算半径\n // 获取当前点的角度\n const curAngle = getAngleByPoint(axisCenter, point);\n const stepAngle = (endAngle - startAngle) / sides;\n const index = Math.floor((curAngle - startAngle) / stepAngle);\n const preAngle = index * stepAngle + startAngle;\n const nextAngle = Math.min((index + 1) * stepAngle + startAngle, endAngle);\n\n const prePoint = polarToCartesian(axisCenter, distance, preAngle);\n const nextPoint = polarToCartesian(axisCenter, distance, nextAngle);\n // 求交点\n const insertPoint = getIntersectPoint(\n [nextPoint.x, nextPoint.y],\n [prePoint.x, prePoint.y],\n [axisCenter.x, axisCenter.y],\n [point.x, point.y]\n );\n if (insertPoint) {\n polygonRadius = clamp(\n PointService.distancePN(point, insertPoint[0], insertPoint[1]) + distance,\n innerRadius,\n radius\n );\n }\n }\n const positionAttrs = {\n center,\n startAngle: startAngle,\n endAngle: endAngle,\n radius: polygonRadius,\n sides\n };\n\n return positionAttrs;\n};\n"]}
1
+ {"version":3,"sources":["../src/component/crosshair/utils/polar.ts"],"names":[],"mappings":"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","file":"polar.js","sourcesContent":["import type { BandScale } from '@visactor/vscale';\nimport type { IPolarSeries } from '../../../series';\nimport type { CrossHairStateByField, CrossHairStateItem, ICrosshairInfo } from '../interface';\nimport { getAxisLabelOffset } from '../../axis/util';\nimport { PointService, clamp, getAngleByPoint, getIntersectPoint, isValid, polarToCartesian } from '@visactor/vutils';\nimport type { ILinearAxis, IPolarAxis } from '../../axis';\nimport { getFormatFunction } from '../../util';\nimport type { ILayoutPoint } from '../../../typings/layout';\n\nexport const layoutByValue = (\n stateByField: CrossHairStateByField,\n series: IPolarSeries,\n enableRemain: boolean = false\n) => {\n Object.keys(stateByField).forEach(field => {\n const { attributes, currentValue, cacheInfo, coordKey } = stateByField[field];\n\n if (attributes) {\n const isVisible = !!currentValue.size;\n const useCache = enableRemain && !isVisible && isValid(cacheInfo);\n const newInfo = useCache\n ? cacheInfo\n : ({\n coord: 0,\n axis: null,\n visible: isVisible,\n coordRange: [0, 0],\n sizeRange: [0, 0],\n labels: {\n all: { visible: false, text: '', offset: 0 }\n }\n } as ICrosshairInfo);\n if (cacheInfo) {\n cacheInfo._isCache = useCache;\n }\n\n if (field === 'valueField') {\n (newInfo as any).sides = (series.angleAxisHelper.getScale(0) as BandScale).domain().length;\n }\n\n currentValue.forEach(({ axis, datum: value = '' }) => {\n const niceLabelFormatter = (axis as ILinearAxis).niceLabelFormatter;\n\n if (attributes.label?.visible) {\n newInfo.labels.all.visible = true;\n newInfo.labels.all.defaultFormatter = niceLabelFormatter;\n newInfo.labels.all.text = value;\n newInfo.labels.all.offset = getAxisLabelOffset(axis.getSpec());\n }\n\n if (field === 'categoryField') {\n const angle = series.angleAxisHelper.dataToPosition([value]);\n const bandSize = series.angleAxisHelper.getBandwidth(0);\n const radius = (axis as IPolarAxis).getOuterRadius();\n\n newInfo.coord = angle;\n newInfo.coordRange = [angle - bandSize / 2, angle + bandSize / 2];\n newInfo.sizeRange = [radius, radius];\n } else {\n const angle = (axis as IPolarAxis).startAngle;\n const radius = series.radiusAxisHelper.dataToPosition([value]);\n\n newInfo.coord = radius;\n newInfo.coordRange = [radius, radius];\n newInfo.sizeRange = [angle, angle];\n }\n\n newInfo.axis = axis as IPolarAxis;\n });\n\n if (newInfo && !useCache) {\n if (newInfo.labels.all.visible) {\n if (attributes && attributes.label) {\n const label = newInfo.labels.all;\n const { formatMethod, formatter } = attributes.label;\n const { formatFunc, args } = getFormatFunction(formatMethod, formatter, label.text, {\n label: label.text,\n orient: coordKey\n });\n if (formatFunc) {\n label.text = formatFunc(...args);\n } else if (label.defaultFormatter) {\n label.text = label.defaultFormatter(label.text);\n }\n }\n }\n }\n\n stateByField[field].cacheInfo = newInfo;\n }\n });\n};\n\nexport const layoutCrosshair = (stateItem: CrossHairStateItem, layoutStartPoint: ILayoutPoint, smooth?: boolean) => {\n const { cacheInfo, coordKey, attributes } = stateItem;\n const { axis, coord, sizeRange, coordRange } = cacheInfo;\n const axisCenter = (axis as IPolarAxis).getCenter();\n const center = {\n x: axisCenter.x + layoutStartPoint.x,\n y: axisCenter.y + layoutStartPoint.y\n };\n\n if (coordKey === 'angle') {\n const crosshairType = attributes.type === 'rect' ? 'sector' : 'line';\n\n if (crosshairType === 'sector') {\n // angle 轴对应的crosshair\n return {\n center,\n innerRadius: (axis as IPolarAxis).getInnerRadius(),\n radius: (axis as IPolarAxis).getOuterRadius(),\n startAngle: coordRange[0],\n endAngle: coordRange[1]\n };\n }\n // angle 轴对应的crosshair\n return {\n start: polarToCartesian(center, (axis as IPolarAxis).getInnerRadius(), coord),\n end: polarToCartesian(center, (axis as IPolarAxis).getOuterRadius(), coord)\n };\n }\n\n const startAngle = (axis as IPolarAxis).startAngle;\n const endAngle = (axis as IPolarAxis).endAngle;\n const sides = cacheInfo.sides;\n\n let polygonRadius = coord;\n if (!smooth) {\n const axisCenter = (axis as IPolarAxis).getCenter();\n // 需要计算半径\n // 获取当前点的角度\n const point = (axis as IPolarAxis).coordToPoint({\n angle: sizeRange[0],\n radius: coord\n });\n const curAngle = getAngleByPoint(axisCenter, point);\n const stepAngle = (endAngle - startAngle) / sides;\n const index = Math.floor((curAngle - startAngle) / stepAngle);\n const preAngle = index * stepAngle + startAngle;\n const nextAngle = Math.min((index + 1) * stepAngle + startAngle, endAngle);\n\n const prePoint = polarToCartesian(axisCenter, coord, preAngle);\n const nextPoint = polarToCartesian(axisCenter, coord, nextAngle);\n // 求交点\n const insertPoint = getIntersectPoint(\n [nextPoint.x, nextPoint.y],\n [prePoint.x, prePoint.y],\n [axisCenter.x, axisCenter.y],\n [point.x, point.y]\n );\n if (insertPoint) {\n polygonRadius = clamp(\n PointService.distancePN(point, (insertPoint as [number, number])[0], (insertPoint as [number, number])[1]) +\n coord,\n (axis as IPolarAxis).getInnerRadius(),\n (axis as IPolarAxis).getOuterRadius()\n );\n }\n }\n return {\n center,\n startAngle: startAngle,\n endAngle: endAngle,\n radius: polygonRadius,\n sides\n };\n};\n"]}
@@ -79,7 +79,7 @@ export declare abstract class DataFilterBaseComponent<T extends IDataFilterCompo
79
79
  protected _initEvent(): void;
80
80
  protected _initData(): void;
81
81
  setAttrFromSpec(): void;
82
- protected _statePointToData(state: number): any;
82
+ statePointToData(state: number): any;
83
83
  dataToStatePoint(data: number | string): number;
84
84
  protected _modeCheck(statePoint: 'start' | 'end', mode: string): any;
85
85
  protected _setStateFromSpec(): void;
@@ -105,7 +105,7 @@ export declare abstract class DataFilterBaseComponent<T extends IDataFilterCompo
105
105
  zoomDelta: number;
106
106
  zoomX?: number;
107
107
  zoomY?: number;
108
- }) => void;
108
+ }, e?: BaseEventParams['event']) => void;
109
109
  protected _handleChartScroll: (params: {
110
110
  scrollX: number;
111
111
  scrollY: number;
@@ -140,9 +140,9 @@ export class DataFilterBaseComponent extends BaseComponent {
140
140
  return this._startValue = startValue, this._endValue = endValue, this._newDomain = this._parseDomainFromState(this._startValue, this._endValue),
141
141
  null === (_b = (_a = this.effect).onZoomChange) || void 0 === _b || _b.call(_a, tag),
142
142
  !0;
143
- }, this._handleChartZoom = params => {
143
+ }, this._handleChartZoom = (params, e) => {
144
144
  var _a, _b;
145
- if (!this._activeRoam) return;
145
+ if (!this._activeRoam || this._zoomAttr.filter && !this._zoomAttr.filter(params, e)) return;
146
146
  const {zoomDelta: zoomDelta, zoomX: zoomX, zoomY: zoomY} = params, {x: x, y: y} = this._regions[0].getLayoutStartPoint(), {width: width, height: height} = this._regions[0].getLayoutRect(), delta = Math.abs(this._start - this._end), zoomRate = null !== (_b = null === (_a = this._spec.roamZoom) || void 0 === _a ? void 0 : _a.rate) && void 0 !== _b ? _b : 1;
147
147
  if (delta >= 1 && zoomDelta < 1) return;
148
148
  if (delta <= .01 && zoomDelta > 1) return;
@@ -157,7 +157,7 @@ export class DataFilterBaseComponent extends BaseComponent {
157
157
  this._handleChange(Math.min(start, end), Math.max(start, end), !0);
158
158
  }, this._handleChartScroll = (params, e) => {
159
159
  var _a;
160
- if (!this._activeRoam) return !1;
160
+ if (!this._activeRoam || this._scrollAttr.filter && !this._scrollAttr.filter(params, e)) return !1;
161
161
  const {scrollX: scrollX, scrollY: scrollY} = params;
162
162
  let value = this._isHorizontal ? scrollX : scrollY;
163
163
  const active = this._isHorizontal ? abs(scrollX / scrollY) >= .5 : abs(scrollY / scrollX) >= .5;
@@ -166,7 +166,7 @@ export class DataFilterBaseComponent extends BaseComponent {
166
166
  return active && hasChange;
167
167
  }, this._handleChartDrag = (delta, e) => {
168
168
  var _a;
169
- if (!this._activeRoam) return;
169
+ if (!this._activeRoam || this._dragAttr.filter && !this._dragAttr.filter(delta, e)) return;
170
170
  const [dx, dy] = delta;
171
171
  let value = this._isHorizontal ? dx : dy;
172
172
  this._dragAttr.reverse && (value = -value), this._handleChartMove(value, null !== (_a = this._dragAttr.rate) && void 0 !== _a ? _a : 1);
@@ -297,7 +297,7 @@ export class DataFilterBaseComponent extends BaseComponent {
297
297
  this._field = this._spec.field, this._width = this._computeWidth(), this._height = this._computeHeight(),
298
298
  this._visible = null === (_a = this._spec.visible) || void 0 === _a || _a;
299
299
  }
300
- _statePointToData(state) {
300
+ statePointToData(state) {
301
301
  const scale = this._stateScale, domain = scale.domain();
302
302
  if (isContinuous(scale.type)) return this._isReverse() ? domain[0] + (last(domain) - domain[0]) * (1 - state) : domain[0] + (last(domain) - domain[0]) * state;
303
303
  let range = scale.range();
@@ -323,7 +323,7 @@ export class DataFilterBaseComponent extends BaseComponent {
323
323
  end = "percent" === endMode ? this._spec.end : this.dataToStatePoint(this._spec.endValue));
324
324
  } else start = this._spec.start ? this._spec.start : this._spec.startValue ? this.dataToStatePoint(this._spec.startValue) : 0,
325
325
  end = this._spec.end ? this._spec.end : this._spec.endValue ? this.dataToStatePoint(this._spec.endValue) : 1;
326
- this._startValue = this._statePointToData(start), this._endValue = this._statePointToData(end),
326
+ this._startValue = this.statePointToData(start), this._endValue = this.statePointToData(end),
327
327
  this._start = start, this._end = end, this._minSpan = null !== (_a = this._spec.minSpan) && void 0 !== _a ? _a : 0,
328
328
  this._maxSpan = null !== (_b = this._spec.maxSpan) && void 0 !== _b ? _b : 1, isContinuous(this._stateScale.type) && this._stateScale.domain()[0] !== last(this._stateScale.domain()) && (this._spec.minValueSpan && (this._minSpan = this._spec.minValueSpan / (last(this._stateScale.domain()) - this._stateScale.domain()[0])),
329
329
  this._spec.maxValueSpan && (this._maxSpan = this._spec.maxValueSpan / (last(this._stateScale.domain()) - this._stateScale.domain()[0]))),
@@ -406,7 +406,8 @@ export class DataFilterBaseComponent extends BaseComponent {
406
406
  const option = {
407
407
  delayType: null !== (_b = null === (_a = this._spec) || void 0 === _a ? void 0 : _a.delayType) && void 0 !== _b ? _b : "throttle",
408
408
  delayTime: isValid(null === (_c = this._spec) || void 0 === _c ? void 0 : _c.delayType) ? null !== (_e = null === (_d = this._spec) || void 0 === _d ? void 0 : _d.delayTime) && void 0 !== _e ? _e : 30 : 0,
409
- realTime: null === (_g = null === (_f = this._spec) || void 0 === _f ? void 0 : _f.realTime) || void 0 === _g || _g
409
+ realTime: null === (_g = null === (_f = this._spec) || void 0 === _f ? void 0 : _f.realTime) || void 0 === _g || _g,
410
+ allowComponentZoom: !0
410
411
  };
411
412
  this._zoomAttr.enable && this.initZoomEventOfRegions(this._regions, null, this._handleChartZoom, option),
412
413
  this._scrollAttr.enable && this.initScrollEventOfRegions(this._regions, null, this._handleChartScroll, option),