@visactor/vgrammar-core 0.7.7-alpha.2 → 0.8.0-alpha.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 (453) hide show
  1. package/cjs/component/datazoom.d.ts +7 -4
  2. package/cjs/component/datazoom.js +21 -43
  3. package/cjs/component/datazoom.js.map +1 -1
  4. package/cjs/component/index.d.ts +0 -2
  5. package/cjs/component/index.js +1 -19
  6. package/cjs/component/index.js.map +1 -1
  7. package/cjs/component/legend.d.ts +1 -3
  8. package/cjs/component/legend.js +5 -26
  9. package/cjs/component/legend.js.map +1 -1
  10. package/cjs/component/player.d.ts +1 -2
  11. package/cjs/component/player.js +15 -31
  12. package/cjs/component/player.js.map +1 -1
  13. package/cjs/component/scale.d.ts +1 -0
  14. package/cjs/component/scale.js +3 -0
  15. package/cjs/component/scale.js.map +1 -1
  16. package/cjs/component/scrollbar.d.ts +3 -4
  17. package/cjs/component/scrollbar.js +12 -54
  18. package/cjs/component/scrollbar.js.map +1 -1
  19. package/cjs/component/slider.d.ts +2 -5
  20. package/cjs/component/slider.js +4 -26
  21. package/cjs/component/slider.js.map +1 -1
  22. package/cjs/core/factory.d.ts +4 -1
  23. package/cjs/core/factory.js +9 -2
  24. package/cjs/core/factory.js.map +1 -1
  25. package/cjs/glyph/link-path.js +1 -2
  26. package/cjs/glyph/ripple.js +2 -2
  27. package/cjs/glyph/ripple.js.map +1 -1
  28. package/cjs/graph/animation/animate.js +25 -19
  29. package/cjs/graph/animation/animate.js.map +1 -1
  30. package/cjs/graph/animation/attribute.js +6 -6
  31. package/cjs/graph/animation/attribute.js.map +1 -1
  32. package/cjs/graph/attributes/index.js +1 -1
  33. package/cjs/graph/attributes/index.js.map +1 -1
  34. package/cjs/graph/canvas-renderer.js +2 -1
  35. package/cjs/graph/element.js +2 -2
  36. package/cjs/graph/element.js.map +1 -1
  37. package/cjs/graph/enums.d.ts +25 -8
  38. package/cjs/graph/enums.js +23 -14
  39. package/cjs/graph/enums.js.map +1 -1
  40. package/cjs/graph/mark/encode.d.ts +0 -3
  41. package/cjs/graph/mark/encode.js +3 -12
  42. package/cjs/graph/mark/encode.js.map +1 -1
  43. package/cjs/graph/util/events-extend.js +1 -1
  44. package/cjs/graph/util/events-extend.js.map +1 -1
  45. package/cjs/index.d.ts +3 -1
  46. package/cjs/index.js +2 -2
  47. package/cjs/index.js.map +1 -1
  48. package/cjs/interactions/base-tooltip.d.ts +29 -0
  49. package/cjs/interactions/base-tooltip.js +74 -0
  50. package/cjs/interactions/base-tooltip.js.map +1 -0
  51. package/cjs/interactions/base.d.ts +14 -0
  52. package/cjs/interactions/base.js +41 -0
  53. package/cjs/interactions/base.js.map +1 -0
  54. package/cjs/interactions/brush-active.d.ts +17 -0
  55. package/cjs/interactions/brush-active.js +27 -0
  56. package/cjs/interactions/brush-active.js.map +1 -0
  57. package/cjs/interactions/brush-base.d.ts +43 -0
  58. package/cjs/interactions/brush-base.js +106 -0
  59. package/cjs/interactions/brush-base.js.map +1 -0
  60. package/cjs/interactions/brush-filter.d.ts +24 -0
  61. package/cjs/interactions/brush-filter.js +34 -0
  62. package/cjs/interactions/brush-filter.js.map +1 -0
  63. package/cjs/interactions/brush-highlight.d.ts +17 -0
  64. package/cjs/interactions/brush-highlight.js +34 -0
  65. package/cjs/interactions/brush-highlight.js.map +1 -0
  66. package/cjs/interactions/crosshair.d.ts +53 -0
  67. package/cjs/{component → interactions}/crosshair.js +80 -79
  68. package/cjs/interactions/crosshair.js.map +1 -0
  69. package/cjs/interactions/datazoom-filter.d.ts +13 -0
  70. package/cjs/interactions/datazoom-filter.js +42 -0
  71. package/cjs/interactions/datazoom-filter.js.map +1 -0
  72. package/cjs/interactions/dimension-tooltip.d.ts +18 -0
  73. package/cjs/interactions/dimension-tooltip.js +99 -0
  74. package/cjs/interactions/dimension-tooltip.js.map +1 -0
  75. package/cjs/interactions/drill-down.d.ts +25 -0
  76. package/cjs/interactions/drill-down.js +48 -0
  77. package/cjs/interactions/drill-down.js.map +1 -0
  78. package/cjs/interactions/element-active-by-legend.d.ts +17 -0
  79. package/cjs/interactions/element-active-by-legend.js +44 -0
  80. package/cjs/interactions/element-active-by-legend.js.map +1 -0
  81. package/cjs/interactions/element-active.d.ts +16 -0
  82. package/cjs/interactions/element-active.js +33 -0
  83. package/cjs/interactions/element-active.js.map +1 -0
  84. package/cjs/interactions/element-highlight-by-group.d.ts +17 -0
  85. package/cjs/interactions/element-highlight-by-group.js +53 -0
  86. package/cjs/interactions/element-highlight-by-group.js.map +1 -0
  87. package/cjs/interactions/element-highlight-by-key.d.ts +17 -0
  88. package/cjs/interactions/element-highlight-by-key.js +53 -0
  89. package/cjs/interactions/element-highlight-by-key.js.map +1 -0
  90. package/cjs/interactions/element-highlight-by-legend.d.ts +17 -0
  91. package/cjs/interactions/element-highlight-by-legend.js +47 -0
  92. package/cjs/interactions/element-highlight-by-legend.js.map +1 -0
  93. package/cjs/interactions/element-highlight-by-name.d.ts +18 -0
  94. package/cjs/interactions/element-highlight-by-name.js +59 -0
  95. package/cjs/interactions/element-highlight-by-name.js.map +1 -0
  96. package/cjs/interactions/element-highlight.d.ts +17 -0
  97. package/cjs/interactions/element-highlight.js +48 -0
  98. package/cjs/interactions/element-highlight.js.map +1 -0
  99. package/cjs/interactions/element-select.d.ts +18 -0
  100. package/cjs/interactions/element-select.js +42 -0
  101. package/cjs/interactions/element-select.js.map +1 -0
  102. package/cjs/interactions/filter.d.ts +20 -0
  103. package/cjs/interactions/filter.js +37 -0
  104. package/cjs/interactions/filter.js.map +1 -0
  105. package/cjs/interactions/fish-eye.d.ts +38 -0
  106. package/cjs/interactions/fish-eye.js +109 -0
  107. package/cjs/interactions/fish-eye.js.map +1 -0
  108. package/cjs/interactions/index.d.ts +50 -0
  109. package/cjs/interactions/index.js +386 -0
  110. package/cjs/interactions/index.js.map +1 -0
  111. package/cjs/interactions/legend-filter.d.ts +13 -0
  112. package/cjs/interactions/legend-filter.js +33 -0
  113. package/cjs/interactions/legend-filter.js.map +1 -0
  114. package/cjs/interactions/player-filter.d.ts +14 -0
  115. package/cjs/interactions/player-filter.js +32 -0
  116. package/cjs/interactions/player-filter.js.map +1 -0
  117. package/cjs/interactions/roll-up.d.ts +16 -0
  118. package/cjs/interactions/roll-up.js +47 -0
  119. package/cjs/interactions/roll-up.js.map +1 -0
  120. package/cjs/interactions/scrollbar-filter.d.ts +13 -0
  121. package/cjs/interactions/scrollbar-filter.js +54 -0
  122. package/cjs/interactions/scrollbar-filter.js.map +1 -0
  123. package/cjs/interactions/slider-filter.d.ts +13 -0
  124. package/cjs/interactions/slider-filter.js +32 -0
  125. package/cjs/interactions/slider-filter.js.map +1 -0
  126. package/cjs/interactions/tooltip.d.ts +15 -0
  127. package/cjs/interactions/tooltip.js +62 -0
  128. package/cjs/interactions/tooltip.js.map +1 -0
  129. package/cjs/interactions/view-drag-mixin.d.ts +22 -0
  130. package/cjs/interactions/view-drag-mixin.js +52 -0
  131. package/cjs/interactions/view-drag-mixin.js.map +1 -0
  132. package/cjs/interactions/view-drag.d.ts +19 -0
  133. package/cjs/interactions/view-drag.js +49 -0
  134. package/cjs/interactions/view-drag.js.map +1 -0
  135. package/cjs/interactions/view-navigation-base.d.ts +17 -0
  136. package/cjs/interactions/view-navigation-base.js +81 -0
  137. package/cjs/interactions/view-navigation-base.js.map +1 -0
  138. package/cjs/interactions/view-roam.d.ts +30 -0
  139. package/cjs/interactions/view-roam.js +93 -0
  140. package/cjs/interactions/view-roam.js.map +1 -0
  141. package/cjs/interactions/view-scroll-mixin.d.ts +10 -0
  142. package/cjs/interactions/view-scroll-mixin.js +45 -0
  143. package/cjs/interactions/view-scroll-mixin.js.map +1 -0
  144. package/cjs/interactions/view-scroll.d.ts +17 -0
  145. package/cjs/interactions/view-scroll.js +37 -0
  146. package/cjs/interactions/view-scroll.js.map +1 -0
  147. package/cjs/interactions/view-utils.d.ts +14 -0
  148. package/cjs/interactions/view-utils.js +73 -0
  149. package/cjs/interactions/view-utils.js.map +1 -0
  150. package/cjs/interactions/view-zoom-mixin.d.ts +29 -0
  151. package/cjs/interactions/view-zoom-mixin.js +77 -0
  152. package/cjs/interactions/view-zoom-mixin.js.map +1 -0
  153. package/cjs/interactions/view-zoom.d.ts +23 -0
  154. package/cjs/interactions/view-zoom.js +53 -0
  155. package/cjs/interactions/view-zoom.js.map +1 -0
  156. package/cjs/parse/coordinate.js +1 -1
  157. package/cjs/parse/event.d.ts +2 -0
  158. package/cjs/parse/event.js +8 -4
  159. package/cjs/parse/event.js.map +1 -1
  160. package/cjs/parse/mark.js +2 -1
  161. package/cjs/parse/option.js +1 -1
  162. package/cjs/parse/scale.js +1 -1
  163. package/cjs/parse/transform.js +1 -1
  164. package/cjs/parse/util.js +1 -1
  165. package/cjs/parse/view.js +1 -1
  166. package/cjs/semantic-marks/cell.js +4 -4
  167. package/cjs/semantic-marks/cell.js.map +1 -1
  168. package/cjs/semantic-marks/interval.js +1 -1
  169. package/cjs/semantic-marks/text.js +1 -1
  170. package/cjs/theme/dark.js +1 -1
  171. package/cjs/theme/default.js +1 -1
  172. package/cjs/theme/theme-manager.js +1 -1
  173. package/cjs/transforms/index.js +1 -1
  174. package/cjs/transforms/mark/dodge.js +4 -4
  175. package/cjs/transforms/mark/dodge.js.map +1 -1
  176. package/cjs/transforms/mark/jitter.js +2 -2
  177. package/cjs/transforms/mark/jitter.js.map +1 -1
  178. package/cjs/types/animate.js +1 -1
  179. package/cjs/types/base.js +1 -1
  180. package/cjs/types/component.d.ts +16 -88
  181. package/cjs/types/component.js +1 -1
  182. package/cjs/types/component.js.map +1 -1
  183. package/cjs/types/coordinate.js +2 -1
  184. package/cjs/types/data.js +1 -1
  185. package/cjs/types/dataflow.js +1 -1
  186. package/cjs/types/element.js +1 -1
  187. package/cjs/types/event.d.ts +11 -4
  188. package/cjs/types/event.js +1 -1
  189. package/cjs/types/event.js.map +1 -1
  190. package/cjs/types/glyph.js +1 -1
  191. package/cjs/types/grammar.d.ts +5 -1
  192. package/cjs/types/grammar.js +1 -1
  193. package/cjs/types/grammar.js.map +1 -1
  194. package/cjs/types/hooks.js +1 -1
  195. package/cjs/types/index.d.ts +1 -0
  196. package/cjs/types/index.js +2 -1
  197. package/cjs/types/index.js.map +1 -1
  198. package/cjs/types/interaction.d.ts +353 -0
  199. package/cjs/types/interaction.js +6 -0
  200. package/cjs/types/interaction.js.map +1 -0
  201. package/cjs/types/mark.d.ts +1 -2
  202. package/cjs/types/mark.js.map +1 -1
  203. package/cjs/types/view.d.ts +12 -13
  204. package/cjs/types/view.js.map +1 -1
  205. package/cjs/util/scale.d.ts +4 -0
  206. package/cjs/util/scale.js +24 -0
  207. package/cjs/util/scale.js.map +1 -0
  208. package/cjs/view/View.d.ts +8 -12
  209. package/cjs/view/View.js +43 -68
  210. package/cjs/view/View.js.map +1 -1
  211. package/cjs/view/component.d.ts +1 -5
  212. package/cjs/view/component.js +1 -19
  213. package/cjs/view/component.js.map +1 -1
  214. package/cjs/view/dataflow.js +1 -1
  215. package/cjs/view/dataflow.js.map +1 -1
  216. package/cjs/view/events.d.ts +1 -1
  217. package/cjs/view/mark.js +12 -10
  218. package/cjs/view/mark.js.map +1 -1
  219. package/cjs/view/scale.d.ts +7 -1
  220. package/cjs/view/scale.js +17 -3
  221. package/cjs/view/scale.js.map +1 -1
  222. package/es/component/datazoom.d.ts +7 -4
  223. package/es/component/datazoom.js +26 -42
  224. package/es/component/datazoom.js.map +1 -1
  225. package/es/component/index.d.ts +0 -2
  226. package/es/component/index.js +0 -4
  227. package/es/component/index.js.map +1 -1
  228. package/es/component/legend.d.ts +1 -3
  229. package/es/component/legend.js +11 -26
  230. package/es/component/legend.js.map +1 -1
  231. package/es/component/player.d.ts +1 -2
  232. package/es/component/player.js +17 -30
  233. package/es/component/player.js.map +1 -1
  234. package/es/component/scale.d.ts +1 -0
  235. package/es/component/scale.js +3 -0
  236. package/es/component/scale.js.map +1 -1
  237. package/es/component/scrollbar.d.ts +3 -4
  238. package/es/component/scrollbar.js +17 -53
  239. package/es/component/scrollbar.js.map +1 -1
  240. package/es/component/slider.d.ts +2 -5
  241. package/es/component/slider.js +9 -25
  242. package/es/component/slider.js.map +1 -1
  243. package/es/core/factory.d.ts +4 -1
  244. package/es/core/factory.js +9 -2
  245. package/es/core/factory.js.map +1 -1
  246. package/es/glyph/boxplot.js +2 -1
  247. package/es/glyph/link-path.js +1 -2
  248. package/es/glyph/ripple.js +2 -2
  249. package/es/glyph/ripple.js.map +1 -1
  250. package/es/graph/animation/animate.js +24 -19
  251. package/es/graph/animation/animate.js.map +1 -1
  252. package/es/graph/animation/attribute.js +6 -6
  253. package/es/graph/animation/attribute.js.map +1 -1
  254. package/es/graph/attributes/index.js +1 -1
  255. package/es/graph/attributes/index.js.map +1 -1
  256. package/es/graph/element.js +2 -2
  257. package/es/graph/element.js.map +1 -1
  258. package/es/graph/enums.d.ts +25 -8
  259. package/es/graph/enums.js +27 -11
  260. package/es/graph/enums.js.map +1 -1
  261. package/es/graph/mark/encode.d.ts +0 -3
  262. package/es/graph/mark/encode.js +0 -10
  263. package/es/graph/mark/encode.js.map +1 -1
  264. package/es/graph/util/events-extend.js +1 -1
  265. package/es/graph/util/events-extend.js.map +1 -1
  266. package/es/index.d.ts +3 -1
  267. package/es/index.js +5 -1
  268. package/es/index.js.map +1 -1
  269. package/es/interactions/base-tooltip.d.ts +29 -0
  270. package/es/interactions/base-tooltip.js +73 -0
  271. package/es/interactions/base-tooltip.js.map +1 -0
  272. package/es/interactions/base.d.ts +14 -0
  273. package/es/interactions/base.js +32 -0
  274. package/es/interactions/base.js.map +1 -0
  275. package/es/interactions/brush-active.d.ts +17 -0
  276. package/es/interactions/brush-active.js +23 -0
  277. package/es/interactions/brush-active.js.map +1 -0
  278. package/es/interactions/brush-base.d.ts +43 -0
  279. package/es/interactions/brush-base.js +103 -0
  280. package/es/interactions/brush-base.js.map +1 -0
  281. package/es/interactions/brush-filter.d.ts +24 -0
  282. package/es/interactions/brush-filter.js +32 -0
  283. package/es/interactions/brush-filter.js.map +1 -0
  284. package/es/interactions/brush-highlight.d.ts +17 -0
  285. package/es/interactions/brush-highlight.js +31 -0
  286. package/es/interactions/brush-highlight.js.map +1 -0
  287. package/es/interactions/crosshair.d.ts +53 -0
  288. package/es/{component → interactions}/crosshair.js +82 -81
  289. package/es/interactions/crosshair.js.map +1 -0
  290. package/es/interactions/datazoom-filter.d.ts +13 -0
  291. package/es/interactions/datazoom-filter.js +40 -0
  292. package/es/interactions/datazoom-filter.js.map +1 -0
  293. package/es/interactions/dimension-tooltip.d.ts +18 -0
  294. package/es/interactions/dimension-tooltip.js +99 -0
  295. package/es/interactions/dimension-tooltip.js.map +1 -0
  296. package/es/interactions/drill-down.d.ts +25 -0
  297. package/es/interactions/drill-down.js +46 -0
  298. package/es/interactions/drill-down.js.map +1 -0
  299. package/es/interactions/element-active-by-legend.d.ts +17 -0
  300. package/es/interactions/element-active-by-legend.js +43 -0
  301. package/es/interactions/element-active-by-legend.js.map +1 -0
  302. package/es/interactions/element-active.d.ts +16 -0
  303. package/es/interactions/element-active.js +29 -0
  304. package/es/interactions/element-active.js.map +1 -0
  305. package/es/interactions/element-highlight-by-group.d.ts +17 -0
  306. package/es/interactions/element-highlight-by-group.js +50 -0
  307. package/es/interactions/element-highlight-by-group.js.map +1 -0
  308. package/es/interactions/element-highlight-by-key.d.ts +17 -0
  309. package/es/interactions/element-highlight-by-key.js +50 -0
  310. package/es/interactions/element-highlight-by-key.js.map +1 -0
  311. package/es/interactions/element-highlight-by-legend.d.ts +17 -0
  312. package/es/interactions/element-highlight-by-legend.js +46 -0
  313. package/es/interactions/element-highlight-by-legend.js.map +1 -0
  314. package/es/interactions/element-highlight-by-name.d.ts +18 -0
  315. package/es/interactions/element-highlight-by-name.js +56 -0
  316. package/es/interactions/element-highlight-by-name.js.map +1 -0
  317. package/es/interactions/element-highlight.d.ts +17 -0
  318. package/es/interactions/element-highlight.js +43 -0
  319. package/es/interactions/element-highlight.js.map +1 -0
  320. package/es/interactions/element-select.d.ts +18 -0
  321. package/es/interactions/element-select.js +38 -0
  322. package/es/interactions/element-select.js.map +1 -0
  323. package/es/interactions/filter.d.ts +20 -0
  324. package/es/interactions/filter.js +31 -0
  325. package/es/interactions/filter.js.map +1 -0
  326. package/es/interactions/fish-eye.d.ts +38 -0
  327. package/es/interactions/fish-eye.js +105 -0
  328. package/es/interactions/fish-eye.js.map +1 -0
  329. package/es/interactions/index.d.ts +50 -0
  330. package/es/interactions/index.js +148 -0
  331. package/es/interactions/index.js.map +1 -0
  332. package/es/interactions/legend-filter.d.ts +13 -0
  333. package/es/interactions/legend-filter.js +32 -0
  334. package/es/interactions/legend-filter.js.map +1 -0
  335. package/es/interactions/player-filter.d.ts +14 -0
  336. package/es/interactions/player-filter.js +32 -0
  337. package/es/interactions/player-filter.js.map +1 -0
  338. package/es/interactions/roll-up.d.ts +16 -0
  339. package/es/interactions/roll-up.js +45 -0
  340. package/es/interactions/roll-up.js.map +1 -0
  341. package/es/interactions/scrollbar-filter.d.ts +13 -0
  342. package/es/interactions/scrollbar-filter.js +50 -0
  343. package/es/interactions/scrollbar-filter.js.map +1 -0
  344. package/es/interactions/slider-filter.d.ts +13 -0
  345. package/es/interactions/slider-filter.js +29 -0
  346. package/es/interactions/slider-filter.js.map +1 -0
  347. package/es/interactions/tooltip.d.ts +15 -0
  348. package/es/interactions/tooltip.js +58 -0
  349. package/es/interactions/tooltip.js.map +1 -0
  350. package/es/interactions/view-drag-mixin.d.ts +22 -0
  351. package/es/interactions/view-drag-mixin.js +46 -0
  352. package/es/interactions/view-drag-mixin.js.map +1 -0
  353. package/es/interactions/view-drag.d.ts +19 -0
  354. package/es/interactions/view-drag.js +47 -0
  355. package/es/interactions/view-drag.js.map +1 -0
  356. package/es/interactions/view-navigation-base.d.ts +17 -0
  357. package/es/interactions/view-navigation-base.js +78 -0
  358. package/es/interactions/view-navigation-base.js.map +1 -0
  359. package/es/interactions/view-roam.d.ts +30 -0
  360. package/es/interactions/view-roam.js +91 -0
  361. package/es/interactions/view-roam.js.map +1 -0
  362. package/es/interactions/view-scroll-mixin.d.ts +10 -0
  363. package/es/interactions/view-scroll-mixin.js +37 -0
  364. package/es/interactions/view-scroll-mixin.js.map +1 -0
  365. package/es/interactions/view-scroll.d.ts +17 -0
  366. package/es/interactions/view-scroll.js +35 -0
  367. package/es/interactions/view-scroll.js.map +1 -0
  368. package/es/interactions/view-utils.d.ts +14 -0
  369. package/es/interactions/view-utils.js +60 -0
  370. package/es/interactions/view-utils.js.map +1 -0
  371. package/es/interactions/view-zoom-mixin.d.ts +29 -0
  372. package/es/interactions/view-zoom-mixin.js +68 -0
  373. package/es/interactions/view-zoom-mixin.js.map +1 -0
  374. package/es/interactions/view-zoom.d.ts +23 -0
  375. package/es/interactions/view-zoom.js +51 -0
  376. package/es/interactions/view-zoom.js.map +1 -0
  377. package/es/parse/coordinate.js +1 -1
  378. package/es/parse/event.d.ts +2 -0
  379. package/es/parse/event.js +6 -2
  380. package/es/parse/event.js.map +1 -1
  381. package/es/parse/mark.js +2 -1
  382. package/es/parse/option.js +1 -1
  383. package/es/parse/scale.js +1 -1
  384. package/es/parse/transform.js +1 -1
  385. package/es/parse/util.js +1 -1
  386. package/es/parse/view.js +1 -1
  387. package/es/semantic-marks/cell.js +4 -2
  388. package/es/semantic-marks/cell.js.map +1 -1
  389. package/es/semantic-marks/interval.js +1 -1
  390. package/es/semantic-marks/text.js +1 -1
  391. package/es/theme/dark.js +1 -1
  392. package/es/theme/default.js +1 -1
  393. package/es/theme/theme-manager.js +1 -1
  394. package/es/transforms/index.js +1 -1
  395. package/es/transforms/mark/dodge.js +2 -2
  396. package/es/transforms/mark/dodge.js.map +1 -1
  397. package/es/transforms/mark/jitter.js +2 -2
  398. package/es/transforms/mark/jitter.js.map +1 -1
  399. package/es/types/animate.js +1 -1
  400. package/es/types/base.js +1 -1
  401. package/es/types/component.d.ts +16 -88
  402. package/es/types/component.js +1 -1
  403. package/es/types/component.js.map +1 -1
  404. package/es/types/coordinate.js +2 -1
  405. package/es/types/data.js +1 -1
  406. package/es/types/dataflow.js +1 -1
  407. package/es/types/element.js +1 -1
  408. package/es/types/event.d.ts +11 -4
  409. package/es/types/event.js +1 -1
  410. package/es/types/event.js.map +1 -1
  411. package/es/types/glyph.js +1 -1
  412. package/es/types/grammar.d.ts +5 -1
  413. package/es/types/grammar.js +1 -1
  414. package/es/types/grammar.js.map +1 -1
  415. package/es/types/hooks.js +1 -1
  416. package/es/types/index.d.ts +1 -0
  417. package/es/types/index.js +2 -0
  418. package/es/types/index.js.map +1 -1
  419. package/es/types/interaction.d.ts +353 -0
  420. package/es/types/interaction.js +2 -0
  421. package/es/types/interaction.js.map +1 -0
  422. package/es/types/mark.d.ts +1 -2
  423. package/es/types/mark.js.map +1 -1
  424. package/es/types/view.d.ts +12 -13
  425. package/es/types/view.js.map +1 -1
  426. package/es/util/scale.d.ts +4 -0
  427. package/es/util/scale.js +15 -0
  428. package/es/util/scale.js.map +1 -0
  429. package/es/view/View.d.ts +8 -12
  430. package/es/view/View.js +48 -68
  431. package/es/view/View.js.map +1 -1
  432. package/es/view/component.d.ts +1 -5
  433. package/es/view/component.js +0 -20
  434. package/es/view/component.js.map +1 -1
  435. package/es/view/dataflow.js +1 -1
  436. package/es/view/dataflow.js.map +1 -1
  437. package/es/view/events.d.ts +1 -1
  438. package/es/view/mark.js +12 -10
  439. package/es/view/mark.js.map +1 -1
  440. package/es/view/scale.d.ts +7 -1
  441. package/es/view/scale.js +17 -2
  442. package/es/view/scale.js.map +1 -1
  443. package/package.json +10 -10
  444. package/cjs/component/crosshair.d.ts +0 -50
  445. package/cjs/component/crosshair.js.map +0 -1
  446. package/cjs/component/tooltip.d.ts +0 -62
  447. package/cjs/component/tooltip.js +0 -305
  448. package/cjs/component/tooltip.js.map +0 -1
  449. package/es/component/crosshair.d.ts +0 -50
  450. package/es/component/crosshair.js.map +0 -1
  451. package/es/component/tooltip.d.ts +0 -62
  452. package/es/component/tooltip.js +0 -303
  453. package/es/component/tooltip.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/interactions/view-roam.ts"],"names":[],"mappings":"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","file":"view-roam.js","sourcesContent":["import { merge, throttle } from '@visactor/vutils';\nimport type {\n ViewRoamOptions,\n IView,\n InteractionEvent,\n IScale,\n IData,\n IViewZoomMixin,\n IViewScrollMixin,\n IViewDragMixin,\n InteractionEventHandler\n} from '../types';\nimport { ViewNavigationBase } from './view-navigation-base';\nimport { InteractionEventEnum } from '../graph/enums';\n\nexport interface ViewRoam\n extends Pick<IViewDragMixin, 'handleDragStart' | 'handleDragEnd' | 'handleDragUpdate'>,\n Pick<IViewScrollMixin, 'formatScrollEvent' | 'handleScrollStart' | 'handleScrollEnd'>,\n Pick<\n IViewZoomMixin,\n 'formatZoomEvent' | 'handleZoomStart' | 'handleZoomEnd' | 'handleZoomReset' | 'updateZoomRange'\n >,\n ViewNavigationBase<ViewRoamOptions> {}\n\nexport class ViewRoam extends ViewNavigationBase<ViewRoamOptions> {\n static type: string = 'view-roam';\n type: string = ViewRoam.type;\n\n static defaultOptions: ViewRoamOptions = {\n zoom: {\n realtime: true,\n enable: true,\n focus: true,\n trigger: 'wheel',\n endTrigger: 'pointerup',\n resetTrigger: 'dblclick',\n rate: 1\n },\n scroll: {\n realtime: true,\n enable: false,\n reversed: false,\n trigger: 'wheel',\n endTrigger: 'pointerup'\n },\n drag: {\n realtime: true,\n enable: true,\n reversed: false,\n trigger: 'pointerdown',\n updateTrigger: 'pointermove',\n endTrigger: 'pointerup'\n },\n throttle: 100\n };\n\n protected _inited?: boolean;\n protected _lastScale: number;\n protected _scaleX: IScale;\n protected _scaleY: IScale;\n protected _data: IData;\n protected handleRoamZoomStart: (e: InteractionEvent) => void;\n protected handleRoamDragUpdate: (e: InteractionEvent) => void;\n protected handleRoamScrollStart: (e: InteractionEvent) => void;\n\n constructor(view: IView, option?: ViewRoamOptions) {\n super(view, merge({}, ViewRoam.defaultOptions, option));\n this.handleRoamZoomStart = throttle(this.handleRoamZoomStartInner, this.options.throttle);\n this.handleRoamDragUpdate = throttle(this.handleRoamDragUpdateInner, this.options.throttle);\n this.handleRoamScrollStart = throttle(this.handleRoamScrollStartInner, this.options.throttle);\n }\n\n protected getEvents() {\n const events: Array<{ type: string; handler: InteractionEventHandler }> = [];\n\n if (this.options.zoom?.enable) {\n this.options.zoom?.trigger && events.push({ type: this.options.zoom.trigger, handler: this.handleRoamZoomStart });\n this.options.zoom?.endTrigger &&\n events.push({ type: this.options.zoom.endTrigger, handler: this.handleRoamZoomEnd });\n this.options.zoom?.resetTrigger &&\n events.push({ type: this.options.zoom?.resetTrigger, handler: this.handleRoamZoomReset });\n }\n\n if (this.options.scroll?.enable) {\n this.options.scroll?.trigger &&\n events.push({ type: this.options.scroll.trigger, handler: this.handleRoamScrollStart });\n this.options.scroll?.trigger &&\n events.push({ type: this.options.scroll.endTrigger, handler: this.handleRoamScrollEnd });\n }\n\n if (this.options.drag?.enable) {\n this.options.drag?.trigger && events.push({ type: this.options.drag.trigger, handler: this.handleRoamDragStart });\n this.options.drag?.updateTrigger &&\n events.push({ type: this.options.drag.updateTrigger, handler: this.handleRoamDragUpdate });\n this.options.drag?.endTrigger &&\n events.push({ type: this.options.drag.endTrigger, handler: this.handleRoamDragEnd });\n }\n\n return events;\n }\n\n handleRoamZoomStartInner = (e: InteractionEvent) => {\n this.formatZoomEvent(e);\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(InteractionEventEnum.viewZoomStart, this.handleZoomStart(e, this._state, this.options.zoom), e);\n };\n\n handleRoamZoomEnd = (e: InteractionEvent) => {\n this.formatZoomEvent(e);\n if (!e || (this.options.shouldEnd && !this.options.shouldEnd(e))) {\n return;\n }\n\n this.updateView(InteractionEventEnum.viewZoomEnd, this.handleZoomEnd(e, this._state, this.options.zoom), e);\n };\n\n handleRoamZoomReset = (e: InteractionEvent) => {\n if (!e || (this.options.shouldReset && !this.options.shouldReset(e))) {\n return;\n }\n this.updateView(InteractionEventEnum.viewZoomReset, this.handleZoomReset(e, this._state, this.options.zoom), e);\n };\n\n handleRoamDragStart = (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(InteractionEventEnum.viewDragStart, this.handleDragStart(e, this._state, this.options.drag), e);\n };\n\n handleRoamDragUpdateInner = (e: InteractionEvent) => {\n if (!e || (this.options.shouldUpdate && !this.options.shouldUpdate(e))) {\n return;\n }\n this.updateView(InteractionEventEnum.viewDragUpdate, this.handleDragUpdate(e, this._state, this.options.drag), e);\n };\n\n handleRoamDragEnd = (e: InteractionEvent) => {\n if (!e || (this.options.shouldEnd && !this.options.shouldEnd(e))) {\n return;\n }\n\n this.updateView(InteractionEventEnum.viewDragEnd, this.handleDragEnd(e, this._state, this.options.drag), e);\n };\n\n handleRoamScrollStartInner = (e: InteractionEvent) => {\n this.formatScrollEvent(e);\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.viewScrollStart,\n this.handleScrollStart(e, this._state, this.options.scroll),\n e\n );\n };\n\n handleRoamScrollEnd = (e: InteractionEvent) => {\n this.formatScrollEvent(e);\n if (!e || (this.options.shouldEnd && !this.options.shouldEnd(e))) {\n return;\n }\n\n this.updateView(InteractionEventEnum.viewScrollEnd, this.handleScrollEnd(e, this._state, this.options.scroll), e);\n };\n}\n"]}
