@visactor/vchart 1.3.1-test.6 → 1.3.2

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 (317) hide show
  1. package/build/es5/index.js +15 -0
  2. package/build/index.js +2441 -3399
  3. package/build/index.min.js +2 -2
  4. package/build/tsconfig.tsbuildinfo +1 -0
  5. package/cjs/chart/base-chart.js +29 -24
  6. package/cjs/chart/base-chart.js.map +1 -1
  7. package/cjs/chart/common/common.d.ts +2 -0
  8. package/cjs/chart/common/common.js +15 -1
  9. package/cjs/chart/common/common.js.map +1 -1
  10. package/cjs/chart/polar/polar.js +2 -2
  11. package/cjs/chart/polar/polar.js.map +1 -1
  12. package/cjs/compile/mark/compilable-mark.d.ts +5 -0
  13. package/cjs/compile/mark/compilable-mark.js +18 -4
  14. package/cjs/compile/mark/compilable-mark.js.map +1 -1
  15. package/cjs/compile/mark/interface.d.ts +1 -0
  16. package/cjs/compile/mark/interface.js.map +1 -1
  17. package/cjs/component/axis/base-axis.js +5 -5
  18. package/cjs/component/axis/base-axis.js.map +1 -1
  19. package/cjs/component/axis/cartesian/interface/spec.js.map +1 -1
  20. package/cjs/component/axis/mixin/linear-axis-mixin.js +1 -1
  21. package/cjs/component/axis/mixin/linear-axis-mixin.js.map +1 -1
  22. package/cjs/component/base/base-component.d.ts +0 -1
  23. package/cjs/component/base/base-component.js +2 -6
  24. package/cjs/component/base/base-component.js.map +1 -1
  25. package/cjs/component/crosshair/base.d.ts +1 -1
  26. package/cjs/component/crosshair/base.js +1 -1
  27. package/cjs/component/crosshair/base.js.map +1 -1
  28. package/cjs/component/crosshair/cartesian.d.ts +1 -1
  29. package/cjs/component/crosshair/cartesian.js +2 -2
  30. package/cjs/component/crosshair/cartesian.js.map +1 -1
  31. package/cjs/component/crosshair/interface/spec.d.ts +1 -0
  32. package/cjs/component/crosshair/interface/spec.js.map +1 -1
  33. package/cjs/component/crosshair/polar.d.ts +1 -1
  34. package/cjs/component/crosshair/polar.js +2 -2
  35. package/cjs/component/crosshair/polar.js.map +1 -1
  36. package/cjs/component/data-zoom/constant.d.ts +4 -0
  37. package/cjs/component/data-zoom/constant.js +10 -0
  38. package/cjs/component/data-zoom/constant.js.map +1 -0
  39. package/cjs/component/data-zoom/data-filter-base-component.d.ts +2 -0
  40. package/cjs/component/data-zoom/data-filter-base-component.js +9 -7
  41. package/cjs/component/data-zoom/data-filter-base-component.js.map +1 -1
  42. package/cjs/component/data-zoom/data-zoom/data-zoom.d.ts +1 -0
  43. package/cjs/component/data-zoom/data-zoom/data-zoom.js +19 -3
  44. package/cjs/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
  45. package/cjs/component/data-zoom/data-zoom/interface.d.ts +2 -0
  46. package/cjs/component/data-zoom/data-zoom/interface.js.map +1 -1
  47. package/cjs/component/data-zoom/interface.d.ts +0 -1
  48. package/cjs/component/data-zoom/interface.js.map +1 -1
  49. package/cjs/component/data-zoom/scroll-bar/interface.d.ts +2 -0
  50. package/cjs/component/data-zoom/scroll-bar/interface.js.map +1 -1
  51. package/cjs/component/data-zoom/scroll-bar/scroll-bar.d.ts +2 -0
  52. package/cjs/component/data-zoom/scroll-bar/scroll-bar.js +15 -7
  53. package/cjs/component/data-zoom/scroll-bar/scroll-bar.js.map +1 -1
  54. package/cjs/component/legend/base-legend.d.ts +3 -0
  55. package/cjs/component/legend/base-legend.js +25 -4
  56. package/cjs/component/legend/base-legend.js.map +1 -1
  57. package/cjs/component/legend/discrete/legend.js +4 -3
  58. package/cjs/component/legend/discrete/legend.js.map +1 -1
  59. package/cjs/component/tooltip/handler/utils/common.js +1 -1
  60. package/cjs/component/tooltip/handler/utils/common.js.map +1 -1
  61. package/cjs/component/tooltip/handler/utils/style.js.map +1 -1
  62. package/cjs/component/tooltip/interface/theme.d.ts +1 -1
  63. package/cjs/component/tooltip/interface/theme.js.map +1 -1
  64. package/cjs/component/tooltip/tooltip.js +2 -1
  65. package/cjs/component/tooltip/tooltip.js.map +1 -1
  66. package/cjs/core/index.d.ts +1 -1
  67. package/cjs/core/index.js +1 -1
  68. package/cjs/core/index.js.map +1 -1
  69. package/cjs/core/vchart.d.ts +1 -0
  70. package/cjs/core/vchart.js +18 -10
  71. package/cjs/core/vchart.js.map +1 -1
  72. package/cjs/data/transforms/dimension-data.js +6 -4
  73. package/cjs/data/transforms/dimension-data.js.map +1 -1
  74. package/cjs/data/transforms/dimension-statistics.d.ts +0 -29
  75. package/cjs/data/transforms/dimension-statistics.js +31 -73
  76. package/cjs/data/transforms/dimension-statistics.js.map +1 -1
  77. package/cjs/data/transforms/pie.js +17 -5
  78. package/cjs/data/transforms/pie.js.map +1 -1
  79. package/cjs/data/transforms/waterfall.js +4 -3
  80. package/cjs/data/transforms/waterfall.js.map +1 -1
  81. package/cjs/model/base-model.d.ts +3 -1
  82. package/cjs/model/base-model.js +14 -4
  83. package/cjs/model/base-model.js.map +1 -1
  84. package/cjs/model/interface.d.ts +1 -1
  85. package/cjs/model/interface.js.map +1 -1
  86. package/cjs/region/region.js +8 -2
  87. package/cjs/region/region.js.map +1 -1
  88. package/cjs/series/area/area.js +1 -1
  89. package/cjs/series/area/area.js.map +1 -1
  90. package/cjs/series/base/base-series.d.ts +5 -6
  91. package/cjs/series/base/base-series.js +13 -9
  92. package/cjs/series/base/base-series.js.map +1 -1
  93. package/cjs/series/base/group.d.ts +2 -1
  94. package/cjs/series/base/group.js.map +1 -1
  95. package/cjs/series/cartesian/cartesian.d.ts +2 -1
  96. package/cjs/series/cartesian/cartesian.js +2 -2
  97. package/cjs/series/cartesian/cartesian.js.map +1 -1
  98. package/cjs/series/interface/series.d.ts +2 -3
  99. package/cjs/series/interface/series.js.map +1 -1
  100. package/cjs/series/interface/type.d.ts +1 -0
  101. package/cjs/series/interface/type.js +4 -2
  102. package/cjs/series/interface/type.js.map +1 -1
  103. package/cjs/series/line/line.js +1 -1
  104. package/cjs/series/line/line.js.map +1 -1
  105. package/cjs/series/radar/radar.js +1 -1
  106. package/cjs/series/radar/radar.js.map +1 -1
  107. package/cjs/series/waterfall/waterfall.d.ts +1 -0
  108. package/cjs/series/waterfall/waterfall.js +8 -2
  109. package/cjs/series/waterfall/waterfall.js.map +1 -1
  110. package/cjs/theme/builtin/common/component/data-zoom.js +36 -36
  111. package/cjs/theme/builtin/common/component/data-zoom.js.map +1 -1
  112. package/cjs/theme/builtin/common/component/legend/size-legend.js +4 -4
  113. package/cjs/theme/builtin/common/component/legend/size-legend.js.map +1 -1
  114. package/cjs/theme/builtin/common/component/poptip.js +0 -2
  115. package/cjs/theme/builtin/common/component/poptip.js.map +1 -1
  116. package/cjs/theme/builtin/common/component/title.js.map +1 -1
  117. package/cjs/theme/builtin/common/constants.js +6 -6
  118. package/cjs/theme/builtin/common/constants.js.map +1 -1
  119. package/cjs/theme/builtin/common/legacy/index.d.ts +1 -0
  120. package/cjs/theme/builtin/common/legacy/index.js +21 -0
  121. package/cjs/theme/builtin/common/legacy/index.js.map +1 -0
  122. package/cjs/theme/builtin/common/legacy/legend/color-legend.d.ts +2 -0
  123. package/cjs/theme/builtin/common/legacy/legend/color-legend.js +43 -0
  124. package/cjs/theme/builtin/common/legacy/legend/color-legend.js.map +1 -0
  125. package/cjs/theme/builtin/common/legacy/legend/continuous.d.ts +2 -0
  126. package/cjs/theme/builtin/common/legacy/legend/continuous.js +60 -0
  127. package/cjs/theme/builtin/common/legacy/legend/continuous.js.map +1 -0
  128. package/cjs/theme/builtin/common/legacy/legend/index.d.ts +2 -0
  129. package/cjs/theme/builtin/common/legacy/legend/index.js +24 -0
  130. package/cjs/theme/builtin/common/legacy/legend/index.js.map +1 -0
  131. package/cjs/theme/builtin/common/legacy/legend/size-legend.d.ts +2 -0
  132. package/cjs/theme/builtin/common/legacy/legend/size-legend.js +56 -0
  133. package/cjs/theme/builtin/common/legacy/legend/size-legend.js.map +1 -0
  134. package/cjs/theme/builtin/common/series/treemap.js +1 -1
  135. package/cjs/theme/builtin/common/series/treemap.js.map +1 -1
  136. package/cjs/theme/builtin/dark/index.js +13 -1
  137. package/cjs/theme/builtin/dark/index.js.map +1 -1
  138. package/cjs/theme/builtin/index.d.ts +3 -0
  139. package/cjs/theme/builtin/index.js +10 -3
  140. package/cjs/theme/builtin/index.js.map +1 -1
  141. package/cjs/theme/interface.d.ts +6 -6
  142. package/cjs/theme/interface.js.map +1 -1
  143. package/cjs/theme/theme-manager.d.ts +1 -1
  144. package/cjs/theme/theme-manager.js +3 -7
  145. package/cjs/theme/theme-manager.js.map +1 -1
  146. package/cjs/typings/group.d.ts +8 -0
  147. package/cjs/typings/group.js +6 -0
  148. package/cjs/typings/group.js.map +1 -0
  149. package/cjs/typings/index.d.ts +1 -0
  150. package/cjs/typings/index.js +1 -1
  151. package/cjs/typings/index.js.map +1 -1
  152. package/cjs/typings/visual.d.ts +1 -1
  153. package/cjs/typings/visual.js.map +1 -1
  154. package/cjs/util/spec/preprocess.d.ts +2 -2
  155. package/cjs/util/spec/preprocess.js +11 -6
  156. package/cjs/util/spec/preprocess.js.map +1 -1
  157. package/cjs/util/style.js +1 -1
  158. package/cjs/util/style.js.map +1 -1
  159. package/cjs/util/text.d.ts +2 -2
  160. package/cjs/util/text.js.map +1 -1
  161. package/esm/chart/base-chart.js +30 -24
  162. package/esm/chart/base-chart.js.map +1 -1
  163. package/esm/chart/common/common.d.ts +2 -0
  164. package/esm/chart/common/common.js +16 -0
  165. package/esm/chart/common/common.js.map +1 -1
  166. package/esm/chart/polar/polar.js +3 -1
  167. package/esm/chart/polar/polar.js.map +1 -1
  168. package/esm/compile/mark/compilable-mark.d.ts +5 -0
  169. package/esm/compile/mark/compilable-mark.js +18 -4
  170. package/esm/compile/mark/compilable-mark.js.map +1 -1
  171. package/esm/compile/mark/interface.d.ts +1 -0
  172. package/esm/compile/mark/interface.js.map +1 -1
  173. package/esm/component/axis/base-axis.js +5 -5
  174. package/esm/component/axis/base-axis.js.map +1 -1
  175. package/esm/component/axis/cartesian/interface/spec.js.map +1 -1
  176. package/esm/component/axis/mixin/linear-axis-mixin.js +1 -1
  177. package/esm/component/axis/mixin/linear-axis-mixin.js.map +1 -1
  178. package/esm/component/base/base-component.d.ts +0 -1
  179. package/esm/component/base/base-component.js +1 -7
  180. package/esm/component/base/base-component.js.map +1 -1
  181. package/esm/component/crosshair/base.d.ts +1 -1
  182. package/esm/component/crosshair/base.js +1 -1
  183. package/esm/component/crosshair/base.js.map +1 -1
  184. package/esm/component/crosshair/cartesian.d.ts +1 -1
  185. package/esm/component/crosshair/cartesian.js +2 -2
  186. package/esm/component/crosshair/cartesian.js.map +1 -1
  187. package/esm/component/crosshair/interface/spec.d.ts +1 -0
  188. package/esm/component/crosshair/interface/spec.js.map +1 -1
  189. package/esm/component/crosshair/polar.d.ts +1 -1
  190. package/esm/component/crosshair/polar.js +2 -2
  191. package/esm/component/crosshair/polar.js.map +1 -1
  192. package/esm/component/data-zoom/constant.d.ts +4 -0
  193. package/esm/component/data-zoom/constant.js +6 -0
  194. package/esm/component/data-zoom/constant.js.map +1 -0
  195. package/esm/component/data-zoom/data-filter-base-component.d.ts +2 -0
  196. package/esm/component/data-zoom/data-filter-base-component.js +9 -6
  197. package/esm/component/data-zoom/data-filter-base-component.js.map +1 -1
  198. package/esm/component/data-zoom/data-zoom/data-zoom.d.ts +1 -0
  199. package/esm/component/data-zoom/data-zoom/data-zoom.js +20 -2
  200. package/esm/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
  201. package/esm/component/data-zoom/data-zoom/interface.d.ts +2 -0
  202. package/esm/component/data-zoom/data-zoom/interface.js.map +1 -1
  203. package/esm/component/data-zoom/interface.d.ts +0 -1
  204. package/esm/component/data-zoom/interface.js.map +1 -1
  205. package/esm/component/data-zoom/scroll-bar/interface.d.ts +2 -0
  206. package/esm/component/data-zoom/scroll-bar/interface.js.map +1 -1
  207. package/esm/component/data-zoom/scroll-bar/scroll-bar.d.ts +2 -0
  208. package/esm/component/data-zoom/scroll-bar/scroll-bar.js +16 -6
  209. package/esm/component/data-zoom/scroll-bar/scroll-bar.js.map +1 -1
  210. package/esm/component/legend/base-legend.d.ts +3 -0
  211. package/esm/component/legend/base-legend.js +24 -4
  212. package/esm/component/legend/base-legend.js.map +1 -1
  213. package/esm/component/legend/discrete/legend.js +4 -3
  214. package/esm/component/legend/discrete/legend.js.map +1 -1
  215. package/esm/component/tooltip/handler/utils/common.js +1 -1
  216. package/esm/component/tooltip/handler/utils/common.js.map +1 -1
  217. package/esm/component/tooltip/handler/utils/style.js.map +1 -1
  218. package/esm/component/tooltip/interface/theme.d.ts +1 -1
  219. package/esm/component/tooltip/interface/theme.js.map +1 -1
  220. package/esm/component/tooltip/tooltip.js +1 -1
  221. package/esm/component/tooltip/tooltip.js.map +1 -1
  222. package/esm/core/index.d.ts +1 -1
  223. package/esm/core/index.js +1 -1
  224. package/esm/core/index.js.map +1 -1
  225. package/esm/core/vchart.d.ts +1 -0
  226. package/esm/core/vchart.js +17 -10
  227. package/esm/core/vchart.js.map +1 -1
  228. package/esm/data/transforms/dimension-data.js +6 -4
  229. package/esm/data/transforms/dimension-data.js.map +1 -1
  230. package/esm/data/transforms/dimension-statistics.d.ts +0 -29
  231. package/esm/data/transforms/dimension-statistics.js +28 -69
  232. package/esm/data/transforms/dimension-statistics.js.map +1 -1
  233. package/esm/data/transforms/pie.js +15 -5
  234. package/esm/data/transforms/pie.js.map +1 -1
  235. package/esm/data/transforms/waterfall.js +4 -4
  236. package/esm/data/transforms/waterfall.js.map +1 -1
  237. package/esm/model/base-model.d.ts +3 -1
  238. package/esm/model/base-model.js +14 -5
  239. package/esm/model/base-model.js.map +1 -1
  240. package/esm/model/interface.d.ts +1 -1
  241. package/esm/model/interface.js.map +1 -1
  242. package/esm/region/region.js +9 -1
  243. package/esm/region/region.js.map +1 -1
  244. package/esm/series/area/area.js +1 -1
  245. package/esm/series/area/area.js.map +1 -1
  246. package/esm/series/base/base-series.d.ts +5 -6
  247. package/esm/series/base/base-series.js +13 -10
  248. package/esm/series/base/base-series.js.map +1 -1
  249. package/esm/series/base/group.d.ts +2 -1
  250. package/esm/series/base/group.js.map +1 -1
  251. package/esm/series/cartesian/cartesian.d.ts +2 -1
  252. package/esm/series/cartesian/cartesian.js +2 -2
  253. package/esm/series/cartesian/cartesian.js.map +1 -1
  254. package/esm/series/interface/series.d.ts +2 -3
  255. package/esm/series/interface/series.js.map +1 -1
  256. package/esm/series/interface/type.d.ts +1 -0
  257. package/esm/series/interface/type.js +2 -0
  258. package/esm/series/interface/type.js.map +1 -1
  259. package/esm/series/line/line.js +1 -1
  260. package/esm/series/line/line.js.map +1 -1
  261. package/esm/series/radar/radar.js +1 -1
  262. package/esm/series/radar/radar.js.map +1 -1
  263. package/esm/series/waterfall/waterfall.d.ts +1 -0
  264. package/esm/series/waterfall/waterfall.js +8 -2
  265. package/esm/series/waterfall/waterfall.js.map +1 -1
  266. package/esm/theme/builtin/common/component/data-zoom.js +36 -36
  267. package/esm/theme/builtin/common/component/data-zoom.js.map +1 -1
  268. package/esm/theme/builtin/common/component/legend/size-legend.js +4 -4
  269. package/esm/theme/builtin/common/component/legend/size-legend.js.map +1 -1
  270. package/esm/theme/builtin/common/component/poptip.js +0 -2
  271. package/esm/theme/builtin/common/component/poptip.js.map +1 -1
  272. package/esm/theme/builtin/common/component/title.js.map +1 -1
  273. package/esm/theme/builtin/common/constants.js +6 -6
  274. package/esm/theme/builtin/common/constants.js.map +1 -1
  275. package/esm/theme/builtin/common/legacy/index.d.ts +1 -0
  276. package/esm/theme/builtin/common/legacy/index.js +2 -0
  277. package/esm/theme/builtin/common/legacy/index.js.map +1 -0
  278. package/esm/theme/builtin/common/legacy/legend/color-legend.d.ts +2 -0
  279. package/esm/theme/builtin/common/legacy/legend/color-legend.js +39 -0
  280. package/esm/theme/builtin/common/legacy/legend/color-legend.js.map +1 -0
  281. package/esm/theme/builtin/common/legacy/legend/continuous.d.ts +2 -0
  282. package/esm/theme/builtin/common/legacy/legend/continuous.js +54 -0
  283. package/esm/theme/builtin/common/legacy/legend/continuous.js.map +1 -0
  284. package/esm/theme/builtin/common/legacy/legend/index.d.ts +2 -0
  285. package/esm/theme/builtin/common/legacy/legend/index.js +4 -0
  286. package/esm/theme/builtin/common/legacy/legend/index.js.map +1 -0
  287. package/esm/theme/builtin/common/legacy/legend/size-legend.d.ts +2 -0
  288. package/esm/theme/builtin/common/legacy/legend/size-legend.js +54 -0
  289. package/esm/theme/builtin/common/legacy/legend/size-legend.js.map +1 -0
  290. package/esm/theme/builtin/common/series/treemap.js +1 -1
  291. package/esm/theme/builtin/common/series/treemap.js.map +1 -1
  292. package/esm/theme/builtin/dark/index.js +13 -1
  293. package/esm/theme/builtin/dark/index.js.map +1 -1
  294. package/esm/theme/builtin/index.d.ts +3 -0
  295. package/esm/theme/builtin/index.js +12 -0
  296. package/esm/theme/builtin/index.js.map +1 -1
  297. package/esm/theme/interface.d.ts +6 -6
  298. package/esm/theme/interface.js.map +1 -1
  299. package/esm/theme/theme-manager.d.ts +1 -1
  300. package/esm/theme/theme-manager.js +3 -9
  301. package/esm/theme/theme-manager.js.map +1 -1
  302. package/esm/typings/group.d.ts +8 -0
  303. package/esm/typings/group.js +2 -0
  304. package/esm/typings/group.js.map +1 -0
  305. package/esm/typings/index.d.ts +1 -0
  306. package/esm/typings/index.js +2 -0
  307. package/esm/typings/index.js.map +1 -1
  308. package/esm/typings/visual.d.ts +1 -1
  309. package/esm/typings/visual.js.map +1 -1
  310. package/esm/util/spec/preprocess.d.ts +2 -2
  311. package/esm/util/spec/preprocess.js +12 -5
  312. package/esm/util/spec/preprocess.js.map +1 -1
  313. package/esm/util/style.js +1 -1
  314. package/esm/util/style.js.map +1 -1
  315. package/esm/util/text.d.ts +2 -2
  316. package/esm/util/text.js.map +1 -1
  317. package/package.json +37 -37
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/theme/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { ILayoutPaddingSpec } from '../model/interface';\nimport type { ISeriesTheme } from '../series/interface';\nimport type { IMarkTheme } from '../typings/spec';\nimport type {\n IArcMarkSpec,\n IAreaMarkSpec,\n ILineMarkSpec,\n IRectMarkSpec,\n ISymbolMarkSpec,\n ITextMarkSpec,\n IPathMarkSpec\n} from '../typings';\nimport type { MarkTypeEnum } from '../mark/interface';\nimport type { IColorKey, IThemeColorScheme } from './color-scheme/interface';\nimport type { IGradientColor } from '@visactor/vrender';\nimport type { IComponentTheme } from '../component/interface';\n\nexport interface ITheme {\n /**\n * 第 1 种配置:主题信息\n */\n /** 主题命名 */\n name?: string;\n\n /**\n * 第 2 种配置:图表层级的样式属性\n */\n /** 图表背景色 */\n background?: string | IGradientColor | IColorKey;\n /** 图表内边距 */\n padding?: ILayoutPaddingSpec;\n /** 图表字体配置 */\n fontFamily?: string;\n\n /**\n * 第 3 种配置:色板\n */\n /** 全局色板 */\n colorScheme?: IThemeColorScheme;\n\n /**\n * 第 4 种配置:全局 mark 属性配置\n */\n /** 全局 mark 样式属性,按 mark 类别索引 */\n mark?: IGlobalMarkThemeByType;\n /** 全局 mark 样式属性,按 mark 名称索引,优先级更高 */\n markByName?: IGlobalMarkThemeByName;\n\n /**\n * 第 5 种配置:系列属性配置\n */\n /** 系列样式属性 */\n series?: ISeriesTheme;\n /**\n * 自动关闭动画的阀值,对应的是单系列data的长度\n */\n animationThreshold?: number;\n\n /**\n * 第 6 种配置:组件属性配置\n */\n /** 组件样式属性 */\n component?: IComponentTheme;\n}\n\nexport interface IGlobalMarkThemeByType {\n [MarkTypeEnum.line]?: Partial<IMarkTheme<ILineMarkSpec>>;\n [MarkTypeEnum.symbol]?: Partial<IMarkTheme<ISymbolMarkSpec>>;\n [MarkTypeEnum.area]?: Partial<IMarkTheme<IAreaMarkSpec>>;\n [MarkTypeEnum.rect]?: Partial<IMarkTheme<IRectMarkSpec>>;\n [MarkTypeEnum.arc]?: Partial<IMarkTheme<IArcMarkSpec>>;\n [MarkTypeEnum.text]?: Partial<IMarkTheme<ITextMarkSpec>>;\n [MarkTypeEnum.path]?: Partial<IMarkTheme<IPathMarkSpec>>;\n}\n\nexport interface IGlobalMarkThemeByName {\n /** used in lineSeries, areaSeries, radarSeries, etc. */\n line?: Partial<IMarkTheme<ILineMarkSpec>>;\n /** used in lineSeries, areaSeries, radarSeries, scatterSeries etc. */\n point?: Partial<IMarkTheme<ISymbolMarkSpec>>;\n /** used in lineSeries, areaSeries, radarSeries, etc. */\n area?: Partial<IMarkTheme<IAreaMarkSpec>>;\n /** used in barSeries, rangeColumnSeries etc. */\n bar?: Partial<IMarkTheme<IRectMarkSpec>>;\n /** used in many series */\n label?: Partial<IMarkTheme<ITextMarkSpec>>;\n\n [markName: string]: Partial<IMarkTheme<any>>;\n}\n\nexport interface IThemeConstants {\n /** 默认字体 */\n defaultFontFamily: string;\n /** 默认字号 */\n defaultFontSize: number;\n\n /** 1级字阶字号,用于:环形图中间数值 / 展示型数值 */\n l1FontSize: number;\n /** 1级字阶行高 */\n l1LineHeight: number;\n\n /** 2级字阶字号,用于:展示型文字 / 指标卡数值 */\n l2FontSize: number;\n /** 2级字阶行高 */\n l2LineHeight: number;\n\n /** 3级字阶字号,用于:图表标题 */\n l3FontSize: number;\n /** 3级字阶行高 */\n l3LineHeight: number;\n\n /** 4级字阶字号,用于:数据标签、tooltip */\n l4FontSize: number;\n /** 4级字阶行高 */\n l4LineHeight: number;\n\n /** 5级字阶字号,用于:坐标轴标题、轴标签、图例文字 */\n l5FontSize: number;\n /** 5级字阶行高 */\n l5LineHeight: number;\n\n /** 6级字阶字号,用于:地图标签 */\n l6FontSize: number;\n /** 6级字阶行高 */\n l6LineHeight: number;\n\n /** 轴 tick 长度 */\n axisTickSize: number;\n\n /** 面积图元透明度 */\n areaOpacity: number;\n}\n"]}
1
+ {"version":3,"sources":["../src/theme/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { ILayoutPaddingSpec } from '../model/interface';\nimport type { ISeriesTheme } from '../series/interface';\nimport type { IMarkTheme } from '../typings/spec';\nimport type {\n IArcMarkSpec,\n IAreaMarkSpec,\n ILineMarkSpec,\n IRectMarkSpec,\n ISymbolMarkSpec,\n ITextMarkSpec,\n IPathMarkSpec\n} from '../typings';\nimport type { MarkTypeEnum } from '../mark/interface';\nimport type { IColorKey, IThemeColorScheme } from './color-scheme/interface';\nimport type { IGradientColor } from '@visactor/vrender';\nimport type { IComponentTheme } from '../component/interface';\n\nexport interface ITheme {\n /**\n * 第 1 种配置:主题信息\n */\n /** 主题命名 */\n name?: string;\n\n /**\n * 第 2 种配置:图表层级的样式属性\n */\n /** 图表背景色 */\n background?: string | IGradientColor | IColorKey;\n /** 图表内边距 */\n padding?: ILayoutPaddingSpec;\n /** 图表字体配置 */\n fontFamily?: string;\n\n /**\n * 第 3 种配置:色板\n */\n /** 全局色板 */\n colorScheme?: IThemeColorScheme;\n\n /**\n * 第 4 种配置:全局 mark 属性配置\n */\n /** 全局 mark 样式属性,按 mark 类别索引 */\n mark?: IGlobalMarkThemeByType;\n /** 全局 mark 样式属性,按 mark 名称索引,优先级更高 */\n markByName?: IGlobalMarkThemeByName;\n\n /**\n * 第 5 种配置:系列属性配置\n */\n /** 系列样式属性 */\n series?: ISeriesTheme;\n /**\n * 自动关闭动画的阀值,对应的是单系列data的长度\n */\n animationThreshold?: number;\n\n /**\n * 第 6 种配置:组件属性配置\n */\n /** 组件样式属性 */\n component?: IComponentTheme;\n}\n\nexport interface IGlobalMarkThemeByType {\n [MarkTypeEnum.line]?: Partial<IMarkTheme<ILineMarkSpec>>;\n [MarkTypeEnum.symbol]?: Partial<IMarkTheme<ISymbolMarkSpec>>;\n [MarkTypeEnum.area]?: Partial<IMarkTheme<IAreaMarkSpec>>;\n [MarkTypeEnum.rect]?: Partial<IMarkTheme<IRectMarkSpec>>;\n [MarkTypeEnum.arc]?: Partial<IMarkTheme<IArcMarkSpec>>;\n [MarkTypeEnum.text]?: Partial<IMarkTheme<ITextMarkSpec>>;\n [MarkTypeEnum.path]?: Partial<IMarkTheme<IPathMarkSpec>>;\n}\n\nexport interface IGlobalMarkThemeByName {\n /** used in lineSeries, areaSeries, radarSeries, etc. */\n line?: Partial<IMarkTheme<ILineMarkSpec>>;\n /** used in lineSeries, areaSeries, radarSeries, scatterSeries etc. */\n point?: Partial<IMarkTheme<ISymbolMarkSpec>>;\n /** used in lineSeries, areaSeries, radarSeries, etc. */\n area?: Partial<IMarkTheme<IAreaMarkSpec>>;\n /** used in barSeries, rangeColumnSeries etc. */\n bar?: Partial<IMarkTheme<IRectMarkSpec>>;\n /** used in many series */\n label?: Partial<IMarkTheme<ITextMarkSpec>>;\n\n [markName: string]: Partial<IMarkTheme<any>>;\n}\n\nexport interface IThemeConstants {\n /** 默认字体 */\n defaultFontFamily: string;\n /** 默认字号 */\n defaultFontSize: number;\n\n /** 1级字阶字号,用于:环形图中间数值 / 展示型数值 */\n l1FontSize: number;\n /** 1级字阶行高 */\n l1LineHeight: number | string;\n\n /** 2级字阶字号,用于:展示型文字 / 指标卡数值 */\n l2FontSize: number;\n /** 2级字阶行高 */\n l2LineHeight: number | string;\n\n /** 3级字阶字号,用于:图表标题 */\n l3FontSize: number;\n /** 3级字阶行高 */\n l3LineHeight: number | string;\n\n /** 4级字阶字号,用于:数据标签、tooltip */\n l4FontSize: number;\n /** 4级字阶行高 */\n l4LineHeight: number | string;\n\n /** 5级字阶字号,用于:坐标轴标题、轴标签、图例文字 */\n l5FontSize: number;\n /** 5级字阶行高 */\n l5LineHeight: number | string;\n\n /** 6级字阶字号,用于:地图标签 */\n l6FontSize: number;\n /** 6级字阶行高 */\n l6LineHeight: number | string;\n\n /** 轴 tick 长度 */\n axisTickSize: number;\n\n /** 面积图元透明度 */\n areaOpacity: number;\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import type { ITheme } from './interface';
2
2
  export declare class ThemeManager {
3
- static themes: Map<string, ITheme>;
3
+ static readonly themes: Map<string, ITheme>;
4
4
  private static _currentThemeName;
5
5
  static registerTheme(name: string, theme: Partial<ITheme>): void;
6
6
  static getTheme(name: string): ITheme;
@@ -4,11 +4,11 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.ThemeManager = void 0;
6
6
 
7
- const builtin_1 = require("./builtin"), instance_manager_1 = require("../core/instance-manager"), util_1 = require("../util");
7
+ const builtin_1 = require("./builtin"), instance_manager_1 = require("../core/instance-manager");
8
8
 
9
9
  class ThemeManager {
10
10
  static registerTheme(name, theme) {
11
- name && ThemeManager.themes.set(name, (0, util_1.mergeTheme)({}, ThemeManager.getDefaultTheme(), theme));
11
+ name && ThemeManager.themes.set(name, (0, builtin_1.getMergedTheme)(theme));
12
12
  }
13
13
  static getTheme(name) {
14
14
  return ThemeManager.themes.get(name) || ThemeManager.getDefaultTheme();
@@ -33,9 +33,5 @@ class ThemeManager {
33
33
  }
34
34
  }
35
35
 
36
- exports.ThemeManager = ThemeManager, ThemeManager.themes = new Map, ThemeManager._currentThemeName = builtin_1.defaultThemeName,
37
- ThemeManager.registerTheme(builtin_1.defaultThemeName, builtin_1.builtinThemeMap.get(builtin_1.defaultThemeName)),
38
- builtin_1.builtinThemeMap.forEach(((theme, name) => {
39
- name !== builtin_1.defaultThemeName && ThemeManager.registerTheme(name, theme);
40
- }));
36
+ exports.ThemeManager = ThemeManager, ThemeManager.themes = builtin_1.themes, ThemeManager._currentThemeName = builtin_1.defaultThemeName;
41
37
  //# sourceMappingURL=theme-manager.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/theme/theme-manager.ts"],"names":[],"mappings":";;;AAAA,uCAA8D;AAE9D,+DAA2D;AAE3D,kCAAqC;AAErC,MAAa,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,IAAA,iBAAU,EAAC,EAAE,EAAE,YAAY,CAAC,eAAe,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;IACvF,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,0BAAgB,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,kCAAe,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;;AArEH,oCAsEC;AApEQ,mBAAM,GAAwB,IAAI,GAAG,EAAE,CAAC;AAEhC,8BAAiB,GAAW,0BAAgB,CAAC;AAqE9D,YAAY,CAAC,aAAa,CAAC,0BAAgB,EAAE,yBAAe,CAAC,GAAG,CAAC,0BAAgB,CAAC,CAAC,CAAC;AAEpF,yBAAe,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACtC,IAAI,IAAI,KAAK,0BAAgB,EAAE;QAC7B,YAAY,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KACzC;AACH,CAAC,CAAC,CAAC","file":"theme-manager.js","sourcesContent":["import { builtinThemeMap, defaultThemeName } from './builtin';\nimport type { ITheme } from './interface';\nimport { InstanceManager } from '../core/instance-manager';\nimport type { IVChart } from '../core/interface';\nimport { mergeTheme } from '../util';\n\nexport class ThemeManager {\n /** 主题字典 */\n static themes: Map<string, ITheme> = new Map();\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, mergeTheme({}, ThemeManager.getDefaultTheme(), 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\n// 先注册默认主题\nThemeManager.registerTheme(defaultThemeName, builtinThemeMap.get(defaultThemeName));\n// 再注册其他内置主题\nbuiltinThemeMap.forEach((theme, name) => {\n if (name !== defaultThemeName) {\n ThemeManager.registerTheme(name, theme);\n }\n});\n"]}
1
+ {"version":3,"sources":["../src/theme/theme-manager.ts"],"names":[],"mappings":";;;AAAA,uCAAqE;AAErE,+DAA2D;AAG3D,MAAa,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,IAAA,wBAAc,EAAC,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,0BAAgB,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,kCAAe,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;;AArEH,oCAsEC;AApEiB,mBAAM,GAAG,gBAAM,CAAC;AAEjB,8BAAiB,GAAW,0BAAgB,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"]}
@@ -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,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ });
6
+ //# 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,5 +23,5 @@ __exportStar(require("./scale"), exports), __exportStar(require("./line-stroke")
23
23
  __exportStar(require("./space"), exports), __exportStar(require("./coordinate"), exports),
24
24
  __exportStar(require("./tooltip"), exports), __exportStar(require("./params"), exports),
25
25
  __exportStar(require("./visual"), exports), __exportStar(require("./common"), exports),
26
- __exportStar(require("./spec"), exports);
26
+ __exportStar(require("./spec"), exports), __exportStar(require("./group"), exports);
27
27
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/typings/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,yCAAuB;AACvB,gDAA8B;AAC9B,0CAAwB;AACxB,0CAAwB;AACxB,gDAA8B;AAC9B,0CAAwB;AACxB,+CAA6B;AAC7B,4CAA0B;AAC1B,2CAAyB;AACzB,2CAAyB;AACzB,2CAAyB;AACzB,yCAAuB","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,2CAAyB;AACzB,yCAAuB;AACvB,gDAA8B;AAC9B,0CAAwB;AACxB,0CAAwB;AACxB,gDAA8B;AAC9B,0CAAwB;AACxB,+CAA6B;AAC7B,4CAA0B;AAC1B,2CAAyB;AACzB,2CAAyB;AACzB,2CAAyB;AACzB,yCAAuB;AACvB,0CAAwB","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"]}
@@ -127,7 +127,7 @@ export interface ITextMarkSpec extends IFillMarkSpec {
127
127
  lineBreak?: string;
128
128
  underline?: boolean;
129
129
  lineThrough?: boolean;
130
- lineHeight?: number;
130
+ lineHeight?: number | string;
131
131
  poptip?: PopTipAttributes;
132
132
  }
133
133
  export type IPositionedTextMarkSpec = Omit<ITextMarkSpec, 'align' | 'textAlign' | 'baseline' | 'textBaseline'>;
@@ -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 * 行高\n */\n lineHeight?: number;\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 } 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,3 +1,3 @@
1
- import type { SeriesTypeEnum } from '../../series/interface';
1
+ import { type SeriesTypeEnum } from '../../series/interface';
2
2
  import type { IThemeColorScheme } from '../../theme/color-scheme/interface';
