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,4 +1,3 @@
1
- /* eslint-disable func-style */
2
1
  /* eslint-disable no-use-before-define */
3
2
  import React from "react";
4
3
  import {
@@ -7,7 +6,7 @@ import {
7
6
  sortedUniq,
8
7
  isFunction,
9
8
  includes,
10
- isDate
9
+ isDate,
11
10
  } from "lodash";
12
11
  import * as Data from "./data";
13
12
  import * as Scale from "./scale";
@@ -48,11 +47,12 @@ function getDomainPadding(props, axis) {
48
47
  : formatPadding(props.domainPadding);
49
48
  }
50
49
 
51
- function getFlatData(dataset, axis) {
52
- return flatten(dataset).map((datum) => {
53
- return datum[`_${axis}`] && datum[`_${axis}`][1] !== undefined
54
- ? datum[`_${axis}`][1]
55
- : datum[`_${axis}`];
50
+ function getFlatData(dataset, axis: "x" | "y") {
51
+ const axisKey = `_${axis}`;
52
+ return flatten(dataset).map((datum: any) => {
53
+ return datum[axisKey] && datum[axisKey][1] !== undefined
54
+ ? datum[axisKey][1]
55
+ : datum[axisKey];
56
56
  });
57
57
  }
58
58
 
@@ -61,7 +61,7 @@ function getExtremeFromData(dataset, axis, type = "min") {
61
61
  type === "max" ? Math.max(...arr) : Math.min(...arr);
62
62
  const initialValue = type === "max" ? -Infinity : Infinity;
63
63
  let containsDate = false;
64
- const result = flatten(dataset).reduce((memo, datum) => {
64
+ const result = flatten(dataset).reduce((memo: number, datum: any) => {
65
65
  const current0 =
66
66
  datum[`_${axis}0`] !== undefined ? datum[`_${axis}0`] : datum[`_${axis}`];
67
67
  const current1 =
@@ -95,23 +95,23 @@ function padDomain(domain, props, axis) {
95
95
 
96
96
  const paddedRangeExtent = Math.max(
97
97
  rangeExtent - padding.left - padding.right,
98
- 1
98
+ 1,
99
99
  );
100
100
  const paddedDomainExtent =
101
101
  (Math.abs(max.valueOf() - min.valueOf()) / paddedRangeExtent) * rangeExtent;
102
102
 
103
103
  const simplePadding = {
104
104
  left: (paddedDomainExtent * padding.left) / rangeExtent,
105
- right: (paddedDomainExtent * padding.right) / rangeExtent
105
+ right: (paddedDomainExtent * padding.right) / rangeExtent,
106
106
  };
107
107
 
108
108
  let paddedDomain = {
109
109
  min: min.valueOf() - simplePadding.left,
110
- max: max.valueOf() + simplePadding.right
110
+ max: max.valueOf() + simplePadding.right,
111
111
  };
112
112
 
113
113
  const singleQuadrantDomainPadding = isPlainObject(
114
- props.singleQuadrantDomainPadding
114
+ props.singleQuadrantDomainPadding,
115
115
  )
116
116
  ? props.singleQuadrantDomainPadding[axis]
117
117
  : props.singleQuadrantDomainPadding;
@@ -129,14 +129,16 @@ function padDomain(domain, props, axis) {
129
129
  if (addsQuadrants && singleQuadrantDomainPadding !== false) {
130
130
  // Naive initial padding calculation
131
131
  const initialPadding = {
132
+ // @ts-expect-error `max/min` might be dates
132
133
  left: (Math.abs(max - min) * padding.left) / rangeExtent,
133
- right: (Math.abs(max - min) * padding.right) / rangeExtent
134
+ // @ts-expect-error `max/min` might be dates
135
+ right: (Math.abs(max - min) * padding.right) / rangeExtent,
134
136
  };
135
137
 
136
138
  // Adjust the domain by the initial padding
137
139
  const adjustedDomain = {
138
140
  min: adjust(min.valueOf() - initialPadding.left, "min"),
139
- max: adjust(max.valueOf() + initialPadding.right, "max")
141
+ max: adjust(max.valueOf() + initialPadding.right, "max"),
140
142
  };
141
143
 
142
144
  // re-calculate padding, taking the adjusted domain into account
@@ -146,20 +148,20 @@ function padDomain(domain, props, axis) {
146
148
  rangeExtent,
147
149
  right:
148
150
  (Math.abs(adjustedDomain.max - adjustedDomain.min) * padding.right) /
149
- rangeExtent
151
+ rangeExtent,
150
152
  };
151
153
 
152
154
  // Adjust the domain by the final padding
153
155
  paddedDomain = {
154
156
  min: adjust(min.valueOf() - finalPadding.left, "min"),
155
- max: adjust(max.valueOf() + finalPadding.right, "max")
157
+ max: adjust(max.valueOf() + finalPadding.right, "max"),
156
158
  };
157
159
  }
158
160
 
159
161
  // default to minDomain / maxDomain if they exist
160
162
  const finalDomain = {
161
163
  min: minDomain !== undefined ? minDomain : paddedDomain.min,
162
- max: maxDomain !== undefined ? maxDomain : paddedDomain.max
164
+ max: maxDomain !== undefined ? maxDomain : paddedDomain.max,
163
165
  };
164
166
 
165
167
  return min instanceof Date || max instanceof Date
@@ -178,8 +180,8 @@ function padDomain(domain, props, axis) {
178
180
  * @returns {Function} a function that takes props and axis and returns a formatted domain
179
181
  */
180
182
  export function createDomainFunction(
181
- getDomainFromDataFunction,
182
- formatDomainFunction
183
+ getDomainFromDataFunction?,
184
+ formatDomainFunction?,
183
185
  ) {
184
186
  getDomainFromDataFunction = isFunction(getDomainFromDataFunction)
185
187
  ? getDomainFromDataFunction
@@ -228,7 +230,7 @@ export function getDomain(props, axis) {
228
230
  * @param {Array} categories: an array of categories corresponding to a given axis
229
231
  * @returns {Array|undefined} returns a domain from categories or undefined
230
232
  */
231
- export function getDomainFromCategories(props, axis, categories) {
233
+ export function getDomainFromCategories(props, axis, categories?) {
232
234
  categories = categories || Data.getCategories(props, axis);
233
235
  const { polar, startAngle = 0, endAngle = 360 } = props;
234
236
  if (!categories) {
@@ -355,7 +357,7 @@ export function getDomainWithZero(props, axis) {
355
357
  const dataset = Data.getData(props);
356
358
  const y0Min = dataset.reduce(
357
359
  (min, datum) => (datum._y0 < min ? datum._y0 : min),
358
- Infinity
360
+ Infinity,
359
361
  );
360
362
 
361
363
  const ensureZero = (domain) => {
@@ -388,7 +390,7 @@ export function getDomainWithZero(props, axis) {
388
390
 
389
391
  return createDomainFunction(getDomainFunction, formatDomainFunction)(
390
392
  props,
391
- axis
393
+ axis,
392
394
  );
393
395
  }
394
396
 
@@ -429,7 +431,7 @@ export function getMinFromProps(props, axis) {
429
431
  * for a given dimension i.e. only x values.
430
432
  * @returns {Array} the symmetric domain
431
433
  */
432
- export function getSymmetricDomain(domain, values) {
434
+ export function getSymmetricDomain(domain, values: number[]) {
433
435
  const processedData = sortedUniq(values.sort((a, b) => a - b));
434
436
  const step = processedData[1] - processedData[0];
435
437
  return [domain[0], domain[1] + step];
@@ -462,7 +464,7 @@ export function isDomainComponent(component) {
462
464
  "pie",
463
465
  "scatter",
464
466
  "stack",
465
- "voronoi"
467
+ "voronoi",
466
468
  ];
467
469
  return includes(whitelist, role);
468
470
  }
@@ -1,4 +1,4 @@
1
- /* eslint-disable func-style,no-use-before-define */
1
+ /* eslint-disable no-use-before-define */
2
2
  import {
3
3
  assign,
4
4
  isEmpty,
@@ -8,21 +8,52 @@ import {
8
8
  omitBy,
9
9
  uniq,
10
10
  includes,
11
- keys
11
+ keys,
12
12
  } from "lodash";
13
+ import type { EventMixinCalculatedValues } from "./add-events";
13
14
 
14
15
  const GLOBAL_EVENT_REGEX = /^onGlobal(.*)$/;
15
16
 
17
+ type ComponentEventKey = string | number;
18
+ export interface ComponentEvent {
19
+ target?: "parent" | string;
20
+ eventKey?: ComponentEventKey | ComponentEventKey[];
21
+ eventHandlers: ComponentEventHandlers;
22
+ }
23
+ export type ComponentEventName = `on${Capitalize<string>}`;
24
+ export interface ComponentEventHandlers {
25
+ [k: ComponentEventName]: ComponentEventHandler;
26
+ }
27
+ export type ComponentEventHandler = (
28
+ evt: React.SyntheticEvent,
29
+ childProps: unknown,
30
+ eventKey: ComponentEventKey,
31
+ eventName: ComponentEventName,
32
+ ) => UpdatedProps;
33
+ export type UpdatedProps = any;
34
+
35
+ interface ComponentWithEvents extends EventMixinCalculatedValues {
36
+ state;
37
+ setState;
38
+ }
39
+
16
40
  /* Returns all own and shared events that should be attached to a single target element,
17
41
  * i.e. an individual bar specified by target: "data", eventKey: [index].
18
42
  * Returned events are scoped to the appropriate state. Either that of the component itself
19
43
  * (i.e. VictoryBar) in the case of own events, or that of the parent component
20
44
  * (i.e. VictoryChart) in the case of shared events
21
45
  */
22
- // eslint-disable-next-line max-params,no-shadow
23
- export function getEvents(props, target, eventKey, getScopedEvents) {
46
+ // eslint-disable-next-line max-params
47
+ export function getEvents(
48
+ this: ComponentWithEvents,
49
+ props,
50
+ target,
51
+ eventKey,
52
+ // eslint-disable-next-line no-shadow
53
+ getScopedEvents,
54
+ ) {
24
55
  // Returns all events that apply to a particular target element
25
- const getEventsByTarget = (events) => {
56
+ const getEventsByTarget = (events: Array<ComponentEvent>) => {
26
57
  const getSelectedEvents = () => {
27
58
  const targetEvents = events.reduce((memo, event) => {
28
59
  if (event.target !== undefined) {
@@ -32,7 +63,7 @@ export function getEvents(props, target, eventKey, getScopedEvents) {
32
63
  return matchesTarget ? memo.concat(event) : memo;
33
64
  }
34
65
  return memo.concat(event);
35
- }, []);
66
+ }, [] as ComponentEvent[]);
36
67
 
37
68
  if (eventKey !== undefined && target !== "parent") {
38
69
  return targetEvents.filter((obj) => {
@@ -51,7 +82,7 @@ export function getEvents(props, target, eventKey, getScopedEvents) {
51
82
  Array.isArray(selectedEvents) &&
52
83
  selectedEvents.reduce((memo, event) => {
53
84
  return event ? assign(memo, event.eventHandlers) : memo;
54
- }, {})
85
+ }, {} as ComponentEvent["eventHandlers"])
55
86
  );
56
87
  };
57
88
 
@@ -92,7 +123,13 @@ export function getEvents(props, target, eventKey, getScopedEvents) {
92
123
  * element.
93
124
  */
94
125
  // eslint-disable-next-line max-params
95
- export function getScopedEvents(events, namespace, childType, baseProps) {
126
+ export function getScopedEvents(
127
+ this: ComponentWithEvents,
128
+ events,
129
+ namespace,
130
+ childType,
131
+ baseProps,
132
+ ) {
96
133
  if (isEmpty(events)) {
97
134
  return {};
98
135
  }
@@ -149,15 +186,15 @@ export function getScopedEvents(events, namespace, childType, baseProps) {
149
186
  }
150
187
  const mutationTargetProps = getTargetProps(
151
188
  { childName, key, target },
152
- "props"
189
+ "props",
153
190
  );
154
191
  const mutationTargetState = getTargetProps(
155
192
  { childName, key, target },
156
- "state"
193
+ "state",
157
194
  );
158
195
  const mutatedProps = eventReturn.mutation(
159
196
  assign({}, mutationTargetProps, mutationTargetState),
160
- baseProps
197
+ baseProps,
161
198
  );
162
199
  const childState = baseState[childName] || {};
163
200
 
@@ -175,7 +212,7 @@ export function getScopedEvents(events, namespace, childType, baseProps) {
175
212
  return target === "parent"
176
213
  ? assign(state, { [key]: assign(state[key], mutatedProps) })
177
214
  : assign(state, {
178
- [key]: assign(state[key], { [target]: mutatedProps })
215
+ [key]: assign(state[key], { [target]: mutatedProps }),
179
216
  });
180
217
  };
181
218
 
@@ -249,24 +286,38 @@ export function getScopedEvents(events, namespace, childType, baseProps) {
249
286
  }, {});
250
287
  }
251
288
 
252
- /* Returns a partially applied event handler for a specific target element
289
+ /*
290
+ * Returns a partially applied event handler for a specific target element
253
291
  * This allows event handlers to have access to props controlling each element
254
292
  */
255
- export function getPartialEvents(events, eventKey, childProps) {
256
- return events
257
- ? keys(events).reduce((memo, eventName) => {
258
- const appliedEvent = (evt) =>
259
- events[eventName](evt, childProps, eventKey, eventName);
260
- memo[eventName] = appliedEvent;
261
- return memo;
262
- }, {})
263
- : {};
293
+ export function getPartialEvents(
294
+ events: ComponentEventHandlers,
295
+ eventKey: ComponentEventKey,
296
+ childProps: unknown,
297
+ ): PartialEvents {
298
+ if (!events) return {};
299
+
300
+ return keys(events).reduce((memo, eventName) => {
301
+ const appliedEvent = (evt) =>
302
+ events[eventName](evt, childProps, eventKey, eventName);
303
+ memo[eventName] = appliedEvent;
304
+ return memo;
305
+ }, {} as PartialEvents);
306
+ }
307
+ export interface PartialEvents {
308
+ [eventName: ComponentEventName]: (evt: React.SyntheticEvent) => UpdatedProps;
264
309
  }
265
310
 
266
311
  /* Returns the property of the state object corresponding to event changes for
267
312
  * a particular element
268
313
  */
269
- export function getEventState(eventKey, namespace, childType) {
314
+ // eslint-disable-next-line max-params
315
+ export function getEventState(
316
+ this: ComponentWithEvents,
317
+ eventKey: ComponentEventKey,
318
+ namespace: string,
319
+ childType?: string,
320
+ ) {
270
321
  // Mandatory usage: `getEventState.bind(this)`
271
322
  // eslint-disable-next-line no-invalid-this
272
323
  const state = this.state || {};
@@ -297,7 +348,7 @@ export function getExternalMutationsWithChildren(
297
348
  mutations,
298
349
  baseProps,
299
350
  baseState,
300
- childNames
351
+ childNames,
301
352
  ) {
302
353
  baseProps = baseProps || {};
303
354
  baseState = baseState || {};
@@ -308,7 +359,7 @@ export function getExternalMutationsWithChildren(
308
359
  mutations,
309
360
  baseProps[childName],
310
361
  baseState[childName],
311
- childName
362
+ childName,
312
363
  );
313
364
  memo[childName] = mutation ? mutation : childState;
314
365
  return pickBy(memo, (v) => !isEmpty(v));
@@ -330,7 +381,7 @@ export function getExternalMutations(
330
381
  mutations,
331
382
  baseProps,
332
383
  baseState,
333
- childName
384
+ childName?,
334
385
  ) {
335
386
  baseProps = baseProps || {};
336
387
  baseState = baseState || {};
@@ -345,7 +396,7 @@ export function getExternalMutations(
345
396
  mutations,
346
397
  keyProps,
347
398
  keyState,
348
- identifier
399
+ identifier,
349
400
  );
350
401
  memo[eventKey] =
351
402
  mutation !== undefined ? assign({}, keyState, mutation) : keyState;
@@ -359,7 +410,7 @@ export function getExternalMutations(
359
410
  mutations,
360
411
  keyProps[target],
361
412
  keyState[target],
362
- identifier
413
+ identifier,
363
414
  );
364
415
  m[target] =
365
416
  mutation !== undefined
@@ -387,7 +438,7 @@ export function getExternalMutation(
387
438
  mutations,
388
439
  baseProps,
389
440
  baseState,
390
- identifier
441
+ identifier,
391
442
  ) {
392
443
  const filterMutations = (mutation, type) => {
393
444
  if (typeof mutation[type] === "string") {
@@ -408,13 +459,13 @@ export function getExternalMutation(
408
459
  }
409
460
  // find any mutation objects that match the target
410
461
  const targetMutations = scopedMutations.filter((m) =>
411
- filterMutations(m, "target")
462
+ filterMutations(m, "target"),
412
463
  );
413
464
  if (isEmpty(targetMutations)) {
414
465
  return undefined;
415
466
  }
416
467
  const keyMutations = targetMutations.filter((m) =>
417
- filterMutations(m, "eventKey")
468
+ filterMutations(m, "eventKey"),
418
469
  );
419
470
  if (isEmpty(keyMutations)) {
420
471
  return undefined;
@@ -444,7 +495,7 @@ export function getComponentEvents(props, components) {
444
495
  ? memo.concat(...componentEvents)
445
496
  : memo;
446
497
  return memo;
447
- }, []);
498
+ }, [] as ComponentEvent[]);
448
499
  return events && events.length ? events : undefined;
449
500
  }
450
501
 
@@ -1,4 +1,3 @@
1
- /* eslint-disable func-style */
2
1
  /* eslint-disable no-use-before-define */
3
2
  import React from "react";
4
3
  import { defaults, isFunction, property, pick, assign, keys } from "lodash";
@@ -28,15 +27,19 @@ function getPolarRange(props, axis) {
28
27
 
29
28
  /**
30
29
  * creates an object with some keys excluded
31
- * replacement for lodash.omit for performance. does not mimick the entire lodash.omit api
30
+ * replacement for lodash.omit for performance. does not mimic the entire lodash.omit api
32
31
  * @param {Object} originalObject: created object will be based on this object
33
32
  * @param {Array<String>} ks: an array of keys to omit from the new object
34
33
  * @returns {Object} new object with same properties as originalObject
35
34
  */
36
- export function omit(originalObject, ks = []) {
35
+ export function omit<T, Keys extends keyof T>(
36
+ originalObject: T,
37
+ ks: Array<Keys> = [],
38
+ ): Omit<T, Keys> {
37
39
  // code based on babel's _objectWithoutProperties
38
- const newObject = {};
40
+ const newObject = {} as T;
39
41
  for (const key in originalObject) {
42
+ // @ts-expect-error String is not assignable to Key
40
43
  if (ks.indexOf(key) >= 0) {
41
44
  continue;
42
45
  }
@@ -57,7 +60,7 @@ export function getPoint(datum) {
57
60
  x: exists(_voronoiX) ? _voronoiX : defaultX,
58
61
  x0: exists(_x0) ? _x0 : _x,
59
62
  y: exists(_voronoiY) ? _voronoiY : defaultY,
60
- y0: exists(_y0) ? _y0 : _y
63
+ y0: exists(_y0) ? _y0 : _y,
61
64
  };
62
65
  return defaults({}, point, datum);
63
66
  }
@@ -74,7 +77,7 @@ export function scalePoint(props, datum) {
74
77
  x: polar ? y * Math.cos(x) + origin.x : x,
75
78
  x0: polar ? y0 * Math.cos(x0) + origin.x : x0,
76
79
  y: polar ? -y * Math.sin(x) + origin.y : y,
77
- y0: polar ? -y0 * Math.sin(x0) + origin.x : y0
80
+ y0: polar ? -y0 * Math.sin(x0) + origin.x : y0,
78
81
  };
79
82
  }
80
83
 
@@ -86,7 +89,7 @@ export function getPadding(props, name = "padding") {
86
89
  top: paddingObj.top || paddingVal,
87
90
  bottom: paddingObj.bottom || paddingVal,
88
91
  left: paddingObj.left || paddingVal,
89
- right: paddingObj.right || paddingVal
92
+ right: paddingObj.right || paddingVal,
90
93
  };
91
94
  }
92
95
 
@@ -119,7 +122,7 @@ export function getStyles(style, defaultStyles) {
119
122
  return {
120
123
  parent: defaults({}, parent, defaultParent, { width, height }),
121
124
  labels: defaults({}, labels, defaultLabels),
122
- data: defaults({}, data, defaultData)
125
+ data: defaults({}, data, defaultData),
123
126
  };
124
127
  }
125
128
 
@@ -162,7 +165,7 @@ export function getPolarOrigin(props) {
162
165
  const offsetHeight = height / 2 + top - bottom;
163
166
  return {
164
167
  x: offsetWidth + radius > width ? radius + left - right : offsetWidth,
165
- y: offsetHeight + radius > height ? radius + top - bottom : offsetHeight
168
+ y: offsetHeight + radius > height ? radius + top - bottom : offsetHeight,
166
169
  };
167
170
  }
168
171
 
@@ -190,7 +193,7 @@ export function createAccessor(key) {
190
193
  return property(key);
191
194
  }
192
195
 
193
- export function modifyProps(props, fallbackProps, role) {
196
+ export function modifyProps(props, fallbackProps?, role?) {
194
197
  const theme = props.theme && props.theme[role] ? props.theme[role] : {};
195
198
  const themeProps = omit(theme, ["style"]);
196
199
  const horizontal = isHorizontal(props);
@@ -219,13 +222,24 @@ export function getCurrentAxis(axis, horizontal) {
219
222
  * @returns {Array} returns an array of results from calling the iteratee on all nested children
220
223
  */
221
224
  /* eslint-disable max-params */
222
- export function reduceChildren(
223
- children,
224
- iteratee,
225
+ export function reduceChildren<
226
+ TChildren extends React.ReactNode,
227
+ TItem,
228
+ TResult = TItem[],
229
+ >(
230
+ children: TChildren[],
231
+ iteratee: (
232
+ child: TChildren,
233
+ childName: string,
234
+ parent?: TChildren,
235
+ ) => TItem | null,
225
236
  parentProps = {},
226
- initialMemo = [],
227
- combine = (memo, item) => memo.concat(item)
228
- ) {
237
+ // @ts-expect-error These defaults are hard to type
238
+ initialMemo: TResult = [],
239
+ combine: (memo: TResult, item: TItem) => TResult = (memo, item) =>
240
+ // @ts-expect-error These defaults are hard to type
241
+ memo.concat(item),
242
+ ): TResult {
229
243
  const sharedProps = [
230
244
  "data",
231
245
  "domain",
@@ -235,9 +249,9 @@ export function reduceChildren(
235
249
  "endAngle",
236
250
  "minDomain",
237
251
  "maxDomain",
238
- "horizontal"
252
+ "horizontal",
239
253
  ];
240
- const traverseChildren = (childArray, names, parent) => {
254
+ const traverseChildren = (childArray, names, parent?) => {
241
255
  return childArray.reduce((memo, child, index) => {
242
256
  const childRole = child.type && child.type.role;
243
257
  const childName = child.props.name || `${childRole}-${names[index]}`;
@@ -245,7 +259,7 @@ export function reduceChildren(
245
259
  const childProps = assign(
246
260
  {},
247
261
  child.props,
248
- pick(parentProps, sharedProps)
262
+ pick(parentProps, sharedProps),
249
263
  );
250
264
 
251
265
  const nestedChildren =
@@ -253,11 +267,15 @@ export function reduceChildren(
253
267
  child.type.role === "stack" &&
254
268
  isFunction(child.type.getChildren)
255
269
  ? child.type.getChildren(childProps)
256
- : React.Children.toArray(child.props.children).map((c) => {
270
+ : (
271
+ React.Children.toArray(
272
+ child.props.children,
273
+ ) as Array<React.ReactElement>
274
+ ).map((c) => {
257
275
  const nestedChildProps = assign(
258
276
  {},
259
277
  c.props,
260
- pick(childProps, sharedProps)
278
+ pick(childProps, sharedProps),
261
279
  );
262
280
  return React.cloneElement(c, nestedChildProps);
263
281
  });
@@ -266,7 +284,7 @@ export function reduceChildren(
266
284
  const nestedResults = traverseChildren(
267
285
  nestedChildren,
268
286
  childNames,
269
- child
287
+ child,
270
288
  );
271
289
  memo = combine(memo, nestedResults);
272
290
  } else {
@@ -285,7 +303,7 @@ export function reduceChildren(
285
303
  /**
286
304
  * @param {Object} props: the props object
287
305
  * @returns {Boolean} returns true if the props object contains `horizontal: true` of if any
288
- * children or nested children are hoizontal
306
+ * children or nested children are horizontal
289
307
  */
290
308
  export function isHorizontal(props) {
291
309
  if (props.horizontal !== undefined || !props.children) {
File without changes
@@ -7,7 +7,7 @@ import * as Transitions from "../transitions";
7
7
  const INITIAL_STATE = {
8
8
  nodesShouldLoad: false,
9
9
  nodesDoneLoad: false,
10
- animating: true
10
+ animating: true,
11
11
  };
12
12
 
13
13
  export const useAnimationState = (initialState = INITIAL_STATE) => {
@@ -18,7 +18,7 @@ export const useAnimationState = (initialState = INITIAL_STATE) => {
18
18
  (newState) => {
19
19
  _setState((oldState) => ({ ...oldState, ...newState }));
20
20
  },
21
- [_setState]
21
+ [_setState],
22
22
  );
23
23
 
24
24
  // This is a copy of Wrapper.getAnimationProps
@@ -43,7 +43,7 @@ export const useAnimationState = (initialState = INITIAL_STATE) => {
43
43
  const getTransitionProps = Transitions.getTransitionPropsFactory(
44
44
  props,
45
45
  filteredState,
46
- (newState) => setState(newState)
46
+ (newState) => setState(newState),
47
47
  );
48
48
  getTransitions = (childComponent) =>
49
49
  getTransitionProps(childComponent, index);
@@ -51,10 +51,10 @@ export const useAnimationState = (initialState = INITIAL_STATE) => {
51
51
  return defaults(
52
52
  { getTransitions, parentState },
53
53
  props.animate,
54
- child.props.animate
54
+ child.props.animate,
55
55
  );
56
56
  },
57
- [state, setState]
57
+ [state, setState],
58
58
  );
59
59
 
60
60
  // This is a copy of Wrapper.setAnimationState
@@ -68,7 +68,7 @@ export const useAnimationState = (initialState = INITIAL_STATE) => {
68
68
  const oldProps = nodesWillExit ? props : null;
69
69
  const newState = defaults(
70
70
  { oldProps, nextProps },
71
- props.animate.parentState
71
+ props.animate.parentState,
72
72
  );
73
73
  setState(newState);
74
74
  } else {
@@ -91,7 +91,7 @@ export const useAnimationState = (initialState = INITIAL_STATE) => {
91
91
  nodesWillExit,
92
92
  nodesWillEnter,
93
93
  childrenTransitions,
94
- nodesShouldEnter
94
+ nodesShouldEnter,
95
95
  } = Transitions.getInitialTransitionState(oldChildren, nextChildren);
96
96
 
97
97
  setState({
@@ -103,11 +103,11 @@ export const useAnimationState = (initialState = INITIAL_STATE) => {
103
103
  : childrenTransitions,
104
104
  oldProps: nodesWillExit ? props : null,
105
105
  nextProps,
106
- continuous
106
+ continuous,
107
107
  });
108
108
  }
109
109
  },
110
- [setState]
110
+ [setState],
111
111
  );
112
112
 
113
113
  const getProps = React.useCallback(
@@ -116,7 +116,7 @@ export const useAnimationState = (initialState = INITIAL_STATE) => {
116
116
  ? state.oldProps || initialProps
117
117
  : initialProps;
118
118
  },
119
- [state]
119
+ [state],
120
120
  );
121
121
 
122
122
  return { state, setState, getAnimationProps, setAnimationState, getProps };
@@ -0,0 +1,9 @@
1
+ import React from "react";
2
+
3
+ export function usePreviousProps<T>(props: T): T | undefined {
4
+ const ref = React.useRef<T>();
5
+ React.useEffect(() => {
6
+ ref.current = props;
7
+ });
8
+ return ref.current;
9
+ }