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
@@ -2,23 +2,76 @@
2
2
  import { assign, defaults, isEmpty } from "lodash";
3
3
  import PropTypes from "prop-types";
4
4
  import React from "react";
5
- import VictoryPortal from "../victory-portal/victory-portal";
6
- import Rect from "../victory-primitives/rect";
7
- import Text from "../victory-primitives/text";
8
- import TSpan from "../victory-primitives/tspan";
5
+ import { VictoryPortal } from "../victory-portal/victory-portal";
6
+ import { Rect } from "../victory-primitives/rect";
7
+ import { Text } from "../victory-primitives/text";
8
+ import { TSpan } from "../victory-primitives/tspan";
9
9
  import * as Helpers from "../victory-util/helpers";
10
10
  import * as LabelHelpers from "../victory-util/label-helpers";
11
11
  import * as Log from "../victory-util/log";
12
12
  import * as CustomPropTypes from "../victory-util/prop-types";
13
13
  import * as Style from "../victory-util/style";
14
14
  import * as TextSize from "../victory-util/textsize";
15
+ import * as UserProps from "../victory-util/user-props";
16
+ import {
17
+ NumberOrCallback,
18
+ StringOrCallback,
19
+ StringOrNumberOrCallback,
20
+ } from "../types/callbacks";
21
+ import {
22
+ PaddingProps,
23
+ VerticalAnchorType,
24
+ VictoryLabelStyleObject,
25
+ } from "../victory-theme/victory-theme";
26
+
27
+ export type TextAnchorType = "start" | "middle" | "end" | "inherit";
28
+ export type OriginType = { x: number; y: number };
29
+ export type LabelOrientationType = "parallel" | "perpendicular" | "vertical";
30
+
31
+ export interface VictoryLabelProps {
32
+ angle?: StringOrNumberOrCallback;
33
+ ariaLabel?: StringOrCallback;
34
+ backgroundComponent?: React.ReactElement;
35
+ backgroundStyle?: VictoryLabelStyleObject | VictoryLabelStyleObject[];
36
+ backgroundPadding?: PaddingProps | PaddingProps[];
37
+ capHeight?: StringOrNumberOrCallback;
38
+ children?: StringOrNumberOrCallback;
39
+ className?: string;
40
+ datum?: object;
41
+ data?: any[];
42
+ desc?: string;
43
+ direction?: string;
44
+ disableInlineStyles?: boolean;
45
+ events?: React.DOMAttributes<any>;
46
+ groupComponent?: React.ReactElement;
47
+ id?: StringOrNumberOrCallback;
48
+ inline?: boolean;
49
+ labelPlacement?: LabelOrientationType;
50
+ lineHeight?: StringOrNumberOrCallback | (string | number)[];
51
+ origin?: OriginType;
52
+ polar?: boolean;
53
+ renderInPortal?: boolean;
54
+ style?: VictoryLabelStyleObject | VictoryLabelStyleObject[];
55
+ tabIndex?: NumberOrCallback;
56
+ text?: string[] | StringOrNumberOrCallback;
57
+ textComponent?: React.ReactElement;
58
+ textAnchor?: TextAnchorType | { (): TextAnchorType };
59
+ title?: string;
60
+ transform?: string | object | (() => string | object);
61
+ tspanComponent?: React.ReactElement;
62
+ verticalAnchor?: VerticalAnchorType | { (): VerticalAnchorType };
63
+ x?: number;
64
+ y?: number;
65
+ dx?: StringOrNumberOrCallback;
66
+ dy?: StringOrNumberOrCallback;
67
+ }
15
68
 
16
69
  const defaultStyles = {
17
70
  fill: "#252525",
18
71
  fontSize: 14,
19
72
  fontFamily:
20
73
  "'Gill Sans', 'Gill Sans MT', 'Ser­avek', 'Trebuchet MS', sans-serif",
21
- stroke: "transparent"
74
+ stroke: "transparent",
22
75
  };
23
76
 