3
- export declare function preprocessSpecOrTheme(obj: any, colorScheme?: IThemeColorScheme, seriesType?: SeriesTypeEnum): any;
3
+ export declare function preprocessSpecOrTheme(type: 'spec' | 'theme' | 'mark-spec' | 'mark-theme', obj: any, colorScheme?: IThemeColorScheme, seriesType?: SeriesTypeEnum): any;
@@ -4,19 +4,24 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.preprocessSpecOrTheme = void 0;
6
6
 
7
- const vutils_1 = require("@visactor/vutils"), common_1 = require("./common"), util_1 = require("../../theme/color-scheme/util"), space_1 = require("../space");
7
+ const vutils_1 = require("@visactor/vutils"), interface_1 = require("../../series/interface"), common_1 = require("./common"), util_1 = require("../../theme/color-scheme/util"), space_1 = require("../space");
8
8
 
9
- function preprocessSpecOrTheme(obj, colorScheme, seriesType) {
9
+ function preprocessSpecOrTheme(type, obj, colorScheme, seriesType) {
10
10
  if ((0, vutils_1.isArray)(obj)) return obj.map((element => (0, vutils_1.isObject)(element) && !(0,
11
- vutils_1.isFunction)(element) ? preprocessSpecOrTheme(element, colorScheme, seriesType) : element));
11
+ vutils_1.isFunction)(element) ? preprocessSpecOrTheme(type, element, colorScheme, seriesType) : element));
12
12
  const newObj = {};
