@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
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.ScrollbarFilter = void 0;
6
+
7
+ const graph_1 = require("../graph"), vutils_1 = require("@visactor/vutils"), filter_1 = require("./filter");
8
+
9
+ class ScrollbarFilter extends filter_1.Filter {
10
+ constructor(view, options) {
11
+ super(view, options), this.type = ScrollbarFilter.type, this.options = Object.assign({}, ScrollbarFilter.defaultOptions, options),
12
+ this._marks = view.getMarksBySelector(this.options.source).filter((mark => mark.markType === graph_1.GrammarMarkType.component && "scrollbar" === mark.componentType)),
13
+ this._data = (0, vutils_1.isString)(this.options.target.data) ? view.getDataById(this.options.target.data) : this.options.target.data;
14
+ }
15
+ getEvents() {
16
+ if (!this._marks || 0 === this._marks.length) return [];
17
+ const scrollbar = this._marks[0];
18
+ if (!this._data || !scrollbar) return [];
19
+ const filter = this.options.target.filter, transform = this.options.target.transform, dataFilter = (0,
20
+ vutils_1.isString)(filter) ? (datum, filterValue) => {
21
+ const scale = scrollbar.getScale().getScale(), range = scale.range(), datumRatio = (scale.scale(datum[filter]) - range[0]) / (range[range.length - 1] - range[0]);
22
+ return filterValue.startRatio <= datumRatio && filterValue.endRatio >= datumRatio;
23
+ } : filter;
24
+ return this._filterData(this._data, scrollbar, graph_1.DataFilterRank.scrollbar, (event => {
25
+ if ((0, vutils_1.isString)(filter)) {
26
+ const range = event.detail.value, scaleGrammar = scrollbar.getScale();
27
+ if (scaleGrammar) {
28
+ const scale = scaleGrammar.getScale(), scaleRange = scale.range();
29
+ return {
30
+ start: scale.invert(range[0] * (scaleRange[1] - scaleRange[0]) + scaleRange[0]),
31
+ end: scale.invert(range[1] * (scaleRange[1] - scaleRange[0]) + scaleRange[0]),
32
+ startRatio: range[0],
33
+ endRatio: range[1]
34
+ };
35
+ }
36
+ return {
37
+ startRatio: range[0],
38
+ endRatio: range[1]
39
+ };
40
+ }
41
+ return {
42
+ startRatio: event.detail.value[0],
43
+ endRatio: event.detail.value[1]
44
+ };
45
+ }), dataFilter, transform), [ {
46
+ type: "scroll",
47
+ handler: this.handleFilter
48
+ } ];
49
+ }
50
+ }
51
+
52
+ exports.ScrollbarFilter = ScrollbarFilter, ScrollbarFilter.type = "scrollbar-filter",
53
+ ScrollbarFilter.defaultOptions = {};
54
+ //# sourceMappingURL=scrollbar-filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/interactions/scrollbar-filter.ts"],"names":[],"mappings":"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","file":"scrollbar-filter.js","sourcesContent":["import type { DataFilterOptions, IComponent, IScrollbar, IView, ScrollbarFilterValue } from '../types';\nimport { DataFilterRank, GrammarMarkType } from '../graph';\nimport { isString } from '@visactor/vutils';\nimport { Filter } from './filter';\n\nexport class ScrollbarFilter extends Filter {\n static type: string = 'scrollbar-filter';\n type: string = ScrollbarFilter.type;\n\n static defaultOptions: Omit<DataFilterOptions, 'target'> = {};\n options: DataFilterOptions;\n\n constructor(view: IView, options?: DataFilterOptions) {\n super(view, options);\n this.options = Object.assign({}, ScrollbarFilter.defaultOptions, options);\n\n this._marks = view\n .getMarksBySelector(this.options.source)\n .filter(\n mark => mark.markType === GrammarMarkType.component && (mark as IComponent).componentType === 'scrollbar'\n );\n this._data = isString(this.options.target.data)\n ? view.getDataById(this.options.target.data)\n : this.options.target.data;\n }\n\n protected getEvents() {\n if (!this._marks || this._marks.length === 0) {\n return [];\n }\n\n const scrollbar = this._marks[0] as IScrollbar;\n\n if (!this._data || !scrollbar) {\n return [];\n }\n\n const filter = this.options.target.filter;\n const transform = this.options.target.transform;\n\n const getFilterValue = (event: any) => {\n if (isString(filter)) {\n const range = event.detail.value;\n const scaleGrammar = scrollbar.getScale();\n if (scaleGrammar) {\n const scale = scaleGrammar.getScale();\n const scaleRange = scale.range();\n const start = scale.invert(range[0] * (scaleRange[1] - scaleRange[0]) + scaleRange[0]);\n const end = scale.invert(range[1] * (scaleRange[1] - scaleRange[0]) + scaleRange[0]);\n return { start, end, startRatio: range[0], endRatio: range[1] };\n }\n return { startRatio: range[0], endRatio: range[1] };\n }\n return { startRatio: event.detail.value[0], endRatio: event.detail.value[1] };\n };\n const dataFilter = isString(filter)\n ? (datum: any, filterValue: ScrollbarFilterValue) => {\n const scaleGrammar = scrollbar.getScale();\n const scale = scaleGrammar.getScale();\n const range = scale.range();\n const datumRatio = (scale.scale(datum[filter]) - range[0]) / (range[range.length - 1] - range[0]);\n return filterValue.startRatio <= datumRatio && filterValue.endRatio >= datumRatio;\n }\n : filter;\n\n this._filterData(this._data, scrollbar, DataFilterRank.scrollbar, getFilterValue, dataFilter, transform);\n\n return [\n {\n type: 'scroll',\n handler: this.handleFilter\n }\n ];\n }\n}\n"]}
@@ -0,0 +1,13 @@
1
+ import type { DataFilterOptions, IView } from '../types';
2
+ import { Filter } from './filter';
3
+ export declare class SliderFilter extends Filter {
4
+ static type: string;
5
+ type: string;
6
+ static defaultOptions: Omit<DataFilterOptions, 'target'>;
7
+ options: DataFilterOptions;
8
+ constructor(view: IView, options?: DataFilterOptions);
9
+ protected getEvents(): {
10
+ type: string;
11
+ handler: (event?: import("../types").InteractionEvent) => void;
12
+ }[];
13
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.SliderFilter = void 0;
6
+
7
+ const graph_1 = require("../graph"), vutils_1 = require("@visactor/vutils"), filter_1 = require("./filter");
8
+
9
+ class SliderFilter extends filter_1.Filter {
10
+ constructor(view, options) {
11
+ super(view, options), this.type = SliderFilter.type, this.options = Object.assign({}, SliderFilter.defaultOptions, options),
12
+ this._marks = view.getMarksBySelector(this.options.source).filter((mark => mark.markType === graph_1.GrammarMarkType.component && "slider" === mark.componentType)),
13
+ this._data = (0, vutils_1.isString)(this.options.target.data) ? view.getDataById(this.options.target.data) : this.options.target.data;
14
+ }
15
+ getEvents() {
16
+ if (!this._marks || 0 === this._marks.length) return [];
17
+ const slider = this._marks[0];
18
+ if (!this._data || !slider) return [];
19
+ const filter = this.options.target.filter, transform = this.options.target.transform, dataFilter = (0,
20
+ vutils_1.isString)(filter) ? (datum, filterValue) => datum[filter] >= filterValue.start && datum[filter] <= filterValue.end : filter;
21
+ return this._filterData(this._data, slider, graph_1.DataFilterRank.slider, (event => ({
22
+ start: event.detail.value[0],
23
+ end: event.detail.value[1]
24
+ })), dataFilter, transform), [ {
25
+ type: "change",
26
+ handler: this.handleFilter
27
+ } ];
28
+ }
29
+ }
30
+
31
+ exports.SliderFilter = SliderFilter, SliderFilter.type = "slider-filter", SliderFilter.defaultOptions = {};
32
+ //# sourceMappingURL=slider-filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/interactions/slider-filter.ts"],"names":[],"mappings":";;;AACA,oCAA2D;AAC3D,6CAA4C;AAC5C,qCAAkC;AAElC,MAAa,YAAa,SAAQ,eAAM;IAOtC,YAAY,IAAW,EAAE,OAA2B;QAClD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QANvB,SAAI,GAAW,YAAY,CAAC,IAAI,CAAC;QAO/B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAEvE,IAAI,CAAC,MAAM,GAAG,IAAI;aACf,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;aACvC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,uBAAe,CAAC,SAAS,IAAK,IAAmB,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC;QAClH,IAAI,CAAC,KAAK,GAAG,IAAA,iBAAQ,EAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;YAC7C,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;YAC5C,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAC/B,CAAC;IAES,SAAS;QACjB,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YAC5C,OAAO,EAAE,CAAC;SACX;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAY,CAAC;QAEzC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE;YAC1B,OAAO,EAAE,CAAC;SACX;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;QAEhD,MAAM,cAAc,GAAG,CAAC,KAAU,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACtG,MAAM,UAAU,GAAG,IAAA,iBAAQ,EAAC,MAAM,CAAC;YACjC,CAAC,CAAC,CAAC,KAAU,EAAE,WAA8B,EAAE,EAAE,CAC7C,KAAK,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,GAAG;YAC1E,CAAC,CAAC,MAAM,CAAC;QAEX,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,sBAAc,CAAC,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QAEnG,OAAO;YACL;gBACE,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,IAAI,CAAC,YAAY;aAC3B;SACF,CAAC;IACJ,CAAC;;AA/CH,oCAgDC;AA/CQ,iBAAI,GAAW,eAAe,CAAC;AAG/B,2BAAc,GAAsC,EAAE,CAAC","file":"slider-filter.js","sourcesContent":["import type { DataFilterOptions, IComponent, ISlider, IView, SliderFilterValue } from '../types';\nimport { DataFilterRank, GrammarMarkType } from '../graph';\nimport { isString } from '@visactor/vutils';\nimport { Filter } from './filter';\n\nexport class SliderFilter extends Filter {\n static type: string = 'slider-filter';\n type: string = SliderFilter.type;\n\n static defaultOptions: Omit<DataFilterOptions, 'target'> = {};\n options: DataFilterOptions;\n\n constructor(view: IView, options?: DataFilterOptions) {\n super(view, options);\n this.options = Object.assign({}, SliderFilter.defaultOptions, options);\n\n this._marks = view\n .getMarksBySelector(this.options.source)\n .filter(mark => mark.markType === GrammarMarkType.component && (mark as IComponent).componentType === 'slider');\n this._data = isString(this.options.target.data)\n ? view.getDataById(this.options.target.data)\n : this.options.target.data;\n }\n\n protected getEvents() {\n if (!this._marks || this._marks.length === 0) {\n return [];\n }\n\n const slider = this._marks[0] as ISlider;\n\n if (!this._data || !slider) {\n return [];\n }\n\n const filter = this.options.target.filter;\n const transform = this.options.target.transform;\n\n const getFilterValue = (event: any) => ({ start: event.detail.value[0], end: event.detail.value[1] });\n const dataFilter = isString(filter)\n ? (datum: any, filterValue: SliderFilterValue) =>\n datum[filter] >= filterValue.start && datum[filter] <= filterValue.end\n : filter;\n\n this._filterData(this._data, slider, DataFilterRank.slider, getFilterValue, dataFilter, transform);\n\n return [\n {\n type: 'change',\n handler: this.handleFilter\n }\n ];\n }\n}\n"]}
@@ -0,0 +1,15 @@
1
+ import type { IElement, IView, InteractionEventHandler, TooltipOptions } from '../types';
2
+ import { BaseTooltip } from './base-tooltip';
3
+ export declare class Tooltip extends BaseTooltip<TooltipOptions> {
4
+ static type: string;
5
+ type: string;
6
+ static defaultOptions: Omit<TooltipOptions, 'target'>;
7
+ protected _lastElement: IElement;
8
+ constructor(view: IView, options?: TooltipOptions);
9
+ protected getEvents(): {
10
+ type: import("../types").EventType;
11
+ handler: InteractionEventHandler;
12
+ }[];
13
+ protected handleTooltipShow: InteractionEventHandler;
14
+ protected handleTooltipHide: (event: any) => void;
15
+ }
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.Tooltip = void 0;
6
+
7
+ const vutils_1 = require("@visactor/vutils"), base_tooltip_1 = require("./base-tooltip"), util_1 = require("../parse/util");
8
+
9
+ class Tooltip extends base_tooltip_1.BaseTooltip {
10
+ constructor(view, options) {
11
+ super(view, options), this.type = Tooltip.type, this.handleTooltipShow = (0, vutils_1.throttle)((event => {
12
+ const element = event.element;
13
+ if (!this._marks.includes(null == element ? void 0 : element.mark)) return void this._tooltipComponent.hideAll();
14
+ this._tooltipComponent.showAll();
15
+ const groupGraphicItem = this.view.rootMark.getGroupGraphicItem(), point = {
16
+ x: 0,
17
+ y: 0
18
+ };
19
+ if (groupGraphicItem.globalTransMatrix.transformPoint(event.canvas, point), element === this._lastElement) return void this._tooltipComponent.setAttributes({
20
+ pointerX: point.x,
21
+ pointerY: point.y
22
+ });
23
+ const boundsStart = {
24
+ x: 0,
25
+ y: 0
26
+ };
27
+ groupGraphicItem.globalTransMatrix.transformPoint({
28
+ x: 0,
29
+ y: 0
30
+ }, boundsStart);
31
+ const boundsEnd = {
32
+ x: 0,
33
+ y: 0
34
+ };
35
+ groupGraphicItem.globalTransMatrix.transformPoint({
36
+ x: this.view.getSignalById("width").getValue(),
37
+ y: this.view.getSignalById("height").getValue()
38
+ }, boundsEnd);
39
+ const bounds = (new vutils_1.AABBBounds).set(boundsStart.x, boundsStart.y, boundsEnd.x, boundsEnd.y), {title: title, content: content} = this._computeTitleContent(element.getDatum()), theme = this.view.getCurrentTheme(), addition = (0,
40
+ util_1.invokeFunctionType)(this.options.attributes, this.parameters(), element.getDatum()), attributes = (0,
41
+ base_tooltip_1.generateTooltipAttributes)(point, title, content, bounds, theme, addition);
42
+ this._tooltipComponent.setAttributes(attributes);
43
+ }), 10), this.handleTooltipHide = event => {
44
+ this._tooltipComponent.hideAll();
45
+ }, this.options = Object.assign({}, Tooltip.defaultOptions, options);
46
+ }
47
+ getEvents() {
48
+ return [ {
49
+ type: this.options.trigger,
50
+ handler: this.handleTooltipShow
51
+ }, {
52
+ type: this.options.resetTrigger,
53
+ handler: this.handleTooltipHide
54
+ } ];
55
+ }
56
+ }
57
+
58
+ exports.Tooltip = Tooltip, Tooltip.type = "tooltip", Tooltip.defaultOptions = {
59
+ trigger: "pointermove",
60
+ resetTrigger: "pointerleave"
61
+ };
62
+ //# sourceMappingURL=tooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/interactions/tooltip.ts"],"names":[],"mappings":"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","file":"tooltip.js","sourcesContent":["import { AABBBounds, throttle } from '@visactor/vutils';\nimport type { IElement, IView, InteractionEvent, InteractionEventHandler, TooltipOptions } from '../types';\nimport { BaseTooltip, generateTooltipAttributes } from './base-tooltip';\nimport { invokeFunctionType } from '../parse/util';\n\nexport class Tooltip extends BaseTooltip<TooltipOptions> {\n static type: string = 'tooltip';\n type: string = Tooltip.type;\n\n static defaultOptions: Omit<TooltipOptions, 'target'> = {\n trigger: 'pointermove',\n resetTrigger: 'pointerleave'\n };\n protected _lastElement: IElement;\n\n constructor(view: IView, options?: TooltipOptions) {\n super(view, options);\n this.options = Object.assign({}, Tooltip.defaultOptions, options);\n }\n\n protected getEvents() {\n return [\n { type: this.options.trigger, handler: this.handleTooltipShow },\n { type: this.options.resetTrigger, handler: this.handleTooltipHide }\n ];\n }\n\n protected handleTooltipShow = throttle((event: InteractionEvent) => {\n const element = event.element;\n if (!this._marks.includes(element?.mark)) {\n this._tooltipComponent.hideAll();\n return;\n }\n\n this._tooltipComponent.showAll();\n\n const groupGraphicItem = this.view.rootMark.getGroupGraphicItem();\n // FIXME: waiting for vRender to add transformed position to event\n const point = { x: 0, y: 0 };\n groupGraphicItem.globalTransMatrix.transformPoint(event.canvas, point);\n\n if (element === this._lastElement) {\n // only update pointer when element is not changed\n this._tooltipComponent.setAttributes({ pointerX: point.x, pointerY: point.y } as any);\n return;\n }\n\n const boundsStart = { x: 0, y: 0 };\n groupGraphicItem.globalTransMatrix.transformPoint({ x: 0, y: 0 }, boundsStart);\n const boundsEnd = { x: 0, y: 0 };\n groupGraphicItem.globalTransMatrix.transformPoint(\n {\n x: this.view.getSignalById('width').getValue() as number,\n y: this.view.getSignalById('height').getValue() as number\n },\n boundsEnd\n );\n const bounds = new AABBBounds().set(boundsStart.x, boundsStart.y, boundsEnd.x, boundsEnd.y);\n const { title, content } = this._computeTitleContent(element.getDatum());\n const theme = this.view.getCurrentTheme();\n const addition = invokeFunctionType(this.options.attributes, this.parameters(), element.getDatum()) as any;\n const attributes = generateTooltipAttributes(point, title, content, bounds, theme, addition);\n this._tooltipComponent.setAttributes(attributes);\n }, 10) as unknown as InteractionEventHandler;\n\n protected handleTooltipHide = (event: any) => {\n this._tooltipComponent.hideAll();\n };\n}\n"]}
@@ -0,0 +1,22 @@
1
+ import type { InteractionEvent, IViewDragMixin, ViewNavigationRange, ViewDragSimpleOptions, ViewStateByDim } from '../types';
2
+ export declare class ViewDragMixin implements IViewDragMixin {
3
+ protected _pointerId: number;
4
+ protected _dragStart: {
5
+ x: number;
6
+ y: number;
7
+ };
8
+ protected _filterValueX: {
9
+ start: number;
10
+ end: number;
11
+ };
12
+ protected _filterValueY: {
13
+ start: number;
14
+ end: number;
15
+ };
16
+ protected _shouldTriggerDragByPointer(e: InteractionEvent): boolean;
17
+ protected _shouldStart(e: InteractionEvent): boolean;
18
+ protected _shouldUpdate(e: InteractionEvent): boolean;
19
+ handleDragStart(e: InteractionEvent, navState: Partial<Record<'x' | 'y', ViewStateByDim>>, dragOptions?: ViewDragSimpleOptions): ViewNavigationRange;
20
+ handleDragUpdate(e: InteractionEvent, navState: Partial<Record<'x' | 'y', ViewStateByDim>>, dragOptions?: ViewDragSimpleOptions): ViewNavigationRange;
21
+ handleDragEnd(e: InteractionEvent, navState: Partial<Record<'x' | 'y', ViewStateByDim>>, dragOptions?: ViewDragSimpleOptions): ViewNavigationRange;
22
+ }
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.ViewDragMixin = void 0;
6
+
7
+ const vutils_1 = require("@visactor/vutils"), view_utils_1 = require("./view-utils");
8
+
9
+ class ViewDragMixin {
10
+ _shouldTriggerDragByPointer(e) {
11
+ if (!(0, vutils_1.isNil)(e.pointerId)) {
12
+ const shouldStart = (0, vutils_1.isNil)(this._pointerId) || this._pointerId === e.pointerId;
13
+ return this._pointerId = e.pointerId, shouldStart;
14
+ }
15
+ return !0;
16
+ }
17
+ _shouldStart(e) {
18
+ return this._shouldTriggerDragByPointer(e);
19
+ }
20
+ _shouldUpdate(e) {
21
+ return this._shouldTriggerDragByPointer(e);
22
+ }
23
+ handleDragStart(e, navState, dragOptions) {
24
+ if (this._shouldStart(e)) return this._dragStart = {
25
+ x: e.canvasX,
26
+ y: e.canvasY
27
+ }, null;
28
+ }
29
+ handleDragUpdate(e, navState, dragOptions) {
30
+ if (this._dragStart && this._shouldUpdate(e)) {
31
+ if (null == dragOptions ? void 0 : dragOptions.realtime) {
32
+ const x = e.canvasX - this._dragStart.x, y = e.canvasY - this._dragStart.y;
33
+ return (0, view_utils_1.handleScrolling)({
34
+ x: x,
35
+ y: y
36
+ }, navState, dragOptions);
37
+ }
38
+ return null;
39
+ }
40
+ }
41
+ handleDragEnd(e, navState, dragOptions) {
42
+ if (!this._dragStart) return;
43
+ const res = !1 === (null == dragOptions ? void 0 : dragOptions.realtime) ? (0, view_utils_1.handleScrolling)({
44
+ x: e.canvasX - this._dragStart.x,
45
+ y: e.canvasY - this._dragStart.y
46
+ }, navState, dragOptions) : null;
47
+ return this._pointerId = null, this._dragStart = null, res;
48
+ }
49
+ }
50
+
51
+ exports.ViewDragMixin = ViewDragMixin;
52
+ //# sourceMappingURL=view-drag-mixin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/interactions/view-drag-mixin.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AAQzC,6CAA+C;AAE/C,MAAa,aAAa;IAMd,2BAA2B,CAAC,CAAmB;QACvD,IAAI,CAAC,IAAA,cAAK,EAAE,CAAS,CAAC,SAAS,CAAC,EAAE;YAChC,MAAM,WAAW,GAAG,IAAA,cAAK,EAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,KAAM,CAAS,CAAC,SAAS,CAAC;YACvF,IAAI,CAAC,UAAU,GAAI,CAAS,CAAC,SAAS,CAAC;YAEvC,OAAO,WAAW,CAAC;SACpB;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAES,YAAY,CAAC,CAAmB;QACxC,OAAO,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAES,aAAa,CAAC,CAAmB;QACzC,OAAO,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,eAAe,CACb,CAAmB,EACnB,QAAoD,EACpD,WAAmC;QAEnC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;YACzB,OAAO;SACR;QAED,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAgB,CACd,CAAmB,EACnB,QAAoD,EACpD,WAAmC;QAEnC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;YAC9C,OAAO;SACR;QAED,IAAI,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,QAAQ,EAAE;YACzB,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YACxC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YACxC,OAAO,IAAA,4BAAe,EAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;SACzD;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CACX,CAAmB,EACnB,QAAoD,EACpD,WAAmC;QAEnC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,OAAO;SACR;QACD,MAAM,GAAG,GACP,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,QAAQ,MAAK,KAAK;YAC7B,CAAC,CAAC,IAAA,4BAAe,EACb;gBACE,CAAC,EAAE,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;gBAChC,CAAC,EAAE,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;aACjC,EACD,QAAQ,EACR,WAAW,CACZ;YACH,CAAC,CAAC,IAAI,CAAC;QAEX,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAjFD,sCAiFC","file":"view-drag-mixin.js","sourcesContent":["import { isNil } from '@visactor/vutils';\nimport type {\n InteractionEvent,\n IViewDragMixin,\n ViewNavigationRange,\n ViewDragSimpleOptions,\n ViewStateByDim\n} from '../types';\nimport { handleScrolling } from './view-utils';\n\nexport class ViewDragMixin implements IViewDragMixin {\n protected _pointerId: number;\n protected _dragStart: { x: number; y: number };\n protected _filterValueX: { start: number; end: number };\n protected _filterValueY: { start: number; end: number };\n\n protected _shouldTriggerDragByPointer(e: InteractionEvent) {\n if (!isNil((e as any).pointerId)) {\n const shouldStart = isNil(this._pointerId) || this._pointerId === (e as any).pointerId;\n this._pointerId = (e as any).pointerId;\n\n return shouldStart;\n }\n\n return true;\n }\n\n protected _shouldStart(e: InteractionEvent) {\n return this._shouldTriggerDragByPointer(e);\n }\n\n protected _shouldUpdate(e: InteractionEvent) {\n return this._shouldTriggerDragByPointer(e);\n }\n\n handleDragStart(\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n dragOptions?: ViewDragSimpleOptions\n ): ViewNavigationRange {\n if (!this._shouldStart(e)) {\n return;\n }\n\n this._dragStart = { x: e.canvasX, y: e.canvasY };\n return null;\n }\n\n handleDragUpdate(\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n dragOptions?: ViewDragSimpleOptions\n ): ViewNavigationRange {\n if (!this._dragStart || !this._shouldUpdate(e)) {\n return;\n }\n\n if (dragOptions?.realtime) {\n const x = e.canvasX - this._dragStart.x;\n const y = e.canvasY - this._dragStart.y;\n return handleScrolling({ x, y }, navState, dragOptions);\n }\n\n return null;\n }\n\n handleDragEnd(\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n dragOptions?: ViewDragSimpleOptions\n ): ViewNavigationRange {\n if (!this._dragStart) {\n return;\n }\n const res =\n dragOptions?.realtime === false\n ? handleScrolling(\n {\n x: e.canvasX - this._dragStart.x,\n y: e.canvasY - this._dragStart.y\n },\n navState,\n dragOptions\n )\n : null;\n\n this._pointerId = null;\n this._dragStart = null;\n\n return res;\n }\n}\n"]}
@@ -0,0 +1,19 @@
1
+ import type { ViewDragOptions, IView, InteractionEvent, IViewDragMixin } from '../types';
2
+ import { ViewNavigationBase } from './view-navigation-base';
3
+ export interface ViewDrag extends Pick<IViewDragMixin, 'handleDragStart' | 'handleDragEnd' | 'handleDragUpdate'>, ViewNavigationBase<ViewDragOptions> {
4
+ }
5
+ export declare class ViewDrag extends ViewNavigationBase<ViewDragOptions> {
6
+ static type: string;
7
+ type: string;
8
+ static defaultOptions: ViewDragOptions;
9
+ protected _inited?: boolean;
10
+ protected handleUpdate: (e: InteractionEvent) => void;
11
+ constructor(view: IView, option?: ViewDragOptions);
12
+ protected getEvents(): {
13
+ type: import("../types").EventType;
14
+ handler: (e: InteractionEvent) => void;
15
+ }[];
16
+ handleStart: (e: InteractionEvent) => void;
17
+ handleUpdateInner: (e: InteractionEvent) => void;
18
+ handleEnd: (e: InteractionEvent) => void;
19
+ }
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.ViewDrag = void 0;
6
+
7
+ const vutils_1 = require("@visactor/vutils"), enums_1 = require("../graph/enums"), view_navigation_base_1 = require("./view-navigation-base");
8
+
9
+ class ViewDrag extends view_navigation_base_1.ViewNavigationBase {
10
+ constructor(view, option) {
11
+ super(view, Object.assign({}, ViewDrag.defaultOptions, option)), this.type = ViewDrag.type,
12
+ this.handleStart = e => {
13
+ !e || this.options.shouldStart && !this.options.shouldStart(e) || (this._inited || this._initGrammars(),
14
+ this.updateView(enums_1.InteractionEventEnum.viewDragStart, this.handleDragStart(e, this._state, {
15
+ reversed: this.options.reversed
16
+ }), e));
17
+ }, this.handleUpdateInner = e => {
18
+ !e || this.options.shouldUpdate && !this.options.shouldUpdate(e) || this.updateView(enums_1.InteractionEventEnum.viewDragUpdate, this.handleDragUpdate(e, this._state, {
19
+ reversed: this.options.reversed
20
+ }), e);
21
+ }, this.handleEnd = e => {
22
+ !e || this.options.shouldEnd && !this.options.shouldEnd(e) || this.updateView(enums_1.InteractionEventEnum.viewDragEnd, this.handleDragEnd(e, this._state, {
23
+ reversed: this.options.reversed
24
+ }), e);
25
+ }, this.handleUpdate = (0, vutils_1.throttle)(this.handleUpdateInner, this.options.throttle);
26
+ }
27
+ getEvents() {
28
+ return [ {
29
+ type: this.options.trigger,
30
+ handler: this.handleStart
31
+ }, {
32
+ type: this.options.endTrigger,
33
+ handler: this.handleEnd
34
+ }, {
35
+ type: this.options.updateTrigger,
36
+ handler: this.handleUpdate
37
+ } ];
38
+ }
39
+ }
40
+
41
+ exports.ViewDrag = ViewDrag, ViewDrag.type = "view-drag", ViewDrag.defaultOptions = {
42
+ realtime: !0,
43
+ reversed: !1,
44
+ trigger: "pointerdown",
45
+ updateTrigger: "pointermove",
46
+ endTrigger: "pointerup",
47
+ throttle: 100
48
+ };
49
+ //# sourceMappingURL=view-drag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/interactions/view-drag.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAC5C,0CAAsD;AAEtD,iEAA4D;AAK5D,MAAa,QAAS,SAAQ,yCAAmC;IAiB/D,YAAY,IAAW,EAAE,MAAwB;QAC/C,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;QAhBlE,SAAI,GAAW,QAAQ,CAAC,IAAI,CAAC;QA4B7B,gBAAW,GAAG,CAAC,CAAmB,EAAE,EAAE;YACpC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE;gBACpE,OAAO;aACR;YAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBACjB,IAAI,CAAC,aAAa,EAAE,CAAC;aACtB;YAED,IAAI,CAAC,UAAU,CACb,4BAAoB,CAAC,aAAa,EAClC,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,EACzE,CAAC,CACF,CAAC;QACJ,CAAC,CAAC;QAEF,sBAAiB,GAAG,CAAC,CAAmB,EAAE,EAAE;YAC1C,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE;gBACtE,OAAO;aACR;YAED,IAAI,CAAC,UAAU,CACb,4BAAoB,CAAC,cAAc,EACnC,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,EAC1E,CAAC,CACF,CAAC;QACJ,CAAC,CAAC;QAEF,cAAS,GAAG,CAAC,CAAmB,EAAE,EAAE;YAClC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;gBAChE,OAAO;aACR;YAED,IAAI,CAAC,UAAU,CACb,4BAAoB,CAAC,WAAW,EAChC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,EACvE,CAAC,CACF,CAAC;QACJ,CAAC,CAAC;QAjDA,IAAI,CAAC,YAAY,GAAG,IAAA,iBAAQ,EAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9E,CAAC;IAES,SAAS;QACjB,OAAO;YACL,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE;YACzD,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE;YAC1D,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE;SACjE,CAAC;IACJ,CAAC;;AA5BH,4BAqEC;AApEQ,aAAI,GAAW,WAAW,CAAC;AAG3B,uBAAc,GAAoB;IACvC,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,aAAa;IACtB,aAAa,EAAE,aAAa;IAC5B,UAAU,EAAE,WAAW;IACvB,QAAQ,EAAE,GAAG;CACd,CAAC","file":"view-drag.js","sourcesContent":["import { throttle } from '@visactor/vutils';\nimport { InteractionEventEnum } from '../graph/enums';\nimport type { ViewDragOptions, IView, InteractionEvent, IViewDragMixin } from '../types';\nimport { ViewNavigationBase } from './view-navigation-base';\n\nexport interface ViewDrag\n extends Pick<IViewDragMixin, 'handleDragStart' | 'handleDragEnd' | 'handleDragUpdate'>,\n ViewNavigationBase<ViewDragOptions> {}\nexport class ViewDrag extends ViewNavigationBase<ViewDragOptions> {\n static type: string = 'view-drag';\n type: string = ViewDrag.type;\n\n static defaultOptions: ViewDragOptions = {\n realtime: true,\n reversed: false,\n trigger: 'pointerdown',\n updateTrigger: 'pointermove',\n endTrigger: 'pointerup',\n throttle: 100\n };\n\n protected _inited?: boolean;\n\n protected handleUpdate: (e: InteractionEvent) => void;\n\n constructor(view: IView, option?: ViewDragOptions) {\n super(view, Object.assign({}, ViewDrag.defaultOptions, option));\n this.handleUpdate = throttle(this.handleUpdateInner, this.options.throttle);\n }\n\n protected getEvents() {\n return [\n { type: this.options.trigger, handler: this.handleStart },\n { type: this.options.endTrigger, handler: this.handleEnd },\n { type: this.options.updateTrigger, handler: this.handleUpdate }\n ];\n }\n\n handleStart = (e: InteractionEvent) => {\n if (!e || (this.options.shouldStart && !this.options.shouldStart(e))) {\n return;\n }\n\n if (!this._inited) {\n this._initGrammars();\n }\n\n this.updateView(\n InteractionEventEnum.viewDragStart,\n this.handleDragStart(e, this._state, { reversed: this.options.reversed }),\n e\n );\n };\n\n handleUpdateInner = (e: InteractionEvent) => {\n if (!e || (this.options.shouldUpdate && !this.options.shouldUpdate(e))) {\n return;\n }\n\n this.updateView(\n InteractionEventEnum.viewDragUpdate,\n this.handleDragUpdate(e, this._state, { reversed: this.options.reversed }),\n e\n );\n };\n\n handleEnd = (e: InteractionEvent) => {\n if (!e || (this.options.shouldEnd && !this.options.shouldEnd(e))) {\n return;\n }\n\n this.updateView(\n InteractionEventEnum.viewDragEnd,\n this.handleDragEnd(e, this._state, { reversed: this.options.reversed }),\n e\n );\n };\n}\n"]}
@@ -0,0 +1,17 @@
1
+ import type { FilterDataTarget, IBaseInteractionOptions, IDataFilter, IDatazoom, IScale, IScrollbar, IView, InteractionEvent, ViewNavigationBaseOptions, ViewNavigationRange, ViewStateByDim } from '../types';
2
+ import { BaseInteraction } from './base';
3
+ export declare abstract class ViewNavigationBase<T extends ViewNavigationBaseOptions & IBaseInteractionOptions> extends BaseInteraction<T> {
4
+ options: T;
5
+ protected _state: Partial<Record<'x' | 'y', ViewStateByDim>>;
6
+ protected _inited?: boolean;
7
+ protected _dataFilterX: IDataFilter;
8
+ protected _dataFilterY: IDataFilter;
9
+ constructor(view: IView, options?: T);
10
+ protected _parseLinkedComponent(option: string | IDatazoom | IScrollbar): IDatazoom | IScrollbar;
11
+ protected _initStateByDim(dim: 'x' | 'y', linkedComponent?: string | IDatazoom | IScrollbar, scale?: string | IScale, dataTarget?: FilterDataTarget): void;
12
+ protected _initGrammars(): void;
13
+ protected _updateLinkedComponent(comp: IDatazoom | IScrollbar, newRange: [number, number]): void;
14
+ updateView(type: string, newRange: ViewNavigationRange, e?: InteractionEvent): void;
15
+ protected dispatchEvent(type: string, viewRange: ViewNavigationRange, e?: InteractionEvent): void;
16
+ unbind(): void;
17
+ }
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.ViewNavigationBase = void 0;
6
+
7
+ const vutils_1 = require("@visactor/vutils"), base_1 = require("./base"), enums_1 = require("../graph/enums"), scale_1 = require("../util/scale");
8
+
9
+ class ViewNavigationBase extends base_1.BaseInteraction {
10
+ constructor(view, options) {
11
+ super(view, options), this.options = options;
12
+ }
13
+ _parseLinkedComponent(option) {
14
+ if (!option) return null;
15
+ const comp = (0, vutils_1.isString)(option) ? this.view.getMarkById(option) : option;
16
+ return !comp || comp.markType !== enums_1.GrammarMarkType.component || comp.componentType !== enums_1.ComponentEnum.datazoom && comp.componentType !== enums_1.ComponentEnum.scrollbar ? null : comp;
17
+ }
18
+ _initStateByDim(dim, linkedComponent, scale, dataTarget) {
19
+ const comp = this._parseLinkedComponent(linkedComponent);
20
+ if (comp) return void (this._state[dim] = {
21
+ linkedComponent: comp
22
+ });
23
+ const scaleGrammar = (0, vutils_1.isNil)(scale) ? null : (0, vutils_1.isString)(scale) ? this.view.getScaleById(scale) : scale, dataGrammar = (0,
24
+ vutils_1.isNil)(null == dataTarget ? void 0 : dataTarget.data) ? null : (0, vutils_1.isString)(dataTarget.data) ? this.view.getDataById(dataTarget.data) : dataTarget.data;
25
+ if (!scaleGrammar || !dataGrammar) return void (this._state[dim] = {
26
+ data: dataGrammar,
27
+ scale: scaleGrammar
28
+ });
29
+ dataGrammar.attach(scaleGrammar);
30
+ const filterByScale = (0, vutils_1.isString)(dataTarget.filter) ? (datum, filterValue) => {
31
+ const scale = scaleGrammar.getScale(), ratio = (0, scale_1.getScaleRangeRatio)(scale, datum[dataTarget.filter]);
32
+ return ratio >= filterValue[0] && ratio <= filterValue[1];
33
+ } : dataTarget.filter, dataFilter = {
34
+ source: `${scaleGrammar.uid}`,
35
+ rank: enums_1.DataFilterRank.normal,
36
+ filter: data => {
37
+ var _a, _b, _c, _d;
38
+ const filterValue = "x" === dim ? null === (_b = null === (_a = this._state) || void 0 === _a ? void 0 : _a.x) || void 0 === _b ? void 0 : _b.filterValue : null === (_d = null === (_c = this._state) || void 0 === _c ? void 0 : _c.y) || void 0 === _d ? void 0 : _d.filterValue;
39
+ if (!filterValue) return data;
40
+ const filteredData = data.filter((datum => filterByScale(datum, filterValue)));
41
+ return dataTarget.transform ? dataTarget.transform(filteredData, filterValue) : filteredData;
42
+ }
43
+ };
44
+ "x" === dim ? this._dataFilterX = dataFilter : this._dataFilterY = dataFilter, dataGrammar.addDataFilter(dataFilter),
45
+ this._state[dim] = {
46
+ data: dataGrammar,
47
+ scale: scaleGrammar
48
+ };
49
+ }
50
+ _initGrammars() {
51
+ const {enableX: enableX, enableY: enableY, scaleX: scaleX, scaleY: scaleY, dataTargetX: dataTargetX, dataTargetY: dataTargetY, linkedComponentX: linkedComponentX, linkedComponentY: linkedComponentY} = this.options;
52
+ this._state = {}, !1 !== enableX && this._initStateByDim("x", linkedComponentX, scaleX, dataTargetX),
53
+ !1 !== enableY && this._initStateByDim("y", linkedComponentY, scaleY, dataTargetY),
54
+ this._inited = !0;
55
+ }
56
+ _updateLinkedComponent(comp, newRange) {
57
+ comp.componentType === enums_1.ComponentEnum.datazoom ? comp.setStartEndValue(newRange[0], newRange[1]) : comp.setScrollStart(newRange[0]);
58
+ }
59
+ updateView(type, newRange, e) {
60
+ var _a, _b, _c, _d;
61
+ (null == newRange ? void 0 : newRange.x) && (null === (_b = null === (_a = this._state) || void 0 === _a ? void 0 : _a.x) || void 0 === _b ? void 0 : _b.linkedComponent) && this._updateLinkedComponent(this._state.x.linkedComponent, newRange.x),
62
+ (null == newRange ? void 0 : newRange.y) && (null === (_d = null === (_c = this._state) || void 0 === _c ? void 0 : _c.y) || void 0 === _d ? void 0 : _d.linkedComponent) && this._updateLinkedComponent(this._state.y.linkedComponent, newRange.y),
63
+ (null == newRange ? void 0 : newRange.needUpdate) && this.view.runAsync(), this.dispatchEvent(type, newRange, e);
64
+ }
65
+ dispatchEvent(type, viewRange, e) {
66
+ this.view.emit(type, {
67
+ viewRange: viewRange,
68
+ event: e
69
+ });
70
+ }
71
+ unbind() {
72
+ super.unbind(), this._state && Object.keys(this._state).forEach((dim => {
73
+ const {data: data, scale: scale} = this._state[dim];
74
+ data && scale ? (data.detach(scale), data.removeDataFilter("x" === dim ? this._dataFilterX : this._dataFilterY)) : scale && (scale.setRangeFactor(null),
75
+ scale.commit());
76
+ })), this._state = null;
77
+ }
78
+ }
79
+
80
+ exports.ViewNavigationBase = ViewNavigationBase;
81
+ //# sourceMappingURL=view-navigation-base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/interactions/view-navigation-base.ts"],"names":[],"mappings":"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","file":"view-navigation-base.js","sourcesContent":["import { isNil, isString } from '@visactor/vutils';\nimport type {\n FilterDataTarget,\n IBaseInteractionOptions,\n IComponent,\n IDataFilter,\n IDatazoom,\n IMark,\n IScale,\n IScrollbar,\n IView,\n InteractionEvent,\n ViewNavigationBaseOptions,\n ViewNavigationRange,\n ViewStateByDim\n} from '../types';\nimport { BaseInteraction } from './base';\nimport { ComponentEnum, DataFilterRank, GrammarMarkType } from '../graph/enums';\nimport { getScaleRangeRatio } from '../util/scale';\n\nexport abstract class ViewNavigationBase<\n T extends ViewNavigationBaseOptions & IBaseInteractionOptions\n> extends BaseInteraction<T> {\n options: T;\n\n protected _state: Partial<Record<'x' | 'y', ViewStateByDim>>;\n protected _inited?: boolean;\n protected _dataFilterX: IDataFilter;\n protected _dataFilterY: IDataFilter;\n\n constructor(view: IView, options?: T) {\n super(view, options);\n this.options = options;\n }\n\n protected _parseLinkedComponent(option: string | IDatazoom | IScrollbar): IDatazoom | IScrollbar {\n if (!option) {\n return null;\n }\n const comp: IMark = isString(option) ? this.view.getMarkById(option) : option;\n\n if (\n comp &&\n comp.markType === GrammarMarkType.component &&\n ((comp as IComponent).componentType === ComponentEnum.datazoom ||\n (comp as IComponent).componentType === ComponentEnum.scrollbar)\n ) {\n return comp as IDatazoom | IScrollbar;\n }\n\n return null;\n }\n\n protected _initStateByDim(\n dim: 'x' | 'y',\n linkedComponent?: string | IDatazoom | IScrollbar,\n scale?: string | IScale,\n dataTarget?: FilterDataTarget\n ) {\n const comp = this._parseLinkedComponent(linkedComponent);\n\n if (comp) {\n this._state[dim] = { linkedComponent: comp };\n return;\n }\n\n const scaleGrammar = !isNil(scale) ? (isString(scale) ? this.view.getScaleById(scale) : scale) : null;\n const dataGrammar = !isNil(dataTarget?.data)\n ? isString(dataTarget.data)\n ? this.view.getDataById(dataTarget.data)\n : dataTarget.data\n : null;\n\n if (!scaleGrammar || !dataGrammar) {\n this._state[dim] = { data: dataGrammar, scale: scaleGrammar };\n return;\n }\n\n dataGrammar.attach(scaleGrammar);\n\n const filterByScale = isString(dataTarget.filter)\n ? (datum: any, filterValue: number[]) => {\n const scale = scaleGrammar.getScale();\n const ratio = getScaleRangeRatio(scale, datum[dataTarget.filter as string]);\n\n return ratio >= filterValue[0] && ratio <= filterValue[1];\n }\n : dataTarget.filter;\n const dataFilter = {\n source: `${scaleGrammar.uid}`,\n rank: DataFilterRank.normal,\n filter: (data: any[]) => {\n const filterValue = dim === 'x' ? this._state?.x?.filterValue : this._state?.y?.filterValue;\n if (!filterValue) {\n return data;\n }\n const filteredData = data.filter(datum => filterByScale(datum, filterValue));\n return dataTarget.transform ? dataTarget.transform(filteredData, filterValue) : filteredData;\n }\n };\n\n if (dim === 'x') {\n this._dataFilterX = dataFilter;\n } else {\n this._dataFilterY = dataFilter;\n }\n\n dataGrammar.addDataFilter(dataFilter);\n\n this._state[dim] = { data: dataGrammar, scale: scaleGrammar };\n }\n\n protected _initGrammars() {\n const { enableX, enableY, scaleX, scaleY, dataTargetX, dataTargetY, linkedComponentX, linkedComponentY } =\n this.options;\n\n this._state = {};\n\n if (enableX !== false) {\n this._initStateByDim('x', linkedComponentX, scaleX, dataTargetX);\n }\n\n if (enableY !== false) {\n this._initStateByDim('y', linkedComponentY, scaleY, dataTargetY);\n }\n\n this._inited = true;\n }\n\n protected _updateLinkedComponent(comp: IDatazoom | IScrollbar, newRange: [number, number]) {\n if (comp.componentType === ComponentEnum.datazoom) {\n (comp as IDatazoom).setStartEndValue(newRange[0], newRange[1]);\n } else {\n // fix: need to update range scrollbar\n (comp as IScrollbar).setScrollStart(newRange[0]);\n }\n }\n\n updateView(type: string, newRange: ViewNavigationRange, e?: InteractionEvent) {\n if (newRange?.x && this._state?.x?.linkedComponent) {\n this._updateLinkedComponent(this._state.x.linkedComponent, newRange.x);\n }\n\n if (newRange?.y && this._state?.y?.linkedComponent) {\n this._updateLinkedComponent(this._state.y.linkedComponent, newRange.y);\n }\n\n if (newRange?.needUpdate) {\n this.view.runAsync();\n }\n\n this.dispatchEvent(type, newRange, e);\n }\n\n protected dispatchEvent(type: string, viewRange: ViewNavigationRange, e?: InteractionEvent) {\n this.view.emit(type, {\n viewRange,\n event: e\n });\n }\n\n unbind() {\n super.unbind();\n\n if (this._state) {\n Object.keys(this._state).forEach(dim => {\n const { data, scale } = this._state[dim as 'x' | 'y'];\n\n if (data && scale) {\n data.detach(scale);\n data.removeDataFilter(dim === 'x' ? this._dataFilterX : this._dataFilterY);\n } else if (scale) {\n scale.setRangeFactor(null);\n scale.commit();\n }\n });\n }\n\n this._state = null;\n }\n}\n"]}
@@ -0,0 +1,30 @@
1
+ import type { ViewRoamOptions, IView, InteractionEvent, IScale, IData, IViewZoomMixin, IViewScrollMixin, IViewDragMixin, InteractionEventHandler } from '../types';
2
+ import { ViewNavigationBase } from './view-navigation-base';
3
+ export interface ViewRoam extends Pick<IViewDragMixin, 'handleDragStart' | 'handleDragEnd' | 'handleDragUpdate'>, Pick<IViewScrollMixin, 'formatScrollEvent' | 'handleScrollStart' | 'handleScrollEnd'>, Pick<IViewZoomMixin, 'formatZoomEvent' | 'handleZoomStart' | 'handleZoomEnd' | 'handleZoomReset' | 'updateZoomRange'>, ViewNavigationBase<ViewRoamOptions> {
4
+ }
5
+ export declare class ViewRoam extends ViewNavigationBase<ViewRoamOptions> {
6
+ static type: string;
7
+ type: string;
8
+ static defaultOptions: ViewRoamOptions;
9
+ protected _inited?: boolean;
10
+ protected _lastScale: number;
11
+ protected _scaleX: IScale;
12
+ protected _scaleY: IScale;
13
+ protected _data: IData;
14
+ protected handleRoamZoomStart: (e: InteractionEvent) => void;
15
+ protected handleRoamDragUpdate: (e: InteractionEvent) => void;
16
+ protected handleRoamScrollStart: (e: InteractionEvent) => void;
17
+ constructor(view: IView, option?: ViewRoamOptions);
18
+ protected getEvents(): {
19
+ type: string;
20
+ handler: InteractionEventHandler;
21
+ }[];
22
+ handleRoamZoomStartInner: (e: InteractionEvent) => void;
23
+ handleRoamZoomEnd: (e: InteractionEvent) => void;
24
+ handleRoamZoomReset: (e: InteractionEvent) => void;
25
+ handleRoamDragStart: (e: InteractionEvent) => void;
26
+ handleRoamDragUpdateInner: (e: InteractionEvent) => void;
27
+ handleRoamDragEnd: (e: InteractionEvent) => void;
28
+ handleRoamScrollStartInner: (e: InteractionEvent) => void;
29
+ handleRoamScrollEnd: (e: InteractionEvent) => void;
30
+ }