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
@@ -0,0 +1,39 @@
1
+ import { AxisType, Padding, RangeTuple } from "../../types/prop-types";
2
+ import { getPadding } from "../../victory-util/helpers";
3
+ import { getValueForAxis, isTuple } from "../../victory-util/type-helpers";
4
+ import { VictoryProviderProps } from "../types";
5
+
6
+ type RangeProps = Pick<
7
+ VictoryProviderProps,
8
+ "range" | "padding" | "height" | "width"
9
+ >;
10
+
11
+ // TODO: Should we store these defaults somewhere?
12
+ const DEFAULT_HEIGHT = 300;
13
+ const DEFAULT_WIDTH = 450;
14
+
15
+ // TODO: This does not include polar range
16
+ export function getRange(
17
+ {
18
+ range,
19
+ height = DEFAULT_HEIGHT,
20
+ width = DEFAULT_WIDTH,
21
+ ...props
22
+ }: RangeProps,
23
+ axis: AxisType,
24
+ ) {
25
+ const rangeFromProps = getValueForAxis<RangeTuple>(range, axis);
26
+
27
+ if (isTuple(rangeFromProps)) {
28
+ return rangeFromProps;
29
+ }
30
+
31
+ // TODO: Convert this to TS
32
+ const padding = getPadding({ padding: props.padding }) as Padding;
33
+ const rangeForAxis = {
34
+ x: [padding.left, width - padding.right],
35
+ y: [height - padding.top, padding.bottom],
36
+ };
37
+
38
+ return rangeForAxis[axis];
39
+ }
@@ -0,0 +1,64 @@
1
+ import {
2
+ scaleLinear,
3
+ scaleTime,
4
+ scaleLog,
5
+ scaleSqrt,
6
+ } from "victory-vendor/d3-scale";
7
+ import { AxisType, D3ScaleFn, ScalePropType } from "../../types/prop-types";
8
+ import * as Collection from "../../victory-util/collection";
9
+ import { getValueForAxis, isFunction } from "../../victory-util/type-helpers";
10
+ import { VictoryProviderProps } from "../types";
11
+ import { getAxisData } from "./get-axis-data";
12
+
13
+ type Scale = ScalePropType | D3ScaleFn;
14
+
15
+ type ScaleProps = Pick<VictoryProviderProps, "data" | "scale">;
16
+
17
+ const DEFAULT_SCALE = scaleLinear;
18
+
19
+ function isD3Scale(scale?: unknown): scale is D3ScaleFn {
20
+ return (
21
+ isFunction(scale) &&
22
+ isFunction(scale().copy) &&
23
+ isFunction(scale().domain) &&
24
+ isFunction(scale().range)
25
+ );
26
+ }
27
+
28
+ function getD3ScaleFromString(scale: ScalePropType): D3ScaleFn {
29
+ switch (scale) {
30
+ case "linear":
31
+ return scaleLinear;
32
+ case "time":
33
+ return scaleTime;
34
+ case "log":
35
+ return scaleLog;
36
+ case "sqrt":
37
+ return scaleSqrt;
38
+ default:
39
+ return DEFAULT_SCALE;
40
+ }
41
+ }
42
+
43
+ export function getScale(
44
+ { data = [], ...props }: ScaleProps,
45
+ axis: AxisType,
46
+ ): D3ScaleFn {
47
+ const scale = getValueForAxis<Scale>(props.scale, axis);
48
+
49
+ if (isD3Scale(scale)) {
50
+ return scale;
51
+ }
52
+
53
+ if (typeof scale === "string") {
54
+ return getD3ScaleFromString(scale);
55
+ }
56
+
57
+ const axisData = getAxisData(data, axis);
58
+
59
+ if (Collection.containsDates(axisData)) {
60
+ return scaleTime;
61
+ }
62
+
63
+ return DEFAULT_SCALE;
64
+ }
@@ -0,0 +1,2 @@
1
+ export * from "./victory-provider";
2
+ export * from "./types";
@@ -0,0 +1,32 @@
1
+ import {
2
+ D3ScaleFn,
3
+ Datum,
4
+ DomainTuple,
5
+ RangeTuple,
6
+ ScalePropType,
7
+ ValueOrAxes,
8
+ } from "../types/prop-types";
9
+ import { PaddingProps } from "../victory-theme/types";
10
+
11
+ // These are all the props that are used to calculate data, domain, range, and scale
12
+ export interface VictoryCalculatedStateProps {
13
+ data?: Datum[];
14
+ domain?: ValueOrAxes<DomainTuple>;
15
+ height?: number;
16
+ includeZero?: boolean;
17
+ maxDomain?: ValueOrAxes<number>;
18
+ minDomain?: ValueOrAxes<number>;
19
+ padding?: PaddingProps;
20
+ range?: ValueOrAxes<RangeTuple>;
21
+ samples?: number;
22
+ scale?: ValueOrAxes<ScalePropType | D3ScaleFn>;
23
+ sortKey?: string;
24
+ sortOrder?: "ascending" | "descending";
25
+ width?: number;
26
+ x?: string;
27
+ y?: string;
28
+ }
29
+
30
+ export interface VictoryProviderProps extends VictoryCalculatedStateProps {
31
+ children?: React.ReactNode;
32
+ }
@@ -0,0 +1,116 @@
1
+ import * as React from "react";
2
+ import { createContext, useContext } from "react";
3
+ import { D3ScaleFn, DomainTuple, ForAxes } from "../types/prop-types";
4
+ import { FormattedDatum, getData } from "./helpers/get-data";
5
+ import { getDomain } from "./helpers/get-domain";
6
+ import { getRange } from "./helpers/get-range";
7
+ import { getScale } from "./helpers/get-scale";
8
+ import { VictoryCalculatedStateProps, VictoryProviderProps } from "./types";
9
+
10
+ type ScaleType = Required<ForAxes<D3ScaleFn>>;
11
+ type DomainType = Required<ForAxes<DomainTuple>>;
12
+
13
+ export interface ContextType {
14
+ data: FormattedDatum[];
15
+ scale: ScaleType;
16
+ domain: DomainType;
17
+ setChildProps: (id: string, props: VictoryProviderProps) => void;
18
+ }
19
+
20
+ const VictoryContext = createContext<ContextType | null>(null);
21
+
22
+ export function VictoryProvider({
23
+ children,
24
+ ...initialProps
25
+ }: VictoryProviderProps) {
26
+ // We need to store the props in state so they can be overwritten by child components
27
+ const [props, setProps] = React.useState(initialProps);
28
+
29
+ const setChildProps = React.useCallback(
30
+ (id: string, newProps: VictoryCalculatedStateProps) => {
31
+ setProps((prevProps) => {
32
+ return { ...prevProps, ...newProps };
33
+ });
34
+ },
35
+ [],
36
+ );
37
+
38
+ const data = React.useMemo(() => {
39
+ return getData(props);
40
+ }, [props]);
41
+
42
+ const domain = React.useMemo(() => {
43
+ return {
44
+ x: getDomain(props, "x"),
45
+ y: getDomain(props, "y"),
46
+ };
47
+ }, [props]);
48
+
49
+ const range = React.useMemo(
50
+ () => ({
51
+ x: getRange(props, "x"),
52
+ y: getRange(props, "y"),
53
+ }),
54
+ [props],
55
+ );
56
+
57
+ const scale = React.useMemo(() => {
58
+ const xBaseScaleFn = getScale(props, "x");
59
+ const yBaseScaleFn = getScale(props, "y");
60
+
61
+ // @ts-expect-error: This is a valid scale function
62
+ const xScaleFn = xBaseScaleFn().domain(domain.x).range(range.x);
63
+ // @ts-expect-error: This is a valid scale function
64
+ const yScaleFn = yBaseScaleFn().domain(domain.y).range(range.y);
65
+
66
+ return {
67
+ x: xScaleFn,
68
+ y: yScaleFn,
69
+ };
70
+ }, [props, domain, range]);
71
+
72
+ const value = {
73
+ scale,
74
+ data,
75
+ domain,
76
+ setChildProps,
77
+ };
78
+
79
+ return (
80
+ <VictoryContext.Provider value={value}>{children}</VictoryContext.Provider>
81
+ );
82
+ }
83
+
84
+ export function useVictoryContext<T>(selector: (value: ContextType) => T): T {
85
+ const context = useContext(VictoryContext);
86
+ if (!context) {
87
+ throw new Error("useVictoryContext must be used within a VictoryProvider");
88
+ }
89
+ return selector(context);
90
+ }
91
+
92
+ export function useScale() {
93
+ return useVictoryContext<ScaleType>((value) => value.scale);
94
+ }
95
+
96
+ export function useData() {
97
+ return useVictoryContext<FormattedDatum[]>((value) => value.data);
98
+ }
99
+
100
+ export function useDomain() {
101
+ return useVictoryContext<DomainType>((value) => value.domain);
102
+ }
103
+
104
+ // This function keeps props in sync betwen the VictoryProvider and child components
105
+ export function useVictoryProviderSync(
106
+ id: string,
107
+ props: VictoryCalculatedStateProps,
108
+ ) {
109
+ const setChildProps = useVictoryContext((value) => value.setChildProps);
110
+
111
+ React.useEffect(() => {
112
+ setChildProps(id, props);
113
+ }, []);
114
+
115
+ return props;
116
+ }
@@ -1,4 +1,5 @@
1
1
  import { assign } from "lodash";
