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
@@ -2,8 +2,19 @@ import React from "react";
2
2
  import PropTypes from "prop-types";
3
3
  import * as Helpers from "../victory-util/helpers";
4
4
  import { assign } from "lodash";
5
- import * as CommonProps from "../victory-util/common-props";
6
- import Rect from "./rect";
5
+ import {
6
+ CommonProps,
7
+ VictoryCommonPrimitiveProps,
8
+ } from "../victory-util/common-props";
9
+ import { Rect } from "./rect";
10
+
11
+ export interface BorderProps extends VictoryCommonPrimitiveProps {
12
+ width?: number;
13
+ height?: number;
14
+ rectComponent?: React.ReactElement;
15
+ x?: number;
16
+ y?: number;
17
+ }
7
18
 
8
19
  const evaluateProps = (props) => {
9
20
  /**
@@ -19,17 +30,17 @@ const evaluateProps = (props) => {
19
30
  const id = Helpers.evaluateProp(props.id, props);
20
31
  const style = Helpers.evaluateStyle(
21
32
  assign({ fill: "none" }, props.style),
22
- props
33
+ props,
23
34
  );
24
35
  const tabIndex = Helpers.evaluateProp(props.tabIndex, props);
25
36
 
26
37
  return assign({}, props, { ariaLabel, desc, id, style, tabIndex });
27
38
  };
28
39
 
29
- const Border = (props) => {
40
+ export const Border = (props: BorderProps) => {
30
41
  props = evaluateProps(props);
31
42
 
32
- return React.cloneElement(props.rectComponent, {
43
+ return React.cloneElement(props.rectComponent!, {
33
44
  ...props.events,
34
45
  "aria-label": props.ariaLabel,
35
46
  style: props.style,
@@ -43,7 +54,7 @@ const Border = (props) => {
43
54
  y: props.y,
44
55
  width: props.width,
45
56
  height: props.height,
46
- clipPath: props.clipPath
57
+ clipPath: props.clipPath,
47
58
  });
48
59
  };
49
60
 
@@ -53,13 +64,11 @@ Border.propTypes = {
53
64
  rectComponent: PropTypes.element,
54
65
  width: PropTypes.number,
55
66
  x: PropTypes.number,
56
- y: PropTypes.number
67
+ y: PropTypes.number,
57
68
  };
58
69
 
59
70
  Border.defaultProps = {
60
71
  rectComponent: <Rect />,
61
72
  role: "presentation",
62
- shapeRendering: "auto"
73
+ shapeRendering: "auto",
63
74
  };
64
-
65
- export default Border;
@@ -1,15 +1,16 @@
1
1
  import React from "react";
2
+ import { VictoryPrimitiveShapeProps } from "./types";
2
3
 
3
- const Circle = (props) => {
4
+ export const Circle = (props: VictoryPrimitiveShapeProps) => {
4
5
  // eslint-disable-next-line react/prop-types
5
6
  const { desc, ...rest } = props;
6
7
  return desc ? (
8
+ // @ts-expect-error FIXME: "id cannot be a number"
7
9
  <circle vectorEffect="non-scaling-stroke" {...rest}>
8
10
  <desc>{desc}</desc>
9
11
  </circle>
10
12
  ) : (
13
+ // @ts-expect-error FIXME: "id cannot be a number"
11
14
  <circle vectorEffect="non-scaling-stroke" {...rest} />
12
15
  );
13
16
  };
14
-
15
- export default Circle;
@@ -0,0 +1,25 @@
1
+ import React from "react";
2
+ import PropTypes from "prop-types";
3
+ import { VictoryCommonPrimitiveProps } from "../victory-util/common-props";
4
+
5
+ export interface ClipPathProps extends VictoryCommonPrimitiveProps {
6
+ children?: React.ReactNode[] | React.ReactNode;
7
+ clipId?: number | string;
8
+ }
9
+
10
+ export const ClipPath = (props: ClipPathProps) => (
11
+ <defs>
12
+ {
13
+ // @ts-expect-error FIXME: "id cannot be a number"
14
+ <clipPath id={props.clipId}>{props.children}</clipPath>
15
+ }
16
+ </defs>
17
+ );
18
+
19
+ ClipPath.propTypes = {
20
+ children: PropTypes.oneOfType([
21
+ PropTypes.arrayOf(PropTypes.node),
22
+ PropTypes.node,
23
+ ]),
24
+ clipId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
25
+ };
@@ -0,0 +1,14 @@
1
+ export * from "./arc";
2
+ export * from "./background";
3
+ export * from "./border";
4
+ export * from "./circle";
5
+ export * from "./clip-path";
6
+ export * from "./line";
7
+ export * from "./line-segment";
8
+ export * from "./path";
9
+ export * from "./point";
10
+ export * from "./rect";
11
+ export * from "./text";
12
+ export * from "./tspan";
13
+ export * from "./types";
14
+ export * from "./whisker";
@@ -2,8 +2,20 @@ import React from "react";
2
2
  import PropTypes from "prop-types";
3
3
  import * as Helpers from "../victory-util/helpers";
4
4
  import { assign } from "lodash";
5
- import * as CommonProps from "../victory-util/common-props";
6
- import Line from "./line";
5
+ import {
6
+ CommonProps,
7
+ VictoryCommonPrimitiveProps,
8
+ } from "../victory-util/common-props";
9
+ import { Line } from "./line";
10
+
11
+ export interface LineSegmentProps extends VictoryCommonPrimitiveProps {
12
+ datum?: any;
13
+ lineComponent?: React.ReactElement;
14
+ x1?: number;
15
+ x2?: number;
16
+ y1?: number;
17
+ y2?: number;
18
+ }
7
19
 
8
20
  const evaluateProps = (props) => {
9
21
  /**
@@ -19,17 +31,17 @@ const evaluateProps = (props) => {
19
31
  const id = Helpers.evaluateProp(props.id, props);
20
32
  const style = Helpers.evaluateStyle(
21
33
  assign({ stroke: "black" }, props.style),
22
- props
34
+ props,
23
35
  );
24
36
  const tabIndex = Helpers.evaluateProp(props.tabIndex, props);
25
37
 
26
38
  return assign({}, props, { ariaLabel, desc, id, style, tabIndex });
27
39
  };
28
40
 
29
- const LineSegment = (props) => {
41
+ export const LineSegment = (props: LineSegmentProps) => {
30
42
  props = evaluateProps(props);
31
43
 
32
- return React.cloneElement(props.lineComponent, {
44
+ return React.cloneElement(props.lineComponent!, {
33
45
  ...props.events,
34
46
  "aria-label": props.ariaLabel,
35
47
  style: props.style,
@@ -43,7 +55,7 @@ const LineSegment = (props) => {
43
55
  y1: props.y1,
44
56
  y2: props.y2,
45
57
  transform: props.transform,
46
- clipPath: props.clipPath
58
+ clipPath: props.clipPath,
47
59
  });
48
60
  };
49
61
 
@@ -54,13 +66,11 @@ LineSegment.propTypes = {
54
66
  x1: PropTypes.number,
55
67
  x2: PropTypes.number,
56
68
  y1: PropTypes.number,
57
- y2: PropTypes.number
69
+ y2: PropTypes.number,
58
70
  };
59
71
 
60
72
  LineSegment.defaultProps = {
61
73
  lineComponent: <Line />,
62
74
  role: "presentation",
63
- shapeRendering: "auto"
75
+ shapeRendering: "auto",
64
76
  };
65
-
66
- export default LineSegment;
@@ -1,15 +1,16 @@
1
1
  import React from "react";
2
+ import { VictoryPrimitiveShapeProps } from "./types";
2
3
 
3
- const Line = (props) => {
4
+ export const Line = (props: VictoryPrimitiveShapeProps) => {
4
5
  // eslint-disable-next-line react/prop-types
5
6
  const { desc, ...rest } = props;
6
7
  return desc ? (
8
+ // @ts-expect-error FIXME: "id cannot be a number"
7
9
  <line vectorEffect="non-scaling-stroke" {...rest}>
8
10
  <desc>{desc}</desc>
9
11
  </line>
10
12
  ) : (
13
+ // @ts-expect-error FIXME: "id cannot be a number"
11
14
  <line vectorEffect="non-scaling-stroke" {...rest} />
12
15
  );
13
16
  };
14
-
15
- export default Line;
@@ -1,15 +1,16 @@
1
1
  import React from "react";
2
+ import { VictoryPrimitiveShapeProps } from "./types";
2
3
 
3
- const Path = (props) => {
4
+ export const Path = (props: VictoryPrimitiveShapeProps) => {
4
5
  // eslint-disable-next-line react/prop-types
5
6
  const { desc, ...rest } = props;
6
7
  return desc ? (
8
+ // @ts-expect-error FIXME: "id cannot be a number"
7
9
  <path {...rest}>
8
10
  <desc>{desc}</desc>
9
11
  </path>
10
12
  ) : (
13
+ // @ts-expect-error FIXME: "id cannot be a number"
11
14
  <path {...rest} />
12
15
  );
13
16
  };
14
-
15
- export default Path;
@@ -1,27 +1,34 @@
1
- import React from "react";
2
- import PropTypes from "prop-types";
3
1
  import { assign } from "lodash";
2
+ import PropTypes from "prop-types";
3
+ import React from "react";
4
4
  import * as Helpers from "../victory-util/helpers";
5
- import pathHelpers from "../victory-util/point-path-helpers";
6
- import * as CommonProps from "../victory-util/common-props";
7
- import Path from "./path";
5
+ import * as pathHelpers from "../victory-util/point-path-helpers";
6
+ import {
7
+ CommonProps,
8
+ VictoryCommonPrimitiveProps,
9
+ } from "../victory-util/common-props";
10
+ import * as UserProps from "../victory-util/user-props";
11
+ import { Path } from "./path";
12
+ import { ScatterSymbolType } from "./types";
13
+
14
+ export interface PointProps extends VictoryCommonPrimitiveProps {
15
+ datum?: any;
16
+ getPath?: (x: number, y: number, size: number) => string;
17
+ pathComponent?: React.ReactElement;
18
+ // eslint-disable-next-line @typescript-eslint/ban-types
19
+ size?: number | Function;
20
+ // eslint-disable-next-line @typescript-eslint/ban-types
21
+ symbol?: ScatterSymbolType | Function;
22
+ x?: number;
23
+ y?: number;
24
+ }
8
25
 
9
26
  const getPath = (props) => {
10
27
  const { x, y, size, symbol } = props;
11
28
  if (props.getPath) {
12
29
  return props.getPath(x, y, size);
13
30
  }
14
- const pathFunctions = {
15
- circle: pathHelpers.circle,
16
- square: pathHelpers.square,
17
- diamond: pathHelpers.diamond,
18
- triangleDown: pathHelpers.triangleDown,
19
- triangleUp: pathHelpers.triangleUp,
20
- plus: pathHelpers.plus,
21
- minus: pathHelpers.minus,
22
- star: pathHelpers.star,
23
- cross: pathHelpers.cross
24
- };
31
+ const pathFunctions = pathHelpers;
25
32
  const symbolFunction =
26
33
  typeof pathFunctions[symbol] === "function"
27
34
  ? pathFunctions[symbol]
@@ -55,14 +62,15 @@ const evaluateProps = (props) => {
55
62
  size,
56
63
  style,
57
64
  symbol,
58
- tabIndex
65
+ tabIndex,
59
66
  });
60
67
  };
61
68
 
62
- const Point = (props) => {
69
+ export const Point = (props: PointProps) => {
63
70
  props = evaluateProps(props);
71
+ const userProps = UserProps.getSafeUserProps(props);
64
72
 
65
- return React.cloneElement(props.pathComponent, {
73
+ return React.cloneElement(props.pathComponent!, {
66
74
  ...props.events,
67
75
  "aria-label": props.ariaLabel,
68
76
  d: getPath(props),
@@ -73,7 +81,8 @@ const Point = (props) => {
73
81
  shapeRendering: props.shapeRendering,
74
82
  className: props.className,
75
83
  transform: props.transform,
76
- clipPath: props.clipPath
84
+ clipPath: props.clipPath,
85
+ ...userProps,
77
86
  });
78
87
  };
79
88
 
@@ -93,18 +102,16 @@ Point.propTypes = {
93
102
  "square",
94
103
  "star",
95
104
  "triangleDown",
96
- "triangleUp"
105
+ "triangleUp",
97
106
  ]),
98
- PropTypes.func
107
+ PropTypes.func,
99
108
  ]),
100
109
  x: PropTypes.number,
101
- y: PropTypes.number
110
+ y: PropTypes.number,
102
111
  };
103
112
 
104
113
  Point.defaultProps = {
105
114
  pathComponent: <Path />,
106
115
  role: "presentation",
107
- shapeRendering: "auto"
116
+ shapeRendering: "auto",
108
117
  };
109
-
110
- export default Point;
@@ -1,14 +1,16 @@
1
1
  import React from "react";
2
+ import { VictoryPrimitiveShapeProps } from "./types";
2
3
 
3
- const Rect = (props) => {
4
+ export const Rect = (props: VictoryPrimitiveShapeProps) => {
4
5
  // eslint-disable-next-line react/prop-types
5
6
  const { desc, ...rest } = props;
6
7
  return desc ? (
8
+ // @ts-expect-error FIXME: "id cannot be a number"
7
9
  <rect vectorEffect="non-scaling-stroke" {...rest}>
8
10
  <desc>{desc}</desc>
9
11
  </rect>
10
12
  ) : (
13
+ // @ts-expect-error FIXME: "id cannot be a number"
11
14
  <rect vectorEffect="non-scaling-stroke" {...rest} />
12
15
  );
13
16
  };
14
- export default Rect;
@@ -1,9 +1,17 @@
1
1
  import React from "react";
2
2
  import PropTypes from "prop-types";
3
+ import { VictoryCommonPrimitiveProps } from "../victory-util/common-props";
3
4
 
4
- const Text = (props) => {
5
+ export interface TextProps extends VictoryCommonPrimitiveProps {
6
+ children?: React.ReactNode;
7
+ desc?: string;
8
+ title?: string;
9
+ }
10
+
11
+ export const Text = (props: TextProps) => {
5
12
  const { children, title, desc, ...rest } = props;
6
13
  return (
14
+ // @ts-expect-error FIXME: "id cannot be a number"
7
15
  <text {...rest}>
8
16
  {title && <title>{title}</title>}
9
17
  {desc && <desc>{desc}</desc>}
@@ -15,7 +23,5 @@ const Text = (props) => {
15
23
  Text.propTypes = {
16
24
  children: PropTypes.node,
17
25
  desc: PropTypes.string,
18
- title: PropTypes.string
26
+ title: PropTypes.string,
19
27
  };
20
-
21
- export default Text;
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ import { VictoryCommonPrimitiveProps } from "../victory-util/common-props";
3
+
4
+ export const TSpan = (props: VictoryCommonPrimitiveProps) => (
5
+ // @ts-expect-error FIXME: "id cannot be a number"
6
+ <tspan {...props} />
7
+ );
@@ -0,0 +1,19 @@
1
+ import { VictoryCommonPrimitiveProps } from "../victory-util/common-props";
2
+
3
+ export type ScatterSymbolType =
4
+ | "circle"
5
+ | "cross"
6
+ | "diamond"
7
+ | "plus"
8
+ | "minus"
9
+ | "square"
10
+ | "star"
11
+ | "triangleDown"
12
+ | "triangleUp";
13
+
14
+ export interface VictoryPrimitiveShapeProps
15
+ extends VictoryCommonPrimitiveProps {
16
+ desc?: string;
17
+ rx?: number;
18
+ ry?: number;
19
+ }
@@ -2,8 +2,25 @@ import React from "react";
2
2
  import { assign } from "lodash";
3
3
  import PropTypes from "prop-types";
4
4
  import * as Helpers from "../victory-util/helpers";
5
- import * as CommonProps from "../victory-util/common-props";
6
- import Line from "./line";
5
+ import {
6
+ CommonProps,
7
+ VictoryCommonPrimitiveProps,
8
+ } from "../victory-util/common-props";
9
+ import { Line } from "./line";
10
+
11
+ export type WhiskerAxes = {
12
+ x1?: number;
13
+ x2?: number;
14
+ y1?: number;
15
+ y2?: number;
16
+ };
17
+
18
+ export interface WhiskerProps extends VictoryCommonPrimitiveProps {
19
+ groupComponent?: React.ReactElement;
20
+ lineComponent?: React.ReactElement;
21
+ majorWhisker?: WhiskerAxes;
22
+ minorWhisker?: WhiskerAxes;
23
+ }
7
24
 
8
25
  const evaluateProps = (props) => {
9
26
  /**
@@ -23,7 +40,7 @@ const evaluateProps = (props) => {
23
40
  return assign({}, props, { ariaLabel, desc, id, style, tabIndex });
24
41
  };
25
42
 
26
- const Whisker = (props) => {
43
+ export const Whisker = (props: WhiskerProps) => {
27
44
  props = evaluateProps(props);
28
45
  const {
29
46
  ariaLabel,
@@ -39,7 +56,7 @@ const Whisker = (props) => {
39
56
  shapeRendering,
40
57
  style,
41
58
  desc,
42
- tabIndex
59
+ tabIndex,
43
60
  } = props;
44
61
  const baseProps = {
45
62
  ...events,
@@ -50,26 +67,26 @@ const Whisker = (props) => {
50
67
  transform,
51
68
  clipPath,
52
69
  role,
53
- shapeRendering
70
+ shapeRendering,
54
71
  };
55
72
 
56
- return React.cloneElement(groupComponent, {}, [
73
+ return React.cloneElement(groupComponent!, {}, [
57
74
  React.cloneElement(
58
- lineComponent,
75
+ lineComponent!,
59
76
  assign(
60
77
  { key: "major-whisker", "aria-label": ariaLabel },
61
78
  baseProps,
62
- majorWhisker
63
- )
79
+ majorWhisker,
80
+ ),
64
81
  ),
65
82
  React.cloneElement(
66
- lineComponent,
83
+ lineComponent!,
67
84
  assign(
68
85
  { key: "minor-whisker", "aria-label": ariaLabel },
69
86
  baseProps,
70
- minorWhisker
71
- )
72
- )
87
+ minorWhisker,
88
+ ),
89
+ ),
73
90
  ]);
74
91
  };
75
92
 
@@ -81,21 +98,19 @@ Whisker.propTypes = {
81
98
  x1: PropTypes.number,
82
99
  x2: PropTypes.number,
83
100
  y1: PropTypes.number,
84
- y2: PropTypes.number
101
+ y2: PropTypes.number,
85
102
  }),
86
103
  minorWhisker: PropTypes.shape({
87
104
  x1: PropTypes.number,
88
105
  x2: PropTypes.number,
89
106
  y1: PropTypes.number,
90
- y2: PropTypes.number
91
- })
107
+ y2: PropTypes.number,
108
+ }),
92
109
  };
93
110
 
94
111
  Whisker.defaultProps = {
95
112
  groupComponent: <g />,
96
113
  lineComponent: <Line />,
97
114
  role: "presentation",
98
- shapeRendering: "auto"
115
+ shapeRendering: "auto",
99
116
  };
100
-
101
- export default Whisker;
@@ -0,0 +1,2 @@
1
+ export const DEFAULT_HEIGHT = 300;
2
+ export const DEFAULT_WIDTH = 450;
@@ -0,0 +1,14 @@
1
+ import { AxisType, Datum, DomainValue } from "../../types/prop-types";
2
+ import { isKeyValueObject } from "../../victory-util/type-helpers";
3
+
4
+ export function getAxisData(data: Datum[], axis: AxisType) {
5
+ return data.reduce((acc, datum) => {
6
+ if (isKeyValueObject(datum)) {
7
+ const value = datum[axis];
8
+ if (value && typeof value !== "string") {
9
+ acc.push(value);
10
+ }
11
+ }
12
+ return acc;
13
+ }, [] as DomainValue[]);
14
+ }
@@ -0,0 +1,79 @@
1
+ import { get, isNil, orderBy } from "lodash";
2
+ import * as React from "react";
3
+ import { Datum, DatumValue } from "../../types/prop-types";
4
+ import { isKeyValueObject } from "../../victory-util/type-helpers";
5
+ import { VictoryProviderProps } from "../types";
6
+
7
+ type DataProps = Pick<
8
+ VictoryProviderProps,
9
+ "data" | "x" | "y" | "sortKey" | "sortOrder" | "samples"
10
+ >;
11
+
12
+ export interface FormattedDatum {
13
+ x: DatumValue;
14
+ y: DatumValue;
15
+ _x: number | Date;
16
+ _y: number | Date;
17
+ xName?: string;
18
+ yName?: string;
19
+ [key: string]: DatumValue;
20
+ }
21
+
22
+ function getValue(datum: Datum, key: string): DatumValue {
23
+ if (typeof datum === "object") {
24
+ return get(datum, key);
25
+ }
26
+ return datum;
27
+ }
28
+
29
+ function getNumericValue(value: DatumValue, fallback: number): number | Date {
30
+ if (typeof value === "number" || value instanceof Date) {
31
+ return value;
32
+ }
33
+ return fallback;
34
+ }
35
+
36
+ export function getData({
37
+ x: xAccessor = "x",
38
+ y: yAccessor = "y",
39
+ sortKey,
40
+ sortOrder = "ascending",
41
+ data = [],
42
+ }: DataProps = {}): FormattedDatum[] {
43
+ const formattedData = data.reduce((nonNullData, datum, index) => {
44
+ const x = getValue(datum, xAccessor);
45
+ const y = getValue(datum, yAccessor);
46
+ if (isNil(x) || isNil(y)) {
47
+ return nonNullData;
48
+ }
49
+ const _x = getNumericValue(x, index + 1);
50
+ const _y = getNumericValue(y, index + 1);
51
+
52
+ // TODO: Get this value if it is different
53
+ const xName = typeof x === "string" ? x : undefined;
54
+ const yName = typeof y === "string" ? y : undefined;
55
+
56
+ const additionalProperties = isKeyValueObject(datum) ? datum : {};
57
+
58
+ return [
59
+ ...nonNullData,
60
+ {
61
+ x,
62
+ y,
63
+ _x,
64
+ _y,
65
+ // Only set these properties if they exist
66
+ ...(xName ? { xName } : {}),
67
+ ...(yName ? { yName } : {}),
68
+ ...additionalProperties,
69
+ },
70
+ ];
71
+ }, [] as FormattedDatum[]);
72
+
73
+ if (sortKey) {
74
+ const order = sortOrder === "descending" ? "desc" : "asc";
75
+ return orderBy(formattedData, sortKey, order);
76
+ }
77
+
78
+ return formattedData;
79
+ }
@@ -0,0 +1,62 @@
1
+ import * as d3Array from "victory-vendor/d3-array";
2
+ import { getAxisData } from "./get-axis-data";
3
+ import {
4
+ getValueForAxis,
5
+ isDate,
6
+ isTuple,
7
+ } from "../../victory-util/type-helpers";
8
+ import { VictoryProviderProps } from "../types";
9
+ import {
10
+ Tuple,
11
+ AxisType,
12
+ DomainTuple,
13
+ DomainValue,
14
+ } from "../../types/prop-types";
15
+
16
+ type DomainProps = Pick<
17
+ VictoryProviderProps,
18
+ "data" | "domain" | "maxDomain" | "minDomain" | "includeZero"
19
+ >;
20
+
21
+ // TODO: What should this default value be?
22
+ const DEFAULT_MIN = 0;
23
+ const DEFAULT_MAX = 1;
24
+
25
+ function getDomainFromMinMax(
26
+ min: number = DEFAULT_MIN,
27
+ max: number = DEFAULT_MAX,
28
+ ): Tuple<number> {
29
+ // TODO: Victoy currently has some really specific logic in getDomainFromMinMax
30
+ // that adds or subtracts a very small number from each domain to avoid the min
31
+ // and max being the same value. This has resulted in some weird behavior in the
32
+ // past, so we should revisit this.
33
+ return [min, max];
34
+ }
35
+
36
+ export function getDomain(
37
+ { data = [], includeZero, ...props }: DomainProps,
38
+ axis: AxisType,
39
+ ): DomainTuple {
40
+ const domainFromProps = getValueForAxis<DomainTuple>(props.domain, axis);
41
+ const axisData = getAxisData(data, axis);
42
+
43
+ if (includeZero && axis === "y") {
44
+ axisData.push(0);
45
+ }
46
+
47
+ if (isTuple(domainFromProps)) {
48
+ return domainFromProps;
49
+ }
50
+
51
+ const [min, max] = d3Array.extent(axisData) as DomainTuple | Tuple<undefined>;
52
+
53
+ const minDomain = getValueForAxis<DomainValue>(props.minDomain, axis) || min;
54
+ const maxDomain = getValueForAxis<DomainValue>(props.maxDomain, axis) || max;
55
+
56
+ if (isDate(minDomain) && isDate(maxDomain)) {
57
+ return [min, max] as Tuple<Date>;
58
+ }
59
+
60
+ // TODO: There might be an edge case here where we have mixed types
61
+ return getDomainFromMinMax(minDomain as number, maxDomain as number);
62
+ }