13
13
  return Object.keys(obj).forEach((key => {
14
14
  const value = obj[key];
15
15
  if (key.includes("data")) newObj[key] = value; else if ((0, vutils_1.isObject)(value)) {
16
16
  if ((0, vutils_1.isFunction)(value) || (0, common_1.isDataView)(value) || (0, common_1.isHTMLElement)(value)) return void (newObj[key] = value);
17
- (0, util_1.isColorKey)(value) ? newObj[key] = (0, util_1.getActualColor)(value, colorScheme, seriesType) : newObj[key] = "padding" === key ? (0,
18
- space_1.normalizeLayoutPaddingSpec)(value) : preprocessSpecOrTheme(value, colorScheme, seriesType);
19
- } else newObj[key] = value;
17
+ (0, util_1.isColorKey)(value) ? newObj[key] = (0, util_1.getActualColor)(value, colorScheme, seriesType) : newObj[key] = preprocessSpecOrTheme(interface_1.seriesMarkNameSet.has(key) ? type.includes("spec") ? "mark-spec" : "mark-theme" : type, value, colorScheme, seriesType);
18
+ } else if (type.includes("mark") || "padding" !== key) if (!type.includes("theme") && "lineHeight" === key && (0,
19
+ vutils_1.isString)(value) && "%" === value[value.length - 1]) {
20
+ if ((0, vutils_1.isValid)(obj.fontSize)) {
21
+ const scale = Number.parseFloat(value.substring(0, value.length - 1)) / 100, newValue = obj.fontSize * scale;
22
+ (0, vutils_1.isValidNumber)(newValue) && (newObj[key] = newValue);
23
+ }
24
+ } else newObj[key] = value; else newObj[key] = (0, space_1.normalizeLayoutPaddingSpec)(value);
20
25
  })), newObj;
