@visactor/vchart 1.3.1 → 1.4.0-alpha.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 (420) hide show
  1. package/build/es5/index.js +2 -4
  2. package/build/index.js +24610 -22089
  3. package/build/index.min.js +2 -2
  4. package/build/tsconfig.tsbuildinfo +1 -1
  5. package/cjs/chart/base-chart.d.ts +5 -0
  6. package/cjs/chart/base-chart.js +43 -24
  7. package/cjs/chart/base-chart.js.map +1 -1
  8. package/cjs/chart/common/common.d.ts +2 -0
  9. package/cjs/chart/common/common.js +15 -1
  10. package/cjs/chart/common/common.js.map +1 -1
  11. package/cjs/chart/interface/chart.d.ts +5 -0
  12. package/cjs/chart/interface/chart.js.map +1 -1
  13. package/cjs/chart/rose/rose.js.map +1 -1
  14. package/cjs/chart/sequence/sequence.d.ts +1 -0
  15. package/cjs/chart/sequence/sequence.js +120 -76
  16. package/cjs/chart/sequence/sequence.js.map +1 -1
  17. package/cjs/compile/compiler.d.ts +2 -2
  18. package/cjs/compile/compiler.js +32 -13
  19. package/cjs/compile/compiler.js.map +1 -1
  20. package/cjs/compile/data/compilable-data.d.ts +1 -1
  21. package/cjs/compile/data/compilable-data.js +1 -1
  22. package/cjs/compile/data/compilable-data.js.map +1 -1
  23. package/cjs/compile/mark/compilable-mark.d.ts +9 -4
  24. package/cjs/compile/mark/compilable-mark.js +20 -6
  25. package/cjs/compile/mark/compilable-mark.js.map +1 -1
  26. package/cjs/compile/mark/interface.d.ts +4 -2
  27. package/cjs/compile/mark/interface.js.map +1 -1
  28. package/cjs/compile/signal/state-manager.d.ts +1 -1
  29. package/cjs/compile/signal/state-manager.js +1 -1
  30. package/cjs/compile/signal/state-manager.js.map +1 -1
  31. package/cjs/component/axis/base-axis.d.ts +14 -13
  32. package/cjs/component/axis/base-axis.js +46 -37
  33. package/cjs/component/axis/base-axis.js.map +1 -1
  34. package/cjs/component/axis/cartesian/axis.js +64 -32
  35. package/cjs/component/axis/cartesian/axis.js.map +1 -1
  36. package/cjs/component/axis/cartesian/interface/spec.js.map +1 -1
  37. package/cjs/component/axis/cartesian/time-axis.js.map +1 -1
  38. package/cjs/component/axis/interface.d.ts +1 -0
  39. package/cjs/component/axis/interface.js.map +1 -1
  40. package/cjs/component/axis/mixin/linear-axis-mixin.js +1 -1
  41. package/cjs/component/axis/mixin/linear-axis-mixin.js.map +1 -1
  42. package/cjs/component/axis/polar/axis.d.ts +2 -1
  43. package/cjs/component/axis/polar/axis.js +69 -51
  44. package/cjs/component/axis/polar/axis.js.map +1 -1
  45. package/cjs/component/base/base-component.js +2 -2
  46. package/cjs/component/base/base-component.js.map +1 -1
  47. package/cjs/component/crosshair/base.d.ts +1 -1
  48. package/cjs/component/crosshair/base.js +4 -2
  49. package/cjs/component/crosshair/base.js.map +1 -1
  50. package/cjs/component/crosshair/cartesian.d.ts +1 -1
  51. package/cjs/component/crosshair/cartesian.js +2 -2
  52. package/cjs/component/crosshair/cartesian.js.map +1 -1
  53. package/cjs/component/crosshair/interface/spec.d.ts +1 -0
  54. package/cjs/component/crosshair/interface/spec.js.map +1 -1
  55. package/cjs/component/crosshair/polar.d.ts +1 -1
  56. package/cjs/component/crosshair/polar.js +2 -2
  57. package/cjs/component/crosshair/polar.js.map +1 -1
  58. package/cjs/component/label/label.d.ts +12 -6
  59. package/cjs/component/label/label.js +73 -58
  60. package/cjs/component/label/label.js.map +1 -1
  61. package/cjs/component/label/totalLabel.js +4 -3
  62. package/cjs/component/label/totalLabel.js.map +1 -1
  63. package/cjs/component/label/util.d.ts +44 -6
  64. package/cjs/component/label/util.js +123 -7
  65. package/cjs/component/label/util.js.map +1 -1
  66. package/cjs/component/legend/base-legend.d.ts +1 -1
  67. package/cjs/component/legend/util.d.ts +1 -1
  68. package/cjs/component/tooltip/handler/base.d.ts +2 -2
  69. package/cjs/component/tooltip/handler/base.js +15 -14
  70. package/cjs/component/tooltip/handler/base.js.map +1 -1
  71. package/cjs/component/tooltip/handler/dom/dom-tooltip-handler.js.map +1 -1
  72. package/cjs/component/tooltip/handler/dom/model/interface.d.ts +3 -3
  73. package/cjs/component/tooltip/handler/dom/model/interface.js.map +1 -1
  74. package/cjs/component/tooltip/handler/dom/util.d.ts +1 -1
  75. package/cjs/component/tooltip/handler/dom/util.js.map +1 -1
  76. package/cjs/component/tooltip/handler/utils/attribute.d.ts +1 -1
  77. package/cjs/component/tooltip/handler/utils/attribute.js.map +1 -1
  78. package/cjs/component/tooltip/tooltip.d.ts +1 -1
  79. package/cjs/component/tooltip/tooltip.js +11 -12
  80. package/cjs/component/tooltip/tooltip.js.map +1 -1
  81. package/cjs/constant/event.d.ts +2 -1
  82. package/cjs/constant/event.js +1 -1
  83. package/cjs/constant/event.js.map +1 -1
  84. package/cjs/constant/index.d.ts +1 -1
  85. package/cjs/constant/index.js +1 -1
  86. package/cjs/constant/index.js.map +1 -1
  87. package/cjs/core/index.d.ts +1 -1
  88. package/cjs/core/index.js +1 -1
  89. package/cjs/core/index.js.map +1 -1
  90. package/cjs/core/interface.d.ts +8 -0
  91. package/cjs/core/interface.js.map +1 -1
  92. package/cjs/core/vchart.d.ts +12 -2
  93. package/cjs/core/vchart.js +51 -17
  94. package/cjs/core/vchart.js.map +1 -1
  95. package/cjs/data/transforms/dimension-data.js +6 -4
  96. package/cjs/data/transforms/dimension-data.js.map +1 -1
  97. package/cjs/data/transforms/dimension-statistics.d.ts +0 -29
  98. package/cjs/data/transforms/dimension-statistics.js +31 -73
  99. package/cjs/data/transforms/dimension-statistics.js.map +1 -1
  100. package/cjs/data/transforms/waterfall.js +4 -3
  101. package/cjs/data/transforms/waterfall.js.map +1 -1
  102. package/cjs/event/event-dispatcher.d.ts +2 -0
  103. package/cjs/event/event-dispatcher.js +13 -2
  104. package/cjs/event/event-dispatcher.js.map +1 -1
  105. package/cjs/event/events/dimension/dimension-hover.js +1 -1
  106. package/cjs/event/events/dimension/dimension-hover.js.map +1 -1
  107. package/cjs/mark/base/base-mark.js +4 -4
  108. package/cjs/mark/base/base-mark.js.map +1 -1
  109. package/cjs/mark/interface/type.d.ts +2 -1
  110. package/cjs/mark/interface/type.js +1 -1
  111. package/cjs/mark/interface/type.js.map +1 -1
  112. package/cjs/mark/label.d.ts +26 -0
  113. package/cjs/mark/label.js +34 -0
  114. package/cjs/mark/label.js.map +1 -0
  115. package/cjs/model/base-model.d.ts +1 -1
  116. package/cjs/model/interface.d.ts +1 -1
  117. package/cjs/model/interface.js.map +1 -1
  118. package/cjs/plugin/components/axis-sync-plugin/tick-align-transform.js +3 -4
  119. package/cjs/plugin/components/axis-sync-plugin/tick-align-transform.js.map +1 -1
  120. package/cjs/series/area/area.js +1 -1
  121. package/cjs/series/area/area.js.map +1 -1
  122. package/cjs/series/base/base-series.d.ts +5 -6
  123. package/cjs/series/base/base-series.js +16 -10
  124. package/cjs/series/base/base-series.js.map +1 -1
  125. package/cjs/series/base/group.d.ts +2 -1
  126. package/cjs/series/base/group.js.map +1 -1
  127. package/cjs/series/funnel/funnel-3d.d.ts +2 -0
  128. package/cjs/series/funnel/funnel-3d.js +15 -21
  129. package/cjs/series/funnel/funnel-3d.js.map +1 -1
  130. package/cjs/series/funnel/funnel.d.ts +4 -2
  131. package/cjs/series/funnel/funnel.js +55 -53
  132. package/cjs/series/funnel/funnel.js.map +1 -1
  133. package/cjs/series/gauge/gauge.js +2 -2
  134. package/cjs/series/gauge/gauge.js.map +1 -1
  135. package/cjs/series/interface/series.d.ts +4 -5
  136. package/cjs/series/interface/series.js.map +1 -1
  137. package/cjs/series/line/line.js +1 -1
  138. package/cjs/series/line/line.js.map +1 -1
  139. package/cjs/series/pie/pie-3d.js +2 -2
  140. package/cjs/series/pie/pie-3d.js.map +1 -1
  141. package/cjs/series/pie/pie.js +3 -3
  142. package/cjs/series/pie/pie.js.map +1 -1
  143. package/cjs/series/polar/progress-like/progress-like.js +5 -6
  144. package/cjs/series/polar/progress-like/progress-like.js.map +1 -1
  145. package/cjs/series/radar/radar.js +4 -4
  146. package/cjs/series/radar/radar.js.map +1 -1
  147. package/cjs/series/sunburst/sunburst.d.ts +1 -1
  148. package/cjs/series/waterfall/waterfall.d.ts +6 -2
  149. package/cjs/series/waterfall/waterfall.js +47 -46
  150. package/cjs/series/waterfall/waterfall.js.map +1 -1
  151. package/cjs/theme/builtin/common/series/waterfall.js +1 -0
  152. package/cjs/theme/builtin/common/series/waterfall.js.map +1 -1
  153. package/cjs/theme/theme-manager.d.ts +1 -1
  154. package/cjs/theme/theme-manager.js +2 -2
  155. package/cjs/theme/theme-manager.js.map +1 -1
  156. package/cjs/typings/group.d.ts +8 -0
  157. package/cjs/{data/transforms/tick-data/interface.js → typings/group.js} +1 -1
  158. package/cjs/typings/group.js.map +1 -0
  159. package/cjs/typings/index.d.ts +1 -0
  160. package/cjs/typings/index.js +1 -1
  161. package/cjs/typings/index.js.map +1 -1
  162. package/cjs/typings/visual.d.ts +3 -3
  163. package/cjs/typings/visual.js.map +1 -1
  164. package/cjs/util/data.js.map +1 -1
  165. package/cjs/util/env.js +1 -1
  166. package/cjs/util/env.js.map +1 -1
  167. package/cjs/util/math.d.ts +5 -19
  168. package/cjs/util/math.js +22 -120
  169. package/cjs/util/math.js.map +1 -1
  170. package/cjs/util/spec/common.d.ts +2 -0
  171. package/cjs/util/spec/common.js +8 -3
  172. package/cjs/util/spec/common.js.map +1 -1
  173. package/cjs/util/spec/merge-spec.d.ts +4 -0
  174. package/cjs/util/spec/merge-spec.js +12 -2
  175. package/cjs/util/spec/merge-spec.js.map +1 -1
  176. package/cjs/util/style.js +1 -1
  177. package/cjs/util/style.js.map +1 -1
  178. package/cjs/util/text.d.ts +4 -3
  179. package/cjs/util/text.js +5 -8
  180. package/cjs/util/text.js.map +1 -1
  181. package/cjs/vchart-all.js +1 -1
  182. package/cjs/vchart-all.js.map +1 -1
  183. package/esm/chart/base-chart.d.ts +5 -0
  184. package/esm/chart/base-chart.js +44 -24
  185. package/esm/chart/base-chart.js.map +1 -1
  186. package/esm/chart/common/common.d.ts +2 -0
  187. package/esm/chart/common/common.js +16 -0
  188. package/esm/chart/common/common.js.map +1 -1
  189. package/esm/chart/interface/chart.d.ts +5 -0
  190. package/esm/chart/interface/chart.js.map +1 -1
  191. package/esm/chart/rose/rose.js.map +1 -1
  192. package/esm/chart/sequence/sequence.d.ts +1 -0
  193. package/esm/chart/sequence/sequence.js +125 -75
  194. package/esm/chart/sequence/sequence.js.map +1 -1
  195. package/esm/compile/compiler.d.ts +2 -2
  196. package/esm/compile/compiler.js +31 -14
  197. package/esm/compile/compiler.js.map +1 -1
  198. package/esm/compile/data/compilable-data.d.ts +1 -1
  199. package/esm/compile/data/compilable-data.js +1 -1
  200. package/esm/compile/data/compilable-data.js.map +1 -1
  201. package/esm/compile/mark/compilable-mark.d.ts +9 -4
  202. package/esm/compile/mark/compilable-mark.js +20 -6
  203. package/esm/compile/mark/compilable-mark.js.map +1 -1
  204. package/esm/compile/mark/interface.d.ts +4 -2
  205. package/esm/compile/mark/interface.js.map +1 -1
  206. package/esm/compile/signal/state-manager.d.ts +1 -1
  207. package/esm/compile/signal/state-manager.js +1 -1
  208. package/esm/compile/signal/state-manager.js.map +1 -1
  209. package/esm/component/axis/base-axis.d.ts +14 -13
  210. package/esm/component/axis/base-axis.js +43 -34
  211. package/esm/component/axis/base-axis.js.map +1 -1
  212. package/esm/component/axis/cartesian/axis.js +62 -28
  213. package/esm/component/axis/cartesian/axis.js.map +1 -1
  214. package/esm/component/axis/cartesian/interface/spec.js.map +1 -1
  215. package/esm/component/axis/cartesian/time-axis.js.map +1 -1
  216. package/esm/component/axis/interface.d.ts +1 -0
  217. package/esm/component/axis/interface.js.map +1 -1
  218. package/esm/component/axis/mixin/linear-axis-mixin.js +1 -1
  219. package/esm/component/axis/mixin/linear-axis-mixin.js.map +1 -1
  220. package/esm/component/axis/polar/axis.d.ts +2 -1
  221. package/esm/component/axis/polar/axis.js +70 -53
  222. package/esm/component/axis/polar/axis.js.map +1 -1
  223. package/esm/component/base/base-component.js +2 -2
  224. package/esm/component/base/base-component.js.map +1 -1
  225. package/esm/component/crosshair/base.d.ts +1 -1
  226. package/esm/component/crosshair/base.js +4 -2
  227. package/esm/component/crosshair/base.js.map +1 -1
  228. package/esm/component/crosshair/cartesian.d.ts +1 -1
  229. package/esm/component/crosshair/cartesian.js +2 -2
  230. package/esm/component/crosshair/cartesian.js.map +1 -1
  231. package/esm/component/crosshair/interface/spec.d.ts +1 -0
  232. package/esm/component/crosshair/interface/spec.js.map +1 -1
  233. package/esm/component/crosshair/polar.d.ts +1 -1
  234. package/esm/component/crosshair/polar.js +2 -2
  235. package/esm/component/crosshair/polar.js.map +1 -1
  236. package/esm/component/label/label.d.ts +12 -6
  237. package/esm/component/label/label.js +77 -58
  238. package/esm/component/label/label.js.map +1 -1
  239. package/esm/component/label/totalLabel.js +4 -3
  240. package/esm/component/label/totalLabel.js.map +1 -1
  241. package/esm/component/label/util.d.ts +44 -6
  242. package/esm/component/label/util.js +121 -5
  243. package/esm/component/label/util.js.map +1 -1
  244. package/esm/component/legend/base-legend.d.ts +1 -1
  245. package/esm/component/legend/util.d.ts +1 -1
  246. package/esm/component/tooltip/handler/base.d.ts +2 -2
  247. package/esm/component/tooltip/handler/base.js +15 -14
  248. package/esm/component/tooltip/handler/base.js.map +1 -1
  249. package/esm/component/tooltip/handler/dom/dom-tooltip-handler.js.map +1 -1
  250. package/esm/component/tooltip/handler/dom/model/interface.d.ts +3 -3
  251. package/esm/component/tooltip/handler/dom/model/interface.js.map +1 -1
  252. package/esm/component/tooltip/handler/dom/util.d.ts +1 -1
  253. package/esm/component/tooltip/handler/dom/util.js.map +1 -1
  254. package/esm/component/tooltip/handler/utils/attribute.d.ts +1 -1
  255. package/esm/component/tooltip/handler/utils/attribute.js.map +1 -1
  256. package/esm/component/tooltip/tooltip.d.ts +1 -1
  257. package/esm/component/tooltip/tooltip.js +11 -12
  258. package/esm/component/tooltip/tooltip.js.map +1 -1
  259. package/esm/constant/event.d.ts +2 -1
  260. package/esm/constant/event.js +1 -1
  261. package/esm/constant/event.js.map +1 -1
  262. package/esm/constant/index.d.ts +1 -1
  263. package/esm/constant/index.js +1 -1
  264. package/esm/constant/index.js.map +1 -1
  265. package/esm/core/index.d.ts +1 -1
  266. package/esm/core/index.js +1 -1
  267. package/esm/core/index.js.map +1 -1
  268. package/esm/core/interface.d.ts +8 -0
  269. package/esm/core/interface.js.map +1 -1
  270. package/esm/core/vchart.d.ts +12 -2
  271. package/esm/core/vchart.js +49 -18
  272. package/esm/core/vchart.js.map +1 -1
  273. package/esm/data/transforms/dimension-data.js +6 -4
  274. package/esm/data/transforms/dimension-data.js.map +1 -1
  275. package/esm/data/transforms/dimension-statistics.d.ts +0 -29
  276. package/esm/data/transforms/dimension-statistics.js +28 -69
  277. package/esm/data/transforms/dimension-statistics.js.map +1 -1
  278. package/esm/data/transforms/waterfall.js +4 -4
  279. package/esm/data/transforms/waterfall.js.map +1 -1
  280. package/esm/event/event-dispatcher.d.ts +2 -0
  281. package/esm/event/event-dispatcher.js +13 -2
  282. package/esm/event/event-dispatcher.js.map +1 -1
  283. package/esm/event/events/dimension/dimension-hover.js +1 -1
  284. package/esm/event/events/dimension/dimension-hover.js.map +1 -1
  285. package/esm/mark/base/base-mark.js +5 -5
  286. package/esm/mark/base/base-mark.js.map +1 -1
  287. package/esm/mark/interface/type.d.ts +2 -1
  288. package/esm/mark/interface/type.js +1 -1
  289. package/esm/mark/interface/type.js.map +1 -1
  290. package/esm/mark/label.d.ts +26 -0
  291. package/esm/mark/label.js +30 -0
  292. package/esm/mark/label.js.map +1 -0
  293. package/esm/model/base-model.d.ts +1 -1
  294. package/esm/model/interface.d.ts +1 -1
  295. package/esm/model/interface.js.map +1 -1
  296. package/esm/plugin/components/axis-sync-plugin/tick-align-transform.js +3 -4
  297. package/esm/plugin/components/axis-sync-plugin/tick-align-transform.js.map +1 -1
  298. package/esm/series/area/area.js +1 -1
  299. package/esm/series/area/area.js.map +1 -1
  300. package/esm/series/base/base-series.d.ts +5 -6
  301. package/esm/series/base/base-series.js +16 -11
  302. package/esm/series/base/base-series.js.map +1 -1
  303. package/esm/series/base/group.d.ts +2 -1
  304. package/esm/series/base/group.js.map +1 -1
  305. package/esm/series/funnel/funnel-3d.d.ts +2 -0
  306. package/esm/series/funnel/funnel-3d.js +15 -21
  307. package/esm/series/funnel/funnel-3d.js.map +1 -1
  308. package/esm/series/funnel/funnel.d.ts +4 -2
  309. package/esm/series/funnel/funnel.js +56 -53
  310. package/esm/series/funnel/funnel.js.map +1 -1
  311. package/esm/series/gauge/gauge.js +4 -2
  312. package/esm/series/gauge/gauge.js.map +1 -1
  313. package/esm/series/interface/series.d.ts +4 -5
  314. package/esm/series/interface/series.js.map +1 -1
  315. package/esm/series/line/line.js +1 -1
  316. package/esm/series/line/line.js.map +1 -1
  317. package/esm/series/pie/pie-3d.js +4 -2
  318. package/esm/series/pie/pie-3d.js.map +1 -1
  319. package/esm/series/pie/pie.js +4 -4
  320. package/esm/series/pie/pie.js.map +1 -1
  321. package/esm/series/polar/progress-like/progress-like.js +7 -6
  322. package/esm/series/polar/progress-like/progress-like.js.map +1 -1
  323. package/esm/series/radar/radar.js +6 -6
  324. package/esm/series/radar/radar.js.map +1 -1
  325. package/esm/series/sunburst/sunburst.d.ts +1 -1
  326. package/esm/series/waterfall/waterfall.d.ts +6 -2
  327. package/esm/series/waterfall/waterfall.js +49 -45
  328. package/esm/series/waterfall/waterfall.js.map +1 -1
  329. package/esm/theme/builtin/common/series/waterfall.js +1 -0
  330. package/esm/theme/builtin/common/series/waterfall.js.map +1 -1
  331. package/esm/theme/theme-manager.d.ts +1 -1
  332. package/esm/theme/theme-manager.js +3 -1
  333. package/esm/theme/theme-manager.js.map +1 -1
  334. package/esm/typings/group.d.ts +8 -0
  335. package/esm/typings/group.js +2 -0
  336. package/esm/typings/group.js.map +1 -0
  337. package/esm/typings/index.d.ts +1 -0
  338. package/esm/typings/index.js +2 -0
  339. package/esm/typings/index.js.map +1 -1
  340. package/esm/typings/visual.d.ts +3 -3
  341. package/esm/typings/visual.js.map +1 -1
  342. package/esm/util/data.js.map +1 -1
  343. package/esm/util/env.js +1 -1
  344. package/esm/util/env.js.map +1 -1
  345. package/esm/util/math.d.ts +5 -19
  346. package/esm/util/math.js +5 -107
  347. package/esm/util/math.js.map +1 -1
  348. package/esm/util/spec/common.d.ts +2 -0
  349. package/esm/util/spec/common.js +8 -0
  350. package/esm/util/spec/common.js.map +1 -1
  351. package/esm/util/spec/merge-spec.d.ts +4 -0
  352. package/esm/util/spec/merge-spec.js +10 -1
  353. package/esm/util/spec/merge-spec.js.map +1 -1
  354. package/esm/util/style.js +1 -1
  355. package/esm/util/style.js.map +1 -1
  356. package/esm/util/text.d.ts +4 -3
  357. package/esm/util/text.js +6 -12
  358. package/esm/util/text.js.map +1 -1
  359. package/esm/vchart-all.js +1 -1
  360. package/esm/vchart-all.js.map +1 -1
  361. package/package.json +16 -15
  362. package/cjs/component/label/bar.d.ts +0 -9
  363. package/cjs/component/label/bar.js +0 -47
  364. package/cjs/component/label/bar.js.map +0 -1
  365. package/cjs/component/label/pie.d.ts +0 -5
  366. package/cjs/component/label/pie.js +0 -21
  367. package/cjs/component/label/pie.js.map +0 -1
  368. package/cjs/component/label/symbol.d.ts +0 -9
  369. package/cjs/component/label/symbol.js +0 -26
  370. package/cjs/component/label/symbol.js.map +0 -1
  371. package/cjs/data/transforms/tick-data/config.d.ts +0 -1
  372. package/cjs/data/transforms/tick-data/config.js +0 -6
  373. package/cjs/data/transforms/tick-data/config.js.map +0 -1
  374. package/cjs/data/transforms/tick-data/continuous.d.ts +0 -3
  375. package/cjs/data/transforms/tick-data/continuous.js +0 -44
  376. package/cjs/data/transforms/tick-data/continuous.js.map +0 -1
  377. package/cjs/data/transforms/tick-data/discrete/linear.d.ts +0 -3
  378. package/cjs/data/transforms/tick-data/discrete/linear.js +0 -90
  379. package/cjs/data/transforms/tick-data/discrete/linear.js.map +0 -1
  380. package/cjs/data/transforms/tick-data/discrete/polar-angle.d.ts +0 -3
  381. package/cjs/data/transforms/tick-data/discrete/polar-angle.js +0 -46
  382. package/cjs/data/transforms/tick-data/discrete/polar-angle.js.map +0 -1
  383. package/cjs/data/transforms/tick-data/index.d.ts +0 -4
  384. package/cjs/data/transforms/tick-data/index.js +0 -36
  385. package/cjs/data/transforms/tick-data/index.js.map +0 -1
  386. package/cjs/data/transforms/tick-data/interface.d.ts +0 -31
  387. package/cjs/data/transforms/tick-data/interface.js.map +0 -1
  388. package/cjs/data/transforms/tick-data/util.d.ts +0 -15
  389. package/cjs/data/transforms/tick-data/util.js +0 -80
  390. package/cjs/data/transforms/tick-data/util.js.map +0 -1
  391. package/esm/component/label/bar.d.ts +0 -9
  392. package/esm/component/label/bar.js +0 -39
  393. package/esm/component/label/bar.js.map +0 -1
  394. package/esm/component/label/pie.d.ts +0 -5
  395. package/esm/component/label/pie.js +0 -13
  396. package/esm/component/label/pie.js.map +0 -1
  397. package/esm/component/label/symbol.d.ts +0 -9
  398. package/esm/component/label/symbol.js +0 -20
  399. package/esm/component/label/symbol.js.map +0 -1
  400. package/esm/data/transforms/tick-data/config.d.ts +0 -1
  401. package/esm/data/transforms/tick-data/config.js +0 -2
  402. package/esm/data/transforms/tick-data/config.js.map +0 -1
  403. package/esm/data/transforms/tick-data/continuous.d.ts +0 -3
  404. package/esm/data/transforms/tick-data/continuous.js +0 -43
  405. package/esm/data/transforms/tick-data/continuous.js.map +0 -1
  406. package/esm/data/transforms/tick-data/discrete/linear.d.ts +0 -3
  407. package/esm/data/transforms/tick-data/discrete/linear.js +0 -81
  408. package/esm/data/transforms/tick-data/discrete/linear.js.map +0 -1
  409. package/esm/data/transforms/tick-data/discrete/polar-angle.d.ts +0 -3
  410. package/esm/data/transforms/tick-data/discrete/polar-angle.js +0 -41
  411. package/esm/data/transforms/tick-data/discrete/polar-angle.js.map +0 -1
  412. package/esm/data/transforms/tick-data/index.d.ts +0 -4
  413. package/esm/data/transforms/tick-data/index.js +0 -21
  414. package/esm/data/transforms/tick-data/index.js.map +0 -1
  415. package/esm/data/transforms/tick-data/interface.d.ts +0 -31
  416. package/esm/data/transforms/tick-data/interface.js +0 -2
  417. package/esm/data/transforms/tick-data/interface.js.map +0 -1
  418. package/esm/data/transforms/tick-data/util.d.ts +0 -15
  419. package/esm/data/transforms/tick-data/util.js +0 -70
  420. package/esm/data/transforms/tick-data/util.js.map +0 -1
