victory-core 36.4.1 → 36.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (368) hide show
  1. package/dist/victory-core.js +14463 -11478
  2. package/dist/victory-core.min.js +1 -1
  3. package/dist/victory-core.min.js.LICENSE.txt +19 -0
  4. package/es/index.d.ts +18 -941
  5. package/es/index.js +18 -73
  6. package/es/types/callbacks.d.ts +37 -0
  7. package/es/types/callbacks.js +2 -0
  8. package/es/types/prop-types.d.ts +130 -0
  9. package/es/types/prop-types.js +2 -0
  10. package/es/victory-accessible-group/victory-accessible-group.d.ts +26 -0
  11. package/es/victory-accessible-group/victory-accessible-group.js +9 -16
  12. package/es/victory-animation/util.d.ts +67 -0
  13. package/es/victory-animation/util.js +7 -4
  14. package/es/victory-animation/victory-animation.d.ts +70 -0
  15. package/es/victory-animation/victory-animation.js +60 -67
  16. package/es/victory-clip-container/victory-clip-container.d.ts +77 -0
  17. package/es/victory-clip-container/victory-clip-container.js +16 -21
  18. package/es/victory-container/victory-container.d.ts +100 -0
  19. package/es/victory-container/victory-container.js +32 -31
  20. package/es/victory-label/victory-label.d.ts +62 -0
  21. package/es/victory-label/victory-label.js +14 -9
  22. package/es/victory-portal/portal-context.d.ts +12 -0
  23. package/es/victory-portal/portal-context.js +3 -3
  24. package/es/victory-portal/portal.d.ts +29 -0
  25. package/es/victory-portal/portal.js +26 -33
  26. package/es/victory-portal/victory-portal.d.ts +32 -0
  27. package/es/victory-portal/victory-portal.js +24 -22
  28. package/es/victory-primitives/arc.d.ts +50 -0
  29. package/es/victory-primitives/arc.js +4 -5
  30. package/es/victory-primitives/background.d.ts +51 -0
  31. package/es/victory-primitives/background.js +5 -6
  32. package/es/victory-primitives/border.d.ts +44 -0
  33. package/es/victory-primitives/border.js +4 -5
  34. package/es/victory-primitives/circle.d.ts +3 -0
  35. package/es/victory-primitives/circle.js +11 -7
  36. package/es/victory-primitives/clip-path.d.ts +15 -0
  37. package/es/victory-primitives/clip-path.js +6 -5
  38. package/es/victory-primitives/index.d.ts +15 -0
  39. package/es/victory-primitives/index.js +15 -0
  40. package/es/victory-primitives/line-segment.d.ts +46 -0
  41. package/es/victory-primitives/line-segment.js +4 -5
  42. package/es/victory-primitives/line.d.ts +3 -0
  43. package/es/victory-primitives/line.js +11 -7
  44. package/es/victory-primitives/path.d.ts +3 -0
  45. package/es/victory-primitives/path.js +9 -5
  46. package/es/victory-primitives/point.d.ts +49 -0
  47. package/es/victory-primitives/point.js +10 -19
  48. package/es/victory-primitives/rect.d.ts +3 -0
  49. package/es/victory-primitives/rect.js +11 -7
  50. package/es/victory-primitives/text.d.ts +17 -0
  51. package/es/victory-primitives/text.js +7 -5
  52. package/es/victory-primitives/tspan.d.ts +3 -0
  53. package/es/victory-primitives/tspan.js +7 -5
  54. package/es/victory-primitives/types.d.ts +8 -0
  55. package/es/victory-primitives/types.js +2 -0
  56. package/es/victory-primitives/whisker.d.ts +59 -0
  57. package/es/victory-primitives/whisker.js +4 -5
  58. package/es/victory-state/defaults.d.ts +3 -0
  59. package/es/victory-state/defaults.js +3 -0
  60. package/es/victory-state/helpers/get-axis-data.d.ts +3 -0
  61. package/es/victory-state/helpers/get-axis-data.js +15 -0
  62. package/es/victory-state/helpers/get-data.d.ts +15 -0
  63. package/es/victory-state/helpers/get-data.js +88 -0
  64. package/es/victory-state/helpers/get-domain.d.ts +6 -0
  65. package/es/victory-state/helpers/get-domain.js +68 -0
  66. package/es/victory-state/helpers/get-range.d.ts +6 -0
  67. package/es/victory-state/helpers/get-range.js +37 -0
  68. package/es/victory-state/helpers/get-scale.d.ts +6 -0
  69. package/es/victory-state/helpers/get-scale.js +59 -0
  70. package/es/victory-state/index.d.ts +3 -0
  71. package/es/victory-state/index.js +3 -0
  72. package/es/victory-state/types.d.ts +24 -0
  73. package/es/victory-state/types.js +2 -0
  74. package/es/victory-state/victory-provider.d.ts +19 -0
  75. package/es/victory-state/victory-provider.js +118 -0
  76. package/es/victory-theme/grayscale.d.ts +3 -0
  77. package/es/victory-theme/grayscale.js +3 -2
  78. package/es/victory-theme/material.d.ts +3 -0
  79. package/es/victory-theme/material.js +3 -2
  80. package/es/victory-theme/types.d.ts +239 -0
  81. package/es/victory-theme/types.js +2 -0
  82. package/es/victory-theme/victory-theme.d.ts +6 -0
  83. package/es/victory-theme/victory-theme.js +8 -6
  84. package/es/victory-transition/victory-transition.d.ts +60 -0
  85. package/es/victory-transition/victory-transition.js +20 -23
  86. package/es/victory-util/add-events.d.ts +106 -0
  87. package/es/victory-util/add-events.js +44 -34
  88. package/es/victory-util/axis.d.ts +51 -0
  89. package/es/victory-util/axis.js +9 -8
  90. package/es/victory-util/collection.d.ts +9 -0
  91. package/es/victory-util/collection.js +6 -6
  92. package/es/victory-util/common-props.d.ts +84 -0
  93. package/es/victory-util/common-props.js +29 -12
  94. package/es/victory-util/data.d.ts +75 -0
  95. package/es/victory-util/data.js +2 -3
  96. package/es/victory-util/default-transitions.d.ts +5 -0
  97. package/es/victory-util/default-transitions.js +2 -2
  98. package/es/victory-util/domain.d.ts +91 -0
  99. package/es/victory-util/domain.js +6 -4
  100. package/es/victory-util/events.d.ts +65 -0
  101. package/es/victory-util/events.js +13 -8
  102. package/es/victory-util/helpers.d.ts +61 -0
  103. package/es/victory-util/helpers.js +8 -6
  104. package/es/victory-util/hooks/index.d.ts +3 -0
  105. package/es/victory-util/hooks/index.js +2 -1
  106. package/es/victory-util/hooks/use-animation-state.js +2 -1
  107. package/es/victory-util/hooks/use-previous-props.d.ts +2 -0
  108. package/es/victory-util/hooks/use-previous-props.js +4 -3
  109. package/es/victory-util/immutable.d.ts +12 -0
  110. package/es/victory-util/immutable.js +5 -5
  111. package/es/victory-util/index.d.ts +29 -0
  112. package/es/victory-util/index.js +48 -0
  113. package/es/victory-util/label-helpers.d.ts +27 -0
  114. package/es/victory-util/label-helpers.js +2 -3
  115. package/es/victory-util/line-helpers.d.ts +5 -0
  116. package/es/victory-util/line-helpers.js +24 -6
  117. package/es/victory-util/log.d.ts +2 -0
  118. package/es/victory-util/log.js +2 -2
  119. package/es/victory-util/point-path-helpers.d.ts +10 -0
  120. package/es/victory-util/point-path-helpers.js +60 -61
  121. package/es/victory-util/prop-types.d.ts +51 -0
  122. package/es/victory-util/prop-types.js +35 -44
  123. package/es/victory-util/scale.d.ts +10 -0
  124. package/es/victory-util/scale.js +14 -6
  125. package/es/victory-util/selection.d.ts +25 -0
  126. package/es/victory-util/selection.js +25 -16
  127. package/es/victory-util/style.d.ts +19 -0
  128. package/es/victory-util/style.js +2 -3
  129. package/es/victory-util/textsize.d.ts +37 -0
  130. package/es/victory-util/textsize.js +9 -6
  131. package/es/victory-util/timer-context.d.ts +12 -0
  132. package/es/victory-util/timer-context.js +2 -1
  133. package/es/victory-util/timer.d.ts +17 -0
  134. package/es/victory-util/timer.js +15 -9
  135. package/es/victory-util/transitions.d.ts +49 -0
  136. package/es/victory-util/transitions.js +5 -4
  137. package/es/victory-util/type-helpers.d.ts +10 -0
  138. package/es/victory-util/type-helpers.js +28 -0
  139. package/es/victory-util/user-props.d.ts +21 -0
  140. package/es/victory-util/user-props.js +6 -5
  141. package/es/victory-util/with-container.d.ts +5 -0
  142. package/es/victory-util/with-container.js +32 -0
  143. package/es/victory-util/wrapper.d.ts +38 -0
  144. package/es/victory-util/wrapper.js +4 -3
  145. package/lib/index.d.ts +18 -941
  146. package/lib/index.js +224 -311
  147. package/lib/types/callbacks.d.ts +37 -0
  148. package/lib/types/callbacks.js +2 -0
  149. package/lib/types/prop-types.d.ts +130 -0
  150. package/lib/types/prop-types.js +2 -0
  151. package/lib/victory-accessible-group/victory-accessible-group.d.ts +26 -0
  152. package/lib/victory-accessible-group/victory-accessible-group.js +10 -15
  153. package/lib/victory-animation/util.d.ts +67 -0
  154. package/lib/victory-animation/util.js +7 -4
  155. package/lib/victory-animation/victory-animation.d.ts +70 -0
  156. package/lib/victory-animation/victory-animation.js +61 -65
  157. package/lib/victory-clip-container/victory-clip-container.d.ts +77 -0
  158. package/lib/victory-clip-container/victory-clip-container.js +20 -22
  159. package/lib/victory-container/victory-container.d.ts +100 -0
  160. package/lib/victory-container/victory-container.js +35 -31
  161. package/lib/victory-label/victory-label.d.ts +62 -0
  162. package/lib/victory-label/victory-label.js +20 -14
  163. package/lib/victory-portal/portal-context.d.ts +12 -0
  164. package/lib/victory-portal/portal-context.js +3 -3
  165. package/lib/victory-portal/portal.d.ts +29 -0
  166. package/lib/victory-portal/portal.js +27 -31
  167. package/lib/victory-portal/victory-portal.d.ts +32 -0
  168. package/lib/victory-portal/victory-portal.js +25 -20
  169. package/lib/victory-primitives/arc.d.ts +50 -0
  170. package/lib/victory-primitives/arc.js +7 -7
  171. package/lib/victory-primitives/background.d.ts +51 -0
  172. package/lib/victory-primitives/background.js +9 -9
  173. package/lib/victory-primitives/border.d.ts +44 -0
  174. package/lib/victory-primitives/border.js +7 -7
  175. package/lib/victory-primitives/circle.d.ts +3 -0
  176. package/lib/victory-primitives/circle.js +12 -6
  177. package/lib/victory-primitives/clip-path.d.ts +15 -0
  178. package/lib/victory-primitives/clip-path.js +7 -4
  179. package/lib/victory-primitives/index.d.ts +15 -0
  180. package/lib/victory-primitives/index.js +188 -0
  181. package/lib/victory-primitives/line-segment.d.ts +46 -0
  182. package/lib/victory-primitives/line-segment.js +7 -7
  183. package/lib/victory-primitives/line.d.ts +3 -0
  184. package/lib/victory-primitives/line.js +12 -6
  185. package/lib/victory-primitives/path.d.ts +3 -0
  186. package/lib/victory-primitives/path.js +10 -4
  187. package/lib/victory-primitives/point.d.ts +49 -0
  188. package/lib/victory-primitives/point.js +15 -22
  189. package/lib/victory-primitives/rect.d.ts +3 -0
  190. package/lib/victory-primitives/rect.js +12 -6
  191. package/lib/victory-primitives/text.d.ts +17 -0
  192. package/lib/victory-primitives/text.js +8 -4
  193. package/lib/victory-primitives/tspan.d.ts +3 -0
  194. package/lib/victory-primitives/tspan.js +8 -4
  195. package/lib/victory-primitives/types.d.ts +8 -0
  196. package/lib/victory-primitives/types.js +2 -0
  197. package/lib/victory-primitives/whisker.d.ts +59 -0
  198. package/lib/victory-primitives/whisker.js +7 -7
  199. package/lib/victory-state/defaults.d.ts +3 -0
  200. package/lib/victory-state/defaults.js +11 -0
  201. package/lib/victory-state/helpers/get-axis-data.d.ts +3 -0
  202. package/lib/victory-state/helpers/get-axis-data.js +23 -0
  203. package/lib/victory-state/helpers/get-data.d.ts +15 -0
  204. package/lib/victory-state/helpers/get-data.js +99 -0
  205. package/lib/victory-state/helpers/get-domain.d.ts +6 -0
  206. package/lib/victory-state/helpers/get-domain.js +82 -0
  207. package/lib/victory-state/helpers/get-range.d.ts +6 -0
  208. package/lib/victory-state/helpers/get-range.js +46 -0
  209. package/lib/victory-state/helpers/get-scale.d.ts +6 -0
  210. package/lib/victory-state/helpers/get-scale.js +74 -0
  211. package/lib/victory-state/index.d.ts +3 -0
  212. package/lib/victory-state/index.js +32 -0
  213. package/lib/victory-state/types.d.ts +24 -0
  214. package/lib/victory-state/types.js +2 -0
  215. package/lib/victory-state/victory-provider.d.ts +19 -0
  216. package/lib/victory-state/victory-provider.js +144 -0
  217. package/lib/victory-theme/grayscale.d.ts +3 -0
  218. package/lib/victory-theme/grayscale.js +4 -3
  219. package/lib/victory-theme/material.d.ts +3 -0
  220. package/lib/victory-theme/material.js +4 -3
  221. package/lib/victory-theme/types.d.ts +239 -0
  222. package/lib/victory-theme/types.js +2 -0
  223. package/lib/victory-theme/victory-theme.d.ts +6 -0
  224. package/lib/victory-theme/victory-theme.js +23 -8
  225. package/lib/victory-transition/victory-transition.d.ts +60 -0
  226. package/lib/victory-transition/victory-transition.js +22 -23
  227. package/lib/victory-util/add-events.d.ts +106 -0
  228. package/lib/victory-util/add-events.js +48 -40
  229. package/lib/victory-util/axis.d.ts +51 -0
  230. package/lib/victory-util/axis.js +8 -6
  231. package/lib/victory-util/collection.d.ts +9 -0
  232. package/lib/victory-util/collection.js +6 -6
  233. package/lib/victory-util/common-props.d.ts +84 -0
  234. package/lib/victory-util/common-props.js +27 -12
  235. package/lib/victory-util/data.d.ts +75 -0
  236. package/lib/victory-util/data.js +2 -1
  237. package/lib/victory-util/default-transitions.d.ts +5 -0
  238. package/lib/victory-util/default-transitions.js +2 -2
  239. package/lib/victory-util/domain.d.ts +91 -0
  240. package/lib/victory-util/domain.js +6 -2
  241. package/lib/victory-util/events.d.ts +65 -0
  242. package/lib/victory-util/events.js +13 -9
  243. package/lib/victory-util/helpers.d.ts +61 -0
  244. package/lib/victory-util/helpers.js +8 -6
  245. package/lib/victory-util/hooks/index.d.ts +3 -0
  246. package/lib/victory-util/hooks/index.js +2 -1
  247. package/lib/victory-util/hooks/use-animation-state.js +2 -1
  248. package/lib/victory-util/hooks/use-previous-props.d.ts +2 -0
  249. package/lib/victory-util/hooks/use-previous-props.js +5 -6
  250. package/lib/victory-util/immutable.d.ts +12 -0
  251. package/lib/victory-util/immutable.js +5 -6
  252. package/lib/victory-util/index.d.ts +29 -0
  253. package/lib/victory-util/index.js +181 -0
  254. package/lib/victory-util/label-helpers.d.ts +27 -0
  255. package/lib/victory-util/label-helpers.js +2 -3
  256. package/lib/victory-util/line-helpers.d.ts +5 -0
  257. package/lib/victory-util/line-helpers.js +28 -7
  258. package/lib/victory-util/log.d.ts +2 -0
  259. package/lib/victory-util/log.js +2 -2
  260. package/lib/victory-util/point-path-helpers.d.ts +10 -0
  261. package/lib/victory-util/point-path-helpers.js +87 -73
  262. package/lib/victory-util/prop-types.d.ts +51 -0
  263. package/lib/victory-util/prop-types.js +36 -44
  264. package/lib/victory-util/scale.d.ts +10 -0
  265. package/lib/victory-util/scale.js +14 -5
  266. package/lib/victory-util/selection.d.ts +25 -0
  267. package/lib/victory-util/selection.js +25 -21
  268. package/lib/victory-util/style.d.ts +19 -0
  269. package/lib/victory-util/style.js +2 -3
  270. package/lib/victory-util/textsize.d.ts +37 -0
  271. package/lib/victory-util/textsize.js +9 -6
  272. package/lib/victory-util/timer-context.d.ts +12 -0
  273. package/lib/victory-util/timer-context.js +2 -1
  274. package/lib/victory-util/timer.d.ts +17 -0
  275. package/lib/victory-util/timer.js +15 -9
  276. package/lib/victory-util/transitions.d.ts +49 -0
  277. package/lib/victory-util/transitions.js +5 -4
  278. package/lib/victory-util/type-helpers.d.ts +10 -0
  279. package/lib/victory-util/type-helpers.js +45 -0
  280. package/lib/victory-util/user-props.d.ts +21 -0
  281. package/lib/victory-util/user-props.js +6 -5
  282. package/lib/victory-util/with-container.d.ts +5 -0
  283. package/lib/victory-util/with-container.js +44 -0
  284. package/lib/victory-util/wrapper.d.ts +38 -0
  285. package/lib/victory-util/wrapper.js +4 -3
  286. package/package.json +4 -4
  287. package/src/index.ts +17 -0
  288. package/src/types/callbacks.ts +53 -0
  289. package/src/types/prop-types.ts +195 -0
  290. package/src/victory-accessible-group/{victory-accessible-group.js → victory-accessible-group.tsx} +13 -6
  291. package/src/victory-animation/{util.js → util.ts} +6 -4
  292. package/src/victory-animation/{victory-animation.js → victory-animation.tsx} +100 -23
  293. package/src/victory-clip-container/{victory-clip-container.js → victory-clip-container.tsx} +52 -28
  294. package/src/victory-container/{victory-container.js → victory-container.tsx} +86 -42
  295. package/src/victory-label/{victory-label.js → victory-label.tsx} +108 -49
  296. package/src/victory-portal/portal-context.ts +14 -0
  297. package/src/victory-portal/{portal.js → portal.tsx} +24 -13
  298. package/src/victory-portal/{victory-portal.js → victory-portal.tsx} +24 -9
  299. package/src/victory-primitives/{arc.js → arc.tsx} +22 -10
  300. package/src/victory-primitives/{background.js → background.tsx} +24 -12
  301. package/src/victory-primitives/{border.js → border.tsx} +19 -10
  302. package/src/victory-primitives/{circle.js → circle.tsx} +4 -3
  303. package/src/victory-primitives/clip-path.tsx +25 -0
  304. package/src/victory-primitives/index.ts +14 -0
  305. package/src/victory-primitives/{line-segment.js → line-segment.tsx} +20 -10
  306. package/src/victory-primitives/{line.js → line.tsx} +4 -3
  307. package/src/victory-primitives/{path.js → path.tsx} +4 -3
  308. package/src/victory-primitives/{point.js → point.tsx} +33 -26
  309. package/src/victory-primitives/{rect.js → rect.tsx} +4 -2
  310. package/src/victory-primitives/{text.js → text.tsx} +10 -4
  311. package/src/victory-primitives/tspan.tsx +7 -0
  312. package/src/victory-primitives/types.ts +19 -0
  313. package/src/victory-primitives/{whisker.js → whisker.tsx} +34 -19
  314. package/src/victory-state/defaults.ts +2 -0
  315. package/src/victory-state/helpers/get-axis-data.ts +14 -0
  316. package/src/victory-state/helpers/get-data.ts +79 -0
  317. package/src/victory-state/helpers/get-domain.ts +62 -0
  318. package/src/victory-state/helpers/get-range.ts +39 -0
  319. package/src/victory-state/helpers/get-scale.ts +64 -0
  320. package/src/victory-state/index.ts +2 -0
  321. package/src/victory-state/types.ts +32 -0
  322. package/src/victory-state/victory-provider.tsx +116 -0
  323. package/src/victory-theme/{grayscale.js → grayscale.tsx} +63 -62
  324. package/src/victory-theme/{material.js → material.tsx} +68 -67
  325. package/src/victory-theme/types.ts +257 -0
  326. package/src/victory-theme/victory-theme.tsx +5 -0
  327. package/src/victory-transition/{victory-transition.js → victory-transition.tsx} +82 -33
  328. package/src/victory-util/{add-events.js → add-events.tsx} +142 -60
  329. package/src/victory-util/{axis.js → axis.tsx} +17 -19
  330. package/src/victory-util/{collection.js → collection.tsx} +14 -11
  331. package/src/victory-util/common-props.tsx +307 -0
  332. package/src/victory-util/{data.js → data.ts} +14 -11
  333. package/src/victory-util/{default-transitions.js → default-transitions.ts} +20 -19
  334. package/src/victory-util/{domain.js → domain.ts} +26 -24
  335. package/src/victory-util/{events.js → events.ts} +83 -32
  336. package/src/victory-util/{helpers.js → helpers.ts} +41 -23
  337. package/src/victory-util/hooks/{index.js → index.ts} +0 -0
  338. package/src/victory-util/hooks/use-animation-state.js +10 -10
  339. package/src/victory-util/hooks/use-previous-props.ts +9 -0
  340. package/src/victory-util/{immutable.js → immutable.ts} +14 -11
  341. package/src/victory-util/index.ts +28 -0
  342. package/src/victory-util/{label-helpers.js → label-helpers.ts} +7 -8
  343. package/src/victory-util/line-helpers.ts +104 -0
  344. package/src/victory-util/{log.js → log.ts} +1 -2
  345. package/src/victory-util/point-path-helpers.ts +119 -0
  346. package/src/victory-util/{prop-types.js → prop-types.ts} +103 -102
  347. package/src/victory-util/{scale.js → scale.ts} +29 -17
  348. package/src/victory-util/selection.ts +158 -0
  349. package/src/victory-util/{style.js → style.ts} +3 -4
  350. package/src/victory-util/{textsize.js → textsize.ts} +32 -17
  351. package/src/victory-util/{timer-context.js → timer-context.ts} +1 -1
  352. package/src/victory-util/{timer.js → timer.ts} +16 -6
  353. package/src/victory-util/{transitions.js → transitions.ts} +50 -23
  354. package/src/victory-util/type-helpers.ts +50 -0
  355. package/src/victory-util/{user-props.js → user-props.ts} +16 -11
  356. package/src/victory-util/with-container.tsx +41 -0
  357. package/src/victory-util/{wrapper.js → wrapper.tsx} +38 -34
  358. package/src/index.d.ts +0 -941
  359. package/src/index.js +0 -51
  360. package/src/victory-portal/portal-context.js +0 -10
  361. package/src/victory-primitives/clip-path.js +0 -18
  362. package/src/victory-primitives/tspan.js +0 -5
  363. package/src/victory-theme/victory-theme.js +0 -7
  364. package/src/victory-util/common-props.js +0 -197
  365. package/src/victory-util/hooks/use-previous-props.js +0 -9
  366. package/src/victory-util/line-helpers.js +0 -54
  367. package/src/victory-util/point-path-helpers.js +0 -121
  368. package/src/victory-util/selection.js +0 -99
