@visactor/vchart 1.5.2 → 1.5.3

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 (297) hide show
  1. package/build/es5/index.js +1 -1
  2. package/build/index.js +655 -504
  3. package/build/index.min.js +1 -1
  4. package/build/tsconfig.tsbuildinfo +1 -1
  5. package/cjs/chart/base-chart.d.ts +4 -6
  6. package/cjs/chart/base-chart.js +44 -45
  7. package/cjs/chart/base-chart.js.map +1 -1
  8. package/cjs/chart/gauge/gauge.js +3 -2
  9. package/cjs/chart/gauge/gauge.js.map +1 -1
  10. package/cjs/chart/interface/chart.d.ts +3 -3
  11. package/cjs/chart/interface/chart.js.map +1 -1
  12. package/cjs/chart/sequence/sequence.js +0 -1
  13. package/cjs/chart/sequence/sequence.js.map +1 -1
  14. package/cjs/chart/stack.js +1 -2
  15. package/cjs/component/axis/cartesian/linear-axis.js.map +1 -1
  16. package/cjs/component/axis/polar/interface/common.d.ts +1 -0
  17. package/cjs/component/axis/polar/interface/common.js.map +1 -1
  18. package/cjs/component/axis/util.d.ts +3 -3
  19. package/cjs/component/axis/util.js +14 -10
  20. package/cjs/component/axis/util.js.map +1 -1
  21. package/cjs/component/base/base-component.d.ts +1 -2
  22. package/cjs/component/base/base-component.js +2 -39
  23. package/cjs/component/base/base-component.js.map +1 -1
  24. package/cjs/component/base/util.d.ts +2 -3
  25. package/cjs/component/base/util.js +16 -19
  26. package/cjs/component/base/util.js.map +1 -1
  27. package/cjs/component/brush/brush.js +1 -1
  28. package/cjs/component/brush/brush.js.map +1 -1
  29. package/cjs/component/common/trigger/config.d.ts +19 -49
  30. package/cjs/component/common/trigger/config.js +9 -37
  31. package/cjs/component/common/trigger/config.js.map +1 -1
  32. package/cjs/component/crosshair/base.js +14 -11
  33. package/cjs/component/crosshair/base.js.map +1 -1
  34. package/cjs/component/crosshair/config.d.ts +11 -31
  35. package/cjs/component/crosshair/config.js +9 -26
  36. package/cjs/component/crosshair/config.js.map +1 -1
  37. package/cjs/component/crosshair/util.d.ts +3 -3
  38. package/cjs/component/crosshair/util.js +7 -5
  39. package/cjs/component/crosshair/util.js.map +1 -1
  40. package/cjs/component/index.js +2 -1
  41. package/cjs/component/tooltip/handler/base.js +6 -6
  42. package/cjs/component/tooltip/handler/base.js.map +1 -1
  43. package/cjs/component/tooltip/handler/utils/attribute.d.ts +3 -3
  44. package/cjs/component/tooltip/handler/utils/attribute.js.map +1 -1
  45. package/cjs/component/util.d.ts +4 -0
  46. package/cjs/component/util.js +14 -0
  47. package/cjs/component/util.js.map +1 -0
  48. package/cjs/constant/waterfall.js +1 -2
  49. package/cjs/constant/word-cloud.js +2 -1
  50. package/cjs/core/index.d.ts +1 -1
  51. package/cjs/core/index.js +1 -1
  52. package/cjs/core/index.js.map +1 -1
  53. package/cjs/core/interface.d.ts +7 -1
  54. package/cjs/core/interface.js.map +1 -1
  55. package/cjs/core/vchart.d.ts +3 -2
  56. package/cjs/core/vchart.js +52 -47
  57. package/cjs/core/vchart.js.map +1 -1
  58. package/cjs/data/transforms/sankey.d.ts +1 -0
  59. package/cjs/data/transforms/sankey.js +16 -3
  60. package/cjs/data/transforms/sankey.js.map +1 -1
  61. package/cjs/interaction/config.d.ts +17 -52
  62. package/cjs/interaction/config.js +9 -42
  63. package/cjs/interaction/config.js.map +1 -1
  64. package/cjs/interaction/dimension-trigger.js +2 -1
  65. package/cjs/interaction/drill/drillable.js +1 -1
  66. package/cjs/interaction/drill/drillable.js.map +1 -1
  67. package/cjs/interaction/trigger.js +1 -1
  68. package/cjs/interaction/trigger.js.map +1 -1
  69. package/cjs/interaction/zoom/zoomable.js +8 -8
  70. package/cjs/interaction/zoom/zoomable.js.map +1 -1
  71. package/cjs/layout/base-layout.js +1 -1
  72. package/cjs/layout/index.js +1 -1
  73. package/cjs/layout/interface.js +1 -1
  74. package/cjs/mark/arc-3d.js +1 -1
  75. package/cjs/mark/arc.js +1 -1
  76. package/cjs/mark/area.js +1 -1
  77. package/cjs/mark/base/base-mark.js +4 -5
  78. package/cjs/mark/base/base-mark.js.map +1 -1
  79. package/cjs/mark/box-plot.js +1 -1
  80. package/cjs/model/base-model.d.ts +4 -2
  81. package/cjs/model/base-model.js +51 -11
  82. package/cjs/model/base-model.js.map +1 -1
  83. package/cjs/model/interface.d.ts +10 -3
  84. package/cjs/model/interface.js.map +1 -1
  85. package/cjs/series/area/area.d.ts +1 -1
  86. package/cjs/series/area/area.js +1 -1
  87. package/cjs/series/area/area.js.map +1 -1
  88. package/cjs/series/bar/bar.d.ts +1 -1
  89. package/cjs/series/bar/bar.js +1 -1
  90. package/cjs/series/bar/bar.js.map +1 -1
  91. package/cjs/series/base/base-series.d.ts +4 -3
  92. package/cjs/series/base/base-series.js +12 -46
  93. package/cjs/series/base/base-series.js.map +1 -1
  94. package/cjs/series/cartesian/cartesian.d.ts +3 -0
  95. package/cjs/series/cartesian/cartesian.js +5 -2
  96. package/cjs/series/cartesian/cartesian.js.map +1 -1
  97. package/cjs/series/dot/dot.js +3 -4
  98. package/cjs/series/dot/dot.js.map +1 -1
  99. package/cjs/series/gauge/gauge-pointer.d.ts +1 -0
  100. package/cjs/series/gauge/gauge-pointer.js +1 -1
  101. package/cjs/series/gauge/gauge-pointer.js.map +1 -1
  102. package/cjs/series/heatmap/heatmap.js +1 -1
  103. package/cjs/series/heatmap/heatmap.js.map +1 -1
  104. package/cjs/series/interface/theme.d.ts +2 -0
  105. package/cjs/series/interface/theme.js +3 -2
  106. package/cjs/series/interface/theme.js.map +1 -1
  107. package/cjs/series/link/link.js +1 -1
  108. package/cjs/series/link/link.js.map +1 -1
  109. package/cjs/series/map/map.js +1 -1
  110. package/cjs/series/map/map.js.map +1 -1
  111. package/cjs/series/polar/polar.d.ts +1 -0
  112. package/cjs/series/polar/polar.js +3 -1
  113. package/cjs/series/polar/polar.js.map +1 -1
  114. package/cjs/series/polar/progress-like/progress-like.d.ts +1 -1
  115. package/cjs/series/polar/progress-like/progress-like.js +2 -3
  116. package/cjs/series/polar/progress-like/progress-like.js.map +1 -1
  117. package/cjs/series/progress/circular/circular.js +4 -4
  118. package/cjs/series/progress/circular/circular.js.map +1 -1
  119. package/cjs/series/range-area/interface.d.ts +2 -1
  120. package/cjs/series/range-area/interface.js.map +1 -1
  121. package/cjs/series/rose/rose.d.ts +1 -1
  122. package/cjs/series/rose/rose.js +2 -2
  123. package/cjs/series/rose/rose.js.map +1 -1
  124. package/cjs/series/sankey/sankey.js +20 -17
  125. package/cjs/series/sankey/sankey.js.map +1 -1
  126. package/cjs/series/scatter/scatter.d.ts +1 -2
  127. package/cjs/series/scatter/scatter.js +1 -3
  128. package/cjs/series/scatter/scatter.js.map +1 -1
  129. package/cjs/series/waterfall/waterfall.d.ts +1 -1
  130. package/cjs/series/waterfall/waterfall.js +3 -3
  131. package/cjs/series/waterfall/waterfall.js.map +1 -1
  132. package/cjs/series/word-cloud/base.js +34 -35
  133. package/cjs/series/word-cloud/base.js.map +1 -1
  134. package/cjs/series/word-cloud/word-cloud-3d.js +32 -32
  135. package/cjs/series/word-cloud/word-cloud-3d.js.map +1 -1
  136. package/cjs/theme/builtin/index.d.ts +4 -1
  137. package/cjs/theme/builtin/index.js +13 -8
  138. package/cjs/theme/builtin/index.js.map +1 -1
  139. package/cjs/theme/color-scheme/util.js +2 -1
  140. package/cjs/theme/color-scheme/util.js.map +1 -1
  141. package/cjs/theme/theme-manager.js +4 -3
  142. package/cjs/theme/theme-manager.js.map +1 -1
  143. package/cjs/theme/util.d.ts +5 -0
  144. package/cjs/theme/util.js +34 -0
  145. package/cjs/theme/util.js.map +1 -0
  146. package/cjs/util/spec/merge-theme.d.ts +4 -1
  147. package/cjs/util/spec/merge-theme.js +22 -13
  148. package/cjs/util/spec/merge-theme.js.map +1 -1
  149. package/cjs/util/spec/preprocess.js +1 -0
  150. package/cjs/util/spec/preprocess.js.map +1 -1
  151. package/esm/chart/base-chart.d.ts +4 -6
  152. package/esm/chart/base-chart.js +42 -42
  153. package/esm/chart/base-chart.js.map +1 -1
  154. package/esm/chart/gauge/gauge.js +3 -2
  155. package/esm/chart/gauge/gauge.js.map +1 -1
  156. package/esm/chart/interface/chart.d.ts +3 -3
  157. package/esm/chart/interface/chart.js.map +1 -1
  158. package/esm/chart/sequence/sequence.js +0 -1
  159. package/esm/chart/sequence/sequence.js.map +1 -1
  160. package/esm/chart/stack.js +1 -2
  161. package/esm/component/axis/cartesian/linear-axis.js.map +1 -1
  162. package/esm/component/axis/polar/interface/common.d.ts +1 -0
  163. package/esm/component/axis/polar/interface/common.js.map +1 -1
  164. package/esm/component/axis/util.d.ts +3 -3
  165. package/esm/component/axis/util.js +10 -8
  166. package/esm/component/axis/util.js.map +1 -1
  167. package/esm/component/base/base-component.d.ts +1 -2
  168. package/esm/component/base/base-component.js +3 -40
  169. package/esm/component/base/base-component.js.map +1 -1
  170. package/esm/component/base/util.d.ts +2 -3
  171. package/esm/component/base/util.js +19 -16
  172. package/esm/component/base/util.js.map +1 -1
  173. package/esm/component/brush/brush.js +1 -1
  174. package/esm/component/brush/brush.js.map +1 -1
  175. package/esm/component/common/trigger/config.d.ts +19 -49
  176. package/esm/component/common/trigger/config.js +7 -35
  177. package/esm/component/common/trigger/config.js.map +1 -1
  178. package/esm/component/crosshair/base.js +14 -12
  179. package/esm/component/crosshair/base.js.map +1 -1
  180. package/esm/component/crosshair/config.d.ts +11 -31
  181. package/esm/component/crosshair/config.js +8 -25
  182. package/esm/component/crosshair/config.js.map +1 -1
  183. package/esm/component/crosshair/util.d.ts +3 -3
  184. package/esm/component/crosshair/util.js +8 -4
  185. package/esm/component/crosshair/util.js.map +1 -1
  186. package/esm/component/index.js +2 -1
  187. package/esm/component/tooltip/handler/base.js +7 -5
  188. package/esm/component/tooltip/handler/base.js.map +1 -1
  189. package/esm/component/tooltip/handler/utils/attribute.d.ts +3 -3
  190. package/esm/component/tooltip/handler/utils/attribute.js.map +1 -1
  191. package/esm/component/util.d.ts +4 -0
  192. package/esm/component/util.js +6 -0
  193. package/esm/component/util.js.map +1 -0
  194. package/esm/constant/waterfall.js +1 -2
  195. package/esm/constant/word-cloud.js +2 -1
  196. package/esm/core/index.d.ts +1 -1
  197. package/esm/core/index.js +1 -1
  198. package/esm/core/index.js.map +1 -1
  199. package/esm/core/interface.d.ts +7 -1
  200. package/esm/core/interface.js.map +1 -1
  201. package/esm/core/vchart.d.ts +3 -2
  202. package/esm/core/vchart.js +53 -42
  203. package/esm/core/vchart.js.map +1 -1
  204. package/esm/data/transforms/sankey.d.ts +1 -0
  205. package/esm/data/transforms/sankey.js +17 -4
  206. package/esm/data/transforms/sankey.js.map +1 -1
  207. package/esm/interaction/config.d.ts +17 -52
  208. package/esm/interaction/config.js +7 -40
  209. package/esm/interaction/config.js.map +1 -1
  210. package/esm/interaction/dimension-trigger.js +2 -1
  211. package/esm/interaction/drill/drillable.js +2 -2
  212. package/esm/interaction/drill/drillable.js.map +1 -1
  213. package/esm/interaction/trigger.js +2 -2
  214. package/esm/interaction/trigger.js.map +1 -1
  215. package/esm/interaction/zoom/zoomable.js +9 -9
  216. package/esm/interaction/zoom/zoomable.js.map +1 -1
  217. package/esm/layout/base-layout.js +1 -1
  218. package/esm/layout/index.js +1 -1
  219. package/esm/layout/interface.js +1 -1
  220. package/esm/mark/arc-3d.js +1 -1
  221. package/esm/mark/arc.js +1 -1
  222. package/esm/mark/area.js +1 -1
  223. package/esm/mark/base/base-mark.js +4 -5
  224. package/esm/mark/base/base-mark.js.map +1 -1
  225. package/esm/mark/box-plot.js +1 -1
  226. package/esm/model/base-model.d.ts +4 -2
  227. package/esm/model/base-model.js +53 -10
  228. package/esm/model/base-model.js.map +1 -1
  229. package/esm/model/interface.d.ts +10 -3
  230. package/esm/model/interface.js.map +1 -1
  231. package/esm/series/area/area.d.ts +1 -1
  232. package/esm/series/area/area.js +1 -1
  233. package/esm/series/area/area.js.map +1 -1
  234. package/esm/series/bar/bar.d.ts +1 -1
  235. package/esm/series/bar/bar.js +1 -1
  236. package/esm/series/bar/bar.js.map +1 -1
  237. package/esm/series/base/base-series.d.ts +4 -3
  238. package/esm/series/base/base-series.js +14 -46
  239. package/esm/series/base/base-series.js.map +1 -1
  240. package/esm/series/cartesian/cartesian.d.ts +3 -0
  241. package/esm/series/cartesian/cartesian.js +4 -3
  242. package/esm/series/cartesian/cartesian.js.map +1 -1
  243. package/esm/series/dot/dot.js +2 -4
  244. package/esm/series/dot/dot.js.map +1 -1
  245. package/esm/series/gauge/gauge-pointer.d.ts +1 -0
  246. package/esm/series/gauge/gauge-pointer.js +1 -1
  247. package/esm/series/gauge/gauge-pointer.js.map +1 -1
  248. package/esm/series/heatmap/heatmap.js +1 -1
  249. package/esm/series/heatmap/heatmap.js.map +1 -1
  250. package/esm/series/interface/theme.d.ts +2 -0
  251. package/esm/series/interface/theme.js +4 -1
  252. package/esm/series/interface/theme.js.map +1 -1
  253. package/esm/series/link/link.js +1 -1
  254. package/esm/series/link/link.js.map +1 -1
  255. package/esm/series/map/map.js +1 -1
  256. package/esm/series/map/map.js.map +1 -1
  257. package/esm/series/polar/polar.d.ts +1 -0
  258. package/esm/series/polar/polar.js +3 -2
  259. package/esm/series/polar/polar.js.map +1 -1
  260. package/esm/series/polar/progress-like/progress-like.d.ts +1 -1
  261. package/esm/series/polar/progress-like/progress-like.js +2 -3
  262. package/esm/series/polar/progress-like/progress-like.js.map +1 -1
  263. package/esm/series/progress/circular/circular.js +4 -4
  264. package/esm/series/progress/circular/circular.js.map +1 -1
  265. package/esm/series/range-area/interface.d.ts +2 -1
  266. package/esm/series/range-area/interface.js.map +1 -1
  267. package/esm/series/rose/rose.d.ts +1 -1
  268. package/esm/series/rose/rose.js +1 -1
  269. package/esm/series/rose/rose.js.map +1 -1
  270. package/esm/series/sankey/sankey.js +12 -9
  271. package/esm/series/sankey/sankey.js.map +1 -1
  272. package/esm/series/scatter/scatter.d.ts +1 -2
  273. package/esm/series/scatter/scatter.js +2 -3
  274. package/esm/series/scatter/scatter.js.map +1 -1
  275. package/esm/series/waterfall/waterfall.d.ts +1 -1
  276. package/esm/series/waterfall/waterfall.js +3 -3
  277. package/esm/series/waterfall/waterfall.js.map +1 -1
  278. package/esm/series/word-cloud/base.js +33 -35
  279. package/esm/series/word-cloud/base.js.map +1 -1
  280. package/esm/series/word-cloud/word-cloud-3d.js +32 -32
  281. package/esm/series/word-cloud/word-cloud-3d.js.map +1 -1
  282. package/esm/theme/builtin/index.d.ts +4 -1
  283. package/esm/theme/builtin/index.js +15 -6
  284. package/esm/theme/builtin/index.js.map +1 -1
  285. package/esm/theme/color-scheme/util.js +1 -1
  286. package/esm/theme/color-scheme/util.js.map +1 -1
  287. package/esm/theme/theme-manager.js +5 -4
  288. package/esm/theme/theme-manager.js.map +1 -1
  289. package/esm/theme/util.d.ts +5 -0
  290. package/esm/theme/util.js +34 -0
  291. package/esm/theme/util.js.map +1 -0
  292. package/esm/util/spec/merge-theme.d.ts +4 -1
  293. package/esm/util/spec/merge-theme.js +18 -10
  294. package/esm/util/spec/merge-theme.js.map +1 -1
  295. package/esm/util/spec/preprocess.js +2 -1
  296. package/esm/util/spec/preprocess.js.map +1 -1
  297. package/package.json +17 -17