2
+ import { VictoryThemeDefinition } from "./types";
2
3
 
3
4
  // *
4
5
  // * Colors
@@ -10,7 +11,7 @@ const colors = [
10
11
  "#969696",
11
12
  "#bdbdbd",
12
13
  "#d9d9d9",
13
- "#f0f0f0"
14
+ "#f0f0f0",
14
15
  ];
15
16
 
16
17
  const charcoal = "#252525";
@@ -28,7 +29,7 @@ const baseProps = {
28
29
  width: 450,
29
30
  height: 300,
30
31
  padding: 50,
31
- colorScale: colors
32
+ colorScale: colors,
32
33
  };
33
34
  // *
34
35
  // * Labels
@@ -39,7 +40,7 @@ const baseLabelStyles = {
39
40
  letterSpacing,
40
41
  padding: 10,
41
42
  fill: charcoal,
42
- stroke: "transparent"
43
+ stroke: "transparent",
43
44
  };
44
45
 
45
46
  const centeredLabelStyles = assign({ textAnchor: "middle" }, baseLabelStyles);
@@ -49,17 +50,17 @@ const centeredLabelStyles = assign({ textAnchor: "middle" }, baseLabelStyles);
49
50
  const strokeLinecap = "round";
50
51
  const strokeLinejoin = "round";
