@visactor/vgrammar-core 0.7.7 → 0.8.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 (542) hide show
  1. package/cjs/component/axis.js.map +1 -1
  2. package/cjs/component/datazoom.d.ts +7 -4
  3. package/cjs/component/datazoom.js +21 -43
  4. package/cjs/component/datazoom.js.map +1 -1
  5. package/cjs/component/grid.js.map +1 -1
  6. package/cjs/component/index.d.ts +0 -2
  7. package/cjs/component/index.js +1 -19
  8. package/cjs/component/index.js.map +1 -1
  9. package/cjs/component/label.js.map +1 -1
  10. package/cjs/component/legend.d.ts +1 -3
  11. package/cjs/component/legend.js +5 -26
  12. package/cjs/component/legend.js.map +1 -1
  13. package/cjs/component/player.d.ts +1 -2
  14. package/cjs/component/player.js +15 -31
  15. package/cjs/component/player.js.map +1 -1
  16. package/cjs/component/scale.d.ts +1 -0
  17. package/cjs/component/scale.js +3 -0
  18. package/cjs/component/scale.js.map +1 -1
  19. package/cjs/component/scrollbar.d.ts +3 -4
  20. package/cjs/component/scrollbar.js +12 -54
  21. package/cjs/component/scrollbar.js.map +1 -1
  22. package/cjs/component/slider.d.ts +2 -5
  23. package/cjs/component/slider.js +4 -26
  24. package/cjs/component/slider.js.map +1 -1
  25. package/cjs/component/title.js.map +1 -1
  26. package/cjs/core/factory.d.ts +6 -3
  27. package/cjs/core/factory.js +9 -2
  28. package/cjs/core/factory.js.map +1 -1
  29. package/cjs/env.d.ts +1 -0
  30. package/cjs/env.js +20 -0
  31. package/cjs/env.js.map +1 -0
  32. package/cjs/glyph/index.js +2 -1
  33. package/cjs/glyph/link-path.js +1 -2
  34. package/cjs/graph/animation/animate.js +25 -19
  35. package/cjs/graph/animation/animate.js.map +1 -1
  36. package/cjs/graph/animation/animation/grow-cartesian.js.map +1 -1
  37. package/cjs/graph/animation/animator.js +4 -4
  38. package/cjs/graph/animation/animator.js.map +1 -1
  39. package/cjs/graph/animation/attribute.d.ts +2 -2
  40. package/cjs/graph/animation/attribute.js +12 -12
  41. package/cjs/graph/animation/attribute.js.map +1 -1
  42. package/cjs/graph/animation/morph.js +4 -4
  43. package/cjs/graph/animation/morph.js.map +1 -1
  44. package/cjs/graph/attributes/index.js +1 -1
  45. package/cjs/graph/attributes/index.js.map +1 -1
  46. package/cjs/graph/canvas-renderer.d.ts +1 -1
  47. package/cjs/graph/canvas-renderer.js +5 -5
  48. package/cjs/graph/canvas-renderer.js.map +1 -1
  49. package/cjs/graph/element.d.ts +1 -1
  50. package/cjs/graph/element.js +4 -4
  51. package/cjs/graph/element.js.map +1 -1
  52. package/cjs/graph/enums.d.ts +25 -8
  53. package/cjs/graph/enums.js +23 -14
  54. package/cjs/graph/enums.js.map +1 -1
  55. package/cjs/graph/glyph-element.d.ts +1 -1
  56. package/cjs/graph/glyph-element.js.map +1 -1
  57. package/cjs/graph/mark/encode.d.ts +0 -3
  58. package/cjs/graph/mark/encode.js +3 -12
  59. package/cjs/graph/mark/encode.js.map +1 -1
  60. package/cjs/graph/mark/large-rects.d.ts +2 -2
  61. package/cjs/graph/mark/large-rects.js +3 -3
  62. package/cjs/graph/mark/large-rects.js.map +1 -1
  63. package/cjs/graph/mark/large-symbols.d.ts +2 -2
  64. package/cjs/graph/mark/large-symbols.js +3 -3
  65. package/cjs/graph/mark/large-symbols.js.map +1 -1
  66. package/cjs/graph/util/env.js +2 -2
  67. package/cjs/graph/util/env.js.map +1 -1
  68. package/cjs/graph/util/events-extend.d.ts +1 -1
  69. package/cjs/graph/util/events-extend.js +1 -1
  70. package/cjs/graph/util/events-extend.js.map +1 -1
  71. package/cjs/graph/util/graphic.d.ts +3 -3
  72. package/cjs/graph/util/graphic.js +21 -21
  73. package/cjs/graph/util/graphic.js.map +1 -1
  74. package/cjs/index.d.ts +5 -1
  75. package/cjs/index.js +13 -3
  76. package/cjs/index.js.map +1 -1
  77. package/cjs/interactions/base-tooltip.d.ts +29 -0
  78. package/cjs/interactions/base-tooltip.js +74 -0
  79. package/cjs/interactions/base-tooltip.js.map +1 -0
  80. package/cjs/interactions/base.d.ts +14 -0
  81. package/cjs/interactions/base.js +41 -0
  82. package/cjs/interactions/base.js.map +1 -0
  83. package/cjs/interactions/brush-active.d.ts +17 -0
  84. package/cjs/interactions/brush-active.js +27 -0
  85. package/cjs/interactions/brush-active.js.map +1 -0
  86. package/cjs/interactions/brush-base.d.ts +43 -0
  87. package/cjs/interactions/brush-base.js +106 -0
  88. package/cjs/interactions/brush-base.js.map +1 -0
  89. package/cjs/interactions/brush-filter.d.ts +24 -0
  90. package/cjs/interactions/brush-filter.js +34 -0
  91. package/cjs/interactions/brush-filter.js.map +1 -0
  92. package/cjs/interactions/brush-highlight.d.ts +17 -0
  93. package/cjs/interactions/brush-highlight.js +34 -0
  94. package/cjs/interactions/brush-highlight.js.map +1 -0
  95. package/cjs/interactions/crosshair.d.ts +53 -0
  96. package/cjs/{component → interactions}/crosshair.js +80 -79
  97. package/cjs/interactions/crosshair.js.map +1 -0
  98. package/cjs/interactions/datazoom-filter.d.ts +13 -0
  99. package/cjs/interactions/datazoom-filter.js +42 -0
  100. package/cjs/interactions/datazoom-filter.js.map +1 -0
  101. package/cjs/interactions/dimension-tooltip.d.ts +18 -0
  102. package/cjs/interactions/dimension-tooltip.js +99 -0
  103. package/cjs/interactions/dimension-tooltip.js.map +1 -0
  104. package/cjs/interactions/drill-down.d.ts +25 -0
  105. package/cjs/interactions/drill-down.js +48 -0
  106. package/cjs/interactions/drill-down.js.map +1 -0
  107. package/cjs/interactions/element-active-by-legend.d.ts +17 -0
  108. package/cjs/interactions/element-active-by-legend.js +44 -0
  109. package/cjs/interactions/element-active-by-legend.js.map +1 -0
  110. package/cjs/interactions/element-active.d.ts +16 -0
  111. package/cjs/interactions/element-active.js +33 -0
  112. package/cjs/interactions/element-active.js.map +1 -0
  113. package/cjs/interactions/element-highlight-by-group.d.ts +17 -0
  114. package/cjs/interactions/element-highlight-by-group.js +53 -0
  115. package/cjs/interactions/element-highlight-by-group.js.map +1 -0
  116. package/cjs/interactions/element-highlight-by-key.d.ts +17 -0
  117. package/cjs/interactions/element-highlight-by-key.js +53 -0
  118. package/cjs/interactions/element-highlight-by-key.js.map +1 -0
  119. package/cjs/interactions/element-highlight-by-legend.d.ts +17 -0
  120. package/cjs/interactions/element-highlight-by-legend.js +47 -0
  121. package/cjs/interactions/element-highlight-by-legend.js.map +1 -0
  122. package/cjs/interactions/element-highlight-by-name.d.ts +18 -0
  123. package/cjs/interactions/element-highlight-by-name.js +59 -0
  124. package/cjs/interactions/element-highlight-by-name.js.map +1 -0
  125. package/cjs/interactions/element-highlight.d.ts +17 -0
  126. package/cjs/interactions/element-highlight.js +48 -0
  127. package/cjs/interactions/element-highlight.js.map +1 -0
  128. package/cjs/interactions/element-select.d.ts +18 -0
  129. package/cjs/interactions/element-select.js +42 -0
  130. package/cjs/interactions/element-select.js.map +1 -0
  131. package/cjs/interactions/filter.d.ts +20 -0
  132. package/cjs/interactions/filter.js +37 -0
  133. package/cjs/interactions/filter.js.map +1 -0
  134. package/cjs/interactions/fish-eye.d.ts +38 -0
  135. package/cjs/interactions/fish-eye.js +109 -0
  136. package/cjs/interactions/fish-eye.js.map +1 -0
  137. package/cjs/interactions/index.d.ts +50 -0
  138. package/cjs/interactions/index.js +386 -0
  139. package/cjs/interactions/index.js.map +1 -0
  140. package/cjs/interactions/legend-filter.d.ts +13 -0
  141. package/cjs/interactions/legend-filter.js +33 -0
  142. package/cjs/interactions/legend-filter.js.map +1 -0
  143. package/cjs/interactions/player-filter.d.ts +14 -0
  144. package/cjs/interactions/player-filter.js +32 -0
  145. package/cjs/interactions/player-filter.js.map +1 -0
  146. package/cjs/interactions/roll-up.d.ts +16 -0
  147. package/cjs/interactions/roll-up.js +47 -0
  148. package/cjs/interactions/roll-up.js.map +1 -0
  149. package/cjs/interactions/scrollbar-filter.d.ts +13 -0
  150. package/cjs/interactions/scrollbar-filter.js +54 -0
  151. package/cjs/interactions/scrollbar-filter.js.map +1 -0
  152. package/cjs/interactions/slider-filter.d.ts +13 -0
  153. package/cjs/interactions/slider-filter.js +32 -0
  154. package/cjs/interactions/slider-filter.js.map +1 -0
  155. package/cjs/interactions/tooltip.d.ts +15 -0
  156. package/cjs/interactions/tooltip.js +62 -0
  157. package/cjs/interactions/tooltip.js.map +1 -0
  158. package/cjs/interactions/view-drag-mixin.d.ts +22 -0
  159. package/cjs/interactions/view-drag-mixin.js +52 -0
  160. package/cjs/interactions/view-drag-mixin.js.map +1 -0
  161. package/cjs/interactions/view-drag.d.ts +19 -0
  162. package/cjs/interactions/view-drag.js +49 -0
  163. package/cjs/interactions/view-drag.js.map +1 -0
  164. package/cjs/interactions/view-navigation-base.d.ts +17 -0
  165. package/cjs/interactions/view-navigation-base.js +81 -0
  166. package/cjs/interactions/view-navigation-base.js.map +1 -0
  167. package/cjs/interactions/view-roam.d.ts +30 -0
  168. package/cjs/interactions/view-roam.js +93 -0
  169. package/cjs/interactions/view-roam.js.map +1 -0
  170. package/cjs/interactions/view-scroll-mixin.d.ts +10 -0
  171. package/cjs/interactions/view-scroll-mixin.js +45 -0
  172. package/cjs/interactions/view-scroll-mixin.js.map +1 -0
  173. package/cjs/interactions/view-scroll.d.ts +17 -0
  174. package/cjs/interactions/view-scroll.js +37 -0
  175. package/cjs/interactions/view-scroll.js.map +1 -0
  176. package/cjs/interactions/view-utils.d.ts +14 -0
  177. package/cjs/interactions/view-utils.js +73 -0
  178. package/cjs/interactions/view-utils.js.map +1 -0
  179. package/cjs/interactions/view-zoom-mixin.d.ts +29 -0
  180. package/cjs/interactions/view-zoom-mixin.js +77 -0
  181. package/cjs/interactions/view-zoom-mixin.js.map +1 -0
  182. package/cjs/interactions/view-zoom.d.ts +23 -0
  183. package/cjs/interactions/view-zoom.js +53 -0
  184. package/cjs/interactions/view-zoom.js.map +1 -0
  185. package/cjs/parse/coordinate.js +1 -1
  186. package/cjs/parse/event.d.ts +2 -0
  187. package/cjs/parse/event.js +8 -4
  188. package/cjs/parse/event.js.map +1 -1
  189. package/cjs/parse/mark.js +1 -1
  190. package/cjs/parse/option.js +2 -1
  191. package/cjs/parse/scale.js +1 -1
  192. package/cjs/parse/transform.js +1 -1
  193. package/cjs/parse/util.js +1 -1
  194. package/cjs/parse/view.js +1 -1
  195. package/cjs/semantic-marks/cell.d.ts +1 -1
  196. package/cjs/semantic-marks/cell.js +4 -4
  197. package/cjs/semantic-marks/cell.js.map +1 -1
  198. package/cjs/semantic-marks/interval.d.ts +1 -1
  199. package/cjs/semantic-marks/interval.js +1 -1
  200. package/cjs/semantic-marks/text.js +1 -1
  201. package/cjs/theme/dark.js +1 -1
  202. package/cjs/theme/default.js +1 -1
  203. package/cjs/theme/theme-manager.js +1 -1
  204. package/cjs/transforms/index.js +1 -1
  205. package/cjs/transforms/mark/dodge.js +4 -4
  206. package/cjs/transforms/mark/dodge.js.map +1 -1
  207. package/cjs/transforms/mark/jitter.js +2 -2
  208. package/cjs/transforms/mark/jitter.js.map +1 -1
  209. package/cjs/types/animate.d.ts +1 -1
  210. package/cjs/types/animate.js +1 -1
  211. package/cjs/types/animate.js.map +1 -1
  212. package/cjs/types/base.js +1 -1
  213. package/cjs/types/component.d.ts +16 -88
  214. package/cjs/types/component.js +1 -1
  215. package/cjs/types/component.js.map +1 -1
  216. package/cjs/types/coordinate.js +1 -1
  217. package/cjs/types/data.js +2 -1
  218. package/cjs/types/dataflow.js +1 -1
  219. package/cjs/types/element.d.ts +1 -1
  220. package/cjs/types/element.js +1 -1
  221. package/cjs/types/element.js.map +1 -1
  222. package/cjs/types/event.d.ts +11 -4
  223. package/cjs/types/event.js +1 -1
  224. package/cjs/types/event.js.map +1 -1
  225. package/cjs/types/glyph.js +1 -1
  226. package/cjs/types/grammar.d.ts +6 -2
  227. package/cjs/types/grammar.js +1 -1
  228. package/cjs/types/grammar.js.map +1 -1
  229. package/cjs/types/hooks.js +1 -1
  230. package/cjs/types/index.d.ts +1 -0
  231. package/cjs/types/index.js +3 -2
  232. package/cjs/types/index.js.map +1 -1
  233. package/cjs/types/interaction.d.ts +353 -0
  234. package/cjs/types/interaction.js +6 -0
  235. package/cjs/types/interaction.js.map +1 -0
  236. package/cjs/types/mark.d.ts +2 -3
  237. package/cjs/types/mark.js.map +1 -1
  238. package/cjs/types/morph.d.ts +1 -1
  239. package/cjs/types/morph.js.map +1 -1
  240. package/cjs/types/plot.d.ts +1 -1
  241. package/cjs/types/plot.js.map +1 -1
  242. package/cjs/types/renderer.d.ts +1 -1
  243. package/cjs/types/renderer.js.map +1 -1
  244. package/cjs/types/theme.d.ts +1 -1
  245. package/cjs/types/theme.js.map +1 -1
  246. package/cjs/types/view.d.ts +13 -14
  247. package/cjs/types/view.js.map +1 -1
  248. package/cjs/util/scale.d.ts +4 -0
  249. package/cjs/util/scale.js +24 -0
  250. package/cjs/util/scale.js.map +1 -0
  251. package/cjs/util/text.d.ts +1 -1
  252. package/cjs/util/text.js +3 -3
  253. package/cjs/util/text.js.map +1 -1
  254. package/cjs/view/View.d.ts +9 -13
  255. package/cjs/view/View.js +49 -74
  256. package/cjs/view/View.js.map +1 -1
  257. package/cjs/view/component.d.ts +2 -6
  258. package/cjs/view/component.js +1 -19
  259. package/cjs/view/component.js.map +1 -1
  260. package/cjs/view/dataflow.js +1 -1
  261. package/cjs/view/dataflow.js.map +1 -1
  262. package/cjs/view/events.d.ts +1 -1
  263. package/cjs/view/mark.d.ts +2 -2
  264. package/cjs/view/mark.js +12 -10
  265. package/cjs/view/mark.js.map +1 -1
  266. package/cjs/view/scale.d.ts +7 -1
  267. package/cjs/view/scale.js +17 -3
  268. package/cjs/view/scale.js.map +1 -1
  269. package/es/component/axis.js.map +1 -1
  270. package/es/component/datazoom.d.ts +7 -4
  271. package/es/component/datazoom.js +26 -42
  272. package/es/component/datazoom.js.map +1 -1
  273. package/es/component/grid.js.map +1 -1
  274. package/es/component/index.d.ts +0 -2
  275. package/es/component/index.js +0 -4
  276. package/es/component/index.js.map +1 -1
  277. package/es/component/label.js.map +1 -1
  278. package/es/component/legend.d.ts +1 -3
  279. package/es/component/legend.js +11 -26
  280. package/es/component/legend.js.map +1 -1
  281. package/es/component/player.d.ts +1 -2
  282. package/es/component/player.js +17 -30
  283. package/es/component/player.js.map +1 -1
  284. package/es/component/scale.d.ts +1 -0
  285. package/es/component/scale.js +3 -0
  286. package/es/component/scale.js.map +1 -1
  287. package/es/component/scrollbar.d.ts +3 -4
  288. package/es/component/scrollbar.js +17 -53
  289. package/es/component/scrollbar.js.map +1 -1
  290. package/es/component/slider.d.ts +2 -5
  291. package/es/component/slider.js +9 -25
  292. package/es/component/slider.js.map +1 -1
  293. package/es/component/title.js.map +1 -1
  294. package/es/core/factory.d.ts +6 -3
  295. package/es/core/factory.js +9 -2
  296. package/es/core/factory.js.map +1 -1
  297. package/es/env.d.ts +1 -0
  298. package/es/env.js +1 -0
  299. package/es/env.js.map +1 -0
  300. package/es/glyph/index.js +2 -1
  301. package/es/glyph/link-path.js +1 -2
  302. package/es/graph/animation/animate.js +24 -19
  303. package/es/graph/animation/animate.js.map +1 -1
  304. package/es/graph/animation/animation/grow-cartesian.js.map +1 -1
  305. package/es/graph/animation/animator.js +1 -1
  306. package/es/graph/animation/animator.js.map +1 -1
  307. package/es/graph/animation/attribute.d.ts +2 -2
  308. package/es/graph/animation/attribute.js +7 -7
  309. package/es/graph/animation/attribute.js.map +1 -1
  310. package/es/graph/animation/morph.js +1 -1
  311. package/es/graph/animation/morph.js.map +1 -1
  312. package/es/graph/attributes/index.js +1 -1
  313. package/es/graph/attributes/index.js.map +1 -1
  314. package/es/graph/canvas-renderer.d.ts +1 -1
  315. package/es/graph/canvas-renderer.js +3 -1
  316. package/es/graph/canvas-renderer.js.map +1 -1
  317. package/es/graph/element.d.ts +1 -1
  318. package/es/graph/element.js +3 -3
  319. package/es/graph/element.js.map +1 -1
  320. package/es/graph/enums.d.ts +25 -8
  321. package/es/graph/enums.js +27 -11
  322. package/es/graph/enums.js.map +1 -1
  323. package/es/graph/glyph-element.d.ts +1 -1
  324. package/es/graph/glyph-element.js.map +1 -1
  325. package/es/graph/mark/encode.d.ts +0 -3
  326. package/es/graph/mark/encode.js +0 -10
  327. package/es/graph/mark/encode.js.map +1 -1
  328. package/es/graph/mark/large-rects.d.ts +2 -2
  329. package/es/graph/mark/large-rects.js +1 -1
  330. package/es/graph/mark/large-rects.js.map +1 -1
  331. package/es/graph/mark/large-symbols.d.ts +2 -2
  332. package/es/graph/mark/large-symbols.js +1 -1
  333. package/es/graph/mark/large-symbols.js.map +1 -1
  334. package/es/graph/util/env.js +1 -1
  335. package/es/graph/util/env.js.map +1 -1
  336. package/es/graph/util/events-extend.d.ts +1 -1
  337. package/es/graph/util/events-extend.js +1 -1
  338. package/es/graph/util/events-extend.js.map +1 -1
  339. package/es/graph/util/graphic.d.ts +3 -3
  340. package/es/graph/util/graphic.js +1 -1
  341. package/es/graph/util/graphic.js.map +1 -1
  342. package/es/index.d.ts +5 -1
  343. package/es/index.js +11 -2
  344. package/es/index.js.map +1 -1
  345. package/es/interactions/base-tooltip.d.ts +29 -0
  346. package/es/interactions/base-tooltip.js +73 -0
  347. package/es/interactions/base-tooltip.js.map +1 -0
  348. package/es/interactions/base.d.ts +14 -0
  349. package/es/interactions/base.js +32 -0
  350. package/es/interactions/base.js.map +1 -0
  351. package/es/interactions/brush-active.d.ts +17 -0
  352. package/es/interactions/brush-active.js +23 -0
  353. package/es/interactions/brush-active.js.map +1 -0
  354. package/es/interactions/brush-base.d.ts +43 -0
  355. package/es/interactions/brush-base.js +103 -0
  356. package/es/interactions/brush-base.js.map +1 -0
  357. package/es/interactions/brush-filter.d.ts +24 -0
  358. package/es/interactions/brush-filter.js +33 -0
  359. package/es/interactions/brush-filter.js.map +1 -0
  360. package/es/interactions/brush-highlight.d.ts +17 -0
  361. package/es/interactions/brush-highlight.js +31 -0
  362. package/es/interactions/brush-highlight.js.map +1 -0
  363. package/es/interactions/crosshair.d.ts +53 -0
  364. package/es/{component → interactions}/crosshair.js +82 -81
  365. package/es/interactions/crosshair.js.map +1 -0
  366. package/es/interactions/datazoom-filter.d.ts +13 -0
  367. package/es/interactions/datazoom-filter.js +40 -0
  368. package/es/interactions/datazoom-filter.js.map +1 -0
  369. package/es/interactions/dimension-tooltip.d.ts +18 -0
  370. package/es/interactions/dimension-tooltip.js +99 -0
  371. package/es/interactions/dimension-tooltip.js.map +1 -0
  372. package/es/interactions/drill-down.d.ts +25 -0
  373. package/es/interactions/drill-down.js +46 -0
  374. package/es/interactions/drill-down.js.map +1 -0
  375. package/es/interactions/element-active-by-legend.d.ts +17 -0
  376. package/es/interactions/element-active-by-legend.js +43 -0
  377. package/es/interactions/element-active-by-legend.js.map +1 -0
  378. package/es/interactions/element-active.d.ts +16 -0
  379. package/es/interactions/element-active.js +29 -0
  380. package/es/interactions/element-active.js.map +1 -0
  381. package/es/interactions/element-highlight-by-group.d.ts +17 -0
  382. package/es/interactions/element-highlight-by-group.js +49 -0
  383. package/es/interactions/element-highlight-by-group.js.map +1 -0
  384. package/es/interactions/element-highlight-by-key.d.ts +17 -0
  385. package/es/interactions/element-highlight-by-key.js +50 -0
  386. package/es/interactions/element-highlight-by-key.js.map +1 -0
  387. package/es/interactions/element-highlight-by-legend.d.ts +17 -0
  388. package/es/interactions/element-highlight-by-legend.js +46 -0
  389. package/es/interactions/element-highlight-by-legend.js.map +1 -0
  390. package/es/interactions/element-highlight-by-name.d.ts +18 -0
  391. package/es/interactions/element-highlight-by-name.js +56 -0
  392. package/es/interactions/element-highlight-by-name.js.map +1 -0
  393. package/es/interactions/element-highlight.d.ts +17 -0
  394. package/es/interactions/element-highlight.js +43 -0
  395. package/es/interactions/element-highlight.js.map +1 -0
  396. package/es/interactions/element-select.d.ts +18 -0
  397. package/es/interactions/element-select.js +38 -0
  398. package/es/interactions/element-select.js.map +1 -0
  399. package/es/interactions/filter.d.ts +20 -0
  400. package/es/interactions/filter.js +31 -0
  401. package/es/interactions/filter.js.map +1 -0
  402. package/es/interactions/fish-eye.d.ts +38 -0
  403. package/es/interactions/fish-eye.js +105 -0
  404. package/es/interactions/fish-eye.js.map +1 -0
  405. package/es/interactions/index.d.ts +50 -0
  406. package/es/interactions/index.js +149 -0
  407. package/es/interactions/index.js.map +1 -0
  408. package/es/interactions/legend-filter.d.ts +13 -0
  409. package/es/interactions/legend-filter.js +32 -0
  410. package/es/interactions/legend-filter.js.map +1 -0
  411. package/es/interactions/player-filter.d.ts +14 -0
  412. package/es/interactions/player-filter.js +32 -0
  413. package/es/interactions/player-filter.js.map +1 -0
  414. package/es/interactions/roll-up.d.ts +16 -0
  415. package/es/interactions/roll-up.js +45 -0
  416. package/es/interactions/roll-up.js.map +1 -0
  417. package/es/interactions/scrollbar-filter.d.ts +13 -0
  418. package/es/interactions/scrollbar-filter.js +50 -0
  419. package/es/interactions/scrollbar-filter.js.map +1 -0
  420. package/es/interactions/slider-filter.d.ts +13 -0
  421. package/es/interactions/slider-filter.js +29 -0
  422. package/es/interactions/slider-filter.js.map +1 -0
  423. package/es/interactions/tooltip.d.ts +15 -0
  424. package/es/interactions/tooltip.js +58 -0
  425. package/es/interactions/tooltip.js.map +1 -0
  426. package/es/interactions/view-drag-mixin.d.ts +22 -0
  427. package/es/interactions/view-drag-mixin.js +46 -0
  428. package/es/interactions/view-drag-mixin.js.map +1 -0
  429. package/es/interactions/view-drag.d.ts +19 -0
  430. package/es/interactions/view-drag.js +47 -0
  431. package/es/interactions/view-drag.js.map +1 -0
  432. package/es/interactions/view-navigation-base.d.ts +17 -0
  433. package/es/interactions/view-navigation-base.js +78 -0
  434. package/es/interactions/view-navigation-base.js.map +1 -0
  435. package/es/interactions/view-roam.d.ts +30 -0
  436. package/es/interactions/view-roam.js +91 -0
  437. package/es/interactions/view-roam.js.map +1 -0
  438. package/es/interactions/view-scroll-mixin.d.ts +10 -0
  439. package/es/interactions/view-scroll-mixin.js +37 -0
  440. package/es/interactions/view-scroll-mixin.js.map +1 -0
  441. package/es/interactions/view-scroll.d.ts +17 -0
  442. package/es/interactions/view-scroll.js +35 -0
  443. package/es/interactions/view-scroll.js.map +1 -0
  444. package/es/interactions/view-utils.d.ts +14 -0
  445. package/es/interactions/view-utils.js +60 -0
  446. package/es/interactions/view-utils.js.map +1 -0
  447. package/es/interactions/view-zoom-mixin.d.ts +29 -0
  448. package/es/interactions/view-zoom-mixin.js +68 -0
  449. package/es/interactions/view-zoom-mixin.js.map +1 -0
  450. package/es/interactions/view-zoom.d.ts +23 -0
  451. package/es/interactions/view-zoom.js +51 -0
  452. package/es/interactions/view-zoom.js.map +1 -0
  453. package/es/parse/event.d.ts +2 -0
  454. package/es/parse/event.js +5 -1
  455. package/es/parse/event.js.map +1 -1
  456. package/es/parse/option.js +2 -1
  457. package/es/parse/scale.js +1 -2
  458. package/es/semantic-marks/cell.d.ts +1 -1
  459. package/es/semantic-marks/cell.js +4 -2
  460. package/es/semantic-marks/cell.js.map +1 -1
  461. package/es/semantic-marks/interval.d.ts +1 -1
  462. package/es/semantic-marks/interval.js +1 -1
  463. package/es/semantic-marks/text.js +1 -1
  464. package/es/theme/dark.js +1 -1
  465. package/es/theme/default.js +1 -1
  466. package/es/theme/theme-manager.js +1 -1
  467. package/es/transforms/index.js +1 -1
  468. package/es/transforms/mark/dodge.js +2 -2
  469. package/es/transforms/mark/dodge.js.map +1 -1
  470. package/es/transforms/mark/jitter.js +2 -2
  471. package/es/transforms/mark/jitter.js.map +1 -1
  472. package/es/types/animate.d.ts +1 -1
  473. package/es/types/animate.js +1 -1
  474. package/es/types/animate.js.map +1 -1
  475. package/es/types/base.js +1 -1
  476. package/es/types/component.d.ts +16 -88
  477. package/es/types/component.js +1 -1
  478. package/es/types/component.js.map +1 -1
  479. package/es/types/coordinate.js +1 -1
  480. package/es/types/data.js +2 -1
  481. package/es/types/dataflow.js +1 -1
  482. package/es/types/element.d.ts +1 -1
  483. package/es/types/element.js +1 -1
  484. package/es/types/element.js.map +1 -1
  485. package/es/types/event.d.ts +11 -4
  486. package/es/types/event.js +1 -1
  487. package/es/types/event.js.map +1 -1
  488. package/es/types/glyph.js +1 -1
  489. package/es/types/grammar.d.ts +6 -2
  490. package/es/types/grammar.js +1 -1
  491. package/es/types/grammar.js.map +1 -1
  492. package/es/types/hooks.js +1 -1
  493. package/es/types/index.d.ts +1 -0
  494. package/es/types/index.js +3 -1
  495. package/es/types/index.js.map +1 -1
  496. package/es/types/interaction.d.ts +353 -0
  497. package/es/types/interaction.js +2 -0
  498. package/es/types/interaction.js.map +1 -0
  499. package/es/types/mark.d.ts +2 -3
  500. package/es/types/mark.js.map +1 -1
  501. package/es/types/morph.d.ts +1 -1
  502. package/es/types/morph.js.map +1 -1
  503. package/es/types/plot.d.ts +1 -1
  504. package/es/types/plot.js.map +1 -1
  505. package/es/types/renderer.d.ts +1 -1
  506. package/es/types/renderer.js.map +1 -1
  507. package/es/types/theme.d.ts +1 -1
  508. package/es/types/theme.js.map +1 -1
  509. package/es/types/view.d.ts +13 -14
  510. package/es/types/view.js.map +1 -1
  511. package/es/util/scale.d.ts +4 -0
  512. package/es/util/scale.js +15 -0
  513. package/es/util/scale.js.map +1 -0
  514. package/es/util/text.d.ts +1 -1
  515. package/es/util/text.js +1 -1
  516. package/es/util/text.js.map +1 -1
  517. package/es/view/View.d.ts +9 -13
  518. package/es/view/View.js +49 -69
  519. package/es/view/View.js.map +1 -1
  520. package/es/view/component.d.ts +2 -6
  521. package/es/view/component.js +0 -20
  522. package/es/view/component.js.map +1 -1
  523. package/es/view/dataflow.js +1 -1
  524. package/es/view/dataflow.js.map +1 -1
  525. package/es/view/events.d.ts +1 -1
  526. package/es/view/mark.d.ts +2 -2
  527. package/es/view/mark.js +12 -10
  528. package/es/view/mark.js.map +1 -1
  529. package/es/view/scale.d.ts +7 -1
  530. package/es/view/scale.js +17 -2
  531. package/es/view/scale.js.map +1 -1
  532. package/package.json +9 -8
  533. package/cjs/component/crosshair.d.ts +0 -50
  534. package/cjs/component/crosshair.js.map +0 -1
  535. package/cjs/component/tooltip.d.ts +0 -62
  536. package/cjs/component/tooltip.js +0 -305
  537. package/cjs/component/tooltip.js.map +0 -1
  538. package/es/component/crosshair.d.ts +0 -50
  539. package/es/component/crosshair.js.map +0 -1
  540. package/es/component/tooltip.d.ts +0 -62
  541. package/es/component/tooltip.js +0 -303
  542. package/es/component/tooltip.js.map +0 -1
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
- }), exports.parseEventSelector = exports.parseHandler = exports.generateFilterByMark = void 0;
5
+ }), exports.parseEventSelector = exports.ID_PREFIX = exports.NAME_PREFIX = exports.parseHandler = exports.generateFilterByMark = void 0;
6
6
 
