@visactor/vchart 1.12.15 → 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (352) hide show
  1. package/build/es5/index.js +1 -1
  2. package/build/index.js +2381 -1727
  3. package/build/index.min.js +1 -1
  4. package/build/tsconfig.tsbuildinfo +1 -1
  5. package/cjs/animation/utils.js +8 -6
  6. package/cjs/animation/utils.js.map +1 -1
  7. package/cjs/chart/base/base-chart.d.ts +1 -0
  8. package/cjs/chart/base/base-chart.js +3 -0
  9. package/cjs/chart/base/base-chart.js.map +1 -1
  10. package/cjs/chart/index.d.ts +5 -3
  11. package/cjs/chart/index.js +16 -2
  12. package/cjs/chart/index.js.map +1 -1
  13. package/cjs/chart/interface/chart.d.ts +1 -0
  14. package/cjs/chart/interface/chart.js.map +1 -1
  15. package/cjs/chart/interface/type.d.ts +2 -1
  16. package/cjs/chart/interface/type.js +1 -1
  17. package/cjs/chart/interface/type.js.map +1 -1
  18. package/cjs/chart/pictogram/index.d.ts +3 -0
  19. package/cjs/{plugin/components/tooltip-handler/canvas → chart/pictogram}/index.js +2 -1
  20. package/cjs/chart/pictogram/index.js.map +1 -0
  21. package/cjs/chart/pictogram/interface.d.ts +6 -0
  22. package/cjs/chart/pictogram/interface.js.map +1 -0
  23. package/cjs/chart/pictogram/pictogram-transformer.d.ts +8 -0
  24. package/cjs/chart/pictogram/pictogram-transformer.js +38 -0
  25. package/cjs/chart/pictogram/pictogram-transformer.js.map +1 -0
  26. package/cjs/chart/pictogram/pictogram.d.ts +12 -0
  27. package/cjs/chart/pictogram/pictogram.js +24 -0
  28. package/cjs/chart/pictogram/pictogram.js.map +1 -0
  29. package/cjs/chart/sankey/sankey-transformer.js +2 -1
  30. package/cjs/chart/sankey/sankey-transformer.js.map +1 -1
  31. package/cjs/chart/sankey/sankey.js +3 -2
  32. package/cjs/chart/sankey/sankey.js.map +1 -1
  33. package/cjs/compile/mark/compilable-mark.js +1 -1
  34. package/cjs/compile/mark/compilable-mark.js.map +1 -1
  35. package/cjs/component/custom-mark/custom-mark.js +7 -1
  36. package/cjs/component/custom-mark/custom-mark.js.map +1 -1
  37. package/cjs/component/geo/geo-coordinate.js +6 -6
  38. package/cjs/component/geo/geo-coordinate.js.map +1 -1
  39. package/cjs/component/tooltip/interface/theme.d.ts +2 -2
  40. package/cjs/component/tooltip/interface/theme.js.map +1 -1
  41. package/cjs/component/tooltip/utils/get-value.js +3 -1
  42. package/cjs/component/tooltip/utils/get-value.js.map +1 -1
  43. package/cjs/core/index.d.ts +1 -1
  44. package/cjs/core/index.js +1 -1
  45. package/cjs/core/index.js.map +1 -1
  46. package/cjs/core/vchart.d.ts +4 -1
  47. package/cjs/core/vchart.js +21 -7
  48. package/cjs/core/vchart.js.map +1 -1
  49. package/cjs/data/transforms/pictogram.d.ts +84 -0
  50. package/cjs/data/transforms/pictogram.js +149 -0
  51. package/cjs/data/transforms/pictogram.js.map +1 -0
  52. package/cjs/mark/group.d.ts +3 -2
  53. package/cjs/mark/group.js +12 -2
  54. package/cjs/mark/group.js.map +1 -1
  55. package/cjs/mark/interface/type.d.ts +2 -1
  56. package/cjs/mark/interface/type.js +2 -1
  57. package/cjs/mark/interface/type.js.map +1 -1
  58. package/cjs/plugin/components/tooltip-handler/base.d.ts +4 -6
  59. package/cjs/plugin/components/tooltip-handler/base.js +3 -20
  60. package/cjs/plugin/components/tooltip-handler/base.js.map +1 -1
  61. package/cjs/plugin/components/tooltip-handler/{canvas/canvas-tooltip-handler.d.ts → canvas-tooltip-handler.d.ts} +8 -3
  62. package/cjs/plugin/components/tooltip-handler/{canvas/canvas-tooltip-handler.js → canvas-tooltip-handler.js} +15 -2
  63. package/cjs/plugin/components/tooltip-handler/canvas-tooltip-handler.js.map +1 -0
  64. package/cjs/plugin/components/tooltip-handler/constants.d.ts +7 -8
  65. package/cjs/plugin/components/tooltip-handler/constants.js +6 -9
  66. package/cjs/plugin/components/tooltip-handler/constants.js.map +1 -1
  67. package/cjs/plugin/components/tooltip-handler/{dom/dom-tooltip-handler.d.ts → dom-tooltip-handler.d.ts} +20 -9
  68. package/cjs/plugin/components/tooltip-handler/dom-tooltip-handler.js +187 -0
  69. package/cjs/plugin/components/tooltip-handler/dom-tooltip-handler.js.map +1 -0
  70. package/cjs/plugin/components/tooltip-handler/index.d.ts +2 -2
  71. package/cjs/plugin/components/tooltip-handler/index.js +1 -1
  72. package/cjs/plugin/components/tooltip-handler/index.js.map +1 -1
  73. package/cjs/plugin/components/tooltip-handler/interface/index.d.ts +15 -2
  74. package/cjs/plugin/components/tooltip-handler/interface/index.js +1 -16
  75. package/cjs/plugin/components/tooltip-handler/interface/index.js.map +1 -1
  76. package/cjs/plugin/components/tooltip-handler/utils/attribute.d.ts +9 -2
  77. package/cjs/plugin/components/tooltip-handler/utils/attribute.js +36 -18
  78. package/cjs/plugin/components/tooltip-handler/utils/attribute.js.map +1 -1
  79. package/cjs/plugin/components/tooltip-handler/utils/common.d.ts +1 -12
  80. package/cjs/plugin/components/tooltip-handler/utils/common.js +7 -35
  81. package/cjs/plugin/components/tooltip-handler/utils/common.js.map +1 -1
  82. package/cjs/plugin/components/tooltip-handler/utils/style.d.ts +18 -0
  83. package/cjs/plugin/components/tooltip-handler/utils/style.js +94 -0
  84. package/cjs/plugin/components/tooltip-handler/utils/style.js.map +1 -0
  85. package/cjs/plugin/components/tooltip-handler/utils/svg.d.ts +2 -0
  86. package/cjs/plugin/components/tooltip-handler/utils/svg.js +48 -0
  87. package/cjs/plugin/components/tooltip-handler/utils/svg.js.map +1 -0
  88. package/cjs/series/base/base-series.d.ts +22 -6
  89. package/cjs/series/base/base-series.js +33 -24
  90. package/cjs/series/base/base-series.js.map +1 -1
  91. package/cjs/series/interface/type.d.ts +4 -2
  92. package/cjs/series/interface/type.js +4 -2
  93. package/cjs/series/interface/type.js.map +1 -1
  94. package/cjs/series/pictogram/constant.d.ts +2 -0
  95. package/cjs/series/pictogram/constant.js +15 -0
  96. package/cjs/series/pictogram/constant.js.map +1 -0
  97. package/cjs/series/pictogram/interface.d.ts +15 -0
  98. package/cjs/series/pictogram/interface.js.map +1 -0
  99. package/cjs/series/pictogram/pictogram-transformer.d.ts +5 -0
  100. package/cjs/series/pictogram/pictogram-transformer.js +23 -0
  101. package/cjs/series/pictogram/pictogram-transformer.js.map +1 -0
  102. package/cjs/series/pictogram/pictogram.d.ts +77 -0
  103. package/cjs/series/pictogram/pictogram.js +303 -0
  104. package/cjs/series/pictogram/pictogram.js.map +1 -0
  105. package/cjs/series/pictogram/svg-source.d.ts +7 -0
  106. package/cjs/series/pictogram/svg-source.js +38 -0
  107. package/cjs/series/pictogram/svg-source.js.map +1 -0
  108. package/cjs/series/pictogram/tooltip-helper.d.ts +9 -0
  109. package/cjs/series/pictogram/tooltip-helper.js +26 -0
  110. package/cjs/series/pictogram/tooltip-helper.js.map +1 -0
  111. package/cjs/series/sankey/interface.d.ts +1 -0
  112. package/cjs/series/sankey/interface.js.map +1 -1
  113. package/cjs/series/sankey/sankey.js +4 -0
  114. package/cjs/series/sankey/sankey.js.map +1 -1
  115. package/cjs/typings/spec/common.d.ts +1 -0
  116. package/cjs/typings/spec/common.js.map +1 -1
  117. package/cjs/typings/tooltip/common.d.ts +3 -1
  118. package/cjs/typings/tooltip/common.js.map +1 -1
  119. package/esm/animation/utils.js +8 -6
  120. package/esm/animation/utils.js.map +1 -1
  121. package/esm/chart/base/base-chart.d.ts +1 -0
  122. package/esm/chart/base/base-chart.js +3 -0
  123. package/esm/chart/base/base-chart.js.map +1 -1
  124. package/esm/chart/index.d.ts +5 -3
  125. package/esm/chart/index.js +4 -2
  126. package/esm/chart/index.js.map +1 -1
  127. package/esm/chart/interface/chart.d.ts +1 -0
  128. package/esm/chart/interface/chart.js.map +1 -1
  129. package/esm/chart/interface/type.d.ts +2 -1
  130. package/esm/chart/interface/type.js +1 -1
  131. package/esm/chart/interface/type.js.map +1 -1
  132. package/esm/chart/pictogram/index.d.ts +3 -0
  133. package/esm/chart/pictogram/index.js +6 -0
  134. package/esm/chart/pictogram/index.js.map +1 -0
  135. package/esm/chart/pictogram/interface.d.ts +6 -0
  136. package/esm/chart/pictogram/interface.js.map +1 -0
  137. package/esm/chart/pictogram/pictogram-transformer.d.ts +8 -0
  138. package/esm/chart/pictogram/pictogram-transformer.js +32 -0
  139. package/esm/chart/pictogram/pictogram-transformer.js.map +1 -0
  140. package/esm/chart/pictogram/pictogram.d.ts +12 -0
  141. package/esm/chart/pictogram/pictogram.js +24 -0
  142. package/esm/chart/pictogram/pictogram.js.map +1 -0
  143. package/esm/chart/sankey/sankey-transformer.js +2 -1
  144. package/esm/chart/sankey/sankey-transformer.js.map +1 -1
  145. package/esm/chart/sankey/sankey.js +3 -1
  146. package/esm/chart/sankey/sankey.js.map +1 -1
  147. package/esm/compile/mark/compilable-mark.js +1 -1
  148. package/esm/compile/mark/compilable-mark.js.map +1 -1
  149. package/esm/component/custom-mark/custom-mark.js +7 -1
  150. package/esm/component/custom-mark/custom-mark.js.map +1 -1
  151. package/esm/component/geo/geo-coordinate.js +6 -6
  152. package/esm/component/geo/geo-coordinate.js.map +1 -1
  153. package/esm/component/tooltip/interface/theme.d.ts +2 -2
  154. package/esm/component/tooltip/interface/theme.js.map +1 -1
  155. package/esm/component/tooltip/utils/get-value.js +3 -2
  156. package/esm/component/tooltip/utils/get-value.js.map +1 -1
  157. package/esm/core/index.d.ts +1 -1
  158. package/esm/core/index.js +1 -1
  159. package/esm/core/index.js.map +1 -1
  160. package/esm/core/vchart.d.ts +4 -1
  161. package/esm/core/vchart.js +23 -6
  162. package/esm/core/vchart.js.map +1 -1
  163. package/esm/data/transforms/pictogram.d.ts +84 -0
  164. package/esm/data/transforms/pictogram.js +145 -0
  165. package/esm/data/transforms/pictogram.js.map +1 -0
  166. package/esm/mark/group.d.ts +3 -2
  167. package/esm/mark/group.js +12 -2
  168. package/esm/mark/group.js.map +1 -1
  169. package/esm/mark/interface/type.d.ts +2 -1
  170. package/esm/mark/interface/type.js +2 -1
  171. package/esm/mark/interface/type.js.map +1 -1
  172. package/esm/plugin/components/tooltip-handler/base.d.ts +4 -6
  173. package/esm/plugin/components/tooltip-handler/base.js +3 -22
  174. package/esm/plugin/components/tooltip-handler/base.js.map +1 -1
  175. package/esm/plugin/components/tooltip-handler/{canvas/canvas-tooltip-handler.d.ts → canvas-tooltip-handler.d.ts} +8 -3
  176. package/esm/plugin/components/tooltip-handler/{canvas/canvas-tooltip-handler.js → canvas-tooltip-handler.js} +19 -5
  177. package/esm/plugin/components/tooltip-handler/canvas-tooltip-handler.js.map +1 -0
  178. package/esm/plugin/components/tooltip-handler/constants.d.ts +7 -8
  179. package/esm/plugin/components/tooltip-handler/constants.js +9 -4
  180. package/esm/plugin/components/tooltip-handler/constants.js.map +1 -1
  181. package/esm/plugin/components/tooltip-handler/{dom/dom-tooltip-handler.d.ts → dom-tooltip-handler.d.ts} +20 -9
  182. package/esm/plugin/components/tooltip-handler/dom-tooltip-handler.js +191 -0
  183. package/esm/plugin/components/tooltip-handler/dom-tooltip-handler.js.map +1 -0
  184. package/esm/plugin/components/tooltip-handler/index.d.ts +2 -2
  185. package/esm/plugin/components/tooltip-handler/index.js +2 -2
  186. package/esm/plugin/components/tooltip-handler/index.js.map +1 -1
  187. package/esm/plugin/components/tooltip-handler/interface/index.d.ts +15 -2
  188. package/esm/plugin/components/tooltip-handler/interface/index.js +1 -3
  189. package/esm/plugin/components/tooltip-handler/interface/index.js.map +1 -1
  190. package/esm/plugin/components/tooltip-handler/utils/attribute.d.ts +9 -2
  191. package/esm/plugin/components/tooltip-handler/utils/attribute.js +31 -11
  192. package/esm/plugin/components/tooltip-handler/utils/attribute.js.map +1 -1
  193. package/esm/plugin/components/tooltip-handler/utils/common.d.ts +1 -12
  194. package/esm/plugin/components/tooltip-handler/utils/common.js +3 -31
  195. package/esm/plugin/components/tooltip-handler/utils/common.js.map +1 -1
  196. package/esm/plugin/components/tooltip-handler/utils/style.d.ts +18 -0
  197. package/esm/plugin/components/tooltip-handler/utils/style.js +80 -0
  198. package/esm/plugin/components/tooltip-handler/utils/style.js.map +1 -0
  199. package/esm/plugin/components/tooltip-handler/utils/svg.d.ts +2 -0
  200. package/esm/plugin/components/tooltip-handler/utils/svg.js +42 -0
  201. package/esm/plugin/components/tooltip-handler/utils/svg.js.map +1 -0
  202. package/esm/series/base/base-series.d.ts +22 -6
  203. package/esm/series/base/base-series.js +33 -23
  204. package/esm/series/base/base-series.js.map +1 -1
  205. package/esm/series/interface/type.d.ts +4 -2
  206. package/esm/series/interface/type.js +4 -2
  207. package/esm/series/interface/type.js.map +1 -1
  208. package/esm/series/pictogram/constant.d.ts +2 -0
  209. package/esm/series/pictogram/constant.js +9 -0
  210. package/esm/series/pictogram/constant.js.map +1 -0
  211. package/esm/series/pictogram/interface.d.ts +15 -0
  212. package/esm/series/pictogram/interface.js.map +1 -0
  213. package/esm/series/pictogram/pictogram-transformer.d.ts +5 -0
  214. package/esm/series/pictogram/pictogram-transformer.js +19 -0
  215. package/esm/series/pictogram/pictogram-transformer.js.map +1 -0
  216. package/esm/series/pictogram/pictogram.d.ts +77 -0
  217. package/esm/series/pictogram/pictogram.js +329 -0
  218. package/esm/series/pictogram/pictogram.js.map +1 -0
  219. package/esm/series/pictogram/svg-source.d.ts +7 -0
  220. package/esm/series/pictogram/svg-source.js +35 -0
  221. package/esm/series/pictogram/svg-source.js.map +1 -0
  222. package/esm/series/pictogram/tooltip-helper.d.ts +9 -0
  223. package/esm/series/pictogram/tooltip-helper.js +18 -0
  224. package/esm/series/pictogram/tooltip-helper.js.map +1 -0
  225. package/esm/series/sankey/interface.d.ts +1 -0
  226. package/esm/series/sankey/interface.js.map +1 -1
  227. package/esm/series/sankey/sankey.js +4 -0
  228. package/esm/series/sankey/sankey.js.map +1 -1
  229. package/esm/typings/spec/common.d.ts +1 -0
  230. package/esm/typings/spec/common.js.map +1 -1
  231. package/esm/typings/tooltip/common.d.ts +3 -1
  232. package/esm/typings/tooltip/common.js.map +1 -1
  233. package/package.json +15 -15
  234. package/cjs/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.js.map +0 -1
  235. package/cjs/plugin/components/tooltip-handler/canvas/index.d.ts +0 -1
  236. package/cjs/plugin/components/tooltip-handler/canvas/index.js.map +0 -1
  237. package/cjs/plugin/components/tooltip-handler/dom/constant.d.ts +0 -1
  238. package/cjs/plugin/components/tooltip-handler/dom/constant.js +0 -6
  239. package/cjs/plugin/components/tooltip-handler/dom/constant.js.map +0 -1
  240. package/cjs/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js +0 -98
  241. package/cjs/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js.map +0 -1
  242. package/cjs/plugin/components/tooltip-handler/dom/index.d.ts +0 -1
  243. package/cjs/plugin/components/tooltip-handler/dom/index.js +0 -21
  244. package/cjs/plugin/components/tooltip-handler/dom/index.js.map +0 -1
  245. package/cjs/plugin/components/tooltip-handler/dom/interface.d.ts +0 -58
  246. package/cjs/plugin/components/tooltip-handler/dom/interface.js.map +0 -1
  247. package/cjs/plugin/components/tooltip-handler/dom/model/base-tooltip-model.d.ts +0 -25
  248. package/cjs/plugin/components/tooltip-handler/dom/model/base-tooltip-model.js +0 -73
  249. package/cjs/plugin/components/tooltip-handler/dom/model/base-tooltip-model.js.map +0 -1
  250. package/cjs/plugin/components/tooltip-handler/dom/model/content-column-model.d.ts +0 -23
  251. package/cjs/plugin/components/tooltip-handler/dom/model/content-column-model.js +0 -126
  252. package/cjs/plugin/components/tooltip-handler/dom/model/content-column-model.js.map +0 -1
  253. package/cjs/plugin/components/tooltip-handler/dom/model/content-model.d.ts +0 -14
  254. package/cjs/plugin/components/tooltip-handler/dom/model/content-model.js +0 -54
  255. package/cjs/plugin/components/tooltip-handler/dom/model/content-model.js.map +0 -1
  256. package/cjs/plugin/components/tooltip-handler/dom/model/interface.d.ts +0 -10
  257. package/cjs/plugin/components/tooltip-handler/dom/model/interface.js.map +0 -1
  258. package/cjs/plugin/components/tooltip-handler/dom/model/shape-model.d.ts +0 -23
  259. package/cjs/plugin/components/tooltip-handler/dom/model/shape-model.js +0 -69
  260. package/cjs/plugin/components/tooltip-handler/dom/model/shape-model.js.map +0 -1
  261. package/cjs/plugin/components/tooltip-handler/dom/model/style-constants.d.ts +0 -7
  262. package/cjs/plugin/components/tooltip-handler/dom/model/style-constants.js +0 -34
  263. package/cjs/plugin/components/tooltip-handler/dom/model/style-constants.js.map +0 -1
  264. package/cjs/plugin/components/tooltip-handler/dom/model/text-model.d.ts +0 -5
  265. package/cjs/plugin/components/tooltip-handler/dom/model/text-model.js +0 -21
  266. package/cjs/plugin/components/tooltip-handler/dom/model/text-model.js.map +0 -1
  267. package/cjs/plugin/components/tooltip-handler/dom/model/title-model.d.ts +0 -15
  268. package/cjs/plugin/components/tooltip-handler/dom/model/title-model.js +0 -66
  269. package/cjs/plugin/components/tooltip-handler/dom/model/title-model.js.map +0 -1
  270. package/cjs/plugin/components/tooltip-handler/dom/model/tooltip-model.d.ts +0 -21
  271. package/cjs/plugin/components/tooltip-handler/dom/model/tooltip-model.js +0 -79
  272. package/cjs/plugin/components/tooltip-handler/dom/model/tooltip-model.js.map +0 -1
  273. package/cjs/plugin/components/tooltip-handler/dom/utils/common.d.ts +0 -3
  274. package/cjs/plugin/components/tooltip-handler/dom/utils/common.js +0 -33
  275. package/cjs/plugin/components/tooltip-handler/dom/utils/common.js.map +0 -1
  276. package/cjs/plugin/components/tooltip-handler/dom/utils/index.d.ts +0 -2
  277. package/cjs/plugin/components/tooltip-handler/dom/utils/index.js +0 -21
  278. package/cjs/plugin/components/tooltip-handler/dom/utils/index.js.map +0 -1
  279. package/cjs/plugin/components/tooltip-handler/dom/utils/style.d.ts +0 -4
  280. package/cjs/plugin/components/tooltip-handler/dom/utils/style.js +0 -91
  281. package/cjs/plugin/components/tooltip-handler/dom/utils/style.js.map +0 -1
  282. package/cjs/plugin/components/tooltip-handler/interface/common.d.ts +0 -4
  283. package/cjs/plugin/components/tooltip-handler/interface/common.js +0 -6
  284. package/cjs/plugin/components/tooltip-handler/interface/common.js.map +0 -1
  285. package/cjs/plugin/components/tooltip-handler/interface/style.d.ts +0 -13
  286. package/cjs/plugin/components/tooltip-handler/interface/style.js +0 -6
  287. package/cjs/plugin/components/tooltip-handler/interface/style.js.map +0 -1
  288. package/cjs/plugin/components/tooltip-handler/utils/index.d.ts +0 -3
  289. package/cjs/plugin/components/tooltip-handler/utils/index.js +0 -22
  290. package/cjs/plugin/components/tooltip-handler/utils/index.js.map +0 -1
  291. package/esm/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.js.map +0 -1
  292. package/esm/plugin/components/tooltip-handler/canvas/index.d.ts +0 -1
  293. package/esm/plugin/components/tooltip-handler/canvas/index.js +0 -2
  294. package/esm/plugin/components/tooltip-handler/canvas/index.js.map +0 -1
  295. package/esm/plugin/components/tooltip-handler/dom/constant.d.ts +0 -1
  296. package/esm/plugin/components/tooltip-handler/dom/constant.js +0 -2
  297. package/esm/plugin/components/tooltip-handler/dom/constant.js.map +0 -1
  298. package/esm/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js +0 -104
  299. package/esm/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js.map +0 -1
  300. package/esm/plugin/components/tooltip-handler/dom/index.d.ts +0 -1
  301. package/esm/plugin/components/tooltip-handler/dom/index.js +0 -2
  302. package/esm/plugin/components/tooltip-handler/dom/index.js.map +0 -1
  303. package/esm/plugin/components/tooltip-handler/dom/interface.d.ts +0 -58
  304. package/esm/plugin/components/tooltip-handler/dom/interface.js.map +0 -1
  305. package/esm/plugin/components/tooltip-handler/dom/model/base-tooltip-model.d.ts +0 -25
  306. package/esm/plugin/components/tooltip-handler/dom/model/base-tooltip-model.js +0 -67
  307. package/esm/plugin/components/tooltip-handler/dom/model/base-tooltip-model.js.map +0 -1
  308. package/esm/plugin/components/tooltip-handler/dom/model/content-column-model.d.ts +0 -23
  309. package/esm/plugin/components/tooltip-handler/dom/model/content-column-model.js +0 -130
  310. package/esm/plugin/components/tooltip-handler/dom/model/content-column-model.js.map +0 -1
  311. package/esm/plugin/components/tooltip-handler/dom/model/content-model.d.ts +0 -14
  312. package/esm/plugin/components/tooltip-handler/dom/model/content-model.js +0 -52
  313. package/esm/plugin/components/tooltip-handler/dom/model/content-model.js.map +0 -1
  314. package/esm/plugin/components/tooltip-handler/dom/model/interface.d.ts +0 -10
  315. package/esm/plugin/components/tooltip-handler/dom/model/interface.js.map +0 -1
  316. package/esm/plugin/components/tooltip-handler/dom/model/shape-model.d.ts +0 -23
  317. package/esm/plugin/components/tooltip-handler/dom/model/shape-model.js +0 -66
  318. package/esm/plugin/components/tooltip-handler/dom/model/shape-model.js.map +0 -1
  319. package/esm/plugin/components/tooltip-handler/dom/model/style-constants.d.ts +0 -7
  320. package/esm/plugin/components/tooltip-handler/dom/model/style-constants.js +0 -41
  321. package/esm/plugin/components/tooltip-handler/dom/model/style-constants.js.map +0 -1
  322. package/esm/plugin/components/tooltip-handler/dom/model/text-model.d.ts +0 -5
  323. package/esm/plugin/components/tooltip-handler/dom/model/text-model.js +0 -13
  324. package/esm/plugin/components/tooltip-handler/dom/model/text-model.js.map +0 -1
  325. package/esm/plugin/components/tooltip-handler/dom/model/title-model.d.ts +0 -15
  326. package/esm/plugin/components/tooltip-handler/dom/model/title-model.js +0 -65
  327. package/esm/plugin/components/tooltip-handler/dom/model/title-model.js.map +0 -1
  328. package/esm/plugin/components/tooltip-handler/dom/model/tooltip-model.d.ts +0 -21
  329. package/esm/plugin/components/tooltip-handler/dom/model/tooltip-model.js +0 -82
  330. package/esm/plugin/components/tooltip-handler/dom/model/tooltip-model.js.map +0 -1
  331. package/esm/plugin/components/tooltip-handler/dom/utils/common.d.ts +0 -3
  332. package/esm/plugin/components/tooltip-handler/dom/utils/common.js +0 -22
  333. package/esm/plugin/components/tooltip-handler/dom/utils/common.js.map +0 -1
  334. package/esm/plugin/components/tooltip-handler/dom/utils/index.d.ts +0 -2
  335. package/esm/plugin/components/tooltip-handler/dom/utils/index.js +0 -4
  336. package/esm/plugin/components/tooltip-handler/dom/utils/index.js.map +0 -1
  337. package/esm/plugin/components/tooltip-handler/dom/utils/style.d.ts +0 -4
  338. package/esm/plugin/components/tooltip-handler/dom/utils/style.js +0 -87
  339. package/esm/plugin/components/tooltip-handler/dom/utils/style.js.map +0 -1
  340. package/esm/plugin/components/tooltip-handler/interface/common.d.ts +0 -4
  341. package/esm/plugin/components/tooltip-handler/interface/common.js +0 -2
  342. package/esm/plugin/components/tooltip-handler/interface/common.js.map +0 -1
  343. package/esm/plugin/components/tooltip-handler/interface/style.d.ts +0 -13
  344. package/esm/plugin/components/tooltip-handler/interface/style.js +0 -2
  345. package/esm/plugin/components/tooltip-handler/interface/style.js.map +0 -1
  346. package/esm/plugin/components/tooltip-handler/utils/index.d.ts +0 -3
  347. package/esm/plugin/components/tooltip-handler/utils/index.js +0 -6
  348. package/esm/plugin/components/tooltip-handler/utils/index.js.map +0 -1
  349. /package/cjs/{plugin/components/tooltip-handler/dom → chart/pictogram}/interface.js +0 -0
  350. /package/cjs/{plugin/components/tooltip-handler/dom/model → series/pictogram}/interface.js +0 -0
  351. /package/esm/{plugin/components/tooltip-handler/dom → chart/pictogram}/interface.js +0 -0
  352. /package/esm/{plugin/components/tooltip-handler/dom/model → series/pictogram}/interface.js +0 -0
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.PictogramSeriesSpecTransformer = void 0;
6
+
7
+ const vutils_1 = require("@visactor/vutils"), base_1 = require("../base"), svg_source_1 = require("./svg-source");
8
+
9
+ class PictogramSeriesSpecTransformer extends base_1.BaseSeriesSpecTransformer {
10
+ _getDefaultSpecFromChart(chartSpec) {
11
+ var _a, _b, _c;
12
+ const spec = null !== (_a = super._getDefaultSpecFromChart(chartSpec)) && void 0 !== _a ? _a : {}, svg = chartSpec.svg, elements = null === (_c = null === (_b = svg_source_1.svgSourceMap.get(svg)) || void 0 === _b ? void 0 : _b.latestData) || void 0 === _c ? void 0 : _c.elements;
13
+ if (elements && elements.length) {
14
+ elements.map((e => e.name)).filter((n => (0, vutils_1.isValid)(n))).forEach((name => {
15
+ chartSpec[name] && (spec[name] = chartSpec[name]);
16
+ }));
17
+ }
18
+ return spec;
19
+ }
20
+ }
21
+
22
+ exports.PictogramSeriesSpecTransformer = PictogramSeriesSpecTransformer;
23
+ //# sourceMappingURL=pictogram-transformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/series/pictogram/pictogram-transformer.ts"],"names":[],"mappings":";;;AAAA,6CAA2C;AAE3C,kCAAoD;AACpD,6CAA4C;AAG5C,MAAa,8BAAyD,SAAQ,gCAA+B;IACjG,wBAAwB,CAAC,SAAc;;QAC/C,MAAM,IAAI,GAAG,MAAA,KAAK,CAAC,wBAAwB,CAAC,SAAS,CAAC,mCAAI,EAAE,CAAC;QAC7D,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC;QAC1B,MAAM,QAAQ,GAAG,MAAA,MAAA,yBAAY,CAAC,GAAG,CAAC,GAAG,CAAC,0CAAE,UAAU,0CAAE,QAAuC,CAAC;QAC5F,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,EAAE;YAC/B,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,gBAAO,EAAC,CAAC,CAAC,CAAC,CAAC;YAChE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACnB,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE;oBACnB,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;iBAC9B;YACH,CAAC,CAAC,CAAC;SACJ;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAfD,wEAeC","file":"pictogram-transformer.js","sourcesContent":["import { isValid } from '@visactor/vutils';\nimport type { ISeriesSpec } from '../../typings';\nimport { BaseSeriesSpecTransformer } from '../base';\nimport { svgSourceMap } from './svg-source';\nimport type { SVGParserResult } from '@visactor/vdataset';\n\nexport class PictogramSeriesSpecTransformer<T extends ISeriesSpec, K> extends BaseSeriesSpecTransformer<T, K> {\n protected _getDefaultSpecFromChart(chartSpec: any): any {\n const spec = super._getDefaultSpecFromChart(chartSpec) ?? {};\n const svg = chartSpec.svg;\n const elements = svgSourceMap.get(svg)?.latestData?.elements as SVGParserResult['elements'];\n if (elements && elements.length) {\n const names = elements.map(e => e.name).filter(n => isValid(n));\n names.forEach(name => {\n if (chartSpec[name]) {\n spec[name] = chartSpec[name];\n }\n });\n }\n return spec;\n }\n}\n"]}
@@ -0,0 +1,77 @@
1
+ import type { SVGParsedElement, SVGParserResult } from '@visactor/vdataset';
2
+ import { PanEventParam, ZoomEventParam } from '../../core';
3
+ import { GeoSeries } from '../geo/geo';
4
+ import { ISeriesSeriesInfo, SeriesMarkMap, SeriesTypeEnum } from '../interface';
5
+ import type { IPictogramSeriesSpec } from './interface';
6
+ import { GroupMark } from '../../mark';
7
+ import { PictogramSeriesSpecTransformer } from './pictogram-transformer';
8
+ import { IMatrix } from '@visactor/vutils';
9
+ import type { Datum } from '../../typings';
10
+ import type { Group } from '@visactor/vrender-core';
11
+ import { IHoverSpec, ISelectSpec } from '../../interaction/interface';
12
+ import { STATE_VALUE_ENUM } from '../../compile/mark';
13
+ import { EventType } from '@visactor/vgrammar-core';
14
+ import { IMark } from '../../mark/interface';
15
+ import type { IPoint } from '../../typings/coordinate';
16
+ export interface SVGParsedElementExtend extends SVGParsedElement {
17
+ _finalAttributes: Record<string, any>;
18
+ _uniqueId: string;
19
+ }
20
+ export declare class PictogramSeries<T extends IPictogramSeriesSpec = IPictogramSeriesSpec> extends GeoSeries<T> {
21
+ static readonly type: string;
22
+ type: SeriesTypeEnum;
23
+ static readonly mark: SeriesMarkMap;
24
+ static readonly transformerConstructor: typeof PictogramSeriesSpecTransformer;
25
+ svg: string;
26
+ protected _pictogramMark: GroupMark;
27
+ protected _parsedSvgResult: SVGParserResult;
28
+ private _labelMark;
29
+ setAttrFromSpec(): void;
30
+ getDatumCenter(datum: SVGParsedElementExtend): [number, number];
31
+ getDatumName(datum: SVGParsedElementExtend): string;
32
+ getMarksWithoutRoot(): IMark[];
33
+ protected _buildMarkAttributeContext(): void;
34
+ protected _defaultHoverConfig(selector: string[], finalHoverSpec: IHoverSpec): {
35
+ seriesId: number;
36
+ regionId: number;
37
+ selector: string[];
38
+ type: string;
39
+ trigger: EventType;
40
+ triggerOff: EventType;
41
+ blurState: STATE_VALUE_ENUM;
42
+ highlightState: STATE_VALUE_ENUM;
43
+ };
44
+ protected _defaultSelectConfig(selector: string[], finalSelectSpec: ISelectSpec): {
45
+ type: string;
46
+ seriesId: number;
47
+ regionId: number;
48
+ selector: string[];
49
+ trigger: EventType;
50
+ triggerOff: EventType;
51
+ reverseState: STATE_VALUE_ENUM;
52
+ state: STATE_VALUE_ENUM;
53
+ isMultiple: boolean;
54
+ };
55
+ initMark(): void;
56
+ private _initLabelMark;
57
+ initLabelMarkStyle(): void;
58
+ initMarkStyle(): void;
59
+ protected _validElement(element: SVGParsedElement): string;
60
+ protected initTooltip(): void;
61
+ dataToPosition(datum: Datum, global?: boolean): IPoint;
62
+ coordToPosition(point: IPoint): IPoint | undefined;
63
+ getRootMatrix(): IMatrix;
64
+ getPictogramRootGraphic(): Group;
65
+ initData(): void;
66
+ mapViewDataUpdate(): void;
67
+ onLayoutEnd(ctx: any): void;
68
+ updateSVGSize(): void;
69
+ protected initEvent(): void;
70
+ handleZoom(e: ZoomEventParam): void;
71
+ handlePan(e: PanEventParam): void;
72
+ getMarkData(datum: Datum): any;
73
+ getMeasureField(): string[];
74
+ getDimensionField(): string[];
75
+ protected _getSeriesInfo(field: string, keys: string[]): ISeriesSeriesInfo[];
76
+ }
77
+ export declare const registerPictogramSeries: () => void;
@@ -0,0 +1,303 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.registerPictogramSeries = exports.PictogramSeries = void 0;
6
+
7
+ const vdataset_1 = require("@visactor/vdataset"), core_1 = require("../../core"), geo_1 = require("../geo/geo"), interface_1 = require("../interface"), constant_1 = require("./constant"), svg_source_1 = require("./svg-source"), series_data_1 = require("../base/series-data"), lookup_1 = require("../../data/transforms/lookup"), register_1 = require("../../data/register"), utils_1 = require("../../animation/utils"), attribute_1 = require("../../constant/attribute"), pictogram_transformer_1 = require("./pictogram-transformer"), vutils_1 = require("@visactor/vutils"), vrender_core_1 = require("@visactor/vrender-core"), event_1 = require("../../constant/event"), mark_1 = require("../../compile/mark"), vgrammar_core_1 = require("@visactor/vgrammar-core"), tooltip_helper_1 = require("./tooltip-helper"), pictogram_1 = require("../../data/transforms/pictogram");
8
+
9
+ class PictogramSeries extends geo_1.GeoSeries {
10
+ constructor() {
11
+ super(...arguments), this.type = interface_1.SeriesTypeEnum.pictogram;
12
+ }
13
+ setAttrFromSpec() {
14
+ var _a, _b, _c;
15
+ super.setAttrFromSpec(), this.svg = this._spec.svg, this._nameField = this._spec.nameField,
16
+ this._valueField = this._spec.valueField, this.svg || null === (_a = this._option) || void 0 === _a || _a.onError("svg source is not specified !"),
17
+ this._parsedSvgResult = null === (_b = (0, svg_source_1.getSVGSource)(this.svg)) || void 0 === _b ? void 0 : _b.latestData,
18
+ this._parsedSvgResult || null === (_c = this._option) || void 0 === _c || _c.onError(`'${this.svg}' is not registered !`);
19
+ }
20
+ getDatumCenter(datum) {
21
+ return [ Number.NaN, Number.NaN ];
22
+ }
23
+ getDatumName(datum) {
24
+ return datum.name || datum._nameFromParent;
25
+ }
26
+ getMarksWithoutRoot() {
27
+ return this.getMarks().filter((m => m.name && !m.name.includes("seriesGroup") && !m.name.includes("root") && m !== this._pictogramMark));
28
+ }
29
+ _buildMarkAttributeContext() {
30
+ super._buildMarkAttributeContext(), this._markAttributeContext.getTransformMatrix = this.getRootMatrix.bind(this),
31
+ this._markAttributeContext.coordToPosition = this.coordToPosition.bind(this), this._markAttributeContext.dataToPosition = this.dataToPosition.bind(this);
32
+ }
33
+ _defaultHoverConfig(selector, finalHoverSpec) {
34
+ return {
35
+ seriesId: this.id,
36
+ regionId: this._region.id,
37
+ selector: selector,
38
+ type: "element-highlight-by-graphic-name",
39
+ trigger: finalHoverSpec.trigger,
40
+ triggerOff: "pointerout",
41
+ blurState: mark_1.STATE_VALUE_ENUM.STATE_HOVER_REVERSE,
42
+ highlightState: mark_1.STATE_VALUE_ENUM.STATE_HOVER
43
+ };
44
+ }
45
+ _defaultSelectConfig(selector, finalSelectSpec) {
46
+ const isMultiple = "multiple" === finalSelectSpec.mode, triggerOff = (0, vutils_1.isValid)(finalSelectSpec.triggerOff) ? finalSelectSpec.triggerOff : isMultiple ? [ "empty", "self" ] : [ "empty", finalSelectSpec.trigger ];
47
+ return {
48
+ type: "element-select-by-graphic-name",
49
+ seriesId: this.id,
50
+ regionId: this._region.id,
51
+ selector: selector,
52
+ trigger: finalSelectSpec.trigger,
53
+ triggerOff: triggerOff,
54
+ reverseState: mark_1.STATE_VALUE_ENUM.STATE_SELECTED_REVERSE,
55
+ state: mark_1.STATE_VALUE_ENUM.STATE_SELECTED,
56
+ isMultiple: isMultiple
57
+ };
58
+ }
59
+ initMark() {
60
+ var _a;
61
+ if (this._pictogramMark = this._createMark(PictogramSeries.mark.pictogram, {
62
+ groupKey: this.getDimensionField()[0],
63
+ isSeriesMark: !0,
64
+ skipBeforeLayouted: !0,
65
+ dataView: this._mapViewData.getDataView(),
66
+ dataProductId: this._mapViewData.getProductId()
67
+ }, {
68
+ morph: (0, utils_1.shouldMarkDoMorph)(this._spec, PictogramSeries.mark.pictogram.name)
69
+ }), this._pictogramMark) {
70
+ this._pictogramMark.setUserId(PictogramSeries.mark.pictogram.name);
71
+ for (const element of this._mapViewData.getDataView().latestData) {
72
+ const {graphicType: type, name: name, parent: parent, id: id, _nameFromParent: _nameFromParent, _uniqueId: _uniqueId} = element, mark = this._createMark({
73
+ type: type,
74
+ name: null != name ? name : _nameFromParent
75
+ }, {
76
+ groupKey: _uniqueId,
77
+ isSeriesMark: !1,
78
+ skipBeforeLayouted: !0,
79
+ dataView: this._mapViewData.getDataView(),
80
+ dataProductId: this._mapViewData.getProductId(),
81
+ parent: null !== (_a = this._pictogramMark.getMarkInUserId(null == parent ? void 0 : parent._uniqueId)) && void 0 !== _a ? _a : this._pictogramMark
82
+ }, {
83
+ morph: (0, utils_1.shouldMarkDoMorph)(this._spec, PictogramSeries.mark.pictogram.name)
84
+ });
85
+ mark && (mark.setUserId(_uniqueId), "group" !== mark.type && mark.setMarkConfig({
86
+ graphicName: mark.name
87
+ }), mark.setTransform([ {
88
+ type: "filter",
89
+ callback: datum => datum._uniqueId === _uniqueId
90
+ } ]));
91
+ }
92
+ this._initLabelMark();
93
+ }
94
+ }
95
+ _initLabelMark() {
96
+ if (!0 !== this._spec.label.visible) return;
97
+ const labelMark = this._createMark(PictogramSeries.mark.label, {
98
+ isSeriesMark: !1,
99
+ parent: this._pictogramMark,
100
+ groupKey: "_uniqueId",
101
+ skipBeforeLayouted: !0,
102
+ depend: this.getMarksWithoutRoot()
103
+ });
104
+ labelMark && (this._labelMark = labelMark, this._labelMark.setDataView(this._mapViewData.getDataView()));
105
+ }
106
+ initLabelMarkStyle() {
107
+ this._labelMark && this.setMarkStyle(this._labelMark, {
108
+ visible: d => !!this._validElement(d),
109
+ x: d => {
110
+ var _a;
111
+ return null === (_a = this.dataToPosition(d, !0)) || void 0 === _a ? void 0 : _a.x;
112
+ },
113
+ y: d => {
114
+ var _a;
115
+ return null === (_a = this.dataToPosition(d, !0)) || void 0 === _a ? void 0 : _a.y;
116
+ },
117
+ text: d => d[this.nameField],
118
+ textAlign: "center",
119
+ textBaseline: "middle"
120
+ }, mark_1.STATE_VALUE_ENUM.STATE_NORMAL, attribute_1.AttributeLevel.Series);
121
+ }
122
+ initMarkStyle() {
123
+ const {root: root, viewBoxRect: viewBoxRect} = this._parsedSvgResult, elements = this._mapViewData.getDataView().latestData;
124
+ root && (this.setMarkStyle(this._pictogramMark, pictogram_1.graphicAttributeTransform.group(root.attributes), "normal", attribute_1.AttributeLevel.Built_In),
125
+ root.transform && this.setMarkStyle(this._pictogramMark, {
126
+ postMatrix: () => root.transform
127
+ }, "normal", attribute_1.AttributeLevel.Built_In), viewBoxRect && this._pictogramMark.setMarkConfig({
128
+ clip: !0,
129
+ clipPath: [ (0, vrender_core_1.createRect)(Object.assign(Object.assign({}, viewBoxRect), {
130
+ fill: !0
131
+ })) ]
132
+ }));
133
+ for (const element of elements) {
134
+ const {_uniqueId: _uniqueId, _finalAttributes: attributes} = element, mark = this._pictogramMark.getMarkInUserId(_uniqueId), valid = this._validElement(element);
135
+ mark && (this.setMarkStyle(mark, {
136
+ keepStrokeScale: !0
137
+ }, "normal", attribute_1.AttributeLevel.Built_In), valid ? (this.initMarkStyleWithSpec(mark, (0,
138
+ vutils_1.merge)({}, this._spec.pictogram, this._spec[mark.name])), this.setMarkStyle(mark, attributes, "normal", attribute_1.AttributeLevel.Series),
139
+ mark.setPostProcess("fill", ((result, datum) => (0, vutils_1.isValid)(result) ? result : this._spec.defaultFillColor))) : (mark.setMarkConfig({
140
+ interactive: !1
141
+ }), this.setMarkStyle(mark, attributes, "normal", attribute_1.AttributeLevel.Built_In)));
142
+ }
143
+ this.initLabelMarkStyle();
144
+ }
145
+ _validElement(element) {
146
+ return element.name || element._nameFromParent;
147
+ }
148
+ initTooltip() {
149
+ this._tooltipHelper = new tooltip_helper_1.PictogramSeriesTooltipHelper(this), this.getMarksWithoutRoot().forEach((mark => {
150
+ mark && mark.name && this._tooltipHelper.activeTriggerSet.mark.add(mark);
151
+ }));
152
+ }
153
+ dataToPosition(datum, global = !1) {
154
+ if (!datum) return null;
155
+ const name = datum[this.nameField];
156
+ if (!name) return null;
157
+ const mark = this.getMarksWithoutRoot().filter((mark => mark.name === name));
158
+ if (!mark || 0 === mark.length) return null;
159
+ let bounds = new vutils_1.Bounds;
160
+ global ? mark.forEach((m => {
161
+ bounds = bounds.union(m.getProduct().getGroupGraphicItem().globalAABBBounds);
162
+ })) : mark.forEach((m => {
163
+ bounds = bounds.union(m.getProduct().getBounds());
164
+ }));
165
+ const point = {
166
+ x: (bounds.x1 + bounds.x2) / 2,
167
+ y: (bounds.y1 + bounds.y2) / 2
168
+ };
169
+ if (global) {
170
+ const {x: x, y: y} = this.getLayoutStartPoint();
171
+ point.x -= x, point.y -= y;
172
+ }
173
+ return point;
174
+ }
175
+ coordToPosition(point) {
176
+ if (!point) return null;
177
+ const {x: x, y: y} = point, matrix = this.getRootMatrix();
178
+ if (!matrix) return null;
179
+ const position = {};
180
+ return matrix.getInverse().transformPoint({
181
+ x: x,
182
+ y: y
183
+ }, position), position;
184
+ }
185
+ getRootMatrix() {
186
+ var _a;
187
+ return null === (_a = this.getPictogramRootGraphic()) || void 0 === _a ? void 0 : _a.transMatrix;
188
+ }
189
+ getPictogramRootGraphic() {
190
+ var _a;
191
+ return null === (_a = this._pictogramMark.getProduct()) || void 0 === _a ? void 0 : _a.getGroupGraphicItem();
192
+ }
193
+ initData() {
194
+ var _a, _b;
195
+ super.initData();
196
+ const parsedSvg = svg_source_1.svgSourceMap.get(this.svg);
197
+ parsedSvg || null === (_a = this._option) || void 0 === _a || _a.onError("no valid svg found!");
198
+ const svgData = new vdataset_1.DataView(this._dataSet, {
199
+ name: `pictogram_${this.id}_data`
200
+ });
201
+ (0, register_1.registerDataSetInstanceTransform)(this._dataSet, "pictogram", pictogram_1.pictogram),
202
+ (0, register_1.registerDataSetInstanceTransform)(this._dataSet, "lookup", lookup_1.lookup),
203
+ svgData.parse([ parsedSvg ], {
204
+ type: "dataview"
205
+ }).transform({
206
+ type: "pictogram"
207
+ }).transform({
208
+ type: "lookup",
209
+ options: {
210
+ from: () => this.getViewData().latestData,
211
+ key: "name",
212
+ fields: this._nameField,
213
+ set: (a, b) => {
214
+ b && (a.data = b);
215
+ }
216
+ }
217
+ }).transform({
218
+ type: "lookup",
219
+ options: {
220
+ from: () => this.getViewData().latestData,
221
+ key: "_nameFromParent",
222
+ fields: this._nameField,
223
+ set: (a, b) => {
224
+ b && (a.data = b);
225
+ }
226
+ }
227
+ }), null === (_b = this._data) || void 0 === _b || _b.getDataView().target.addListener("change", svgData.reRunAllTransform),
228
+ this._mapViewData = new series_data_1.SeriesData(this._option, svgData);
229
+ }
230
+ mapViewDataUpdate() {
231
+ this._mapViewData.updateData();
232
+ }
233
+ onLayoutEnd(ctx) {
234
+ var _a;
235
+ super.onLayoutEnd(ctx), null === (_a = this._mapViewData) || void 0 === _a || _a.getDataView().reRunAllTransform();
236
+ }
237
+ updateSVGSize() {
238
+ const {width: regionWidth, height: regionHeight} = this.getLayoutRect(), regionCenterX = regionWidth / 2, regionCenterY = regionHeight / 2, root = this.getPictogramRootGraphic();
239
+ if (root) {
240
+ const bounds = root.AABBBounds, {x1: x1, x2: x2, y1: y1, y2: y2} = root.AABBBounds, rootCenterX = (x1 + x2) / 2, rootCenterY = (y1 + y2) / 2, scaleX = regionWidth / bounds.width(), scaleY = regionHeight / bounds.height(), scale = Math.min(scaleX, scaleY);
241
+ root.scale(scale, scale, {
242
+ x: rootCenterX,
243
+ y: rootCenterY
244
+ }), root.translate(regionCenterX - rootCenterX, regionCenterY - rootCenterY);
245
+ }
246
+ }
247
+ initEvent() {
248
+ var _a;
249
+ super.initEvent(), null === (_a = this._mapViewData.getDataView()) || void 0 === _a || _a.target.addListener("change", this.mapViewDataUpdate.bind(this)),
250
+ this.event.on(event_1.VGRAMMAR_HOOK_EVENT.AFTER_MARK_LAYOUT_END, this.updateSVGSize.bind(this));
251
+ }
252
+ handleZoom(e) {
253
+ const {scale: scale, scaleCenter: scaleCenter} = e;
254
+ if (1 === scale) return;
255
+ const root = this.getPictogramRootGraphic();
256
+ root && (root.attribute.postMatrix || root.setAttributes({
257
+ postMatrix: new vutils_1.Matrix
258
+ }), root.scale(scale, scale, scaleCenter));
259
+ }
260
+ handlePan(e) {
261
+ const {delta: delta} = e;
262
+ if (0 === delta[0] && 0 === delta[1]) return;
263
+ const root = this.getPictogramRootGraphic();
264
+ root && (root.attribute.postMatrix || root.setAttributes({
265
+ postMatrix: new vutils_1.Matrix
266
+ }), root.translate(delta[0], delta[1]));
267
+ }
268
+ getMarkData(datum) {
269
+ var _a;
270
+ return null !== (_a = datum.data) && void 0 !== _a ? _a : {};
271
+ }
272
+ getMeasureField() {
273
+ return [ this.valueField ];
274
+ }
275
+ getDimensionField() {
276
+ return [ this.nameField ];
277
+ }
278
+ _getSeriesInfo(field, keys) {
279
+ const defaultShapeType = this.getDefaultShapeType();
280
+ return keys.map((key => ({
281
+ key: key,
282
+ originalKey: key,
283
+ style: this.getSeriesStyle({
284
+ data: {
285
+ [field]: key
286
+ }
287
+ }),
288
+ shapeType: defaultShapeType
289
+ })));
290
+ }
291
+ }
292
+
293
+ exports.PictogramSeries = PictogramSeries, PictogramSeries.type = interface_1.SeriesTypeEnum.pictogram,
294
+ PictogramSeries.mark = constant_1.PictogramSeriesMark, PictogramSeries.transformerConstructor = pictogram_transformer_1.PictogramSeriesSpecTransformer;
295
+
296
+ const registerPictogramSeries = () => {
297
+ core_1.Factory.registerSeries(PictogramSeries.type, PictogramSeries), core_1.Factory.registerImplement("registerSVG", svg_source_1.registerSVGSource),
298
+ core_1.Factory.registerImplement("unregisterSVG", svg_source_1.unregisterSVGSource),
299
+ (0, vgrammar_core_1.registerElementHighlightByGraphicName)(), (0, vgrammar_core_1.registerElementSelectByGraphicName)();
300
+ };
301
+
302
+ exports.registerPictogramSeries = registerPictogramSeries;
303
+ //# sourceMappingURL=pictogram.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/series/pictogram/pictogram.ts"],"names":[],"mappings":"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","file":"pictogram.js","sourcesContent":["import { DataView } from '@visactor/vdataset';\nimport type { SVGParsedElement, SVGParserResult } from '@visactor/vdataset';\nimport { Factory, PanEventParam, ZoomEventParam } from '../../core';\nimport { GeoSeries } from '../geo/geo';\nimport { ISeriesSeriesInfo, SeriesMarkMap, SeriesTypeEnum } from '../interface';\nimport type { IPictogramSeriesSpec } from './interface';\nimport { PictogramSeriesMark } from './constant';\nimport { getSVGSource, registerSVGSource, svgSourceMap, unregisterSVGSource } from './svg-source';\nimport { SeriesData } from '../base/series-data';\nimport { lookup } from '../../data/transforms/lookup';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport { GroupMark } from '../../mark';\nimport { IGroupMark } from '../../mark/group';\nimport { shouldMarkDoMorph } from '../../animation/utils';\nimport { AttributeLevel } from '../../constant/attribute';\nimport { PictogramSeriesSpecTransformer } from './pictogram-transformer';\nimport { Bounds, IMatrix, Matrix, isValid, merge } from '@visactor/vutils';\nimport type { Datum } from '../../typings';\nimport { createRect } from '@visactor/vrender-core';\nimport type { Group, IGraphic } from '@visactor/vrender-core';\nimport { VGRAMMAR_HOOK_EVENT } from '../../constant/event';\nimport { IHoverSpec, ISelectSpec } from '../../interaction/interface';\nimport { STATE_VALUE_ENUM } from '../../compile/mark';\nimport {\n EventType,\n registerElementHighlightByGraphicName,\n registerElementSelectByGraphicName\n} from '@visactor/vgrammar-core';\nimport { IMark } from '../../mark/interface';\nimport { PictogramSeriesTooltipHelper } from './tooltip-helper';\nimport { graphicAttributeTransform, pictogram } from '../../data/transforms/pictogram';\nimport type { IPoint } from '../../typings/coordinate';\nimport { ITextMark } from '../../mark/text';\n\nexport interface SVGParsedElementExtend extends SVGParsedElement {\n _finalAttributes: Record<string, any>;\n _uniqueId: string; // 用于处理 svg 中 id 重复的情况\n}\n\nexport class PictogramSeries<T extends IPictogramSeriesSpec = IPictogramSeriesSpec> extends GeoSeries<T> {\n static readonly type: string = SeriesTypeEnum.pictogram;\n type = SeriesTypeEnum.pictogram;\n static readonly mark: SeriesMarkMap = PictogramSeriesMark;\n static readonly transformerConstructor = PictogramSeriesSpecTransformer;\n\n svg!: string;\n\n protected _pictogramMark: GroupMark;\n protected _parsedSvgResult: SVGParserResult;\n private _labelMark: ITextMark;\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n this.svg = this._spec.svg;\n this._nameField = this._spec.nameField;\n this._valueField = this._spec.valueField;\n\n if (!this.svg) {\n this._option?.onError(`svg source is not specified !`);\n }\n this._parsedSvgResult = getSVGSource(this.svg)?.latestData;\n\n if (!this._parsedSvgResult) {\n this._option?.onError(`'${this.svg}' is not registered !`);\n }\n }\n\n getDatumCenter(datum: SVGParsedElementExtend): [number, number] {\n return [Number.NaN, Number.NaN];\n }\n\n getDatumName(datum: SVGParsedElementExtend): string {\n return datum.name || datum._nameFromParent;\n }\n\n getMarksWithoutRoot(): IMark[] {\n return this.getMarks().filter(\n m => m.name && !m.name.includes('seriesGroup') && !m.name.includes('root') && m !== this._pictogramMark\n );\n }\n\n protected _buildMarkAttributeContext() {\n super._buildMarkAttributeContext();\n this._markAttributeContext.getTransformMatrix = this.getRootMatrix.bind(this);\n this._markAttributeContext.coordToPosition = this.coordToPosition.bind(this);\n this._markAttributeContext.dataToPosition = this.dataToPosition.bind(this);\n }\n\n protected _defaultHoverConfig(selector: string[], finalHoverSpec: IHoverSpec) {\n return {\n seriesId: this.id,\n regionId: this._region.id,\n selector,\n type: 'element-highlight-by-graphic-name',\n // trigger: finalHoverSpec.trigger as EventType,\n trigger: finalHoverSpec.trigger as EventType,\n triggerOff: 'pointerout' as EventType,\n blurState: STATE_VALUE_ENUM.STATE_HOVER_REVERSE,\n highlightState: STATE_VALUE_ENUM.STATE_HOVER\n };\n }\n\n protected _defaultSelectConfig(selector: string[], finalSelectSpec: ISelectSpec) {\n const isMultiple = finalSelectSpec.mode === 'multiple';\n const triggerOff = isValid(finalSelectSpec.triggerOff)\n ? finalSelectSpec.triggerOff\n : isMultiple\n ? ['empty', 'self']\n : ['empty', finalSelectSpec.trigger];\n return {\n type: 'element-select-by-graphic-name',\n seriesId: this.id,\n regionId: this._region.id,\n selector,\n trigger: finalSelectSpec.trigger as EventType,\n triggerOff: triggerOff as EventType,\n reverseState: STATE_VALUE_ENUM.STATE_SELECTED_REVERSE,\n state: STATE_VALUE_ENUM.STATE_SELECTED,\n isMultiple\n };\n }\n\n initMark() {\n this._pictogramMark = this._createMark(\n PictogramSeries.mark.pictogram,\n {\n groupKey: this.getDimensionField()[0],\n isSeriesMark: true,\n skipBeforeLayouted: true,\n dataView: this._mapViewData.getDataView(),\n dataProductId: this._mapViewData.getProductId()\n },\n {\n morph: shouldMarkDoMorph(this._spec, PictogramSeries.mark.pictogram.name)\n }\n ) as GroupMark;\n\n if (!this._pictogramMark) {\n return;\n }\n\n this._pictogramMark.setUserId(PictogramSeries.mark.pictogram.name);\n for (const element of this._mapViewData.getDataView().latestData as SVGParserResult['elements']) {\n const { graphicType: type, name, parent, id, _nameFromParent, _uniqueId } = element;\n\n const mark = this._createMark(\n { type, name: name ?? _nameFromParent },\n {\n groupKey: _uniqueId,\n isSeriesMark: false,\n skipBeforeLayouted: true,\n dataView: this._mapViewData.getDataView(),\n dataProductId: this._mapViewData.getProductId(),\n parent: (this._pictogramMark.getMarkInUserId(parent?._uniqueId) as IGroupMark) ?? this._pictogramMark\n },\n {\n morph: shouldMarkDoMorph(this._spec, PictogramSeries.mark.pictogram.name)\n }\n );\n\n if (mark) {\n mark.setUserId(_uniqueId); // id 必须唯一,但无法控制 svg 中元素有重复 id, 这里做一个保护\n if (mark.type !== 'group') {\n mark.setMarkConfig({ graphicName: mark.name });\n }\n mark.setTransform([\n {\n type: 'filter',\n callback: (datum: SVGParsedElementExtend) => {\n return datum._uniqueId === _uniqueId;\n }\n }\n ]);\n }\n }\n this._initLabelMark();\n }\n\n private _initLabelMark() {\n // @ts-ignore\n if (this._spec.label.visible !== true) {\n return;\n }\n\n const labelMark = this._createMark(PictogramSeries.mark.label, {\n isSeriesMark: false,\n parent: this._pictogramMark,\n groupKey: '_uniqueId',\n skipBeforeLayouted: true,\n depend: this.getMarksWithoutRoot()\n }) as ITextMark;\n\n if (labelMark) {\n this._labelMark = labelMark;\n this._labelMark.setDataView(this._mapViewData.getDataView());\n }\n }\n\n initLabelMarkStyle() {\n if (!this._labelMark) {\n return;\n }\n this.setMarkStyle(\n this._labelMark,\n {\n visible: d => !!this._validElement(d as SVGParsedElementExtend),\n x: d => this.dataToPosition(d, true)?.x,\n y: d => this.dataToPosition(d, true)?.y,\n text: d => d[this.nameField],\n textAlign: 'center',\n textBaseline: 'middle'\n },\n STATE_VALUE_ENUM.STATE_NORMAL,\n AttributeLevel.Series\n );\n }\n\n initMarkStyle() {\n const { root, viewBoxRect } = this._parsedSvgResult;\n const elements = this._mapViewData.getDataView().latestData as SVGParserResult['elements'];\n if (root) {\n this.setMarkStyle(\n this._pictogramMark,\n graphicAttributeTransform.group(root.attributes),\n 'normal',\n AttributeLevel.Built_In\n );\n if (root.transform) {\n this.setMarkStyle(\n this._pictogramMark,\n {\n postMatrix: () => root.transform\n },\n 'normal',\n AttributeLevel.Built_In\n );\n }\n if (viewBoxRect) {\n // fill should be true or content will be invisible\n this._pictogramMark.setMarkConfig({\n clip: true,\n clipPath: [createRect({ ...viewBoxRect, fill: true }) as any]\n });\n }\n }\n for (const element of elements) {\n const { _uniqueId, _finalAttributes: attributes } = element as SVGParsedElementExtend;\n const mark = this._pictogramMark.getMarkInUserId(_uniqueId);\n const valid = this._validElement(element);\n if (mark) {\n // 描边粗细跟随缩放倍数\n this.setMarkStyle(mark, { keepStrokeScale: true }, 'normal', AttributeLevel.Built_In);\n if (valid) {\n this.initMarkStyleWithSpec(mark, merge({}, this._spec.pictogram, this._spec[mark.name]));\n this.setMarkStyle(mark, attributes, 'normal', AttributeLevel.Series);\n mark.setPostProcess('fill', (result, datum) => {\n return isValid(result) ? result : this._spec.defaultFillColor;\n });\n } else {\n // 对于没有设置 name 的元素,不支持响应事件、改变样式\n mark.setMarkConfig({ interactive: false });\n this.setMarkStyle(mark, attributes, 'normal', AttributeLevel.Built_In);\n }\n }\n }\n\n this.initLabelMarkStyle();\n }\n /** 在 svg 中使用 name attribute 标注了的图元*/\n protected _validElement(element: SVGParsedElement) {\n return element.name || element._nameFromParent;\n }\n\n protected initTooltip() {\n this._tooltipHelper = new PictogramSeriesTooltipHelper(this);\n this.getMarksWithoutRoot().forEach(mark => {\n if (mark && mark.name) {\n this._tooltipHelper.activeTriggerSet.mark.add(mark);\n }\n });\n }\n\n dataToPosition(datum: Datum, global = false): IPoint {\n if (!datum) {\n return null;\n }\n const name = datum[this.nameField];\n if (!name) {\n return null;\n }\n\n const mark = this.getMarksWithoutRoot().filter(mark => mark.name === name);\n if (!mark || mark.length === 0) {\n return null;\n }\n let bounds = new Bounds();\n if (global) {\n mark.forEach(m => {\n bounds = bounds.union(m.getProduct().getGroupGraphicItem().globalAABBBounds);\n });\n } else {\n mark.forEach(m => {\n bounds = bounds.union(m.getProduct().getBounds());\n });\n }\n\n const point = { x: (bounds.x1 + bounds.x2) / 2, y: (bounds.y1 + bounds.y2) / 2 };\n\n if (global) {\n const { x, y } = this.getLayoutStartPoint();\n point.x -= x;\n point.y -= y;\n }\n return point;\n }\n\n coordToPosition(point: IPoint): IPoint | undefined {\n if (!point) {\n return null;\n }\n const { x, y } = point;\n const matrix = this.getRootMatrix();\n if (!matrix) {\n return null;\n }\n const position = {};\n matrix.getInverse().transformPoint({ x, y }, position as IPoint);\n return position as IPoint;\n }\n\n getRootMatrix() {\n return this.getPictogramRootGraphic()?.transMatrix as IMatrix;\n }\n\n getPictogramRootGraphic(): Group {\n return this._pictogramMark.getProduct()?.getGroupGraphicItem();\n }\n\n initData() {\n super.initData();\n const parsedSvg = svgSourceMap.get(this.svg);\n if (!parsedSvg) {\n this._option?.onError('no valid svg found!');\n }\n const svgData = new DataView(this._dataSet, { name: `pictogram_${this.id}_data` });\n registerDataSetInstanceTransform(this._dataSet, 'pictogram', pictogram);\n registerDataSetInstanceTransform(this._dataSet, 'lookup', lookup);\n svgData\n .parse([parsedSvg], {\n type: 'dataview'\n })\n .transform({ type: 'pictogram' })\n .transform({\n type: 'lookup',\n options: {\n from: () => this.getViewData().latestData,\n key: 'name',\n fields: this._nameField,\n set: (a: Datum, b: Datum) => {\n if (b) {\n a.data = b;\n }\n }\n }\n })\n .transform({\n type: 'lookup',\n options: {\n from: () => this.getViewData().latestData,\n key: '_nameFromParent',\n fields: this._nameField,\n set: (a: Datum, b: Datum) => {\n if (b) {\n a.data = b;\n }\n }\n }\n });\n this._data?.getDataView().target.addListener('change', svgData.reRunAllTransform);\n this._mapViewData = new SeriesData(this._option, svgData);\n }\n\n mapViewDataUpdate() {\n this._mapViewData.updateData();\n }\n\n onLayoutEnd(ctx: any): void {\n super.onLayoutEnd(ctx);\n this._mapViewData?.getDataView().reRunAllTransform();\n }\n\n updateSVGSize() {\n const { width: regionWidth, height: regionHeight } = this.getLayoutRect();\n const regionCenterX = regionWidth / 2;\n const regionCenterY = regionHeight / 2;\n const root = this.getPictogramRootGraphic();\n if (root) {\n const bounds = root.AABBBounds;\n const { x1, x2, y1, y2 } = root.AABBBounds;\n const width = bounds.width();\n const height = bounds.height();\n\n const rootCenterX = (x1 + x2) / 2;\n const rootCenterY = (y1 + y2) / 2;\n\n const scaleX = regionWidth / width;\n const scaleY = regionHeight / height;\n const scale = Math.min(scaleX, scaleY);\n\n root.scale(scale, scale, { x: rootCenterX, y: rootCenterY });\n root.translate(regionCenterX - rootCenterX, regionCenterY - rootCenterY);\n }\n }\n\n protected initEvent(): void {\n super.initEvent();\n this._mapViewData.getDataView()?.target.addListener('change', this.mapViewDataUpdate.bind(this));\n // 必须在有 vrender mark 的时机后更新\n this.event.on(VGRAMMAR_HOOK_EVENT.AFTER_MARK_LAYOUT_END, this.updateSVGSize.bind(this));\n }\n\n handleZoom(e: ZoomEventParam) {\n const { scale, scaleCenter } = e;\n if (scale === 1) {\n return;\n }\n\n const root = this.getPictogramRootGraphic();\n if (root) {\n if (!root.attribute.postMatrix) {\n root.setAttributes({\n postMatrix: new Matrix()\n });\n }\n root.scale(scale, scale, scaleCenter);\n }\n }\n\n handlePan(e: PanEventParam) {\n const { delta } = e;\n if (delta[0] === 0 && delta[1] === 0) {\n return;\n }\n const root = this.getPictogramRootGraphic();\n if (root) {\n if (!root.attribute.postMatrix) {\n root.setAttributes({\n postMatrix: new Matrix()\n });\n }\n root.translate(delta[0], delta[1]);\n }\n }\n\n getMarkData(datum: Datum) {\n return datum.data ?? {};\n }\n\n getMeasureField(): string[] {\n return [this.valueField];\n }\n\n getDimensionField(): string[] {\n return [this.nameField];\n }\n protected _getSeriesInfo(field: string, keys: string[]) {\n const defaultShapeType = this.getDefaultShapeType();\n return keys.map(key => {\n return {\n key,\n originalKey: key,\n style: this.getSeriesStyle({\n data: {\n [field]: key\n }\n }),\n shapeType: defaultShapeType\n } as ISeriesSeriesInfo;\n });\n }\n}\n\nexport const registerPictogramSeries = () => {\n // 注册语法元素\n Factory.registerSeries(PictogramSeries.type, PictogramSeries);\n Factory.registerImplement('registerSVG', registerSVGSource);\n Factory.registerImplement('unregisterSVG', unregisterSVGSource);\n registerElementHighlightByGraphicName();\n registerElementSelectByGraphicName();\n};\n"]}
@@ -0,0 +1,7 @@
1
+ import { DataView } from '@visactor/vdataset';
2
+ import type { ISVGSourceOption } from '@visactor/vdataset';
3
+ export declare const svgSourceMap: Map<string, DataView>;
4
+ export declare function registerSVGSource(key: string, source: ISVGSourceOption): void;
5
+ export declare function unregisterSVGSource(key: string): void;
6
+ export declare function getSVGSource(type: string): DataView;
7
+ export declare function clearSVGSource(): void;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.clearSVGSource = exports.getSVGSource = exports.unregisterSVGSource = exports.registerSVGSource = exports.svgSourceMap = void 0;
6
+
7
+ const vdataset_1 = require("@visactor/vdataset"), register_1 = require("../../data/register"), util_1 = require("../../util");
8
+
9
+ let svgDataSet;
10
+
11
+ function initSVGDataSet() {
12
+ svgDataSet || (svgDataSet = new vdataset_1.DataSet, (0, register_1.registerDataSetInstanceParser)(svgDataSet, "svg", vdataset_1.svgParser));
13
+ }
14
+
15
+ function registerSVGSource(key, source) {
16
+ exports.svgSourceMap.has(key) && (0, util_1.warn)(`svg source key of '${key}' already exists, will be overwritten.`),
17
+ initSVGDataSet();
18
+ const dataView = new vdataset_1.DataView(svgDataSet);
19
+ dataView.parse(source, {
20
+ type: "svg"
21
+ }), exports.svgSourceMap.set(key, dataView);
22
+ }
23
+
24
+ function unregisterSVGSource(key) {
25
+ exports.svgSourceMap.has(key) ? exports.svgSourceMap.delete(key) : (0, util_1.warn)(`map type of '${key}' does not exists.`);
26
+ }
27
+
28
+ function getSVGSource(type) {
29
+ return exports.svgSourceMap.get(type);
30
+ }
31
+
32
+ function clearSVGSource() {
33
+ exports.svgSourceMap.clear(), svgDataSet = null;
34
+ }
35
+
36
+ exports.svgSourceMap = new Map, exports.registerSVGSource = registerSVGSource, exports.unregisterSVGSource = unregisterSVGSource,
37
+ exports.getSVGSource = getSVGSource, exports.clearSVGSource = clearSVGSource;
38
+ //# sourceMappingURL=svg-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/series/pictogram/svg-source.ts"],"names":[],"mappings":";;;AAAA,iDAAkE;AAElE,kDAAoE;AACpE,qCAAkC;AAErB,QAAA,YAAY,GAAG,IAAI,GAAG,EAAoB,CAAC;AAExD,IAAI,UAA0B,CAAC;AAE/B,SAAS,cAAc;IACrB,IAAI,UAAU,EAAE;QACd,OAAO;KACR;IACD,UAAU,GAAG,IAAI,kBAAO,EAAE,CAAC;IAC3B,IAAA,wCAA6B,EAAC,UAAU,EAAE,KAAK,EAAE,oBAAS,CAAC,CAAC;AAC9D,CAAC;AAED,SAAgB,iBAAiB,CAAC,GAAW,EAAE,MAAwB;IACrE,IAAI,oBAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QACzB,IAAA,WAAI,EAAC,sBAAsB,GAAG,wCAAwC,CAAC,CAAC;KACzE;IACD,cAAc,EAAE,CAAC;IACjB,MAAM,QAAQ,GAAG,IAAI,mBAAQ,CAAC,UAAW,CAAC,CAAC;IAC3C,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE;QACrB,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;IAEH,oBAAY,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAClC,CAAC;AAXD,8CAWC;AAED,SAAgB,mBAAmB,CAAC,GAAW;IAC7C,IAAI,CAAC,oBAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QAC1B,IAAA,WAAI,EAAC,gBAAgB,GAAG,oBAAoB,CAAC,CAAC;QAC9C,OAAO;KACR;IACD,oBAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAND,kDAMC;AAED,SAAgB,YAAY,CAAC,IAAY;IACvC,OAAO,oBAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAFD,oCAEC;AAED,SAAgB,cAAc;IAC5B,oBAAY,CAAC,KAAK,EAAE,CAAC;IACrB,UAAU,GAAG,IAAI,CAAC;AACpB,CAAC;AAHD,wCAGC","file":"svg-source.js","sourcesContent":["import { DataSet, DataView, svgParser } from '@visactor/vdataset';\nimport type { ISVGSourceOption } from '@visactor/vdataset';\nimport { registerDataSetInstanceParser } from '../../data/register';\nimport { warn } from '../../util';\n\nexport const svgSourceMap = new Map<string, DataView>();\n\nlet svgDataSet: DataSet | null;\n\nfunction initSVGDataSet() {\n if (svgDataSet) {\n return;\n }\n svgDataSet = new DataSet();\n registerDataSetInstanceParser(svgDataSet, 'svg', svgParser);\n}\n\nexport function registerSVGSource(key: string, source: ISVGSourceOption) {\n if (svgSourceMap.has(key)) {\n warn(`svg source key of '${key}' already exists, will be overwritten.`);\n }\n initSVGDataSet();\n const dataView = new DataView(svgDataSet!);\n dataView.parse(source, {\n type: 'svg'\n });\n\n svgSourceMap.set(key, dataView);\n}\n\nexport function unregisterSVGSource(key: string) {\n if (!svgSourceMap.has(key)) {\n warn(`map type of '${key}' does not exists.`);\n return;\n }\n svgSourceMap.delete(key);\n}\n\nexport function getSVGSource(type: string) {\n return svgSourceMap.get(type);\n}\n\nexport function clearSVGSource() {\n svgSourceMap.clear();\n svgDataSet = null;\n}\n"]}
@@ -0,0 +1,9 @@
1
+ import type { ISeriesTooltipHelper } from '../interface';
2
+ import { BaseSeriesTooltipHelper } from '../base/tooltip-helper';
3
+ import { TooltipHandlerParams } from '../../component';
4
+ import { Datum } from '../../typings';
5
+ export declare class PictogramSeriesTooltipHelper extends BaseSeriesTooltipHelper implements ISeriesTooltipHelper {
6
+ dimensionTooltipTitleCallback: (datum: any) => any;
7
+ markTooltipValueCallback: (datum: Datum, params?: TooltipHandlerParams) => any;
8
+ markTooltipKeyCallback: (datum: Datum) => any;
9
+ }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.PictogramSeriesTooltipHelper = void 0;
6
+
7
+ const tooltip_helper_1 = require("../base/tooltip-helper");
8
+
9
+ class PictogramSeriesTooltipHelper extends tooltip_helper_1.BaseSeriesTooltipHelper {
10
+ constructor() {
11
+ super(...arguments), this.dimensionTooltipTitleCallback = datum => {
12
+ var _a;
13
+ const series = this.series;
14
+ return null !== (_a = this._getDimensionData(datum)) && void 0 !== _a ? _a : series.getDatumName(datum);
15
+ }, this.markTooltipValueCallback = (datum, params) => {
16
+ const {measureFields: measureFields} = this._seriesCacheInfo;
17
+ if (measureFields[0] && datum.data) return datum.data[measureFields[0]];
18
+ }, this.markTooltipKeyCallback = datum => {
19
+ var _a;
20
+ return null === (_a = datum.data) || void 0 === _a ? void 0 : _a[this.series.getDimensionField()[0]];
21
+ };
22
+ }
23
+ }
24
+
25
+ exports.PictogramSeriesTooltipHelper = PictogramSeriesTooltipHelper;
26
+ //# sourceMappingURL=tooltip-helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/series/pictogram/tooltip-helper.ts"],"names":[],"mappings":";;;AACA,2DAAiE;AAKjE,MAAa,4BAA6B,SAAQ,wCAAuB;IAAzE;;QACE,kCAA6B,GAAG,CAAC,KAAU,EAAE,EAAE;;YAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAyB,CAAC;YAC9C,OAAO,MAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,mCAAI,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACrE,CAAC,CAAC;QAEF,6BAAwB,GAAG,CAAC,KAAY,EAAE,MAA6B,EAAE,EAAE;YACzE,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC;YAChD,IAAI,aAAa,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE;gBAClC,OAAO,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;aACrC;QACH,CAAC,CAAC;QAEF,2BAAsB,GAAG,CAAC,KAAY,EAAE,EAAE;;YACxC,OAAO,MAAA,KAAK,CAAC,IAAI,0CAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC,CAAC;IACJ,CAAC;CAAA;AAhBD,oEAgBC","file":"tooltip-helper.js","sourcesContent":["import type { ISeriesTooltipHelper } from '../interface';\nimport { BaseSeriesTooltipHelper } from '../base/tooltip-helper';\nimport { PictogramSeries } from './pictogram';\nimport { TooltipHandlerParams } from '../../component';\nimport { Datum } from '../../typings';\n\nexport class PictogramSeriesTooltipHelper extends BaseSeriesTooltipHelper implements ISeriesTooltipHelper {\n dimensionTooltipTitleCallback = (datum: any) => {\n const series = this.series as PictogramSeries;\n return this._getDimensionData(datum) ?? series.getDatumName(datum);\n };\n\n markTooltipValueCallback = (datum: Datum, params?: TooltipHandlerParams) => {\n const { measureFields } = this._seriesCacheInfo;\n if (measureFields[0] && datum.data) {\n return datum.data[measureFields[0]];\n }\n };\n\n markTooltipKeyCallback = (datum: Datum) => {\n return datum.data?.[this.series.getDimensionField()[0]];\n };\n}\n"]}
@@ -46,6 +46,7 @@ export interface ISankeySeriesSpec extends Omit<ISeriesSpec, 'data'>, IAnimation
46
46
  effect: 'self' | 'adjacency' | 'related';