21
26
  }
22
27
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/util/spec/preprocess.ts"],"names":[],"mappings":";;;AAAA,6CAAiE;AAGjE,qCAAqD;AACrD,wDAA2E;AAC3E,oCAAsD;AAGtD,SAAgB,qBAAqB,CAAC,GAAQ,EAAE,WAA+B,EAAE,UAA2B;IAC1G,IAAI,IAAA,gBAAO,EAAC,GAAG,CAAC,EAAE;QAChB,OAAO,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YACvB,IAAI,IAAA,iBAAQ,EAAC,OAAO,CAAC,IAAI,CAAC,IAAA,mBAAU,EAAC,OAAO,CAAC,EAAE;gBAC7C,OAAO,qBAAqB,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;aAChE;YACD,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC,CAAC;KACJ;IAED,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAC7B,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QAEvB,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YACxB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACpB,OAAO;SACR;QACD,IAAI,IAAA,iBAAQ,EAAC,KAAK,CAAC,EAAE;YAEnB,IAAI,IAAA,mBAAU,EAAC,KAAK,CAAC,IAAI,IAAA,mBAAU,EAAC,KAAK,CAAC,IAAI,IAAA,sBAAa,EAAC,KAAK,CAAC,EAAE;gBAClE,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBACpB,OAAO;aACR;YACD,IAAI,IAAA,iBAAU,EAAC,KAAK,CAAC,EAAE;gBAErB,MAAM,CAAC,GAAG,CAAC,GAAG,IAAA,qBAAc,EAAC,KAAK,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;aAC9D;iBAAM,IAAI,GAAG,KAAK,SAAS,EAAE;gBAE5B,MAAM,CAAC,GAAG,CAAC,GAAG,IAAA,kCAA0B,EAAC,KAAK,CAAC,CAAC;aACjD;iBAAM;gBACL,MAAM,CAAC,GAAG,CAAC,GAAG,qBAAqB,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;aACrE;SACF;aAAM;YACL,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;SACrB;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAvCD,sDAuCC","file":"preprocess.js","sourcesContent":["import { isArray, isFunction, isObject } from '@visactor/vutils';\nimport type { SeriesTypeEnum } from '../../series/interface';\nimport type { IThemeColorScheme } from '../../theme/color-scheme/interface';\nimport { isDataView, isHTMLElement } from './common';\nimport { getActualColor, isColorKey } from '../../theme/color-scheme/util';\nimport { normalizeLayoutPaddingSpec } from '../space';\n\n/** 对 spec 或者类 spec 配置(如 theme)进行预处理,如进行语义化颜色的转换等 */\nexport function preprocessSpecOrTheme(obj: any, colorScheme?: IThemeColorScheme, seriesType?: SeriesTypeEnum): any {\n if (isArray(obj)) {\n return obj.map(element => {\n if (isObject(element) && !isFunction(element)) {\n return preprocessSpecOrTheme(element, colorScheme, seriesType);\n }\n return element;\n });\n }\n\n const newObj = {};\n Object.keys(obj).forEach(key => {\n const value = obj[key];\n // 绕过数据\n if (key.includes('data')) {\n newObj[key] = value;\n return;\n }\n if (isObject(value)) {\n // 绕过不可深拷贝的对象\n if (isFunction(value) || isDataView(value) || isHTMLElement(value)) {\n newObj[key] = value;\n return;\n }\n if (isColorKey(value)) {\n // 查询、替换语义化颜色\n newObj[key] = getActualColor(value, colorScheme, seriesType);\n } else if (key === 'padding') {\n // 标准化 padding\n newObj[key] = normalizeLayoutPaddingSpec(value);\n } else {\n newObj[key] = preprocessSpecOrTheme(value, colorScheme, seriesType);\n }\n } else {\n newObj[key] = value;\n }\n });\n\n return newObj;\n}\n"]}
1
+ {"version":3,"sources":["../src/util/spec/preprocess.ts"],"names":[],"mappings":";;;AAAA,6CAAmG;AACnG,sDAAgF;AAEhF,qCAAqD;AACrD,wDAA2E;AAC3E,oCAAsD;AAUtD,SAAgB,qBAAqB,CACnC,IAAmD,EACnD,GAAQ,EACR,WAA+B,EAC/B,UAA2B;IAE3B,IAAI,IAAA,gBAAO,EAAC,GAAG,CAAC,EAAE;QAChB,OAAO,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YACvB,IAAI,IAAA,iBAAQ,EAAC,OAAO,CAAC,IAAI,CAAC,IAAA,mBAAU,EAAC,OAAO,CAAC,EAAE;gBAC7C,OAAO,qBAAqB,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;aACtE;YACD,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC,CAAC;KACJ;IAED,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAC7B,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QAEvB,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YACxB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACpB,OAAO;SACR;QACD,IAAI,IAAA,iBAAQ,EAAC,KAAK,CAAC,EAAE;YAEnB,IAAI,IAAA,mBAAU,EAAC,KAAK,CAAC,IAAI,IAAA,mBAAU,EAAC,KAAK,CAAC,IAAI,IAAA,sBAAa,EAAC,KAAK,CAAC,EAAE;gBAClE,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBACpB,OAAO;aACR;YACD,IAAI,IAAA,iBAAU,EAAC,KAAK,CAAC,EAAE;gBAErB,MAAM,CAAC,GAAG,CAAC,GAAG,IAAA,qBAAc,EAAC,KAAK,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;aAC9D;iBAAM;gBACL,MAAM,CAAC,GAAG,CAAC,GAAG,qBAAqB,CACjC,6BAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,EACxF,KAAK,EACL,WAAW,EACX,UAAU,CACX,CAAC;aACH;SACF;aAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,SAAS,EAAE;YAEtD,MAAM,CAAC,GAAG,CAAC,GAAG,IAAA,kCAA0B,EAAC,KAAK,CAAC,CAAC;SACjD;aAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,GAAG,KAAK,YAAY,IAAI,IAAA,iBAAQ,EAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;YAChH,IAAI,IAAA,gBAAO,EAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;gBAGzB,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;gBAC5E,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACtC,IAAI,IAAA,sBAAa,EAAC,QAAQ,CAAC,EAAE;oBAC3B,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;iBACxB;aACF;SAEF;aAAM;YACL,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;SACrB;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AA5DD,sDA4DC","file":"preprocess.js","sourcesContent":["import { isArray, isFunction, isObject, isString, isValid, isValidNumber } from '@visactor/vutils';\nimport { seriesMarkNameSet, type SeriesTypeEnum } from '../../series/interface';\nimport type { IThemeColorScheme } from '../../theme/color-scheme/interface';\nimport { isDataView, isHTMLElement } from './common';\nimport { getActualColor, isColorKey } from '../../theme/color-scheme/util';\nimport { normalizeLayoutPaddingSpec } from '../space';\n\n/**\n * 对 spec 或者类 spec 配置(如 theme)进行预处理,如进行语义化颜色的转换等\n * @param type 需要转换的对象类型(spec 或者 theme)\n * @param obj 需要转换的对象\n * @param colorScheme 主题色板\n * @param seriesType 当前系列类型\n * @returns\n */\nexport function preprocessSpecOrTheme(\n type: 'spec' | 'theme' | 'mark-spec' | 'mark-theme',\n obj: any,\n colorScheme?: IThemeColorScheme,\n seriesType?: SeriesTypeEnum\n): any {\n if (isArray(obj)) {\n return obj.map(element => {\n if (isObject(element) && !isFunction(element)) {\n return preprocessSpecOrTheme(type, element, colorScheme, seriesType);\n }\n return element;\n });\n }\n\n const newObj = {};\n Object.keys(obj).forEach(key => {\n const value = obj[key];\n // 绕过数据\n if (key.includes('data')) {\n newObj[key] = value;\n return;\n }\n if (isObject(value)) {\n // 绕过不可深拷贝的对象\n if (isFunction(value) || isDataView(value) || isHTMLElement(value)) {\n newObj[key] = value;\n return;\n }\n if (isColorKey(value)) {\n // 查询、替换语义化颜色\n newObj[key] = getActualColor(value, colorScheme, seriesType);\n } else {\n newObj[key] = preprocessSpecOrTheme(\n seriesMarkNameSet.has(key) ? (type.includes('spec') ? 'mark-spec' : 'mark-theme') : type,\n value,\n colorScheme,\n seriesType\n );\n }\n } else if (!type.includes('mark') && key === 'padding') {\n // 标准化 padding\n newObj[key] = normalizeLayoutPaddingSpec(value);\n } else if (!type.includes('theme') && key === 'lineHeight' && isString(value) && value[value.length - 1] === '%') {\n if (isValid(obj.fontSize)) {\n // 处理 lineHeight 的比例值\n // FIXME: vrender 支持行高字符串后删掉这段逻辑\n const scale = Number.parseFloat(value.substring(0, value.length - 1)) / 100;\n const newValue = obj.fontSize * scale;\n if (isValidNumber(newValue)) {\n newObj[key] = newValue;\n }\n }\n // 如果 spec 同级里没有 fontSize 配置,lineHeight 比例值失效\n } else {\n newObj[key] = value;\n }\n });\n\n return newObj;\n}\n"]}
package/cjs/util/style.js CHANGED
@@ -39,7 +39,7 @@ function transformAxisLabelStateStyle(stateStyle) {
39
39
  }
40
40
 
41
41
  function transformToGraphic(style) {
42
- return (0, vutils_1.isEmpty)(style) || style.angle && (style.angle = (0, vutils_1.degreeToRadian)(style.angle)),
42
+ return (null == style ? void 0 : style.angle) && (style.angle = (0, vutils_1.degreeToRadian)(style.angle)),
43
43
  style;
44
44
  }
45
45
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/util/style.ts"],"names":[],"mappings":"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","file":"style.js","sourcesContent":["import { degreeToRadian, isEmpty, isFunction } from '@visactor/vutils';\nimport type { Datum } from '../typings';\nimport type { LegendItemDatum } from '@visactor/vrender-components';\n\n/**\n * 针对一些可以配置状态样式的属性的转换函数,结构如下:\n * { style: {}, state: { hover: {} } }\n * @param cfg\n * @returns\n */\nexport function transformComponentStyle(cfg: any = {}) {\n const newConfig = {\n ...cfg\n };\n\n if (isFunction(cfg.style)) {\n newConfig.style = (item: LegendItemDatum, isSelected: boolean, index: number, allItems: LegendItemDatum[]) =>\n transformToGraphic(cfg.style(item, isSelected, index, allItems));\n } else if (!isEmpty(cfg.style)) {\n newConfig.style = transformToGraphic(cfg.style);\n }\n\n if (!isEmpty(cfg.state)) {\n const newStateStyle = {};\n Object.keys(cfg.state).forEach(key => {\n if (isFunction(cfg.state[key])) {\n newStateStyle[key] = (item: LegendItemDatum, isSelected: boolean, index: number, allItems: LegendItemDatum[]) =>\n transformToGraphic(cfg.state[key](item, isSelected, index, allItems));\n } else if (!isEmpty(cfg.state[key])) {\n newStateStyle[key] = transformToGraphic(cfg.state[key]);\n }\n });\n newConfig.state = newStateStyle;\n }\n\n return newConfig;\n}\n\nexport function transformStateStyle(stateStyle: any) {\n if (isEmpty(stateStyle)) {\n return null;\n }\n const newStateStyle = {};\n Object.keys(stateStyle).forEach(key => {\n if (isFunction(stateStyle[key])) {\n newStateStyle[key] = (value: any, index: number, datum: Datum, data: Datum[]) =>\n transformToGraphic(stateStyle[key](value, index, datum, data));\n } else if (!isEmpty(stateStyle[key])) {\n newStateStyle[key] = transformToGraphic(stateStyle[key]);\n }\n });\n\n return newStateStyle;\n}\n\nexport function transformAxisLabelStateStyle(stateStyle: any) {\n if (isEmpty(stateStyle)) {\n return null;\n }\n const newStateStyle = {};\n Object.keys(stateStyle).forEach(key => {\n if (isFunction(stateStyle[key])) {\n newStateStyle[key] = (datum: Datum, index: number, data: Datum[], layer?: number) => {\n return transformToGraphic(stateStyle[key](datum.rawValue, index, datum, data, layer));\n };\n } else if (!isEmpty(stateStyle[key])) {\n newStateStyle[key] = transformToGraphic(stateStyle[key]);\n }\n });\n\n return newStateStyle;\n}\n\nexport function transformToGraphic(style: any) {\n if (isEmpty(style)) {\n return style;\n }\n if (style.angle) {\n style.angle = degreeToRadian(style.angle);\n }\n\n return style;\n}\n"]}
1
+ {"version":3,"sources":["../src/util/style.ts"],"names":[],"mappings":"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","file":"style.js","sourcesContent":["import { degreeToRadian, isEmpty, isFunction } from '@visactor/vutils';\nimport type { Datum } from '../typings';\nimport type { LegendItemDatum } from '@visactor/vrender-components';\n\n/**\n * 针对一些可以配置状态样式的属性的转换函数,结构如下:\n * { style: {}, state: { hover: {} } }\n * @param cfg\n * @returns\n */\nexport function transformComponentStyle(cfg: any = {}) {\n const newConfig = {\n ...cfg\n };\n\n if (isFunction(cfg.style)) {\n newConfig.style = (item: LegendItemDatum, isSelected: boolean, index: number, allItems: LegendItemDatum[]) =>\n transformToGraphic(cfg.style(item, isSelected, index, allItems));\n } else if (!isEmpty(cfg.style)) {\n newConfig.style = transformToGraphic(cfg.style);\n }\n\n if (!isEmpty(cfg.state)) {\n const newStateStyle = {};\n Object.keys(cfg.state).forEach(key => {\n if (isFunction(cfg.state[key])) {\n newStateStyle[key] = (item: LegendItemDatum, isSelected: boolean, index: number, allItems: LegendItemDatum[]) =>\n transformToGraphic(cfg.state[key](item, isSelected, index, allItems));\n } else if (!isEmpty(cfg.state[key])) {\n newStateStyle[key] = transformToGraphic(cfg.state[key]);\n }\n });\n newConfig.state = newStateStyle;\n }\n\n return newConfig;\n}\n\nexport function transformStateStyle(stateStyle: any) {\n if (isEmpty(stateStyle)) {\n return null;\n }\n const newStateStyle = {};\n Object.keys(stateStyle).forEach(key => {\n if (isFunction(stateStyle[key])) {\n newStateStyle[key] = (value: any, index: number, datum: Datum, data: Datum[]) =>\n transformToGraphic(stateStyle[key](value, index, datum, data));\n } else if (!isEmpty(stateStyle[key])) {\n newStateStyle[key] = transformToGraphic(stateStyle[key]);\n }\n });\n\n return newStateStyle;\n}\n\nexport function transformAxisLabelStateStyle(stateStyle: any) {\n if (isEmpty(stateStyle)) {\n return null;\n }\n const newStateStyle = {};\n Object.keys(stateStyle).forEach(key => {\n if (isFunction(stateStyle[key])) {\n newStateStyle[key] = (datum: Datum, index: number, data: Datum[], layer?: number) => {\n return transformToGraphic(stateStyle[key](datum.rawValue, index, datum, data, layer));\n };\n } else if (!isEmpty(stateStyle[key])) {\n newStateStyle[key] = transformToGraphic(stateStyle[key]);\n }\n });\n\n return newStateStyle;\n}\n\nexport function transformToGraphic(style: any) {\n if (style?.angle) {\n style.angle = degreeToRadian(style.angle);\n }\n\n return style;\n}\n"]}
@@ -1,4 +1,4 @@
1
1
  import type { ITextMeasureOption } from '@visactor/vutils';
2
2
  import { TextMeasure } from '@visactor/vutils';
3
- import type { ITextMarkSpec } from '../typings';
4
- export declare const initTextMeasure: (textSpec?: Partial<ITextMarkSpec>, option?: Partial<ITextMeasureOption>, useNaiveCanvas?: boolean) => TextMeasure<ITextMarkSpec>;
3
+ import type { AdaptiveSpec, ITextMarkSpec } from '../typings';
4
+ export declare const initTextMeasure: (textSpec?: Partial<ITextMarkSpec>, option?: Partial<ITextMeasureOption>, useNaiveCanvas?: boolean) => TextMeasure<AdaptiveSpec<ITextMarkSpec, 'lineHeight'>>;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/util/text.ts"],"names":[],"mappings":";;;AAEA,6CAA+C;AAC/C,+CAAkD;AAElD,iEAAoE;AAE7D,MAAM,eAAe,GAAG,CAC7B,QAAiC,EACjC,MAAoC,EACpC,cAAwB,EACI,EAAE;IAC9B,OAAO,IAAI,oBAAW,iBAElB,iBAAiB,EAAE;YACjB,UAAU,EAAE,2BAAe,CAAC,iBAAiB;YAC7C,QAAQ,EAAE,2BAAe,CAAC,eAAe;SAC1C,EACD,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,uBAAa,EACzD,cAAc,EAAE,cAAc,GAAG,oBAAW,CAAC,iBAAiB,GAAG,oBAAW,CAAC,iBAAiB,CAAC,WAAW,EAAE,IACzG,CAAC,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAC,GAEnB,QAAQ,CACT,CAAC;AACJ,CAAC,CAAC;AAjBW,QAAA,eAAe,mBAiB1B","file":"text.js","sourcesContent":["import type { ITextMeasureOption } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { TextMeasure } from '@visactor/vutils';\nimport { getTextBounds } from '@visactor/vrender';\nimport type { ITextMarkSpec } from '../typings';\nimport { THEME_CONSTANTS } from '../theme/builtin/common/constants';\n\nexport const initTextMeasure = (\n textSpec?: Partial<ITextMarkSpec>,\n option?: Partial<ITextMeasureOption>,\n useNaiveCanvas?: boolean\n): TextMeasure<ITextMarkSpec> => {\n return new TextMeasure<ITextMarkSpec>(\n {\n defaultFontParams: {\n fontFamily: THEME_CONSTANTS.defaultFontFamily,\n fontSize: THEME_CONSTANTS.defaultFontSize\n },\n getTextBounds: useNaiveCanvas ? undefined : getTextBounds,\n specialCharSet: '-/: .,@%\\'\"~' + TextMeasure.ALPHABET_CHAR_SET + TextMeasure.ALPHABET_CHAR_SET.toUpperCase(),\n ...(option ?? {})\n },\n textSpec\n );\n};\n"]}
1
+ {"version":3,"sources":["../src/util/text.ts"],"names":[],"mappings":";;;AAEA,6CAA+C;AAC/C,+CAAkD;AAElD,iEAAoE;AAE7D,MAAM,eAAe,GAAG,CAC7B,QAAiC,EACjC,MAAoC,EACpC,cAAwB,EACgC,EAAE;IAE1D,OAAO,IAAI,oBAAW,iBAElB,iBAAiB,EAAE;YACjB,UAAU,EAAE,2BAAe,CAAC,iBAAiB;YAC7C,QAAQ,EAAE,2BAAe,CAAC,eAAe;SAC1C,EACD,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,uBAAa,EACzD,cAAc,EAAE,cAAc,GAAG,oBAAW,CAAC,iBAAiB,GAAG,oBAAW,CAAC,iBAAiB,CAAC,WAAW,EAAE,IACzG,CAAC,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAC,GAEnB,QAAQ,CACT,CAAC;AACJ,CAAC,CAAC;AAlBW,QAAA,eAAe,mBAkB1B","file":"text.js","sourcesContent":["import type { ITextMeasureOption } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { TextMeasure } from '@visactor/vutils';\nimport { getTextBounds } from '@visactor/vrender';\nimport type { AdaptiveSpec, ITextMarkSpec } from '../typings';\nimport { THEME_CONSTANTS } from '../theme/builtin/common/constants';\n\nexport const initTextMeasure = (\n textSpec?: Partial<ITextMarkSpec>,\n option?: Partial<ITextMeasureOption>,\n useNaiveCanvas?: boolean\n): TextMeasure<AdaptiveSpec<ITextMarkSpec, 'lineHeight'>> => {\n // FIXME: vrender 支持行高字符串后删除 AdaptiveSpec 范型\n return new TextMeasure<AdaptiveSpec<ITextMarkSpec, 'lineHeight'>>(\n {\n defaultFontParams: {\n fontFamily: THEME_CONSTANTS.defaultFontFamily,\n fontSize: THEME_CONSTANTS.defaultFontSize\n },\n getTextBounds: useNaiveCanvas ? undefined : getTextBounds,\n specialCharSet: '-/: .,@%\\'\"~' + TextMeasure.ALPHABET_CHAR_SET + TextMeasure.ALPHABET_CHAR_SET.toUpperCase(),\n ...(option ?? {})\n },\n textSpec\n );\n};\n"]}
@@ -46,7 +46,7 @@ import { DEFAULT_CHART_WIDTH, DEFAULT_CHART_HEIGHT } from "../constant/base";
46
46
 
47
47
  import { dataToDataView } from "../data/initialize";
48
48
 
49
- import { has, isFunction, isEmpty } from "@visactor/vutils";
49
+ import { has, isFunction, isEmpty, isNil } from "@visactor/vutils";
50
50
 
51
51
  import { getActualColor, getDataScheme } from "../theme/color-scheme/util";
52
52
 
@@ -60,6 +60,8 @@ import { DimensionEventEnum } from "../event/events/dimension";
60
60
 
61
61
  import { calculateChartSize } from "./util";
62
62
 
63
+ import { isDiscrete } from "@visactor/vscale";
64
+
63
65
  export class BaseChart extends CompilableBase {
64
66
  getSpec() {
65
67
  return this._spec;
@@ -435,7 +437,7 @@ export class BaseChart extends CompilableBase {
435
437
  updateDataSpec(result) {
436
438
  this._spec.data && array(this._spec.data).forEach(((d, i) => {
437
439
  const dataView = this._dataSet.getDataView(d.id);
438
- dataView ? d.values ? dataView.updateRawData(d.values) : d.latestData || dataView.updateRawData([]) : result.reMakeData = !0;
440
+ dataView ? (d.fields && dataView.setFields(d.fields), d.values ? dataView.parseNewData(d.values, d.parser) : d.latestData || dataView.updateRawData([])) : result.reMakeData = !0;
439
441
  }));
440
442
  }
441
443
  updateRegionSpec(result) {
@@ -470,7 +472,8 @@ export class BaseChart extends CompilableBase {
470
472
  values = spec.data ? spec.data.values : null === (_a = this.getSeriesData(spec.dataId, spec.dataIndex)) || void 0 === _a ? void 0 : _a.latestData,
471
473
  s.updateRawData(values);
472
474
  }
473
- this._mergeUpdateResult(result, s.updateSpec(spec)), s.reInit();
475
+ const lastSpec = s.getSpec();
476
+ this._mergeUpdateResult(result, s.updateSpec(spec)), s.reInit(null, lastSpec);
474
477
  })) : result.reMake = !0;
475
478
  }
476
479
  getCanvas() {
@@ -503,7 +506,8 @@ export class BaseChart extends CompilableBase {
503
506
  progressiveStep: spec.progressiveStep,
504
507
  progressiveThreshold: spec.progressiveThreshold,
505
508
  background: spec.seriesBackground,
506
- invalidType: spec.invalidType
509
+ invalidType: spec.invalidType,
510
+ seriesField: spec.seriesField
507
511
  };
508
512
  }
509
513
  _mergeUpdateResult(resultA, resultB) {
@@ -708,34 +712,36 @@ export class BaseChart extends CompilableBase {
708
712
  }));
709
713
  }
710
714
  setDimensionIndex(value, opt) {
715
+ var _a, _b, _c, _d;
711
716
  let dimensionInfo = null;
712
- if (Array.from(this._event.getComposedEventMap().values()).forEach((e => {
717
+ Array.from(this._event.getComposedEventMap().values()).forEach((e => {
713
718
  const {eventType: eventType, event: event} = e;
714
719
  if (eventType === DimensionEventEnum.dimensionHover || eventType === DimensionEventEnum.dimensionClick) {
715
720
  const info = event.dispatch(value, opt);
716
721
  (null == info ? void 0 : info.length) && (dimensionInfo = info);
717
722
  }
718
- })), dimensionInfo) {
719
- if (!1 !== opt.tooltip) {
720
- const tooltip = this._components.find((c => c.type === ComponentTypeEnum.tooltip));
721
- if (tooltip.getVisible()) {
722
- const dataFilter = {};
723
- dimensionInfo.forEach((d => {
724
- const {axis: axis, value: value, data: data} = d, isY = "left" === axis.getOrient() || "right" === axis.getOrient();
725
- data.forEach((d => {
726
- isY ? dataFilter[d.series.fieldY[0]] = value : dataFilter[d.series.fieldX[0]] = value;
727
- }));
728
- })), tooltip.showTooltip(dataFilter, opt.showTooltipOption);
729
- }
730
- }
731
- if (!1 !== opt.crosshair) {
732
- const crosshair = this._components.find((c => c.type === ComponentTypeEnum.cartesianCrosshair));
733
- crosshair && crosshair.clearAxisValue && crosshair.setAxisValue && dimensionInfo.forEach((d => {
734
- const {axis: axis, value: value} = d;
735
- crosshair.clearAxisValue(), crosshair.setAxisValue(value, axis), crosshair.layoutByValue();
736
- }));
723
+ }));
724
+ const isUnableValue = isNil(value) || !dimensionInfo || dimensionInfo.every((d => isDiscrete(d.axis.getScale().type) && isNil(d.index)));
725
+ if (!1 !== opt.tooltip) {
726
+ const tooltip = this._components.find((c => c.type === ComponentTypeEnum.tooltip));
727
+ if (null == tooltip ? void 0 : tooltip.getVisible()) if (isUnableValue) null === (_b = (_a = tooltip).hideTooltip) || void 0 === _b || _b.call(_a); else {
728
+ const dataFilter = {};
729
+ dimensionInfo.forEach((d => {
730
+ const {axis: axis, value: value, data: data} = d, isY = "left" === axis.getOrient() || "right" === axis.getOrient();
731
+ data.forEach((d => {
732
+ isY ? dataFilter[d.series.fieldY[0]] = value : dataFilter[d.series.fieldX[0]] = value;
733
+ }));
734
+ })), tooltip.showTooltip(dataFilter, opt.showTooltipOption);
737
735
  }
738
736
  }
737
+ if (!1 !== opt.crosshair) {
738
+ const crosshair = this._components.find((c => c.type === ComponentTypeEnum.cartesianCrosshair));
739
+ crosshair && crosshair.clearAxisValue && crosshair.setAxisValue && (isUnableValue ? (null === (_c = crosshair.clearAxisValue) || void 0 === _c || _c.call(crosshair),
740
+ null === (_d = crosshair.hide) || void 0 === _d || _d.call(crosshair)) : dimensionInfo.forEach((d => {
741
+ const {axis: axis, value: value} = d;
742
+ crosshair.clearAxisValue(), crosshair.setAxisValue(value, axis), crosshair.layoutByValue();
743
+ })));
744
+ }
739
745
  }
740
746
  }
741
747
  //# sourceMappingURL=base-chart.js.map