@@ -8,6 +8,7 @@ import { SeriesData } from '../base/series-data';
8
8
  import type { ITextMark } from '../../mark/text';
9
9
  import type { IModelEvaluateOption } from '../../model/interface';
10
10
  import type { Datum, Maybe } from '../../typings';
11
+ import type { ILabelMark } from '../../mark/label';
11
12
  export declare const DefaultBandWidth = 6;
12
13
  export declare class WaterfallSeries<T extends IWaterfallSeriesSpec = IWaterfallSeriesSpec> extends BarSeries<any> {
13
14
  static readonly type: string;
@@ -16,10 +17,12 @@ export declare class WaterfallSeries<T extends IWaterfallSeriesSpec = IWaterfall
16
17
  protected _theme: Maybe<IWaterfallSeriesTheme>;
17
18
  protected _stack: boolean;
18
19
  protected _totalData?: SeriesData;
20
+ getTotalData(): any;
19
21
  protected _spec: T;
20
22
  protected _leaderLineMark: IRuleMark;
21
23
  protected _stackLabelMark: ITextMark;
22
24
  protected _labelMark: ITextMark;
25
+ protected initGroups(): void;
23
26
  setAttrFromSpec(): void;
24
27
  getSeriesKeys(): string[];
25
28
  protected initData(): void;
@@ -29,7 +32,8 @@ export declare class WaterfallSeries<T extends IWaterfallSeriesSpec = IWaterfall
29
32
  reFilterViewData(): void;
30
33
  onEvaluateEnd(ctx: IModelEvaluateOption): void;
31
34
  initMark(): void;
32
- protected _totalPositionX(datum: Datum, field: string, pos?: number): number;
33
- protected _totalPositionY(datum: Datum, field: string, pos?: number): number;
35
+ initLabelMarkStyle(labelMark: ILabelMark): void;
36
+ totalPositionX(datum: Datum, field: string, pos?: number): number;
37
+ totalPositionY(datum: Datum, field: string, pos?: number): number;
34
38
  initMarkStyle(): void;
35
39
  }
@@ -1,4 +1,4 @@
1
- import { isNil } from "@visactor/vutils";
1
+ import { isNil, precisionSub } from "@visactor/vutils";
2
2
 
3
3
  import { AttributeLevel, PREFIX, STACK_FIELD_END, STACK_FIELD_START, WaterfallDefaultSeriesField } from "../../constant/index";
4
4
 
@@ -28,6 +28,10 @@ import { RuleMark } from "../../mark/rule";
28
28
 
29
29
  import { waterfallSeriesMark } from "./constant";
30
30
 
31
+ import { Group } from "../base/group";
32
+
33
+ import { LabelRule } from "../../component/label/util";
34
+
31
35
  VChart.useMark([ RuleMark ]);
32
36
 
33
37
  export const DefaultBandWidth = 6;
@@ -37,6 +41,14 @@ export class WaterfallSeries extends BarSeries {
37
41
  super(...arguments), this.type = SeriesTypeEnum.waterfall, this._stack = !0, this._leaderLineMark = null,
38
42
  this._stackLabelMark = null, this._labelMark = null;
39
43
  }