51
52
 
52
- export default {
53
+ export const grayscale: VictoryThemeDefinition = {
53
54
  area: assign(
54
55
  {
55
56
  style: {
56
57
  data: {
57
- fill: charcoal
58
+ fill: charcoal,
58
59
  },
59
- labels: baseLabelStyles
60
- }
60
+ labels: baseLabelStyles,
61
+ },
61
62
  },
62
- baseProps
63
+ baseProps,
63
64
  ),
64
65
  axis: assign(
65
66
  {
@@ -69,25 +70,25 @@ export default {
69
70
  stroke: charcoal,
70
71
  strokeWidth: 1,
71
72
  strokeLinecap,
72
- strokeLinejoin
73
+ strokeLinejoin,
73
74
  },
74
75
  axisLabel: assign({}, centeredLabelStyles, {
75
- padding: 25
76
+ padding: 25,
76
77
  }),
77
78
  grid: {
78
79
  fill: "none",
79
80
  stroke: "none",
80
- pointerEvents: "painted"
81
+ pointerEvents: "painted",
81
82
  },
82
83
  ticks: {
83
84
  fill: "transparent",
84
85
  size: 1,
85
- stroke: "transparent"
86
+ stroke: "transparent",
86
87
  },
87
- tickLabels: baseLabelStyles
88
- }
88
+ tickLabels: baseLabelStyles,
89
+ },
89
90
  },
90
- baseProps
91
+ baseProps,
91
92
  ),
92
93
  bar: assign(
93
94
  {
@@ -95,12 +96,12 @@ export default {
95
96
  data: {
96
97
  fill: charcoal,
97
98
  padding: 8,
98
- strokeWidth: 0
99
+ strokeWidth: 0,
99
100
  },
100
- labels: baseLabelStyles
101
- }
101
+ labels: baseLabelStyles,
102
+ },
102
103
  },
103
- baseProps
104
+ baseProps,
104
105
  ),
105
106
  boxplot: assign(
106
107
  {
@@ -114,27 +115,27 @@ export default {
114
115
  q1: { padding: 8, fill: grey },
115
116
  q1Labels: assign({}, baseLabelStyles, { padding: 3 }),
116
117
  q3: { padding: 8, fill: grey },
117
- q3Labels: assign({}, baseLabelStyles, { padding: 3 })
118
+ q3Labels: assign({}, baseLabelStyles, { padding: 3 }),
118
119
  },
119
- boxWidth: 20
120
+ boxWidth: 20,
120
121
  },
121
- baseProps
122
+ baseProps,
122
123
  ),
123
124
  candlestick: assign(
124
125
  {
125
126
  style: {
126
127
  data: {
127
128
  stroke: charcoal,
128
- strokeWidth: 1
129
+ strokeWidth: 1,
129
130
  },
130
- labels: assign({}, baseLabelStyles, { padding: 5 })
131
+ labels: assign({}, baseLabelStyles, { padding: 5 }),
131
132
  },
132
133
  candleColors: {
133
134
  positive: "#ffffff",
134
- negative: charcoal
135
- }
135
+ negative: charcoal,
136
+ },
136
137
  },
137
- baseProps
138
+ baseProps,
138
139
  ),
139
140
  chart: baseProps,