@@ -0,0 +1,10 @@
1
+ import type { InteractionEvent, IViewScrollMixin, ViewNavigationRange, ViewScrollSimpleOptions, ViewStateByDim } from '../types';
2
+ export declare class ViewScrollMixin implements IViewScrollMixin {
3
+ protected _scrollX: number;
4
+ protected _scrollY: number;
5
+ protected formatPanScroll(e: InteractionEvent): InteractionEvent;
6
+ protected formatWheelScroll(e: InteractionEvent): InteractionEvent;
7
+ formatScrollEvent(e: InteractionEvent): InteractionEvent;
8
+ handleScrollStart(e: InteractionEvent, navState: Partial<Record<'x' | 'y', ViewStateByDim>>, scrollOptions?: ViewScrollSimpleOptions): ViewNavigationRange;
9
+ handleScrollEnd(e: InteractionEvent, navState: Partial<Record<'x' | 'y', ViewStateByDim>>, scrollOptions?: ViewScrollSimpleOptions): ViewNavigationRange;
10
+ }
@@ -0,0 +1,37 @@
1
+ import { isNil } from "@visactor/vutils";
2
+
3
+ import { handleScrolling } from "./view-utils";
4
+
5
+ export class ViewScrollMixin {
6
+ formatPanScroll(e) {
7
+ return e;
8
+ }
9
+ formatWheelScroll(e) {
10
+ return e.ctrlKey || 0 === e.deltaY && 0 === e.deltaX || (e.scrollX = e.deltaX, e.scrollY = e.deltaY),
11
+ e;
12
+ }
13
+ formatScrollEvent(e) {
14
+ return e ? "pan" === e.type ? this.formatPanScroll(e) : "wheel" === e.type ? this.formatWheelScroll(e) : e : e;
15
+ }
16
+ handleScrollStart(e, navState, scrollOptions) {
17
+ if (e.stopPropagation(), e.preventDefault(), !isNil(e.scrollX) || !isNil(e.scrollY)) {
18
+ if (null == scrollOptions ? void 0 : scrollOptions.realtime) return handleScrolling({
19
+ x: e.scrollX,
20
+ y: e.scrollY
21
+ }, navState, scrollOptions);
22
+ isNil(e.scrollX) || (this._scrollX = isNil(this._scrollX) ? e.scrollX : this._scrollX + e.scrollX),
23
+ isNil(e.scrollY) || (this._scrollY = isNil(this._scrollY) ? e.scrollY : this._scrollY + e.scrollY);
24
+ }
25
+ }
26
+ handleScrollEnd(e, navState, scrollOptions) {
27
+ if (!1 === (null == scrollOptions ? void 0 : scrollOptions.realtime) && (isNil(this._scrollX) || isNil(this._scrollY))) {
28
+ const res = handleScrolling({
29
+ x: this._scrollX,
30
+ y: this._scrollY
31
+ }, navState, scrollOptions);
32
+ return this._scrollX = null, this._scrollY = null, res;
33
+ }
34
+ return null;
35
+ }
36
+ }
37
+ //# sourceMappingURL=view-scroll-mixin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/interactions/view-scroll-mixin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAQzC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,OAAO,eAAe;IAIhB,eAAe,CAAC,CAAmB;QAC3C,OAAO,CAAC,CAAC;IACX,CAAC;IAES,iBAAiB,CAAC,CAAmB;QAM7C,IAAI,CAAE,CAAS,CAAC,OAAO,IAAI,CAAE,CAAS,CAAC,MAAM,KAAK,CAAC,IAAK,CAAS,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;YAC9E,CAAS,CAAC,OAAO,GAAI,CAAS,CAAC,MAAM,CAAC;YACtC,CAAS,CAAC,OAAO,GAAI,CAAS,CAAC,MAAM,CAAC;YACvC,OAAO,CAAC,CAAC;SACV;QAED,OAAO,CAAC,CAAC;IACX,CAAC;IAED,iBAAiB,CAAC,CAAmB;QACnC,IAAI,CAAC,CAAC,EAAE;YACN,OAAO,CAAC,CAAC;SACV;QAED,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,EAAE;YACpB,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;SAChC;QAED,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE;YACtB,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;SAClC;QAED,OAAO,CAAC,CAAC;IACX,CAAC;IAED,iBAAiB,CACf,CAAmB,EACnB,QAAoD,EACpD,aAAuC;QAEvC,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,CAAC,CAAC,cAAc,EAAE,CAAC;QAEnB,IAAI,KAAK,CAAE,CAAS,CAAC,OAAO,CAAC,IAAI,KAAK,CAAE,CAAS,CAAC,OAAO,CAAC,EAAE;YAC1D,OAAO;SACR;QAED,IAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,QAAQ,EAAE;YAC3B,OAAO,eAAe,CAAC,EAAE,CAAC,EAAG,CAAS,CAAC,OAAO,EAAE,CAAC,EAAG,CAAS,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;SACnG;QAED,IAAI,CAAC,KAAK,CAAE,CAAS,CAAC,OAAO,CAAC,EAAE;YAC9B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAE,CAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAI,CAAS,CAAC,OAAO,CAAC;SAChG;QAED,IAAI,CAAC,KAAK,CAAE,CAAS,CAAC,OAAO,CAAC,EAAE;YAC9B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAE,CAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAI,CAAS,CAAC,OAAO,CAAC;SAChG;IACH,CAAC;IAED,eAAe,CACb,CAAmB,EACnB,QAAoD,EACpD,aAAuC;QAIvC,IAAI,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,QAAQ,MAAK,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE;YACvF,MAAM,GAAG,GAAG,eAAe,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;YAC7F,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YAErB,OAAO,GAAG,CAAC;SACZ;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF","file":"view-scroll-mixin.js","sourcesContent":["import { isNil } from '@visactor/vutils';\nimport type {\n InteractionEvent,\n IViewScrollMixin,\n ViewNavigationRange,\n ViewScrollSimpleOptions,\n ViewStateByDim\n} from '../types';\nimport { handleScrolling } from './view-utils';\n\nexport class ViewScrollMixin implements IViewScrollMixin {\n protected _scrollX: number;\n protected _scrollY: number;\n\n protected formatPanScroll(e: InteractionEvent) {\n return e;\n }\n\n protected formatWheelScroll(e: InteractionEvent) {\n /**\n * @see https://vega.github.io/vega/examples/zoomable-world-map/\n * After testing, the ctrlKey field will only be true when the directions of the two fingers are inconsistent.\n * Based on this, determine whether to trigger the scroll event.\n */\n if (!(e as any).ctrlKey && ((e as any).deltaY !== 0 || (e as any).deltaX !== 0)) {\n (e as any).scrollX = (e as any).deltaX;\n (e as any).scrollY = (e as any).deltaY;\n return e;\n }\n\n return e;\n }\n\n formatScrollEvent(e: InteractionEvent) {\n if (!e) {\n return e;\n }\n\n if (e.type === 'pan') {\n return this.formatPanScroll(e);\n }\n\n if (e.type === 'wheel') {\n return this.formatWheelScroll(e);\n }\n\n return e;\n }\n\n handleScrollStart(\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n scrollOptions?: ViewScrollSimpleOptions\n ): ViewNavigationRange {\n e.stopPropagation();\n e.preventDefault();\n\n if (isNil((e as any).scrollX) && isNil((e as any).scrollY)) {\n return;\n }\n\n if (scrollOptions?.realtime) {\n return handleScrolling({ x: (e as any).scrollX, y: (e as any).scrollY }, navState, scrollOptions);\n }\n\n if (!isNil((e as any).scrollX)) {\n this._scrollX = isNil(this._scrollX) ? (e as any).scrollX : this._scrollX + (e as any).scrollX;\n }\n\n if (!isNil((e as any).scrollY)) {\n this._scrollY = isNil(this._scrollY) ? (e as any).scrollY : this._scrollY + (e as any).scrollY;\n }\n }\n\n handleScrollEnd(\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n scrollOptions?: ViewScrollSimpleOptions\n ): ViewNavigationRange {\n // do nothing now\n\n if (scrollOptions?.realtime === false && (isNil(this._scrollX) || isNil(this._scrollY))) {\n const res = handleScrolling({ x: this._scrollX, y: this._scrollY }, navState, scrollOptions);\n this._scrollX = null;\n this._scrollY = null;\n\n return res;\n }\n\n return null;\n }\n}\n"]}
@@ -0,0 +1,17 @@
1
+ import type { ViewScrollOptions, IView, InteractionEvent, IViewScrollMixin } from '../types';
2
+ import { ViewNavigationBase } from './view-navigation-base';
3
+ export interface ViewScroll extends Pick<IViewScrollMixin, 'formatScrollEvent' | 'handleScrollStart' | 'handleScrollEnd'>, ViewNavigationBase<ViewScrollOptions> {
4
+ }
5
+ export declare class ViewScroll extends ViewNavigationBase<ViewScrollOptions> {
6
+ static type: string;
7
+ type: string;
8
+ static defaultOptions: ViewScrollOptions;
9
+ protected handleStart: (e: InteractionEvent) => void;
10
+ constructor(view: IView, option?: ViewScrollOptions);
11
+ protected getEvents(): {
12
+ type: import("../types").EventType;
13
+ handler: (e: InteractionEvent) => void;
14
+ }[];
15
+ handleStartInner: (e: InteractionEvent) => void;
16
+ handleEnd: (e: InteractionEvent) => void;
17
+ }
@@ -0,0 +1,35 @@
1
+ import { throttle } from "@visactor/vutils";
2
+
3
+ import { InteractionEventEnum } from "../graph/enums";
4
+
5
+ import { ViewNavigationBase } from "./view-navigation-base";
6
+
7
+ export class ViewScroll extends ViewNavigationBase {
8
+ constructor(view, option) {
9
+ super(view, Object.assign({}, ViewScroll.defaultOptions, option)), this.type = ViewScroll.type,
10
+ this.handleStartInner = e => {
11
+ this.formatScrollEvent(e), !e || this.options.shouldStart && !this.options.shouldStart(e) || (this._inited || this._initGrammars(),
12
+ this.updateView(InteractionEventEnum.viewScrollStart, this.handleScrollStart(e, this._state, this.options), e));
13
+ }, this.handleEnd = e => {
14
+ this.formatScrollEvent(e), !e || this.options.shouldEnd && !this.options.shouldEnd(e) || this.updateView(InteractionEventEnum.viewScrollEnd, this.handleScrollEnd(e, this._state, this.options), e);
15
+ }, this.handleStart = throttle(this.handleStartInner, this.options.throttle);
16
+ }
17
+ getEvents() {
18
+ return [ {
19
+ type: this.options.trigger,
20
+ handler: this.handleStart
21
+ }, {
22
+ type: this.options.endTrigger,
23
+ handler: this.handleEnd
24
+ } ];
25
+ }
26
+ }
27
+
28
+ ViewScroll.type = "view-scroll", ViewScroll.defaultOptions = {
29
+ realtime: !0,
30
+ reversed: !1,
31
+ trigger: "wheel",
32
+ endTrigger: "pointerup",
33
+ throttle: 100
34
+ };
35
+ //# sourceMappingURL=view-scroll.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/interactions/view-scroll.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAM5D,MAAM,OAAO,UAAW,SAAQ,kBAAqC;IAcnE,YAAY,IAAW,EAAE,MAA0B;QACjD,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;QAbpE,SAAI,GAAW,UAAU,CAAC,IAAI,CAAC;QAyB/B,qBAAgB,GAAG,CAAC,CAAmB,EAAE,EAAE;YACxC,IAAoC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAC3D,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,oBAAoB,CAAC,eAAe,EACnC,IAAoC,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,EACrF,CAAC,CACF,CAAC;QACJ,CAAC,CAAC;QAEF,cAAS,GAAG,CAAC,CAAmB,EAAE,EAAE;YACjC,IAAoC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAC3D,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,oBAAoB,CAAC,aAAa,EACjC,IAAoC,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,EACnF,CAAC,CACF,CAAC;QACJ,CAAC,CAAC;QAtCA,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5E,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;SAC3D,CAAC;IACJ,CAAC;;AAxBM,eAAI,GAAW,aAAa,CAAC;AAG7B,yBAAc,GAAsB;IACzC,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,WAAW;IACvB,QAAQ,EAAE,GAAG;CACd,CAAC","file":"view-scroll.js","sourcesContent":["import { throttle } from '@visactor/vutils';\nimport { InteractionEventEnum } from '../graph/enums';\nimport type { ViewScrollOptions, IView, InteractionEvent, IViewScrollMixin } from '../types';\nimport { ViewNavigationBase } from './view-navigation-base';\n\nexport interface ViewScroll\n extends Pick<IViewScrollMixin, 'formatScrollEvent' | 'handleScrollStart' | 'handleScrollEnd'>,\n ViewNavigationBase<ViewScrollOptions> {}\n\nexport class ViewScroll extends ViewNavigationBase<ViewScrollOptions> {\n static type: string = 'view-scroll';\n type: string = ViewScroll.type;\n\n static defaultOptions: ViewScrollOptions = {\n realtime: true,\n reversed: false,\n trigger: 'wheel',\n endTrigger: 'pointerup',\n throttle: 100\n };\n\n protected handleStart: (e: InteractionEvent) => void;\n\n constructor(view: IView, option?: ViewScrollOptions) {\n super(view, Object.assign({}, ViewScroll.defaultOptions, option));\n\n this.handleStart = throttle(this.handleStartInner, 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 ];\n }\n\n handleStartInner = (e: InteractionEvent) => {\n (this as unknown as IViewScrollMixin).formatScrollEvent(e);\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.viewScrollStart,\n (this as unknown as IViewScrollMixin).handleScrollStart(e, this._state, this.options),\n e\n );\n };\n\n handleEnd = (e: InteractionEvent) => {\n (this as unknown as IViewScrollMixin).formatScrollEvent(e);\n if (!e || (this.options.shouldEnd && !this.options.shouldEnd(e))) {\n return;\n }\n\n this.updateView(\n InteractionEventEnum.viewScrollEnd,\n (this as unknown as IViewScrollMixin).handleScrollEnd(e, this._state, this.options),\n e\n );\n };\n}\n"]}
@@ -0,0 +1,14 @@
1
+ import { type IBaseScale } from '@visactor/vscale';
2
+ import type { IDatazoom, IScrollbar, ViewNavigationRange, ViewStateByDim } from '../types';
3
+ export declare const getRangeOfLinkedComponent: (comp: IDatazoom | IScrollbar) => [number, number];
4
+ export declare const getBoundsRangeOfLinkedComponent: (comp: IDatazoom | IScrollbar, dim: 'x' | 'y') => [number, number];
5
+ export declare const getFilteredValuesFromScale: (scale: IBaseScale, range: [number, number]) => any;
6
+ export declare const updateScrollRange: (rangeFactor: [number, number], range: [number, number], scrollValue?: number, scrollOptions?: {
7
+ reversed?: boolean;
8
+ }) => [number, number];
9
+ export declare const handleScrolling: (scrollPos: {
10
+ x?: number;
11
+ y?: number;
12
+ }, navState: Partial<Record<'x' | 'y', ViewStateByDim>>, scrollOptions?: {
13
+ reversed?: boolean;
14
+ }) => ViewNavigationRange;
@@ -0,0 +1,60 @@
1
+ import { isContinuous } from "@visactor/vscale";
2
+
3
+ import { ComponentEnum } from "../graph/enums";
4
+
5
+ export const getRangeOfLinkedComponent = comp => {
6
+ if (comp.componentType === ComponentEnum.datazoom) {
7
+ const res = comp.getStartEndValue();
8
+ return res ? [ res.start, res.end ] : null;
9
+ }
10
+ return comp.getScrollRange();
11
+ };
12
+
13
+ export const getBoundsRangeOfLinkedComponent = (comp, dim) => {
14
+ const bounds = comp.getBounds();
15
+ if (bounds && !bounds.empty()) return "y" === dim ? [ bounds.y1, bounds.y2 ] : [ bounds.x1, bounds.x2 ];
16
+ };
17
+
18
+ export const getFilteredValuesFromScale = (scale, range) => {
19
+ const scaleRange = scale.range(), startPos = scaleRange[0] + (scaleRange[1] - scaleRange[0]) * range[0], endPos = scaleRange[0] + (scaleRange[1] - scaleRange[0]) * range[1];
20
+ if (isContinuous(scale.type)) {
21
+ const startValue = scale.invert(startPos), endValue = scale.invert(endPos);
22
+ return [ Math.min(startValue, endValue), Math.max(startValue, endValue) ];
23
+ }
24
+ return scale.domain().filter((entry => {
25
+ const val = scale.scale(entry);
26
+ return val >= startPos && val <= endPos;
27
+ }));
28
+ };
29
+
30
+ export const updateScrollRange = (rangeFactor = [ 0, 1 ], range, scrollValue = 0, scrollOptions) => {
31
+ if (Math.abs(scrollValue) < .001) return;
32
+ if (Math.abs(rangeFactor[1] - rangeFactor[0]) >= 1) return;
33
+ const size = Math.abs(range[range.length - 1] - range[0]);
34
+ if (size <= 0 || Number.isNaN(size)) return;
35
+ const value = (scrollOptions.reversed ? -1 : 1) * scrollValue;
36
+ if (value > 0 && rangeFactor[1] < 1) {
37
+ const delta = Math.min(1 - rangeFactor[1], value / size);
38
+ return [ rangeFactor[0] + delta, rangeFactor[1] + delta ];
39
+ }
40
+ if (value < 0 && rangeFactor[0] > 0) {
41
+ const delta = Math.max(-rangeFactor[0], value / size);
42
+ return [ rangeFactor[0] + delta, rangeFactor[1] + delta ];
43
+ }
44
+ };
45
+
46
+ export const handleScrolling = (scrollPos, navState, scrollOptions) => {
47
+ const res = {
48
+ needUpdate: !1
49
+ };
50
+ return navState ? (Object.keys(navState).forEach((dim => {
51
+ const {scale: scale, data: data, linkedComponent: linkedComponent, rangeFactor: rangeFactor, wholeScale: wholeScale} = navState[dim];
52
+ if (linkedComponent) res[dim] = updateScrollRange(getRangeOfLinkedComponent(linkedComponent), getBoundsRangeOfLinkedComponent(linkedComponent, dim), scrollPos[dim], scrollOptions); else if (scale) {
53
+ const innerScale = scale.getScale(), newRange = updateScrollRange(rangeFactor, innerScale.range(), scrollPos[dim], scrollOptions);
54
+ newRange && (navState[dim].rangeFactor = newRange, data ? (navState[dim].filterValue = rangeFactor,
55
+ data.commit()) : (scale.setRangeFactor(newRange), scale.commit()), res.needUpdate = !0,
56
+ res[dim] = newRange);
57
+ }
58
+ })), res) : res;
59
+ };
60
+ //# sourceMappingURL=view-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/interactions/view-utils.ts"],"names":[],"mappings":"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","file":"view-utils.js","sourcesContent":["import { isContinuous, type IBaseScale } from '@visactor/vscale';\nimport { ComponentEnum } from '../graph/enums';\nimport type { IDatazoom, IScrollbar, ViewNavigationRange, ViewStateByDim } from '../types';\n\nexport const getRangeOfLinkedComponent = (comp: IDatazoom | IScrollbar): [number, number] => {\n if (comp.componentType === ComponentEnum.datazoom) {\n const res = (comp as IDatazoom).getStartEndValue();\n return res ? [res.start, res.end] : null;\n }\n\n return (comp as IScrollbar).getScrollRange();\n};\n\nexport const getBoundsRangeOfLinkedComponent = (comp: IDatazoom | IScrollbar, dim: 'x' | 'y'): [number, number] => {\n const bounds = comp.getBounds();\n\n if (bounds && !bounds.empty()) {\n return dim === 'y' ? [bounds.y1, bounds.y2] : [bounds.x1, bounds.x2];\n }\n};\n\nexport const getFilteredValuesFromScale = (scale: IBaseScale, range: [number, number]) => {\n const scaleRange = scale.range();\n const startPos = scaleRange[0] + (scaleRange[1] - scaleRange[0]) * range[0];\n const endPos = scaleRange[0] + (scaleRange[1] - scaleRange[0]) * range[1];\n\n if (isContinuous(scale.type)) {\n const startValue = scale.invert(startPos);\n const endValue = scale.invert(endPos);\n\n return [Math.min(startValue, endValue), Math.max(startValue, endValue)];\n }\n const domain = scale.domain();\n\n return domain.filter((entry: any) => {\n const val = scale.scale(entry);\n return val >= startPos && val <= endPos;\n });\n};\n\nexport const updateScrollRange = (\n rangeFactor: [number, number] = [0, 1],\n range: [number, number],\n scrollValue: number = 0,\n scrollOptions?: { reversed?: boolean }\n) => {\n if (Math.abs(scrollValue) < 1e-3) {\n return;\n }\n const rangeDelta = Math.abs(rangeFactor[1] - rangeFactor[0]);\n\n if (rangeDelta >= 1) {\n return;\n }\n const size = Math.abs(range[range.length - 1] - range[0]);\n\n if (size <= 0 || Number.isNaN(size)) {\n return;\n }\n\n const value = (scrollOptions.reversed ? -1 : 1) * scrollValue;\n\n if (value > 0 && rangeFactor[1] < 1) {\n const delta = Math.min(1 - rangeFactor[1], value / size);\n\n return [rangeFactor[0] + delta, rangeFactor[1] + delta] as [number, number];\n } else if (value < 0 && rangeFactor[0] > 0) {\n const delta = Math.max(-rangeFactor[0], value / size);\n\n return [rangeFactor[0] + delta, rangeFactor[1] + delta] as [number, number];\n }\n};\n\nexport const handleScrolling = (\n scrollPos: { x?: number; y?: number },\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n scrollOptions?: { reversed?: boolean }\n): ViewNavigationRange => {\n const res: ViewNavigationRange = { needUpdate: false };\n if (!navState) {\n return res;\n }\n\n Object.keys(navState).forEach(dim => {\n const { scale, data, linkedComponent, rangeFactor, wholeScale } = navState[dim];\n\n if (linkedComponent) {\n res[dim] = updateScrollRange(\n getRangeOfLinkedComponent(linkedComponent),\n getBoundsRangeOfLinkedComponent(linkedComponent, dim as 'x' | 'y'),\n scrollPos[dim],\n scrollOptions\n );\n } else if (scale) {\n const innerScale = scale.getScale();\n const newRange = updateScrollRange(rangeFactor, innerScale.range(), scrollPos[dim], scrollOptions);\n\n if (newRange) {\n navState[dim].rangeFactor = newRange;\n\n if (data) {\n navState[dim].filterValue = rangeFactor;\n\n data.commit();\n } else {\n scale.setRangeFactor(newRange);\n scale.commit();\n }\n res.needUpdate = true;\n res[dim] = newRange;\n }\n }\n });\n return res;\n};\n"]}
@@ -0,0 +1,29 @@
1
+ import type { IViewZoomMixin, InteractionEvent, ViewNavigationRange, ViewStateByDim, ViewZoomSimpleOptions } from '../types';
2
+ export declare class ViewZoomMixin implements IViewZoomMixin {
3
+ protected _state: Partial<Record<'x' | 'y', ViewStateByDim>>;
4
+ protected _lastScale: number;
5
+ protected _zoomPos: {
6
+ zoomDelta: number;
7
+ zoomX: number;
8
+ zoomY: number;
9
+ };
10
+ protected _formatPinchZoom(e: InteractionEvent): InteractionEvent;
11
+ protected _formatWheelZoom(e: InteractionEvent): InteractionEvent;
12
+ formatZoomEvent(e: InteractionEvent): InteractionEvent;
13
+ updateZoomRange(rangeFactor: [number, number], range: [number, number], zoomEvent: {
14
+ zoomDelta: number;
15
+ zoomX: number;
16
+ zoomY: number;
17
+ }, zoomOptions?: {
18
+ rate?: number;
19
+ focus?: boolean;
20
+ }): [number, number];
21
+ protected _handleZooming(zoomPos: {
22
+ zoomDelta: number;
23
+ zoomX: number;
24
+ zoomY: number;
25
+ }, navState: Partial<Record<'x' | 'y', ViewStateByDim>>, zoomOptions?: ViewZoomSimpleOptions): ViewNavigationRange;
26
+ handleZoomStart(e: InteractionEvent, navState: Partial<Record<'x' | 'y', ViewStateByDim>>, zoomOptions?: ViewZoomSimpleOptions): ViewNavigationRange;
27
+ handleZoomEnd(e: InteractionEvent, navState: Partial<Record<'x' | 'y', ViewStateByDim>>, zoomOptions?: ViewZoomSimpleOptions): ViewNavigationRange;
28
+ handleZoomReset(e: InteractionEvent, navState: Partial<Record<'x' | 'y', ViewStateByDim>>, zoomOptions?: ViewZoomSimpleOptions): ViewNavigationRange;
29
+ }
@@ -0,0 +1,68 @@
1
+ import { clamp, isNil } from "@visactor/vutils";
2
+
3
+ import { getRangeOfLinkedComponent } from "./view-utils";
4
+
5
+ export class ViewZoomMixin {
6
+ _formatPinchZoom(e) {
7
+ const scale = e.scale;
8
+ if (isNil(this._lastScale)) return this._lastScale = scale, e;
9
+ const zoomDelta = scale / this._lastScale;
10
+ this._lastScale = scale;
11
+ const center = e.center;
12
+ return e.zoomDelta = zoomDelta, e.zoomX = center.x, e.zoomY = center.y, e;
13
+ }
14
+ _formatWheelZoom(e) {
15
+ if (!e.ctrlKey) return e.zoomDelta = null, e.zoomX = null, e.zoomY = null, e;
16
+ const zoomDelta = Math.pow(1.0005, -e.deltaY * Math.pow(16, e.deltaMode));
17
+ return e.zoomDelta = zoomDelta, e.zoomX = e.canvasX, e.zoomY = e.canvasY, e;
18
+ }
19
+ formatZoomEvent(e) {
20
+ return e ? "pinch" === e.type ? this._formatPinchZoom(e) : this._formatWheelZoom(e) : e;
21
+ }
22
+ updateZoomRange(rangeFactor = [ 0, 1 ], range, zoomEvent, zoomOptions) {
23
+ var _a;
24
+ const {zoomDelta: zoomDelta} = zoomEvent, rangeDelta = Math.abs(rangeFactor[1] - rangeFactor[0]);
25
+ if (rangeDelta >= 1 && zoomDelta >= 1) return;
26
+ if (rangeDelta <= .001 && zoomDelta <= 1) return;
27
+ const value = rangeDelta * (zoomDelta - 1) * (null !== (_a = zoomOptions.rate) && void 0 !== _a ? _a : 1) / 2, start = clamp(rangeFactor[0] - value, 0, 1), end = clamp(rangeFactor[1] + value, 0, 1);
28
+ return [ Math.min(start, end), Math.max(start, end) ];
29
+ }
30
+ _handleZooming(zoomPos, navState, zoomOptions) {
31
+ const res = {
32
+ needUpdate: !1
33
+ };
34
+ return navState ? (Object.keys(navState).forEach((dim => {
35
+ const {scale: scale, data: data, linkedComponent: linkedComponent, rangeFactor: rangeFactor} = navState[dim];
36
+ if (linkedComponent) res[dim] = this.updateZoomRange(getRangeOfLinkedComponent(linkedComponent), null, zoomPos, zoomOptions); else if (scale) {
37
+ const innerScale = scale.getScale(), newRange = this.updateZoomRange(rangeFactor, innerScale, zoomPos, zoomOptions);
38
+ newRange && (navState[dim].rangeFactor = newRange, data ? (navState[dim].filterValue = newRange,
39
+ data.commit()) : (scale.setRangeFactor(newRange), scale.commit()), res.needUpdate = !0,
40
+ res[dim] = newRange);
41
+ }
42
+ })), res) : res;
43
+ }
44
+ handleZoomStart(e, navState, zoomOptions) {
45
+ if (!isNil(e.zoomDelta)) return e.stopPropagation(), e.preventDefault(), (null == zoomOptions ? void 0 : zoomOptions.realtime) ? this._handleZooming(e, navState, zoomOptions) : (isNil(this._zoomPos) ? this._zoomPos = {
46
+ zoomDelta: e.zoomDelta,
47
+ zoomX: e.zoomX,
48
+ zoomY: e.zoomY
49
+ } : this._zoomPos.zoomDelta *= e.zoomDelta, null);
50
+ }
51
+ handleZoomEnd(e, navState, zoomOptions) {
52
+ this._lastScale = null;
53
+ const res = !1 === (null == zoomOptions ? void 0 : zoomOptions.realtime) && this._zoomPos ? this._handleZooming(this._zoomPos, navState, zoomOptions) : null;
54
+ return this._zoomPos = null, res;
55
+ }
56
+ handleZoomReset(e, navState, zoomOptions) {
57
+ const res = {
58
+ needUpdate: !1
59
+ };
60
+ return navState ? (Object.keys(navState).forEach((dim => {
61
+ const {scale: scale, data: data, linkedComponent: linkedComponent} = navState[dim], newRange = [ 0, 1 ];
62
+ linkedComponent ? res[dim] = newRange : scale && (navState[dim].rangeFactor = null,
63
+ data ? (navState[dim].filterValue = null, data.commit()) : (scale.setRangeFactor(newRange),
64
+ scale.commit()), res.needUpdate = !0, res[dim] = newRange);
65
+ })), res) : res;
66
+ }
67
+ }
68
+ //# sourceMappingURL=view-zoom-mixin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/interactions/view-zoom-mixin.ts"],"names":[],"mappings":"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","file":"view-zoom-mixin.js","sourcesContent":["import { clamp, isNil } from '@visactor/vutils';\nimport type {\n IViewZoomMixin,\n InteractionEvent,\n ViewNavigationRange,\n ViewStateByDim,\n ViewZoomSimpleOptions\n} from '../types';\nimport { getFilteredValuesFromScale, getRangeOfLinkedComponent } from './view-utils';\n\nexport class ViewZoomMixin implements IViewZoomMixin {\n protected declare _state: Partial<Record<'x' | 'y', ViewStateByDim>>;\n\n protected _lastScale: number;\n protected _zoomPos: {\n zoomDelta: number;\n zoomX: number;\n zoomY: number;\n };\n\n protected _formatPinchZoom(e: InteractionEvent) {\n const scale = (e as any).scale;\n if (isNil(this._lastScale)) {\n this._lastScale = scale;\n return e;\n }\n const zoomDelta = scale / this._lastScale;\n\n this._lastScale = scale;\n const center = (e as any).center;\n\n (e as any).zoomDelta = zoomDelta;\n (e as any).zoomX = center.x;\n (e as any).zoomY = center.y;\n\n return e;\n }\n\n protected _formatWheelZoom(e: InteractionEvent) {\n /**\n * @see https://vega.github.io/vega/examples/zoomable-world-map/\n * After testing, the ctrlKey field will only be true when the directions of the two fingers are inconsistent.\n * Based on this, determine whether to trigger the scroll event.\n */\n if (!(e as any).ctrlKey) {\n (e as any).zoomDelta = null;\n (e as any).zoomX = null;\n (e as any).zoomY = null;\n return e;\n }\n\n // @see https://vega.github.io/vega/examples/zoomable-world-map/\n const zoomDelta = Math.pow(1.0005, -(e as any).deltaY * Math.pow(16, (e as any).deltaMode));\n\n (e as any).zoomDelta = zoomDelta;\n (e as any).zoomX = e.canvasX;\n (e as any).zoomY = e.canvasY;\n return e;\n }\n\n formatZoomEvent(e: InteractionEvent) {\n if (!e) {\n return e;\n }\n\n if (e.type === 'pinch') {\n return this._formatPinchZoom(e);\n }\n\n return this._formatWheelZoom(e);\n }\n\n updateZoomRange(\n rangeFactor: [number, number] = [0, 1],\n range: [number, number],\n zoomEvent: { zoomDelta: number; zoomX: number; zoomY: number },\n zoomOptions?: { rate?: number; focus?: boolean }\n ) {\n const { zoomDelta } = zoomEvent;\n\n const rangeDelta = Math.abs(rangeFactor[1] - rangeFactor[0]);\n\n if (rangeDelta >= 1 && zoomDelta >= 1) {\n return;\n }\n if (rangeDelta <= 1e-3 && zoomDelta <= 1) {\n return;\n }\n const value = (rangeDelta * (zoomDelta - 1) * (zoomOptions.rate ?? 1)) / 2;\n\n const start = clamp(rangeFactor[0] - value, 0, 1);\n const end = clamp(rangeFactor[1] + value, 0, 1);\n\n return [Math.min(start, end), Math.max(start, end)] as [number, number];\n }\n\n protected _handleZooming(\n zoomPos: { zoomDelta: number; zoomX: number; zoomY: number },\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n zoomOptions?: ViewZoomSimpleOptions\n ): ViewNavigationRange {\n const res: ViewNavigationRange = { needUpdate: false };\n if (!navState) {\n return res;\n }\n\n Object.keys(navState).forEach(dim => {\n const { scale, data, linkedComponent, rangeFactor } = navState[dim];\n\n if (linkedComponent) {\n res[dim] = this.updateZoomRange(getRangeOfLinkedComponent(linkedComponent), null, zoomPos, zoomOptions);\n } else if (scale) {\n const innerScale = scale.getScale();\n const newRange = this.updateZoomRange(rangeFactor, innerScale, zoomPos, zoomOptions);\n\n if (newRange) {\n navState[dim].rangeFactor = newRange;\n\n if (data) {\n navState[dim].filterValue = newRange;\n\n data.commit();\n } else {\n scale.setRangeFactor(newRange);\n scale.commit();\n }\n res.needUpdate = true;\n res[dim] = newRange;\n }\n }\n });\n return res;\n }\n\n handleZoomStart(\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n zoomOptions?: ViewZoomSimpleOptions\n ): ViewNavigationRange {\n if (isNil((e as any).zoomDelta)) {\n return;\n }\n e.stopPropagation();\n e.preventDefault();\n\n if (zoomOptions?.realtime) {\n return this._handleZooming(\n e as unknown as { zoomDelta: number; zoomX: number; zoomY: number },\n navState,\n zoomOptions\n );\n }\n\n if (isNil(this._zoomPos)) {\n this._zoomPos = {\n zoomDelta: (e as any).zoomDelta,\n zoomX: (e as any).zoomX,\n zoomY: (e as any).zoomY\n };\n } else {\n this._zoomPos.zoomDelta *= (e as any).zoomDelta;\n }\n\n return null;\n }\n\n handleZoomEnd(\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n zoomOptions?: ViewZoomSimpleOptions\n ): ViewNavigationRange {\n this._lastScale = null;\n const res =\n zoomOptions?.realtime === false && this._zoomPos\n ? this._handleZooming(this._zoomPos, navState, zoomOptions)\n : null;\n\n this._zoomPos = null;\n\n return res;\n }\n\n handleZoomReset(\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n zoomOptions?: ViewZoomSimpleOptions\n ): ViewNavigationRange {\n const res: ViewNavigationRange = { needUpdate: false };\n if (!navState) {\n return res;\n }\n\n Object.keys(navState).forEach(dim => {\n const { scale, data, linkedComponent } = navState[dim];\n const newRange = [0, 1];\n\n if (linkedComponent) {\n res[dim] = newRange;\n } else if (scale) {\n navState[dim].rangeFactor = null;\n\n if (data) {\n navState[dim].filterValue = null;\n\n data.commit();\n } else {\n scale.setRangeFactor(newRange);\n scale.commit();\n }\n res.needUpdate = true;\n res[dim] = newRange;\n }\n });\n return res;\n }\n}\n"]}
@@ -0,0 +1,23 @@
1
+ import type { ViewZoomOptions, IView, InteractionEvent, IScale, IData, IViewZoomMixin } from '../types';
2
+ import { ViewNavigationBase } from './view-navigation-base';
3
+ export interface ViewZoom extends Pick<IViewZoomMixin, 'formatZoomEvent' | 'handleZoomStart' | 'handleZoomEnd' | 'handleZoomReset' | 'updateZoomRange'>, ViewNavigationBase<ViewZoomOptions> {
4
+ }
5
+ export declare class ViewZoom extends ViewNavigationBase<ViewZoomOptions> {
6
+ static type: string;
7
+ type: string;
8
+ static defaultOptions: ViewZoomOptions;
9
+ protected _inited?: boolean;
10
+ protected _lastScale: number;
11
+ protected _scaleX: IScale;
12
+ protected _scaleY: IScale;
13
+ protected _data: IData;
14
+ protected handleStart: (e: InteractionEvent) => void;
15
+ constructor(view: IView, option?: ViewZoomOptions);
16
+ protected getEvents(): {
17
+ type: import("../types").EventType;
18
+ handler: (e: InteractionEvent) => void;
19
+ }[];
20
+ handleStartInner: (e: InteractionEvent) => void;
21
+ handleEnd: (e: InteractionEvent) => void;
22
+ handleReset: (e: InteractionEvent) => void;
23
+ }
@@ -0,0 +1,51 @@
1
+ import { throttle } from "@visactor/vutils";
2
+
3
+ import { ViewNavigationBase } from "./view-navigation-base";
4
+
5
+ import { InteractionEventEnum } from "../graph/enums";
6
+
7
+ export class ViewZoom extends ViewNavigationBase {
8
+ constructor(view, option) {
9
+ super(view, Object.assign({}, ViewZoom.defaultOptions, option)), this.type = ViewZoom.type,
10
+ this.handleStartInner = e => {
11
+ this.formatZoomEvent(e), !e || this.options.shouldStart && !this.options.shouldStart(e) || (this._inited || this._initGrammars(),
12
+ this.updateView(InteractionEventEnum.viewZoomStart, this.handleZoomStart(e, this._state, {
13
+ rate: this.options.rate,
14
+ focus: this.options.focus
15
+ })));
16
+ }, this.handleEnd = e => {
17
+ this.formatZoomEvent(e), !e || this.options.shouldEnd && !this.options.shouldEnd(e) || this.updateView(InteractionEventEnum.viewZoomEnd, this.handleZoomEnd(e, this._state, {
18
+ rate: this.options.rate,
19
+ focus: this.options.focus
20
+ }), e);
21
+ }, this.handleReset = e => {
22
+ !e || this.options.shouldReset && !this.options.shouldReset(e) || this.updateView(InteractionEventEnum.viewZoomReset, this.handleZoomReset(e, this._state, {
23
+ rate: this.options.rate,
24
+ focus: this.options.focus
25
+ }), e);
26
+ }, this.handleStart = throttle(this.handleStartInner, this.options.throttle);
27
+ }
28
+ getEvents() {
29
+ return [ {
30
+ type: this.options.trigger,
31
+ handler: this.handleStart
32
+ }, {
33
+ type: this.options.endTrigger,
34
+ handler: this.handleEnd
35
+ }, {
36
+ type: this.options.resetTrigger,
37
+ handler: this.handleReset
38
+ } ];
39
+ }
40
+ }
41
+
42
+ ViewZoom.type = "view-zoom", ViewZoom.defaultOptions = {
43
+ realtime: !0,
44
+ focus: !0,
45
+ trigger: "wheel",
46
+ endTrigger: "pointerup",
47
+ resetTrigger: "dblclick",
48
+ rate: 1,
49
+ throttle: 100
50
+ };
51
+ //# sourceMappingURL=view-zoom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/interactions/view-zoom.ts"],"names":[],"mappings":"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","file":"view-zoom.js","sourcesContent":["import { throttle } from '@visactor/vutils';\nimport type { ViewZoomOptions, IView, InteractionEvent, IScale, IData, IViewZoomMixin } from '../types';\nimport { ViewNavigationBase } from './view-navigation-base';\nimport { InteractionEventEnum } from '../graph/enums';\n\nexport interface ViewZoom\n extends Pick<\n IViewZoomMixin,\n 'formatZoomEvent' | 'handleZoomStart' | 'handleZoomEnd' | 'handleZoomReset' | 'updateZoomRange'\n >,\n ViewNavigationBase<ViewZoomOptions> {}\nexport class ViewZoom extends ViewNavigationBase<ViewZoomOptions> {\n static type: string = 'view-zoom';\n type: string = ViewZoom.type;\n\n static defaultOptions: ViewZoomOptions = {\n realtime: true,\n focus: true,\n trigger: 'wheel',\n endTrigger: 'pointerup',\n resetTrigger: 'dblclick',\n rate: 1,\n throttle: 100\n };\n\n protected _inited?: boolean;\n protected _lastScale: number;\n protected _scaleX: IScale;\n protected _scaleY: IScale;\n protected _data: IData;\n protected handleStart: (e: InteractionEvent) => void;\n\n constructor(view: IView, option?: ViewZoomOptions) {\n super(view, Object.assign({}, ViewZoom.defaultOptions, option));\n this.handleStart = throttle(this.handleStartInner, 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.resetTrigger, handler: this.handleReset }\n ];\n }\n\n handleStartInner = (e: InteractionEvent) => {\n (this as unknown as IViewZoomMixin).formatZoomEvent(e);\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.viewZoomStart,\n (this as unknown as IViewZoomMixin).handleZoomStart(e, this._state, {\n rate: this.options.rate,\n focus: this.options.focus\n })\n );\n };\n\n handleEnd = (e: InteractionEvent) => {\n (this as unknown as IViewZoomMixin).formatZoomEvent(e);\n if (!e || (this.options.shouldEnd && !this.options.shouldEnd(e))) {\n return;\n }\n\n this.updateView(\n InteractionEventEnum.viewZoomEnd,\n (this as unknown as IViewZoomMixin).handleZoomEnd(e, this._state, {\n rate: this.options.rate,\n focus: this.options.focus\n }),\n e\n );\n };\n\n handleReset = (e: InteractionEvent) => {\n if (!e || (this.options.shouldReset && !this.options.shouldReset(e))) {\n return;\n }\n this.updateView(\n InteractionEventEnum.viewZoomReset,\n (this as unknown as IViewZoomMixin).handleZoomReset(e, this._state, {\n rate: this.options.rate,\n focus: this.options.focus\n }),\n e\n );\n };\n}\n"]}
@@ -62,4 +62,4 @@ export function configureCoordinate(spec, coordinate, parameters) {
62
62
  }
