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
@@ -120,23 +120,23 @@ const absoluteMeasurementUnitsToPixels = {
120
120
  pt: 1.33,
121
121
  pc: 16,
122
122
  in: 96,
123
- px: 1
123
+ px: 1,
124
124
  };
125
125
  const relativeMeasurementUnitsCoef = {
126
126
  em: 1,
127
- ex: 0.5
127
+ ex: 0.5,
128
128
  };
129
129
 
130
130
  const coefficients = {
131
131
  heightOverlapCoef: 1.05, // Coefficient for height value to prevent overlap.
132
- lineCapitalCoef: 1.15 // Coefficient for height value. Reserve space for capital chars.
132
+ lineCapitalCoef: 1.15, // Coefficient for height value. Reserve space for capital chars.
133
133
  };
134
134
  const defaultStyle = {
135
135
  lineHeight: 1,
136
136
  letterSpacing: "0px",
137
137
  fontSize: 0,
138
138
  angle: 0,
139
- fontFamily: ""
139
+ fontFamily: "",
140
140
  };
141
141
 
142
142
  const _degreeToRadian = (angle) => (angle * Math.PI) / 180;
@@ -147,7 +147,7 @@ const _getFontData = (fontFamily) => {
147
147
  return fonts[fontMatch];
148
148
  };
149
149
 