44
+ getTotalData() {
45
+ var _a;
46
+ return null === (_a = this._totalData) || void 0 === _a ? void 0 : _a.getLatestData();
47
+ }
48
+ initGroups() {
49
+ const groupFields = this.getGroupFields();
50
+ groupFields && groupFields.length && (this._groups = new Group(groupFields), this._data && this._groups.initData(this._data.getDataView(), this._dataSet));
51
+ }
40
52
  setAttrFromSpec() {
41
53
  super.setAttrFromSpec(), this._stack = !1, this._fieldX = [ this._fieldX[0] ], this._fieldY = [ this._fieldY[0] ],
42
54
  isNil(this._seriesField) && (this._seriesField = WaterfallDefaultSeriesField);
@@ -85,15 +97,13 @@ export class WaterfallSeries extends BarSeries {
85
97
  var _a, _b;
86
98
  return "horizontal" === this.direction ? null === (_a = this._xAxisHelper) || void 0 === _a ? void 0 : _a.getScale(0).scale(0) : null === (_b = this._yAxisHelper) || void 0 === _b ? void 0 : _b.getScale(0).scale(0);
87
99
  }
88
- }, appearPreset = null === (_b = null === (_a = this._spec) || void 0 === _a ? void 0 : _a.animationAppear) || void 0 === _b ? void 0 : _b.preset, dataIndex = datum => {
89
- var _a, _b, _c;
90
- const xValue = null == datum ? void 0 : datum[this._fieldX[0]];
91
- return (null === (_c = null === (_b = null === (_a = this.getViewDataStatistics()) || void 0 === _a ? void 0 : _a.latestData) || void 0 === _b ? void 0 : _b[this._fieldX[0]]) || void 0 === _c ? void 0 : _c.values.indexOf(xValue)) || 0;
92
- };
100
+ }, appearPreset = null === (_b = null === (_a = this._spec) || void 0 === _a ? void 0 : _a.animationAppear) || void 0 === _b ? void 0 : _b.preset;
93
101
  this._rectMark.setAnimationConfig(animationConfig(DEFAULT_MARK_ANIMATION.waterfall(animationParams, appearPreset), userAnimationConfig(SeriesMarkNameEnum.bar, this._spec), {
94
- dataIndex: dataIndex
95
- })), this._labelMark && this._labelMark.setAnimationConfig(animationConfig(DEFAULT_MARK_ANIMATION.label(), userAnimationConfig(SeriesMarkNameEnum.label, this._spec), {
96
- dataIndex: dataIndex
102
+ dataIndex: datum => {
103
+ var _a, _b, _c;
104
+ const xValue = null == datum ? void 0 : datum[this._fieldX[0]];
105
+ return (null === (_c = null === (_b = null === (_a = this.getViewDataStatistics()) || void 0 === _a ? void 0 : _a.latestData) || void 0 === _b ? void 0 : _b[this._fieldX[0]]) || void 0 === _c ? void 0 : _c.values.indexOf(xValue)) || 0;
106
+ }
97
107
  }));
98
108
  }