63
63
  coordinate.applyTransforms(transforms);
64
64
  }
65
- //# sourceMappingURL=coordinate.js.map
65
+ //# sourceMappingURL=coordinate.js.map
@@ -5,4 +5,6 @@ export declare const parseHandler: (callback: EventCallback, config: {
5
5
  debounce?: number;
6
6
  throttle?: number;
7
7
  }) => (...args: any[]) => any;
8
+ export declare const NAME_PREFIX = "@";
9
+ export declare const ID_PREFIX = "#";
8
10
  export declare const parseEventSelector: (selector: string, source?: EventSourceType) => Partial<ParsedViewEventSpec | ParsedWindowEventSpec>;
package/es/parse/event.js CHANGED
@@ -8,7 +8,11 @@ export const generateFilterByMark = evtSpec => isNil(evtSpec.markId) ? el => el
8
8
 
9
9
  export const parseHandler = (callback, config) => (null == config ? void 0 : config.debounce) ? debounce(callback, config.debounce) : (null == config ? void 0 : config.throttle) ? throttle(callback, config.throttle) : callback;
10
10
 
11
- const JOIN_SYMBOL = ":", NAME_PREFIX = "@", ID_PREFIX = "#";
11
+ const JOIN_SYMBOL = ":";
12
+
13
+ export const NAME_PREFIX = "@";
14
+
15
+ export const ID_PREFIX = "#";
12
16
 