150
- const _splitToLines = (text) => {
150
+ const _splitToLines = (text: string | string[]) => {
151
151
  return Array.isArray(text) ? text : text.toString().split(/\r\n|\r|\n/g);
152
152
  };
153
153
 
@@ -165,9 +165,12 @@ const _getSizeWithRotate = (axisSize, dependentSize, angle) => {
165
165
  * @param {number} fontSize Current text font-size.
166
166
  * @returns {number} Approximate Css length in pixels.
167
167
  */
168
- export const convertLengthToPixels = (length, fontSize) => {
169
- const attribute = length.match(/[a-zA-Z%]+/) && length.match(/[a-zA-Z%]+/)[0];
170
- const value = length.match(/[0-9.,]+/);
168
+ export const convertLengthToPixels = (
169
+ length: string,
170
+ fontSize?: number,
171
+ ): number => {
172
+ const attribute = length.match(/[a-zA-Z%]+/)?.[0];
173
+ const value = Number(length.match(/[0-9.,]+/));
171
174
  let result;
172
175
  if (!attribute) {
173
176
  result = value || 0;
@@ -195,11 +198,11 @@ const _prepareParams = (inputStyle, index) => {
195
198
  fontSize:
196
199
  typeof style.fontSize === "number"
197
200
  ? style.fontSize
198
- : convertLengthToPixels(String(style.fontSize))
201
+ : convertLengthToPixels(String(style.fontSize)),
199
202
  });
200
203
  };
201
204
 
202
- const _approximateTextWidthInternal = (text, style) => {
205
+ const _approximateTextWidthInternal = (text: string | string[], style) => {
203
206
  if (text === undefined || text === "" || text === null) {
204
207
  return 0;
205
208
  }
@@ -208,7 +211,7 @@ const _approximateTextWidthInternal = (text, style) => {
208
211
  const len = line.toString().length;
209
212
  const { fontSize, letterSpacing, fontFamily } = _prepareParams(
210
213
  style,
211
- index
214
+ index,
212
215
  );
213
216
  const fontData = _getFontData(fontFamily);
214
217
  const width =
@@ -226,7 +229,7 @@ const _approximateTextWidthInternal = (text, style) => {
226
229
  return Math.max(...widths);
227
230
  };
228
231
 
229
- const _approximateTextHeightInternal = (text, style) => {
232
+ const _approximateTextHeightInternal = (text: string | string[], style) => {
230
233
  if (text === undefined || text === "" || text === null) {
231
234
  return 0;
232
235
  }
@@ -240,9 +243,18 @@ const _approximateTextHeightInternal = (text, style) => {
240
243
  }, 0);
241
244
  };
242
245
 
246
+ export interface TextSizeStyleInterface {
247
+ angle?: number;
248
+ characterConstant?: string;
249
+ fontFamily?: string;
250
+ fontSize?: number | string;
251
+ letterSpacing?: string;
252
+ lineHeight?: number;
253
+ }
254
+
243
255
  // Stubbable implementation.
244
256
  export const _approximateTextSizeInternal = {
245
- impl: (text, style) => {
257
+ impl: (text: string | string[], style?: TextSizeStyleInterface) => {
246
258
  const angle = Array.isArray(style)
247
259
  ? style[0] && style[0].angle
248
260
  : style && style.angle;
@@ -256,14 +268,14 @@ export const _approximateTextSizeInternal = {
256
268
  : height;
257
269
  return {
258
270
  width: widthWithRotate,
259
- height: heightWithRotate * coefficients.heightOverlapCoef
271
+ height: heightWithRotate * coefficients.heightOverlapCoef,
260
272
  };
261
- }
273
+ },
262
274
  };
263
275
 
264
276
  /**
265
277
  * Predict text size by font params.
266
- * @param {string} text Content for width calculation.
278
+ * @param {string|string[]} text Content for width calculation.
267
279
  * @param {Object} style Text styles, ,fontFamily, fontSize, etc.
268
280
  * @param {string} style.fontFamily Text fontFamily.
269
281
  * @param {(number|string)} style.fontSize Text fontSize.
@@ -272,5 +284,8 @@ export const _approximateTextSizeInternal = {
272
284
  * @param {number} style.lineHeight Line height coefficient.
273
285
  * @returns {number} Approximate text label height.
274
286
  */
275
- export const approximateTextSize = (text, style) =>
287
+ export const approximateTextSize = (
288
+ text: string | string[],
289
+ style?: TextSizeStyleInterface,
290
+ ): { width: number; height: number } =>
276
291
  _approximateTextSizeInternal.impl(text, style);
@@ -7,7 +7,7 @@ import Timer from "./timer";
7
7
  */
8
8
  const TimerContext = React.createContext({
9
9
  transitionTimer: new Timer(),
10
- animationTimer: new Timer()
10
+ animationTimer: new Timer(),
11
11
  });
12
12
  TimerContext.displayName = "TimerContext";
13
13
 
@@ -1,10 +1,20 @@
1
- import { timer, now } from "victory-vendor/d3-timer";
1
+ import { timer, now, Timer as D3Timer } from "victory-vendor/d3-timer";
2
+
3
+ type TimerCallback = (elapsed: number, duration: number) => void;
2
4
 
3
5
  export default class Timer {
6
+ private shouldAnimate: boolean;
7
+ private readonly subscribers: Array<{
8
+ callback: TimerCallback;
9
+ startTime: number;
10
+ duration: number;
11
+ }>;
12
+ private activeSubscriptions: number;
13
+ private timer: D3Timer | null;
14
+
4
15
  constructor() {
5
16
  this.shouldAnimate = true;
6
17
  this.subscribers = [];
7
- this.loop = this.loop.bind(this);
8
18
  this.timer = null;
9
19
  this.activeSubscriptions = 0;
10
20
  }
@@ -17,11 +27,11 @@ export default class Timer {
17
27
  this.shouldAnimate = true;
18
28
  }
19
29
 
20
- loop() {
30
+ loop = () => {
21
31
  this.subscribers.forEach((s) => {
22
32
  s.callback(now() - s.startTime, s.duration);
23
33
  });
24
- }
34
+ };
25
35
 
26
36
  start() {
27
37
  if (!this.timer) {
@@ -36,12 +46,12 @@ export default class Timer {
36
46
  }
37
47
  }
38
48
 
39
- subscribe(callback, duration) {
49
+ subscribe(callback: TimerCallback, duration: number) {
40
50
  duration = this.shouldAnimate ? duration : 0;
41
51
  const subscriptionID = this.subscribers.push({
42
52
  startTime: now(),
43
53
  callback,
44
- duration
54
+ duration,
45
55
  });
46
56
  this.activeSubscriptions++;
47
57
  this.start();
@@ -1,6 +1,6 @@
1
- /* eslint-disable func-style */
2
1
  import { assign, defaults, identity, keys } from "lodash";
3
2
  import React from "react";
3
+ import { AnimatePropTypeInterface } from "../types/prop-types";
4
4
 
5
5
  function getDatumKey(datum, idx) {
6
6
  return (datum.key || idx).toString();
@@ -47,7 +47,7 @@ function getNodeTransitions(oldData, nextData) {
47
47
  entering:
48
48
  oldDataKeyed && getKeyedDataDifference(nextDataKeyed, oldDataKeyed),
49
49
  exiting:
50
- nextDataKeyed && getKeyedDataDifference(oldDataKeyed, nextDataKeyed)
50
+ nextDataKeyed && getKeyedDataDifference(oldDataKeyed, nextDataKeyed),
51
51
  };
52
52
  }
53
53
 
@@ -60,7 +60,7 @@ function getChildData(child) {
60
60
 
61
61
  /**
62
62
  * If a parent component has animation enabled, calculate the transitions
63
- * for any data of any child component that supports data transitions
63
+ * for any data of any child component that supports data transitions.
64
64
  * Data transitions are defined as any two datasets where data nodes exist
65
65
  * in the first set and not the second, in the second and not the first,
66
66
  * or both.
@@ -96,7 +96,7 @@ export function getInitialTransitionState(oldChildren, nextChildren) {
96
96
  if (child && child.props && child.props.children && next[idx]) {
97
97
  return getTransitionsFromChildren(
98
98
  React.Children.toArray(old[idx].props.children),
99
- React.Children.toArray(next[idx].props.children)
99
+ React.Children.toArray(next[idx].props.children),
100
100
  );
101
101
  }
102
102
  // get Transition entering and exiting nodes
@@ -106,7 +106,7 @@ export function getInitialTransitionState(oldChildren, nextChildren) {
106
106
 
107
107
  const childrenTransitions = getTransitionsFromChildren(
108
108
  React.Children.toArray(oldChildren),
109
- React.Children.toArray(nextChildren)
109
+ React.Children.toArray(nextChildren),
110
110
  );
111
111
  return {
112
112
  nodesWillExit,
@@ -117,20 +117,26 @@ export function getInitialTransitionState(oldChildren, nextChildren) {
117
117
  // is a perfect match for the previous data and domain except
118
118
  // for new nodes. In this case, we wouldn't want a delay before
119
119
  // the new nodes appear.
120
- nodesShouldEnter: false
120
+ nodesShouldEnter: false,
121
121
  };
122
122
  }
123
123
 
124
- function getInitialChildProps(animate, data) {
124
+ type TransitionProps = {
125
+ data;
126
+ animate?: AnimatePropTypeInterface;
127
+ clipWidth?: number;
128
+ };
129
+
130
+ function getInitialChildProps(animate, data): TransitionProps {
125
131
  const after =
126
132
  animate.onEnter && animate.onEnter.after ? animate.onEnter.after : identity;
127
133
  return {
128
- data: data.map((datum, idx) => assign({}, datum, after(datum, idx, data)))
134
+ data: data.map((datum, idx) => assign({}, datum, after(datum, idx, data))),
129
135
  };
130
136
  }
131
137
 
132
138
  // eslint-disable-next-line max-params
133
- function getChildBeforeLoad(animate, child, data, cb) {
139
+ function getChildBeforeLoad(animate, child, data, cb): TransitionProps {
134
140
  animate = assign({}, animate, { onEnd: cb });
135
141
  if (animate && animate.onLoad && !animate.onLoad.duration) {
136
142
  return { animate, data };
@@ -146,7 +152,7 @@ function getChildBeforeLoad(animate, child, data, cb) {
146
152
  }
147
153
 
148
154
  // eslint-disable-next-line max-params
149
- function getChildOnLoad(animate, data, cb) {
155
+ function getChildOnLoad(animate, data, cb): TransitionProps {
150
156
  animate = assign({}, animate, { onEnd: cb });
151
157
  if (animate && animate.onLoad && !animate.onLoad.duration) {
152
158
  return { animate, data };
@@ -162,7 +168,13 @@ function getChildOnLoad(animate, data, cb) {
162
168
  }
163
169
 
164
170
  // eslint-disable-next-line max-params, max-len
165
- function getChildPropsOnExit(animate, child, data, exitingNodes, cb) {
171
+ function getChildPropsOnExit(
172
+ animate,
173
+ child,
174
+ data,
175
+ exitingNodes,
176
+ cb,
177
+ ): TransitionProps {
166
178
  // Whether or not _this_ child has exiting nodes, we want the exit-
167
179
  // transition for all children to have the same duration, delay, etc.
168
180
  const onExit = animate && animate.onExit;
@@ -170,7 +182,7 @@ function getChildPropsOnExit(animate, child, data, exitingNodes, cb) {
170
182
 
171
183
  if (exitingNodes) {
172
184
  // After the exit transition occurs, trigger the animations for
173
- // nodes that are neither exiting or entering.
185
+ // nodes that are neither exiting nor entering.
174
186
  animate.onEnd = cb;
175
187
  const before =
176
188
  animate.onExit && animate.onExit.before
@@ -189,7 +201,13 @@ function getChildPropsOnExit(animate, child, data, exitingNodes, cb) {
189
201
  }
190
202
 
191
203
  // eslint-disable-next-line max-params,max-len
192
- function getChildPropsBeforeEnter(animate, child, data, enteringNodes, cb) {
204
+ function getChildPropsBeforeEnter(
205
+ animate,
206
+ child,
207
+ data,
208
+ enteringNodes,
209
+ cb,
210
+ ): TransitionProps {
193
211
  if (enteringNodes) {
194
212
  // Perform a normal animation here, except - when it finishes - trigger
195
213
  // the transition for entering nodes.
@@ -213,7 +231,12 @@ function getChildPropsBeforeEnter(animate, child, data, enteringNodes, cb) {
213
231
  }
214
232
 
215
233
  // eslint-disable-next-line max-params, max-len
216
- function getChildPropsOnEnter(animate, data, enteringNodes, cb) {
234
+ function getChildPropsOnEnter(
235
+ animate,
236
+ data,
237
+ enteringNodes,
238
+ cb,
239
+ ): TransitionProps {
217
240
  // Whether or not _this_ child has entering nodes, we want the entering-
218
241
  // transition for all children to have the same duration, delay, etc.
219
242
  const onEnter = animate && animate.onEnter;
@@ -244,7 +267,7 @@ function getChildPropsOnEnter(animate, data, enteringNodes, cb) {
244
267
  * and its index in the parent's children array.
245
268
  *
246
269
  * In particular, this will include an `animate` object that is set appropriately
247
- * so that each child will be synchoronized for each stage of a transition
270
+ * so that each child will be synchronized for each stage of a transition
248
271
  * animation. It will also include a transformed `data` object, where each datum
249
272
  * is transformed by `animate.onExit` and `animate.onEnter` `before` and `after`
250
273
  * functions.
@@ -270,7 +293,7 @@ export function getTransitionPropsFactory(props, state, setState) {
270
293
  props.animate && props.animate.onExit && props.animate.onExit.duration,
271
294
  load:
272
295
  props.animate && props.animate.onLoad && props.animate.onLoad.duration,
273
- move: props.animate && props.animate.duration
296
+ move: props.animate && props.animate.duration,
274
297
  };
275
298
 
276
299
  const onLoad = (child, data, animate) => {
@@ -325,9 +348,13 @@ export function getTransitionPropsFactory(props, state, setState) {
325
348
  };
326
349
 
327
350
  // eslint-disable-next-line max-statements, complexity, max-len
328
- return function getTransitionProps(child, index) {
351
+ return function getTransitionProps(child, index): TransitionProps {
329
352
  const data = getChildData(child) || [];
330
- const animate = defaults({}, props.animate, child.props.animate);
353
+ const animate: AnimatePropTypeInterface = defaults(
354
+ {},
355
+ props.animate,
356
+ child.props.animate,
357
+ );
331
358
  const defaultTransitions = child.props.polar
332
359
  ? child.type.defaultPolarTransitions || child.type.defaultTransitions
333
360
  : child.type.defaultTransitions;
@@ -335,17 +362,17 @@ export function getTransitionPropsFactory(props, state, setState) {
335
362
  animate.onExit = defaults(
336
363
  {},
337
364
  animate.onExit,
338
- defaultTransitions && defaultTransitions.onExit
365
+ defaultTransitions && defaultTransitions.onExit,
339
366
  );
340
367
  animate.onEnter = defaults(
341
368
  {},
342
369
  animate.onEnter,
343
- defaultTransitions && defaultTransitions.onEnter
370
+ defaultTransitions && defaultTransitions.onEnter,
344
371
  );
345
372
  animate.onLoad = defaults(
346
373
  {},
347
374
  animate.onLoad,
348
- defaultTransitions && defaultTransitions.onLoad
375
+ defaultTransitions && defaultTransitions.onLoad,
349
376
  );
350
377
 
351
378
  const childTransitions =
@@ -378,13 +405,13 @@ export function getTransitionPropsFactory(props, state, setState) {
378
405
  ? transitionDurations.move
379
406
  : child.props.animate && child.props.animate.duration;
380
407
  const animation = {
381
- duration: nodesShouldEnter && enteringNodes ? enter : move
408
+ duration: nodesShouldEnter && enteringNodes ? enter : move,
382
409
  };
383
410
  return onEnter(
384
411
  enteringNodes,
385
412
  child,
386
413
  data,
387
- assign({}, animate, animation)
414
+ assign({}, animate, animation),
388
415
  );
389
416
  } else if (!state && animate && animate.onExit) {
390
417
  // This is the initial render, and nodes may enter when props change. Because
@@ -0,0 +1,50 @@
1
+ import {
2
+ ForAxes,
3
+ AxisType,
4
+ Tuple,
5
+ Datum,
6
+ DatumValue,
7
+ } from "../types/prop-types";
8
+
9
+ export function hasValueForAxis<T = unknown>(
10
+ value: unknown | ForAxes<T>,
11
+ axis: AxisType,
12
+ ): value is ForAxes<T> {
13
+ if (typeof value === "object" && value !== null) {
14
+ return axis in value;
15
+ }
16
+ return false;
17
+ }
18
+
19
+ export function isTuple<T = unknown>(value: unknown): value is Tuple<T> {
20
+ return Array.isArray(value) && value.length === 2;
21
+ }
22
+
23
+ export function getValueForAxis<T = unknown>(
24
+ value: T | ForAxes<T> | undefined,
25
+ axis: AxisType,
26
+ ): T | undefined {
27
+ if (hasValueForAxis<T>(value, axis)) {
28
+ return value[axis] as T;
29
+ }
30
+ return value;
31
+ }
32
+
33
+ // eslint-disable-next-line @typescript-eslint/ban-types
34
+ export function isFunction<T = Function>(func?: unknown): func is T {
35
+ return typeof func === "function";
36
+ }
37
+
38
+ export function isDate(value: unknown): value is Date {
39
+ return value instanceof Date;
40
+ }
41
+
42
+ export function isKeyValueObject(
43
+ datum: Datum,
44
+ ): datum is { [key: string]: DatumValue } {
45
+ return (
46
+ typeof datum === "object" &&
47
+ !Array.isArray(datum) &&
48
+ !(datum instanceof Date)
49
+ );
50
+ }
@@ -2,15 +2,17 @@ import * as React from "react";
2
2
 
3
3
  /*
4
4
  USER_PROPS_SAFELIST is to contain any string deemed safe for user props.
5
- The startsWidth array will contain the start of any accepted user-prop that
5
+ The startsWidth array will contain the start of any accepted user-prop that
6
6
  starts with these characters.
7
7
  The exactMatch will contain a list of exact prop names that are accepted.
8
8
  */
9
9
  const USER_PROPS_SAFELIST = {
10
- startsWith: ["data-", "aria-"],
11
- exactMatch: []
10
+ startsWith: ["data-", "aria-"] as const,
11
+ exactMatch: [] as string[],
12
12
  };
13
13
 
14
+ type SafeAttribute = `data-${string}` | `aria-${string}`;
15
+
14
16
  /**
15
17
  * doesPropStartWith: Function that takes a prop's key and runs it against all
16
18
  * options in the USER_PROPS_SAFELIST and checks to see if it starts with any
@@ -19,7 +21,7 @@ const USER_PROPS_SAFELIST = {
19
21
  * @returns {Boolean}: returns true if the key starts with an option or false if
20
22
  * otherwise
21
23
  */
22
- const doesPropStartWith = (key) => {
24
+ const doesPropStartWith = (key: string): key is SafeAttribute => {
23
25
  let startsWith = false;
24
26
 
25
27
  USER_PROPS_SAFELIST.startsWith.forEach((starterString) => {
@@ -38,14 +40,15 @@ const doesPropStartWith = (key) => {
38
40
  * @returns {Boolean}: return true if whitelist contains that key, otherwise
39
41
  * returns false.
40
42
  */
41
- const isExactMatch = (key) => USER_PROPS_SAFELIST.exactMatch.includes(key);
43
+ const isExactMatch = (key: string): key is SafeAttribute =>
44
+ USER_PROPS_SAFELIST.exactMatch.includes(key);
42
45
 
43
46
  /**
44
47
  * testIfSafeProp: tests prop's key against both startsWith and exactMatch values
45
48
  * @param {String} key: prop key to be tested against the whitelist
46
49
  * @returns {Boolean}: returns true if found in whitelist, otherwise returns false
47
50
  */
48
- const testIfSafeProp = (key) => {
51
+ const testIfSafeProp = (key: string): key is SafeAttribute => {
49
52
  if (doesPropStartWith(key) || isExactMatch(key)) return true;
50
53
  return false;
51
54
  };
@@ -71,24 +74,26 @@ const getValue = (value, props) => {
71
74
  * @param {Object} props: props to be filtered against USER_PROPS_SAFELIST
72
75
  * @returns {Object}: object containing remaining acceptable props
73
76
  */
74
- export const getSafeUserProps = (props) => {
77
+ export const getSafeUserProps = <T>(
78
+ props: T,
79
+ ): Record<SafeAttribute, string> => {
75
80
  const propsToFilter = { ...props };
76
81
  return Object.fromEntries(
77
82
  Object.entries(propsToFilter)
78
83
  .filter(([key]) => testIfSafeProp(key))
79
84
  .map(([key, value]) => {
80
85
  return [key, getValue(value, props)];
81
- })
86
+ }),
82
87
  );
83
88
  };
84
89
 
85
90
  /**
86
91
  * Wraps a component and adds safe user props
87
92
  *
88
- * @param {ReactNode} component: parent component
93
+ * @param {ReactElement} component: parent component
89
94
  * @param {Object} props: props to be filtered
90
- * @returns {ReactNode} modified component
95
+ * @returns {ReactElement} modified component
91
96
  */
92
- export const withSafeUserProps = (component, props) => {
97
+ export const withSafeUserProps = (component: React.ReactElement, props) => {
93
98
  return React.cloneElement(component, getSafeUserProps(props));
94
99
  };
@@ -0,0 +1,41 @@
1
+ import React from "react";
2
+ import {
3
+ VictoryProvider,
4
+ VictoryProviderProps,
5
+ VictoryContainer,
6
+ } from "victory-core";
7
+ import { VictoryCommonProps } from "./common-props";
8
+
9
+ const defaultProviderProps = {
10
+ width: 450,
11
+ height: 300,
12
+ padding: 50,
13
+ data: [],
14
+ };
15
+
16
+ export function withContainer<Props extends VictoryCommonProps>(
17
+ WrappedComponent: (props: Props) => React.ReactElement,
18
+ initialProviderProps: Partial<VictoryProviderProps> = {},
19
+ ) {
20
+ return (props: Props) => {
21
+ const providerProps = {
22
+ ...defaultProviderProps,
23
+ ...initialProviderProps,
24
+ ...props,
25
+ };
26
+ const { standalone = true, containerComponent = <VictoryContainer /> } =
27
+ props;
28
+ if (standalone) {
29
+ return (
30
+ <VictoryProvider {...providerProps}>
31
+ {React.cloneElement(
32
+ containerComponent,
33
+ providerProps,
34
+ <WrappedComponent {...props} />,
35
+ )}
36
+ </VictoryProvider>
37
+ );
38
+ }
39
+ return <WrappedComponent {...props} />;
40
+ };
41
+ }