victory-core 36.4.0 → 36.5.1

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 +45735 -12154
  2. package/dist/victory-core.min.js +2 -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 +19 -23
  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 +17 -10
  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 +45 -38
  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 +31 -14
  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 +17 -3
  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 +24 -24
  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 +24 -15
  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 +146 -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 +49 -47
  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 +29 -14
  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 +25 -4
  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 +6 -6
  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} +55 -29
  294. package/src/victory-container/{victory-container.js → victory-container.tsx} +86 -42
  295. package/src/victory-label/{victory-label.js → victory-label.tsx} +112 -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 +121 -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} +143 -64
  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} +26 -8
  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,54 +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 * as UserProps from "../victory-util/user-props";
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.
18
25
 
19
26
  const datumHasXandY = (datum) => {
20
27
  return !isNil(datum._x) && !isNil(datum._y);
21
28
  };
22
29
 
23
30
  // used for checking state changes. Expected components can be passed in via options
24
- const defaultComponents = [
31
+ const defaultComponents: NonNullable<MixinOptions["components"]> = [
25
32
  { name: "parent", index: "parent" },
26
33
  { name: "data" },
27
- { name: "labels" }
34
+ { name: "labels" },
28
35
  ];
29
36
 
30
- export default (WrappedComponent, options) => {
31
- return class addEvents extends WrappedComponent {
32
- 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) {
33
104
  super(props);
34
- const getScopedEvents = Events.getScopedEvents.bind(this);
35
- const boundGetEvents = Events.getEvents.bind(this);
36
- this.state = {};
37
- this.getEvents = (p, target, eventKey) => {
38
- return boundGetEvents(p, target, eventKey, getScopedEvents);
39
- };
40
- this.getEventState = Events.getEventState.bind(this);
41
- const calculatedValues = this.getCalculatedValues(props);
42
- this.cacheValues(calculatedValues);
43
- this.externalMutations = this.getExternalMutations(props);
44
- this.calculatedState = this.getStateChanges(props);
45
- this.globalEvents = {};
46
- this.prevGlobalEventKeys = [];
47
- this.boundGlobalEvents = {};
48
- }
49
105
 
50
- 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) {
51
127
  const externalMutations = this.getExternalMutations(nextProps);
128
+ // @ts-expect-error "Property 'animating' does not exist on type EventMixinCommonProps"
52
129
  const animating = this.props.animating || this.props.animate;
53
130
  const newMutation = !isEqual(externalMutations, this.externalMutations);
54
131
  if (animating || newMutation) {
@@ -81,12 +158,12 @@ export default (WrappedComponent, options) => {
81
158
  const globalEventKeys = keys(this.globalEvents);
82
159
  const removedGlobalEventKeys = difference(
83
160
  this.prevGlobalEventKeys,
84
- globalEventKeys
161
+ globalEventKeys,
85
162
  );
86
163
  removedGlobalEventKeys.forEach((key) => this.removeGlobalListener(key));
87
164
  const addedGlobalEventKeys = difference(
88
165
  globalEventKeys,
89
- this.prevGlobalEventKeys
166
+ this.prevGlobalEventKeys,
90
167
  );
91
168
  addedGlobalEventKeys.forEach((key) => this.addGlobalListener(key));
92
169
  this.prevGlobalEventKeys = globalEventKeys;
@@ -104,14 +181,14 @@ export default (WrappedComponent, options) => {
104
181
  this.boundGlobalEvents[key] = boundListener;
105
182
  window.addEventListener(
106
183
  Events.getGlobalEventNameFromKey(key),
107
- boundListener
184
+ boundListener,
108
185
  );
109
186
  }
110
187
 
111
188
  removeGlobalListener(key) {
112
189
  window.removeEventListener(
113
190
  Events.getGlobalEventNameFromKey(key),
114
- this.boundGlobalEvents[key]
191
+ this.boundGlobalEvents[key],
115
192
  );
116
193
  }
117
194
 
@@ -126,12 +203,11 @@ export default (WrappedComponent, options) => {
126
203
  const result = defaults(
127
204
  {},
128
205
  this.getEventState(key, type),
129
- this.getSharedEventState(key, type)
206
+ this.getSharedEventState(key, type),
130
207
  );
131
208
  return isEmpty(result) ? undefined : result;
132
209
  };
133
210
 
134
- options = options || {};
135
211
  const components = options.components || defaultComponents;
136
212
  const stateChanges = components
137
213
  .map((component) => {
@@ -159,7 +235,7 @@ export default (WrappedComponent, options) => {
159
235
  : memo;
160
236
  return memo;
161
237
  },
162
- []
238
+ [] as Array<() => void>,
163
239
  );
164
240
  const compiledCallbacks = callbacks.length
165
241
  ? () => {
@@ -170,7 +246,7 @@ export default (WrappedComponent, options) => {
170
246
  }
171
247
  }
172
248
 
173
- getCalculatedValues(props) {
249
+ getCalculatedValues(props): EventMixinCalculatedValues {
174
250
  const { sharedEvents } = props;
175
251
  const components = WrappedComponent.expectedComponents;
176
252
  const componentEvents = Events.getComponentEvents(props, components);
@@ -188,18 +264,18 @@ export default (WrappedComponent, options) => {
188
264
  baseProps,
189
265
  dataKeys,
190
266
  hasEvents,
191
- events
267
+ events,
192
268
  };
193
269
  }
194
270
 
195
- getExternalMutations(props) {
271
+ getExternalMutations(props: TProps) {
196
272
  const { sharedEvents, externalEventMutations } = props;
197
273
  return isEmpty(externalEventMutations) || sharedEvents
198
274
  ? undefined
199
275
  : Events.getExternalMutations(
200
276
  externalEventMutations,
201
277
  this.baseProps,
202
- this.state
278
+ this.state,
203
279
  );
204
280
  }
205
281
 
@@ -209,8 +285,9 @@ export default (WrappedComponent, options) => {
209
285
  });
210
286
  }
211
287
 
212
- getBaseProps(props, getSharedEventState) {
213
- getSharedEventState = getSharedEventState || this.getSharedEventState;
288
+ getBaseProps(props, getSharedEventState): this["baseProps"] {
289
+ getSharedEventState =
290
+ getSharedEventState || this.getSharedEventState.bind(this);
214
291
  const sharedParentState = getSharedEventState("parent", "parent");
215
292
  const parentState = this.getEventState("parent", "parent");
216
293
  const baseParentProps = defaults({}, parentState, sharedParentState);
@@ -220,7 +297,7 @@ export default (WrappedComponent, options) => {
220
297
  : {};
221
298
  const modifiedProps = defaults({}, parentProps, props);
222
299
 
223
- return isFunction(WrappedComponent.getBaseProps)
300
+ return typeof WrappedComponent.getBaseProps === "function"
224
301
  ? WrappedComponent.getBaseProps(modifiedProps)
225
302
  : {};
226
303
  }
@@ -255,13 +332,13 @@ export default (WrappedComponent, options) => {
255
332
  this.getSharedEventState(key, type),
256
333
  component.props,
257
334
  baseProps,
258
- { id }
335
+ { id },
259
336
  );
260
337
 
261
338
  const events = defaults(
262
339
  {},
263
340
  Events.getPartialEvents(baseEvents, key, componentProps),
264
- componentProps.events
341
+ componentProps.events,
265
342
  );
266
343
 
267
344
  return assign({}, componentProps, { events });
@@ -284,68 +361,69 @@ export default (WrappedComponent, options) => {
284
361
  return React.cloneElement(component, parentProps, children);
285
362
  }
286
363
 
287
- animateComponent(props, defaultAnimationWhitelist) {
364
+ animateComponent(props: TProps, defaultAnimationWhitelist: string[]) {
288
365
  const animationWhitelist =
289
- props.animate && props.animate.animationWhitelist
290
- ? props.animate.animationWhitelist
291
- : defaultAnimationWhitelist;
366
+ (typeof props.animate === "object" &&
367
+ props.animate?.animationWhitelist) ||
368
+ defaultAnimationWhitelist;
369
+
370
+ const Comp = this.constructor;
292
371
 
293
372
  return (
294
373
  <VictoryTransition
295
374
  animate={props.animate}
296
375
  animationWhitelist={animationWhitelist}
297
376
  >
298
- {React.createElement(this.constructor, props)}
377
+ <Comp {...props} />
299
378
  </VictoryTransition>
300
379
  );
301
380
  }
302
381
 
303
382
  // Used by `VictoryLine` and `VictoryArea`
304
- renderContinuousData(props) {
383
+ renderContinuousData(props: TProps) {
305
384
  const { dataComponent, labelComponent, groupComponent } = props;
306
385
  const dataKeys = without(this.dataKeys, "all");
307
386
  const labelComponents = dataKeys.reduce((memo, key) => {
308
387
  const labelProps = this.getComponentProps(
309
388
  labelComponent,
310
389
  "labels",
311
- key
390
+ key,
312
391
  );
313
392
  if (
314
393
  labelProps &&
315
394
  labelProps.text !== undefined &&
316
395
  labelProps.text !== null
317
396
  ) {
318
- memo = memo.concat(React.cloneElement(labelComponent, labelProps));
397
+ memo = memo.concat(React.cloneElement(labelComponent!, labelProps));
319
398
  }
320
399
  return memo;
321
- }, []);
400
+ }, [] as React.ReactElement[]);
322
401
 
323
402
  const dataProps = this.getComponentProps(dataComponent, "data", "all");
324
403
  const children = [
325
- React.cloneElement(dataComponent, dataProps),
326
- ...labelComponents
404
+ React.cloneElement(dataComponent!, dataProps),
405
+ ...labelComponents,
327
406
  ];
328
407
  return this.renderContainer(groupComponent, children);
329
408
  }
330
409
 
331
410
  renderData(props, shouldRenderDatum = datumHasXandY) {
332
411
  const { dataComponent, labelComponent, groupComponent } = props;
333
- const userProps = UserProps.getSafeUserProps(props);
334
412
  const dataComponents = this.dataKeys.reduce(
335
413
  (validDataComponents, _dataKey, index) => {
336
414
  const dataProps = this.getComponentProps(
337
415
  dataComponent,
338
416
  "data",
339
- index
417
+ index,
340
418
  );
341
419
  if (shouldRenderDatum(dataProps.datum)) {
342
420
  validDataComponents.push(
343
- React.cloneElement(dataComponent, dataProps)
421
+ React.cloneElement(dataComponent, dataProps),
344
422
  );
345
423
  }
346
424
  return validDataComponents;
347
425
  },
348
- []
426
+ [] as React.ReactElement[],
349
427
  );
350
428
 
351
429
  const labelComponents = this.dataKeys
@@ -353,7 +431,7 @@ export default (WrappedComponent, options) => {
353
431
  const labelProps = this.getComponentProps(
354
432
  labelComponent,
355
433
  "labels",
356
- index
434
+ index,
357
435
  );
358
436
  if (labelProps.text !== undefined && labelProps.text !== null) {
359
437
  return React.cloneElement(labelComponent, labelProps);
@@ -363,8 +441,9 @@ export default (WrappedComponent, options) => {
363
441
  .filter(Boolean);
364
442
 
365
443
  const children = [...dataComponents, ...labelComponents];
366
- const group = React.cloneElement(groupComponent, userProps, children);
367
- return this.renderContainer(group, children);
444
+ return this.renderContainer(groupComponent, children);
368
445
  }
369
- };
370
- };
446
+ }
447
+
448
+ return AddEventsMixin;
449
+ }