47
47
  };
48
48
  [SeriesMarkNameEnum.label]?: ISankeyLabelSpec | ISankeyLabelSpec[];
49
+ overflow?: 'scroll' | 'hidden' | 'scroll-x' | 'scroll-y';
49
50
  }
50
51
  export interface SankeyLinkDatum {
51
52
  source: string | number;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/series/sankey/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { ISeriesSpec, DirectionType, IMarkTheme } from '../../typings';\nimport type { IMarkSpec } from '../../typings/spec/common';\nimport type { IRectMarkSpec, ILinkPathMarkSpec } from '../../typings/visual';\nimport type { IAnimationSpec } from '../../animation/spec';\nimport type { SankeyAppearPreset, SankeyMark } from './animation';\nimport type { SeriesMarkNameEnum } from '../interface/type';\nimport type { ILabelSpec } from '../../component/label';\n\nexport type ISankeyLabelSpec = ILabelSpec & {\n /**\n * 标签布局方式\n * @default 'outside'\n */\n position?: 'outside' | 'inside-start' | 'inside-middle' | 'inside-end' | 'left' | 'right';\n /** 标签文字缩略 */\n limit?: number;\n};\n\nexport interface ISankeySeriesSpec extends Omit<ISeriesSpec, 'data'>, IAnimationSpec<SankeyMark, SankeyAppearPreset> {\n nameKey: any;\n type: 'sankey';\n\n /**\n * 数据字段配置\n */\n /** 节点名称字段配置 */\n categoryField: string;\n /** 节点之间关系的权重字段 */\n valueField: string;\n /** 来源节点数据字段\n * 层级数据不提供\n */\n sourceField?: string;\n /** 目标节点数据字段\n * 层级数据不提供\n */\n targetField?: string;\n\n /**\n * 图表布局方向\n */\n direction?: DirectionType;\n /**\n * 节点的对齐类型,所有深度相同的节点,采用什么对齐方式,决定了节点在第几层:\n * - 横向布局的桑基图,用于计算节点x坐标\n * - 纵向布局的桑基图,用于计算节点y坐标\n */\n nodeAlign?: 'left' | 'right' | 'center' | 'justify' | 'start' | 'end';\n /**\n * 横向布局的桑基图,设置节点Y坐标的对齐方式:\n * 'start' - '顶部对齐'\n * 'end' - '底部对齐'\n * 'middle' - '居中对齐'\n *\n * 纵向布局的桑基图,设置节点X坐标的对齐方式:\n * 'start' - '左对齐'\n * 'end' - '右对齐'\n * 'middle' - '居中对齐'\n * 'parent' - '父节点',从1.12.14版本开始支持\n *\n * @since 1.12.4\n */\n crossNodeAlign?: 'start' | 'end' | 'middle' | 'parent';\n /**\n * 是否反向\n * @since 1.12.2\n */\n inverse?: boolean;\n /**\n * 同一层中两个节点之间的间隙大小\n */\n nodeGap?: number;\n /**\n * 每个节点的宽度,支持三种取值\n * 1. 百分比字符串,例如:{ nodeWidth: '12%' }\n * 2. 以'px'为单位的简单数字,eg: { nodeWidth: 20 }\n * 3. function,通过自定义计算指定nodeWidth\n */\n nodeWidth?: string | number | ((node: SankeyNodeElement) => number);\n /**\n * link宽度,单位px\n */\n linkWidth?: number | ((link: SankeyLinkElement) => number);\n /**\n * link + node 的最小宽度\n */\n minStepWidth?: number;\n /**\n * 数据不为零或空时节点的最小大小\n * - 这个配置可以用来避免数据太小时看不到太细的节点\n * - 建议小于5px\n */\n minNodeHeight?: number;\n /**\n * 数据不为零或空时边的最小大小\n * - 这个配置可以用来避免数据太小的时候看不到太细的链接\n * - 建议小于5px\n * - 当同时指定 `minNodeHeight` 和 `minLinkHeight` 两个选项时,此选项应小于 `minNodeHeight`\n */\n minLinkHeight?: number;\n /**\n * 数据不为零或空时节点的最大大小\n * @since 1.12.14\n */\n maxNodeHeight?: number;\n /**\n * 数据不为零或空时边的最大大小\n * - 当同时指定 `maxNodeHeight` 和 `maxLinkHeight` 两个选项时,此选项应小于 `maxNodeHeight`\n * @since 1.12.14\n */\n maxLinkHeight?: number;\n /** 布局的迭代次数 */\n iterations?: number;\n /** 解析node的key,defaultValue */\n nodeKey?: string | number | ((datum: SankeyNodeDatum) => string | number);\n /** 按此funtion排序link */\n linkSortBy?: (a: SankeyLinkElement, b: SankeyLinkElement) => number;\n /** 按此funtion排序node */\n nodeSortBy?: (a: SankeyNodeElement, b: SankeyNodeElement) => number;\n /** 自定义指定节点层 */\n setNodeLayer?: (datum: SankeyNodeDatum) => number;\n /**\n * 是否丢弃孤立的节点\n * @since 1.11.0\n */\n dropIsolatedNode?: boolean;\n /**\n * set the height of node\n * @since 1.11.0\n */\n nodeHeight?: number | ((node: SankeyNodeElement) => number);\n /**\n * set the height of link\n * @since 1.11.0\n */\n linkHeight?: number | ((link: SankeyLinkElement, sourceNode: SankeyNodeElement, sourceNodeHeight: number) => number);\n /**\n * each node has same height\n * @since 1.11.0\n */\n equalNodeHeight?: boolean;\n /**\n * the layout type of link\n * @since 1.11.0\n */\n linkOverlap?: 'start' | 'center' | 'end';\n\n /** 节点配置 */\n [SeriesMarkNameEnum.node]?: IMarkSpec<IRectMarkSpec>;\n\n /** 边配置 */\n [SeriesMarkNameEnum.link]?: IMarkSpec<ILinkPathMarkSpec>;\n\n /** 联动交互配置 */\n emphasis?: {\n /** 是否开启交互 */\n enable: boolean;\n /**\n * 交互触发类型\n * 默认为‘click'\n */\n trigger?: 'click' | 'hover';\n /**桑基图提供3种在节点上的交互联动效果\n * self: 仅高亮当前节点。\n * adjacency: 高亮当前节点上下游节点和关联的边,淡化其它图形元素。\n * related: 高亮与当前节点相关的整条路径上的节点和边,淡化其它图形元素。 */\n effect: 'self' | 'adjacency' | 'related';\n };\n\n /** 标签配置 */\n [SeriesMarkNameEnum.label]?: ISankeyLabelSpec | ISankeyLabelSpec[];\n\n /** 进度条配置 */\n // scroll?: IScrollSpec & {\n // /** 是否开启进度条 */\n // enable: boolean;\n // };\n}\n\nexport interface SankeyLinkDatum {\n source: string | number;\n target: string | number;\n value?: number;\n}\n\nexport interface SankeyNodeDatum {\n value?: number;\n}\n\nexport interface HierarchyNodeDatum {\n value?: number;\n children?: HierarchyNodeDatum[];\n}\n\nexport type SankeyData =\n | {\n nodes?: SankeyNodeDatum[];\n links: SankeyLinkDatum[];\n }\n | {\n nodes: HierarchyNodeDatum[];\n };\n\n/**\n * The node element after sankey layout\n */\nexport interface SankeyNodeElement {\n key: string | number;\n index: number;\n /** the depth of node, from source to target */\n depth: number;\n\n /** the depth of node, from target to source */\n endDepth?: number;\n /** the final layer index after layout */\n layer?: number;\n isLastLayer?: boolean;\n value: number;\n datum: SankeyNodeDatum;\n sourceLinks: SankeyLinkElement[];\n targetLinks: SankeyLinkElement[];\n x0?: number;\n y0?: number;\n x1?: number;\n y1?: number;\n}\n/**\n * the link element after sankey layout\n */\nexport interface SankeyLinkElement {\n vertical?: boolean;\n index: number;\n source: string | number;\n target: string | number;\n value: number;\n datum: SankeyLinkDatum | SankeyLinkDatum[];\n thickness?: number;\n sourceRect?: { x0: number; x1: number; y0: number; y1: number };\n targetRect?: { x0: number; x1: number; y0: number; y1: number };\n /** this will only be generate in hierarchy node data*/\n parents?: (string | number)[];\n y0?: number;\n y1?: number;\n x0?: number;\n x1?: number;\n}\n\nexport type SankeyLayoutResult = {\n nodes: SankeyNodeElement[];\n links: SankeyLinkElement[];\n columns: SankeyNodeElement[][];\n}[];\n\nexport interface ISankeySeriesTheme {\n [SeriesMarkNameEnum.node]?: IMarkTheme<IRectMarkSpec>;\n [SeriesMarkNameEnum.link]?: IMarkTheme<ILinkPathMarkSpec>;\n}\n"]}
1
+ {"version":3,"sources":["../src/series/sankey/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { ISeriesSpec, DirectionType, IMarkTheme } from '../../typings';\nimport type { IMarkSpec } from '../../typings/spec/common';\nimport type { IRectMarkSpec, ILinkPathMarkSpec } from '../../typings/visual';\nimport type { IAnimationSpec } from '../../animation/spec';\nimport type { SankeyAppearPreset, SankeyMark } from './animation';\nimport type { SeriesMarkNameEnum } from '../interface/type';\nimport type { ILabelSpec } from '../../component/label';\n\nexport type ISankeyLabelSpec = ILabelSpec & {\n /**\n * 标签布局方式\n * @default 'outside'\n */\n position?: 'outside' | 'inside-start' | 'inside-middle' | 'inside-end' | 'left' | 'right';\n /** 标签文字缩略 */\n limit?: number;\n};\n\nexport interface ISankeySeriesSpec extends Omit<ISeriesSpec, 'data'>, IAnimationSpec<SankeyMark, SankeyAppearPreset> {\n nameKey: any;\n type: 'sankey';\n\n /**\n * 数据字段配置\n */\n /** 节点名称字段配置 */\n categoryField: string;\n /** 节点之间关系的权重字段 */\n valueField: string;\n /** 来源节点数据字段\n * 层级数据不提供\n */\n sourceField?: string;\n /** 目标节点数据字段\n * 层级数据不提供\n */\n targetField?: string;\n\n /**\n * 图表布局方向\n */\n direction?: DirectionType;\n /**\n * 节点的对齐类型,所有深度相同的节点,采用什么对齐方式,决定了节点在第几层:\n * - 横向布局的桑基图,用于计算节点x坐标\n * - 纵向布局的桑基图,用于计算节点y坐标\n */\n nodeAlign?: 'left' | 'right' | 'center' | 'justify' | 'start' | 'end';\n /**\n * 横向布局的桑基图,设置节点Y坐标的对齐方式:\n * 'start' - '顶部对齐'\n * 'end' - '底部对齐'\n * 'middle' - '居中对齐'\n *\n * 纵向布局的桑基图,设置节点X坐标的对齐方式:\n * 'start' - '左对齐'\n * 'end' - '右对齐'\n * 'middle' - '居中对齐'\n * 'parent' - '父节点',从1.12.14版本开始支持\n *\n * @since 1.12.4\n */\n crossNodeAlign?: 'start' | 'end' | 'middle' | 'parent';\n /**\n * 是否反向\n * @since 1.12.2\n */\n inverse?: boolean;\n /**\n * 同一层中两个节点之间的间隙大小\n */\n nodeGap?: number;\n /**\n * 每个节点的宽度,支持三种取值\n * 1. 百分比字符串,例如:{ nodeWidth: '12%' }\n * 2. 以'px'为单位的简单数字,eg: { nodeWidth: 20 }\n * 3. function,通过自定义计算指定nodeWidth\n */\n nodeWidth?: string | number | ((node: SankeyNodeElement) => number);\n /**\n * link宽度,单位px\n */\n linkWidth?: number | ((link: SankeyLinkElement) => number);\n /**\n * link + node 的最小宽度\n */\n minStepWidth?: number;\n /**\n * 数据不为零或空时节点的最小大小\n * - 这个配置可以用来避免数据太小时看不到太细的节点\n * - 建议小于5px\n */\n minNodeHeight?: number;\n /**\n * 数据不为零或空时边的最小大小\n * - 这个配置可以用来避免数据太小的时候看不到太细的链接\n * - 建议小于5px\n * - 当同时指定 `minNodeHeight` 和 `minLinkHeight` 两个选项时,此选项应小于 `minNodeHeight`\n */\n minLinkHeight?: number;\n /**\n * 数据不为零或空时节点的最大大小\n * @since 1.12.14\n */\n maxNodeHeight?: number;\n /**\n * 数据不为零或空时边的最大大小\n * - 当同时指定 `maxNodeHeight` 和 `maxLinkHeight` 两个选项时,此选项应小于 `maxNodeHeight`\n * @since 1.12.14\n */\n maxLinkHeight?: number;\n /** 布局的迭代次数 */\n iterations?: number;\n /** 解析node的key,defaultValue */\n nodeKey?: string | number | ((datum: SankeyNodeDatum) => string | number);\n /** 按此funtion排序link */\n linkSortBy?: (a: SankeyLinkElement, b: SankeyLinkElement) => number;\n /** 按此funtion排序node */\n nodeSortBy?: (a: SankeyNodeElement, b: SankeyNodeElement) => number;\n /** 自定义指定节点层 */\n setNodeLayer?: (datum: SankeyNodeDatum) => number;\n /**\n * 是否丢弃孤立的节点\n * @since 1.11.0\n */\n dropIsolatedNode?: boolean;\n /**\n * set the height of node\n * @since 1.11.0\n */\n nodeHeight?: number | ((node: SankeyNodeElement) => number);\n /**\n * set the height of link\n * @since 1.11.0\n */\n linkHeight?: number | ((link: SankeyLinkElement, sourceNode: SankeyNodeElement, sourceNodeHeight: number) => number);\n /**\n * each node has same height\n * @since 1.11.0\n */\n equalNodeHeight?: boolean;\n /**\n * the layout type of link\n * @since 1.11.0\n */\n linkOverlap?: 'start' | 'center' | 'end';\n\n /** 节点配置 */\n [SeriesMarkNameEnum.node]?: IMarkSpec<IRectMarkSpec>;\n\n /** 边配置 */\n [SeriesMarkNameEnum.link]?: IMarkSpec<ILinkPathMarkSpec>;\n\n /** 联动交互配置 */\n emphasis?: {\n /** 是否开启交互 */\n enable: boolean;\n /**\n * 交互触发类型\n * 默认为‘click'\n */\n trigger?: 'click' | 'hover';\n /**桑基图提供3种在节点上的交互联动效果\n * self: 仅高亮当前节点。\n * adjacency: 高亮当前节点上下游节点和关联的边,淡化其它图形元素。\n * related: 高亮与当前节点相关的整条路径上的节点和边,淡化其它图形元素。 */\n effect: 'self' | 'adjacency' | 'related';\n };\n\n /** 标签配置 */\n [SeriesMarkNameEnum.label]?: ISankeyLabelSpec | ISankeyLabelSpec[];\n\n /**\n * 当制定了节点、边的宽度的时候,可以配置这个属性\n * 当宽度大于图表region的宽度、高度大于图表resion高度的时候是否自动产生滚动条\n * @since 1.13.0\n */\n overflow?: 'scroll' | 'hidden' | 'scroll-x' | 'scroll-y';\n\n /** 进度条配置 */\n // scroll?: IScrollSpec & {\n // /** 是否开启进度条 */\n // enable: boolean;\n // };\n}\n\nexport interface SankeyLinkDatum {\n source: string | number;\n target: string | number;\n value?: number;\n}\n\nexport interface SankeyNodeDatum {\n value?: number;\n}\n\nexport interface HierarchyNodeDatum {\n value?: number;\n children?: HierarchyNodeDatum[];\n}\n\nexport type SankeyData =\n | {\n nodes?: SankeyNodeDatum[];\n links: SankeyLinkDatum[];\n }\n | {\n nodes: HierarchyNodeDatum[];\n };\n\n/**\n * The node element after sankey layout\n */\nexport interface SankeyNodeElement {\n key: string | number;\n index: number;\n /** the depth of node, from source to target */\n depth: number;\n\n /** the depth of node, from target to source */\n endDepth?: number;\n /** the final layer index after layout */\n layer?: number;\n isLastLayer?: boolean;\n value: number;\n datum: SankeyNodeDatum;\n sourceLinks: SankeyLinkElement[];\n targetLinks: SankeyLinkElement[];\n x0?: number;\n y0?: number;\n x1?: number;\n y1?: number;\n}\n/**\n * the link element after sankey layout\n */\nexport interface SankeyLinkElement {\n vertical?: boolean;\n index: number;\n source: string | number;\n target: string | number;\n value: number;\n datum: SankeyLinkDatum | SankeyLinkDatum[];\n thickness?: number;\n sourceRect?: { x0: number; x1: number; y0: number; y1: number };\n targetRect?: { x0: number; x1: number; y0: number; y1: number };\n /** this will only be generate in hierarchy node data*/\n parents?: (string | number)[];\n y0?: number;\n y1?: number;\n x0?: number;\n x1?: number;\n}\n\nexport type SankeyLayoutResult = {\n nodes: SankeyNodeElement[];\n links: SankeyLinkElement[];\n columns: SankeyNodeElement[][];\n}[];\n\nexport interface ISankeySeriesTheme {\n [SeriesMarkNameEnum.node]?: IMarkTheme<IRectMarkSpec>;\n [SeriesMarkNameEnum.link]?: IMarkTheme<ILinkPathMarkSpec>;\n}\n"]}