13
17
  export const parseEventSelector = (selector, source = EVENT_SOURCE_VIEW) => {
14
18
  const spec = {}, splitArr = selector.split(":");
@@ -20,4 +24,4 @@ export const parseEventSelector = (selector, source = EVENT_SOURCE_VIEW) => {
20
24
  } else 1 === splitArr.length && (spec.type = selector, spec.source = source);
21
25
  return spec;
22
26
  };
23
- //# sourceMappingURL=event.js.map
27
+ //# 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/es/parse/mark.js CHANGED
@@ -15,4 +15,5 @@ export function parseEncodeType(encoder, view) {
15
15
  let dependencies = [];
16
16
  return encoder.scale && (dependencies = isGrammar(encoder.scale) ? [ encoder.scale ] : array(view.getScaleById(encoder.scale))),
17
17
  dependencies.concat(parseFunctionType(encoder, view));
18
- }
18
+ }
19
+ //# sourceMappingURL=mark.js.map
@@ -8,4 +8,4 @@ export const parseOptions = (options, params) => options ? isObject(options) ? O
8
8
  const option = options[key];
9
9
  return res[key] = parseOptionValue(option, params), res;
10
10
  }), {}) : options.map((option => parseOptionValue(option, params))) : options;
11
- //# sourceMappingURL=option.js.map
11
+ //# sourceMappingURL=option.js.map
package/es/parse/scale.js CHANGED
@@ -343,4 +343,4 @@ export function configureScale(spec, scale, parameters) {
343
343
  scale.rescale();
344
344
  }