@@ -1,18 +1,9 @@
1
1
  import { RenderModeEnum } from "../typings/spec/common";
2
2
 
3
- export const defaultInteractionConfig = {
4
- [RenderModeEnum["desktop-miniApp"]]: {
5
- hover: {
6
- enable: !0,
7
- trigger: "pointermove",
8
- triggerOff: [ "pointermove", "pointerleave" ]
9
- },
10
- select: {
11
- enable: !0,
12
- trigger: "pointertap"
13
- }
14
- },
15
- [RenderModeEnum["desktop-browser"]]: {
3
+ import { isMiniAppLikeMode, isMobileLikeMode } from "../util";
4
+
5
+ export function getDefaultInteractionConfigByMode(mode) {
6
+ return mode === RenderModeEnum["desktop-browser"] || mode === RenderModeEnum["desktop-miniApp"] ? {
16
7
  hover: {
17
8
  enable: !0,
18
9
  trigger: "pointermove",
@@ -22,30 +13,7 @@ export const defaultInteractionConfig = {
22
13
  enable: !0,
23
14
  trigger: "pointertap"
24
15
  }
25
- },
26
- [RenderModeEnum["mobile-browser"]]: {
27
- hover: {
28
- enable: !0,
29
- trigger: "pointerover",
30
- triggerOff: "pointerout"
31
- },
32
- select: {
33
- enable: !0,
34
- trigger: "tap"
35
- }
36
- },
37
- [RenderModeEnum.miniApp]: {
38
- hover: {
39
- enable: !0,
40
- trigger: "pointerover",
41
- triggerOff: "pointerout"
42
- },
43
- select: {
44
- enable: !0,
45
- trigger: "tap"
46
- }
47
- },
48
- [RenderModeEnum.lynx]: {
16
+ } : isMobileLikeMode(mode) || isMiniAppLikeMode(mode) ? {
49
17
  hover: {
50
18
  enable: !0,
51
19
  trigger: "pointerover",
@@ -55,6 +23,5 @@ export const defaultInteractionConfig = {
55
23
  enable: !0,
56
24
  trigger: "tap"
57
25
  }
58
- }
59
- };
60
- //# sourceMappingURL=config.js.map
26
+ } : null;
27
+ }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interaction/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,EAAE;QACnC,KAAK,EAAE;YACL,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,aAAa;YACtB,UAAU,EAAE,CAAC,aAAa,EAAE,cAAc,CAAC;SAC5C;QACD,MAAM,EAAE;YACN,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,YAAY;SACtB;KACF;IACD,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,EAAE;QACnC,KAAK,EAAE;YACL,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,aAAa;YACtB,UAAU,EAAE,CAAC,aAAa,EAAE,cAAc,CAAC;SAC5C;QACD,MAAM,EAAE;YACN,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,YAAY;SACtB;KACF;IACD,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,EAAE;QAClC,KAAK,EAAE;YACL,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,aAAa;YACtB,UAAU,EAAE,YAAY;SACzB;QACD,MAAM,EAAE;YACN,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,KAAK;SACf;KACF;IACD,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;QACxB,KAAK,EAAE;YACL,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,aAAa;YACtB,UAAU,EAAE,YAAY;SACzB;QACD,MAAM,EAAE;YACN,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,KAAK;SACf;KACF;IACD,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;QACrB,KAAK,EAAE;YACL,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,aAAa;YACtB,UAAU,EAAE,YAAY;SACzB;QACD,MAAM,EAAE;YACN,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,KAAK;SACf;KACF;CACF,CAAC","file":"config.js","sourcesContent":["import { RenderModeEnum } from '../typings/spec/common';\n\nexport const defaultInteractionConfig = {\n [RenderModeEnum['desktop-miniApp']]: {\n hover: {\n enable: true,\n trigger: 'pointermove',\n triggerOff: ['pointermove', 'pointerleave']\n },\n select: {\n enable: true,\n trigger: 'pointertap'\n }\n },\n [RenderModeEnum['desktop-browser']]: {\n hover: {\n enable: true,\n trigger: 'pointermove',\n triggerOff: ['pointermove', 'pointerleave']\n },\n select: {\n enable: true,\n trigger: 'pointertap'\n }\n },\n [RenderModeEnum['mobile-browser']]: {\n hover: {\n enable: true,\n trigger: 'pointerover',\n triggerOff: 'pointerout'\n },\n select: {\n enable: true,\n trigger: 'tap'\n }\n },\n [RenderModeEnum.miniApp]: {\n hover: {\n enable: true,\n trigger: 'pointerover',\n triggerOff: 'pointerout'\n },\n select: {\n enable: true,\n trigger: 'tap'\n }\n },\n [RenderModeEnum.lynx]: {\n hover: {\n enable: true,\n trigger: 'pointerover',\n triggerOff: 'pointerout'\n },\n select: {\n enable: true,\n trigger: 'tap'\n }\n }\n};\n"]}
1
+ {"version":3,"sources":["../src/interaction/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE9D,MAAM,UAAU,iCAAiC,CAAC,IAAgB;IAChE,IAAI,IAAI,KAAK,cAAc,CAAC,iBAAiB,CAAC,IAAI,IAAI,KAAK,cAAc,CAAC,iBAAiB,CAAC,EAAE;QAC5F,OAAO;YACL,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI;gBACZ,OAAO,EAAE,aAAa;gBACtB,UAAU,EAAE,CAAC,aAAa,EAAE,cAAc,CAAC;aAC5C;YACD,MAAM,EAAE;gBACN,MAAM,EAAE,IAAI;gBACZ,OAAO,EAAE,YAAY;aACtB;SACF,CAAC;KACH;IAED,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE;QACrD,OAAO;YACL,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI;gBACZ,OAAO,EAAE,aAAa;gBACtB,UAAU,EAAE,YAAY;aACzB;YACD,MAAM,EAAE;gBACN,MAAM,EAAE,IAAI;gBACZ,OAAO,EAAE,KAAK;aACf;SACF,CAAC;KACH;IAED,OAAO,IAAI,CAAC;AACd,CAAC","file":"config.js","sourcesContent":["import type { RenderMode } from '../typings/spec/common';\nimport { RenderModeEnum } from '../typings/spec/common';\nimport { isMiniAppLikeMode, isMobileLikeMode } from '../util';\n\nexport function getDefaultInteractionConfigByMode(mode: RenderMode) {\n if (mode === RenderModeEnum['desktop-browser'] || mode === RenderModeEnum['desktop-miniApp']) {\n return {\n hover: {\n enable: true,\n trigger: 'pointermove',\n triggerOff: ['pointermove', 'pointerleave']\n },\n select: {\n enable: true,\n trigger: 'pointertap'\n }\n };\n }\n\n if (isMobileLikeMode(mode) || isMiniAppLikeMode(mode)) {\n return {\n hover: {\n enable: true,\n trigger: 'pointerover',\n triggerOff: 'pointerout'\n },\n select: {\n enable: true,\n trigger: 'tap'\n }\n };\n }\n\n return null;\n}\n"]}
@@ -90,4 +90,5 @@ export class DimensionTrigger {
90
90
  }
91
91
  return !0;
92
92
  }
93
- }
93
+ }
94
+ //# sourceMappingURL=dimension-trigger.js.map
@@ -4,7 +4,7 @@ import { drillFilter } from "../../data/transforms/drill";
4
4
 