140
141
  errorbar: assign(
@@ -144,18 +145,18 @@ export default {
144
145
  data: {
145
146
  fill: "transparent",
146
147
  stroke: charcoal,
147
- strokeWidth: 2
148
+ strokeWidth: 2,
148
149
  },
149
- labels: baseLabelStyles
150
- }
150
+ labels: baseLabelStyles,
151
+ },
151
152
  },
152
- baseProps
153
+ baseProps,
153
154
  ),
154
155
  group: assign(
155
156
  {
156
- colorScale: colors
157
+ colorScale: colors,
157
158
  },
158
- baseProps
159
+ baseProps,
159
160
  ),
160
161
  histogram: assign(
161
162
  {
@@ -163,12 +164,12 @@ export default {
163
164
  data: {
164
165
  fill: grey,
165
166
  stroke: charcoal,
166
- strokeWidth: 2
167
+ strokeWidth: 2,
167
168
  },
168
- labels: baseLabelStyles
169
- }
169
+ labels: baseLabelStyles,
170
+ },
170
171
  },
171
- baseProps
172
+ baseProps,
172
173
  ),
173
174
  legend: {
174
175
  colorScale: colors,
@@ -177,11 +178,11 @@ export default {
177
178
  titleOrientation: "top",
178
179
  style: {
179
180
  data: {
180
- type: "circle"
181
+ type: "circle",
181
182
  },
182
183
  labels: baseLabelStyles,
183
- title: assign({}, baseLabelStyles, { padding: 5 })
184
- }
184
+ title: assign({}, baseLabelStyles, { padding: 5 }),
185
+ },
185
186
  },
186
187
  line: assign(
187
188
  {
@@ -189,26 +190,26 @@ export default {
189
190
  data: {
190
191
  fill: "transparent",
191
192
  stroke: charcoal,
192
- strokeWidth: 2
193
+ strokeWidth: 2,
193
194
  },
194
- labels: baseLabelStyles
195
- }
195
+ labels: baseLabelStyles,
196
+ },
196
197
  },
197
- baseProps
198
+ baseProps,
198
199
  ),
199
200
  pie: {
200
201
  style: {
201
202
  data: {
202
203
  padding: 10,
203
204
  stroke: "transparent",
204
- strokeWidth: 1
205
+ strokeWidth: 1,
205
206
  },
206
- labels: assign({}, baseLabelStyles, { padding: 20 })
207
+ labels: assign({}, baseLabelStyles, { padding: 20 }),
207
208
  },
208
209
  colorScale: colors,
209
210
  width: 400,
210
211
  height: 400,
211
- padding: 50
212
+ padding: 50,
212
213
  },
213
214
  scatter: assign(
214
215
  {
@@ -216,18 +217,18 @@ export default {
216
217
  data: {
217
218
  fill: charcoal,
218
219
  stroke: "transparent",
219
- strokeWidth: 0
220
+ strokeWidth: 0,
220
221
  },
221
- labels: baseLabelStyles
222
- }
222
+ labels: baseLabelStyles,
223
+ },
223
224
  },
224
- baseProps
225
+ baseProps,
225
226
  ),
226
227
  stack: assign(
227
228
  {
228
- colorScale: colors
229
+ colorScale: colors,
229
230
  },
230
- baseProps
231
+ baseProps,
231
232
  ),
232
233
  tooltip: {
233
234
  style: assign({}, baseLabelStyles, { padding: 0, pointerEvents: "none" }),
@@ -235,11 +236,11 @@ export default {
235
236
  stroke: charcoal,
236
237
  strokeWidth: 1,
237
238
  fill: "#f0f0f0",
238
- pointerEvents: "none"
239
+ pointerEvents: "none",
239
240
  },
240
241
  flyoutPadding: 5,
241
242
  cornerRadius: 5,
242
- pointerLength: 10
243
+ pointerLength: 10,
243
244
  },
244
245
  voronoi: assign(
245
246
  {
@@ -247,20 +248,20 @@ export default {
247
248
  data: {
248
249
  fill: "transparent",
249
250
  stroke: "transparent",
250
- strokeWidth: 0
251
+ strokeWidth: 0,
251
252
  },
252
253
  labels: assign({}, baseLabelStyles, {
253
254
  padding: 5,
254
- pointerEvents: "none"
255
+ pointerEvents: "none",
255
256
  }),
256
257
  flyout: {
257
258
  stroke: charcoal,
258
259
  strokeWidth: 1,
259
260
  fill: "#f0f0f0",
260
- pointerEvents: "none"
261
- }
262
- }
261
+ pointerEvents: "none",
262
+ },
263
+ },
263
264
  },
264
- baseProps
265
- )
265
+ baseProps,
266
+ ),
266
267
  };