24
77
  const getPosition = (props, dimension) => {
@@ -47,7 +100,7 @@ const getFontSize = (style) => {
47
100
  return defaultStyles.fontSize;
48
101
  };
49
102
 
50
- const getSingleValue = (prop, index = 0) => {
103
+ const getSingleValue = <T,>(prop: T | T[], index = 0): T => {
51
104
  return Array.isArray(prop) ? prop[index] || prop[0] : prop;
52
105
  };
53
106
 
@@ -64,7 +117,7 @@ const getStyles = (style, props) => {
64
117
  const baseStyles = Helpers.evaluateStyle(style, props);
65
118
  return {
66
119
  // Font size is necessary to calculate the y position of the label
67
- fontSize: getFontSize(baseStyles)
120
+ fontSize: getFontSize(baseStyles),
68
121
  };
69
122
  }
70
123
  const getSingleStyle = (s) => {
@@ -130,10 +183,10 @@ const getDy = (props, verticalAnchor, lineHeight) => {
130
183
  ? Helpers.evaluateProp(verticalAnchor, props)
131
184
  : "middle";
132
185
  const fontSizes = [...Array(length).keys()].map(
133
- (i) => getSingleValue(props.style, i).fontSize
186
+ (i) => getSingleValue(props.style, i).fontSize,
134
187
  );
135
188
  const lineHeights = [...Array(length).keys()].map((i) =>
136
- getSingleValue(lineHeight, i)
189
+ getSingleValue(lineHeight, i),
137
190
  );
138
191
 
139
192
  if (anchor === "start") {
@@ -220,7 +273,7 @@ const getFullBackground = (calculatedProps, tspanValues) => {
220
273
  backgroundStyle,
221
274
  inline,
222
275
  backgroundPadding,
223
- capHeight
276
+ capHeight,
224
277
  } = calculatedProps;
225
278
  const textSizes = tspanValues.map((tspan) => {
226
279
  return tspan.textSize;
@@ -254,12 +307,12 @@ const getFullBackground = (calculatedProps, tspanValues) => {
254
307
  x: inline
255
308
  ? xCoordinate - backgroundPadding.left
256
309
  : xCoordinate + dx - backgroundPadding.left,
257
- y: yCoordinate
310
+ y: yCoordinate,
258
311
  };
259
312
 
260
313
  return React.cloneElement(
261
314
  backgroundComponent,
262
- defaults({}, backgroundComponent.props, backgroundProps)
315
+ defaults({}, backgroundComponent.props, backgroundProps),
263
316
  );
264
317
  };
265
318
 
@@ -298,7 +351,7 @@ const getChildBackgrounds = (calculatedProps, tspanValues) => {
298
351
  backgroundPadding,
299
352
  backgroundComponent,
300
353
  inline,
301
- y
354
+ y,
302
355
  } = calculatedProps;
303
356
 
304
357
  const textElements = tspanValues.map((current, i) => {
@@ -325,14 +378,14 @@ const getChildBackgrounds = (calculatedProps, tspanValues) => {
325
378
  labelSize.width + padding.left + padding.right + xOffset,
326
379
  y,
327
380
  fontSize: current.fontSize,
328
- dy: childDy
381
+ dy: childDy,
329
382
  };
330
383
  });
331
384
 
332
385
  return textElements.map((textElement, i) => {
333
386
  const xCoordinate = getXCoordinate(
334
387
  calculatedProps,
335
- textElement.labelSize.width
388
+ textElement.labelSize.width,
336
389
  );
337
390
  const yCoordinate = textElements.slice(0, i + 1).reduce((prev, curr) => {
338
391
  return prev + curr.dy;
@@ -354,12 +407,12 @@ const getChildBackgrounds = (calculatedProps, tspanValues) => {
354
407
  width: textElement.widthWithPadding,
355
408
  transform,
356
409
  x: xCoord - padding.left,
357
- y: yCoord
410
+ y: yCoord,
358
411
  };
359
412
 
360
413
  return React.cloneElement(
361
414
  backgroundComponent,
362
- defaults({}, backgroundComponent.props, backgroundProps)
415
+ defaults({}, backgroundComponent.props, backgroundProps),
363
416
  );
364
417
  });
365
418
  };
@@ -417,10 +470,10 @@ const evaluateProps = (props) => {
417
470
  const style = getStyles(props.style, assign({}, props, { text }));
418
471
  const backgroundStyle = getBackgroundStyles(
419
472
  props.backgroundStyle,
420
- assign({}, props, { text, style })
473
+ assign({}, props, { text, style }),
421
474
  );
422
475
  const backgroundPadding = getBackgroundPadding(
423
- assign({}, props, { text, style, backgroundStyle })
476
+ assign({}, props, { text, style, backgroundStyle }),
424
477
  );
425
478
  const id = Helpers.evaluateProp(props.id, props);
426
479
  return assign({}, props, {
@@ -428,13 +481,13 @@ const evaluateProps = (props) => {
428
481
  backgroundPadding,
429
482
  style,
430
483
  text,
431
- id
484
+ id,
432
485
  });
433
486
  };
434
487
 
435
- const getCalculatedProps = (props) => {
488
+ const getCalculatedProps = <T extends VictoryLabelProps>(props: T) => {
436
489
  const ariaLabel = Helpers.evaluateProp(props.ariaLabel, props);
437
- const style = getSingleValue(props.style);
490
+ const style = getSingleValue(props.style!);
438
491
  const lineHeight = getLineHeight(props);
439
492
  const direction = props.direction
440
493
  ? Helpers.evaluateProp(props.direction, props)
@@ -462,7 +515,7 @@ const getCalculatedProps = (props) => {
462
515
  originalDy: props.dy,
463
516
  transform,
464
517
  x,
465
- y
518
+ y,
466
519
  });
467
520
  };
468
521
 
@@ -485,8 +538,9 @@ const renderLabel = (calculatedProps, tspanValues) => {
485
538
  id,
486
539
  tabIndex,
487
540
  tspanComponent,
488
- textComponent
541
+ textComponent,
489
542
  } = calculatedProps;
543
+ const userProps = UserProps.getSafeUserProps(calculatedProps);
490
544
 
491
545
  const textProps = {
492
546
  "aria-label": ariaLabel,
@@ -501,7 +555,8 @@ const renderLabel = (calculatedProps, tspanValues) => {
501
555
  title,
502
556
  desc: Helpers.evaluateProp(desc, calculatedProps),
503
557
  tabIndex: Helpers.evaluateProp(tabIndex, calculatedProps),
504
- id
558
+ id,
559
+ ...userProps,
505
560
  };
506
561
 
507
562
  const tspans = text.map((line, i) => {
@@ -513,7 +568,7 @@ const renderLabel = (calculatedProps, tspanValues) => {
513
568
  dy: getTSpanDy(tspanValues, calculatedProps, i),
514
569
  textAnchor: currentStyle.textAnchor || textAnchor,
515
570
  style: currentStyle,
516
- children: line
571
+ children: line,
517
572
  };
518
573
  return React.cloneElement(tspanComponent, tspanProps);
519
574
  });
@@ -521,21 +576,25 @@ const renderLabel = (calculatedProps, tspanValues) => {
521
576
  return React.cloneElement(textComponent, textProps, tspans);
522
577
  };
523
578
 
524
- const VictoryLabel = (props) => {
579
+ export const VictoryLabel: {
580
+ role: string;
581
+ defaultStyles: typeof defaultStyles;
582
+ } & React.FC<VictoryLabelProps> = (props) => {
525
583
  props = evaluateProps(props);
526
584
 
527
585
  if (props.text === null || props.text === undefined) {
528
586
  return null;
529
587
  }
530
588
  const calculatedProps = getCalculatedProps(props);
589
+
531
590
  const { text, style, capHeight, backgroundPadding, lineHeight } =
532
591
  calculatedProps;
533
592
 
534
- const tspanValues = text.map((line, i) => {
535
- const currentStyle = getSingleValue(style, i);
593
+ const tspanValues = (text as string[]).map((line, i) => {
594
+ const currentStyle = getSingleValue(style!, i);
536
595
  const capHeightPx = TextSize.convertLengthToPixels(
537
596
  `${capHeight}em`,
538
- currentStyle.fontSize
597
+ currentStyle.fontSize as number,
539
598
  );
540
599
  const currentLineHeight = getSingleValue(lineHeight, i);
541
600
  return {
@@ -543,9 +602,10 @@ const VictoryLabel = (props) => {
543
602
  fontSize: currentStyle.fontSize || defaultStyles.fontSize,
544
603
  capHeight: capHeightPx,
545
604
  text: line,
605
+ // @ts-expect-error TODO: This looks like a bug:
546
606
  textSize: TextSize.approximateTextSize(line, currentStyle),
547
607
  lineHeight: currentLineHeight,
548
- backgroundPadding: getSingleValue(backgroundPadding, i)
608
+ backgroundPadding: getSingleValue(backgroundPadding, i),
549
609
  };
550
610
  });
551
611
 
@@ -554,13 +614,13 @@ const VictoryLabel = (props) => {
554
614
  if (props.backgroundStyle) {
555
615
  const backgroundElement = getBackgroundElement(
556
616
  calculatedProps,
557
- tspanValues
617
+ tspanValues,
558
618
  );
559
619
  const children = [backgroundElement, label];
560
620
  const backgroundWithLabel = React.cloneElement(
561
- props.groupComponent,
621
+ props.groupComponent!,
562
622
  {},
563
- children
623
+ children,
564
624
  );
565
625
 
566
626
  return props.renderInPortal ? (
@@ -581,24 +641,25 @@ VictoryLabel.propTypes = {
581
641
  angle: PropTypes.oneOfType([
582
642
  PropTypes.string,
583
643
  PropTypes.number,
584
- PropTypes.func
644
+ PropTypes.func,
585
645
  ]),
586
646
  ariaLabel: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),
587
647
  backgroundComponent: PropTypes.element,
588
648
  backgroundPadding: PropTypes.oneOfType([
589
649
  PropTypes.number,
590
650
  PropTypes.object,
591
- PropTypes.array
651
+ PropTypes.array,
592
652
  ]),
593
653
  backgroundStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),
594
654
  capHeight: PropTypes.oneOfType([
595
655
  PropTypes.string,
596
656
  CustomPropTypes.nonNegative,
597
- PropTypes.func
657
+ PropTypes.func,
598
658
  ]),
599
659
  className: PropTypes.string,
600
660
  data: PropTypes.array,
601
661
  datum: PropTypes.any,
662
+ // @ts-expect-error "Function is not assignable to string"
602
663
  desc: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),
603
664
  direction: PropTypes.oneOf(["rtl", "ltr", "inherit"]),
604
665
  dx: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.func]),
@@ -613,17 +674,17 @@ VictoryLabel.propTypes = {
613
674
  PropTypes.string,
614
675
  CustomPropTypes.nonNegative,
615
676
  PropTypes.func,
616
- PropTypes.array
677
+ PropTypes.array,
617
678
  ]),
618
679
  origin: PropTypes.shape({
619
- x: CustomPropTypes.nonNegative,
620
- y: CustomPropTypes.nonNegative
680
+ x: CustomPropTypes.nonNegative.isRequired,
681
+ y: CustomPropTypes.nonNegative.isRequired,
621
682
  }),
622
683
  polar: PropTypes.bool,
623
684
  renderInPortal: PropTypes.bool,
624
685
  scale: PropTypes.shape({
625
686
  x: CustomPropTypes.scale,
626
- y: CustomPropTypes.scale
687
+ y: CustomPropTypes.scale,
627
688
  }),
628
689
  style: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),
629
690
  tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.func]),
@@ -631,26 +692,30 @@ VictoryLabel.propTypes = {
631
692
  PropTypes.string,
632
693
  PropTypes.number,
633
694
  PropTypes.func,
634
- PropTypes.array
695
+ PropTypes.array,
635
696
  ]),
697
+ // @ts-expect-error Function is not assignable to string"
636
698
  textAnchor: PropTypes.oneOfType([
637
699
  PropTypes.oneOf(["start", "middle", "end", "inherit"]),
638
- PropTypes.func
700
+ PropTypes.func,
639
701
  ]),
640
702
  textComponent: PropTypes.element,
641
703
  title: PropTypes.string,
642
704
  transform: PropTypes.oneOfType([
643
705
  PropTypes.string,
644
706
  PropTypes.object,
645
- PropTypes.func
707
+ PropTypes.func,
646
708
  ]),
647
709
  tspanComponent: PropTypes.element,
710
+ // @ts-expect-error Function is not assignable to string"
648
711
  verticalAnchor: PropTypes.oneOfType([
649
712
  PropTypes.oneOf(["start", "middle", "end"]),
650
- PropTypes.func
713
+ PropTypes.func,
651
714
  ]),
715
+ // @ts-expect-error Number is not assignable to string
652
716
  x: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
653
- y: PropTypes.oneOfType([PropTypes.number, PropTypes.string])
717
+ // @ts-expect-error Number is not assignable to string
718
+ y: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
654
719
  };
655
720
 
656
721
  VictoryLabel.defaultProps = {
@@ -660,7 +725,5 @@ VictoryLabel.defaultProps = {
660
725
  textComponent: <Text />,
661
726
  tspanComponent: <TSpan />,
662
727
  capHeight: 0.71, // Magic number from d3.
663
- lineHeight: 1
728
+ lineHeight: 1,
664
729
  };
665
-
666
- export default VictoryLabel;
@@ -0,0 +1,14 @@
1
+ import React from "react";
2
+
3
+ export interface PortalContextValue {
4
+ portalRegister(): number;
5
+ portalUpdate(key: number, element: React.ReactElement): void;
6
+ portalDeregister(key: number): void;
7
+ }
8
+
9
+ /**
10
+ * The React context object consumers may use to access the context of the
11
+ * portal.
12
+ */
13
+ export const PortalContext = React.createContext({} as PortalContextValue);
14
+ PortalContext.displayName = "PortalContext";
@@ -2,8 +2,20 @@ import React from "react";
2
2
  import PropTypes from "prop-types";
3
3
  import * as CustomPropTypes from "../victory-util/prop-types";
4
4
  import { keys } from "lodash";
5
+ import { PortalContextValue } from "./portal-context";
6
+
7
+ export interface PortalProps {
8
+ className?: string;
9
+ height?: number;
10
+ style?: React.CSSProperties;
11
+ viewBox?: string;
12
+ width?: number;
13
+ }
5
14
 
6
- export default class Portal extends React.Component {
15
+ export class Portal
16
+ extends React.Component<PortalProps>
17
+ implements PortalContextValue
18
+ {
7
19
  static displayName = "Portal";
8
20
 
9
21
  static propTypes = {
@@ -11,33 +23,32 @@ export default class Portal extends React.Component {
11
23
  height: CustomPropTypes.nonNegative,
12
24
  style: PropTypes.object,
13
25
  viewBox: PropTypes.string,
14
- width: CustomPropTypes.nonNegative
26
+ width: CustomPropTypes.nonNegative,
15
27
  };
28
+ private readonly map: Record<string, React.ReactElement>;
29
+ private index: number;
16
30
 
17
- constructor(props) {
31
+ constructor(props: PortalProps) {
18
32
  super(props);
19
33
  this.map = {};
20
34
  this.index = 1;
21
- this.portalUpdate = this.portalUpdate.bind(this);
22
- this.portalRegister = this.portalRegister.bind(this);
23
- this.portalDeregister = this.portalDeregister.bind(this);
24
35
  }
25
36
 
26
- portalRegister() {
37
+ public portalRegister = (): number => {
27
38
  return ++this.index;
28
- }
39
+ };
29
40
 
30
- portalUpdate(key, element) {
41
+ public portalUpdate = (key: number, element: React.ReactElement) => {
31
42
  this.map[key] = element;
32
43
  this.forceUpdate();
33
- }
44
+ };
34
45
 
35
- portalDeregister(key) {
46
+ public portalDeregister = (key: number) => {
36
47
  delete this.map[key];
37
48
  this.forceUpdate();
38
- }
49
+ };
39
50
 
40
- getChildren() {
51
+ private getChildren() {
41
52
  return keys(this.map).map((key) => {
42
53
  const el = this.map[key];
43
54
  return el ? React.cloneElement(el, { key }) : el;
@@ -3,23 +3,36 @@ import PropTypes from "prop-types";
3
3
  import { defaults } from "lodash";
4
4
  import * as Log from "../victory-util/log";
5
5
  import * as Helpers from "../victory-util/helpers";
6
- import PortalContext from "./portal-context";
6
+ import { PortalContext } from "./portal-context";
7
7
 
8
- export default class VictoryPortal extends React.Component {
8
+ export interface VictoryPortalProps {
9
+ children?: React.ReactElement;
10
+ groupComponent?: React.ReactElement;
11
+ }
12
+
13
+ export interface VictoryPortal {
14
+ context: React.ContextType<typeof PortalContext>;
15
+ }
16
+
17
+ export class VictoryPortal extends React.Component<VictoryPortalProps> {
9
18
  static displayName = "VictoryPortal";
10
19
 
11
20
  static role = "portal";
12
21
 
13
22
  static propTypes = {
14
23
  children: PropTypes.node,
15
- groupComponent: PropTypes.element
24
+ groupComponent: PropTypes.element,
16
25
  };
17
26
 
18
27
  static defaultProps = {
19
- groupComponent: <g />
28
+ groupComponent: <g />,
20
29
  };
21
30
 
22
31
  static contextType = PortalContext;
32
+ private checkedContext!: boolean;
33
+ private renderInPlace!: boolean;
34
+ private element!: React.ReactElement;
35
+ private portalKey!: number;
23
36
 
24
37
  componentDidMount() {
25
38
  if (!this.checkedContext) {
@@ -49,7 +62,7 @@ export default class VictoryPortal extends React.Component {
49
62
  }
50
63
 
51
64
  // Overridden in victory-core-native
52
- renderPortal(child) {
65
+ renderPortal(child: React.ReactElement) {
53
66
  if (this.renderInPlace) {
54
67
  return child;
55
68
  }
@@ -58,9 +71,11 @@ export default class VictoryPortal extends React.Component {
58
71
  }
59
72
 
60
73
  render() {
61
- const children = Array.isArray(this.props.children)
62
- ? this.props.children[0]
63
- : this.props.children;
74
+ const children = (
75
+ Array.isArray(this.props.children)
76
+ ? this.props.children[0]
77
+ : this.props.children
78
+ ) as React.ReactElement;
64
79
  const { groupComponent } = this.props;
65
80
  const childProps = (children && children.props) || {};
66
81
  const standardProps = childProps.groupComponent
@@ -69,7 +84,7 @@ export default class VictoryPortal extends React.Component {
69
84
  const newProps = defaults(
70
85
  standardProps,
71
86
  childProps,
72
- Helpers.omit(this.props, ["children", "groupComponent"])
87
+ Helpers.omit(this.props, ["children", "groupComponent"]),
73
88
  );
74
89
  const child = children && React.cloneElement(children, newProps);
75
90
  return this.renderPortal(child);
@@ -3,8 +3,22 @@ import React from "react";
3
3
  import PropTypes from "prop-types";
4
4
  import * as Helpers from "../victory-util/helpers";
5
5
  import { assign } from "lodash";
6
- import * as CommonProps from "../victory-util/common-props";
7
- import Path from "./path";
6
+ import {
7
+ CommonProps,
8
+ VictoryCommonPrimitiveProps,
9
+ } from "../victory-util/common-props";
10
+ import { Path } from "./path";
11
+
12
+ export interface ArcProps extends VictoryCommonPrimitiveProps {
13
+ closedPath?: boolean;
14
+ cx?: number;
15
+ cy?: number;
16
+ datum?: any;
17
+ endAngle?: number;
18
+ pathComponent?: React.ReactElement;
19
+ r?: number;
20
+ startAngle?: number;
21
+ }
8
22
 
9
23
  const getArcPath = (props) => {
10
24
  const { cx, cy, r, startAngle, endAngle, closedPath } = props;
@@ -41,17 +55,17 @@ const evaluateProps = (props) => {
41
55
  const id = Helpers.evaluateProp(props.id, props);
42
56
  const style = Helpers.evaluateStyle(
43
57
  assign({ stroke: "black", fill: "none" }, props.style),
44
- props
58
+ props,
45
59
  );
46
60
  const tabIndex = Helpers.evaluateProp(props.tabIndex, props);
47
61
 
48
62
  return assign({}, props, { ariaLabel, desc, id, style, tabIndex });
49
63
  };
50
64
 
51
- const Arc = (props) => {
65
+ export const Arc = (props: ArcProps) => {
52
66
  props = evaluateProps(props);
53
67
 
54
- return React.cloneElement(props.pathComponent, {
68
+ return React.cloneElement(props.pathComponent!, {
55
69
  ...props.events,
56
70
  "aria-label": props.ariaLabel,
57
71
  d: getArcPath(props),
@@ -62,7 +76,7 @@ const Arc = (props) => {
62
76
  role: props.role,
63
77
  shapeRendering: props.shapeRendering,
64
78
  transform: props.transform,
65
- clipPath: props.clipPath
79
+ clipPath: props.clipPath,
66
80
  });
67
81
  };
68
82
 
@@ -75,13 +89,11 @@ Arc.propTypes = {
75
89
  endAngle: PropTypes.number,
76
90
  pathComponent: PropTypes.element,
77
91
  r: PropTypes.number,
78
- startAngle: PropTypes.number
92
+ startAngle: PropTypes.number,
79
93
  };
80
94
 
81
95
  Arc.defaultProps = {
82
96
  pathComponent: <Path />,
83
97
  role: "presentation",
84
- shapeRendering: "auto"
98
+ shapeRendering: "auto",
85
99
  };
86
-
87
- export default Arc;
@@ -2,9 +2,23 @@ import React from "react";
2
2
  import PropTypes from "prop-types";
3
3
  import { assign } from "lodash";
4
4
  import * as Helpers from "../victory-util/helpers";
5
- import * as CommonProps from "../victory-util/common-props";
6
- import Rect from "./rect";
7
- import Circle from "./circle";
5
+ import {
6
+ CommonProps,
7
+ VictoryCommonPrimitiveProps,
8
+ } from "../victory-util/common-props";
9
+ import { Rect } from "./rect";
10
+ import { Circle } from "./circle";
11
+
12
+ export interface BackgroundProps extends VictoryCommonPrimitiveProps {
13
+ circleComponent?: React.ReactElement;
14
+ height?: number;
15
+ rectComponent?: React.ReactElement;
16
+ rx?: number;
17
+ ry?: number;
18
+ width?: number;
19
+ x?: number;
20
+ y?: number;
21
+ }
8
22
 
9
23
  const evaluateProps = (props) => {
10
24
  /**
@@ -16,11 +30,11 @@ const evaluateProps = (props) => {
16
30
  return assign({}, props, { id });
17
31
  };
18
32
 
19
- const Background = (props) => {
33
+ export const Background = (props: BackgroundProps) => {
20
34
  props = evaluateProps(props);
21
35
 
22
36
  return props.polar
23
- ? React.cloneElement(props.circleComponent, {
37
+ ? React.cloneElement(props.circleComponent!, {
24
38
  ...props.events,
25
39
  style: props.style,
26
40
  role: props.role,
@@ -28,9 +42,9 @@ const Background = (props) => {
28
42
  cx: props.x,
29
43
  cy: props.y,
30
44
  r: props.height,
31
- className: props.className
45
+ className: props.className,
32
46
  })
33
- : React.cloneElement(props.rectComponent, {
47
+ : React.cloneElement(props.rectComponent!, {
34
48
  ...props.events,
35
49
  style: props.style,
36
50
  role: props.role,
@@ -41,7 +55,7 @@ const Background = (props) => {
41
55
  ry: props.ry,
42
56
  width: props.width,
43
57
  height: props.height,
44
- className: props.className
58
+ className: props.className,
45
59
  });
46
60
  };
47
61
 
@@ -54,14 +68,12 @@ Background.propTypes = {
54
68
  ry: PropTypes.number,
55
69
  width: PropTypes.number,
56
70
  x: PropTypes.number,
57
- y: PropTypes.number
71
+ y: PropTypes.number,
58
72
  };
59
73
 
60
74
  Background.defaultProps = {
61
75
  circleComponent: <Circle />,
62
76
  rectComponent: <Rect />,
63
77
  role: "presentation",
64
- shapeRendering: "auto"
78
+ shapeRendering: "auto",
65
79
  };
66
-
67
- export default Background;