@@ -1,34 +1,74 @@
1
1
  import React from "react";
2
2
  import PropTypes from "prop-types";
3
- import VictoryAnimation from "../victory-animation/victory-animation";
3
+ import { VictoryAnimation } from "../victory-animation/victory-animation";
4
4
  import * as Collection from "../victory-util/collection";
5
5
  import * as Helpers from "../victory-util/helpers";
6
6
  import TimerContext from "../victory-util/timer-context";
7
7
  import * as Transitions from "../victory-util/transitions";
8
- import { defaults, isFunction, pick, isObject } from "lodash";
8
+ import { defaults, isFunction, pick } from "lodash";
9
9
  import isEqual from "react-fast-compare";
10
+ import Timer from "../victory-util/timer";
10
11
 
11
- export default class VictoryTransition extends React.Component {
12
+ type VictoryTransitionChild = React.ReactElement<
13
+ // Props:
14
+ {
15
+ polar?: boolean;
16
+ domain?: number[] | { x: number[]; y: number[] };
17
+ groupComponent?: React.ReactElement;
18
+ },
19
+ // Type:
20
+ {
21
+ new (props: any): React.Component<any, any>;
22
+ continuous?: boolean;
23
+ }
24
+ >;
25
+ interface VictoryTransitionProps {
26
+ animate?: boolean | any;
27
+ animationWhitelist?: string[];
28
+ children: VictoryTransitionChild;
29
+ }
30
+
31
+ interface VictoryTransitionState {
32
+ oldProps?: VictoryTransitionProps | null;
33
+ nextProps?: VictoryTransitionProps;
34
+ nodesShouldLoad?: boolean;
35
+ nodesDoneLoad?: boolean;
36
+ nodesWillExit?: boolean;
37
+ nodesWillEnter?: boolean;
38
+ nodesShouldEnter?: boolean;
39
+ childrenTransitions?: unknown;
40
+ }
41
+
42
+ export interface VictoryTransition {
43
+ context: React.ContextType<typeof TimerContext>;
44
+ }
45
+
46
+ export class VictoryTransition extends React.Component<
47
+ VictoryTransitionProps,
48
+ VictoryTransitionState
49
+ > {
12
50
  static displayName = "VictoryTransition";
13
51
 
14
52
  static propTypes = {
15
53
  animate: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),
16
54
  animationWhitelist: PropTypes.array,
17
- children: PropTypes.node
55
+ children: PropTypes.node,
18
56
  };
19
57
 
20
58
  static contextType = TimerContext;
59
+ private continuous: boolean;
60
+ private timer: Timer;
61
+ private transitionProps: any;
21
62
 
22
63
  constructor(props, context) {
23
64
  super(props, context);
24
65
  this.state = {
25
66
  nodesShouldLoad: false,
26
- nodesDoneLoad: false
67
+ nodesDoneLoad: false,
27
68
  };
28
69
  const child = this.props.children;
29
70
  const polar = child.props.polar;
30
71
  this.continuous = !polar && child.type && child.type.continuous === true;
31
- this.getTransitionState = this.getTransitionState.bind(this);
32
72
  this.timer = this.context.transitionTimer;
33
73
  }
34
74
 
@@ -36,11 +76,11 @@ export default class VictoryTransition extends React.Component {
36
76
  this.setState({ nodesShouldLoad: true }); //eslint-disable-line react/no-did-mount-set-state
37
77
  }
38
78
 
39
- shouldComponentUpdate(nextProps) {
79
+ shouldComponentUpdate(nextProps: VictoryTransitionProps) {
40
80
  if (!isEqual(this.props, nextProps)) {
41
81
  this.timer.bypassAnimation();
42
82
  this.setState(this.getTransitionState(this.props, nextProps), () =>
43
- this.timer.resumeAnimation()
83
+ this.timer.resumeAnimation(),
44
84
  );
45
85
  }
46
86
  return true;
@@ -50,7 +90,10 @@ export default class VictoryTransition extends React.Component {
50
90
  this.timer.stop();
51
91
  }
52
92
 
53
- getTransitionState(props, nextProps) {
93
+ private getTransitionState(
94
+ props: VictoryTransitionProps,
95
+ nextProps: VictoryTransitionProps,
96
+ ): VictoryTransitionState {
54
97
  const { animate } = props;
55
98
  if (!animate) {
56
99
  return {};
@@ -65,7 +108,7 @@ export default class VictoryTransition extends React.Component {
65
108
  nodesWillExit,
66
109
  nodesWillEnter,
67
110
  childrenTransitions,
68
- nodesShouldEnter
111
+ nodesShouldEnter,
69
112
  } = Transitions.getInitialTransitionState(oldChildren, nextChildren);
70
113
  return {
71
114
  nodesWillExit,
@@ -73,12 +116,15 @@ export default class VictoryTransition extends React.Component {
73
116
  childrenTransitions,
74
117
  nodesShouldEnter,
75
118
  oldProps: nodesWillExit ? props : null,
76
- nextProps
119
+ nextProps,
77
120
  };
78
121
  }
79
122
  }
80
123
 
81
- getDomainFromChildren(props, axis) {
124
+ private getDomainFromChildren(
125
+ props: VictoryTransitionProps,
126
+ axis: "x" | "y",
127
+ ) {
82
128
  const getChildDomains = (children) => {
83
129
  return children.reduce((memo, child) => {
84
130
  if (child.type && isFunction(child.type.getDomain)) {
@@ -87,15 +133,17 @@ export default class VictoryTransition extends React.Component {
87
133
  return childDomain ? memo.concat(childDomain) : memo;
88
134
  } else if (child.props && child.props.children) {
89
135
  return memo.concat(
90
- getChildDomains(React.Children.toArray(child.props.children))
136
+ getChildDomains(React.Children.toArray(child.props.children)),
91
137
  );
92
138
  }
93
139
  return memo;
94
140
  }, []);
95
141
  };
96
142
 
97
- const child = React.Children.toArray(props.children)[0];
98
- const childProps = child.props || {};
143
+ const child = React.Children.toArray(
144
+ props.children,
145
+ )[0] as VictoryTransitionChild;
146
+ const childProps: any = child.props || {};
99
147
  const domain = Array.isArray(childProps.domain)
100
148
  ? childProps.domain
101
149
  : childProps.domain && childProps.domain[axis];
@@ -107,7 +155,7 @@ export default class VictoryTransition extends React.Component {
107
155
  ? [0, 1]
108
156
  : [
109
157
  Collection.getMinValue(childDomains),
110
- Collection.getMaxValue(childDomains)
158
+ Collection.getMaxValue(childDomains),
111
159
  ];
112
160
  }
113
161
  }
@@ -121,10 +169,10 @@ export default class VictoryTransition extends React.Component {
121
169
  : this.props;
122
170
  }
123
171
 
124
- pickDomainProps(props) {
125
- const parentState = isObject(props.animate) && props.animate.parentState;
172
+ private pickDomainProps(props: VictoryTransitionProps) {
173
+ const parentState = props.animate?.parentState;
126
174
  if (parentState && parentState.nodesWillExit) {
127
- return this.continous || parentState.continuous
175
+ return this.continuous || parentState.continuous
128
176
  ? parentState.nextProps || this.state.nextProps || props
129
177
  : props;
130
178
  }
@@ -146,24 +194,25 @@ export default class VictoryTransition extends React.Component {
146
194
 
147
195
  render() {
148
196
  const props = this.pickProps();
149
- const getTransitionProps =
150
- isObject(this.props.animate) && this.props.animate.getTransitions
151
- ? this.props.animate.getTransitions
152
- : Transitions.getTransitionPropsFactory(props, this.state, (newState) =>
153
- this.setState(newState)
154
- );
155
- const child = React.Children.toArray(props.children)[0];
197
+ const getTransitionProps = this.props.animate?.getTransitions
198
+ ? this.props.animate.getTransitions
199
+ : Transitions.getTransitionPropsFactory(props, this.state, (newState) =>
200
+ this.setState(newState),
201
+ );
202
+ const child = React.Children.toArray(
203
+ props.children,
204
+ )[0] as VictoryTransitionChild;
156
205
  const transitionProps = getTransitionProps(child);
157
206
  this.transitionProps = transitionProps;
158
207
  const domain = {
159
208
  x: this.getDomainFromChildren(this.pickDomainProps(props), "x"),
160
- y: this.getDomainFromChildren(props, "y")
209
+ y: this.getDomainFromChildren(props, "y"),
161
210
  };
162
211
  const clipWidth = this.getClipWidth(props, child);
163
212
  const combinedProps = defaults(
164
213
  { domain, clipWidth },
165
214
  transitionProps,
166
- child.props
215
+ child.props,
167
216
  );
168
217
  const animationWhitelist = props.animationWhitelist || [];
169
218
  const whitelist = animationWhitelist.concat(["clipWidth"]);
@@ -176,7 +225,7 @@ export default class VictoryTransition extends React.Component {
176
225
  if (child.props.groupComponent) {
177
226
  const groupComponent = this.continuous
178
227
  ? React.cloneElement(child.props.groupComponent, {
179
- clipWidth: newProps.clipWidth || 0
228
+ clipWidth: newProps.clipWidth || 0,
180
229
  })
181
230
  : child.props.groupComponent;
182
231
  return React.cloneElement(
@@ -184,8 +233,8 @@ export default class VictoryTransition extends React.Component {
184
233
  defaults(
185
234
  { animate: null, animating: true, groupComponent },
186
235
  newProps,
187
- combinedProps
188
- )
236
+ combinedProps,
237
+ ),
189
238
  );
190
239
  }
191
240
  return React.cloneElement(
@@ -193,8 +242,8 @@ export default class VictoryTransition extends React.Component {
193
242
  defaults(
194
243
  { animate: null, animating: true },
195
244
  newProps,
196
- combinedProps
197
- )
245
+ combinedProps,
246
+ ),
198
247
  );
199
248
  }}
200
249
  </VictoryAnimation>
@@ -1,53 +1,131 @@
1
1
  /*global window:false */
2
2
  import React from "react";
3
3
  import {
4
- defaults,
5
4
  assign,
6
- keys,
5
+ defaults,
6
+ difference,
7
+ isEmpty,
7
8
  isFunction,
9
+ isNil,
10
+ keys,
8
11
  pick,
9
12
  without,
10
- isEmpty,
11
- isNil,
12
- difference
13
13
  } from "lodash";
14
+ import type { ComponentEvent } from "./events";
14
15
  import * as Events from "./events";
15
16
  import isEqual from "react-fast-compare";
16
- import VictoryTransition from "../victory-transition/victory-transition";
17
+ import { VictoryTransition } from "../victory-transition/victory-transition";
18
+ import { VictoryCommonProps, VictoryDatableProps } from "./common-props";
19
+ import { VictoryLabelableProps } from "../types/prop-types";
20
+
21
+ // DISCLAIMER:
22
+ // This file is not currently tested, and it is first on the list of files
23
+ // to refactor in our current refactoring effort. Please do not make changes
24
+ // to this file without manual testing and/or refactoring and adding tests.
17
25
 
18
26
  const datumHasXandY = (datum) => {
19
27
  return !isNil(datum._x) && !isNil(datum._y);
20
28
  };
21
29
 
22
30
  // used for checking state changes. Expected components can be passed in via options
23
- const defaultComponents = [
31
+ const defaultComponents: NonNullable<MixinOptions["components"]> = [
24
32
  { name: "parent", index: "parent" },
25
33
  { name: "data" },
26
- { name: "labels" }
34
+ { name: "labels" },
27
35
  ];
28
36
 
29
- export default (WrappedComponent, options) => {
30
- return class addEvents extends WrappedComponent {
31
- constructor(props) {
37
+ export type MixinOptions = {
38
+ components?: Array<{
39
+ name: string;
40
+ index?: string;
41
+ }>;
42
+ };
43
+
44
+ export interface EventMixinCommonProps
45
+ extends VictoryCommonProps,
46
+ VictoryDatableProps,
47
+ VictoryLabelableProps {}
48
+
49
+ /**
50
+ * These methods will be implemented by the Mixin,
51
+ * and are accessible to the Wrapped Component.
52
+ *
53
+ * To make your Wrapped Component type-safe, use "interface merging" like so:
54
+ * @example
55
+ * interface MyComponent extends EventsMixinClass<MyProps> {}
56
+ * class MyComponent extends React.Component<MyProps> { ... }
57
+ */
58
+ export interface EventsMixinClass<TProps> {
59
+ renderContainer(
60
+ component: React.ReactElement,
61
+ children: React.ReactElement[],
62
+ ): React.ReactElement;
63
+ cacheValues<TThis>(this: TThis, obj: Partial<TThis>): void;
64
+ getEventState: typeof Events.getEventState;
65
+ renderContinuousData(props: TProps);
66
+ animateComponent(props: TProps, defaultAnimationWhitelist);
67
+ }
68
+
69
+ /**
70
+ * These fields are calculated by the Mixin
71
+ */
72
+ export interface EventMixinCalculatedValues {
73
+ componentEvents: Array<ComponentEvent>;
74
+ getSharedEventState: (key: string, value: string) => unknown;
75
+ baseProps: Record<string, object>;
76
+ dataKeys: string[];
77
+ hasEvents: unknown;
78
+ events: unknown;
79
+ }
80
+
81
+ /**
82
+ * This represents the class itself, including static fields
83
+ */
84
+ export interface WrappedComponentClass<TProps> {
85
+ new (props: TProps): React.Component<TProps>;
86
+ getBaseProps?(props: TProps): EventMixinCalculatedValues["baseProps"];
87
+ role?: string;
88
+ expectedComponents?: string[];
89
+ }
90
+
91
+ export function addEvents<
92
+ TBase extends WrappedComponentClass<TProps>,
93
+ TProps extends EventMixinCommonProps,
94
+ >(WrappedComponent: TBase, options: MixinOptions = {}) {
95
+ // eslint-disable-next-line @typescript-eslint/no-empty-interface
96
+ interface AddEventsMixin extends EventMixinCalculatedValues {}
97
+
98
+ // @ts-expect-error "TS2545: A mixin class must have a constructor with a single rest parameter of type 'any[]'."
99
+ class AddEventsMixin
100
+ extends WrappedComponent
101
+ implements EventsMixinClass<TProps>
102
+ {
103
+ constructor(props: TProps) {
32
104
  super(props);
33
- const getScopedEvents = Events.getScopedEvents.bind(this);
34
- const boundGetEvents = Events.getEvents.bind(this);
35
- this.state = {};
36
- this.getEvents = (p, target, eventKey) => {
37
- return boundGetEvents(p, target, eventKey, getScopedEvents);
38
- };
39
- this.getEventState = Events.getEventState.bind(this);
40
- const calculatedValues = this.getCalculatedValues(props);
41
- this.cacheValues(calculatedValues);
42
- this.externalMutations = this.getExternalMutations(props);
43
- this.calculatedState = this.getStateChanges(props);
44
- this.globalEvents = {};
45
- this.prevGlobalEventKeys = [];
46
- this.boundGlobalEvents = {};
47
- }
48
105
 
49
- shouldComponentUpdate(nextProps) {
106
+ this.cacheValues(this.getCalculatedValues(props));
107
+ }
108
+ state = {};
109
+ getEventState = Events.getEventState.bind(this);
110
+ getScopedEvents = Events.getScopedEvents.bind(this);
111
+ getEvents = (p, target, eventKey) => {
112
+ return Events.getEvents.call(
113
+ this,
114
+ p,
115
+ target,
116
+ eventKey,
117
+ this.getScopedEvents,
118
+ );
119
+ };
120
+ externalMutations = this.getExternalMutations(this.props);
121
+ calculatedState = this.getStateChanges(this.props);
122
+ globalEvents = {};
123
+ prevGlobalEventKeys: string[] = [];
124
+ boundGlobalEvents = {};
125
+
126
+ shouldComponentUpdate(nextProps: TProps) {
50
127
  const externalMutations = this.getExternalMutations(nextProps);
128
+ // @ts-expect-error "Property 'animating' does not exist on type EventMixinCommonProps"
51
129
  const animating = this.props.animating || this.props.animate;
52
130
  const newMutation = !isEqual(externalMutations, this.externalMutations);
53
131
  if (animating || newMutation) {
@@ -80,12 +158,12 @@ export default (WrappedComponent, options) => {
80
158
  const globalEventKeys = keys(this.globalEvents);
81
159
  const removedGlobalEventKeys = difference(
82
160
  this.prevGlobalEventKeys,
83
- globalEventKeys
161
+ globalEventKeys,
84
162
  );
85
163
  removedGlobalEventKeys.forEach((key) => this.removeGlobalListener(key));
86
164
  const addedGlobalEventKeys = difference(
87
165
  globalEventKeys,
88
- this.prevGlobalEventKeys
166
+ this.prevGlobalEventKeys,
89
167
  );
90
168
  addedGlobalEventKeys.forEach((key) => this.addGlobalListener(key));
91
169
  this.prevGlobalEventKeys = globalEventKeys;
@@ -103,14 +181,14 @@ export default (WrappedComponent, options) => {
103
181
  this.boundGlobalEvents[key] = boundListener;
104
182
  window.addEventListener(
105
183
  Events.getGlobalEventNameFromKey(key),
106
- boundListener
184
+ boundListener,
107
185
  );
108
186
  }
109
187
 
110
188
  removeGlobalListener(key) {
111
189
  window.removeEventListener(
112
190
  Events.getGlobalEventNameFromKey(key),
113
- this.boundGlobalEvents[key]
191
+ this.boundGlobalEvents[key],
114
192
  );
115
193
  }
116
194
 
@@ -125,12 +203,11 @@ export default (WrappedComponent, options) => {
125
203
  const result = defaults(
126
204
  {},
127
205
  this.getEventState(key, type),
128
- this.getSharedEventState(key, type)
206
+ this.getSharedEventState(key, type),
129
207
  );
130
208
  return isEmpty(result) ? undefined : result;
131
209
  };
132
210
 
133
- options = options || {};
134
211
  const components = options.components || defaultComponents;
135
212
  const stateChanges = components
136
213
  .map((component) => {
@@ -158,7 +235,7 @@ export default (WrappedComponent, options) => {
158
235
  : memo;
159
236
  return memo;
160
237
  },
161
- []
238
+ [] as Array<() => void>,
162
239
  );
163
240
  const compiledCallbacks = callbacks.length
164
241
  ? () => {
@@ -169,7 +246,7 @@ export default (WrappedComponent, options) => {
169
246
  }
170
247
  }
171
248
 
172
- getCalculatedValues(props) {
249
+ getCalculatedValues(props): EventMixinCalculatedValues {
173
250
  const { sharedEvents } = props;
174
251
  const components = WrappedComponent.expectedComponents;
175
252
  const componentEvents = Events.getComponentEvents(props, components);
@@ -187,18 +264,18 @@ export default (WrappedComponent, options) => {
187
264
  baseProps,
188
265
  dataKeys,
189
266
  hasEvents,
190
- events
267
+ events,
191
268
  };
192
269
  }
193
270
 
194
- getExternalMutations(props) {
271
+ getExternalMutations(props: TProps) {
195
272
  const { sharedEvents, externalEventMutations } = props;
196
273
  return isEmpty(externalEventMutations) || sharedEvents
197
274
  ? undefined
198
275
  : Events.getExternalMutations(
199
276
  externalEventMutations,
200
277
  this.baseProps,
201
- this.state
278
+ this.state,
202
279
  );
203
280
  }
204
281
 
@@ -208,8 +285,9 @@ export default (WrappedComponent, options) => {
208
285
  });
209
286
  }
210
287
 
211
- getBaseProps(props, getSharedEventState) {
212
- getSharedEventState = getSharedEventState || this.getSharedEventState;
288
+ getBaseProps(props, getSharedEventState): this["baseProps"] {
289
+ getSharedEventState =
290
+ getSharedEventState || this.getSharedEventState.bind(this);
213
291
  const sharedParentState = getSharedEventState("parent", "parent");
214
292
  const parentState = this.getEventState("parent", "parent");
215
293
  const baseParentProps = defaults({}, parentState, sharedParentState);
@@ -219,7 +297,7 @@ export default (WrappedComponent, options) => {
219
297
  : {};
220
298
  const modifiedProps = defaults({}, parentProps, props);
221
299
 
222
- return isFunction(WrappedComponent.getBaseProps)
300
+ return typeof WrappedComponent.getBaseProps === "function"
223
301
  ? WrappedComponent.getBaseProps(modifiedProps)
224
302
  : {};
225
303
  }
@@ -254,13 +332,13 @@ export default (WrappedComponent, options) => {
254
332
  this.getSharedEventState(key, type),
255
333
  component.props,
256
334
  baseProps,
257
- { id }
335
+ { id },
258
336
  );
259
337
 
260
338
  const events = defaults(
261
339
  {},
262
340
  Events.getPartialEvents(baseEvents, key, componentProps),
263
- componentProps.events
341
+ componentProps.events,
264
342
  );
265
343
 
266
344
  return assign({}, componentProps, { events });
@@ -283,46 +361,48 @@ export default (WrappedComponent, options) => {
283
361
  return React.cloneElement(component, parentProps, children);
284
362
  }
285
363
 
286
- animateComponent(props, defaultAnimationWhitelist) {
364
+ animateComponent(props: TProps, defaultAnimationWhitelist: string[]) {
287
365
  const animationWhitelist =
288
- props.animate && props.animate.animationWhitelist
289
- ? props.animate.animationWhitelist
290
- : defaultAnimationWhitelist;
366
+ (typeof props.animate === "object" &&
367
+ props.animate?.animationWhitelist) ||
368
+ defaultAnimationWhitelist;
369
+
370
+ const Comp = this.constructor;
291
371
 
292
372
  return (
293
373
  <VictoryTransition
294
374
  animate={props.animate}
295
375
  animationWhitelist={animationWhitelist}
296
376
  >
297
- {React.createElement(this.constructor, props)}
377
+ <Comp {...props} />
298
378
  </VictoryTransition>
299
379
  );
300
380
  }
301
381
 
302
382
  // Used by `VictoryLine` and `VictoryArea`
303
- renderContinuousData(props) {
383
+ renderContinuousData(props: TProps) {
304
384
  const { dataComponent, labelComponent, groupComponent } = props;
305
385
  const dataKeys = without(this.dataKeys, "all");
306
386
  const labelComponents = dataKeys.reduce((memo, key) => {
307
387
  const labelProps = this.getComponentProps(
308
388
  labelComponent,
309
389
  "labels",
310
- key
390
+ key,
311
391
  );
312
392
  if (
313
393
  labelProps &&
314
394
  labelProps.text !== undefined &&
315
395
  labelProps.text !== null
316
396
  ) {
317
- memo = memo.concat(React.cloneElement(labelComponent, labelProps));
397
+ memo = memo.concat(React.cloneElement(labelComponent!, labelProps));
318
398
  }
319
399
  return memo;
320
- }, []);
400
+ }, [] as React.ReactElement[]);
321
401
 
322
402
  const dataProps = this.getComponentProps(dataComponent, "data", "all");
323
403
  const children = [
324
- React.cloneElement(dataComponent, dataProps),
325
- ...labelComponents
404
+ React.cloneElement(dataComponent!, dataProps),
405
+ ...labelComponents,
326
406
  ];
327
407
  return this.renderContainer(groupComponent, children);
328
408
  }
@@ -334,16 +414,16 @@ export default (WrappedComponent, options) => {
334
414
  const dataProps = this.getComponentProps(
335
415
  dataComponent,
336
416
  "data",
337
- index
417
+ index,
338
418
  );
339
419
  if (shouldRenderDatum(dataProps.datum)) {
340
420
  validDataComponents.push(
341
- React.cloneElement(dataComponent, dataProps)
421
+ React.cloneElement(dataComponent, dataProps),
342
422
  );
343
423
  }
344
424
  return validDataComponents;
345
425
  },
346
- []
426
+ [] as React.ReactElement[],
347
427
  );
348
428
 
349
429
  const labelComponents = this.dataKeys
@@ -351,7 +431,7 @@ export default (WrappedComponent, options) => {
351
431
  const labelProps = this.getComponentProps(
352
432
  labelComponent,
353
433
  "labels",
354
- index
434
+ index,
355
435
  );
356
436
  if (labelProps.text !== undefined && labelProps.text !== null) {
357
437
  return React.cloneElement(labelComponent, labelProps);
@@ -363,5 +443,7 @@ export default (WrappedComponent, options) => {
363
443
  const children = [...dataComponents, ...labelComponents];
364
444
  return this.renderContainer(groupComponent, children);
365
445
  }
366
- };
367
- };
446
+ }
447
+
448
+ return AddEventsMixin;
449
+ }