99
109
  viewDataUpdate(d) {
@@ -106,17 +116,30 @@ export class WaterfallSeries extends BarSeries {
106
116
  super.onEvaluateEnd(ctx), this._totalData.updateData();
107
117
  }
108
118
  initMark() {
119
+ var _a;
109
120
  super.initMark();
110
121
  const leaderLine = this._createMark(WaterfallSeries.mark.leaderLine, {
111
122
  key: "index"
112
123
  });
113
- leaderLine && (this._leaderLineMark = leaderLine, leaderLine.setDataView(this._totalData.getDataView(), this._totalData.getProductId()));
114
- const stackLabel = this._createMark(WaterfallSeries.mark.stackLabel, {
115
- key: "index"
116
- });
117
- stackLabel && (this._stackLabelMark = stackLabel, stackLabel.setDataView(this._totalData.getDataView(), this._totalData.getProductId()));
124
+ leaderLine && (this._leaderLineMark = leaderLine, leaderLine.setDataView(this._totalData.getDataView(), this._totalData.getProductId())),
125
+ (null === (_a = this._spec.stackLabel) || void 0 === _a ? void 0 : _a.visible) && this._rectMark.addLabelSpec(this._spec.stackLabel);
118
126
  }
119
- _totalPositionX(datum, field, pos = .5) {
127
+ initLabelMarkStyle(labelMark) {
128
+ var _a;
129
+ if (labelMark) {
130
+ if (!this._labelMark && (null === (_a = this._spec.label) || void 0 === _a ? void 0 : _a.visible)) return super.initLabelMarkStyle(labelMark),
131
+ void (this._labelMark = labelMark);
132
+ this._stackLabelMark = labelMark, labelMark.skipEncode = !0, labelMark.setRule(LabelRule.stackLabel),
133
+ labelMark.setDataView(this._totalData.getDataView(), this._totalData.getProductId()),
134
+ this.setMarkStyle(labelMark, {
135
+ text: datum => {
136
+ var _a;
137
+ return "absolute" === (null === (_a = this._spec.stackLabel) || void 0 === _a ? void 0 : _a.valueType) ? datum.end : precisionSub(datum.end, datum.start);
138
+ }
139
+ });
140
+ }
141
+ }
142
+ totalPositionX(datum, field, pos = .5) {
120
143
  const {dataToPosition: dataToPosition, getBandwidth: getBandwidth} = this._xAxisHelper;
121
144
  return this._direction === Direction.vertical ? dataToPosition([ datum[field] ], {
122
145
  bandPosition: this._bandPosition
@@ -124,7 +147,7 @@ export class WaterfallSeries extends BarSeries {
124
147
  bandPosition: this._bandPosition
125
148
  }));
126
149
  }
127
- _totalPositionY(datum, field, pos = .5) {
150
+ totalPositionY(datum, field, pos = .5) {
128
151
  const {dataToPosition: dataToPosition, getBandwidth: getBandwidth} = this._yAxisHelper;
129
152
  return this._direction === Direction.vertical ? valueInScaleRange(dataToPosition([ datum[field] ], {
130
153
  bandPosition: this._bandPosition
@@ -133,38 +156,19 @@ export class WaterfallSeries extends BarSeries {
133
156
  }) + .5 * getBandwidth(0) - this._rectMark.getAttribute("height", datum) * (.5 - pos);
134
157
  }
135
158
  initMarkStyle() {
136
- var _a, _b;
137
- if (super.initMarkStyle(), this._leaderLineMark && (this._direction === Direction.vertical ? this.setMarkStyle(this._leaderLineMark, {
159
+ super.initMarkStyle(), this._leaderLineMark && (this._direction === Direction.vertical ? this.setMarkStyle(this._leaderLineMark, {
138
160
  visible: datum => !isNil(datum.lastIndex),
139
- x: datum => datum.lastIndex ? this._totalPositionX(datum, "lastIndex", 1) : 0,
140
- x1: datum => this._totalPositionX(datum, "index", 0),
141
- y: datum => this._totalPositionY(datum, "lastEnd", 0),
142
- y1: datum => this._totalPositionY(datum, datum.isTotal ? "end" : "start", 0)
161
+ x: datum => datum.lastIndex ? this.totalPositionX(datum, "lastIndex", 1) : 0,
162
+ x1: datum => this.totalPositionX(datum, "index", 0),
163
+ y: datum => this.totalPositionY(datum, "lastEnd", 0),
164
+ y1: datum => this.totalPositionY(datum, datum.isTotal ? "end" : "start", 0)
143
165
  }, "normal", AttributeLevel.Series) : this.setMarkStyle(this._leaderLineMark, {
144
166
  visible: datum => !isNil(datum.lastIndex),
145
- x: datum => this._totalPositionX(datum, "lastEnd", 0),
146
- x1: datum => this._totalPositionX(datum, datum.isTotal ? "end" : "start", 0),
147
- y: datum => datum.lastIndex ? this._totalPositionY(datum, "lastIndex", 1) : 0,
148
- y1: datum => this._totalPositionY(datum, "index", 0)
149
- }, "normal", AttributeLevel.Series)), this._stackLabelMark) {
150
- this.setMarkStyle(this._stackLabelMark, {
151
- text: datum => {
152
- var _a, _b;
153
- const text = "absolute" === (null === (_a = this._spec.stackLabel) || void 0 === _a ? void 0 : _a.valueType) ? datum.end : datum.end - datum.start;
154
- return (null === (_b = this._spec.stackLabel) || void 0 === _b ? void 0 : _b.formatMethod) ? this._spec.stackLabel.formatMethod(text, datum) : text;
155
- }
156
- });
157
- const pos = (null === (_a = this._spec.stackLabel) || void 0 === _a ? void 0 : _a.position) || "withChange", offset = (null === (_b = this._spec.stackLabel) || void 0 === _b ? void 0 : _b.offset) || 0;
158
- this._direction === Direction.vertical ? this.setMarkStyle(this._stackLabelMark, {
159
- x: datum => this._totalPositionX(datum, "index", .5),
160
- y: datum => "middle" === pos ? .5 * (this._totalPositionY(datum, "end") + this._totalPositionY(datum, "start")) : "max" === pos ? this._totalPositionY(datum, datum.end >= datum.start ? "end" : "start") - offset : "min" === pos ? this._totalPositionY(datum, datum.end >= datum.start ? "start" : "end") + offset : this._totalPositionY(datum, "end") + (datum.end >= datum.start ? -offset : offset),
161
- textBaseline: datum => "middle" === pos ? "middle" : "withChange" === pos && datum.end - datum.start >= 0 || "max" === pos ? "bottom" : "top"
162
- }) : this.setMarkStyle(this._stackLabelMark, {
163
- x: datum => "middle" === pos ? .5 * (this._totalPositionX(datum, "end") + this._totalPositionY(datum, "start")) : "max" === pos ? this._totalPositionX(datum, datum.end >= datum.start ? "end" : "start") + offset : "min" === pos ? this._totalPositionX(datum, datum.end >= datum.start ? "start" : "end") - offset : this._totalPositionX(datum, "end") + (datum.end >= datum.start ? offset : -offset),
164
- y: datum => this._totalPositionY(datum, "index", .5),
165
- textAlign: datum => "middle" === pos ? "center" : "withChange" === pos && datum.end - datum.start >= 0 || "max" === pos ? "left" : "right"
166
- });
167
- }
167
+ x: datum => this.totalPositionX(datum, "lastEnd", 0),
168
+ x1: datum => this.totalPositionX(datum, datum.isTotal ? "end" : "start", 0),
169
+ y: datum => datum.lastIndex ? this.totalPositionY(datum, "lastIndex", 1) : 0,
170
+ y1: datum => this.totalPositionY(datum, "index", 0)
171
+ }, "normal", AttributeLevel.Series));
168
172
  }
169
173
  }
170
174
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/series/waterfall/waterfall.ts"],"names":[],"mappings":"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","file":"waterfall.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport type { IRuleMark } from '../../mark/rule';\nimport { isNil } from '@visactor/vutils';\nimport {\n AttributeLevel,\n PREFIX,\n STACK_FIELD_END,\n STACK_FIELD_START,\n WaterfallDefaultSeriesField\n} from '../../constant/index';\nimport { waterfall, waterfallFillTotal } from '../../data/transforms/waterfall';\nimport { BarSeries } from '../bar/bar';\nimport { valueInScaleRange } from '../../util';\nimport type { WaterfallAppearPreset } from './animation';\nimport { animationConfig, userAnimationConfig } from '../../animation/utils';\nimport type { IWaterfallSeriesSpec, IWaterfallSeriesTheme } from './interface';\nimport type { SeriesMarkMap } from '../interface';\nimport { SeriesMarkNameEnum, SeriesTypeEnum } from '../interface/type';\nimport { DEFAULT_MARK_ANIMATION } from '../../animation/config';\nimport type { ITransformOptions, DataView } from '@visactor/vdataset';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport { SeriesData } from '../base/series-data';\nimport { dataViewFromDataView } from '../../data/initialize';\nimport type { IStateAnimateSpec } from '../../animation/spec';\nimport type { ITextMark } from '../../mark/text';\nimport type { IModelEvaluateOption } from '../../model/interface';\nimport type { Datum, Maybe } from '../../typings';\nimport { Direction } from '../../typings';\nimport type { IBarAnimationParams } from '../bar/animation';\nimport { VChart } from '../../core/vchart';\nimport { RuleMark } from '../../mark/rule';\nimport { waterfallSeriesMark } from './constant';\n\nVChart.useMark([RuleMark]);\n\nexport const DefaultBandWidth = 6; // 默认的bandWidth,避免连续轴没有bandWidth\n\nexport class WaterfallSeries<T extends IWaterfallSeriesSpec = IWaterfallSeriesSpec> extends BarSeries<any> {\n static readonly type: string = SeriesTypeEnum.waterfall;\n type = SeriesTypeEnum.waterfall;\n\n static readonly mark: SeriesMarkMap = waterfallSeriesMark;\n\n protected declare _theme: Maybe<IWaterfallSeriesTheme>;\n\n protected _stack: boolean = true;\n\n protected _totalData?: SeriesData;\n\n protected declare _spec: T;\n\n protected _leaderLineMark: IRuleMark = null;\n protected _stackLabelMark: ITextMark = null;\n protected _labelMark: ITextMark = null;\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n this._stack = false;\n // 不支持多维度;\n this._fieldX = [this._fieldX[0]];\n this._fieldY = [this._fieldY[0]];\n if (isNil(this._seriesField)) {\n this._seriesField = WaterfallDefaultSeriesField;\n }\n }\n\n getSeriesKeys(): string[] {\n if (this._seriesField === WaterfallDefaultSeriesField) {\n return [\n this._theme.seriesFieldName.increase,\n this._theme.seriesFieldName.decrease,\n this._theme.seriesFieldName.total\n ];\n }\n return super.getSeriesKeys();\n }\n\n protected initData(): void {\n super.initData();\n registerDataSetInstanceTransform(this._dataSet, 'waterfallFillTotal', waterfallFillTotal);\n registerDataSetInstanceTransform(this._dataSet, 'waterfall', waterfall);\n // 如果要在最后添加总计\n if (isNil(this._spec.total) || this._spec.total.type === 'end') {\n this._rawData?.transform(\n {\n type: 'waterfallFillTotal',\n options: {\n indexField: this.getGroupFields()[0],\n valueField: this.getStackValueField(),\n seriesField: this.getSeriesField(),\n seriesFieldName: this._theme.seriesFieldName,\n total: this._spec.total\n }\n },\n false\n );\n }\n // 总计数据\n const totalData = dataViewFromDataView(this.getViewData(), this._dataSet, {\n name: `${PREFIX}_series_${this.id}_totalData`\n });\n this.getViewData().target.removeListener('change', totalData.reRunAllTransform);\n this._totalData = new SeriesData(this._option, totalData);\n totalData.transform(\n {\n type: 'waterfall',\n options: {\n indexField: this.getGroupFields()[0],\n valueField: this.getStackValueField(),\n seriesField: this.getSeriesField(),\n seriesFieldName: this._theme.seriesFieldName,\n startAs: STACK_FIELD_START,\n endAs: STACK_FIELD_END,\n total: this._spec.total,\n groupData: () => this.getGroups().groupData\n }\n },\n false\n );\n }\n\n initAnimation() {\n // 这个数据在这个时候拿不到,因为组件还没创建结束,统计和筛选也还没添加。\n // 而且这个值理论上是动态的,建议 监听 viewDataStatisticsUpdate 消息动态更新\n const animationParams: IBarAnimationParams = {\n yField: this.direction === 'horizontal' ? this._fieldY[0] : this.getStackValueField(),\n xField: this.direction === 'horizontal' ? this.getStackValueField() : this._fieldX[0],\n direction: this.direction,\n growFrom: () =>\n this.direction === 'horizontal'\n ? this._xAxisHelper?.getScale(0).scale(0)\n : this._yAxisHelper?.getScale(0).scale(0)\n };\n const appearPreset = (this._spec?.animationAppear as IStateAnimateSpec<WaterfallAppearPreset>)?.preset;\n\n // 分组数据的dataIndex应该与x轴顺序一致,而非data[DEFAULT_DATA_INDEX]顺序\n const dataIndex = (datum: any) => {\n const xValue = datum?.[this._fieldX[0]];\n const xIndex = this.getViewDataStatistics()?.latestData?.[this._fieldX[0]]?.values.indexOf(xValue);\n // 不应该出现xIndex === -1 || undefined的情况\n return xIndex || 0;\n };\n\n this._rectMark.setAnimationConfig(\n animationConfig(\n DEFAULT_MARK_ANIMATION.waterfall(animationParams, appearPreset),\n userAnimationConfig(SeriesMarkNameEnum.bar, this._spec),\n { dataIndex }\n )\n );\n\n if (this._labelMark) {\n this._labelMark.setAnimationConfig(\n animationConfig(DEFAULT_MARK_ANIMATION.label(), userAnimationConfig(SeriesMarkNameEnum.label, this._spec), {\n dataIndex\n })\n );\n }\n }\n\n viewDataUpdate(d: DataView): void {\n this._totalData.getDataView().reRunAllTransform();\n this._totalData.updateData();\n super.viewDataUpdate(d);\n }\n /**\n * data\n */\n // waterfall 不支持任何的 data filter\n addViewDataFilter(_option: ITransformOptions) {\n // do nothing\n }\n reFilterViewData() {\n // do nothing\n }\n\n onEvaluateEnd(ctx: IModelEvaluateOption): void {\n super.onEvaluateEnd(ctx);\n this._totalData.updateData();\n }\n\n initMark(): void {\n super.initMark();\n const leaderLine = this._createMark(WaterfallSeries.mark.leaderLine, {\n key: 'index'\n }) as IRuleMark;\n if (leaderLine) {\n this._leaderLineMark = leaderLine;\n leaderLine.setDataView(this._totalData.getDataView(), this._totalData.getProductId());\n }\n const stackLabel = this._createMark(WaterfallSeries.mark.stackLabel, {\n key: 'index'\n }) as ITextMark;\n if (stackLabel) {\n this._stackLabelMark = stackLabel;\n stackLabel.setDataView(this._totalData.getDataView(), this._totalData.getProductId());\n }\n }\n\n protected _totalPositionX(datum: Datum, field: string, pos: number = 0.5) {\n const { dataToPosition, getBandwidth } = this._xAxisHelper;\n if (this._direction === Direction.vertical) {\n return (\n dataToPosition([datum[field]], {\n bandPosition: this._bandPosition\n }) +\n getBandwidth(0) * 0.5 -\n (this._rectMark.getAttribute('width', datum) as number) * (0.5 - pos)\n );\n }\n return valueInScaleRange(\n dataToPosition([datum[field]], {\n bandPosition: this._bandPosition\n })\n );\n }\n\n protected _totalPositionY(datum: Datum, field: string, pos: number = 0.5) {\n const { dataToPosition, getBandwidth } = this._yAxisHelper;\n if (this._direction === Direction.vertical) {\n return valueInScaleRange(\n dataToPosition([datum[field]], {\n bandPosition: this._bandPosition\n })\n );\n }\n return (\n dataToPosition([datum[field]], {\n bandPosition: this._bandPosition\n }) +\n getBandwidth(0) * 0.5 -\n (this._rectMark.getAttribute('height', datum) as number) * (0.5 - pos)\n );\n }\n\n initMarkStyle(): void {\n super.initMarkStyle();\n if (this._leaderLineMark) {\n if (this._direction === Direction.vertical) {\n this.setMarkStyle(\n this._leaderLineMark,\n {\n visible: (datum: Datum) => !isNil(datum.lastIndex),\n x: (datum: Datum) => {\n if (!datum.lastIndex) {\n return 0;\n }\n return this._totalPositionX(datum, 'lastIndex', 1);\n },\n x1: (datum: Datum) => this._totalPositionX(datum, 'index', 0),\n y: (datum: Datum) => this._totalPositionY(datum, 'lastEnd', 0),\n y1: (datum: Datum) => this._totalPositionY(datum, datum.isTotal ? 'end' : 'start', 0)\n },\n 'normal',\n AttributeLevel.Series\n );\n } else {\n this.setMarkStyle(\n this._leaderLineMark,\n {\n visible: (datum: Datum) => !isNil(datum.lastIndex),\n x: (datum: Datum) => this._totalPositionX(datum, 'lastEnd', 0),\n x1: (datum: Datum) => this._totalPositionX(datum, datum.isTotal ? 'end' : 'start', 0),\n y: (datum: Datum) => {\n if (!datum.lastIndex) {\n return 0;\n }\n return this._totalPositionY(datum, 'lastIndex', 1);\n },\n y1: (datum: Datum) => this._totalPositionY(datum, 'index', 0)\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n }\n\n if (this._stackLabelMark) {\n this.setMarkStyle(this._stackLabelMark, {\n text: (datum: Datum) => {\n const text = this._spec.stackLabel?.valueType === 'absolute' ? datum.end : datum.end - datum.start;\n if (this._spec.stackLabel?.formatMethod) {\n return this._spec.stackLabel.formatMethod(text, datum);\n }\n return text;\n }\n });\n const pos = this._spec.stackLabel?.position || 'withChange';\n const offset = this._spec.stackLabel?.offset || 0;\n if (this._direction === Direction.vertical) {\n this.setMarkStyle(this._stackLabelMark, {\n x: (datum: Datum) => this._totalPositionX(datum, 'index', 0.5),\n y: (datum: Datum) => {\n if (pos === 'middle') {\n return (this._totalPositionY(datum, 'end') + this._totalPositionY(datum, 'start')) * 0.5;\n } else if (pos === 'max') {\n return this._totalPositionY(datum, datum.end >= datum.start ? 'end' : 'start') - offset;\n } else if (pos === 'min') {\n return this._totalPositionY(datum, datum.end >= datum.start ? 'start' : 'end') + offset;\n }\n return this._totalPositionY(datum, 'end') + (datum.end >= datum.start ? -offset : offset);\n },\n textBaseline: (datum: Datum) => {\n if (pos === 'middle') {\n return 'middle';\n } else if ((pos === 'withChange' && datum.end - datum.start >= 0) || pos === 'max') {\n return 'bottom';\n }\n return 'top';\n }\n });\n } else {\n this.setMarkStyle(this._stackLabelMark, {\n x: (datum: Datum) => {\n if (pos === 'middle') {\n return (this._totalPositionX(datum, 'end') + this._totalPositionY(datum, 'start')) * 0.5;\n } else if (pos === 'max') {\n return this._totalPositionX(datum, datum.end >= datum.start ? 'end' : 'start') + offset;\n } else if (pos === 'min') {\n return this._totalPositionX(datum, datum.end >= datum.start ? 'start' : 'end') - offset;\n }\n return this._totalPositionX(datum, 'end') + (datum.end >= datum.start ? offset : -offset);\n },\n y: (datum: Datum) => this._totalPositionY(datum, 'index', 0.5),\n textAlign: (datum: Datum) => {\n if (pos === 'middle') {\n return 'center';\n } else if ((pos === 'withChange' && datum.end - datum.start >= 0) || pos === 'max') {\n return 'left';\n }\n return 'right';\n }\n });\n }\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/series/waterfall/waterfall.ts"],"names":[],"mappings":"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","file":"waterfall.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport type { IRuleMark } from '../../mark/rule';\nimport { isNil, precisionSub } from '@visactor/vutils';\nimport {\n AttributeLevel,\n PREFIX,\n STACK_FIELD_END,\n STACK_FIELD_START,\n WaterfallDefaultSeriesField\n} from '../../constant/index';\nimport { waterfall, waterfallFillTotal } from '../../data/transforms/waterfall';\nimport { BarSeries } from '../bar/bar';\nimport { valueInScaleRange } from '../../util';\nimport type { WaterfallAppearPreset } from './animation';\nimport { animationConfig, userAnimationConfig } from '../../animation/utils';\nimport type { IWaterfallSeriesSpec, IWaterfallSeriesTheme } from './interface';\nimport type { SeriesMarkMap } from '../interface';\nimport { SeriesMarkNameEnum, SeriesTypeEnum } from '../interface/type';\nimport { DEFAULT_MARK_ANIMATION } from '../../animation/config';\nimport type { ITransformOptions, DataView } from '@visactor/vdataset';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport { SeriesData } from '../base/series-data';\nimport { dataViewFromDataView } from '../../data/initialize';\nimport type { IStateAnimateSpec } from '../../animation/spec';\nimport type { ITextMark } from '../../mark/text';\nimport type { IModelEvaluateOption } from '../../model/interface';\nimport type { Datum, Maybe } from '../../typings';\nimport { Direction } from '../../typings';\nimport type { IBarAnimationParams } from '../bar/animation';\nimport { VChart } from '../../core/vchart';\nimport { RuleMark } from '../../mark/rule';\nimport { waterfallSeriesMark } from './constant';\nimport { Group } from '../base/group';\nimport type { ILabelMark } from '../../mark/label';\nimport { LabelRule } from '../../component/label/util';\n\nVChart.useMark([RuleMark]);\n\nexport const DefaultBandWidth = 6; // 默认的bandWidth,避免连续轴没有bandWidth\n\nexport class WaterfallSeries<T extends IWaterfallSeriesSpec = IWaterfallSeriesSpec> extends BarSeries<any> {\n static readonly type: string = SeriesTypeEnum.waterfall;\n type = SeriesTypeEnum.waterfall;\n\n static readonly mark: SeriesMarkMap = waterfallSeriesMark;\n\n protected declare _theme: Maybe<IWaterfallSeriesTheme>;\n\n protected _stack: boolean = true;\n\n protected _totalData?: SeriesData;\n getTotalData() {\n return this._totalData?.getLatestData();\n }\n\n protected declare _spec: T;\n\n protected _leaderLineMark: IRuleMark = null;\n protected _stackLabelMark: ITextMark = null;\n protected _labelMark: ITextMark = null;\n\n protected initGroups() {\n const groupFields = this.getGroupFields();\n if (groupFields && groupFields.length) {\n this._groups = new Group(groupFields);\n this._data && this._groups.initData(this._data.getDataView(), this._dataSet);\n }\n }\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n this._stack = false;\n // 不支持多维度;\n this._fieldX = [this._fieldX[0]];\n this._fieldY = [this._fieldY[0]];\n if (isNil(this._seriesField)) {\n this._seriesField = WaterfallDefaultSeriesField;\n }\n }\n\n getSeriesKeys(): string[] {\n if (this._seriesField === WaterfallDefaultSeriesField) {\n return [\n this._theme.seriesFieldName.increase,\n this._theme.seriesFieldName.decrease,\n this._theme.seriesFieldName.total\n ];\n }\n return super.getSeriesKeys();\n }\n\n protected initData(): void {\n super.initData();\n registerDataSetInstanceTransform(this._dataSet, 'waterfallFillTotal', waterfallFillTotal);\n registerDataSetInstanceTransform(this._dataSet, 'waterfall', waterfall);\n // 如果要在最后添加总计\n if (isNil(this._spec.total) || this._spec.total.type === 'end') {\n this._rawData?.transform(\n {\n type: 'waterfallFillTotal',\n options: {\n indexField: this.getGroupFields()[0],\n valueField: this.getStackValueField(),\n seriesField: this.getSeriesField(),\n seriesFieldName: this._theme.seriesFieldName,\n total: this._spec.total\n }\n },\n false\n );\n }\n // 总计数据\n const totalData = dataViewFromDataView(this.getViewData(), this._dataSet, {\n name: `${PREFIX}_series_${this.id}_totalData`\n });\n this.getViewData().target.removeListener('change', totalData.reRunAllTransform);\n this._totalData = new SeriesData(this._option, totalData);\n totalData.transform(\n {\n type: 'waterfall',\n options: {\n indexField: this.getGroupFields()[0],\n valueField: this.getStackValueField(),\n seriesField: this.getSeriesField(),\n seriesFieldName: this._theme.seriesFieldName,\n startAs: STACK_FIELD_START,\n endAs: STACK_FIELD_END,\n total: this._spec.total,\n groupData: () => this.getGroups().groupData\n }\n },\n false\n );\n }\n\n initAnimation() {\n // 这个数据在这个时候拿不到,因为组件还没创建结束,统计和筛选也还没添加。\n // 而且这个值理论上是动态的,建议 监听 viewDataStatisticsUpdate 消息动态更新\n const animationParams: IBarAnimationParams = {\n yField: this.direction === 'horizontal' ? this._fieldY[0] : this.getStackValueField(),\n xField: this.direction === 'horizontal' ? this.getStackValueField() : this._fieldX[0],\n direction: this.direction,\n growFrom: () =>\n this.direction === 'horizontal'\n ? this._xAxisHelper?.getScale(0).scale(0)\n : this._yAxisHelper?.getScale(0).scale(0)\n };\n const appearPreset = (this._spec?.animationAppear as IStateAnimateSpec<WaterfallAppearPreset>)?.preset;\n\n // 分组数据的dataIndex应该与x轴顺序一致,而非data[DEFAULT_DATA_INDEX]顺序\n const dataIndex = (datum: any) => {\n const xValue = datum?.[this._fieldX[0]];\n const xIndex = this.getViewDataStatistics()?.latestData?.[this._fieldX[0]]?.values.indexOf(xValue);\n // 不应该出现xIndex === -1 || undefined的情况\n return xIndex || 0;\n };\n\n this._rectMark.setAnimationConfig(\n animationConfig(\n DEFAULT_MARK_ANIMATION.waterfall(animationParams, appearPreset),\n userAnimationConfig(SeriesMarkNameEnum.bar, this._spec),\n { dataIndex }\n )\n );\n }\n\n viewDataUpdate(d: DataView): void {\n this._totalData.getDataView().reRunAllTransform();\n this._totalData.updateData();\n super.viewDataUpdate(d);\n }\n /**\n * data\n */\n // waterfall 不支持任何的 data filter\n addViewDataFilter(_option: ITransformOptions) {\n // do nothing\n }\n reFilterViewData() {\n // do nothing\n }\n\n onEvaluateEnd(ctx: IModelEvaluateOption): void {\n super.onEvaluateEnd(ctx);\n this._totalData.updateData();\n }\n\n initMark(): void {\n super.initMark();\n const leaderLine = this._createMark(WaterfallSeries.mark.leaderLine, {\n key: 'index'\n }) as IRuleMark;\n if (leaderLine) {\n this._leaderLineMark = leaderLine;\n leaderLine.setDataView(this._totalData.getDataView(), this._totalData.getProductId());\n }\n if (this._spec.stackLabel?.visible) {\n this._rectMark.addLabelSpec(this._spec.stackLabel);\n }\n }\n\n initLabelMarkStyle(labelMark: ILabelMark): void {\n if (!labelMark) {\n return;\n }\n\n if (!this._labelMark && this._spec.label?.visible) {\n super.initLabelMarkStyle(labelMark);\n this._labelMark = labelMark;\n return;\n }\n\n this._stackLabelMark = labelMark;\n // 瀑布图标签 encode 在自定义布局中计算\n labelMark.skipEncode = true;\n labelMark.setRule(LabelRule.stackLabel);\n labelMark.setDataView(this._totalData.getDataView(), this._totalData.getProductId());\n\n this.setMarkStyle(labelMark, {\n text: (datum: Datum) => {\n return this._spec.stackLabel?.valueType === 'absolute' ? datum.end : precisionSub(datum.end, datum.start);\n }\n });\n }\n\n totalPositionX(datum: Datum, field: string, pos: number = 0.5) {\n const { dataToPosition, getBandwidth } = this._xAxisHelper;\n if (this._direction === Direction.vertical) {\n return (\n dataToPosition([datum[field]], {\n bandPosition: this._bandPosition\n }) +\n getBandwidth(0) * 0.5 -\n (this._rectMark.getAttribute('width', datum) as number) * (0.5 - pos)\n );\n }\n return valueInScaleRange(\n dataToPosition([datum[field]], {\n bandPosition: this._bandPosition\n })\n );\n }\n\n totalPositionY(datum: Datum, field: string, pos: number = 0.5) {\n const { dataToPosition, getBandwidth } = this._yAxisHelper;\n if (this._direction === Direction.vertical) {\n return valueInScaleRange(\n dataToPosition([datum[field]], {\n bandPosition: this._bandPosition\n })\n );\n }\n return (\n dataToPosition([datum[field]], {\n bandPosition: this._bandPosition\n }) +\n getBandwidth(0) * 0.5 -\n (this._rectMark.getAttribute('height', datum) as number) * (0.5 - pos)\n );\n }\n\n initMarkStyle(): void {\n super.initMarkStyle();\n if (this._leaderLineMark) {\n if (this._direction === Direction.vertical) {\n this.setMarkStyle(\n this._leaderLineMark,\n {\n visible: (datum: Datum) => !isNil(datum.lastIndex),\n x: (datum: Datum) => {\n if (!datum.lastIndex) {\n return 0;\n }\n return this.totalPositionX(datum, 'lastIndex', 1);\n },\n x1: (datum: Datum) => this.totalPositionX(datum, 'index', 0),\n y: (datum: Datum) => this.totalPositionY(datum, 'lastEnd', 0),\n y1: (datum: Datum) => this.totalPositionY(datum, datum.isTotal ? 'end' : 'start', 0)\n },\n 'normal',\n AttributeLevel.Series\n );\n } else {\n this.setMarkStyle(\n this._leaderLineMark,\n {\n visible: (datum: Datum) => !isNil(datum.lastIndex),\n x: (datum: Datum) => this.totalPositionX(datum, 'lastEnd', 0),\n x1: (datum: Datum) => this.totalPositionX(datum, datum.isTotal ? 'end' : 'start', 0),\n y: (datum: Datum) => {\n if (!datum.lastIndex) {\n return 0;\n }\n return this.totalPositionY(datum, 'lastIndex', 1);\n },\n y1: (datum: Datum) => this.totalPositionY(datum, 'index', 0)\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n }\n }\n}\n"]}
@@ -14,6 +14,7 @@ export const waterfall = {
14
14
  }
15
15
  },
16
16
  stackLabel: {
17
+ visible: !0,
17
18
  offset: 12,
18
19
  position: "withChange",
19
20
  style: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/theme/builtin/common/series/waterfall.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,CAAC,MAAM,SAAS,GAA0B;IAC9C,eAAe,EAAE;QACf,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,UAAU;KACrB;IACD,UAAU,EAAE;QACV,KAAK,EAAE;YACL,MAAM,EAAE,OAAO;YACf,SAAS,EAAE,CAAC;YACZ,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;SACjB;KACF;IACD,UAAU,EAAE;QACV,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE,YAAY;QACtB,KAAK,EAAE;YACL,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,eAAe,CAAC,UAAU;YACpC,UAAU,EAAE,eAAe,CAAC,YAAY;YACxC,UAAU,EAAE,eAAe,CAAC,iBAAiB;SAC9C;KACF;IACD,KAAK,EAAE;QACL,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE,QAAQ;KACnB;CACF,CAAC","file":"waterfall.js","sourcesContent":["import type { IWaterfallSeriesTheme } from '../../../../series/waterfall/interface';\nimport { THEME_CONSTANTS } from '../constants';\n\nexport const waterfall: IWaterfallSeriesTheme = {\n seriesFieldName: {\n total: 'total',\n increase: 'increase',\n decrease: 'decrease'\n },\n leaderLine: {\n style: {\n stroke: 'black',\n lineWidth: 1,\n lineDash: [4, 4]\n }\n },\n stackLabel: {\n offset: 12,\n position: 'withChange',\n style: {\n fill: 'black',\n fontSize: THEME_CONSTANTS.l4FontSize,\n lineHeight: THEME_CONSTANTS.l4LineHeight,\n fontFamily: THEME_CONSTANTS.defaultFontFamily\n }\n },\n label: {\n visible: false,\n offset: 12,\n position: 'inside'\n }\n};\n"]}
1
+ {"version":3,"sources":["../src/theme/builtin/common/series/waterfall.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,CAAC,MAAM,SAAS,GAA0B;IAC9C,eAAe,EAAE;QACf,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,UAAU;KACrB;IACD,UAAU,EAAE;QACV,KAAK,EAAE;YACL,MAAM,EAAE,OAAO;YACf,SAAS,EAAE,CAAC;YACZ,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;SACjB;KACF;IACD,UAAU,EAAE;QACV,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE,YAAY;QACtB,KAAK,EAAE;YACL,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,eAAe,CAAC,UAAU;YACpC,UAAU,EAAE,eAAe,CAAC,YAAY;YACxC,UAAU,EAAE,eAAe,CAAC,iBAAiB;SAC9C;KACF;IACD,KAAK,EAAE;QACL,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE,QAAQ;KACnB;CACF,CAAC","file":"waterfall.js","sourcesContent":["import type { IWaterfallSeriesTheme } from '../../../../series/waterfall/interface';\nimport { THEME_CONSTANTS } from '../constants';\n\nexport const waterfall: IWaterfallSeriesTheme = {\n seriesFieldName: {\n total: 'total',\n increase: 'increase',\n decrease: 'decrease'\n },\n leaderLine: {\n style: {\n stroke: 'black',\n lineWidth: 1,\n lineDash: [4, 4]\n }\n },\n stackLabel: {\n visible: true,\n offset: 12,\n position: 'withChange',\n style: {\n fill: 'black',\n fontSize: THEME_CONSTANTS.l4FontSize,\n lineHeight: THEME_CONSTANTS.l4LineHeight,\n fontFamily: THEME_CONSTANTS.defaultFontFamily\n }\n },\n label: {\n visible: false,\n offset: 12,\n position: 'inside'\n }\n};\n"]}
@@ -5,7 +5,7 @@ export declare class ThemeManager {
5
5
  static registerTheme(name: string, theme: Partial<ITheme>): void;
6
6
  static getTheme(name: string): ITheme;
7
7
  static removeTheme(name: string): boolean;
8
- static themeExist(name: string): boolean;
8
+ static themeExist(name: any): boolean;
9
9
  static getDefaultTheme(): ITheme;
10
10
  static setCurrentTheme(name: string): void;
11
11
  static getCurrentTheme(): ITheme;
@@ -2,6 +2,8 @@ import { defaultThemeName, getMergedTheme, themes } from "./builtin";
2
2
 
3
3
  import { InstanceManager } from "../core/instance-manager";
4
4
 
5
+ import { isString } from "@visactor/vutils";
6
+
5
7
  export class ThemeManager {
6
8
  static registerTheme(name, theme) {
7
9
  name && ThemeManager.themes.set(name, getMergedTheme(theme));
@@ -13,7 +15,7 @@ export class ThemeManager {
13
15
  return ThemeManager.themes.delete(name);
14
16
  }
15
17
  static themeExist(name) {
16
- return ThemeManager.themes.has(name);
18
+ return !!isString(name) && ThemeManager.themes.has(name);
17
19
  }
18
20
  static getDefaultTheme() {
19
21
  return ThemeManager.themes.get(defaultThemeName);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/theme/theme-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAErE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAG3D,MAAM,OAAO,YAAY;IAYvB,MAAM,CAAC,aAAa,CAAC,IAAY,EAAE,KAAsB;QACvD,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;SACR;QAED,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;IACvD,CAAC;IAOD,MAAM,CAAC,QAAQ,CAAC,IAAY;QAC1B,OAAO,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,eAAe,EAAE,CAAC;IACzE,CAAC;IAOD,MAAM,CAAC,WAAW,CAAC,IAAY;QAC7B,OAAO,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAOD,MAAM,CAAC,UAAU,CAAC,IAAY;QAC5B,OAAO,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAGD,MAAM,CAAC,eAAe;QACpB,OAAO,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACnD,CAAC;IAGD,MAAM,CAAC,eAAe,CAAC,IAAY;QACjC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;YAClC,OAAO;SACR;QACD,YAAY,CAAC,iBAAiB,GAAG,IAAI,CAAC;QACtC,eAAe,CAAC,OAAO,CAAC,CAAC,QAAiB,EAAE,EAAE,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;IAClF,CAAC;IAGD,MAAM,CAAC,eAAe;QACpB,OAAO,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;IAC/D,CAAC;IAGD,MAAM,CAAC,mBAAmB;QACxB,OAAO,YAAY,CAAC,iBAAiB,CAAC;IACxC,CAAC;;AAnEe,mBAAM,GAAG,MAAM,CAAC;AAEjB,8BAAiB,GAAW,gBAAgB,CAAC","file":"theme-manager.js","sourcesContent":["import { defaultThemeName, getMergedTheme, themes } from './builtin';\nimport type { ITheme } from './interface';\nimport { InstanceManager } from '../core/instance-manager';\nimport type { IVChart } from '../core/interface';\n\nexport class ThemeManager {\n /** 主题字典 */\n static readonly themes = themes;\n\n private static _currentThemeName: string = defaultThemeName; // 设置缺省为默认主题\n\n /**\n * 注册主题\n * @param name 主题名称\n * @param theme 主题配置\n * @returns\n */\n static registerTheme(name: string, theme: Partial<ITheme>) {\n if (!name) {\n return;\n }\n // 所有主题基于默认主题扩展,保证基础值\n ThemeManager.themes.set(name, getMergedTheme(theme));\n }\n\n /**\n * 获取主题\n * @param name 主题名称\n * @returns\n */\n static getTheme(name: string) {\n return ThemeManager.themes.get(name) || ThemeManager.getDefaultTheme();\n }\n\n /**\n * 移除主题\n * @param name 主题名称\n * @returns 是否移除成功\n */\n static removeTheme(name: string): boolean {\n return ThemeManager.themes.delete(name);\n }\n\n /**\n * 判断主题是否存在\n * @param name 主题名称\n * @returns 是否存在\n */\n static themeExist(name: string) {\n return ThemeManager.themes.has(name);\n }\n\n /** 获取图表默认主题(非用户配置) */\n static getDefaultTheme(): ITheme {\n return ThemeManager.themes.get(defaultThemeName);\n }\n\n /** 设置当前主题(所有实例生效) */\n static setCurrentTheme(name: string) {\n if (!ThemeManager.themeExist(name)) {\n return;\n }\n ThemeManager._currentThemeName = name;\n InstanceManager.forEach((instance: IVChart) => instance?.setCurrentTheme(name));\n }\n\n /** 获取当前主题(只能获取用户通过`setCurrentTheme`方法设置过的主题,默认值为默认主题) */\n static getCurrentTheme(): ITheme {\n return ThemeManager.getTheme(ThemeManager._currentThemeName);\n }\n\n /** 获取当前主题名称(只能获取用户通过`setCurrentTheme`方法设置过的主题,默认值为默认主题) */\n static getCurrentThemeName(): string {\n return ThemeManager._currentThemeName;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/theme/theme-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAErE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,MAAM,OAAO,YAAY;IAYvB,MAAM,CAAC,aAAa,CAAC,IAAY,EAAE,KAAsB;QACvD,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;SACR;QAED,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;IACvD,CAAC;IAOD,MAAM,CAAC,QAAQ,CAAC,IAAY;QAC1B,OAAO,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,eAAe,EAAE,CAAC;IACzE,CAAC;IAOD,MAAM,CAAC,WAAW,CAAC,IAAY;QAC7B,OAAO,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAOD,MAAM,CAAC,UAAU,CAAC,IAAS;QACzB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACnB,OAAO,KAAK,CAAC;SACd;QACD,OAAO,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAGD,MAAM,CAAC,eAAe;QACpB,OAAO,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACnD,CAAC;IAGD,MAAM,CAAC,eAAe,CAAC,IAAY;QACjC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;YAClC,OAAO;SACR;QACD,YAAY,CAAC,iBAAiB,GAAG,IAAI,CAAC;QACtC,eAAe,CAAC,OAAO,CAAC,CAAC,QAAiB,EAAE,EAAE,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;IAClF,CAAC;IAGD,MAAM,CAAC,eAAe;QACpB,OAAO,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;IAC/D,CAAC;IAGD,MAAM,CAAC,mBAAmB;QACxB,OAAO,YAAY,CAAC,iBAAiB,CAAC;IACxC,CAAC;;AAtEe,mBAAM,GAAG,MAAM,CAAC;AAEjB,8BAAiB,GAAW,gBAAgB,CAAC","file":"theme-manager.js","sourcesContent":["import { defaultThemeName, getMergedTheme, themes } from './builtin';\nimport type { ITheme } from './interface';\nimport { InstanceManager } from '../core/instance-manager';\nimport type { IVChart } from '../core/interface';\nimport { isString } from '@visactor/vutils';\n\nexport class ThemeManager {\n /** 主题字典 */\n static readonly themes = themes;\n\n private static _currentThemeName: string = defaultThemeName; // 设置缺省为默认主题\n\n /**\n * 注册主题\n * @param name 主题名称\n * @param theme 主题配置\n * @returns\n */\n static registerTheme(name: string, theme: Partial<ITheme>) {\n if (!name) {\n return;\n }\n // 所有主题基于默认主题扩展,保证基础值\n ThemeManager.themes.set(name, getMergedTheme(theme));\n }\n\n /**\n * 获取主题\n * @param name 主题名称\n * @returns\n */\n static getTheme(name: string) {\n return ThemeManager.themes.get(name) || ThemeManager.getDefaultTheme();\n }\n\n /**\n * 移除主题\n * @param name 主题名称\n * @returns 是否移除成功\n */\n static removeTheme(name: string): boolean {\n return ThemeManager.themes.delete(name);\n }\n\n /**\n * 判断主题是否存在\n * @param name 主题名称\n * @returns 是否存在\n */\n static themeExist(name: any) {\n if (!isString(name)) {\n return false;\n }\n return ThemeManager.themes.has(name);\n }\n\n /** 获取图表默认主题(非用户配置) */\n static getDefaultTheme(): ITheme {\n return ThemeManager.themes.get(defaultThemeName);\n }\n\n /** 设置当前主题(所有实例生效) */\n static setCurrentTheme(name: string) {\n if (!ThemeManager.themeExist(name)) {\n return;\n }\n ThemeManager._currentThemeName = name;\n InstanceManager.forEach((instance: IVChart) => instance?.setCurrentTheme(name));\n }\n\n /** 获取当前主题(只能获取用户通过`setCurrentTheme`方法设置过的主题,默认值为默认主题) */\n static getCurrentTheme(): ITheme {\n return ThemeManager.getTheme(ThemeManager._currentThemeName);\n }\n\n /** 获取当前主题名称(只能获取用户通过`setCurrentTheme`方法设置过的主题,默认值为默认主题) */\n static getCurrentThemeName(): string {\n return ThemeManager._currentThemeName;\n }\n}\n"]}
@@ -0,0 +1,8 @@
1
+ import type { DataSet, DataView } from '@visactor/vdataset';
2
+ export interface IGroup {
3
+ fields?: string[];
4
+ groupData?: DataView;
5
+ initData?: (viewData: DataView, dataSet: DataSet) => void;
6
+ groupDataUpdate?: () => void;
7
+ getGroupValueInField?: (field: string) => any[];
8
+ }
@@ -0,0 +1,2 @@
1
+ export { };
2
+ //# sourceMappingURL=group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/typings/group.ts"],"names":[],"mappings":"","file":"group.js","sourcesContent":["import type { DataSet, DataView } from '@visactor/vdataset';\n\nexport interface IGroup {\n fields?: string[];\n groupData?: DataView;\n initData?: (viewData: DataView, dataSet: DataSet) => void;\n groupDataUpdate?: () => void;\n getGroupValueInField?: (field: string) => any[];\n}\n"]}
@@ -11,3 +11,4 @@ export * from './params';
11
11
  export * from './visual';
12
12
  export * from './common';
13
13
  export * from './spec';
14
+ export * from './group';
@@ -23,4 +23,6 @@ export * from "./visual";
23
23
  export * from "./common";
24
24
 
25
25
  export * from "./spec";
26
+
27
+ export * from "./group";
26
28
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/typings/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC","file":"index.js","sourcesContent":["export * from './cursor';\nexport * from './data';\nexport * from './interpolate';\nexport * from './shape';\nexport * from './scale';\nexport * from './line-stroke';\nexport * from './space';\nexport * from './coordinate';\nexport * from './tooltip';\nexport * from './params';\nexport * from './visual';\nexport * from './common';\nexport * from './spec';\n"]}
1
+ {"version":3,"sources":["../src/typings/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC","file":"index.js","sourcesContent":["export * from './cursor';\nexport * from './data';\nexport * from './interpolate';\nexport * from './shape';\nexport * from './scale';\nexport * from './line-stroke';\nexport * from './space';\nexport * from './coordinate';\nexport * from './tooltip';\nexport * from './params';\nexport * from './visual';\nexport * from './common';\nexport * from './spec';\nexport * from './group';\n"]}
@@ -9,7 +9,7 @@ import type { IAttributeOpt, IModelMarkAttributeContext } from '../compile/mark'
9
9
  import type { Datum, StringOrNumber } from './common';
10
10
  import type { IPadding } from '@visactor/vutils';
11
11
  import type { IColorKey } from '../theme/color-scheme/interface';
12
- import type { IRepeatType } from '@visactor/vrender';
12
+ import type { IRepeatType, TextAlignType, TextBaselineType } from '@visactor/vrender';
13
13
  export interface IVisualSpecBase<D, T> {
14
14
  type: ScaleType;
15
15
  domain: D[];
@@ -277,7 +277,7 @@ export interface IImageMarkSpec extends IFillMarkSpec {
277
277
  repeatY?: IRepeatType;
278
278
  image: string | HTMLImageElement | HTMLCanvasElement;
279
279
  }
280
- export type TextAlign = 'left' | 'right' | 'center';
281
- export type TextBaseLine = 'top' | 'bottom' | 'middle' | 'alphabetic';
280
+ export type TextAlign = TextAlignType;
281
+ export type TextBaseLine = TextBaselineType;
282
282
  export type FontStyle = 'normal' | 'italic' | 'oblique' | string;
283
283
  export type FontWeight = 'normal' | 'bold' | 'lighter' | 'bolder' | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/typings/visual.ts"],"names":[],"mappings":"","file":"visual.js","sourcesContent":["import type { PopTipAttributes } from '@visactor/vrender-components';\nimport type { DataView } from '@visactor/vdataset';\nimport type { Cursor } from './cursor';\nimport type { InterpolateType } from './interpolate';\nimport type { ScaleType } from './scale';\nimport type { ShapeType } from './shape';\nimport type { IPoint } from './coordinate';\nimport type { IAttributeOpt, IModelMarkAttributeContext } from '../compile/mark';\nimport type { Datum, StringOrNumber } from './common';\nimport type { IPadding } from '@visactor/vutils';\nimport type { IColorKey } from '../theme/color-scheme/interface';\nimport type { IRepeatType } from '@visactor/vrender';\n\n// 基础的visual 对应 scale 的属性\nexport interface IVisualSpecBase<D, T> {\n /**\n * type of scale\n */\n type: ScaleType;\n /**\n * will set to scale.domain, it means input of scale\n */\n domain: D[];\n /**\n * will set to scale.range, it means output of scale\n */\n range: T[];\n /**\n * will set to scale.specified if scale support, as a key-value pair matching capability\n * @since 1.1.0\n */\n specified?: { [key: string]: unknown };\n}\n// 用来给用户进行mark.style上的映射配置。所以要配置数据维度\nexport interface IVisualSpecStyle<D, T> extends IVisualSpecBase<D, T> {\n field?: string;\n}\n\nexport type IDataDomainSpec = {\n dataId: string;\n fields: string[];\n};\n\n// 用来提供给用户进行 scale 配置 所以名字是必选的 对用户配置\nexport interface IVisualSpecScale<D, T> extends Omit<IVisualSpecBase<D, T>, 'domain'> {\n id: string;\n domain:\n | IVisualSpecBase<D, T>['domain']\n // 使用数据的字段值,如果 scale 是连续的,就取区间,如果是离散的就使用 values 。\n // 不考虑图表内的交互等数据筛选,这里只用原始数据的统计信息\n | IDataDomainSpec[];\n}\n// 对用户配置\nexport type IVisual<D = any, R = any> = IVisualSpecStyle<D, R> | IVisualScale;\n\nexport interface IVisualScale {\n /**\n * 对应 IVisualSpecScale 的用户配置 scale-id\n */\n scale: string;\n /**\n * 指定参与映射的数据字段\n */\n field?: string;\n /**\n * 当用户指定 field 后,用该属性来控制值域。\n * @default 'none'\n */\n changeDomain?: 'none' | 'replace' | 'expand';\n}\n\nexport type FunctionType<T> = (\n datum: Datum,\n context: IModelMarkAttributeContext,\n opt?: IAttributeOpt,\n source?: DataView\n) => T;\nexport type ValueType<T> = T;\nexport type VisualType<T> = ValueType<T> | FunctionType<T> | IVisual<unknown, T>;\n\nexport type TextureType =\n | 'circle'\n | 'dimond'\n | 'rect'\n | 'vertical-line'\n | 'horizontal-line'\n | 'bias-lr'\n | 'bias-rl'\n | 'grid';\n\n/**\n * style格式转换\n */\nexport type ConvertToMarkStyleSpec<T extends Record<string, any>> = {\n [key in keyof T]: VisualType<T[key]>;\n};\n\n/**\n * border\n */\n\nexport interface IBorder {\n distance: number | string;\n stroke?: string | IGradient;\n strokeOpacity?: number;\n lineWidth?: number;\n lineDash?: number[];\n lineDashOffset?: number;\n}\n\nexport interface ICommonSpec {\n visible?: boolean;\n x?: number;\n y?: number;\n z?: number;\n stroke?: string | IGradient | IColorKey | false;\n strokeOpacity?: number;\n opacity?: number;\n lineWidth?: number;\n lineDash?: number[];\n lineDashOffset?: number;\n\n cursor?: Cursor;\n zIndex?: number;\n angle?: number;\n anchor?: [number, number];\n\n // 3d旋转的属性\n beta?: number;\n alpha?: number;\n anchor3d?: [number, number];\n\n /**\n * 选择模式,精确模式,粗糙模式(包围盒模式),自定义模式\n */\n pickMode?: 'accurate' | 'imprecise' | 'custom';\n boundsMode?: 'accurate' | 'imprecise';\n\n // 以下是纹理相关的属性\n /**\n * 纹理的类型\n */\n texture?: TextureType | string;\n /**\n * 纹理的颜色\n */\n textureColor?: string;\n /**\n * 纹理单元的大小\n */\n textureSize?: number; // 纹理大小\n /**\n * 纹理之间空隙的大小\n */\n texturePadding?: number;\n\n /**\n * 外边框\n */\n outerBorder?: IBorder;\n /**\n * 内边框\n */\n innerBorder?: IBorder;\n\n [key: string]: any;\n}\n\nexport interface IFillMarkSpec extends ICommonSpec {\n fill?: VisualType<string> | IGradient | false | IColorKey;\n fillOpacity?: number;\n // TODO:waite VRender support this api\n // backgroundMode: number; // 填充模式(与具体图元有关)\n // can coexist with fill\n background?: string | HTMLImageElement | HTMLCanvasElement | null;\n}\n\n// export interface IFillImageMarkSpec {\n// fillImage?: string;\n// repeatX?: RepeatXYType;\n// repeatY?: RepeatXYType;\n// imageOrigin?: ImageOriginType;\n// }\n\nexport interface ISymbolMarkSpec extends IFillMarkSpec {\n dx?: number;\n dy?: number;\n size?: number | number[];\n /** 对外声明使用shape,vrender图形属性对应的是shape */\n shape?: ShapeType | string;\n /** FIXME: vrender Symbol接收的图形属性,暂时都申明一下 */\n symbolType?: ShapeType | string;\n scaleX?: number;\n scaleY?: number;\n}\n\n// lineMark 和 areaMark 共同配置\nexport interface ILineLikeMarkSpec extends IFillMarkSpec {\n curveType?: InterpolateType;\n defined?: boolean;\n /**\n * @private 一个标志位,用于通知 VGrammar 是否执行 getLineSegmentConfigs 方法\n */\n enableSegments?: boolean;\n}\n\nexport interface IAreaMarkSpec extends ILineLikeMarkSpec {\n x1?: number;\n y1?: number;\n\n orient?: 'horizontal' | 'vertical';\n}\n\nexport interface ILineMarkSpec extends ILineLikeMarkSpec {\n lineCap?: LineStrokeCap;\n lineJoin?: LineStrokeJoin;\n miterLimit?: number;\n strokeBoundsBuffer?: number;\n}\n\nexport interface IRuleMarkSpec extends ILineMarkSpec {\n x1?: number;\n y1?: number;\n}\n\nexport interface ITextMarkSpec extends IFillMarkSpec {\n /**\n * 文字内容\n */\n text?: StringOrNumber | string[];\n /**\n * x 方向偏移\n */\n dx?: number;\n /**\n * y 方向偏移\n */\n dy?: number;\n /**\n * 字号\n */\n fontSize?: number;\n /**\n * 文字对齐方式\n */\n textAlign?: TextAlign;\n /**\n * 文字居中方式\n */\n textBaseline?: TextBaseLine;\n /**\n * 字体\n */\n fontFamily?: string;\n /**\n * 字重\n */\n fontWeight?: FontWeight;\n /**\n * 字体样式\n */\n fontStyle?: FontStyle;\n /**\n * 文字的最大长度\n */\n maxLineWidth?: number;\n /**\n * 文字超出 maxLineWidth 后的省略符\n */\n ellipsis?: string;\n // TODO: 这些不是常规的文字mark属性,待确认需求背景\n lineBreak?: string;\n /**\n * 下划线\n */\n underline?: boolean;\n /**\n * 中划线\n */\n lineThrough?: boolean;\n /**\n * 行高(1.3.1 版本新增字符串类型表示比例值,如\"150%\")\n * @since 1.3.1\n */\n lineHeight?: number | string;\n /**\n * poptip 相关配置\n */\n poptip?: PopTipAttributes;\n}\n\nexport type IPositionedTextMarkSpec = Omit<ITextMarkSpec, 'align' | 'textAlign' | 'baseline' | 'textBaseline'>;\n\nexport interface IRectMarkSpec extends IFillMarkSpec {\n /**\n * 圆角配置。\n * 1. 如果传入数值,则统一为四个角设置圆角\n * 2. 如果传入数组,则分别为 [上左, 上右, 下右, 下左]\n */\n cornerRadius?: number | number[];\n width?: number;\n height?: number;\n x1?: number;\n y1?: number;\n}\n\n// 3d rect,支持length表示长宽高中的长属性(深度属性)\nexport interface IRect3dMarkSpec extends IRectMarkSpec {\n length?: number;\n}\n\nexport interface IBoxPlotMarkSpec extends ICommonSpec {\n /**\n * box描边宽度\n */\n lineWidth?: number;\n /**\n * box宽度\n */\n boxWidth?: number;\n /**\n * 最大最小值宽度\n */\n shaftWidth?: number;\n /**\n * 中轴线类型\n */\n shaftShape?: BoxPlotShaftShape;\n /**\n * 盒子填充颜色,为空则不填充\n */\n boxFill?: string;\n // /**\n // * 描边颜色\n // */\n // stroke?: string;\n /**\n * 中轴线透明度,仅当shaftType=bar时生效\n */\n shaftFillOpacity?: number;\n\n min?: (datum: Datum) => number;\n q1?: (datum: Datum) => number;\n median?: (datum: Datum) => number;\n q3?: (datum: Datum) => number;\n max?: (datum: Datum) => number;\n}\n\nexport interface IOutlierMarkSpec {\n //异常点填充颜色\n fill?: string;\n //异常点大小\n size?: number;\n}\n\nexport interface IPathMarkSpec extends IFillMarkSpec {\n path?: string;\n scaleX?: number;\n scaleY?: number;\n scaleCenter?: { x: number; y: number };\n // TODO: 该属性后续可能会删除,未定\n // 平滑缩放,不然会发生跳变,在地图交互场景需要配置为true;常规path缩放不需要\n smoothScale?: boolean;\n}\n\nexport interface ILinkPathMarkSpec extends IFillMarkSpec {\n x0?: number;\n y0?: number;\n x1?: number;\n y1?: number;\n thickness?: number;\n curvature?: number;\n /** round all the coordinates */\n round?: boolean;\n /** the ratio of normal style path */\n ratio?: number;\n align?: 'start' | 'end' | 'center';\n pathType?: 'line' | 'smooth' | 'polyline';\n endArrow?: boolean;\n startArrow?: boolean;\n backgroundStyle?: any;\n direction?: 'horizontal' | 'vertical' | 'LR' | 'RL' | 'TB' | 'BL' | 'radial';\n}\n\nexport interface IArcMarkSpec extends IFillMarkSpec {\n startAngle?: number;\n endAngle?: number;\n padAngle?: number;\n\n outerRadius?: number;\n innerRadius?: number;\n cornerRadius?: number;\n\n /** arc的中心点偏移距离 */\n centerOffset?: number;\n\n /** arc 的 roundCap 属性,即圆角是否伸出 startAngle 和 endAngle 之外 */\n cap?: boolean | [boolean, boolean];\n /** arc 在 roundCap 打开且应用环形渐变时是否对 cap 部分生效 */\n autoCapConical?: boolean;\n}\n\n// 3d arc,有高度配置\nexport interface IArc3dMarkSpec extends IArcMarkSpec {\n height?: number;\n}\n\nexport interface IProgressArcMarkSpec extends IArcMarkSpec {\n /** 进度条内侧 padding(接受负值) */\n innerPadding?: number;\n /** 进度条外侧 padding(接受负值) */\n outerPadding?: number;\n}\n\nexport interface ICellMarkSpec extends ISymbolMarkSpec {\n padding?: number | number[] | IPadding;\n}\n\nexport interface IGroupMarkSpec extends IFillMarkSpec {\n clip?: boolean;\n width?: number;\n height?: number;\n /**\n * 圆角配置。\n * 1. 如果传入数值,则统一为四个角设置圆角\n * 2. 如果传入数组,则分别为 [上左, 上右, 下右, 下左]\n */\n cornerRadius?: number | number[];\n}\n\nexport interface IPolygonMarkSpec extends ICommonSpec, IFillMarkSpec {\n points?: IPoint[];\n /**\n * 圆角配置,支持数组配置,数组的顺序同组成 polygon 的顺序对应\n */\n cornerRadius?: number | number[];\n scaleX?: number;\n scaleY?: number;\n}\n\nexport interface IPyramid3dMarkSpec extends IPolygonMarkSpec {\n // 只能有4个顶点\n points?: IPoint[];\n}\n\n/**\n * ImageFill\n */\nexport type RepeatType = 'no-repeat' | 'repeat-x' | 'repeat-y' | 'repeat';\nexport type RepeatXYType = 'no-repeat' | 'repeat' | 'stretch';\nexport type ImageOriginType = 'top' | 'bottom';\n\n/**\n * gradient\n */\nexport type GradientPropValue<T> = ValueType<T> | FunctionType<T>;\nexport type GradientStop = {\n offset: GradientPropValue<number>;\n color: GradientPropValue<string>;\n opacity?: number;\n};\nexport interface IGradientLinear {\n x0?: GradientPropValue<number>;\n y0?: GradientPropValue<number>;\n x1?: GradientPropValue<number>;\n y1?: GradientPropValue<number>;\n stops: GradientStop[];\n gradient: 'linear';\n}\n\nexport interface IGradientRadial {\n r0?: GradientPropValue<number>;\n x0?: GradientPropValue<number>;\n y0?: GradientPropValue<number>;\n x1?: GradientPropValue<number>;\n y1?: GradientPropValue<number>;\n r1?: GradientPropValue<number>;\n stops: GradientStop[];\n gradient: 'radial';\n}\n\nexport interface IGradientConical {\n x?: GradientPropValue<number>;\n y?: GradientPropValue<number>;\n startAngle?: GradientPropValue<number>;\n endAngle?: GradientPropValue<number>;\n stops: GradientStop[];\n gradient: 'conical';\n}\n\nexport type GradientType = 'linear' | 'radial' | 'conical';\nexport type IGradient = IGradientLinear | IGradientRadial | IGradientConical;\n\nexport type LineStrokeCap = 'butt' | 'round' | 'square';\nexport type LineStrokeJoin = 'arcs' | 'bevel' | 'miter' | 'miter-clip' | 'round';\n\nexport type BoxPlotShaftShape = 'line' | 'bar';\n/**\n * threshold\n */\nexport interface IThresholdStyle extends IVisualSpecStyle<number, string> {\n domain: number[];\n field: string;\n range: string[];\n type: 'threshold';\n}\n\n// FIXME: For some tool methods that need to use common configuration types\nexport interface IUnknownMarkSpec extends ICommonSpec {\n [key: string]: unknown;\n}\n\nexport interface IImageMarkSpec extends IFillMarkSpec {\n /**\n * 圆角配置。\n * 1. 如果传入数值,则统一为四个角设置圆角\n * 2. 如果传入数组,则分别为 [上左, 上右, 下右, 下左]\n */\n cornerRadius?: number | number[];\n width?: number;\n height?: number;\n repeatX?: IRepeatType;\n repeatY?: IRepeatType;\n image: string | HTMLImageElement | HTMLCanvasElement;\n}\n\n/**\n * text\n */\nexport type TextAlign = 'left' | 'right' | 'center';\nexport type TextBaseLine = 'top' | 'bottom' | 'middle' | 'alphabetic';\nexport type FontStyle = 'normal' | 'italic' | 'oblique' | string;\nexport type FontWeight = 'normal' | 'bold' | 'lighter' | 'bolder' | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;\n"]}
1
+ {"version":3,"sources":["../src/typings/visual.ts"],"names":[],"mappings":"","file":"visual.js","sourcesContent":["import type { PopTipAttributes } from '@visactor/vrender-components';\nimport type { DataView } from '@visactor/vdataset';\nimport type { Cursor } from './cursor';\nimport type { InterpolateType } from './interpolate';\nimport type { ScaleType } from './scale';\nimport type { ShapeType } from './shape';\nimport type { IPoint } from './coordinate';\nimport type { IAttributeOpt, IModelMarkAttributeContext } from '../compile/mark';\nimport type { Datum, StringOrNumber } from './common';\nimport type { IPadding } from '@visactor/vutils';\nimport type { IColorKey } from '../theme/color-scheme/interface';\nimport type { IRepeatType, TextAlignType, TextBaselineType } from '@visactor/vrender';\n\n// 基础的visual 对应 scale 的属性\nexport interface IVisualSpecBase<D, T> {\n /**\n * type of scale\n */\n type: ScaleType;\n /**\n * will set to scale.domain, it means input of scale\n */\n domain: D[];\n /**\n * will set to scale.range, it means output of scale\n */\n range: T[];\n /**\n * will set to scale.specified if scale support, as a key-value pair matching capability\n * @since 1.1.0\n */\n specified?: { [key: string]: unknown };\n}\n// 用来给用户进行mark.style上的映射配置。所以要配置数据维度\nexport interface IVisualSpecStyle<D, T> extends IVisualSpecBase<D, T> {\n field?: string;\n}\n\nexport type IDataDomainSpec = {\n dataId: string;\n fields: string[];\n};\n\n// 用来提供给用户进行 scale 配置 所以名字是必选的 对用户配置\nexport interface IVisualSpecScale<D, T> extends Omit<IVisualSpecBase<D, T>, 'domain'> {\n id: string;\n domain:\n | IVisualSpecBase<D, T>['domain']\n // 使用数据的字段值,如果 scale 是连续的,就取区间,如果是离散的就使用 values 。\n // 不考虑图表内的交互等数据筛选,这里只用原始数据的统计信息\n | IDataDomainSpec[];\n}\n// 对用户配置\nexport type IVisual<D = any, R = any> = IVisualSpecStyle<D, R> | IVisualScale;\n\nexport interface IVisualScale {\n /**\n * 对应 IVisualSpecScale 的用户配置 scale-id\n */\n scale: string;\n /**\n * 指定参与映射的数据字段\n */\n field?: string;\n /**\n * 当用户指定 field 后,用该属性来控制值域。\n * @default 'none'\n */\n changeDomain?: 'none' | 'replace' | 'expand';\n}\n\nexport type FunctionType<T> = (\n datum: Datum,\n context: IModelMarkAttributeContext,\n opt?: IAttributeOpt,\n source?: DataView\n) => T;\nexport type ValueType<T> = T;\nexport type VisualType<T> = ValueType<T> | FunctionType<T> | IVisual<unknown, T>;\n\nexport type TextureType =\n | 'circle'\n | 'dimond'\n | 'rect'\n | 'vertical-line'\n | 'horizontal-line'\n | 'bias-lr'\n | 'bias-rl'\n | 'grid';\n\n/**\n * style格式转换\n */\nexport type ConvertToMarkStyleSpec<T extends Record<string, any>> = {\n [key in keyof T]: VisualType<T[key]>;\n};\n\n/**\n * border\n */\n\nexport interface IBorder {\n distance: number | string;\n stroke?: string | IGradient;\n strokeOpacity?: number;\n lineWidth?: number;\n lineDash?: number[];\n lineDashOffset?: number;\n}\n\nexport interface ICommonSpec {\n visible?: boolean;\n x?: number;\n y?: number;\n z?: number;\n stroke?: string | IGradient | IColorKey | false;\n strokeOpacity?: number;\n opacity?: number;\n lineWidth?: number;\n lineDash?: number[];\n lineDashOffset?: number;\n\n cursor?: Cursor;\n zIndex?: number;\n angle?: number;\n anchor?: [number, number];\n\n // 3d旋转的属性\n beta?: number;\n alpha?: number;\n anchor3d?: [number, number];\n\n /**\n * 选择模式,精确模式,粗糙模式(包围盒模式),自定义模式\n */\n pickMode?: 'accurate' | 'imprecise' | 'custom';\n boundsMode?: 'accurate' | 'imprecise';\n\n // 以下是纹理相关的属性\n /**\n * 纹理的类型\n */\n texture?: TextureType | string;\n /**\n * 纹理的颜色\n */\n textureColor?: string;\n /**\n * 纹理单元的大小\n */\n textureSize?: number; // 纹理大小\n /**\n * 纹理之间空隙的大小\n */\n texturePadding?: number;\n\n /**\n * 外边框\n */\n outerBorder?: IBorder;\n /**\n * 内边框\n */\n innerBorder?: IBorder;\n\n [key: string]: any;\n}\n\nexport interface IFillMarkSpec extends ICommonSpec {\n fill?: VisualType<string> | IGradient | false | IColorKey;\n fillOpacity?: number;\n // TODO:waite VRender support this api\n // backgroundMode: number; // 填充模式(与具体图元有关)\n // can coexist with fill\n background?: string | HTMLImageElement | HTMLCanvasElement | null;\n}\n\n// export interface IFillImageMarkSpec {\n// fillImage?: string;\n// repeatX?: RepeatXYType;\n// repeatY?: RepeatXYType;\n// imageOrigin?: ImageOriginType;\n// }\n\nexport interface ISymbolMarkSpec extends IFillMarkSpec {\n dx?: number;\n dy?: number;\n size?: number | number[];\n /** 对外声明使用shape,vrender图形属性对应的是shape */\n shape?: ShapeType | string;\n /** FIXME: vrender Symbol接收的图形属性,暂时都申明一下 */\n symbolType?: ShapeType | string;\n scaleX?: number;\n scaleY?: number;\n}\n\n// lineMark 和 areaMark 共同配置\nexport interface ILineLikeMarkSpec extends IFillMarkSpec {\n curveType?: InterpolateType;\n defined?: boolean;\n /**\n * @private 一个标志位,用于通知 VGrammar 是否执行 getLineSegmentConfigs 方法\n */\n enableSegments?: boolean;\n}\n\nexport interface IAreaMarkSpec extends ILineLikeMarkSpec {\n x1?: number;\n y1?: number;\n\n orient?: 'horizontal' | 'vertical';\n}\n\nexport interface ILineMarkSpec extends ILineLikeMarkSpec {\n lineCap?: LineStrokeCap;\n lineJoin?: LineStrokeJoin;\n miterLimit?: number;\n strokeBoundsBuffer?: number;\n}\n\nexport interface IRuleMarkSpec extends ILineMarkSpec {\n x1?: number;\n y1?: number;\n}\n\nexport interface ITextMarkSpec extends IFillMarkSpec {\n /**\n * 文字内容\n */\n text?: StringOrNumber | string[];\n /**\n * x 方向偏移\n */\n dx?: number;\n /**\n * y 方向偏移\n */\n dy?: number;\n /**\n * 字号\n */\n fontSize?: number;\n /**\n * 文字对齐方式\n */\n textAlign?: TextAlign;\n /**\n * 文字居中方式\n */\n textBaseline?: TextBaseLine;\n /**\n * 字体\n */\n fontFamily?: string;\n /**\n * 字重\n */\n fontWeight?: FontWeight;\n /**\n * 字体样式\n */\n fontStyle?: FontStyle;\n /**\n * 文字的最大长度\n */\n maxLineWidth?: number;\n /**\n * 文字超出 maxLineWidth 后的省略符\n */\n ellipsis?: string;\n // TODO: 这些不是常规的文字mark属性,待确认需求背景\n lineBreak?: string;\n /**\n * 下划线\n */\n underline?: boolean;\n /**\n * 中划线\n */\n lineThrough?: boolean;\n /**\n * 行高(1.3.1 版本新增字符串类型表示比例值,如\"150%\")\n * @since 1.3.1\n */\n lineHeight?: number | string;\n /**\n * poptip 相关配置\n */\n poptip?: PopTipAttributes;\n}\n\nexport type IPositionedTextMarkSpec = Omit<ITextMarkSpec, 'align' | 'textAlign' | 'baseline' | 'textBaseline'>;\n\nexport interface IRectMarkSpec extends IFillMarkSpec {\n /**\n * 圆角配置。\n * 1. 如果传入数值,则统一为四个角设置圆角\n * 2. 如果传入数组,则分别为 [上左, 上右, 下右, 下左]\n */\n cornerRadius?: number | number[];\n width?: number;\n height?: number;\n x1?: number;\n y1?: number;\n}\n\n// 3d rect,支持length表示长宽高中的长属性(深度属性)\nexport interface IRect3dMarkSpec extends IRectMarkSpec {\n length?: number;\n}\n\nexport interface IBoxPlotMarkSpec extends ICommonSpec {\n /**\n * box描边宽度\n */\n lineWidth?: number;\n /**\n * box宽度\n */\n boxWidth?: number;\n /**\n * 最大最小值宽度\n */\n shaftWidth?: number;\n /**\n * 中轴线类型\n */\n shaftShape?: BoxPlotShaftShape;\n /**\n * 盒子填充颜色,为空则不填充\n */\n boxFill?: string;\n // /**\n // * 描边颜色\n // */\n // stroke?: string;\n /**\n * 中轴线透明度,仅当shaftType=bar时生效\n */\n shaftFillOpacity?: number;\n\n min?: (datum: Datum) => number;\n q1?: (datum: Datum) => number;\n median?: (datum: Datum) => number;\n q3?: (datum: Datum) => number;\n max?: (datum: Datum) => number;\n}\n\nexport interface IOutlierMarkSpec {\n //异常点填充颜色\n fill?: string;\n //异常点大小\n size?: number;\n}\n\nexport interface IPathMarkSpec extends IFillMarkSpec {\n path?: string;\n scaleX?: number;\n scaleY?: number;\n scaleCenter?: { x: number; y: number };\n // TODO: 该属性后续可能会删除,未定\n // 平滑缩放,不然会发生跳变,在地图交互场景需要配置为true;常规path缩放不需要\n smoothScale?: boolean;\n}\n\nexport interface ILinkPathMarkSpec extends IFillMarkSpec {\n x0?: number;\n y0?: number;\n x1?: number;\n y1?: number;\n thickness?: number;\n curvature?: number;\n /** round all the coordinates */\n round?: boolean;\n /** the ratio of normal style path */\n ratio?: number;\n align?: 'start' | 'end' | 'center';\n pathType?: 'line' | 'smooth' | 'polyline';\n endArrow?: boolean;\n startArrow?: boolean;\n backgroundStyle?: any;\n direction?: 'horizontal' | 'vertical' | 'LR' | 'RL' | 'TB' | 'BL' | 'radial';\n}\n\nexport interface IArcMarkSpec extends IFillMarkSpec {\n startAngle?: number;\n endAngle?: number;\n padAngle?: number;\n\n outerRadius?: number;\n innerRadius?: number;\n cornerRadius?: number;\n\n /** arc的中心点偏移距离 */\n centerOffset?: number;\n\n /** arc 的 roundCap 属性,即圆角是否伸出 startAngle 和 endAngle 之外 */\n cap?: boolean | [boolean, boolean];\n /** arc 在 roundCap 打开且应用环形渐变时是否对 cap 部分生效 */\n autoCapConical?: boolean;\n}\n\n// 3d arc,有高度配置\nexport interface IArc3dMarkSpec extends IArcMarkSpec {\n height?: number;\n}\n\nexport interface IProgressArcMarkSpec extends IArcMarkSpec {\n /** 进度条内侧 padding(接受负值) */\n innerPadding?: number;\n /** 进度条外侧 padding(接受负值) */\n outerPadding?: number;\n}\n\nexport interface ICellMarkSpec extends ISymbolMarkSpec {\n padding?: number | number[] | IPadding;\n}\n\nexport interface IGroupMarkSpec extends IFillMarkSpec {\n clip?: boolean;\n width?: number;\n height?: number;\n /**\n * 圆角配置。\n * 1. 如果传入数值,则统一为四个角设置圆角\n * 2. 如果传入数组,则分别为 [上左, 上右, 下右, 下左]\n */\n cornerRadius?: number | number[];\n}\n\nexport interface IPolygonMarkSpec extends ICommonSpec, IFillMarkSpec {\n points?: IPoint[];\n /**\n * 圆角配置,支持数组配置,数组的顺序同组成 polygon 的顺序对应\n */\n cornerRadius?: number | number[];\n scaleX?: number;\n scaleY?: number;\n}\n\nexport interface IPyramid3dMarkSpec extends IPolygonMarkSpec {\n // 只能有4个顶点\n points?: IPoint[];\n}\n\n/**\n * ImageFill\n */\nexport type RepeatType = 'no-repeat' | 'repeat-x' | 'repeat-y' | 'repeat';\nexport type RepeatXYType = 'no-repeat' | 'repeat' | 'stretch';\nexport type ImageOriginType = 'top' | 'bottom';\n\n/**\n * gradient\n */\nexport type GradientPropValue<T> = ValueType<T> | FunctionType<T>;\nexport type GradientStop = {\n offset: GradientPropValue<number>;\n color: GradientPropValue<string>;\n opacity?: number;\n};\nexport interface IGradientLinear {\n x0?: GradientPropValue<number>;\n y0?: GradientPropValue<number>;\n x1?: GradientPropValue<number>;\n y1?: GradientPropValue<number>;\n stops: GradientStop[];\n gradient: 'linear';\n}\n\nexport interface IGradientRadial {\n r0?: GradientPropValue<number>;\n x0?: GradientPropValue<number>;\n y0?: GradientPropValue<number>;\n x1?: GradientPropValue<number>;\n y1?: GradientPropValue<number>;\n r1?: GradientPropValue<number>;\n stops: GradientStop[];\n gradient: 'radial';\n}\n\nexport interface IGradientConical {\n x?: GradientPropValue<number>;\n y?: GradientPropValue<number>;\n startAngle?: GradientPropValue<number>;\n endAngle?: GradientPropValue<number>;\n stops: GradientStop[];\n gradient: 'conical';\n}\n\nexport type GradientType = 'linear' | 'radial' | 'conical';\nexport type IGradient = IGradientLinear | IGradientRadial | IGradientConical;\n\nexport type LineStrokeCap = 'butt' | 'round' | 'square';\nexport type LineStrokeJoin = 'arcs' | 'bevel' | 'miter' | 'miter-clip' | 'round';\n\nexport type BoxPlotShaftShape = 'line' | 'bar';\n/**\n * threshold\n */\nexport interface IThresholdStyle extends IVisualSpecStyle<number, string> {\n domain: number[];\n field: string;\n range: string[];\n type: 'threshold';\n}\n\n// FIXME: For some tool methods that need to use common configuration types\nexport interface IUnknownMarkSpec extends ICommonSpec {\n [key: string]: unknown;\n}\n\nexport interface IImageMarkSpec extends IFillMarkSpec {\n /**\n * 圆角配置。\n * 1. 如果传入数值,则统一为四个角设置圆角\n * 2. 如果传入数组,则分别为 [上左, 上右, 下右, 下左]\n */\n cornerRadius?: number | number[];\n width?: number;\n height?: number;\n repeatX?: IRepeatType;\n repeatY?: IRepeatType;\n image: string | HTMLImageElement | HTMLCanvasElement;\n}\n\n/**\n * text\n */\nexport type TextAlign = TextAlignType;\nexport type TextBaseLine = TextBaselineType;\nexport type FontStyle = 'normal' | 'italic' | 'oblique' | string;\nexport type FontWeight = 'normal' | 'bold' | 'lighter' | 'bolder' | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/util/data.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,WAAW,CACzB,YAGG,EACH,WAGG;IAKH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC3C,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,EAAE;YACZ,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAC5B;aAAM;YACL,OAAO,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SAClF;KACF;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,UAAU,CACjB,IAGG,EACH,QAAgB;IAEhB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC;AAC5C,CAAC;AAGD,MAAM,UAAU,aAAa,CAAC,QAAkB,EAAE,KAAa;;IAC7D,IAAI,CAAC,QAAQ,EAAE;QACb,OAAO,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,IAAI,CAAC;KACtB;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;IACpC,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,IAAI,CAAC;KACtB;IACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QAClB,OAAO,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,IAAI,CAAC;KACtB;IACD,OAAO,MAAA,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,mCAAI,KAAK,CAAC;AACtC,CAAC","file":"data.js","sourcesContent":["import type { DataView } from '@visactor/vdataset';\nimport type { StatisticOperations } from '../data/transforms/dimension-statistics';\nimport type { IFieldsMeta } from '../typings/spec/common';\n\nexport function mergeFields(\n targetFields: {\n key: string;\n operations: StatisticOperations;\n }[],\n mergeFields: {\n key: string;\n operations: StatisticOperations;\n }[]\n): {\n key: string;\n operations: StatisticOperations;\n}[] {\n for (let i = 0; i < mergeFields.length; i++) {\n const element = mergeFields[i];\n const _target = findFields(targetFields, element.key);\n if (!_target) {\n targetFields.push(element);\n } else {\n _target.operations = [...new Set(_target.operations.concat(element.operations))];\n }\n }\n return targetFields;\n}\n\nfunction findFields(\n list: {\n key: string;\n operations: StatisticOperations;\n }[],\n fieldKey: string\n) {\n return list.find(i => i.key === fieldKey);\n}\n\n// 如果不存在别名就返回 field\nexport function getFieldAlias(dataView: DataView, field: string) {\n if (!dataView) {\n return field ?? null;\n }\n const fields = dataView.getFields();\n if (!fields) {\n return field ?? null;\n }\n if (!fields[field]) {\n return field ?? null;\n }\n return fields[field].alias ?? field;\n}\n"]}
1
+ {"version":3,"sources":["../src/util/data.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,WAAW,CACzB,YAGG,EACH,WAGG;IAKH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC3C,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,EAAE;YACZ,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAC5B;aAAM;YACL,OAAO,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SAClF;KACF;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,UAAU,CACjB,IAGG,EACH,QAAgB;IAEhB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC;AAC5C,CAAC;AAGD,MAAM,UAAU,aAAa,CAAC,QAAkB,EAAE,KAAa;;IAC7D,IAAI,CAAC,QAAQ,EAAE;QACb,OAAO,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,IAAI,CAAC;KACtB;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;IACpC,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,IAAI,CAAC;KACtB;IACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QAClB,OAAO,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,IAAI,CAAC;KACtB;IACD,OAAO,MAAA,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,mCAAI,KAAK,CAAC;AACtC,CAAC","file":"data.js","sourcesContent":["import type { DataView } from '@visactor/vdataset';\nimport type { StatisticOperations } from '../data/transforms/dimension-statistics';\n\nexport function mergeFields(\n targetFields: {\n key: string;\n operations: StatisticOperations;\n }[],\n mergeFields: {\n key: string;\n operations: StatisticOperations;\n }[]\n): {\n key: string;\n operations: StatisticOperations;\n}[] {\n for (let i = 0; i < mergeFields.length; i++) {\n const element = mergeFields[i];\n const _target = findFields(targetFields, element.key);\n if (!_target) {\n targetFields.push(element);\n } else {\n _target.operations = [...new Set(_target.operations.concat(element.operations))];\n }\n }\n return targetFields;\n}\n\nfunction findFields(\n list: {\n key: string;\n operations: StatisticOperations;\n }[],\n fieldKey: string\n) {\n return list.find(i => i.key === fieldKey);\n}\n\n// 如果不存在别名就返回 field\nexport function getFieldAlias(dataView: DataView, field: string) {\n if (!dataView) {\n return field ?? null;\n }\n const fields = dataView.getFields();\n if (!fields) {\n return field ?? null;\n }\n if (!fields[field]) {\n return field ?? null;\n }\n return fields[field].alias ?? field;\n}\n"]}
package/esm/util/env.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export const isBrowser = "undefined" != typeof window && void 0 !== window.document;
2
2
 
3
- export const domDocument = isBrowser && globalThis.document;
3
+ export const domDocument = isBrowser ? globalThis.document : void 0;
4
4
 
5
5
  export function isTrueBrowser(mode) {
6
6
  return ("desktop-browser" === mode || "mobile-browser" === mode) && isBrowser;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/util/env.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,WAAW,CAAC;AACjG,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,IAAI,UAAU,CAAC,QAAQ,CAAC;AAG5D,MAAM,UAAU,aAAa,CAAC,IAAgB;IAC5C,OAAO,CAAC,IAAI,KAAK,iBAAiB,IAAI,IAAI,KAAK,gBAAgB,CAAC,IAAI,SAAS,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAgB;IAC3C,OAAO,IAAI,KAAK,iBAAiB,IAAI,IAAI,KAAK,iBAAiB,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAgB;IAC/C,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,gBAAgB,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAgB;IAChD,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,KAAK,MAAM,CAAC;AACrD,CAAC","file":"env.js","sourcesContent":["import type { RenderMode } from '../typings/spec';\n\nexport const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\nexport const domDocument = isBrowser && globalThis.document;\n\n// Taro 会模拟实现 DOM,所以还是加上 mode 的判断\nexport function isTrueBrowser(mode: RenderMode): boolean {\n return (mode === 'desktop-browser' || mode === 'mobile-browser') && isBrowser;\n}\n\nexport function isPcLikeMode(mode: RenderMode) {\n return mode === 'desktop-miniApp' || mode === 'desktop-browser';\n}\n\nexport function isMobileLikeMode(mode: RenderMode) {\n return mode === 'miniApp' || mode === 'mobile-browser';\n}\n\nexport function isMiniAppLikeMode(mode: RenderMode) {\n return mode.includes('miniApp') || mode === 'lynx';\n}\n"]}
1
+ {"version":3,"sources":["../src/util/env.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,WAAW,CAAC;AACjG,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AAGvE,MAAM,UAAU,aAAa,CAAC,IAAgB;IAC5C,OAAO,CAAC,IAAI,KAAK,iBAAiB,IAAI,IAAI,KAAK,gBAAgB,CAAC,IAAI,SAAS,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAgB;IAC3C,OAAO,IAAI,KAAK,iBAAiB,IAAI,IAAI,KAAK,iBAAiB,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAgB;IAC/C,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,gBAAgB,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAgB;IAChD,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,KAAK,MAAM,CAAC;AACrD,CAAC","file":"env.js","sourcesContent":["import type { RenderMode } from '../typings/spec';\n\nexport const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\nexport const domDocument = isBrowser ? globalThis.document : undefined;\n\n// Taro 会模拟实现 DOM,所以还是加上 mode 的判断\nexport function isTrueBrowser(mode: RenderMode): boolean {\n return (mode === 'desktop-browser' || mode === 'mobile-browser') && isBrowser;\n}\n\nexport function isPcLikeMode(mode: RenderMode) {\n return mode === 'desktop-miniApp' || mode === 'desktop-browser';\n}\n\nexport function isMobileLikeMode(mode: RenderMode) {\n return mode === 'miniApp' || mode === 'mobile-browser';\n}\n\nexport function isMiniAppLikeMode(mode: RenderMode) {\n return mode.includes('miniApp') || mode === 'lynx';\n}\n"]}
@@ -1,26 +1,16 @@
1
- import { isNumberClose, isGreater, isLess } from '@visactor/vutils';
2
1
  import type { IBoundsLike } from '@visactor/vutils';
3
- import type { IPoint, IPolarPoint, Quadrant, TextAlign } from '../typings';
2
+ import type { IPoint, IPolarPoint, Quadrant } from '../typings';
3
+ import { isNumberClose, isGreater, isLess } from '@visactor/vutils';
4
+ import { normalizeAngle, angleLabelOrientAttribute } from '@visactor/vutils-extension';
4
5
  export declare const isClose: typeof isNumberClose;
5
- export { isGreater, isLess };
6
- export declare function normalizeAngle(angle: number): number;
7
- export declare const radians: (angle?: number) => number;
8
- export declare const degrees: (angle?: number) => number;
6
+ export { isGreater, isLess, normalizeAngle, angleLabelOrientAttribute };
9
7
  export declare function polarToCartesian(point: IPolarPoint): IPoint;
10
- export declare function circlePoint(x0: number, y0: number, radius: number, radian: number): IPoint;
11
- export declare function arcConnectLength(radius: number, radian: number): number;
12
- export declare function lineCirclePoints(a: number, b: number, c: number, x0: number, y0: number, r: number): IPoint[];
13
- export declare function connectLineRadian(radius: number, length: number): number;
14
8
  export declare function computeQuadrant(angle: number): Quadrant;
15
9
  export declare function normalizeStartEndAngle(start: number | null, end: number | null): {
16
10
  startAngle: number;
17
11
  endAngle: number;
18
12
  };
19
- export declare function isQuadrantLeft(quadrant: Quadrant): boolean;
20
- export declare function isQuadrantRight(quadrant: Quadrant): boolean;
21
- export declare function checkBoundsOverlap(boundsA: IBoundsLike, boundsB: IBoundsLike): boolean;
22
13
  export declare function outOfBounds(bounds: IBoundsLike, x: number, y: number): boolean;
23
- export declare function insideBounds(bounds: IBoundsLike, x: number, y: number): boolean;
24
14
  export declare function min(data: any[], field?: string): number;
25
15
  export declare function max(data: any[], field?: string): number;
26
16
  export declare function sum(data: any[], field?: string): number;
@@ -29,12 +19,8 @@ export declare function variance(data: any[], field?: string): number;
29
19
  export declare function standardDeviation(data: any[], field?: string): number;
30
20
  export declare function median(data: any[], field?: string): number;
31
21
  export declare function regression(data: any[], fieldX?: string, fieldY?: string): any[];
32
- export declare function angleLabelOrientAttribute(angle: number): {
33
- align: TextAlign;
34
- baseline: "top" | "bottom" | "middle";
35
- };
36
22
  export declare function radiusLabelOrientAttribute(angle: number): {
37
- align: TextAlign;
23
+ align: "left" | "right" | "center";
38
24
  baseline: "top" | "bottom" | "middle";
39
25
  };
40
26
  export declare function vectorAngle(v1: IPoint, v2: IPoint): number;