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,10 +2,10 @@
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";
@@ -13,13 +13,65 @@ 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
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
+ }
16
68
 
17
69
  const defaultStyles = {
18
70
  fill: "#252525",
19
71
  fontSize: 14,
20
72
  fontFamily:
21
73
  "'Gill Sans', 'Gill Sans MT', 'Ser­avek', 'Trebuchet MS', sans-serif",
22
- stroke: "transparent"
74
+ stroke: "transparent",
23
75
  };
24
76
 
25
77
  const getPosition = (props, dimension) => {
@@ -48,7 +100,7 @@ const getFontSize = (style) => {
48
100
  return defaultStyles.fontSize;
49
101
  };
50
102
 
51
- const getSingleValue = (prop, index = 0) => {
103
+ const getSingleValue = <T,>(prop: T | T[], index = 0): T => {
52
104
  return Array.isArray(prop) ? prop[index] || prop[0] : prop;
53
105
  };
54
106
 
@@ -65,7 +117,7 @@ const getStyles = (style, props) => {
65
117
  const baseStyles = Helpers.evaluateStyle(style, props);
66
118
  return {
67
119
  // Font size is necessary to calculate the y position of the label
68
- fontSize: getFontSize(baseStyles)
120
+ fontSize: getFontSize(baseStyles),
69
121
  };
70
122
  }
71
123
  const getSingleStyle = (s) => {
@@ -131,10 +183,10 @@ const getDy = (props, verticalAnchor, lineHeight) => {
131
183
  ? Helpers.evaluateProp(verticalAnchor, props)
132
184
  : "middle";
133
185
  const fontSizes = [...Array(length).keys()].map(
134
- (i) => getSingleValue(props.style, i).fontSize
186
+ (i) => getSingleValue(props.style, i).fontSize,
135
187
  );
136
188
  const lineHeights = [...Array(length).keys()].map((i) =>
137
- getSingleValue(lineHeight, i)
189
+ getSingleValue(lineHeight, i),
138
190
  );
139
191
 
140
192
  if (anchor === "start") {
@@ -221,7 +273,7 @@ const getFullBackground = (calculatedProps, tspanValues) => {
221
273
  backgroundStyle,
222
274
  inline,
223
275
  backgroundPadding,
224
- capHeight
276
+ capHeight,
225
277
  } = calculatedProps;
226
278
  const textSizes = tspanValues.map((tspan) => {
227
279
  return tspan.textSize;
@@ -255,12 +307,12 @@ const getFullBackground = (calculatedProps, tspanValues) => {
255
307
  x: inline
256
308
  ? xCoordinate - backgroundPadding.left
257
309
  : xCoordinate + dx - backgroundPadding.left,
258
- y: yCoordinate
310
+ y: yCoordinate,
259
311
  };
260
312
 
261
313
  return React.cloneElement(
262
314
  backgroundComponent,
263
- defaults({}, backgroundComponent.props, backgroundProps)
315
+ defaults({}, backgroundComponent.props, backgroundProps),
264
316
  );
265
317
  };
266
318
 
@@ -299,7 +351,7 @@ const getChildBackgrounds = (calculatedProps, tspanValues) => {
299
351
  backgroundPadding,
300
352
  backgroundComponent,
301
353
  inline,
302
- y
354
+ y,
303
355
  } = calculatedProps;
304
356
 
305
357
  const textElements = tspanValues.map((current, i) => {
@@ -326,14 +378,14 @@ const getChildBackgrounds = (calculatedProps, tspanValues) => {
326
378
  labelSize.width + padding.left + padding.right + xOffset,
327
379
  y,
328
380
  fontSize: current.fontSize,
329
- dy: childDy
381
+ dy: childDy,
330
382
  };
331
383
  });
332
384
 
333
385
  return textElements.map((textElement, i) => {
334
386
  const xCoordinate = getXCoordinate(
335
387
  calculatedProps,
336
- textElement.labelSize.width
388
+ textElement.labelSize.width,
337
389
  );
338
390
  const yCoordinate = textElements.slice(0, i + 1).reduce((prev, curr) => {
339
391
  return prev + curr.dy;
@@ -355,12 +407,12 @@ const getChildBackgrounds = (calculatedProps, tspanValues) => {
355
407
  width: textElement.widthWithPadding,
356
408
  transform,
357
409
  x: xCoord - padding.left,
358
- y: yCoord
410
+ y: yCoord,
359
411
  };
360
412
 
361
413
  return React.cloneElement(
362
414
  backgroundComponent,
363
- defaults({}, backgroundComponent.props, backgroundProps)
415
+ defaults({}, backgroundComponent.props, backgroundProps),
364
416
  );
365
417
  });
366
418
  };
@@ -418,10 +470,10 @@ const evaluateProps = (props) => {
418
470
  const style = getStyles(props.style, assign({}, props, { text }));
419
471
  const backgroundStyle = getBackgroundStyles(
420
472
  props.backgroundStyle,
421
- assign({}, props, { text, style })
473
+ assign({}, props, { text, style }),
422
474
  );
423
475
  const backgroundPadding = getBackgroundPadding(
424
- assign({}, props, { text, style, backgroundStyle })
476
+ assign({}, props, { text, style, backgroundStyle }),
425
477
  );
426
478
  const id = Helpers.evaluateProp(props.id, props);
427
479
  return assign({}, props, {
@@ -429,13 +481,13 @@ const evaluateProps = (props) => {
429
481
  backgroundPadding,
430
482
  style,
431
483
  text,
432
- id
484
+ id,
433
485
  });
434
486
  };
435
487
 
436
- const getCalculatedProps = (props) => {
488
+ const getCalculatedProps = <T extends VictoryLabelProps>(props: T) => {
437
489
  const ariaLabel = Helpers.evaluateProp(props.ariaLabel, props);
438
- const style = getSingleValue(props.style);
490
+ const style = getSingleValue(props.style!);
439
491
  const lineHeight = getLineHeight(props);
440
492
  const direction = props.direction
441
493
  ? Helpers.evaluateProp(props.direction, props)
@@ -463,7 +515,7 @@ const getCalculatedProps = (props) => {
463
515
  originalDy: props.dy,
464
516
  transform,
465
517
  x,
466
- y
518
+ y,
467
519
  });
468
520
  };
469
521
 
@@ -486,7 +538,7 @@ const renderLabel = (calculatedProps, tspanValues) => {
486
538
  id,
487
539
  tabIndex,
488
540
  tspanComponent,
489
- textComponent
541
+ textComponent,
490
542
  } = calculatedProps;
491
543
  const userProps = UserProps.getSafeUserProps(calculatedProps);
492
544
 
@@ -504,7 +556,7 @@ const renderLabel = (calculatedProps, tspanValues) => {
504
556
  desc: Helpers.evaluateProp(desc, calculatedProps),
505
557
  tabIndex: Helpers.evaluateProp(tabIndex, calculatedProps),
506
558
  id,
507
- ...userProps
559
+ ...userProps,
508
560
  };
509
561
 
510
562
  const tspans = text.map((line, i) => {
@@ -516,7 +568,7 @@ const renderLabel = (calculatedProps, tspanValues) => {
516
568
  dy: getTSpanDy(tspanValues, calculatedProps, i),
517
569
  textAnchor: currentStyle.textAnchor || textAnchor,
518
570
  style: currentStyle,
519
- children: line
571
+ children: line,
520
572
  };
521
573
  return React.cloneElement(tspanComponent, tspanProps);
522
574
  });
@@ -524,7 +576,10 @@ const renderLabel = (calculatedProps, tspanValues) => {
524
576
  return React.cloneElement(textComponent, textProps, tspans);
525
577
  };
526
578
 
527
- const VictoryLabel = (props) => {
579
+ export const VictoryLabel: {
580
+ role: string;
581
+ defaultStyles: typeof defaultStyles;
582
+ } & React.FC<VictoryLabelProps> = (props) => {
528
583
  props = evaluateProps(props);
529
584
 
530
585
  if (props.text === null || props.text === undefined) {
@@ -535,11 +590,11 @@ const VictoryLabel = (props) => {
535
590
  const { text, style, capHeight, backgroundPadding, lineHeight } =
536
591
  calculatedProps;
537
592
 
538
- const tspanValues = text.map((line, i) => {
539
- const currentStyle = getSingleValue(style, i);
593
+ const tspanValues = (text as string[]).map((line, i) => {
594
+ const currentStyle = getSingleValue(style!, i);
540
595
  const capHeightPx = TextSize.convertLengthToPixels(
541
596
  `${capHeight}em`,
542
- currentStyle.fontSize
597
+ currentStyle.fontSize as number,
543
598
  );
544
599
  const currentLineHeight = getSingleValue(lineHeight, i);
545
600
  return {
@@ -547,9 +602,10 @@ const VictoryLabel = (props) => {
547
602
  fontSize: currentStyle.fontSize || defaultStyles.fontSize,
548
603
  capHeight: capHeightPx,
549
604
  text: line,
605
+ // @ts-expect-error TODO: This looks like a bug:
550
606
  textSize: TextSize.approximateTextSize(line, currentStyle),
551
607
  lineHeight: currentLineHeight,
552
- backgroundPadding: getSingleValue(backgroundPadding, i)
608
+ backgroundPadding: getSingleValue(backgroundPadding, i),
553
609
  };
554
610
  });
555
611
 
@@ -558,13 +614,13 @@ const VictoryLabel = (props) => {
558
614
  if (props.backgroundStyle) {
559
615
  const backgroundElement = getBackgroundElement(
560
616
  calculatedProps,
561
- tspanValues
617
+ tspanValues,
562
618
  );
563
619
  const children = [backgroundElement, label];
564
620
  const backgroundWithLabel = React.cloneElement(
565
- props.groupComponent,
621
+ props.groupComponent!,
566
622
  {},
567
- children
623
+ children,
568
624
  );
569
625
 
570
626
  return props.renderInPortal ? (
@@ -585,24 +641,25 @@ VictoryLabel.propTypes = {
585
641
  angle: PropTypes.oneOfType([
586
642
  PropTypes.string,
587
643
  PropTypes.number,
588
- PropTypes.func
644
+ PropTypes.func,
589
645
  ]),
590
646
  ariaLabel: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),
591
647
  backgroundComponent: PropTypes.element,
592
648
  backgroundPadding: PropTypes.oneOfType([
593
649
  PropTypes.number,
594
650
  PropTypes.object,
595
- PropTypes.array
651
+ PropTypes.array,
596
652
  ]),
597
653
  backgroundStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),
598
654
  capHeight: PropTypes.oneOfType([
599
655
  PropTypes.string,
600
656
  CustomPropTypes.nonNegative,
601
- PropTypes.func
657
+ PropTypes.func,
602
658
  ]),
603
659
  className: PropTypes.string,
604
660
  data: PropTypes.array,
605
661
  datum: PropTypes.any,
662
+ // @ts-expect-error "Function is not assignable to string"
606
663
  desc: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),
607
664
  direction: PropTypes.oneOf(["rtl", "ltr", "inherit"]),
608
665
  dx: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.func]),
@@ -617,17 +674,17 @@ VictoryLabel.propTypes = {
617
674
  PropTypes.string,
618
675
  CustomPropTypes.nonNegative,
619
676
  PropTypes.func,
620
- PropTypes.array
677
+ PropTypes.array,
621
678
  ]),
622
679
  origin: PropTypes.shape({
623
- x: CustomPropTypes.nonNegative,
624
- y: CustomPropTypes.nonNegative
680
+ x: CustomPropTypes.nonNegative.isRequired,
681
+ y: CustomPropTypes.nonNegative.isRequired,
625
682
  }),
626
683
  polar: PropTypes.bool,
627
684
  renderInPortal: PropTypes.bool,
628
685
  scale: PropTypes.shape({
629
686
  x: CustomPropTypes.scale,
630
- y: CustomPropTypes.scale
687
+ y: CustomPropTypes.scale,
631
688
  }),
632
689
  style: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),
633
690
  tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.func]),
@@ -635,26 +692,30 @@ VictoryLabel.propTypes = {
635
692
  PropTypes.string,
636
693
  PropTypes.number,
637
694
  PropTypes.func,
638
- PropTypes.array
695
+ PropTypes.array,
639
696
  ]),
697
+ // @ts-expect-error Function is not assignable to string"
640
698
  textAnchor: PropTypes.oneOfType([
641
699
  PropTypes.oneOf(["start", "middle", "end", "inherit"]),
642
- PropTypes.func
700
+ PropTypes.func,
643
701
  ]),
644
702
  textComponent: PropTypes.element,
645
703
  title: PropTypes.string,
646
704
  transform: PropTypes.oneOfType([
647
705
  PropTypes.string,
648
706
  PropTypes.object,
649
- PropTypes.func
707
+ PropTypes.func,
650
708
  ]),
651
709
  tspanComponent: PropTypes.element,
710
+ // @ts-expect-error Function is not assignable to string"
652
711
  verticalAnchor: PropTypes.oneOfType([
653
712
  PropTypes.oneOf(["start", "middle", "end"]),
654
- PropTypes.func
713
+ PropTypes.func,
655
714
  ]),
715
+ // @ts-expect-error Number is not assignable to string
656
716
  x: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
657
- 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]),
658
719
  };
659
720
 
660
721
  VictoryLabel.defaultProps = {
@@ -664,7 +725,5 @@ VictoryLabel.defaultProps = {
664
725
  textComponent: <Text />,
665
726
  tspanComponent: <TSpan />,
666
727
  capHeight: 0.71, // Magic number from d3.
667
- lineHeight: 1
728
+ lineHeight: 1,
668
729
  };
669
-
670
- 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;