5
5
  import { DrillEnum } from "../../data/transforms/drill";
6
6
 
7
- import { defaultTriggerEvent } from "../../component/common/trigger/config";
7
+ import { getDefaultTriggerEventByMode } from "../../component/common/trigger/config";
8
8
 
9
9
  import { findHierarchyPath } from "../../util";
10
10
 
@@ -18,7 +18,7 @@ export class Drillable {
18
18
  _getTriggerEvent(type) {
19
19
  var _a;
20
20
  const {mode: mode} = this._drillParams;
21
- return null === (_a = defaultTriggerEvent[mode]) || void 0 === _a ? void 0 : _a[type];
21
+ return null === (_a = getDefaultTriggerEventByMode(mode)) || void 0 === _a ? void 0 : _a[type];
22
22
  }
23
23
  _hideTooltip() {
24
24
  const tooltip = this.getChart().getAllComponents().find((c => c.type === ComponentTypeEnum.tooltip));
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interaction/drill/drillable.ts"],"names":[],"mappings":"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","file":"drillable.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport { isArray, isEmpty, isNil } from '@visactor/vutils';\nimport type { DataSet, DataView } from '@visactor/vdataset';\n\nimport type { DrillInfo } from '../../data/transforms/drill';\nimport { drillFilter } from '../../data/transforms/drill';\nimport { DrillEnum } from '../../data/transforms/drill';\nimport type { EventType, IEvent } from '../../event/interface';\nimport type { RenderMode } from '../../typings/spec';\nimport { defaultTriggerEvent } from '../../component/common/trigger/config';\nimport { findHierarchyPath } from '../../util';\nimport { ChartEvent } from '../../constant';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport type { IModel } from '../../model/interface';\nimport type { BaseSeries } from '../../series/base/base-series';\nimport { ComponentTypeEnum } from '../../component/interface';\nimport type { Tooltip } from '../../component/tooltip';\n\ninterface DrillParams {\n event: IEvent;\n mode: RenderMode;\n drillField: () => string;\n getRawData: () => DataView;\n}\n\nexport interface IDrillable {\n /**\n * 初始化钻取设置\n */\n initDrillable: (params: DrillParams) => void;\n\n /**\n * 初始化钻取数据\n */\n initDrillableData: (dataSet: DataSet) => void;\n\n /**\n * 绑定钻取事件\n */\n bindDrillEvent: () => void;\n\n /**\n * 上卷\n */\n drillUp: () => void;\n\n /**\n * 下钻\n * @param drillPath 钻取路径\n */\n drillDown: (drillPath: string[]) => string[];\n}\n\nexport class Drillable implements IDrillable {\n private _drillParams: DrillParams;\n private _drillInfo: DrillInfo;\n\n private _getTriggerEvent(type: string): EventType {\n const { mode } = this._drillParams;\n return defaultTriggerEvent[mode]?.[type];\n }\n\n private _hideTooltip() {\n const tooltip = (this as unknown as BaseSeries<null>)\n .getChart()\n .getAllComponents()\n .find(c => c.type === ComponentTypeEnum.tooltip) as Tooltip;\n tooltip && tooltip.hideTooltip();\n }\n\n initDrillable(params: DrillParams) {\n this._drillParams = params;\n }\n\n initDrillableData(dataSet: DataSet) {\n const { getRawData } = this._drillParams;\n // 注册筛选方法\n registerDataSetInstanceTransform(dataSet, 'drillFilter', drillFilter);\n\n // 调用筛选数据, 用于上卷下钻\n getRawData().transform({\n type: 'drillFilter',\n options: {\n info: () => this._drillInfo,\n keyField: () => this._drillParams.drillField()\n }\n });\n }\n\n bindDrillEvent() {\n const { event, getRawData, drillField } = this._drillParams;\n const keyField = drillField();\n if (this._getTriggerEvent('start')) {\n event.on(this._getTriggerEvent('start'), e => {\n if (isNil(e.datum) || isNil(e.datum?.[keyField])) {\n this.drillUp();\n return;\n }\n\n // Drill交互后, 隐藏Tooltip\n this._hideTooltip();\n // 获取数据key\n const dataKey = e.datum[keyField];\n // 已钻取的路径\n const selectPath = this._drillInfo?.path ?? [];\n // 用户点击的路径\n const clickedPath = findHierarchyPath(getRawData().rawData, dataKey, keyField, 'children');\n // 已钻取过, 则一定上卷\n if (selectPath[selectPath.length - 1] === clickedPath[clickedPath.length - 1]) {\n this.drillUp();\n } else {\n this.drillDown(clickedPath);\n }\n });\n }\n }\n\n /**\n * 下钻接口\n * @param drillPath 下钻后的路径\n * @returns 当然路径\n * @description 根据传入的path, 向指定层级下钻.\n */\n drillDown(drillPath: string[] = []): string[] {\n const { getRawData, event } = this._drillParams;\n if (!isArray(drillPath) || isEmpty(drillPath)) {\n return drillPath;\n }\n\n // 根据钻取路径, 获得当前需要展示的层级\n const dataKey = drillPath[drillPath.length - 1];\n\n this._drillInfo = {\n key: dataKey,\n path: drillPath,\n type: DrillEnum.DrillDown\n };\n\n getRawData().reRunAllTransform();\n event.emit(ChartEvent.drill, {\n value: { path: drillPath, type: DrillEnum.DrillDown },\n model: this as unknown as IModel\n });\n return drillPath;\n }\n\n /**\n * 上卷接口\n * @returns 上卷后的路径\n * @description 根据path信息, 向父层级上卷.\n */\n drillUp() {\n const { getRawData, event } = this._drillParams;\n\n const path = this._drillInfo?.path ?? [];\n if (!isArray(path) || isEmpty(path)) {\n return path;\n }\n\n const dataKey = path.pop();\n\n this._drillInfo = {\n key: dataKey,\n path: path,\n type: DrillEnum.DrillUp\n };\n\n getRawData().reRunAllTransform();\n event.emit(ChartEvent.drill, {\n value: { path, type: DrillEnum.DrillUp },\n model: this as unknown as IModel\n });\n return path;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/interaction/drill/drillable.ts"],"names":[],"mappings":"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","file":"drillable.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport { isArray, isEmpty, isNil } from '@visactor/vutils';\nimport type { DataSet, DataView } from '@visactor/vdataset';\n\nimport type { DrillInfo } from '../../data/transforms/drill';\nimport { drillFilter } from '../../data/transforms/drill';\nimport { DrillEnum } from '../../data/transforms/drill';\nimport type { EventType, IEvent } from '../../event/interface';\nimport type { RenderMode } from '../../typings/spec';\nimport { getDefaultTriggerEventByMode } from '../../component/common/trigger/config';\nimport { findHierarchyPath } from '../../util';\nimport { ChartEvent } from '../../constant';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport type { IModel } from '../../model/interface';\nimport type { BaseSeries } from '../../series/base/base-series';\nimport { ComponentTypeEnum } from '../../component/interface';\nimport type { Tooltip } from '../../component/tooltip';\n\ninterface DrillParams {\n event: IEvent;\n mode: RenderMode;\n drillField: () => string;\n getRawData: () => DataView;\n}\n\nexport interface IDrillable {\n /**\n * 初始化钻取设置\n */\n initDrillable: (params: DrillParams) => void;\n\n /**\n * 初始化钻取数据\n */\n initDrillableData: (dataSet: DataSet) => void;\n\n /**\n * 绑定钻取事件\n */\n bindDrillEvent: () => void;\n\n /**\n * 上卷\n */\n drillUp: () => void;\n\n /**\n * 下钻\n * @param drillPath 钻取路径\n */\n drillDown: (drillPath: string[]) => string[];\n}\n\nexport class Drillable implements IDrillable {\n private _drillParams: DrillParams;\n private _drillInfo: DrillInfo;\n\n private _getTriggerEvent(type: string): EventType {\n const { mode } = this._drillParams;\n\n return getDefaultTriggerEventByMode(mode)?.[type];\n }\n\n private _hideTooltip() {\n const tooltip = (this as unknown as BaseSeries<null>)\n .getChart()\n .getAllComponents()\n .find(c => c.type === ComponentTypeEnum.tooltip) as Tooltip;\n tooltip && tooltip.hideTooltip();\n }\n\n initDrillable(params: DrillParams) {\n this._drillParams = params;\n }\n\n initDrillableData(dataSet: DataSet) {\n const { getRawData } = this._drillParams;\n // 注册筛选方法\n registerDataSetInstanceTransform(dataSet, 'drillFilter', drillFilter);\n\n // 调用筛选数据, 用于上卷下钻\n getRawData().transform({\n type: 'drillFilter',\n options: {\n info: () => this._drillInfo,\n keyField: () => this._drillParams.drillField()\n }\n });\n }\n\n bindDrillEvent() {\n const { event, getRawData, drillField } = this._drillParams;\n const keyField = drillField();\n if (this._getTriggerEvent('start')) {\n event.on(this._getTriggerEvent('start'), e => {\n if (isNil(e.datum) || isNil(e.datum?.[keyField])) {\n this.drillUp();\n return;\n }\n\n // Drill交互后, 隐藏Tooltip\n this._hideTooltip();\n // 获取数据key\n const dataKey = e.datum[keyField];\n // 已钻取的路径\n const selectPath = this._drillInfo?.path ?? [];\n // 用户点击的路径\n const clickedPath = findHierarchyPath(getRawData().rawData, dataKey, keyField, 'children');\n // 已钻取过, 则一定上卷\n if (selectPath[selectPath.length - 1] === clickedPath[clickedPath.length - 1]) {\n this.drillUp();\n } else {\n this.drillDown(clickedPath);\n }\n });\n }\n }\n\n /**\n * 下钻接口\n * @param drillPath 下钻后的路径\n * @returns 当然路径\n * @description 根据传入的path, 向指定层级下钻.\n */\n drillDown(drillPath: string[] = []): string[] {\n const { getRawData, event } = this._drillParams;\n if (!isArray(drillPath) || isEmpty(drillPath)) {\n return drillPath;\n }\n\n // 根据钻取路径, 获得当前需要展示的层级\n const dataKey = drillPath[drillPath.length - 1];\n\n this._drillInfo = {\n key: dataKey,\n path: drillPath,\n type: DrillEnum.DrillDown\n };\n\n getRawData().reRunAllTransform();\n event.emit(ChartEvent.drill, {\n value: { path: drillPath, type: DrillEnum.DrillDown },\n model: this as unknown as IModel\n });\n return drillPath;\n }\n\n /**\n * 上卷接口\n * @returns 上卷后的路径\n * @description 根据path信息, 向父层级上卷.\n */\n drillUp() {\n const { getRawData, event } = this._drillParams;\n\n const path = this._drillInfo?.path ?? [];\n if (!isArray(path) || isEmpty(path)) {\n return path;\n }\n\n const dataKey = path.pop();\n\n this._drillInfo = {\n key: dataKey,\n path: path,\n type: DrillEnum.DrillUp\n };\n\n getRawData().reRunAllTransform();\n event.emit(ChartEvent.drill, {\n value: { path, type: DrillEnum.DrillUp },\n model: this as unknown as IModel\n });\n return path;\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import { Event } from "../event/event";
2
2
 
3
- import { defaultInteractionConfig } from "./config";
3
+ import { getDefaultInteractionConfigByMode } from "./config";
4
4
 
5
5
  import { mergeSpec, isBoolean, isObject, array } from "../util";
6
6
 
@@ -72,7 +72,7 @@ export class Trigger {
72
72
  this.event.release();
73
73
  }
74
74
  initConfig(mode) {
75
- const defaultConfig = defaultInteractionConfig[mode];
75
+ const defaultConfig = getDefaultInteractionConfigByMode(mode);
76
76
  this._hover = Object.assign({}, null == defaultConfig ? void 0 : defaultConfig.hover),
77
77
  this._select = Object.assign({}, null == defaultConfig ? void 0 : defaultConfig.select);
78
78
  const hoverSpec = this._spec.hover;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interaction/trigger.ts"],"names":[],"mappings":"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","file":"trigger.js","sourcesContent":["import { Event } from '../event/event';\nimport { defaultInteractionConfig } from './config';\nimport { mergeSpec, isBoolean, isObject, array } from '../util';\n\nimport type { IMark } from '../mark/interface';\nimport type { BaseEventParams, EventCallback, EventParams, IEvent } from '../event/interface';\nimport type { IHoverSpec, IInteraction, ISelectSpec, ITrigger, ITriggerOption, ITriggerSpec } from './interface';\nimport type { RenderMode } from '../typings/spec';\nimport { MarkSet } from '../mark/mark-set';\nimport { STATE_VALUE_ENUM } from '../compile/mark';\nimport { Event_Bubble_Level, Event_Source_Type } from '../constant';\n\nexport class Trigger implements ITrigger {\n // 事件\n readonly event: IEvent;\n\n protected readonly interaction: IInteraction;\n\n protected _spec: ITriggerSpec;\n protected _option: ITriggerOption;\n\n protected _hover: IHoverSpec;\n get hover() {\n return this._hover;\n }\n protected _select: ISelectSpec;\n get select() {\n return this._select;\n }\n\n protected _fields: string[] | null = null;\n protected _marks: MarkSet = new MarkSet();\n protected _markReverse: MarkSet = new MarkSet();\n\n constructor(spec: ITriggerSpec, option: ITriggerOption) {\n this._spec = spec;\n this._option = option;\n this.event = new Event(option.eventDispatcher, option.mode);\n this.interaction = option.interaction;\n this.initConfig(option.mode);\n }\n\n setStateKeys(fields: string[]): void {\n this._fields = [...fields];\n }\n\n registerMark(mark: IMark): void {\n this._marks.addMark(mark);\n if (this._hover.enable) {\n this.interaction.registerMark(STATE_VALUE_ENUM.STATE_HOVER, mark);\n }\n if (this._select.enable) {\n this.interaction.registerMark(STATE_VALUE_ENUM.STATE_SELECTED, mark);\n }\n }\n\n init(): void {\n this.initEvent();\n }\n\n release(): void {\n this.releaseEvent();\n this._marks.clear();\n }\n\n // event\n protected initEvent() {\n const event = this.event;\n const { enable: hoverEnable, trigger: hoverTrigger, triggerOff: hoverTriggerOff } = this._hover;\n const { enable: selectEnable, trigger: selectTrigger, triggerOff: selectTriggerOff } = this._select;\n if (hoverEnable) {\n // 进行 hover 交互相关的事件绑定\n array(hoverTrigger).forEach(trigger => {\n event.on(trigger, { level: Event_Bubble_Level.chart }, this.onHover as EventCallback<EventParams>);\n });\n if (hoverTriggerOff && hoverTriggerOff !== 'none') {\n array(hoverTriggerOff).forEach(trigger => {\n event.on(\n trigger,\n { level: Event_Bubble_Level.vchart, source: Event_Source_Type.chart },\n this.onUnHover as EventCallback<EventParams>\n );\n });\n }\n }\n\n if (selectEnable) {\n // 进行 select 交互相关的事件绑定\n array(selectTrigger).forEach(trigger => {\n event.on(trigger, { level: Event_Bubble_Level.mark }, this.onSelect as EventCallback<EventParams>);\n });\n if (selectTriggerOff && selectTriggerOff !== 'none') {\n array(selectTriggerOff).forEach(trigger => {\n event.on(trigger, { level: Event_Bubble_Level.mark }, this.onUnSelect as EventCallback<EventParams>);\n });\n }\n // default triggerOff: active without mark , unselected\n if (!selectTriggerOff) {\n array(selectTriggerOff ?? selectTrigger).forEach(trigger => {\n event.on(trigger, { level: Event_Bubble_Level.vchart }, this.onUnSelect as EventCallback<EventParams>);\n });\n }\n }\n }\n\n protected releaseEvent(): void {\n this.event.release();\n }\n\n private initConfig(mode: RenderMode): void {\n const defaultConfig = defaultInteractionConfig[mode];\n this._hover = { ...defaultConfig?.hover };\n this._select = { ...defaultConfig?.select };\n\n const hoverSpec = this._spec.hover;\n if (isBoolean(hoverSpec)) {\n this._hover.enable = hoverSpec;\n } else if (isObject(hoverSpec)) {\n this._hover.enable = true;\n this._hover = mergeSpec(this._hover, hoverSpec);\n }\n\n const selectSpec = this._spec.select;\n if (isBoolean(selectSpec)) {\n this._select.enable = selectSpec;\n } else if (isObject(selectSpec)) {\n this._select.enable = true;\n this._select = mergeSpec(this._select, selectSpec);\n }\n }\n\n private onHover = (params: BaseEventParams) => {\n if (this.filterEventMark(params)) {\n this.hoverItem(params);\n }\n };\n\n private onUnHover = (params: BaseEventParams) => {\n if (this.filterEventMark(params) || this.interaction.filterEventMark(params, STATE_VALUE_ENUM.STATE_HOVER)) {\n return;\n }\n if (this.interaction.getEventElement(STATE_VALUE_ENUM.STATE_HOVER)[0]) {\n this.unhoverItem();\n }\n };\n\n private onSelect = (params: BaseEventParams) => {\n this.handleSingleEventSelect(params);\n };\n\n private onUnSelect = (params: BaseEventParams) => {\n if (!this.interaction.filterEventMark(params, STATE_VALUE_ENUM.STATE_SELECTED)) {\n this.clearSelectedItems();\n }\n };\n\n // hover\n protected hoverItem(params: BaseEventParams): void {\n const { datum } = params;\n const lastEl = this.interaction.getEventElement(STATE_VALUE_ENUM.STATE_HOVER)[0];\n if (params.item === lastEl) {\n return;\n }\n this.interaction.exchangeEventElement(STATE_VALUE_ENUM.STATE_HOVER, params.item);\n this.interaction.reverseEventElement(STATE_VALUE_ENUM.STATE_HOVER);\n this.event.emit('hovered', {\n model: this._option.model,\n value: [datum]\n });\n }\n\n protected unhoverItem(): void {\n const lastHoveredDatums = this.interaction.getEventElementData(STATE_VALUE_ENUM.STATE_HOVER);\n this.interaction.clearEventElement(STATE_VALUE_ENUM.STATE_HOVER, true);\n\n this.event.emit('unhovered', {\n model: this._option.model,\n value: lastHoveredDatums\n });\n }\n\n protected handleSingleEventHover(params: BaseEventParams): void {\n if (this.filterEventMark(params)) {\n this.hoverItem(params);\n } else if (\n this.interaction.getEventElement(STATE_VALUE_ENUM.STATE_HOVER)[0] &&\n !this.interaction.filterEventMark(params, STATE_VALUE_ENUM.STATE_HOVER)\n ) {\n this.unhoverItem();\n }\n }\n\n // select\n protected selectItems(datums: any[]): void {\n this.event.emit('selected', {\n model: this._option.model,\n value: datums\n });\n }\n\n protected clearSelectedItems() {\n const lastSelectedItem = this.interaction.getEventElementData(STATE_VALUE_ENUM.STATE_SELECTED);\n this.interaction.clearEventElement(STATE_VALUE_ENUM.STATE_SELECTED, true);\n\n this.event.emit('unselected', {\n model: this._option.model,\n value: lastSelectedItem\n });\n }\n\n protected unselectItems(params: BaseEventParams): void {\n this.interaction.removeEventElement(STATE_VALUE_ENUM.STATE_SELECTED, params.item);\n this.event.emit('unselected', {\n model: this._option.model,\n value: params.item\n });\n }\n\n protected handleSingleEventSelect(params: BaseEventParams): void {\n if (this.filterEventMark(params)) {\n if (params.item.getStates().includes(STATE_VALUE_ENUM.STATE_SELECTED)) {\n this.unselectItems(params);\n } else {\n switch (this._select.mode) {\n case 'multiple':\n this.interaction.addEventElement(STATE_VALUE_ENUM.STATE_SELECTED, params.item);\n break;\n case 'single':\n default:\n this.interaction.exchangeEventElement(STATE_VALUE_ENUM.STATE_SELECTED, params.item);\n }\n this.interaction.reverseEventElement(STATE_VALUE_ENUM.STATE_SELECTED);\n const items = this.interaction.getEventElementData(STATE_VALUE_ENUM.STATE_SELECTED);\n this.selectItems(items);\n }\n } else if (\n // 不做已选内容的判断,因为选中的元素可能由用户 API 控制\n // this._selectedItems.length > 0 &&\n !this.interaction.filterEventMark(params, STATE_VALUE_ENUM.STATE_SELECTED)\n ) {\n this.clearSelectedItems();\n }\n }\n\n // util\n protected filterEventMark(params: BaseEventParams): boolean {\n return !!(params.mark && this._marks.includes(params.mark));\n }\n\n protected isDatumEqual(datumA: any, datumB: any): boolean {\n const fields = this._fields ? this._fields : Object.keys(datumA);\n return fields.every(f => datumA[f] === datumB[f]);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/interaction/trigger.ts"],"names":[],"mappings":"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","file":"trigger.js","sourcesContent":["import { Event } from '../event/event';\nimport { getDefaultInteractionConfigByMode } from './config';\nimport { mergeSpec, isBoolean, isObject, array } from '../util';\n\nimport type { IMark } from '../mark/interface';\nimport type { BaseEventParams, EventCallback, EventParams, IEvent } from '../event/interface';\nimport type { IHoverSpec, IInteraction, ISelectSpec, ITrigger, ITriggerOption, ITriggerSpec } from './interface';\nimport type { RenderMode } from '../typings/spec';\nimport { MarkSet } from '../mark/mark-set';\nimport { STATE_VALUE_ENUM } from '../compile/mark';\nimport { Event_Bubble_Level, Event_Source_Type } from '../constant';\n\nexport class Trigger implements ITrigger {\n // 事件\n readonly event: IEvent;\n\n protected readonly interaction: IInteraction;\n\n protected _spec: ITriggerSpec;\n protected _option: ITriggerOption;\n\n protected _hover: IHoverSpec;\n get hover() {\n return this._hover;\n }\n protected _select: ISelectSpec;\n get select() {\n return this._select;\n }\n\n protected _fields: string[] | null = null;\n protected _marks: MarkSet = new MarkSet();\n protected _markReverse: MarkSet = new MarkSet();\n\n constructor(spec: ITriggerSpec, option: ITriggerOption) {\n this._spec = spec;\n this._option = option;\n this.event = new Event(option.eventDispatcher, option.mode);\n this.interaction = option.interaction;\n this.initConfig(option.mode);\n }\n\n setStateKeys(fields: string[]): void {\n this._fields = [...fields];\n }\n\n registerMark(mark: IMark): void {\n this._marks.addMark(mark);\n if (this._hover.enable) {\n this.interaction.registerMark(STATE_VALUE_ENUM.STATE_HOVER, mark);\n }\n if (this._select.enable) {\n this.interaction.registerMark(STATE_VALUE_ENUM.STATE_SELECTED, mark);\n }\n }\n\n init(): void {\n this.initEvent();\n }\n\n release(): void {\n this.releaseEvent();\n this._marks.clear();\n }\n\n // event\n protected initEvent() {\n const event = this.event;\n const { enable: hoverEnable, trigger: hoverTrigger, triggerOff: hoverTriggerOff } = this._hover;\n const { enable: selectEnable, trigger: selectTrigger, triggerOff: selectTriggerOff } = this._select;\n if (hoverEnable) {\n // 进行 hover 交互相关的事件绑定\n array(hoverTrigger).forEach(trigger => {\n event.on(trigger, { level: Event_Bubble_Level.chart }, this.onHover as EventCallback<EventParams>);\n });\n if (hoverTriggerOff && hoverTriggerOff !== 'none') {\n array(hoverTriggerOff).forEach(trigger => {\n event.on(\n trigger,\n { level: Event_Bubble_Level.vchart, source: Event_Source_Type.chart },\n this.onUnHover as EventCallback<EventParams>\n );\n });\n }\n }\n\n if (selectEnable) {\n // 进行 select 交互相关的事件绑定\n array(selectTrigger).forEach(trigger => {\n event.on(trigger, { level: Event_Bubble_Level.mark }, this.onSelect as EventCallback<EventParams>);\n });\n if (selectTriggerOff && selectTriggerOff !== 'none') {\n array(selectTriggerOff).forEach(trigger => {\n event.on(trigger, { level: Event_Bubble_Level.mark }, this.onUnSelect as EventCallback<EventParams>);\n });\n }\n // default triggerOff: active without mark , unselected\n if (!selectTriggerOff) {\n array(selectTriggerOff ?? selectTrigger).forEach(trigger => {\n event.on(trigger, { level: Event_Bubble_Level.vchart }, this.onUnSelect as EventCallback<EventParams>);\n });\n }\n }\n }\n\n protected releaseEvent(): void {\n this.event.release();\n }\n\n private initConfig(mode: RenderMode): void {\n const defaultConfig = getDefaultInteractionConfigByMode(mode);\n this._hover = { ...defaultConfig?.hover };\n this._select = { ...defaultConfig?.select };\n\n const hoverSpec = this._spec.hover;\n if (isBoolean(hoverSpec)) {\n this._hover.enable = hoverSpec;\n } else if (isObject(hoverSpec)) {\n this._hover.enable = true;\n this._hover = mergeSpec(this._hover, hoverSpec);\n }\n\n const selectSpec = this._spec.select;\n if (isBoolean(selectSpec)) {\n this._select.enable = selectSpec;\n } else if (isObject(selectSpec)) {\n this._select.enable = true;\n this._select = mergeSpec(this._select, selectSpec);\n }\n }\n\n private onHover = (params: BaseEventParams) => {\n if (this.filterEventMark(params)) {\n this.hoverItem(params);\n }\n };\n\n private onUnHover = (params: BaseEventParams) => {\n if (this.filterEventMark(params) || this.interaction.filterEventMark(params, STATE_VALUE_ENUM.STATE_HOVER)) {\n return;\n }\n if (this.interaction.getEventElement(STATE_VALUE_ENUM.STATE_HOVER)[0]) {\n this.unhoverItem();\n }\n };\n\n private onSelect = (params: BaseEventParams) => {\n this.handleSingleEventSelect(params);\n };\n\n private onUnSelect = (params: BaseEventParams) => {\n if (!this.interaction.filterEventMark(params, STATE_VALUE_ENUM.STATE_SELECTED)) {\n this.clearSelectedItems();\n }\n };\n\n // hover\n protected hoverItem(params: BaseEventParams): void {\n const { datum } = params;\n const lastEl = this.interaction.getEventElement(STATE_VALUE_ENUM.STATE_HOVER)[0];\n if (params.item === lastEl) {\n return;\n }\n this.interaction.exchangeEventElement(STATE_VALUE_ENUM.STATE_HOVER, params.item);\n this.interaction.reverseEventElement(STATE_VALUE_ENUM.STATE_HOVER);\n this.event.emit('hovered', {\n model: this._option.model,\n value: [datum]\n });\n }\n\n protected unhoverItem(): void {\n const lastHoveredDatums = this.interaction.getEventElementData(STATE_VALUE_ENUM.STATE_HOVER);\n this.interaction.clearEventElement(STATE_VALUE_ENUM.STATE_HOVER, true);\n\n this.event.emit('unhovered', {\n model: this._option.model,\n value: lastHoveredDatums\n });\n }\n\n protected handleSingleEventHover(params: BaseEventParams): void {\n if (this.filterEventMark(params)) {\n this.hoverItem(params);\n } else if (\n this.interaction.getEventElement(STATE_VALUE_ENUM.STATE_HOVER)[0] &&\n !this.interaction.filterEventMark(params, STATE_VALUE_ENUM.STATE_HOVER)\n ) {\n this.unhoverItem();\n }\n }\n\n // select\n protected selectItems(datums: any[]): void {\n this.event.emit('selected', {\n model: this._option.model,\n value: datums\n });\n }\n\n protected clearSelectedItems() {\n const lastSelectedItem = this.interaction.getEventElementData(STATE_VALUE_ENUM.STATE_SELECTED);\n this.interaction.clearEventElement(STATE_VALUE_ENUM.STATE_SELECTED, true);\n\n this.event.emit('unselected', {\n model: this._option.model,\n value: lastSelectedItem\n });\n }\n\n protected unselectItems(params: BaseEventParams): void {\n this.interaction.removeEventElement(STATE_VALUE_ENUM.STATE_SELECTED, params.item);\n this.event.emit('unselected', {\n model: this._option.model,\n value: params.item\n });\n }\n\n protected handleSingleEventSelect(params: BaseEventParams): void {\n if (this.filterEventMark(params)) {\n if (params.item.getStates().includes(STATE_VALUE_ENUM.STATE_SELECTED)) {\n this.unselectItems(params);\n } else {\n switch (this._select.mode) {\n case 'multiple':\n this.interaction.addEventElement(STATE_VALUE_ENUM.STATE_SELECTED, params.item);\n break;\n case 'single':\n default:\n this.interaction.exchangeEventElement(STATE_VALUE_ENUM.STATE_SELECTED, params.item);\n }\n this.interaction.reverseEventElement(STATE_VALUE_ENUM.STATE_SELECTED);\n const items = this.interaction.getEventElementData(STATE_VALUE_ENUM.STATE_SELECTED);\n this.selectItems(items);\n }\n } else if (\n // 不做已选内容的判断,因为选中的元素可能由用户 API 控制\n // this._selectedItems.length > 0 &&\n !this.interaction.filterEventMark(params, STATE_VALUE_ENUM.STATE_SELECTED)\n ) {\n this.clearSelectedItems();\n }\n }\n\n // util\n protected filterEventMark(params: BaseEventParams): boolean {\n return !!(params.mark && this._marks.includes(params.mark));\n }\n\n protected isDatumEqual(datumA: any, datumB: any): boolean {\n const fields = this._fields ? this._fields : Object.keys(datumA);\n return fields.every(f => datumA[f] === datumB[f]);\n }\n}\n"]}
@@ -2,7 +2,7 @@ import { debounce, isNil, throttle } from "@visactor/vutils";
2
2
 
3
3
  import { RenderModeEnum } from "../../typings/spec";
4
4
 
5
- import { defaultTriggerEvent } from "../../component/common/trigger/config";
5
+ import { getDefaultTriggerEventByMode } from "../../component/common/trigger/config";
6
6
 
7
7
  import { isPointInRect } from "../../util";
8
8
 
@@ -15,11 +15,11 @@ const delayMap = {
15
15
 
16
16
  export class Zoomable {
17
17
  initZoomable(evt, mode = RenderModeEnum["desktop-browser"]) {
18
- this._eventObj = evt, this._renderMode = mode, defaultTriggerEvent[this._renderMode] && (this._clickEnable = !0,
18
+ this._eventObj = evt, this._renderMode = mode, getDefaultTriggerEventByMode(this._renderMode) && (this._clickEnable = !0,
19
19
  this._zoomableTrigger = new (this._getTriggerEvent("trigger")));
20
20
  }
21
21
  _getTriggerEvent(type) {
22
- return defaultTriggerEvent[this._renderMode][type];
22
+ return getDefaultTriggerEventByMode(this._renderMode)[type];
23
23
  }
24
24
  _zoomEventDispatch(params, regionOrSeries, callback) {
25
25
  if (!params.event) return;
@@ -59,10 +59,10 @@ export class Zoomable {
59
59
  }), delayTime));
60
60
  }
61
61
  initZoomEventOfSeries(s, callback, option) {
62
- defaultTriggerEvent[this._renderMode] && this._bindZoomEventAsRegion(s.event, s, callback, option);
62
+ getDefaultTriggerEventByMode(this._renderMode) && this._bindZoomEventAsRegion(s.event, s, callback, option);
63
63
  }
64
64
  initZoomEventOfRegions(regions, filter, callback, option) {
65
- defaultTriggerEvent[this._renderMode] && regions.forEach((r => {
65
+ getDefaultTriggerEventByMode(this._renderMode) && regions.forEach((r => {
66
66
  filter ? r.getSeries().forEach((s => {
67
67
  filter(s) && this._bindZoomEventAsRegion(s.event, s, callback, option);
68
68
  })) : this._bindZoomEventAsRegion(this._eventObj, r, callback, option);
@@ -102,10 +102,10 @@ export class Zoomable {
102
102
  }), delayTime));
103
103
  }
104
104
  initScrollEventOfSeries(s, callback, option) {
105
- defaultTriggerEvent[this._renderMode] && this._bindScrollEventAsRegion(s.event, s, callback, option);
105
+ getDefaultTriggerEventByMode(this._renderMode) && this._bindScrollEventAsRegion(s.event, s, callback, option);
106
106
  }
107
107
  initScrollEventOfRegions(regions, filter, callback, option) {
108
- defaultTriggerEvent[this._renderMode] && regions.forEach((r => {
108
+ getDefaultTriggerEventByMode(this._renderMode) && regions.forEach((r => {
109
109
  filter ? r.getSeries().forEach((s => {
110
110
  filter(s) && this._bindScrollEventAsRegion(s.event, s, callback, option);
111
111
  })) : this._bindScrollEventAsRegion(this._eventObj, r, callback, option);
@@ -126,7 +126,7 @@ export class Zoomable {
126
126
  }, (() => !this._clickEnable));
127
127
  }
128
128
  initDragEventOfSeries(s, callback, option) {
129
- defaultTriggerEvent[this._renderMode] && s.event.on(this._getTriggerEvent("start"), {
129
+ getDefaultTriggerEventByMode(this._renderMode) && s.event.on(this._getTriggerEvent("start"), {
130
130
  level: Event_Bubble_Level.model,
131
131
  filter: ({model: model}) => (null == model ? void 0 : model.id) === s.id
132
132
  }, (params => {
@@ -134,7 +134,7 @@ export class Zoomable {
134
134
  }));
135
135
  }
136
136
  initDragEventOfRegions(regions, filter, callback, option) {
137
- defaultTriggerEvent[this._renderMode] && regions.forEach((r => {
137
+ getDefaultTriggerEventByMode(this._renderMode) && regions.forEach((r => {
138
138
  filter ? r.getSeries().forEach((s => {
139
139
  filter(s) && (s.event.on(this._getTriggerEvent("start"), {
140
140
  level: Event_Bubble_Level.model,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interaction/zoom/zoomable.ts"],"names":[],"mappings":"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","file":"zoomable.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport { debounce, isNil, throttle } from '@visactor/vutils';\nimport type { BaseEventParams, EventType, ExtendEventParam, IEvent } from '../../event/interface';\nimport type { IRegion } from '../../region/interface';\nimport type { RenderMode } from '../../typings/spec';\nimport { RenderModeEnum } from '../../typings/spec';\nimport { defaultTriggerEvent } from '../../component/common/trigger/config';\nimport type { IZoomTrigger } from '../../component/common/trigger/interface';\nimport { isPointInRect } from '../../util';\nimport type { ISeries } from '../../series/interface';\nimport { Event_Bubble_Level, Event_Source_Type } from '../../constant';\nimport type { IDelayType } from '../../typings/event';\n\nconst delayMap = {\n debounce: debounce,\n throttle: throttle\n};\n\nexport interface ITriggerOption {\n delayType: IDelayType;\n delayTime: number;\n realTime: boolean;\n}\nexport interface IZoomEventOptions {\n shouldZoom?: boolean;\n zoomCallback?: (params: { zoomDelta: number; zoomX: number; zoomY: number }, e: BaseEventParams['event']) => void;\n shouldScroll?: boolean;\n scrollCallback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void;\n}\nexport interface IZoomable {\n initZoomable: (evt: IEvent, mode?: RenderMode) => void;\n initZoomEventOfSeries: (\n s: ISeries,\n callback?: (params: { zoomDelta: number; zoomX: number; zoomY: number }, e: BaseEventParams['event']) => void\n ) => any;\n initZoomEventOfRegions: (\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (params: { zoomDelta: number; zoomX: number; zoomY: number }, e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) => void;\n\n initScrollEventOfSeries: (\n s: ISeries,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void\n ) => any;\n initScrollEventOfRegions: (\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) => void;\n\n initDragEventOfSeries: (\n s: ISeries,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) => any;\n\n initDragEventOfRegions: (\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) => void;\n}\n\nexport class Zoomable implements IZoomable {\n private _clickEnable: boolean;\n\n private _zoomableTrigger: IZoomTrigger;\n\n private _eventObj: IEvent;\n\n private _renderMode: RenderMode;\n\n initZoomable(evt: IEvent, mode: RenderMode = RenderModeEnum['desktop-browser']) {\n this._eventObj = evt;\n this._renderMode = mode;\n if (defaultTriggerEvent[this._renderMode]) {\n // hack 应该由事件系统做?或者事件系统有更好的方式处理这种交互冲突场景\n this._clickEnable = true;\n this._zoomableTrigger = new (this._getTriggerEvent('trigger') as any)();\n }\n }\n\n // event\n private _getTriggerEvent(type: string): EventType {\n return defaultTriggerEvent[this._renderMode][type];\n }\n\n private _zoomEventDispatch(\n params: BaseEventParams,\n regionOrSeries: IRegion | ISeries,\n callback?: (params: { zoomDelta: number; zoomX: number; zoomY: number }, e: BaseEventParams['event']) => void\n ) {\n if (!params.event) {\n return;\n }\n const event = params.event.clone();\n this._zoomableTrigger.parserZoomEvent(event);\n // FIXME: event类型目前不全\n const { zoomDelta, zoomX, zoomY } = event as any;\n if (isNil(zoomDelta)) {\n return;\n }\n if (\n !isPointInRect(\n {\n x: zoomX,\n y: zoomY\n },\n {\n ...regionOrSeries.getLayoutRect(),\n ...regionOrSeries.getLayoutStartPoint()\n }\n )\n ) {\n return;\n }\n this._clickEnable = false;\n\n if (callback) {\n // zoomDelta, zoomX, zoomY can be changed in the callback\n callback({ zoomDelta, zoomX, zoomY }, event);\n }\n this._eventObj.emit('zoom', {\n scale: event.zoomDelta,\n scaleCenter: { x: event.zoomX, y: event.zoomY },\n model: this\n } as unknown as ExtendEventParam);\n }\n\n private _bindZoomEventAsRegion(\n eventObj: IEvent,\n regionOrSeries: IRegion | ISeries,\n callback?: (params: { zoomDelta: number; zoomX: number; zoomY: number }, e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n const delayType = option?.delayType ?? 'throttle';\n const delayTime = option?.delayTime ?? 0;\n\n // pc端没有scrollEnd事件,所以漫游模式下scroll仅支持realTime\n eventObj.on(\n this._getTriggerEvent('scrollEnd'),\n { level: Event_Bubble_Level.chart, consume: false },\n delayMap[delayType]((params: BaseEventParams) => {\n this._zoomableTrigger.clearZoom();\n }, delayTime) as any\n );\n\n eventObj.on(\n this._getTriggerEvent('scroll'),\n { level: Event_Bubble_Level.chart, consume: true },\n delayMap[delayType]((params: BaseEventParams) => {\n // if (realTime) {\n this._zoomEventDispatch(params, regionOrSeries, callback);\n // }\n }, delayTime) as any\n );\n }\n\n initZoomEventOfSeries(\n s: ISeries,\n callback?: (params: { zoomDelta: number; zoomX: number; zoomY: number }, e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n if (defaultTriggerEvent[this._renderMode]) {\n this._bindZoomEventAsRegion(s.event, s, callback, option);\n }\n }\n\n initZoomEventOfRegions(\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (params: { zoomDelta: number; zoomX: number; zoomY: number }, e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n if (defaultTriggerEvent[this._renderMode]) {\n regions.forEach(r => {\n if (filter) {\n r.getSeries().forEach(s => {\n if (filter(s)) {\n this._bindZoomEventAsRegion(s.event, s, callback, option);\n }\n });\n } else {\n this._bindZoomEventAsRegion(this._eventObj, r, callback, option);\n }\n });\n }\n }\n\n private _scrollEventDispatch(\n params: BaseEventParams,\n regionOrSeries: IRegion | ISeries,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void\n ) {\n if (!params.event) {\n return;\n }\n const { event } = params;\n this._zoomableTrigger.parserScrollEvent(event);\n // FIXME: event类型目前不全\n const { scrollX, scrollY } = event as any;\n if (isNil(scrollX) && isNil(scrollY)) {\n return;\n }\n if (\n !isPointInRect(\n {\n x: event.canvasX,\n y: event.canvasY\n },\n {\n ...regionOrSeries.getLayoutRect(),\n ...regionOrSeries.getLayoutStartPoint()\n }\n )\n ) {\n return;\n }\n this._clickEnable = false;\n\n if (callback) {\n callback({ scrollX, scrollY }, event);\n }\n this._eventObj.emit('scroll', {\n scrollX,\n scrollY,\n model: this\n } as unknown as ExtendEventParam);\n }\n\n private _bindScrollEventAsRegion(\n eventObj: IEvent,\n regionOrSeries: IRegion | ISeries,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n const delayType = option?.delayType ?? 'throttle';\n const delayTime = option?.delayTime ?? 0;\n\n // pc端没有scrollEnd事件,所以漫游模式下scroll仅支持realTime\n eventObj.on(\n this._getTriggerEvent('scrollEnd'),\n { level: Event_Bubble_Level.chart, consume: false },\n delayMap[delayType]((params: any) => {\n this._zoomableTrigger.clearScroll();\n }, delayTime)\n );\n\n eventObj.on(\n this._getTriggerEvent('scroll'),\n { level: Event_Bubble_Level.chart, consume: true },\n delayMap[delayType]((params: any) => {\n // if (realTime) {\n this._scrollEventDispatch(params, regionOrSeries, callback);\n // }\n }, delayTime)\n );\n }\n\n initScrollEventOfSeries(\n s: ISeries,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n if (defaultTriggerEvent[this._renderMode]) {\n this._bindScrollEventAsRegion(s.event, s, callback, option);\n }\n }\n\n initScrollEventOfRegions(\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n if (defaultTriggerEvent[this._renderMode]) {\n regions.forEach(r => {\n if (filter) {\n r.getSeries().forEach(s => {\n if (filter(s)) {\n this._bindScrollEventAsRegion(s.event, s, callback, option);\n }\n });\n } else {\n this._bindScrollEventAsRegion(this._eventObj, r, callback, option);\n }\n });\n }\n }\n\n private _bindDragEventAsRegion(\n eventObj: IEvent,\n regionOrSeries: IRegion | ISeries,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n eventObj.on(this._getTriggerEvent('start'), { level: Event_Bubble_Level.chart }, (params: any) => {\n if (!params.event) {\n return;\n }\n\n const { event } = params;\n const shouldTrigger = isPointInRect(\n {\n x: event.canvasX,\n y: event.canvasY\n },\n {\n ...regionOrSeries.getLayoutRect(),\n ...regionOrSeries.getLayoutStartPoint()\n }\n );\n if (shouldTrigger) {\n this._handleDrag(params, callback, option);\n }\n });\n // click 事件需要在drag和zoom时被屏蔽\n // hack 应该由事件系统做?或者事件系统有更好的方式处理这种交互冲突场景\n eventObj.on('click', { level: Event_Bubble_Level.chart }, () => {\n return !this._clickEnable;\n });\n }\n\n initDragEventOfSeries(\n s: ISeries,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n if (defaultTriggerEvent[this._renderMode]) {\n s.event.on(\n this._getTriggerEvent('start'),\n { level: Event_Bubble_Level.model, filter: ({ model }) => model?.id === s.id },\n params => {\n this._handleDrag(params, callback, option);\n }\n );\n }\n }\n\n initDragEventOfRegions(\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n if (defaultTriggerEvent[this._renderMode]) {\n regions.forEach(r => {\n if (filter) {\n r.getSeries().forEach(s => {\n if (filter(s)) {\n s.event.on(\n this._getTriggerEvent('start'),\n { level: Event_Bubble_Level.model, filter: ({ model }) => model?.id === s.id },\n params => {\n this._handleDrag(params, callback);\n }\n );\n\n // click 事件需要在drag和zoom时被屏蔽\n // hack 应该由事件系统做?或者事件系统有更好的方式处理这种交互冲突场景\n s.event.on(\n 'click',\n { level: Event_Bubble_Level.model, filter: ({ model }) => model?.id === s.id },\n () => {\n return !this._clickEnable;\n }\n );\n }\n });\n } else {\n this._bindDragEventAsRegion(this._eventObj, r, callback, option);\n }\n });\n }\n }\n\n protected _handleDrag(\n params: ExtendEventParam,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n this._clickEnable = true;\n if (!this._zoomableTrigger.parserDragEvent(params.event)) {\n return;\n }\n const delayType = option?.delayType ?? 'throttle';\n const delayTime = option?.delayTime ?? 0;\n const realTime = option?.realTime ?? true;\n const move = this._getTriggerEvent('move');\n const end = this._getTriggerEvent('end');\n const event = params.event;\n let moveX = event.canvasX;\n let moveY = event.canvasY;\n let upX = event.canvasX;\n let upY = event.canvasY;\n\n const mouseup = delayMap[delayType]((params: BaseEventParams) => {\n this._clickEnable = false;\n const event = params.event as any;\n const dx = event.canvasX - upX;\n const dy = event.canvasY - upY;\n const delta: [number, number] = [dx, dy];\n\n upX = event.canvasX;\n upY = event.canvasY;\n\n if (!realTime && callback) {\n callback(delta, params.event);\n }\n\n this._eventObj.emit('panend', {\n delta,\n model: this\n } as unknown as BaseEventParams);\n this._zoomableTrigger.pointerId = null;\n this._eventObj.off(move, { level: Event_Bubble_Level.chart, source: Event_Source_Type.chart }, mousemove as any);\n this._eventObj.off(end, { level: Event_Bubble_Level.chart, source: Event_Source_Type.window }, mouseup as any);\n }, delayTime);\n const mousemove = delayMap[delayType]((params: BaseEventParams) => {\n if (!this._zoomableTrigger.parserDragEvent(params.event)) {\n return;\n }\n this._clickEnable = false;\n const event = params.event;\n const dx = event.canvasX - moveX;\n const dy = event.canvasY - moveY;\n const delta: [number, number] = [dx, dy];\n\n moveX = event.canvasX;\n moveY = event.canvasY;\n\n if (realTime && callback) {\n callback(delta, params.event);\n }\n this._eventObj.emit('panmove', {\n delta,\n model: this\n } as unknown as ExtendEventParam);\n }, delayTime);\n\n this._eventObj.on(move, { level: Event_Bubble_Level.chart, source: Event_Source_Type.chart }, mousemove as any);\n this._eventObj.on(end, { level: Event_Bubble_Level.chart, source: Event_Source_Type.chart }, mouseup as any);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/interaction/zoom/zoomable.ts"],"names":[],"mappings":"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","file":"zoomable.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport { debounce, isNil, throttle } from '@visactor/vutils';\nimport type { BaseEventParams, EventType, ExtendEventParam, IEvent } from '../../event/interface';\nimport type { IRegion } from '../../region/interface';\nimport type { RenderMode } from '../../typings/spec';\nimport { RenderModeEnum } from '../../typings/spec';\nimport { getDefaultTriggerEventByMode } from '../../component/common/trigger/config';\nimport type { IZoomTrigger } from '../../component/common/trigger/interface';\nimport { isPointInRect } from '../../util';\nimport type { ISeries } from '../../series/interface';\nimport { Event_Bubble_Level, Event_Source_Type } from '../../constant';\nimport type { IDelayType } from '../../typings/event';\n\nconst delayMap = {\n debounce: debounce,\n throttle: throttle\n};\n\nexport interface ITriggerOption {\n delayType: IDelayType;\n delayTime: number;\n realTime: boolean;\n}\nexport interface IZoomEventOptions {\n shouldZoom?: boolean;\n zoomCallback?: (params: { zoomDelta: number; zoomX: number; zoomY: number }, e: BaseEventParams['event']) => void;\n shouldScroll?: boolean;\n scrollCallback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void;\n}\nexport interface IZoomable {\n initZoomable: (evt: IEvent, mode?: RenderMode) => void;\n initZoomEventOfSeries: (\n s: ISeries,\n callback?: (params: { zoomDelta: number; zoomX: number; zoomY: number }, e: BaseEventParams['event']) => void\n ) => any;\n initZoomEventOfRegions: (\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (params: { zoomDelta: number; zoomX: number; zoomY: number }, e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) => void;\n\n initScrollEventOfSeries: (\n s: ISeries,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void\n ) => any;\n initScrollEventOfRegions: (\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) => void;\n\n initDragEventOfSeries: (\n s: ISeries,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) => any;\n\n initDragEventOfRegions: (\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) => void;\n}\n\nexport class Zoomable implements IZoomable {\n private _clickEnable: boolean;\n\n private _zoomableTrigger: IZoomTrigger;\n\n private _eventObj: IEvent;\n\n private _renderMode: RenderMode;\n\n initZoomable(evt: IEvent, mode: RenderMode = RenderModeEnum['desktop-browser']) {\n this._eventObj = evt;\n this._renderMode = mode;\n if (getDefaultTriggerEventByMode(this._renderMode)) {\n // hack 应该由事件系统做?或者事件系统有更好的方式处理这种交互冲突场景\n this._clickEnable = true;\n this._zoomableTrigger = new (this._getTriggerEvent('trigger') as any)();\n }\n }\n\n // event\n private _getTriggerEvent(type: string): EventType {\n return getDefaultTriggerEventByMode(this._renderMode)[type];\n }\n\n private _zoomEventDispatch(\n params: BaseEventParams,\n regionOrSeries: IRegion | ISeries,\n callback?: (params: { zoomDelta: number; zoomX: number; zoomY: number }, e: BaseEventParams['event']) => void\n ) {\n if (!params.event) {\n return;\n }\n const event = params.event.clone();\n this._zoomableTrigger.parserZoomEvent(event);\n // FIXME: event类型目前不全\n const { zoomDelta, zoomX, zoomY } = event as any;\n if (isNil(zoomDelta)) {\n return;\n }\n if (\n !isPointInRect(\n {\n x: zoomX,\n y: zoomY\n },\n {\n ...regionOrSeries.getLayoutRect(),\n ...regionOrSeries.getLayoutStartPoint()\n }\n )\n ) {\n return;\n }\n this._clickEnable = false;\n\n if (callback) {\n // zoomDelta, zoomX, zoomY can be changed in the callback\n callback({ zoomDelta, zoomX, zoomY }, event);\n }\n this._eventObj.emit('zoom', {\n scale: event.zoomDelta,\n scaleCenter: { x: event.zoomX, y: event.zoomY },\n model: this\n } as unknown as ExtendEventParam);\n }\n\n private _bindZoomEventAsRegion(\n eventObj: IEvent,\n regionOrSeries: IRegion | ISeries,\n callback?: (params: { zoomDelta: number; zoomX: number; zoomY: number }, e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n const delayType = option?.delayType ?? 'throttle';\n const delayTime = option?.delayTime ?? 0;\n\n // pc端没有scrollEnd事件,所以漫游模式下scroll仅支持realTime\n eventObj.on(\n this._getTriggerEvent('scrollEnd'),\n { level: Event_Bubble_Level.chart, consume: false },\n delayMap[delayType]((params: BaseEventParams) => {\n this._zoomableTrigger.clearZoom();\n }, delayTime) as any\n );\n\n eventObj.on(\n this._getTriggerEvent('scroll'),\n { level: Event_Bubble_Level.chart, consume: true },\n delayMap[delayType]((params: BaseEventParams) => {\n // if (realTime) {\n this._zoomEventDispatch(params, regionOrSeries, callback);\n // }\n }, delayTime) as any\n );\n }\n\n initZoomEventOfSeries(\n s: ISeries,\n callback?: (params: { zoomDelta: number; zoomX: number; zoomY: number }, e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n if (getDefaultTriggerEventByMode(this._renderMode)) {\n this._bindZoomEventAsRegion(s.event, s, callback, option);\n }\n }\n\n initZoomEventOfRegions(\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (params: { zoomDelta: number; zoomX: number; zoomY: number }, e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n if (getDefaultTriggerEventByMode(this._renderMode)) {\n regions.forEach(r => {\n if (filter) {\n r.getSeries().forEach(s => {\n if (filter(s)) {\n this._bindZoomEventAsRegion(s.event, s, callback, option);\n }\n });\n } else {\n this._bindZoomEventAsRegion(this._eventObj, r, callback, option);\n }\n });\n }\n }\n\n private _scrollEventDispatch(\n params: BaseEventParams,\n regionOrSeries: IRegion | ISeries,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void\n ) {\n if (!params.event) {\n return;\n }\n const { event } = params;\n this._zoomableTrigger.parserScrollEvent(event);\n // FIXME: event类型目前不全\n const { scrollX, scrollY } = event as any;\n if (isNil(scrollX) && isNil(scrollY)) {\n return;\n }\n if (\n !isPointInRect(\n {\n x: event.canvasX,\n y: event.canvasY\n },\n {\n ...regionOrSeries.getLayoutRect(),\n ...regionOrSeries.getLayoutStartPoint()\n }\n )\n ) {\n return;\n }\n this._clickEnable = false;\n\n if (callback) {\n callback({ scrollX, scrollY }, event);\n }\n this._eventObj.emit('scroll', {\n scrollX,\n scrollY,\n model: this\n } as unknown as ExtendEventParam);\n }\n\n private _bindScrollEventAsRegion(\n eventObj: IEvent,\n regionOrSeries: IRegion | ISeries,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n const delayType = option?.delayType ?? 'throttle';\n const delayTime = option?.delayTime ?? 0;\n\n // pc端没有scrollEnd事件,所以漫游模式下scroll仅支持realTime\n eventObj.on(\n this._getTriggerEvent('scrollEnd'),\n { level: Event_Bubble_Level.chart, consume: false },\n delayMap[delayType]((params: any) => {\n this._zoomableTrigger.clearScroll();\n }, delayTime)\n );\n\n eventObj.on(\n this._getTriggerEvent('scroll'),\n { level: Event_Bubble_Level.chart, consume: true },\n delayMap[delayType]((params: any) => {\n // if (realTime) {\n this._scrollEventDispatch(params, regionOrSeries, callback);\n // }\n }, delayTime)\n );\n }\n\n initScrollEventOfSeries(\n s: ISeries,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n if (getDefaultTriggerEventByMode(this._renderMode)) {\n this._bindScrollEventAsRegion(s.event, s, callback, option);\n }\n }\n\n initScrollEventOfRegions(\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n if (getDefaultTriggerEventByMode(this._renderMode)) {\n regions.forEach(r => {\n if (filter) {\n r.getSeries().forEach(s => {\n if (filter(s)) {\n this._bindScrollEventAsRegion(s.event, s, callback, option);\n }\n });\n } else {\n this._bindScrollEventAsRegion(this._eventObj, r, callback, option);\n }\n });\n }\n }\n\n private _bindDragEventAsRegion(\n eventObj: IEvent,\n regionOrSeries: IRegion | ISeries,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n eventObj.on(this._getTriggerEvent('start'), { level: Event_Bubble_Level.chart }, (params: any) => {\n if (!params.event) {\n return;\n }\n\n const { event } = params;\n const shouldTrigger = isPointInRect(\n {\n x: event.canvasX,\n y: event.canvasY\n },\n {\n ...regionOrSeries.getLayoutRect(),\n ...regionOrSeries.getLayoutStartPoint()\n }\n );\n if (shouldTrigger) {\n this._handleDrag(params, callback, option);\n }\n });\n // click 事件需要在drag和zoom时被屏蔽\n // hack 应该由事件系统做?或者事件系统有更好的方式处理这种交互冲突场景\n eventObj.on('click', { level: Event_Bubble_Level.chart }, () => {\n return !this._clickEnable;\n });\n }\n\n initDragEventOfSeries(\n s: ISeries,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n if (getDefaultTriggerEventByMode(this._renderMode)) {\n s.event.on(\n this._getTriggerEvent('start'),\n { level: Event_Bubble_Level.model, filter: ({ model }) => model?.id === s.id },\n params => {\n this._handleDrag(params, callback, option);\n }\n );\n }\n }\n\n initDragEventOfRegions(\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n if (getDefaultTriggerEventByMode(this._renderMode)) {\n regions.forEach(r => {\n if (filter) {\n r.getSeries().forEach(s => {\n if (filter(s)) {\n s.event.on(\n this._getTriggerEvent('start'),\n { level: Event_Bubble_Level.model, filter: ({ model }) => model?.id === s.id },\n params => {\n this._handleDrag(params, callback);\n }\n );\n\n // click 事件需要在drag和zoom时被屏蔽\n // hack 应该由事件系统做?或者事件系统有更好的方式处理这种交互冲突场景\n s.event.on(\n 'click',\n { level: Event_Bubble_Level.model, filter: ({ model }) => model?.id === s.id },\n () => {\n return !this._clickEnable;\n }\n );\n }\n });\n } else {\n this._bindDragEventAsRegion(this._eventObj, r, callback, option);\n }\n });\n }\n }\n\n protected _handleDrag(\n params: ExtendEventParam,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n this._clickEnable = true;\n if (!this._zoomableTrigger.parserDragEvent(params.event)) {\n return;\n }\n const delayType = option?.delayType ?? 'throttle';\n const delayTime = option?.delayTime ?? 0;\n const realTime = option?.realTime ?? true;\n const move = this._getTriggerEvent('move');\n const end = this._getTriggerEvent('end');\n const event = params.event;\n let moveX = event.canvasX;\n let moveY = event.canvasY;\n let upX = event.canvasX;\n let upY = event.canvasY;\n\n const mouseup = delayMap[delayType]((params: BaseEventParams) => {\n this._clickEnable = false;\n const event = params.event as any;\n const dx = event.canvasX - upX;\n const dy = event.canvasY - upY;\n const delta: [number, number] = [dx, dy];\n\n upX = event.canvasX;\n upY = event.canvasY;\n\n if (!realTime && callback) {\n callback(delta, params.event);\n }\n\n this._eventObj.emit('panend', {\n delta,\n model: this\n } as unknown as BaseEventParams);\n this._zoomableTrigger.pointerId = null;\n this._eventObj.off(move, { level: Event_Bubble_Level.chart, source: Event_Source_Type.chart }, mousemove as any);\n this._eventObj.off(end, { level: Event_Bubble_Level.chart, source: Event_Source_Type.window }, mouseup as any);\n }, delayTime);\n const mousemove = delayMap[delayType]((params: BaseEventParams) => {\n if (!this._zoomableTrigger.parserDragEvent(params.event)) {\n return;\n }\n this._clickEnable = false;\n const event = params.event;\n const dx = event.canvasX - moveX;\n const dy = event.canvasY - moveY;\n const delta: [number, number] = [dx, dy];\n\n moveX = event.canvasX;\n moveY = event.canvasY;\n\n if (realTime && callback) {\n callback(delta, params.event);\n }\n this._eventObj.emit('panmove', {\n delta,\n model: this\n } as unknown as ExtendEventParam);\n }, delayTime);\n\n this._eventObj.on(move, { level: Event_Bubble_Level.chart, source: Event_Source_Type.chart }, mousemove as any);\n this._eventObj.on(end, { level: Event_Bubble_Level.chart, source: Event_Source_Type.chart }, mouseup as any);\n }\n}\n"]}
@@ -153,4 +153,4 @@ export class Layout {
153
153
  }
154
154
 
155
155
  Layout.type = "base";
156
- //# sourceMappingURL=base-layout.js.map
156
+ //# sourceMappingURL=base-layout.js.map
@@ -5,4 +5,4 @@ import { GridLayout, registerGridLayout } from "./grid-layout/grid-layout";
5
5
  import { Layout3d, registerLayout3d } from "./layout3d";
6
6
 
7
7
  export { Layout, GridLayout, Layout3d, registerGridLayout, registerLayout3d };
8
- //# sourceMappingURL=index.js.map
8
+ //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
1
  export { };
2
- //# sourceMappingURL=interface.js.map
2
+ //# sourceMappingURL=interface.js.map
@@ -9,4 +9,4 @@ export class Arc3dMark extends BaseArcMark {
9
9
  }
10
10
 
11
11
  Arc3dMark.type = MarkTypeEnum.arc3d;
12
- //# sourceMappingURL=arc-3d.js.map
12
+ //# sourceMappingURL=arc-3d.js.map
package/esm/mark/arc.js CHANGED
@@ -40,4 +40,4 @@ export class ArcMark extends BaseArcMark {
40
40
  }
41
41
 
42
42
  ArcMark.type = MarkTypeEnum.arc;
43
- //# sourceMappingURL=arc.js.map
43
+ //# sourceMappingURL=arc.js.map
package/esm/mark/area.js CHANGED
@@ -17,4 +17,4 @@ export class AreaMark extends BaseLineMark {
17
17
  }
18
18
 
19
19
  AreaMark.type = MarkTypeEnum.area;
20
- //# sourceMappingURL=area.js.map
20
+ //# sourceMappingURL=area.js.map
@@ -160,14 +160,13 @@ export class BaseMark extends CompilableMark {
160
160
  }));
161
161
  }
162
162
  _computeGradientAttr(gradientStyle, data, opt) {
163
- var _a, _b;
164
163
  const {gradient: gradient, scale: scale, field: field} = gradientStyle, rest = __rest(gradientStyle, [ "gradient", "scale", "field" ]), markData = this.getDataView();
165
164
  let colorScale = scale, colorField = field;
166
165
  if (!(scale && field || "series" !== this.model.modelType)) {
167
166
  const {scale: globalColorScale, field: globalField} = this.model.getColorAttribute();
168
167
  scale || (colorScale = globalColorScale), colorField || (colorField = globalField);
169
168
  }
170
- const themeColor = computeActualDataScheme(getDataScheme(null === (_b = null === (_a = this.model.getOption()) || void 0 === _a ? void 0 : _a.getTheme()) || void 0 === _b ? void 0 : _b.colorScheme, "series" === this.model.modelType ? this.model.type : void 0), this.model.getDefaultColorDomain()), computeStyle = {}, mergedStyle = Object.assign(Object.assign({}, DEFAULT_GRADIENT_CONFIG[gradient]), rest);
169
+ const themeColor = computeActualDataScheme(getDataScheme(this.model.getColorScheme(), "series" === this.model.modelType ? this.model.type : void 0), this.model.getDefaultColorDomain()), computeStyle = {}, mergedStyle = Object.assign(Object.assign({}, DEFAULT_GRADIENT_CONFIG[gradient]), rest);
171
170
  return Object.keys(mergedStyle).forEach((key => {
172
171
  const value = mergedStyle[key];
173
172
  "stops" === key ? computeStyle.stops = value.map((stop => {
@@ -182,13 +181,13 @@ export class BaseMark extends CompilableMark {
182
181
  })), computeStyle.gradient = gradient, computeStyle;
183
182
  }
184
183
  _computeBorderAttr(borderStyle, data, opt) {
185
- var _a, _b, _c;
184
+ var _a;
186
185
  const {scale: scale, field: field} = borderStyle, mergedStyle = __rest(borderStyle, [ "scale", "field" ]), computeStyle = {};
187
186
  if (Object.keys(mergedStyle).forEach((key => {
188
187
  const value = mergedStyle[key];
189
188
  isFunction(value) ? computeStyle[key] = value(data, this._attributeContext, opt, this.getDataView()) : computeStyle[key] = value;
190
- })), "stroke" in computeStyle) GradientType.includes(null === (_c = mergedStyle.stroke) || void 0 === _c ? void 0 : _c.gradient) && (computeStyle.stroke = this._computeGradientAttr(mergedStyle.stroke, data, opt)); else {
191
- const themeColor = computeActualDataScheme(getDataScheme(null === (_b = null === (_a = this.model.getOption()) || void 0 === _a ? void 0 : _a.getTheme()) || void 0 === _b ? void 0 : _b.colorScheme, "series" === this.model.modelType ? this.model.type : void 0), this.model.getDefaultColorDomain());
189
+ })), "stroke" in computeStyle) GradientType.includes(null === (_a = mergedStyle.stroke) || void 0 === _a ? void 0 : _a.gradient) && (computeStyle.stroke = this._computeGradientAttr(mergedStyle.stroke, data, opt)); else {
190
+ const themeColor = computeActualDataScheme(getDataScheme(this.model.getColorScheme(), "series" === this.model.modelType ? this.model.type : void 0), this.model.getDefaultColorDomain());
192
191
  let colorScale = scale, colorField = field;
193
192
  if (!(scale && field || "series" !== this.model.modelType)) {
194
193
  const {scale: globalColorScale, field: globalField} = this.model.getColorAttribute();