7
7
  const vutils_1 = require("@visactor/vutils"), graphic_1 = require("../graph/util/graphic"), constants_1 = require("../view/constants"), generateFilterByMark = evtSpec => (0,
8
8
  vutils_1.isNil)(evtSpec.markId) ? el => el && el.mark.id() === evtSpec.markId : (0,
@@ -17,11 +17,15 @@ vutils_1.throttle)(callback, config.throttle) : callback;
17
17
 
18
18
  exports.parseHandler = parseHandler;
19
19
 
20
- const JOIN_SYMBOL = ":", NAME_PREFIX = "@", ID_PREFIX = "#", parseEventSelector = (selector, source = constants_1.EVENT_SOURCE_VIEW) => {
20
+ const JOIN_SYMBOL = ":";
21
+
22
+ exports.NAME_PREFIX = "@", exports.ID_PREFIX = "#";
23
+
24
+ const parseEventSelector = (selector, source = constants_1.EVENT_SOURCE_VIEW) => {
21
25
  const spec = {}, splitArr = selector.split(":");
22
26
  if (2 === splitArr.length) {
23
27
  const [space, eventType] = splitArr;
24
- "#" === space[0] ? (spec.markId = space.slice(1), spec.source = source) : "@" === space[0] ? (spec.markName = space.slice(1),
28
+ space[0] === exports.ID_PREFIX ? (spec.markId = space.slice(1), spec.source = source) : space[0] === exports.NAME_PREFIX ? (spec.markName = space.slice(1),
25
29
  spec.source = source) : (0, graphic_1.isMarkType)(space) ? (spec.markType = space,
26
30
  spec.source = source) : space === constants_1.EVENT_SOURCE_WINDOW ? spec.source = constants_1.EVENT_SOURCE_WINDOW : spec.source = source,
27
31
  spec.type = eventType;
@@ -30,4 +34,4 @@ const JOIN_SYMBOL = ":", NAME_PREFIX = "@", ID_PREFIX = "#", parseEventSelector
30
34
  };
31
35
 
32
36
  exports.parseEventSelector = parseEventSelector;
33
- //# sourceMappingURL=event.js.map
37
+ //# sourceMappingURL=event.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/parse/event.ts"],"names":[],"mappings":"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","file":"event.js","sourcesContent":["import { debounce, isNil, throttle } from '@visactor/vutils';\nimport type {\n EventSourceType,\n ParsedViewEventSpec,\n ParsedWindowEventSpec,\n EventCallback,\n MarkType,\n IElement\n} from '../types';\nimport { isMarkType } from '../graph/util/graphic';\nimport { EVENT_SOURCE_VIEW, EVENT_SOURCE_WINDOW } from '../view/constants';\n\nexport const generateFilterByMark = (evtSpec: Partial<ParsedViewEventSpec | ParsedWindowEventSpec>) => {\n if (isNil(evtSpec.markId)) {\n return (el: IElement) => {\n return el && el.mark.id() === evtSpec.markId;\n };\n }\n\n if (isNil(evtSpec.markName)) {\n return (el: IElement) => {\n return el && el.mark.name() === evtSpec.markName;\n };\n }\n\n if (isNil(evtSpec.type)) {\n return (el: IElement) => {\n return el && el.mark.markType === evtSpec.type;\n };\n }\n\n return () => true;\n};\n\nexport const parseHandler = (callback: EventCallback, config: { debounce?: number; throttle?: number }) => {\n if (config?.debounce) {\n return debounce(callback, config.debounce);\n }\n\n if (config?.throttle) {\n return throttle(callback, config.throttle);\n }\n\n return callback;\n};\n\nconst JOIN_SYMBOL = ':';\nconst NAME_PREFIX = '@';\nconst ID_PREFIX = '#';\n\n/**\n * Parse an event selector string.\n * Supported rules:\n * 1. mousedown\n * 2. rect:mousedown\n * 3. window:mousemove\n * 4. @foo:mousedown\n * Returns an event stream definitions.\n */\nexport const parseEventSelector = (\n selector: string,\n source: EventSourceType = EVENT_SOURCE_VIEW\n): Partial<ParsedViewEventSpec | ParsedWindowEventSpec> => {\n const spec: Partial<ParsedViewEventSpec | ParsedWindowEventSpec> = {};\n\n const splitArr = selector.split(JOIN_SYMBOL);\n\n if (splitArr.length === 2) {\n const [space, eventType] = splitArr;\n\n if (space[0] === ID_PREFIX) {\n // events on marks id\n spec.markId = space.slice(1);\n spec.source = source;\n } else if (space[0] === NAME_PREFIX) {\n // events on marks name\n spec.markName = space.slice(1);\n spec.source = source;\n } else if (isMarkType(space)) {\n spec.markType = space as MarkType;\n spec.source = source;\n } else if (space === EVENT_SOURCE_WINDOW) {\n spec.source = EVENT_SOURCE_WINDOW;\n } else {\n spec.source = source;\n }\n\n spec.type = eventType;\n } else if (splitArr.length === 1) {\n spec.type = selector;\n spec.source = source;\n }\n\n return spec;\n};\n"]}
1
+ {"version":3,"sources":["../src/parse/event.ts"],"names":[],"mappings":"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","file":"event.js","sourcesContent":["import { debounce, isNil, throttle } from '@visactor/vutils';\nimport type {\n EventSourceType,\n ParsedViewEventSpec,\n ParsedWindowEventSpec,\n EventCallback,\n MarkType,\n IElement\n} from '../types';\nimport { isMarkType } from '../graph/util/graphic';\nimport { EVENT_SOURCE_VIEW, EVENT_SOURCE_WINDOW } from '../view/constants';\n\nexport const generateFilterByMark = (evtSpec: Partial<ParsedViewEventSpec | ParsedWindowEventSpec>) => {\n if (isNil(evtSpec.markId)) {\n return (el: IElement) => {\n return el && el.mark.id() === evtSpec.markId;\n };\n }\n\n if (isNil(evtSpec.markName)) {\n return (el: IElement) => {\n return el && el.mark.name() === evtSpec.markName;\n };\n }\n\n if (isNil(evtSpec.type)) {\n return (el: IElement) => {\n return el && el.mark.markType === evtSpec.type;\n };\n }\n\n return () => true;\n};\n\nexport const parseHandler = (callback: EventCallback, config: { debounce?: number; throttle?: number }) => {\n if (config?.debounce) {\n return debounce(callback, config.debounce);\n }\n\n if (config?.throttle) {\n return throttle(callback, config.throttle);\n }\n\n return callback;\n};\n\nconst JOIN_SYMBOL = ':';\nexport const NAME_PREFIX = '@';\nexport const ID_PREFIX = '#';\n\n/**\n * Parse an event selector string.\n * Supported rules:\n * 1. mousedown\n * 2. rect:mousedown\n * 3. window:mousemove\n * 4. @foo:mousedown\n * Returns an event stream definitions.\n */\nexport const parseEventSelector = (\n selector: string,\n source: EventSourceType = EVENT_SOURCE_VIEW\n): Partial<ParsedViewEventSpec | ParsedWindowEventSpec> => {\n const spec: Partial<ParsedViewEventSpec | ParsedWindowEventSpec> = {};\n\n const splitArr = selector.split(JOIN_SYMBOL);\n\n if (splitArr.length === 2) {\n const [space, eventType] = splitArr;\n\n if (space[0] === ID_PREFIX) {\n // events on marks id\n spec.markId = space.slice(1);\n spec.source = source;\n } else if (space[0] === NAME_PREFIX) {\n // events on marks name\n spec.markName = space.slice(1);\n spec.source = source;\n } else if (isMarkType(space)) {\n spec.markType = space as MarkType;\n spec.source = source;\n } else if (space === EVENT_SOURCE_WINDOW) {\n spec.source = EVENT_SOURCE_WINDOW;\n } else {\n spec.source = source;\n }\n\n spec.type = eventType;\n } else if (splitArr.length === 1) {\n spec.type = selector;\n spec.source = source;\n }\n\n return spec;\n};\n"]}
package/cjs/parse/mark.js CHANGED
@@ -22,4 +22,4 @@ function parseEncodeType(encoder, view) {
22
22
  }
23
23
 
24
24
  exports.isScaleEncode = isScaleEncode, exports.isFieldEncode = isFieldEncode, exports.parseEncodeType = parseEncodeType;
25
- //# sourceMappingURL=mark.js.map
25
+ //# sourceMappingURL=mark.js.map
@@ -16,4 +16,5 @@ const parseOptions = (options, params) => options ? (0, vutils_1.isObject)(optio
16
16
  return res[key] = (0, exports.parseOptionValue)(option, params), res;
17
17
  }), {}) : options.map((option => (0, exports.parseOptionValue)(option, params))) : options;
18
18
 
19
- exports.parseOptions = parseOptions;
19
+ exports.parseOptions = parseOptions;
20
+ //# sourceMappingURL=option.js.map
@@ -361,4 +361,4 @@ function configureScale(spec, scale, parameters) {
361
361
 
362
362
  exports.createScale = createScale, exports.parseScaleDomainRange = parseScaleDomainRange,
363
363
  exports.parseScaleConfig = parseScaleConfig, exports.configureScale = configureScale;
364
- //# sourceMappingURL=scale.js.map
364
+ //# sourceMappingURL=scale.js.map
@@ -100,4 +100,4 @@ const vutils_1 = require("@visactor/vutils"), factory_1 = require("../core/facto
100
100
  };
101
101
 
102
102
  exports.parseTransformSpec = parseTransformSpec;
103
- //# sourceMappingURL=transform.js.map
103
+ //# sourceMappingURL=transform.js.map
package/cjs/parse/util.js CHANGED
@@ -79,4 +79,4 @@ exports.parseField = parseField;
79
79
  const parseColor = color => (0, vutils_1.isString)(color) && vutils_1.Color.parseColorString(color) ? color : null;
80
80
 
81
81
  exports.parseColor = parseColor;
82
- //# sourceMappingURL=util.js.map
82
+ //# sourceMappingURL=util.js.map
package/cjs/parse/view.js CHANGED
@@ -105,4 +105,4 @@ const normalizeRunningConfig = runningConfig => {
105
105
  };
106
106
 
107
107
  exports.normalizeRunningConfig = normalizeRunningConfig;
108
- //# sourceMappingURL=view.js.map
108
+ //# sourceMappingURL=view.js.map
@@ -7,7 +7,7 @@ export declare class Cell extends Mark {
7
7
  protected _encoders: StateEncodeSpec | null;
8
8
  encodeState(state: string, channel: string | BaseSignleEncodeSpec, value?: MarkFunctionType<any>): this;
9
9
  protected _updateComponentEncoders(state: string): void;
10
- protected _getEncoders(): StateEncodeSpec<Partial<Omit<import("@visactor/vrender").IGraphicAttribute, "strokeSeg" | "boundsPadding" | "pickMode" | "boundsMode" | "customPickShape" | "pickable" | "childrenPickable" | "visible" | "zIndex" | "layout" | "keepDirIn3d" | "postMatrix" | "anchor" | "anchor3d">>>;
10
+ protected _getEncoders(): StateEncodeSpec<Partial<Omit<import("@visactor/vrender-core").IGraphicAttribute, "strokeSeg" | "boundsPadding" | "pickMode" | "boundsMode" | "customPickShape" | "pickable" | "childrenPickable" | "visible" | "zIndex" | "layout" | "keepDirIn3d" | "postMatrix" | "anchor" | "anchor3d">>>;
11
11
  getAttributeTransforms(): AttributeTransform[];
12
12
  release(): void;
13
13
  }
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.Cell = void 0;
6
6
 
7
- const encode_1 = require("../graph/mark/encode"), mark_1 = require("../parse/mark"), util_1 = require("../parse/util"), mark_2 = require("../view/mark"), vutils_1 = require("@visactor/vutils"), attributes_1 = require("../graph/attributes");
7
+ const encode_1 = require("../graph/mark/encode"), mark_1 = require("../parse/mark"), util_1 = require("../parse/util"), mark_2 = require("../view/mark"), vutils_1 = require("@visactor/vutils"), attributes_1 = require("../graph/attributes"), scale_1 = require("../util/scale");
8
8
 
9
9
  class Cell extends mark_2.Mark {
10
10
  encodeState(state, channel, value) {
@@ -22,8 +22,8 @@ class Cell extends mark_2.Mark {
22
22
  callback: (datum, element, parameters) => {
23
23
  const userEncodeRes = (0, encode_1.invokeEncoder)(userEncoder, datum, element, parameters);
24
24
  if ((0, vutils_1.isNil)(userEncodeRes.size)) {
25
- const sizeX = scales.x ? (0, encode_1.getBandWidthOfScale)(scales.x) : void 0, sizeY = scales.y ? (0,
26
- encode_1.getBandWidthOfScale)(scales.y) : void 0;
25
+ const sizeX = scales.x ? (0, scale_1.getBandWidthOfScale)(scales.x) : void 0, sizeY = scales.y ? (0,
26
+ scale_1.getBandWidthOfScale)(scales.y) : void 0;
27
27
  (0, vutils_1.isNil)(sizeX) && (0, vutils_1.isNil)(sizeY) ? userEncodeRes.size = 10 : (0,
28
28
  vutils_1.isNil)(sizeX) ? userEncodeRes.size = sizeY : (0, vutils_1.isNil)(sizeY) && (userEncodeRes.size = sizeX),
29
29
  userEncodeRes.size = [ sizeX, sizeY ];
@@ -58,4 +58,4 @@ class Cell extends mark_2.Mark {
58
58
  }
59
59
 
60
60
  exports.Cell = Cell;
61
- //# sourceMappingURL=cell.js.map
61
+ //# sourceMappingURL=cell.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/semantic-marks/cell.ts"],"names":[],"mappings":"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","file":"cell.js","sourcesContent":["import type { IBaseScale } from '@visactor/vscale';\nimport type { GrammarMarkType } from '../graph/enums';\nimport { getBandWidthOfScale, invokeEncoder } from '../graph/mark/encode';\nimport { isScaleEncode } from '../parse/mark';\nimport { getGrammarOutput, isFunctionType } from '../parse/util';\nimport type {\n StateEncodeSpec,\n MarkSpec,\n IElement,\n MarkFunctionType,\n AttributeTransform,\n GetSignleEncodeSpecByType,\n BaseSignleEncodeSpec\n} from '../types';\nimport { Mark } from '../view/mark';\nimport { isArray, isNil, isNumber } from '@visactor/vutils';\nimport { transformsByType } from '../graph/attributes';\n\nexport class Cell extends Mark {\n declare markType: GrammarMarkType.cell;\n protected declare spec: MarkSpec;\n\n protected _encoders: StateEncodeSpec | null;\n\n encodeState(state: string, channel: string | BaseSignleEncodeSpec, value?: MarkFunctionType<any>) {\n super.encodeState(state, channel, value);\n\n this._updateComponentEncoders(state);\n\n return this;\n }\n\n protected _updateComponentEncoders(state: string) {\n if (!this._encoders) {\n this._encoders = {};\n }\n\n const userEncoder = this.spec.encode[state] as GetSignleEncodeSpecByType<'cell'>;\n\n if (userEncoder && state === 'update') {\n const params = this.parameters();\n const scales: Record<string, IBaseScale> = isFunctionType(userEncoder)\n ? null\n : Object.keys(userEncoder).reduce((res, channel) => {\n if (isScaleEncode(userEncoder[channel])) {\n res[channel] = getGrammarOutput(userEncoder[channel].scale, params);\n }\n return res;\n }, {});\n\n this._encoders[state] = {\n callback: (datum: any, element: IElement, parameters: any) => {\n const userEncodeRes = invokeEncoder(userEncoder, datum, element, parameters);\n\n if (isNil(userEncodeRes.size)) {\n const sizeX = scales.x ? getBandWidthOfScale(scales.x) : undefined;\n const sizeY = scales.y ? getBandWidthOfScale(scales.y) : undefined;\n\n if (isNil(sizeX) && isNil(sizeY)) {\n userEncodeRes.size = 10;\n } else if (isNil(sizeX)) {\n userEncodeRes.size = sizeY;\n } else if (isNil(sizeY)) {\n userEncodeRes.size = sizeX;\n }\n\n userEncodeRes.size = [sizeX, sizeY];\n }\n\n if (isNil(userEncodeRes.shape)) {\n userEncodeRes.shape = 'rect';\n }\n\n return userEncodeRes;\n }\n } as GetSignleEncodeSpecByType<'cell'>;\n } else {\n this._encoders[state] = userEncoder;\n }\n }\n\n protected _getEncoders() {\n return this._encoders ?? {};\n }\n\n getAttributeTransforms() {\n return (\n [\n {\n channels: ['size', 'padding'],\n transform: (graphicAttributes: any, nextAttrs: any, storedAttrs: any) => {\n if (isNumber(storedAttrs.padding) && storedAttrs.padding > 0) {\n graphicAttributes.size = isArray(storedAttrs.size)\n ? storedAttrs.size.map((entry: number) => Math.max(entry - storedAttrs.padding, 1))\n : Math.max(storedAttrs.size - storedAttrs.padding, 1);\n } else if (isArray(storedAttrs.padding) && storedAttrs.padding.length === 2) {\n const arraySize = isArray(storedAttrs.size) ? storedAttrs.size : [storedAttrs.size, storedAttrs.size];\n\n graphicAttributes.size = [\n Math.max(arraySize[0] - storedAttrs.padding[0], 1),\n Math.max(arraySize[1] - storedAttrs.padding[1], 1)\n ];\n } else {\n graphicAttributes.size = storedAttrs.size;\n }\n },\n storedAttrs: 'paddingAttrs'\n }\n ] as AttributeTransform[]\n ).concat(transformsByType.symbol);\n }\n\n release(): void {\n super.release();\n this._encoders = null;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/semantic-marks/cell.ts"],"names":[],"mappings":"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","file":"cell.js","sourcesContent":["import type { IBaseScale } from '@visactor/vscale';\nimport type { GrammarMarkType } from '../graph/enums';\nimport { invokeEncoder } from '../graph/mark/encode';\nimport { isScaleEncode } from '../parse/mark';\nimport { getGrammarOutput, isFunctionType } from '../parse/util';\nimport type {\n StateEncodeSpec,\n MarkSpec,\n IElement,\n MarkFunctionType,\n AttributeTransform,\n GetSignleEncodeSpecByType,\n BaseSignleEncodeSpec\n} from '../types';\nimport { Mark } from '../view/mark';\nimport { isArray, isNil, isNumber } from '@visactor/vutils';\nimport { transformsByType } from '../graph/attributes';\nimport { getBandWidthOfScale } from '../util/scale';\n\nexport class Cell extends Mark {\n declare markType: GrammarMarkType.cell;\n protected declare spec: MarkSpec;\n\n protected _encoders: StateEncodeSpec | null;\n\n encodeState(state: string, channel: string | BaseSignleEncodeSpec, value?: MarkFunctionType<any>) {\n super.encodeState(state, channel, value);\n\n this._updateComponentEncoders(state);\n\n return this;\n }\n\n protected _updateComponentEncoders(state: string) {\n if (!this._encoders) {\n this._encoders = {};\n }\n\n const userEncoder = this.spec.encode[state] as GetSignleEncodeSpecByType<'cell'>;\n\n if (userEncoder && state === 'update') {\n const params = this.parameters();\n const scales: Record<string, IBaseScale> = isFunctionType(userEncoder)\n ? null\n : Object.keys(userEncoder).reduce((res, channel) => {\n if (isScaleEncode(userEncoder[channel])) {\n res[channel] = getGrammarOutput(userEncoder[channel].scale, params);\n }\n return res;\n }, {});\n\n this._encoders[state] = {\n callback: (datum: any, element: IElement, parameters: any) => {\n const userEncodeRes = invokeEncoder(userEncoder, datum, element, parameters);\n\n if (isNil(userEncodeRes.size)) {\n const sizeX = scales.x ? getBandWidthOfScale(scales.x) : undefined;\n const sizeY = scales.y ? getBandWidthOfScale(scales.y) : undefined;\n\n if (isNil(sizeX) && isNil(sizeY)) {\n userEncodeRes.size = 10;\n } else if (isNil(sizeX)) {\n userEncodeRes.size = sizeY;\n } else if (isNil(sizeY)) {\n userEncodeRes.size = sizeX;\n }\n\n userEncodeRes.size = [sizeX, sizeY];\n }\n\n if (isNil(userEncodeRes.shape)) {\n userEncodeRes.shape = 'rect';\n }\n\n return userEncodeRes;\n }\n } as GetSignleEncodeSpecByType<'cell'>;\n } else {\n this._encoders[state] = userEncoder;\n }\n }\n\n protected _getEncoders() {\n return this._encoders ?? {};\n }\n\n getAttributeTransforms() {\n return (\n [\n {\n channels: ['size', 'padding'],\n transform: (graphicAttributes: any, nextAttrs: any, storedAttrs: any) => {\n if (isNumber(storedAttrs.padding) && storedAttrs.padding > 0) {\n graphicAttributes.size = isArray(storedAttrs.size)\n ? storedAttrs.size.map((entry: number) => Math.max(entry - storedAttrs.padding, 1))\n : Math.max(storedAttrs.size - storedAttrs.padding, 1);\n } else if (isArray(storedAttrs.padding) && storedAttrs.padding.length === 2) {\n const arraySize = isArray(storedAttrs.size) ? storedAttrs.size : [storedAttrs.size, storedAttrs.size];\n\n graphicAttributes.size = [\n Math.max(arraySize[0] - storedAttrs.padding[0], 1),\n Math.max(arraySize[1] - storedAttrs.padding[1], 1)\n ];\n } else {\n graphicAttributes.size = storedAttrs.size;\n }\n },\n storedAttrs: 'paddingAttrs'\n }\n ] as AttributeTransform[]\n ).concat(transformsByType.symbol);\n }\n\n release(): void {\n super.release();\n this._encoders = null;\n }\n}\n"]}
@@ -7,7 +7,7 @@ export declare class Interval extends Mark {
7
7
  protected _encoders: StateEncodeSpec;
8
8
  encodeState(state: string, channel: string | BaseSignleEncodeSpec, value?: MarkFunctionType<any>): this;
9
9
  protected _updateComponentEncoders(state: string): void;
10
- protected _getEncoders(): StateEncodeSpec<Partial<Omit<import("@visactor/vrender").IGraphicAttribute, "strokeSeg" | "boundsPadding" | "pickMode" | "boundsMode" | "customPickShape" | "pickable" | "childrenPickable" | "visible" | "zIndex" | "layout" | "keepDirIn3d" | "postMatrix" | "anchor" | "anchor3d">>>;
10
+ protected _getEncoders(): StateEncodeSpec<Partial<Omit<import("@visactor/vrender-core").IGraphicAttribute, "strokeSeg" | "boundsPadding" | "pickMode" | "boundsMode" | "customPickShape" | "pickable" | "childrenPickable" | "visible" | "zIndex" | "layout" | "keepDirIn3d" | "postMatrix" | "anchor" | "anchor3d">>>;
11
11
  getAttributeTransforms(): AttributeTransform[];
12
12
  addGraphicItem(attrs: any, groupKey?: string): any;
13
13
  release(): void;
@@ -77,4 +77,4 @@ class Interval extends mark_2.Mark {
77
77
  }
78
78
 
79
79
  exports.Interval = Interval;
80
- //# sourceMappingURL=interval.js.map
80
+ //# sourceMappingURL=interval.js.map
@@ -22,4 +22,4 @@ class Text extends mark_1.Mark {
22
22
  }
23
23
 
24
24
  exports.Text = Text;
25
- //# sourceMappingURL=text.js.map
25
+ //# sourceMappingURL=text.js.map
package/cjs/theme/dark.js CHANGED
@@ -91,4 +91,4 @@ darkComponents.axis = Object.assign({}, darkComponents.axis, {
91
91
  marks: mark_1.defaultMarkTheme,
92
92
  components: darkComponents
93
93
  };
94
- //# sourceMappingURL=dark.js.map
94
+ //# sourceMappingURL=dark.js.map
@@ -15,4 +15,4 @@ exports.defaultTheme = {
15
15
  marks: mark_1.defaultMarkTheme,
16
16
  components: component_1.defaultComponentTheme
17
17
  };
18
- //# sourceMappingURL=default.js.map
18
+ //# sourceMappingURL=default.js.map
@@ -23,4 +23,4 @@ class ThemeManager {
23
23
 
24
24
  exports.ThemeManager = ThemeManager, ThemeManager._themes = new Map, ThemeManager.registerTheme("default", default_1.defaultTheme),
25
25
  ThemeManager.registerTheme("dark", dark_1.darkTheme);
26
- //# sourceMappingURL=theme-manager.js.map
26
+ //# sourceMappingURL=theme-manager.js.map
@@ -210,4 +210,4 @@ const registerSymmetryTransform = () => {
210
210
  };
211
211
 
212
212
  exports.registerSymmetryTransform = registerSymmetryTransform;
213
- //# sourceMappingURL=index.js.map
213
+ //# sourceMappingURL=index.js.map
@@ -4,14 +4,14 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.transform = void 0;
6
6
 
7
- const encode_1 = require("../../graph/mark/encode"), vutils_1 = require("@visactor/vutils"), vgrammar_util_1 = require("@visactor/vgrammar-util"), transform = (options, upstreamData) => {
7
+ const vutils_1 = require("@visactor/vutils"), vgrammar_util_1 = require("@visactor/vgrammar-util"), scale_1 = require("../../util/scale"), transform = (options, upstreamData) => {
8
8
  var _a, _b, _c;
9
9
  if (!upstreamData || 0 === upstreamData.length || !(null === (_a = upstreamData[0]) || void 0 === _a ? void 0 : _a.mark)) return upstreamData;
10
- const mark = upstreamData[0].mark, markScales = mark.getScales(), bandScale = Object.values(markScales).find(encode_1.isBandLikeScale);
10
+ const mark = upstreamData[0].mark, markScales = mark.getScales(), bandScale = Object.values(markScales).find(scale_1.isBandLikeScale);
11
11
  if (!bandScale) return upstreamData;
12
- const scales = mark.getScalesByChannel(), bandWidth = (0, encode_1.getBandWidthOfScale)(bandScale), dodgeChannel = (0,
12
+ const scales = mark.getScalesByChannel(), bandWidth = (0, scale_1.getBandWidthOfScale)(bandScale), dodgeChannel = (0,
13
13
  vutils_1.isNil)(options.dodgeChannel) ? scales.y === bandScale || scales.y1 === bandScale || scales.x && !(0,
14
- encode_1.isBandLikeScale)(scales.x) || scales.x1 && !(0, encode_1.isBandLikeScale)(scales.x1) ? "y" : "x" : options.dodgeChannel;
14
+ scale_1.isBandLikeScale)(scales.x) || scales.x1 && !(0, scale_1.isBandLikeScale)(scales.x1) ? "y" : "x" : options.dodgeChannel;
15
15
  if (bandWidth > 0) {
16
16
  const innerGap = null !== (_b = options.innerGap) && void 0 !== _b ? _b : 0, categoryGap = null !== (_c = options.categoryGap) && void 0 !== _c ? _c : "20%";
17
17
  let getDodgeBy = element => element.groupKey;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/transforms/mark/dodge.ts"],"names":[],"mappings":"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","file":"dodge.js","sourcesContent":["import type { DodgeTransformOptions, IElement } from '../../types';\nimport { getBandWidthOfScale, isBandLikeScale } from '../../graph/mark/encode';\nimport { array, isNil } from '@visactor/vutils';\nimport { getter, toPercent } from '@visactor/vgrammar-util';\n\n/**\n * 针对mark的dodge变换,支持x、y方向\n */\nexport const transform = (options: DodgeTransformOptions, upstreamData: IElement[]) => {\n if (!upstreamData || upstreamData.length === 0 || !upstreamData[0]?.mark) {\n return upstreamData;\n }\n const mark = upstreamData[0].mark;\n const markScales = mark.getScales();\n const bandScale = Object.values(markScales).find(isBandLikeScale);\n\n if (!bandScale) {\n return upstreamData;\n }\n\n const scales = mark.getScalesByChannel();\n const bandWidth = getBandWidthOfScale(bandScale);\n const dodgeChannel = isNil(options.dodgeChannel)\n ? scales.y === bandScale ||\n scales.y1 === bandScale ||\n (scales.x && !isBandLikeScale(scales.x)) ||\n (scales.x1 && !isBandLikeScale(scales.x1))\n ? 'y'\n : 'x'\n : options.dodgeChannel;\n\n if (bandWidth > 0) {\n const innerGap = options.innerGap ?? 0;\n const categoryGap = options.categoryGap ?? '20%';\n let getDodgeBy = (element: IElement) => element.groupKey;\n\n if (!isNil(options.dodgeBy)) {\n const getDodgeValue = getter(array(options.dodgeBy));\n\n getDodgeBy = (element: IElement) => getDodgeValue(element.getDatum());\n }\n\n const groupValues: any[] = [];\n\n upstreamData.forEach(element => {\n const groupValue = getDodgeBy(element);\n if (!groupValues.includes(groupValue)) {\n groupValues.push(groupValue);\n }\n });\n\n const groupCount = groupValues.length;\n\n if (groupCount < 1) {\n return upstreamData;\n }\n\n const catGap = toPercent(categoryGap, bandWidth);\n let innerSize = catGap >= bandWidth ? bandWidth : bandWidth - catGap;\n const innerGapSize = toPercent(innerGap, innerSize);\n let size = (innerSize - Math.max(groupCount - 1, 0) * innerGapSize) / groupCount;\n\n if (size > options.maxWidth) {\n innerSize -= (size - options.maxWidth) * groupCount;\n size = options.maxWidth;\n } else if (size < options.minWidth && options.minWidth <= bandWidth / groupCount) {\n innerSize += (options.minWidth - size) * groupCount;\n size = options.minWidth;\n }\n\n const offsetByGroup = {};\n\n groupValues.forEach((entry, index) => {\n offsetByGroup[entry] = -innerSize / 2 + index * (size + innerGapSize);\n });\n\n const markType = mark.markType;\n\n if (markType === 'rect' || markType === 'interval' || markType === 'arc') {\n upstreamData.forEach(element => {\n const groupValue = getDodgeBy(element);\n const offset = offsetByGroup[groupValue];\n const attrs = element.getItemAttribute();\n\n if (dodgeChannel === 'x') {\n const x = isNil(attrs.width) && !isNil(attrs.x1) ? Math.min(attrs.x, attrs.x1) : attrs.x;\n const width = !isNil(attrs.width) ? attrs.width : isNil(attrs.x1) ? bandWidth : Math.abs(attrs.x1 - attrs.x);\n const newAttrs: any = { x: x + width / 2 + offset };\n\n if (!isNil(attrs.width)) {\n newAttrs.width = size;\n } else {\n newAttrs.x1 = newAttrs.x + size;\n }\n\n element.setItemAttributes(newAttrs);\n } else if (dodgeChannel === 'y') {\n const y = isNil(attrs.height) && !isNil(attrs.y1) ? Math.min(attrs.y, attrs.y1) : attrs.y;\n const height = !isNil(attrs.height)\n ? attrs.height\n : isNil(attrs.y1)\n ? bandWidth\n : Math.abs(attrs.y1 - attrs.y);\n\n const newAttrs: any = { y: y + height / 2 + offset };\n\n if (!isNil(attrs.height)) {\n newAttrs.height = size;\n } else {\n newAttrs.y1 = newAttrs.y + size;\n }\n\n element.setItemAttributes(newAttrs);\n }\n });\n } else {\n upstreamData.forEach(element => {\n const groupValue = getDodgeBy(element);\n const offset = offsetByGroup[groupValue];\n\n if (dodgeChannel === 'x') {\n const x = element.getItemAttribute('x') + bandWidth / 2 + offset + size / 2;\n\n element.setItemAttributes({ x });\n\n if (markType === 'rule') {\n element.setItemAttributes({ x1: x });\n }\n } else if (dodgeChannel === 'y') {\n const y = element.getItemAttribute('y') + bandWidth / 2 + offset + size / 2;\n\n element.setItemAttributes({ y });\n\n if (markType === 'rule') {\n element.setItemAttributes({ y1: y });\n }\n }\n });\n }\n }\n\n return upstreamData;\n};\n"]}
1
+ {"version":3,"sources":["../src/transforms/mark/dodge.ts"],"names":[],"mappings":";;;AACA,6CAAgD;AAChD,2DAA4D;AAC5D,4CAAwE;AAKjE,MAAM,SAAS,GAAG,CAAC,OAA8B,EAAE,YAAwB,EAAE,EAAE;;IACpF,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAA,MAAA,YAAY,CAAC,CAAC,CAAC,0CAAE,IAAI,CAAA,EAAE;QACxE,OAAO,YAAY,CAAC;KACrB;IACD,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAClC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IACpC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,uBAAe,CAAC,CAAC;IAElE,IAAI,CAAC,SAAS,EAAE;QACd,OAAO,YAAY,CAAC;KACrB;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,IAAA,2BAAmB,EAAC,SAAS,CAAC,CAAC;IACjD,MAAM,YAAY,GAAG,IAAA,cAAK,EAAC,OAAO,CAAC,YAAY,CAAC;QAC9C,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,SAAS;YACtB,MAAM,CAAC,EAAE,KAAK,SAAS;YACvB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAA,uBAAe,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACxC,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,IAAA,uBAAe,EAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC1C,CAAC,CAAC,GAAG;YACL,CAAC,CAAC,GAAG;QACP,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC;IAEzB,IAAI,SAAS,GAAG,CAAC,EAAE;QACjB,MAAM,QAAQ,GAAG,MAAA,OAAO,CAAC,QAAQ,mCAAI,CAAC,CAAC;QACvC,MAAM,WAAW,GAAG,MAAA,OAAO,CAAC,WAAW,mCAAI,KAAK,CAAC;QACjD,IAAI,UAAU,GAAG,CAAC,OAAiB,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;QAEzD,IAAI,CAAC,IAAA,cAAK,EAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC3B,MAAM,aAAa,GAAG,IAAA,sBAAM,EAAC,IAAA,cAAK,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;YAErD,UAAU,GAAG,CAAC,OAAiB,EAAE,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;SACvE;QAED,MAAM,WAAW,GAAU,EAAE,CAAC;QAE9B,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC7B,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;YACvC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;gBACrC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAC9B;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC;QAEtC,IAAI,UAAU,GAAG,CAAC,EAAE;YAClB,OAAO,YAAY,CAAC;SACrB;QAED,MAAM,MAAM,GAAG,IAAA,yBAAS,EAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACjD,IAAI,SAAS,GAAG,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,GAAG,MAAM,CAAC;QACrE,MAAM,YAAY,GAAG,IAAA,yBAAS,EAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACpD,IAAI,IAAI,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,GAAG,UAAU,CAAC;QAEjF,IAAI,IAAI,GAAG,OAAO,CAAC,QAAQ,EAAE;YAC3B,SAAS,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC;YACpD,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC;SACzB;aAAM,IAAI,IAAI,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,IAAI,SAAS,GAAG,UAAU,EAAE;YAChF,SAAS,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,UAAU,CAAC;YACpD,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC;SACzB;QAED,MAAM,aAAa,GAAG,EAAE,CAAC;QAEzB,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACnC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,GAAG,YAAY,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE/B,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,UAAU,IAAI,QAAQ,KAAK,KAAK,EAAE;YACxE,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC7B,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;gBACvC,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;gBACzC,MAAM,KAAK,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;gBAEzC,IAAI,YAAY,KAAK,GAAG,EAAE;oBACxB,MAAM,CAAC,GAAG,IAAA,cAAK,EAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAA,cAAK,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;oBACzF,MAAM,KAAK,GAAG,CAAC,IAAA,cAAK,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAA,cAAK,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC7G,MAAM,QAAQ,GAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC;oBAEpD,IAAI,CAAC,IAAA,cAAK,EAAC,KAAK,CAAC,KAAK,CAAC,EAAE;wBACvB,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC;qBACvB;yBAAM;wBACL,QAAQ,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC;qBACjC;oBAED,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;iBACrC;qBAAM,IAAI,YAAY,KAAK,GAAG,EAAE;oBAC/B,MAAM,CAAC,GAAG,IAAA,cAAK,EAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAA,cAAK,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;oBAC1F,MAAM,MAAM,GAAG,CAAC,IAAA,cAAK,EAAC,KAAK,CAAC,MAAM,CAAC;wBACjC,CAAC,CAAC,KAAK,CAAC,MAAM;wBACd,CAAC,CAAC,IAAA,cAAK,EAAC,KAAK,CAAC,EAAE,CAAC;4BACjB,CAAC,CAAC,SAAS;4BACX,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBAEjC,MAAM,QAAQ,GAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC;oBAErD,IAAI,CAAC,IAAA,cAAK,EAAC,KAAK,CAAC,MAAM,CAAC,EAAE;wBACxB,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;qBACxB;yBAAM;wBACL,QAAQ,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC;qBACjC;oBAED,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;iBACrC;YACH,CAAC,CAAC,CAAC;SACJ;aAAM;YACL,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC7B,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;gBACvC,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;gBAEzC,IAAI,YAAY,KAAK,GAAG,EAAE;oBACxB,MAAM,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC;oBAE5E,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;oBAEjC,IAAI,QAAQ,KAAK,MAAM,EAAE;wBACvB,OAAO,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;qBACtC;iBACF;qBAAM,IAAI,YAAY,KAAK,GAAG,EAAE;oBAC/B,MAAM,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC;oBAE5E,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;oBAEjC,IAAI,QAAQ,KAAK,MAAM,EAAE;wBACvB,OAAO,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;qBACtC;iBACF;YACH,CAAC,CAAC,CAAC;SACJ;KACF;IAED,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAtIW,QAAA,SAAS,aAsIpB","file":"dodge.js","sourcesContent":["import type { DodgeTransformOptions, IElement } from '../../types';\nimport { array, isNil } from '@visactor/vutils';\nimport { getter, toPercent } from '@visactor/vgrammar-util';\nimport { getBandWidthOfScale, isBandLikeScale } from '../../util/scale';\n\n/**\n * 针对mark的dodge变换,支持x、y方向\n */\nexport const transform = (options: DodgeTransformOptions, upstreamData: IElement[]) => {\n if (!upstreamData || upstreamData.length === 0 || !upstreamData[0]?.mark) {\n return upstreamData;\n }\n const mark = upstreamData[0].mark;\n const markScales = mark.getScales();\n const bandScale = Object.values(markScales).find(isBandLikeScale);\n\n if (!bandScale) {\n return upstreamData;\n }\n\n const scales = mark.getScalesByChannel();\n const bandWidth = getBandWidthOfScale(bandScale);\n const dodgeChannel = isNil(options.dodgeChannel)\n ? scales.y === bandScale ||\n scales.y1 === bandScale ||\n (scales.x && !isBandLikeScale(scales.x)) ||\n (scales.x1 && !isBandLikeScale(scales.x1))\n ? 'y'\n : 'x'\n : options.dodgeChannel;\n\n if (bandWidth > 0) {\n const innerGap = options.innerGap ?? 0;\n const categoryGap = options.categoryGap ?? '20%';\n let getDodgeBy = (element: IElement) => element.groupKey;\n\n if (!isNil(options.dodgeBy)) {\n const getDodgeValue = getter(array(options.dodgeBy));\n\n getDodgeBy = (element: IElement) => getDodgeValue(element.getDatum());\n }\n\n const groupValues: any[] = [];\n\n upstreamData.forEach(element => {\n const groupValue = getDodgeBy(element);\n if (!groupValues.includes(groupValue)) {\n groupValues.push(groupValue);\n }\n });\n\n const groupCount = groupValues.length;\n\n if (groupCount < 1) {\n return upstreamData;\n }\n\n const catGap = toPercent(categoryGap, bandWidth);\n let innerSize = catGap >= bandWidth ? bandWidth : bandWidth - catGap;\n const innerGapSize = toPercent(innerGap, innerSize);\n let size = (innerSize - Math.max(groupCount - 1, 0) * innerGapSize) / groupCount;\n\n if (size > options.maxWidth) {\n innerSize -= (size - options.maxWidth) * groupCount;\n size = options.maxWidth;\n } else if (size < options.minWidth && options.minWidth <= bandWidth / groupCount) {\n innerSize += (options.minWidth - size) * groupCount;\n size = options.minWidth;\n }\n\n const offsetByGroup = {};\n\n groupValues.forEach((entry, index) => {\n offsetByGroup[entry] = -innerSize / 2 + index * (size + innerGapSize);\n });\n\n const markType = mark.markType;\n\n if (markType === 'rect' || markType === 'interval' || markType === 'arc') {\n upstreamData.forEach(element => {\n const groupValue = getDodgeBy(element);\n const offset = offsetByGroup[groupValue];\n const attrs = element.getItemAttribute();\n\n if (dodgeChannel === 'x') {\n const x = isNil(attrs.width) && !isNil(attrs.x1) ? Math.min(attrs.x, attrs.x1) : attrs.x;\n const width = !isNil(attrs.width) ? attrs.width : isNil(attrs.x1) ? bandWidth : Math.abs(attrs.x1 - attrs.x);\n const newAttrs: any = { x: x + width / 2 + offset };\n\n if (!isNil(attrs.width)) {\n newAttrs.width = size;\n } else {\n newAttrs.x1 = newAttrs.x + size;\n }\n\n element.setItemAttributes(newAttrs);\n } else if (dodgeChannel === 'y') {\n const y = isNil(attrs.height) && !isNil(attrs.y1) ? Math.min(attrs.y, attrs.y1) : attrs.y;\n const height = !isNil(attrs.height)\n ? attrs.height\n : isNil(attrs.y1)\n ? bandWidth\n : Math.abs(attrs.y1 - attrs.y);\n\n const newAttrs: any = { y: y + height / 2 + offset };\n\n if (!isNil(attrs.height)) {\n newAttrs.height = size;\n } else {\n newAttrs.y1 = newAttrs.y + size;\n }\n\n element.setItemAttributes(newAttrs);\n }\n });\n } else {\n upstreamData.forEach(element => {\n const groupValue = getDodgeBy(element);\n const offset = offsetByGroup[groupValue];\n\n if (dodgeChannel === 'x') {\n const x = element.getItemAttribute('x') + bandWidth / 2 + offset + size / 2;\n\n element.setItemAttributes({ x });\n\n if (markType === 'rule') {\n element.setItemAttributes({ x1: x });\n }\n } else if (dodgeChannel === 'y') {\n const y = element.getItemAttribute('y') + bandWidth / 2 + offset + size / 2;\n\n element.setItemAttributes({ y });\n\n if (markType === 'rule') {\n element.setItemAttributes({ y1: y });\n }\n }\n });\n }\n }\n\n return upstreamData;\n};\n"]}
@@ -4,10 +4,10 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.transform = exports.jitterX = exports.jitterY = void 0;
6
6
 
7
- const encode_1 = require("../../graph/mark/encode"), vutils_1 = require("@visactor/vutils"), vgrammar_util_1 = require("@visactor/vgrammar-util"), jitterByChannel = (options, upstreamData, channel) => {
7
+ const vutils_1 = require("@visactor/vutils"), vgrammar_util_1 = require("@visactor/vgrammar-util"), scale_1 = require("../../util/scale"), jitterByChannel = (options, upstreamData, channel) => {
8
8
  var _a, _b, _c, _d;
9
9
  const mark = upstreamData[0].mark, scale = null === (_a = mark.getScalesByChannel()) || void 0 === _a ? void 0 : _a[channel], random = null !== (_b = options.random) && void 0 !== _b ? _b : Math.random, ratio = Math.min(null !== (_c = "x" === channel ? options.widthRatio : options.heightRatio) && void 0 !== _c ? _c : .4, .5), bandSize = null !== (_d = "x" === channel ? options.bandWidth : options.bandHeight) && void 0 !== _d ? _d : (0,
10
- encode_1.getBandWidthOfScale)(scale);
10
+ scale_1.getBandWidthOfScale)(scale);
11
11
  if ((0, vutils_1.isNil)(bandSize)) {
12
12
  let domain = (0, vgrammar_util_1.extent)(upstreamData, (el => el.getItemAttribute(channel)));
13
13
  if ((0, vutils_1.isNil)(domain[0]) || (0, vutils_1.isNil)(domain[1]) || domain[0] === domain[1]) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/transforms/mark/jitter.ts"],"names":[],"mappings":"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","file":"jitter.js","sourcesContent":["import type { IElement, JitterTransformOptions, JitterXTransformOptions, JitterYTransformOptions } from '../../types';\nimport { getBandWidthOfScale } from '../../graph/mark/encode';\nimport { isNil } from '@visactor/vutils';\nimport { extent } from '@visactor/vgrammar-util';\n\nconst jitterByChannel = (options: JitterTransformOptions, upstreamData: IElement[], channel: 'x' | 'y') => {\n const mark = upstreamData[0].mark;\n const scale = mark.getScalesByChannel()?.[channel];\n const random = options.random ?? Math.random;\n const ratio = Math.min((channel === 'x' ? options.widthRatio : options.heightRatio) ?? 0.4, 0.5);\n const bandSize = (channel === 'x' ? options.bandWidth : options.bandHeight) ?? getBandWidthOfScale(scale);\n\n if (isNil(bandSize)) {\n let domain = extent(upstreamData, el => el.getItemAttribute(channel));\n\n if (isNil(domain[0]) || isNil(domain[1]) || domain[0] === domain[1]) {\n const viewBox = mark.view.getViewBox();\n domain = channel === 'x' ? [viewBox.x1, viewBox.x2] : [viewBox.y1, viewBox.y2];\n }\n const length = upstreamData.length;\n\n upstreamData.forEach((element, index) => {\n element.setItemAttributes({ [channel]: domain[0] + (domain[1] - domain[0]) * random(index, length) });\n });\n } else {\n const length = upstreamData.length;\n upstreamData.forEach((element, index) => {\n const val = element.getItemAttribute(channel);\n const domain = [val - ratio * bandSize, val + ratio * bandSize];\n element.setItemAttributes({ [channel]: domain[0] + (domain[1] - domain[0]) * random(index, length) });\n });\n }\n};\n\n/**\n * 针对mark的dodge变换,支持x、y方向\n */\nexport const jitterY = (options: JitterYTransformOptions, upstreamData: IElement[]) => {\n if (!upstreamData || upstreamData.length === 0 || !upstreamData[0]?.mark) {\n return upstreamData;\n }\n\n return jitterByChannel(options, upstreamData, 'y');\n};\n\n/**\n * 针对mark的dodge变换,支持x、y方向\n */\nexport const jitterX = (options: JitterXTransformOptions, upstreamData: IElement[]) => {\n if (!upstreamData || upstreamData.length === 0 || !upstreamData[0]?.mark) {\n return upstreamData;\n }\n\n return jitterByChannel(options, upstreamData, 'x');\n};\n\n/**\n * 针对mark的dodge变换,支持x、y方向\n */\nexport const transform = (options: JitterTransformOptions, upstreamData: IElement[]) => {\n if (!upstreamData || upstreamData.length === 0 || !upstreamData[0]?.mark) {\n return upstreamData;\n }\n\n jitterByChannel(options, upstreamData, 'x');\n jitterByChannel(options, upstreamData, 'y');\n\n return upstreamData;\n};\n"]}
1
+ {"version":3,"sources":["../src/transforms/mark/jitter.ts"],"names":[],"mappings":"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","file":"jitter.js","sourcesContent":["import type { IElement, JitterTransformOptions, JitterXTransformOptions, JitterYTransformOptions } from '../../types';\nimport { isNil } from '@visactor/vutils';\nimport { extent } from '@visactor/vgrammar-util';\nimport { getBandWidthOfScale } from '../../util/scale';\n\nconst jitterByChannel = (options: JitterTransformOptions, upstreamData: IElement[], channel: 'x' | 'y') => {\n const mark = upstreamData[0].mark;\n const scale = mark.getScalesByChannel()?.[channel];\n const random = options.random ?? Math.random;\n const ratio = Math.min((channel === 'x' ? options.widthRatio : options.heightRatio) ?? 0.4, 0.5);\n const bandSize = (channel === 'x' ? options.bandWidth : options.bandHeight) ?? getBandWidthOfScale(scale);\n\n if (isNil(bandSize)) {\n let domain = extent(upstreamData, el => el.getItemAttribute(channel));\n\n if (isNil(domain[0]) || isNil(domain[1]) || domain[0] === domain[1]) {\n const viewBox = mark.view.getViewBox();\n domain = channel === 'x' ? [viewBox.x1, viewBox.x2] : [viewBox.y1, viewBox.y2];\n }\n const length = upstreamData.length;\n\n upstreamData.forEach((element, index) => {\n element.setItemAttributes({ [channel]: domain[0] + (domain[1] - domain[0]) * random(index, length) });\n });\n } else {\n const length = upstreamData.length;\n upstreamData.forEach((element, index) => {\n const val = element.getItemAttribute(channel);\n const domain = [val - ratio * bandSize, val + ratio * bandSize];\n element.setItemAttributes({ [channel]: domain[0] + (domain[1] - domain[0]) * random(index, length) });\n });\n }\n};\n\n/**\n * 针对mark的dodge变换,支持x、y方向\n */\nexport const jitterY = (options: JitterYTransformOptions, upstreamData: IElement[]) => {\n if (!upstreamData || upstreamData.length === 0 || !upstreamData[0]?.mark) {\n return upstreamData;\n }\n\n return jitterByChannel(options, upstreamData, 'y');\n};\n\n/**\n * 针对mark的dodge变换,支持x、y方向\n */\nexport const jitterX = (options: JitterXTransformOptions, upstreamData: IElement[]) => {\n if (!upstreamData || upstreamData.length === 0 || !upstreamData[0]?.mark) {\n return upstreamData;\n }\n\n return jitterByChannel(options, upstreamData, 'x');\n};\n\n/**\n * 针对mark的dodge变换,支持x、y方向\n */\nexport const transform = (options: JitterTransformOptions, upstreamData: IElement[]) => {\n if (!upstreamData || upstreamData.length === 0 || !upstreamData[0]?.mark) {\n return upstreamData;\n }\n\n jitterByChannel(options, upstreamData, 'x');\n jitterByChannel(options, upstreamData, 'y');\n\n return upstreamData;\n};\n"]}
@@ -1,4 +1,4 @@
1
- import type { IGraphic, ACustomAnimate, EasingType } from '@visactor/vrender';
1
+ import type { IGraphic, ACustomAnimate, EasingType } from '@visactor/vrender-core';
2
2
  import type { IPointLike } from '@visactor/vutils';
3
3
  import type { MarkFunctionCallback, MarkFunctionType } from './mark';
4
4
  import type { IMark } from './grammar';
@@ -3,4 +3,4 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  });
6
- //# sourceMappingURL=animate.js.map
6
+ //# sourceMappingURL=animate.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types/animate.ts"],"names":[],"mappings":"","file":"animate.js","sourcesContent":["import type { IGraphic, ACustomAnimate, EasingType } from '@visactor/vrender';\nimport type { IPointLike } from '@visactor/vutils';\nimport type { MarkFunctionCallback, MarkFunctionType } from './mark';\nimport type { IMark } from './grammar';\nimport type { IElement } from './element';\n\nexport type TypeAnimation<T extends IElement> = (\n element: T,\n options: any,\n animationParameters: IAnimationParameters\n) => { from?: { [channel: string]: any }; to?: { [channel: string]: any } };\n\nexport interface IClipAnimationOptions {\n clipDimension?: 'x' | 'y' | 'auto' | 'default';\n}\n\nexport interface IGrowCartesianAnimationOptions {\n orient?: 'positive' | 'negative';\n overall?: boolean | number;\n direction?: 'x' | 'y' | 'xy';\n}\n\nexport interface IGrowAngleAnimationOptions {\n orient?: 'clockwise' | 'anticlockwise';\n overall?: boolean | number;\n}\n\nexport interface IGrowRadiusAnimationOptions {\n orient?: 'inside' | 'outside';\n overall?: boolean | number;\n}\n\nexport interface IGrowPointsAnimationOptions {\n orient?: 'positive' | 'negative';\n}\n\nexport interface IGrowPointsOverallAnimationOptions extends IGrowPointsAnimationOptions {\n center?: IPointLike;\n}\n\nexport interface IScaleAnimationOptions {\n direction?: 'x' | 'y' | 'xy';\n}\n\nexport interface IMoveAnimationOptions {\n direction?: 'x' | 'y' | 'xy';\n orient?: 'positive' | 'negative';\n offset?: number;\n point?: { x?: number; y?: number };\n}\n\nexport interface IRotateAnimationOptions {\n orient?: 'clockwise' | 'anticlockwise';\n angle?: number;\n}\n\n/** VGrammar 层提供的图元text上的图形属性,现在暂时会和VRender不一致 */\nexport interface TextItemAttributes {\n fontSize?: number;\n lineHeight?: number;\n font?: string;\n fontStyle?: string;\n fontVariant?: string;\n fontWeight?: string | number;\n lineBreak?: string;\n text?: string | string[];\n limit?: number;\n align?: string;\n baseline?: string;\n ellipsis?: string | boolean;\n dir?: string;\n}\n\n/** animation */\nexport type MarkFunctionValueType<T> = MarkFunctionCallback<T> | T;\n\nexport type IAnimationConfig = IAnimationTimeline | IAnimationTypeConfig;\n\n/**\n * state动画,暂时只支持简单配置\n */\nexport interface IStateAnimationConfig {\n duration?: number;\n easing?: EasingType;\n}\n\n/**\n * 动画 config 简化配置\n */\nexport interface IAnimationTypeConfig {\n type?: string;\n channel?: IAnimationChannelAttrs | IAnimationChannelAttributes;\n custom?: IAnimationChannelInterpolator | IAnimationCustomConstructor;\n customParameters?: MarkFunctionValueType<any>;\n easing?: EasingType;\n delay?: MarkFunctionValueType<number>;\n duration?: MarkFunctionValueType<number>;\n oneByOne?: MarkFunctionValueType<boolean | number>;\n startTime?: MarkFunctionValueType<number>;\n totalTime?: MarkFunctionValueType<number>;\n /** loop: true 无限循环; loop: 正整数,表示循环的次数 */\n loop?: boolean | number;\n /** 动画 effect 配置项 */\n options?: MarkFunctionValueType<any>;\n /** 动画执行相关控制配置项 */\n controlOptions?: IAnimationControlOptions;\n}\n\n/**\n * 动画 timeline 完整配置,一条时间线内的动画单元只能串行\n * 多个timeline是可以并行的\n * 考虑到同一图元不能在多个timeline上,所以timeline不应该提供数组配置的能力\n */\nexport interface IAnimationTimeline {\n /** 为了方便动画编排,用户可以设置 id 用于识别时间线 */\n id?: string;\n /** 时间切片 */\n timeSlices: IAnimationTimeSlice | IAnimationTimeSlice[];\n /** 动画开始的相对时间,可以为负数 */\n startTime?: MarkFunctionValueType<number>;\n /** 动画时长 */\n totalTime?: MarkFunctionValueType<number>;\n /** 动画依次执行的延迟 */\n oneByOne?: MarkFunctionValueType<number | boolean>;\n /** loop: true 无限循环; loop: 正整数,表示循环的次数 */\n loop?: MarkFunctionValueType<number | boolean>;\n /** 对图元元素进行划分,和过滤类似,但是不同时间线不能同时作用在相同的元素上 */\n partitioner?: MarkFunctionCallback<boolean>;\n /** 对同一时间线上的元素进行排序 */\n sort?: (datumA: any, datumB: any, elementA: IElement, elementB: IElement, parameters: any) => number;\n /** 动画执行相关控制配置项 */\n controlOptions?: IAnimationControlOptions;\n}\n\nexport interface IAnimationTimeSlice {\n effects: IAnimationEffect | IAnimationEffect[];\n duration?: MarkFunctionValueType<number>;\n delay?: MarkFunctionValueType<number>;\n}\n\nexport type IAnimationChannelFunction = (datum: any, element: IElement, parameters: IAnimationParameters) => any;\nexport type IAnimationChannelAttrs = Record<\n string,\n {\n from?: any | IAnimationChannelFunction;\n to?: any | IAnimationChannelFunction;\n }\n>;\nexport type IAnimationChannelAttributes = string[];\nexport type IAnimationChannelInterpolator = (\n ratio: number,\n from: any,\n to: any,\n nextAttributes: any,\n datum: any,\n element: IElement,\n parameters: IAnimationParameters\n) => boolean | void;\n\n// TODO: fix ACustomAnimate<any>\nexport interface IAnimationCustomConstructor {\n new (from: any, to: any, duration: number, ease: EasingType, parameters?: any): ACustomAnimate<any>;\n}\n\nexport interface IAnimationEffect {\n type?: string;\n channel?: IAnimationChannelAttrs | IAnimationChannelAttributes;\n custom?: IAnimationChannelInterpolator | IAnimationCustomConstructor;\n customParameters?: MarkFunctionValueType<any>;\n easing?: EasingType;\n /** options暂时没有处理 */\n options?: MarkFunctionValueType<any>;\n}\n\nexport interface IAnimationControlOptions {\n /** 当动画状态变更时清空动画 */\n stopWhenStateChange?: boolean;\n /** 是否立即应用动画初始状态 */\n immediatelyApply?: boolean;\n}\n\n/**\n * Animation timeline should be parsed into animation units,\n * which record all necessary configs for animator to execute animation.\n *\n * animation unit time:\n * |<--initialDelay-->| |<--loopDelay--><--Slices--><--looDelayAfter-->| |<--loopDuration-->|\n * |<-----------------loopDuration--------------->|\n */\nexport interface IAnimationUnit {\n /**\n * initial delay time before any animation loop\n */\n initialDelay: number;\n /**\n * total time for one animation loop\n */\n loopDuration: number;\n /**\n * delay time before time slices\n */\n loopDelay: number;\n /**\n * delay time after time slices\n */\n loopDelayAfter: number;\n /**\n * animating time in one animation loop\n */\n loopAnimateDuration: number;\n loopCount: number;\n totalTime: number;\n timeSlices: IAnimationTimeSlice[];\n}\n\nexport interface IAnimationRecord {\n start: IGraphic;\n end: IGraphic;\n changes: any[];\n}\n\nexport interface IAnimationParameters {\n width: number;\n height: number;\n mark: IMark;\n group: IMark | null;\n elementIndex: number;\n elementCount: number;\n view: any;\n}\n\nexport interface IParsedAnimationConfig {\n state: string;\n timeline: IAnimationTimeline;\n originConfig: IAnimationConfig;\n id: string;\n}\n\nexport interface IParsedAnimationAttrs {\n from?: any;\n to?: any;\n custom?: IAnimationChannelInterpolator | IAnimationCustomConstructor;\n customParameters?: any;\n}\n\n// animate structure\n\nexport interface IAnimatorOptions {\n state: string;\n timeline: IAnimationTimeline;\n id: string;\n}\n\nexport interface IAnimator {\n id: number;\n element: IElement;\n animationOptions: IAnimatorOptions;\n isAnimating: boolean;\n\n /** execute animation */\n animate: (animationParameters: IAnimationParameters, parameters: any) => this;\n /** set animation callback */\n callback: (callbackFunction: (...args: any[]) => void) => this;\n\n // animation control\n stop: (stopState?: 'start' | 'end', invokeCallback?: boolean) => this;\n pause: () => this;\n resume: () => this;\n\n /** set additional initial animation delay */\n startAt: (startTime: number) => this;\n /** get total animation execution time */\n getTotalAnimationTime: () => number;\n\n getEndAttributes: () => Record<string, any>;\n}\n\nexport interface IAnimateArranger {\n // animation control api\n parallel: (arranger: IAnimateArranger) => this;\n after: (arranger: IAnimateArranger) => this;\n\n // internal properties\n afterArranger: IAnimateArranger;\n parallelArrangers: IAnimateArranger[];\n animators: IAnimator[];\n totalTime: number;\n startTime: number;\n endTime: number;\n arrangeTime: () => void;\n}\n\nexport interface IBaseAnimate {\n // animation control\n stop: () => this;\n pause: () => this;\n resume: () => this;\n\n // internal animation process api\n animate: () => this;\n enable: () => this;\n disable: () => this;\n enableAnimationState: (state: string | string[]) => this;\n disableAnimationState: (state: string | string[]) => this;\n isAnimating: () => boolean;\n\n release: () => void;\n}\n\nexport interface IViewAnimate extends IBaseAnimate {\n animateAddition: (mark: IMark) => this;\n}\n\nexport interface IAnimate extends IBaseAnimate {\n mark: IMark;\n\n // additional animation control\n run: (config: IAnimationConfig | IAnimationConfig[]) => IAnimateArranger;\n runAnimationByState: (animationState: string) => IAnimateArranger;\n stopAnimationByState: (animationState: string) => this;\n pauseAnimationByState: (animationState: string) => this;\n resumeAnimationByState: (animationState: string) => this;\n reverse: () => this;\n restart: () => this;\n record: () => this;\n recordEnd: () => this;\n\n // internal animation process api\n updateConfig: (config: Record<string, IAnimationConfig | IAnimationConfig[]>) => void;\n updateState: (state: MarkFunctionType<string> | null) => void;\n isElementAnimating: (element: IElement) => boolean;\n getAnimatorCount: () => number;\n getElementAnimators: (element: IElement | IElement[], animationState?: string) => IAnimator[];\n release: () => void;\n}\n"]}
1
+ {"version":3,"sources":["../src/types/animate.ts"],"names":[],"mappings":"","file":"animate.js","sourcesContent":["import type { IGraphic, ACustomAnimate, EasingType } from '@visactor/vrender-core';\nimport type { IPointLike } from '@visactor/vutils';\nimport type { MarkFunctionCallback, MarkFunctionType } from './mark';\nimport type { IMark } from './grammar';\nimport type { IElement } from './element';\n\nexport type TypeAnimation<T extends IElement> = (\n element: T,\n options: any,\n animationParameters: IAnimationParameters\n) => { from?: { [channel: string]: any }; to?: { [channel: string]: any } };\n\nexport interface IClipAnimationOptions {\n clipDimension?: 'x' | 'y' | 'auto' | 'default';\n}\n\nexport interface IGrowCartesianAnimationOptions {\n orient?: 'positive' | 'negative';\n overall?: boolean | number;\n direction?: 'x' | 'y' | 'xy';\n}\n\nexport interface IGrowAngleAnimationOptions {\n orient?: 'clockwise' | 'anticlockwise';\n overall?: boolean | number;\n}\n\nexport interface IGrowRadiusAnimationOptions {\n orient?: 'inside' | 'outside';\n overall?: boolean | number;\n}\n\nexport interface IGrowPointsAnimationOptions {\n orient?: 'positive' | 'negative';\n}\n\nexport interface IGrowPointsOverallAnimationOptions extends IGrowPointsAnimationOptions {\n center?: IPointLike;\n}\n\nexport interface IScaleAnimationOptions {\n direction?: 'x' | 'y' | 'xy';\n}\n\nexport interface IMoveAnimationOptions {\n direction?: 'x' | 'y' | 'xy';\n orient?: 'positive' | 'negative';\n offset?: number;\n point?: { x?: number; y?: number };\n}\n\nexport interface IRotateAnimationOptions {\n orient?: 'clockwise' | 'anticlockwise';\n angle?: number;\n}\n\n/** VGrammar 层提供的图元text上的图形属性,现在暂时会和VRender不一致 */\nexport interface TextItemAttributes {\n fontSize?: number;\n lineHeight?: number;\n font?: string;\n fontStyle?: string;\n fontVariant?: string;\n fontWeight?: string | number;\n lineBreak?: string;\n text?: string | string[];\n limit?: number;\n align?: string;\n baseline?: string;\n ellipsis?: string | boolean;\n dir?: string;\n}\n\n/** animation */\nexport type MarkFunctionValueType<T> = MarkFunctionCallback<T> | T;\n\nexport type IAnimationConfig = IAnimationTimeline | IAnimationTypeConfig;\n\n/**\n * state动画,暂时只支持简单配置\n */\nexport interface IStateAnimationConfig {\n duration?: number;\n easing?: EasingType;\n}\n\n/**\n * 动画 config 简化配置\n */\nexport interface IAnimationTypeConfig {\n type?: string;\n channel?: IAnimationChannelAttrs | IAnimationChannelAttributes;\n custom?: IAnimationChannelInterpolator | IAnimationCustomConstructor;\n customParameters?: MarkFunctionValueType<any>;\n easing?: EasingType;\n delay?: MarkFunctionValueType<number>;\n duration?: MarkFunctionValueType<number>;\n oneByOne?: MarkFunctionValueType<boolean | number>;\n startTime?: MarkFunctionValueType<number>;\n totalTime?: MarkFunctionValueType<number>;\n /** loop: true 无限循环; loop: 正整数,表示循环的次数 */\n loop?: boolean | number;\n /** 动画 effect 配置项 */\n options?: MarkFunctionValueType<any>;\n /** 动画执行相关控制配置项 */\n controlOptions?: IAnimationControlOptions;\n}\n\n/**\n * 动画 timeline 完整配置,一条时间线内的动画单元只能串行\n * 多个timeline是可以并行的\n * 考虑到同一图元不能在多个timeline上,所以timeline不应该提供数组配置的能力\n */\nexport interface IAnimationTimeline {\n /** 为了方便动画编排,用户可以设置 id 用于识别时间线 */\n id?: string;\n /** 时间切片 */\n timeSlices: IAnimationTimeSlice | IAnimationTimeSlice[];\n /** 动画开始的相对时间,可以为负数 */\n startTime?: MarkFunctionValueType<number>;\n /** 动画时长 */\n totalTime?: MarkFunctionValueType<number>;\n /** 动画依次执行的延迟 */\n oneByOne?: MarkFunctionValueType<number | boolean>;\n /** loop: true 无限循环; loop: 正整数,表示循环的次数 */\n loop?: MarkFunctionValueType<number | boolean>;\n /** 对图元元素进行划分,和过滤类似,但是不同时间线不能同时作用在相同的元素上 */\n partitioner?: MarkFunctionCallback<boolean>;\n /** 对同一时间线上的元素进行排序 */\n sort?: (datumA: any, datumB: any, elementA: IElement, elementB: IElement, parameters: any) => number;\n /** 动画执行相关控制配置项 */\n controlOptions?: IAnimationControlOptions;\n}\n\nexport interface IAnimationTimeSlice {\n effects: IAnimationEffect | IAnimationEffect[];\n duration?: MarkFunctionValueType<number>;\n delay?: MarkFunctionValueType<number>;\n}\n\nexport type IAnimationChannelFunction = (datum: any, element: IElement, parameters: IAnimationParameters) => any;\nexport type IAnimationChannelAttrs = Record<\n string,\n {\n from?: any | IAnimationChannelFunction;\n to?: any | IAnimationChannelFunction;\n }\n>;\nexport type IAnimationChannelAttributes = string[];\nexport type IAnimationChannelInterpolator = (\n ratio: number,\n from: any,\n to: any,\n nextAttributes: any,\n datum: any,\n element: IElement,\n parameters: IAnimationParameters\n) => boolean | void;\n\n// TODO: fix ACustomAnimate<any>\nexport interface IAnimationCustomConstructor {\n new (from: any, to: any, duration: number, ease: EasingType, parameters?: any): ACustomAnimate<any>;\n}\n\nexport interface IAnimationEffect {\n type?: string;\n channel?: IAnimationChannelAttrs | IAnimationChannelAttributes;\n custom?: IAnimationChannelInterpolator | IAnimationCustomConstructor;\n customParameters?: MarkFunctionValueType<any>;\n easing?: EasingType;\n /** options暂时没有处理 */\n options?: MarkFunctionValueType<any>;\n}\n\nexport interface IAnimationControlOptions {\n /** 当动画状态变更时清空动画 */\n stopWhenStateChange?: boolean;\n /** 是否立即应用动画初始状态 */\n immediatelyApply?: boolean;\n}\n\n/**\n * Animation timeline should be parsed into animation units,\n * which record all necessary configs for animator to execute animation.\n *\n * animation unit time:\n * |<--initialDelay-->| |<--loopDelay--><--Slices--><--looDelayAfter-->| |<--loopDuration-->|\n * |<-----------------loopDuration--------------->|\n */\nexport interface IAnimationUnit {\n /**\n * initial delay time before any animation loop\n */\n initialDelay: number;\n /**\n * total time for one animation loop\n */\n loopDuration: number;\n /**\n * delay time before time slices\n */\n loopDelay: number;\n /**\n * delay time after time slices\n */\n loopDelayAfter: number;\n /**\n * animating time in one animation loop\n */\n loopAnimateDuration: number;\n loopCount: number;\n totalTime: number;\n timeSlices: IAnimationTimeSlice[];\n}\n\nexport interface IAnimationRecord {\n start: IGraphic;\n end: IGraphic;\n changes: any[];\n}\n\nexport interface IAnimationParameters {\n width: number;\n height: number;\n mark: IMark;\n group: IMark | null;\n elementIndex: number;\n elementCount: number;\n view: any;\n}\n\nexport interface IParsedAnimationConfig {\n state: string;\n timeline: IAnimationTimeline;\n originConfig: IAnimationConfig;\n id: string;\n}\n\nexport interface IParsedAnimationAttrs {\n from?: any;\n to?: any;\n custom?: IAnimationChannelInterpolator | IAnimationCustomConstructor;\n customParameters?: any;\n}\n\n// animate structure\n\nexport interface IAnimatorOptions {\n state: string;\n timeline: IAnimationTimeline;\n id: string;\n}\n\nexport interface IAnimator {\n id: number;\n element: IElement;\n animationOptions: IAnimatorOptions;\n isAnimating: boolean;\n\n /** execute animation */\n animate: (animationParameters: IAnimationParameters, parameters: any) => this;\n /** set animation callback */\n callback: (callbackFunction: (...args: any[]) => void) => this;\n\n // animation control\n stop: (stopState?: 'start' | 'end', invokeCallback?: boolean) => this;\n pause: () => this;\n resume: () => this;\n\n /** set additional initial animation delay */\n startAt: (startTime: number) => this;\n /** get total animation execution time */\n getTotalAnimationTime: () => number;\n\n getEndAttributes: () => Record<string, any>;\n}\n\nexport interface IAnimateArranger {\n // animation control api\n parallel: (arranger: IAnimateArranger) => this;\n after: (arranger: IAnimateArranger) => this;\n\n // internal properties\n afterArranger: IAnimateArranger;\n parallelArrangers: IAnimateArranger[];\n animators: IAnimator[];\n totalTime: number;\n startTime: number;\n endTime: number;\n arrangeTime: () => void;\n}\n\nexport interface IBaseAnimate {\n // animation control\n stop: () => this;\n pause: () => this;\n resume: () => this;\n\n // internal animation process api\n animate: () => this;\n enable: () => this;\n disable: () => this;\n enableAnimationState: (state: string | string[]) => this;\n disableAnimationState: (state: string | string[]) => this;\n isAnimating: () => boolean;\n\n release: () => void;\n}\n\nexport interface IViewAnimate extends IBaseAnimate {\n animateAddition: (mark: IMark) => this;\n}\n\nexport interface IAnimate extends IBaseAnimate {\n mark: IMark;\n\n // additional animation control\n run: (config: IAnimationConfig | IAnimationConfig[]) => IAnimateArranger;\n runAnimationByState: (animationState: string) => IAnimateArranger;\n stopAnimationByState: (animationState: string) => this;\n pauseAnimationByState: (animationState: string) => this;\n resumeAnimationByState: (animationState: string) => this;\n reverse: () => this;\n restart: () => this;\n record: () => this;\n recordEnd: () => this;\n\n // internal animation process api\n updateConfig: (config: Record<string, IAnimationConfig | IAnimationConfig[]>) => void;\n updateState: (state: MarkFunctionType<string> | null) => void;\n isElementAnimating: (element: IElement) => boolean;\n getAnimatorCount: () => number;\n getElementAnimators: (element: IElement | IElement[], animationState?: string) => IAnimator[];\n release: () => void;\n}\n"]}
package/cjs/types/base.js CHANGED
@@ -3,4 +3,4 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  });
6
- //# sourceMappingURL=base.js.map
6
+ //# sourceMappingURL=base.js.map