345
345
  }
346
- //# sourceMappingURL=scale.js.map
346
+ //# sourceMappingURL=scale.js.map
@@ -99,4 +99,4 @@ export const parseTransformSpec = (spec, view) => {
99
99
  }
100
100
  return null;
101
101
  };
102
- //# sourceMappingURL=transform.js.map
102
+ //# sourceMappingURL=transform.js.map
package/es/parse/util.js CHANGED
@@ -62,4 +62,4 @@ export const isGrammar = el => el && !isNil(el.grammarType);
62
62
  export const parseField = field => isFunction(field) ? field : datum => datum[field];
63
63
 
64
64
  export const parseColor = color => isString(color) && Color.parseColorString(color) ? color : null;
65
- //# sourceMappingURL=util.js.map
65
+ //# sourceMappingURL=util.js.map
package/es/parse/view.js CHANGED
@@ -95,4 +95,4 @@ export const normalizeRunningConfig = runningConfig => {
95
95
  enableExitAnimation: null !== (_p = null == runningConfig ? void 0 : runningConfig.enableExitAnimation) && void 0 !== _p ? _p : DefaultEnableExitAnimation
96
96
  };
97
97
  };
98
- //# sourceMappingURL=view.js.map
98
+ //# sourceMappingURL=view.js.map
@@ -1,4 +1,4 @@
1
- import { getBandWidthOfScale, invokeEncoder } from "../graph/mark/encode";
1
+ import { invokeEncoder } from "../graph/mark/encode";
2
2
 
3
3
  import { isScaleEncode } from "../parse/mark";
4
4
 
@@ -10,6 +10,8 @@ import { isArray, isNil, isNumber } from "@visactor/vutils";
10
10
 
11
11
  import { transformsByType } from "../graph/attributes";
12
12
 
13
+ import { getBandWidthOfScale } from "../util/scale";
14
+
13
15
  export class Cell extends Mark {
14
16
  encodeState(state, channel, value) {
15
17
  return super.encodeState(state, channel, value), this._updateComponentEncoders(state),
@@ -54,4 +56,4 @@ export class Cell extends Mark {
54
56
  super.release(), this._encoders = null;
55
57
  }
56
58
  }
57
- //# sourceMappingURL=cell.js.map
59
+ //# sourceMappingURL=cell.js.map