@primeui/chart-core 0.0.1-alpha.1 → 1.0.0-beta.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 (244) hide show
  1. package/dist/animations/index.d.mts +1 -1
  2. package/dist/animations/index.mjs +19 -18
  3. package/dist/{annotation.utils-Bm0lOO1o.d.mts → annotation.utils-D-7ijAWO.d.mts} +22 -1
  4. package/dist/cartesian/index.d.mts +3 -2
  5. package/dist/cartesian/index.mjs +96 -93
  6. package/dist/{chunk-WPFUV7K3.mjs → chunks/chunk-2LLTN7T4.mjs} +23 -14
  7. package/dist/{chunk-RO4N6YFS.mjs → chunks/chunk-2T226WJI.mjs} +31 -14
  8. package/dist/{chunk-A6ZQZFL2.mjs → chunks/chunk-3CUSPV47.mjs} +12 -9
  9. package/dist/{chunk-3FFJEX4A.mjs → chunks/chunk-3QQLETCJ.mjs} +13 -12
  10. package/dist/{chunk-JWFBOPM6.mjs → chunks/chunk-4N2XIMAB.mjs} +2 -2
  11. package/dist/{chunk-LVMDQ4OJ.mjs → chunks/chunk-4S3FOFCN.mjs} +2 -2
  12. package/dist/{chunk-XTVE4P3L.mjs → chunks/chunk-56MASQS2.mjs} +6 -2
  13. package/dist/{chunk-DTWTCFRG.mjs → chunks/chunk-5EQSFUBA.mjs} +41 -13
  14. package/dist/{chunk-KQIFO5I3.mjs → chunks/chunk-5QSTMSPW.mjs} +15 -10
  15. package/dist/{chunk-NKUYIWAP.mjs → chunks/chunk-6LUIVTNV.mjs} +6 -6
  16. package/dist/chunks/chunk-6MAO6I3E.mjs +6 -0
  17. package/dist/{chunk-WFVOQ2QZ.mjs → chunks/chunk-77K3DEKL.mjs} +2 -2
  18. package/dist/{chunk-4C6EVJ54.mjs → chunks/chunk-7I2SAKHL.mjs} +7 -44
  19. package/dist/{chunk-6HSEJLSR.mjs → chunks/chunk-7I2SNJ2X.mjs} +35 -18
  20. package/dist/{chunk-66T4MRC5.mjs → chunks/chunk-7IKKWWRT.mjs} +4 -6
  21. package/dist/{chunk-BKP26M4K.mjs → chunks/chunk-7LZWQVTL.mjs} +43 -24
  22. package/dist/{chunk-NHRK5KU2.mjs → chunks/chunk-A5YBHYIS.mjs} +25 -17
  23. package/dist/{chunk-ZT2Z7ERM.mjs → chunks/chunk-AC5EAWIP.mjs} +12 -9
  24. package/dist/{chunk-ZTL2FQEW.mjs → chunks/chunk-AETETRB4.mjs} +24 -9
  25. package/dist/{chunk-NPDZLYIF.mjs → chunks/chunk-AJ24XDEK.mjs} +2 -2
  26. package/dist/chunks/chunk-ARVMVGWS.mjs +40 -0
  27. package/dist/{chunk-3IYSJ2U7.mjs → chunks/chunk-AYEAEAOV.mjs} +10 -7
  28. package/dist/{chunk-M7B3JF43.mjs → chunks/chunk-AZPJMIZE.mjs} +4 -3
  29. package/dist/{chunk-O2X6FF45.mjs → chunks/chunk-BDCNBS6W.mjs} +194 -168
  30. package/dist/{chunk-55Y3WI6S.mjs → chunks/chunk-BR4PSSPU.mjs} +6 -6
  31. package/dist/{chunk-DN6AXQYZ.mjs → chunks/chunk-BYAAMQBN.mjs} +46 -41
  32. package/dist/{chunk-TA4MVAEX.mjs → chunks/chunk-CFA2SUBF.mjs} +32 -24
  33. package/dist/{chunk-WH3C3Y7P.mjs → chunks/chunk-CKQ4DNNJ.mjs} +7 -18
  34. package/dist/chunks/chunk-DIJFKY6H.mjs +21 -0
  35. package/dist/{chunk-AUF4CHDP.mjs → chunks/chunk-DJOHDKTP.mjs} +18 -11
  36. package/dist/{chunk-3Z62EUJN.mjs → chunks/chunk-DKWZKYHF.mjs} +5 -5
  37. package/dist/{chunk-PLSDU3C2.mjs → chunks/chunk-DOC4YOCD.mjs} +63 -37
  38. package/dist/{chunk-Y3L3D4GQ.mjs → chunks/chunk-DORUY7GR.mjs} +69 -34
  39. package/dist/chunks/chunk-DWBJKYLH.mjs +238 -0
  40. package/dist/{chunk-XQQCGFYB.mjs → chunks/chunk-EQLCJTM4.mjs} +1 -1
  41. package/dist/{chunk-VGLSBZDN.mjs → chunks/chunk-F2E2QCZM.mjs} +1 -1
  42. package/dist/{chunk-BZN2QHGP.mjs → chunks/chunk-F6AGZQDA.mjs} +4 -72
  43. package/dist/{chunk-ILUWFYGY.mjs → chunks/chunk-FNMLVZOA.mjs} +8 -8
  44. package/dist/{chunk-SXHVDJGF.mjs → chunks/chunk-FQAFGPW6.mjs} +6 -6
  45. package/dist/{chunk-N3TIT3OH.mjs → chunks/chunk-FSPE3M5E.mjs} +66 -43
  46. package/dist/{chunk-KNDZP446.mjs → chunks/chunk-FSWYYRPX.mjs} +5 -5
  47. package/dist/{chunk-KP2TWD4Z.mjs → chunks/chunk-FWNWV3H7.mjs} +1 -1
  48. package/dist/chunks/chunk-G3DIMENH.mjs +63 -0
  49. package/dist/{chunk-QQBXUDM4.mjs → chunks/chunk-G3DYNMWT.mjs} +20 -16
  50. package/dist/{chunk-J65DBT4R.mjs → chunks/chunk-GA6YZQYT.mjs} +3 -3
  51. package/dist/chunks/chunk-GAQLLQUM.mjs +20 -0
  52. package/dist/{chunk-TAHCOZHF.mjs → chunks/chunk-GN7VQCCH.mjs} +27 -30
  53. package/dist/{chunk-R6Y3R7EW.mjs → chunks/chunk-GOOBVFFH.mjs} +1 -1
  54. package/dist/chunks/chunk-GSW5OBEG.mjs +233 -0
  55. package/dist/{chunk-22ST6YPP.mjs → chunks/chunk-GTX6MLTG.mjs} +9 -9
  56. package/dist/{chunk-XUAASRXW.mjs → chunks/chunk-GWHRTGGC.mjs} +35 -27
  57. package/dist/{chunk-TQ6S34QZ.mjs → chunks/chunk-GXCLRRE5.mjs} +6 -6
  58. package/dist/{chunk-DP2IZNN3.mjs → chunks/chunk-HHBFQ6AI.mjs} +4 -3
  59. package/dist/{chunk-3OZLP4I4.mjs → chunks/chunk-HWT6UEYE.mjs} +14 -10
  60. package/dist/{chunk-X7T34OLW.mjs → chunks/chunk-I25SSZE3.mjs} +3 -3
  61. package/dist/{chunk-OGJ6IIBW.mjs → chunks/chunk-IFJPDARC.mjs} +21 -9
  62. package/dist/{chunk-CINXJIRR.mjs → chunks/chunk-ISU27QL2.mjs} +66 -6
  63. package/dist/{chunk-OXTFAWSK.mjs → chunks/chunk-J2WHJ73Y.mjs} +7 -2
  64. package/dist/{chunk-VN7CKCSE.mjs → chunks/chunk-JS47MSB2.mjs} +9 -1
  65. package/dist/{chunk-WYLILAOO.mjs → chunks/chunk-K44SD67H.mjs} +16 -7
  66. package/dist/{chunk-RQ3CKQOX.mjs → chunks/chunk-K7AGQTVK.mjs} +63 -3
  67. package/dist/{chunk-VVI3OBPJ.mjs → chunks/chunk-KCSMOAZO.mjs} +7 -9
  68. package/dist/{chunk-ARRGOEFX.mjs → chunks/chunk-L6GXEQOO.mjs} +7 -7
  69. package/dist/{chunk-7QQ6ETB4.mjs → chunks/chunk-LBNP5PJA.mjs} +14 -12
  70. package/dist/{chunk-AHYIS6EB.mjs → chunks/chunk-LC2ZEZWP.mjs} +7 -7
  71. package/dist/{chunk-WCG35U6M.mjs → chunks/chunk-LJ6BXF3H.mjs} +31 -23
  72. package/dist/{chunk-3WEMHXZI.mjs → chunks/chunk-LTQH3LQJ.mjs} +2 -8
  73. package/dist/{chunk-QWQ6HY4I.mjs → chunks/chunk-O4BTKF5R.mjs} +9 -8
  74. package/dist/{chunk-WY4AURRE.mjs → chunks/chunk-P2Q4DYOS.mjs} +240 -83
  75. package/dist/{chunk-KVDEROP6.mjs → chunks/chunk-P563L7WL.mjs} +1 -1
  76. package/dist/{chunk-SDBPQ5CF.mjs → chunks/chunk-PJLFNUOW.mjs} +45 -30
  77. package/dist/{chunk-MTGMXRNF.mjs → chunks/chunk-PSDRVQSK.mjs} +7 -7
  78. package/dist/{chunk-6STOLMCA.mjs → chunks/chunk-QCBESCLG.mjs} +13 -12
  79. package/dist/{chunk-PRDVPOZX.mjs → chunks/chunk-QIYJUZ7I.mjs} +7 -2
  80. package/dist/{chunk-UPRXABX5.mjs → chunks/chunk-RH3OQ2VX.mjs} +6 -6
  81. package/dist/{chunk-QS76E3TD.mjs → chunks/chunk-RI32WIDX.mjs} +2 -2
  82. package/dist/{chunk-OWW3K55O.mjs → chunks/chunk-RIAPS5AW.mjs} +49 -7
  83. package/dist/{chunk-ERVQB2VZ.mjs → chunks/chunk-RJ3ZOZTS.mjs} +4 -4
  84. package/dist/{chunk-WFTX4AQJ.mjs → chunks/chunk-RKNL7UWZ.mjs} +19 -7
  85. package/dist/chunks/chunk-RLS3GMJ6.mjs +8 -0
  86. package/dist/{chunk-WRULPWHD.mjs → chunks/chunk-RVTEIKW5.mjs} +5 -5
  87. package/dist/{chunk-FHTC2YDB.mjs → chunks/chunk-SVASYTK5.mjs} +70 -5
  88. package/dist/{chunk-ARB5T6MP.mjs → chunks/chunk-SWVOBJLG.mjs} +3 -100
  89. package/dist/{chunk-OHGCZZPZ.mjs → chunks/chunk-SY7LVXIW.mjs} +53 -27
  90. package/dist/{chunk-JGOVWSKH.mjs → chunks/chunk-TW3KLJVO.mjs} +37 -12
  91. package/dist/{chunk-RBLZRT5K.mjs → chunks/chunk-UF2TPGQB.mjs} +103 -15
  92. package/dist/{chunk-X4D7FKUS.mjs → chunks/chunk-UZWWYKL7.mjs} +2 -2
  93. package/dist/{chunk-LKC7MZKK.mjs → chunks/chunk-XECVYJE2.mjs} +16 -8
  94. package/dist/chunks/chunk-XMSAUIVL.mjs +1 -0
  95. package/dist/{chunk-J4RI2C2G.mjs → chunks/chunk-XPZTRMU2.mjs} +6 -6
  96. package/dist/{chunk-BABQKA6K.mjs → chunks/chunk-XXJRGDKE.mjs} +3 -3
  97. package/dist/{chunk-SALTGZFR.mjs → chunks/chunk-YVDVKLPR.mjs} +10 -9
  98. package/dist/circular/arc/index.mjs +3 -3
  99. package/dist/circular/index.d.mts +1 -1
  100. package/dist/circular/index.mjs +14 -13
  101. package/dist/controllers/index.mjs +113 -110
  102. package/dist/{datalabel.utils-CkjGeB8S.d.mts → datalabel.utils-CNRKHy7j.d.mts} +10 -1
  103. package/dist/{decimation.utils-CcvJVhI4.d.mts → decimation.utils-C0xpslz_.d.mts} +33 -2
  104. package/dist/geometry-BVWJedvw.d.mts +53 -0
  105. package/dist/index.d.mts +16 -17
  106. package/dist/index.mjs +113 -110
  107. package/dist/luminance-TvUgaQ91.d.mts +57 -0
  108. package/dist/orchestrator/index.d.mts +2 -2
  109. package/dist/orchestrator/index.mjs +36 -33
  110. package/dist/plugins/index.mjs +1 -1
  111. package/dist/{property-animations-D433wXzz.d.mts → property-animations-CI0zyp6V.d.mts} +6 -20
  112. package/dist/radial/index.mjs +40 -37
  113. package/dist/renderers/axis/index.mjs +9 -8
  114. package/dist/renderers/index.d.mts +8 -9
  115. package/dist/renderers/index.mjs +78 -75
  116. package/dist/renderers/navigator/index.d.mts +1 -1
  117. package/dist/renderers/navigator/index.mjs +10 -8
  118. package/dist/{ring.utils-DXvrxMkU.d.mts → ring.utils-aHt9Nqum.d.mts} +2 -7
  119. package/dist/{scale-KFv30jqZ.d.mts → scale-CFkPlyUe.d.mts} +2 -2
  120. package/dist/{scales-Drf8AIhL.d.mts → scales-BZzjlR4U.d.mts} +15 -1
  121. package/dist/series/bar/canvas/index.mjs +11 -10
  122. package/dist/series/bar/controller/index.d.mts +17 -0
  123. package/dist/series/bar/controller/index.mjs +47 -44
  124. package/dist/series/bar/controller-canvas/index.mjs +47 -44
  125. package/dist/series/bar/controller-svg/index.mjs +47 -44
  126. package/dist/series/bar/index.d.mts +2 -2
  127. package/dist/series/bar/index.mjs +16 -13
  128. package/dist/series/bar/svg/index.mjs +14 -11
  129. package/dist/series/candlestick/canvas/index.mjs +8 -8
  130. package/dist/series/candlestick/controller/index.d.mts +2 -0
  131. package/dist/series/candlestick/controller/index.mjs +43 -40
  132. package/dist/series/candlestick/controller-canvas/index.mjs +43 -40
  133. package/dist/series/candlestick/controller-svg/index.mjs +43 -40
  134. package/dist/series/candlestick/index.mjs +11 -10
  135. package/dist/series/candlestick/svg/index.mjs +8 -8
  136. package/dist/series/heatmap/canvas/index.mjs +9 -9
  137. package/dist/series/heatmap/controller/index.d.mts +9 -0
  138. package/dist/series/heatmap/controller/index.mjs +26 -23
  139. package/dist/series/heatmap/controller-canvas/index.mjs +26 -23
  140. package/dist/series/heatmap/controller-svg/index.mjs +26 -23
  141. package/dist/series/heatmap/index.mjs +14 -13
  142. package/dist/series/heatmap/svg/index.mjs +11 -10
  143. package/dist/series/line/canvas/index.mjs +9 -9
  144. package/dist/series/line/controller/index.d.mts +7 -0
  145. package/dist/series/line/controller/index.mjs +51 -47
  146. package/dist/series/line/controller-canvas/index.mjs +53 -49
  147. package/dist/series/line/controller-svg/index.mjs +53 -49
  148. package/dist/series/line/index.d.mts +1 -1
  149. package/dist/series/line/index.mjs +17 -13
  150. package/dist/series/line/svg/index.mjs +12 -9
  151. package/dist/series/pie/canvas/index.d.mts +12 -4
  152. package/dist/series/pie/canvas/index.mjs +15 -10
  153. package/dist/series/pie/controller/index.mjs +113 -110
  154. package/dist/series/pie/controller-canvas/index.mjs +113 -110
  155. package/dist/series/pie/controller-svg/index.mjs +113 -110
  156. package/dist/series/pie/index.d.mts +3 -56
  157. package/dist/series/pie/index.mjs +11 -15
  158. package/dist/series/pie/svg/index.d.mts +18 -4
  159. package/dist/series/pie/svg/index.mjs +10 -11
  160. package/dist/series/polar/canvas/index.mjs +7 -7
  161. package/dist/series/polar/controller/index.d.mts +9 -0
  162. package/dist/series/polar/controller/index.mjs +49 -46
  163. package/dist/series/polar/controller-canvas/index.mjs +50 -47
  164. package/dist/series/polar/controller-svg/index.mjs +50 -47
  165. package/dist/series/polar/index.mjs +19 -16
  166. package/dist/series/polar/svg/index.mjs +11 -8
  167. package/dist/series/radar/canvas/index.mjs +8 -8
  168. package/dist/series/radar/controller/index.d.mts +11 -0
  169. package/dist/series/radar/controller/index.mjs +46 -43
  170. package/dist/series/radar/controller-canvas/index.mjs +49 -46
  171. package/dist/series/radar/controller-svg/index.mjs +49 -46
  172. package/dist/series/radar/index.d.mts +2 -2
  173. package/dist/series/radar/index.mjs +16 -13
  174. package/dist/series/radar/svg/index.mjs +12 -9
  175. package/dist/series/scatter/canvas/index.mjs +13 -11
  176. package/dist/series/scatter/controller/index.mjs +48 -44
  177. package/dist/series/scatter/controller-canvas/index.mjs +50 -46
  178. package/dist/series/scatter/controller-svg/index.mjs +50 -46
  179. package/dist/series/scatter/index.d.mts +1 -1
  180. package/dist/series/scatter/index.mjs +18 -14
  181. package/dist/series/scatter/svg/index.mjs +16 -12
  182. package/dist/series/treemap/canvas/index.mjs +10 -10
  183. package/dist/series/treemap/controller/index.mjs +23 -20
  184. package/dist/series/treemap/controller-canvas/index.mjs +23 -20
  185. package/dist/series/treemap/controller-svg/index.mjs +23 -20
  186. package/dist/series/treemap/index.d.mts +17 -9
  187. package/dist/series/treemap/index.mjs +12 -12
  188. package/dist/series/treemap/svg/index.mjs +9 -9
  189. package/dist/{stacking-CChuAcLN.d.mts → stacking-Dz1OBhzm.d.mts} +1 -1
  190. package/dist/sync/index.mjs +6 -5
  191. package/dist/{tooltip.renderer-D5wpSlBa.d.mts → tooltip.renderer-DZfza6xV.d.mts} +3 -3
  192. package/dist/utils/color/index.d.mts +11 -53
  193. package/dist/utils/color/index.mjs +4 -4
  194. package/dist/utils/data/index.d.mts +2 -2
  195. package/dist/utils/data/index.mjs +7 -7
  196. package/dist/utils/export/index.mjs +6 -6
  197. package/dist/utils/index.d.mts +7 -7
  198. package/dist/utils/index.mjs +32 -29
  199. package/dist/utils/interaction/index.d.mts +1 -31
  200. package/dist/utils/interaction/index.mjs +12 -9
  201. package/dist/utils/layout/index.mjs +10 -10
  202. package/dist/utils/math/index.d.mts +1 -1
  203. package/dist/utils/math/index.mjs +1 -1
  204. package/dist/utils/render/index.mjs +3 -3
  205. package/dist/utils/specialized/index.d.mts +1 -1
  206. package/dist/utils/specialized/index.mjs +13 -15
  207. package/dist/utils/text/index.d.mts +1 -1
  208. package/dist/utils/text/index.mjs +9 -8
  209. package/dist/utils/theme/index.d.mts +6 -6
  210. package/dist/utils/theme/index.mjs +5 -5
  211. package/dist/utils/zoom/index.mjs +3 -3
  212. package/package.json +3 -3
  213. package/dist/canvas-D4vigq47.d.mts +0 -34
  214. package/dist/chunk-2QRS4YQ5.mjs +0 -18
  215. package/dist/chunk-53HW45JB.mjs +0 -102
  216. package/dist/chunk-B4FTADAZ.mjs +0 -561
  217. package/dist/chunk-IXOWSEHO.mjs +0 -114
  218. package/dist/chunk-VWF57TS3.mjs +0 -62
  219. package/dist/chunk-XIHBK5D3.mjs +0 -68
  220. package/dist/renderers/circular/index.d.mts +0 -13
  221. package/dist/renderers/circular/index.mjs +0 -13
  222. package/dist/{chunk-WA3OVISZ.mjs → chunks/chunk-4KQZXAHZ.mjs} +0 -0
  223. package/dist/{chunk-CHW4RKY3.mjs → chunks/chunk-576P5DBH.mjs} +0 -0
  224. package/dist/{chunk-EDAKJLNA.mjs → chunks/chunk-5WFF272M.mjs} +0 -0
  225. package/dist/{chunk-ADKLH73T.mjs → chunks/chunk-6XZ6U7GL.mjs} +0 -0
  226. package/dist/{chunk-2QK2KOBN.mjs → chunks/chunk-AOTUNMVD.mjs} +0 -0
  227. package/dist/{chunk-AGU3NG6D.mjs → chunks/chunk-AWMO5TS3.mjs} +0 -0
  228. package/dist/{chunk-SSLTFJ3U.mjs → chunks/chunk-BF7RP4A3.mjs} +132 -132
  229. /package/dist/{chunk-BETFQBM2.mjs → chunks/chunk-FML3QEEI.mjs} +0 -0
  230. /package/dist/{chunk-FFMT6OCO.mjs → chunks/chunk-FRVJH7ZG.mjs} +0 -0
  231. /package/dist/{chunk-HDFGCN2F.mjs → chunks/chunk-HBTCRORW.mjs} +0 -0
  232. /package/dist/{chunk-7CMVDIOU.mjs → chunks/chunk-HXDLOOCS.mjs} +0 -0
  233. /package/dist/{chunk-5JCI2DEB.mjs → chunks/chunk-JQVX6XFW.mjs} +0 -0
  234. /package/dist/{chunk-C36VWQ7A.mjs → chunks/chunk-KMKULH54.mjs} +0 -0
  235. /package/dist/{chunk-Q6PPVIHU.mjs → chunks/chunk-MT3OLVZC.mjs} +0 -0
  236. /package/dist/{chunk-WS64BZXT.mjs → chunks/chunk-OWVSSQZ4.mjs} +0 -0
  237. /package/dist/{chunk-EAMUNLRU.mjs → chunks/chunk-P2LG7GDM.mjs} +0 -0
  238. /package/dist/{chunk-IEGLX7VL.mjs → chunks/chunk-PXUXZADY.mjs} +0 -0
  239. /package/dist/{chunk-SANZPAJ4.mjs → chunks/chunk-SFUDXJKO.mjs} +0 -0
  240. /package/dist/{chunk-ZQFK6CAE.mjs → chunks/chunk-SJNUJM54.mjs} +0 -0
  241. /package/dist/{chunk-AP3UYWYT.mjs → chunks/chunk-SPU6BO3B.mjs} +0 -0
  242. /package/dist/{chunk-YBJ56XJS.mjs → chunks/chunk-T2UAEMHY.mjs} +0 -0
  243. /package/dist/{chunk-JO7VACY2.mjs → chunks/chunk-VADXCPQ4.mjs} +0 -0
  244. /package/dist/{chunk-FRST55HY.mjs → chunks/chunk-ZZCVDIU5.mjs} +0 -0
@@ -1,20 +1,26 @@
1
- import { advanceCategoryLerp, initCategoryLerp, snapCategoryLerp, initTimeDomainLerp, initDomainLerp, initDomainLerpTickFade, snapDomainLerp, snapTimeDomainLerp, advanceDomainLerp, advanceTimeDomainLerp } from './chunk-KNDZP446.mjs';
2
- import { transformValues, computeStackBases, detectCartesianMode, computeWaterfallBases } from './chunk-WFTX4AQJ.mjs';
3
- import { renderCartesianOverlay } from './chunk-QQBXUDM4.mjs';
4
- import { computeBarDatasetTotals } from './chunk-7QQ6ETB4.mjs';
5
- import { calculateAxisSpace, calculateAxisLayout } from './chunk-ZTL2FQEW.mjs';
6
- import { parseAnimationConfig } from './chunk-3WEMHXZI.mjs';
7
- import { getResponsiveTier, getAdaptiveDefaults, getAdaptiveTickCount } from './chunk-YBJ56XJS.mjs';
8
- import { cancelRaf, raf } from './chunk-EDAKJLNA.mjs';
9
- import { computeCartesianDomain, selectGroupingInterval, groupTimeData, resolveIncludeZero, computeDomainContribution, mergeDomainContributions, expandScatterBubblePadding, expandDataLabelPadding, computeVisibleValues } from './chunk-22ST6YPP.mjs';
10
- import { collectItems } from './chunk-FFMT6OCO.mjs';
11
- import { measureTextWidth } from './chunk-XTVE4P3L.mjs';
12
- import { resolveFontSize, DEFAULT_GROUP_LABEL_FONT_SIZE, DEFAULT_TICK_FONT_SIZE, DEFAULT_DATA_LABEL_FONT_SIZE, DEFAULT_BRACKET_GAP, DEFAULT_BRACKET_DEPTH_LAYER_SIZE } from './chunk-NKUYIWAP.mjs';
13
- import { decimate } from './chunk-OWW3K55O.mjs';
14
- import { batchResolveRequired, batchResolveAccessor, FIELD_DEFAULTS, resolveAccessor, makeItemContext } from './chunk-O2X6FF45.mjs';
15
- import { generateNiceTicks, calculateNiceDomain, toTimestamp, generateTimeTicks, formatTimeTick, generateIntervalTicks, createBandScale, calculateNiceTimeDomain, MS, createOrdinalTimeScale, createOrdinalTimeBandAdapter, createTimeScale, createTimeBandAdapter, createVariwideBandScale, createLogScale, createLinearScale, calculateGroupedBarLayout, calculateNiceLogDomain } from './chunk-RQ3CKQOX.mjs';
1
+ import { advanceCategoryLerp, initCategoryLerp, snapCategoryLerp, initTimeDomainLerp, initDomainLerp, initDomainLerpTickFade, snapDomainLerp, snapTimeDomainLerp, advanceDomainLerp, advanceTimeDomainLerp } from './chunk-FSWYYRPX.mjs';
2
+ import { transformValues, computeStackBases, detectCartesianMode, computeWaterfallBases } from './chunk-RKNL7UWZ.mjs';
3
+ import { renderCartesianOverlay } from './chunk-G3DYNMWT.mjs';
4
+ import { computeBarDatasetTotals } from './chunk-LBNP5PJA.mjs';
5
+ import { calculateAxisSpace, calculateAxisLayout } from './chunk-AETETRB4.mjs';
6
+ import { parseAnimationConfig } from './chunk-LTQH3LQJ.mjs';
7
+ import { getResponsiveTier, getAdaptiveDefaults, getAdaptiveTickCount } from './chunk-T2UAEMHY.mjs';
8
+ import { cancelRaf, raf } from './chunk-5WFF272M.mjs';
9
+ import { computeCartesianDomain, selectGroupingInterval, groupTimeData, resolveIncludeZero, computeDomainContribution, mergeDomainContributions, expandScatterBubblePadding, expandDataLabelPadding, computeVisibleValues } from './chunk-GTX6MLTG.mjs';
10
+ import { collectItems } from './chunk-FRVJH7ZG.mjs';
11
+ import { safeFormat } from './chunk-DIJFKY6H.mjs';
12
+ import { measureTextWidth } from './chunk-56MASQS2.mjs';
13
+ import { resolveFontSize, DEFAULT_GROUP_LABEL_FONT_SIZE, DEFAULT_TICK_FONT_SIZE, DEFAULT_DATA_LABEL_FONT_SIZE, DEFAULT_BRACKET_GAP, DEFAULT_BRACKET_DEPTH_LAYER_SIZE } from './chunk-6LUIVTNV.mjs';
14
+ import { batchResolveRequired, batchResolveAccessor, FIELD_DEFAULTS, resolveAccessor, makeItemContext } from './chunk-BDCNBS6W.mjs';
15
+ import { decimate } from './chunk-RIAPS5AW.mjs';
16
+ import { validateCartesianAccessors, resolveCartesianAccessors } from './chunk-G3DIMENH.mjs';
17
+ import { generateNiceTicks, calculateNiceDomain, toTimestamp, generateTimeTicks, formatTimeTick, generateIntervalTicks, createBandScale, calculateNiceTimeDomain, MS, createOrdinalTimeScale, createOrdinalTimeBandAdapter, createTimeScale, createTimeBandAdapter, createVariwideBandScale, createLogScale, createLinearScale, warnChartDevOnce, createNumericBandScale, calculateGroupedBarLayout, calculateNiceLogDomain } from './chunk-K7AGQTVK.mjs';
16
18
 
17
19
  // src/cartesian/chart-area.ts
20
+ function resolveAreaAccessors(props) {
21
+ const acc = resolveCartesianAccessors(props);
22
+ return { category: acc.independentField, value: acc.measureField, isCategory: acc.independentIsCategory };
23
+ }
18
24
  function isLayoutCriticalFeature(type) {
19
25
  return type.startsWith("axisGroup") || type === "stacking";
20
26
  }
@@ -32,7 +38,7 @@ function estimateStackedValueDomain(perDataset, distinctStackIds, tickCount, exa
32
38
  if (perDataset.length === 0) return null;
33
39
  const series = perDataset.map((d) => ({
34
40
  values: d.values,
35
- categories: d.categoryField ? batchResolveRequired(d.categoryField, d.data, "categoryField") : d.values.map((_, i) => String(i)),
41
+ categories: d.categoryAccessor ? batchResolveRequired(d.categoryAccessor, d.data, "categoryField") : d.values.map((_, i) => String(i)),
36
42
  stackId: d.stackId
37
43
  }));
38
44
  const catIndex = /* @__PURE__ */ new Map();
@@ -85,8 +91,8 @@ function estimateStackedValueDomain(perDataset, distinctStackIds, tickCount, exa
85
91
  function calculateCartesianArea(outerArea, axes, datasets, features, globalFont, locale, renderersByType, minPadding) {
86
92
  let orientation = "vertical";
87
93
  for (const [, dataset] of datasets) {
88
- if (dataset.type === "bar") {
89
- orientation = dataset.props.orientation ?? "vertical";
94
+ if (dataset.props.categoryYField != null) {
95
+ orientation = "horizontal";
90
96
  break;
91
97
  }
92
98
  }
@@ -155,8 +161,9 @@ function calculateCartesianArea(outerArea, axes, datasets, features, globalFont,
155
161
  let yTickLabels;
156
162
  if (orientation === "horizontal") {
157
163
  for (const [, dataset] of datasets) {
158
- if (!dataset.props.categoryField || !Array.isArray(dataset.props.data)) continue;
159
- yTickLabels = batchResolveRequired(dataset.props.categoryField, dataset.props.data, "categoryField");
164
+ const acc = resolveAreaAccessors(dataset.props);
165
+ if (!acc.isCategory || !Array.isArray(dataset.props.data)) continue;
166
+ yTickLabels = batchResolveRequired(acc.category, dataset.props.data, "categoryField");
160
167
  break;
161
168
  }
162
169
  } else {
@@ -182,12 +189,13 @@ function calculateCartesianArea(outerArea, axes, datasets, features, globalFont,
182
189
  continue;
183
190
  }
184
191
  }
185
- if (dataset.props.valueField) {
186
- const values = batchResolveRequired(dataset.props.valueField, dataset.props.data, "valueField");
192
+ const acc = resolveAreaAccessors(dataset.props);
193
+ if (acc.value) {
194
+ const values = batchResolveRequired(acc.value, dataset.props.data, "valueField");
187
195
  for (const v of values) allValues.push(v);
188
196
  perDatasetValues.push(values);
189
197
  const sid = dataset.props.stackId;
190
- valueDatasets.push({ data: dataset.props.data, categoryField: dataset.props.categoryField, values, stackId: sid });
198
+ valueDatasets.push({ data: dataset.props.data, categoryAccessor: acc.category, values, stackId: sid });
191
199
  if (sid !== void 0) stackIdSet.add(sid);
192
200
  }
193
201
  }
@@ -210,7 +218,13 @@ function calculateCartesianArea(outerArea, axes, datasets, features, globalFont,
210
218
  const formatter = yAxisProps?.tickFormat;
211
219
  const labelsForDomain = (d) => {
212
220
  const ticks = tickInterval !== void 0 ? generateIntervalTicks(d[0], d[1], tickInterval) : generateNiceTicks(d[0], d[1], tickCount, yAxisProps?.tickCount !== void 0);
213
- return ticks.map((v, i) => formatter && typeof formatter === "function" ? formatter(v, i) : v.toLocaleString(locale, { maximumFractionDigits: 2 }));
221
+ return ticks.map(
222
+ (v, i) => formatter && typeof formatter === "function" ? safeFormat(
223
+ () => formatter(v, i),
224
+ () => v.toLocaleString(locale, { maximumFractionDigits: 2 }),
225
+ "tick"
226
+ ) : v.toLocaleString(locale, { maximumFractionDigits: 2 })
227
+ );
214
228
  };
215
229
  const domainPinned = typeof explicitMin === "number" && typeof explicitMax === "number";
216
230
  const labels = new Set(labelsForDomain(domain));
@@ -256,8 +270,9 @@ function calculateCartesianArea(outerArea, axes, datasets, features, globalFont,
256
270
  if (isTimeAxis) {
257
271
  const allTimestamps = [];
258
272
  for (const [, dataset] of datasets) {
259
- if (!Array.isArray(dataset.props.data) || !dataset.props.categoryField) continue;
260
- const rawValues = batchResolveAccessor(dataset.props.categoryField, dataset.props.data);
273
+ const acc = resolveAreaAccessors(dataset.props);
274
+ if (!Array.isArray(dataset.props.data) || !acc.isCategory) continue;
275
+ const rawValues = batchResolveAccessor(acc.category, dataset.props.data);
261
276
  for (const v of rawValues) {
262
277
  const ts = toTimestamp(v);
263
278
  if (!isNaN(ts)) allTimestamps.push(ts);
@@ -286,8 +301,9 @@ function calculateCartesianArea(outerArea, axes, datasets, features, globalFont,
286
301
  break;
287
302
  }
288
303
  }
289
- if (dataset.props.categoryField) {
290
- xTickLabels = batchResolveRequired(dataset.props.categoryField, dataset.props.data, "categoryField");
304
+ const acc = resolveAreaAccessors(dataset.props);
305
+ if (acc.isCategory) {
306
+ xTickLabels = batchResolveRequired(acc.category, dataset.props.data, "categoryField");
291
307
  break;
292
308
  }
293
309
  }
@@ -302,13 +318,23 @@ function calculateCartesianArea(outerArea, axes, datasets, features, globalFont,
302
318
  const valueDatasets = [];
303
319
  const stackIdSet = /* @__PURE__ */ new Set();
304
320
  for (const [, dataset] of datasets) {
305
- if (!dataset.props.valueField || !Array.isArray(dataset.props.data)) continue;
321
+ if (!Array.isArray(dataset.props.data)) continue;
306
322
  const targetId = dataset.props.xAxisId ?? firstXAxisId;
307
323
  if (targetId !== xAxisId) continue;
308
- const values = batchResolveRequired(dataset.props.valueField, dataset.props.data, "valueField");
324
+ const r = renderersByType?.get(dataset.type);
325
+ if (r?.getAxisHints) {
326
+ const hints = r.getAxisHints(dataset.props, dataset.props.data);
327
+ if (hints.domainValues?.length) {
328
+ for (const v of hints.domainValues) allValues.push(v);
329
+ continue;
330
+ }
331
+ }
332
+ const acc = resolveAreaAccessors(dataset.props);
333
+ if (!acc.value) continue;
334
+ const values = batchResolveRequired(acc.value, dataset.props.data, "valueField");
309
335
  for (const v of values) allValues.push(v);
310
336
  const sid = dataset.props.stackId;
311
- valueDatasets.push({ data: dataset.props.data, categoryField: dataset.props.categoryField, values, stackId: sid });
337
+ valueDatasets.push({ data: dataset.props.data, categoryAccessor: acc.category, values, stackId: sid });
312
338
  if (sid !== void 0) stackIdSet.add(sid);
313
339
  }
314
340
  const isStacked = stackIdSet.size > 0 && !hasWaterfall;
@@ -319,7 +345,13 @@ function calculateCartesianArea(outerArea, axes, datasets, features, globalFont,
319
345
  const tickCount = xAxisProps?.tickCount ?? 5;
320
346
  const ticks = tickInterval !== void 0 ? generateIntervalTicks(domain[0], domain[1], tickInterval) : generateNiceTicks(domain[0], domain[1], tickCount, xAxisProps?.tickCount !== void 0);
321
347
  const formatter = xAxisProps?.tickFormat;
322
- xTickLabels = ticks.map((v, i) => formatter && typeof formatter === "function" ? formatter(v, i) : v.toLocaleString(locale, { maximumFractionDigits: 2 }));
348
+ xTickLabels = ticks.map(
349
+ (v, i) => formatter && typeof formatter === "function" ? safeFormat(
350
+ () => formatter(v, i),
351
+ () => v.toLocaleString(locale, { maximumFractionDigits: 2 }),
352
+ "tick"
353
+ ) : v.toLocaleString(locale, { maximumFractionDigits: 2 })
354
+ );
323
355
  }
324
356
  }
325
357
  }
@@ -460,7 +492,7 @@ function buildStaticFrame(ctx, cached, axisTransition) {
460
492
  axisLayouts: transitioned,
461
493
  valueScales: cached.valueScales,
462
494
  valueDomains: cached.valueDomains,
463
- valueXScales: cached.scatterXScales
495
+ valueXScales: cached.valueXScales
464
496
  });
465
497
  }
466
498
  function buildAnimatedFrame(ctx, cached, axisTransition, animatedInput) {
@@ -563,7 +595,7 @@ function runSettleLoop(driver, opts) {
563
595
  driver.settleRafId = raf(loop);
564
596
  }
565
597
  }
566
- function driveCartesianUpdate(layout, driver, axisTransition, animConfig, renderFrame, buildStatic, buildAnimated, globalFont, locale) {
598
+ function driveCartesianUpdate(layout, driver, axisTransition, animConfig, renderFrame, buildStatic, buildAnimated, globalFont, locale, interactive) {
567
599
  const currentSortOrder = layout.sortedCategoryOrder?.join(",") ?? "";
568
600
  const isSortChange = currentSortOrder !== driver.prevSortOrder && driver.prevSortOrder !== "" && currentSortOrder !== "";
569
601
  if (isSortChange && driver.cachedLayout) {
@@ -579,8 +611,8 @@ function driveCartesianUpdate(layout, driver, axisTransition, animConfig, render
579
611
  const { enabled: animEnabled, duration, easing } = parseAnimationConfig(animConfig);
580
612
  const timeDomainFp = layout.timeDomain ? `${layout.timeDomain[0]},${layout.timeDomain[1]}` : "";
581
613
  const lerpTargets = new Map(layout.valueDomains);
582
- if (layout.scatterXScales) {
583
- for (const [id, scale] of layout.scatterXScales) lerpTargets.set(`x:${id}`, scale.domain());
614
+ if (layout.valueXScales) {
615
+ for (const [id, scale] of layout.valueXScales) lerpTargets.set(`x:${id}`, scale.domain());
584
616
  }
585
617
  const currentFingerprint = `${[...lerpTargets.entries()].map(([k, v]) => `${k}:${v[0]},${v[1]}`).join(";")}|${layout.orientation}|${currentSortOrder}|${timeDomainFp}`;
586
618
  const phase = detectPhase(driver, currentFingerprint);
@@ -591,8 +623,8 @@ function driveCartesianUpdate(layout, driver, axisTransition, animConfig, render
591
623
  } else {
592
624
  driver.timeDomainLerp = null;
593
625
  }
594
- const hasDomains = layout.valueDomains.size > 0 || !!layout.scatterXScales?.size;
595
- const animationActive = animEnabled && phase === "update" && (hasDomains || isSortChange || hasTimeDomain);
626
+ const hasDomains = layout.valueDomains.size > 0 || !!layout.valueXScales?.size;
627
+ const animationActive = animEnabled && !interactive && phase === "update" && (hasDomains || isSortChange || hasTimeDomain);
596
628
  const isStreamingAppend = hasTimeDomain && (!prevTimeDomain || prevTimeDomain[0] !== layout.timeDomain[0] || prevTimeDomain[1] !== layout.timeDomain[1]);
597
629
  if (animationActive) {
598
630
  initDomainLerp(driver.domainLerpStates, lerpTargets, { expansionStart: isStreamingAppend });
@@ -829,9 +861,9 @@ function computeAxisLayouts(params) {
829
861
  sharedValueScale,
830
862
  sharedTimeScale,
831
863
  sharedCategoryScale,
832
- scatterXScales,
864
+ valueXScales,
833
865
  valueDomains,
834
- scatterXDomains,
866
+ valueXDomains,
835
867
  mode,
836
868
  adaptive,
837
869
  cartesianArea,
@@ -940,9 +972,9 @@ function computeAxisLayouts(params) {
940
972
  if (isPrimary) sidePrimarySet.add(xPos);
941
973
  const isValueAxis = orientation === "horizontal";
942
974
  const xAxisType = xAxisConfig.props?.type;
943
- const scatterXScale = scatterXScales.get(xAxisId);
944
- const useScatterScale = !!scatterXScale && (xAxisType === "linear" || xAxisType === "logarithmic" || !xAxisType);
945
- const xScale = isValueAxis ? valueScales.get(xAxisId) ?? sharedValueScale : useScatterScale ? scatterXScale : sharedTimeScale ?? sharedCategoryScale;
975
+ const valueXScale = valueXScales.get(xAxisId);
976
+ const useScatterScale = !!valueXScale && (xAxisType === "linear" || xAxisType === "logarithmic" || !xAxisType);
977
+ const xScale = isValueAxis ? valueScales.get(xAxisId) ?? sharedValueScale : useScatterScale ? valueXScale : sharedTimeScale ?? sharedCategoryScale;
946
978
  let xProps = xAxisConfig.props;
947
979
  if (isValueAxis || useScatterScale) {
948
980
  if (mode.isPercentStacked && !xProps.tickFormat) {
@@ -1006,7 +1038,7 @@ function computeAxisLayouts(params) {
1006
1038
  position: xPos,
1007
1039
  layout,
1008
1040
  scale: xScale,
1009
- domain: isValueAxis ? valueDomains.get(xAxisId) : scatterXDomains.get(xAxisId) ?? (sharedTimeScale ? sharedTimeScale.domain() : void 0),
1041
+ domain: isValueAxis ? valueDomains.get(xAxisId) : valueXDomains.get(xAxisId) ?? (sharedTimeScale ? sharedTimeScale.domain() : void 0),
1010
1042
  props: xProps,
1011
1043
  isPrimary,
1012
1044
  offset,
@@ -1101,7 +1133,9 @@ function computeBarPipeline(params) {
1101
1133
  const variwideProps = barDatasets.find((d) => d.props.weightField)?.props;
1102
1134
  isVariwide = variwideProps?.weightField !== void 0;
1103
1135
  const weights = isVariwide ? batchResolveRequired(variwideProps.weightField, variwideProps.data, "weightField") : void 0;
1104
- const rawResolvedPerDataset = barDatasets.map((d) => d.visible ? batchResolveAccessor(d.props.valueField, d.props.data) : []);
1136
+ const rawResolvedPerDataset = barDatasets.map(
1137
+ (d) => d.visible ? batchResolveAccessor(resolveCartesianAccessors(d.props).measureField, d.props.data) : []
1138
+ );
1105
1139
  const barRawResolved = rawResolvedPerDataset;
1106
1140
  const openResolvedPerDataset = barDatasets.map((d) => {
1107
1141
  const openAccessor = d.props.openField;
@@ -1365,8 +1399,9 @@ function computeDomainContributions(params) {
1365
1399
  const scatterLogXValues = /* @__PURE__ */ new Map();
1366
1400
  for (const sd of scatterDatasets) {
1367
1401
  if (!sd.visible) continue;
1402
+ const acc = resolveCartesianAccessors(sd.props);
1368
1403
  const targetYAxisId = sd.props.yAxisId ?? firstValueAxisId;
1369
- const rawYValues = batchResolveAccessor(sd.props.yField, sd.props.data ?? []);
1404
+ const rawYValues = batchResolveAccessor(acc.measureField, sd.props.data ?? []);
1370
1405
  const stackBases = scatterStackBasesMap?.get(sd.id);
1371
1406
  const effectiveYValues = stackBases ? rawYValues.map((v, i) => v === null || v === void 0 || isNaN(Number(v)) ? null : Number(v) + (stackBases[i] ?? 0)) : rawYValues;
1372
1407
  const yValues = effectiveYValues.filter((v) => v !== null && v !== void 0 && !isNaN(Number(v))).map(Number);
@@ -1374,8 +1409,39 @@ function computeDomainContributions(params) {
1374
1409
  valueSeries.push({ axisId: targetYAxisId, values: yValues, includeZero: false });
1375
1410
  collectLogValues(targetYAxisId, yValues);
1376
1411
  }
1412
+ if (acc.independentIsCategory) continue;
1377
1413
  const targetXAxisId = sd.props.xAxisId ?? firstCategoryAxisId;
1378
- const xValues = batchResolveAccessor(sd.props.xField, sd.props.data ?? []).filter((v) => v !== null && v !== void 0 && !isNaN(Number(v))).map(Number);
1414
+ const xValues = batchResolveAccessor(acc.independentField, sd.props.data ?? []).filter((v) => v !== null && v !== void 0 && !isNaN(Number(v))).map(Number);
1415
+ if (xValues.length > 0) {
1416
+ categorySeries.push({ axisId: targetXAxisId, values: xValues, includeZero: false });
1417
+ if (categoryAxes.get(targetXAxisId)?.props?.type === "logarithmic") {
1418
+ const bucket = scatterLogXValues.get(targetXAxisId) ?? [];
1419
+ for (const v of xValues) if (v > 0) bucket.push(v);
1420
+ scatterLogXValues.set(targetXAxisId, bucket);
1421
+ }
1422
+ }
1423
+ }
1424
+ for (const ld of lineDatasets) {
1425
+ if (!ld.visible) continue;
1426
+ const acc = resolveCartesianAccessors(ld.props);
1427
+ if (acc.independentIsCategory) continue;
1428
+ const targetXAxisId = ld.props.xAxisId ?? firstCategoryAxisId;
1429
+ const xValues = batchResolveAccessor(acc.independentField, ld.props.data ?? []).filter((v) => v !== null && v !== void 0 && !isNaN(Number(v))).map(Number);
1430
+ if (xValues.length > 0) {
1431
+ categorySeries.push({ axisId: targetXAxisId, values: xValues, includeZero: false });
1432
+ if (categoryAxes.get(targetXAxisId)?.props?.type === "logarithmic") {
1433
+ const bucket = scatterLogXValues.get(targetXAxisId) ?? [];
1434
+ for (const v of xValues) if (v > 0) bucket.push(v);
1435
+ scatterLogXValues.set(targetXAxisId, bucket);
1436
+ }
1437
+ }
1438
+ }
1439
+ for (const bd of barDatasets) {
1440
+ if (!bd.visible) continue;
1441
+ const acc = resolveCartesianAccessors(bd.props);
1442
+ if (acc.independentIsCategory) continue;
1443
+ const targetXAxisId = bd.props.xAxisId ?? firstCategoryAxisId;
1444
+ const xValues = batchResolveAccessor(acc.independentField, bd.props.data ?? []).filter((v) => v !== null && v !== void 0 && !isNaN(Number(v))).map(Number);
1379
1445
  if (xValues.length > 0) {
1380
1446
  categorySeries.push({ axisId: targetXAxisId, values: xValues, includeZero: false });
1381
1447
  if (categoryAxes.get(targetXAxisId)?.props?.type === "logarithmic") {
@@ -1392,29 +1458,50 @@ function computeDomainContributions(params) {
1392
1458
  const highs = batchResolveAccessor(cd.props.highField, cd.props.data ?? []);
1393
1459
  const validValues = [...lows.filter((v) => v !== null && v !== void 0 && !isNaN(Number(v))).map(Number), ...highs.filter((v) => v !== null && v !== void 0 && !isNaN(Number(v))).map(Number)];
1394
1460
  if (validValues.length > 0) valueSeries.push({ axisId: targetAxisId, values: validValues, includeZero: false });
1461
+ const acc = resolveCartesianAccessors(cd.props);
1462
+ if (acc.independentIsCategory) continue;
1463
+ const targetXAxisId = cd.props.xAxisId ?? firstCategoryAxisId;
1464
+ const xValues = batchResolveAccessor(acc.independentField, cd.props.data ?? []).filter((v) => v !== null && v !== void 0 && !isNaN(Number(v))).map(Number);
1465
+ if (xValues.length > 0) {
1466
+ categorySeries.push({ axisId: targetXAxisId, values: xValues, includeZero: false });
1467
+ if (categoryAxes.get(targetXAxisId)?.props?.type === "logarithmic") {
1468
+ const bucket = scatterLogXValues.get(targetXAxisId) ?? [];
1469
+ for (const v of xValues) if (v > 0) bucket.push(v);
1470
+ scatterLogXValues.set(targetXAxisId, bucket);
1471
+ }
1472
+ }
1395
1473
  }
1396
1474
  const domainContributions = [];
1397
1475
  if (valueSeries.length > 0 || categorySeries.length > 0) {
1398
1476
  domainContributions.push(computeDomainContribution(valueSeries, categorySeries.length > 0 ? categorySeries : void 0));
1399
1477
  }
1400
- const scatterXDomains = mergeDomainContributions(valueDomains, domainContributions);
1478
+ const valueXDomains = mergeDomainContributions(valueDomains, domainContributions);
1401
1479
  for (const [axisId, positives] of scatterLogYValues) {
1402
1480
  if (positives.length > 0) valueDomains.set(axisId, calculateNiceLogDomain(positives));
1403
1481
  }
1404
1482
  for (const [axisId, positives] of scatterLogXValues) {
1405
- if (positives.length > 0) scatterXDomains.set(axisId, calculateNiceLogDomain(positives));
1483
+ if (positives.length > 0) valueXDomains.set(axisId, calculateNiceLogDomain(positives));
1406
1484
  }
1407
1485
  if (scatterDatasets.length > 0) {
1486
+ const barBaselineMins = /* @__PURE__ */ new Map();
1487
+ for (const axisId of barAxisIds) {
1488
+ const d = valueDomains.get(axisId);
1489
+ if (d) barBaselineMins.set(axisId, d[0]);
1490
+ }
1408
1491
  expandScatterBubblePadding({
1409
1492
  scatterDatasets,
1410
1493
  valueDomains,
1411
- scatterXDomains,
1494
+ valueXDomains,
1412
1495
  firstValueAxisId,
1413
1496
  firstCategoryAxisId,
1414
1497
  chartArea: cartesianArea,
1415
1498
  isLogValueAxis: (axisId) => valueAxes.get(axisId)?.props?.type === "logarithmic",
1416
1499
  isLogCategoryAxis: (axisId) => categoryAxes.get(axisId)?.props?.type === "logarithmic"
1417
1500
  });
1501
+ for (const [axisId, min] of barBaselineMins) {
1502
+ const d = valueDomains.get(axisId);
1503
+ if (d) valueDomains.set(axisId, [min, d[1]]);
1504
+ }
1418
1505
  }
1419
1506
  const dataLabelProps = features.get("dataLabels")?.props;
1420
1507
  if (dataLabelProps && !dataLabelProps.render) {
@@ -1457,7 +1544,7 @@ function computeDomainContributions(params) {
1457
1544
  if (typeof axisMin === "number") domain[0] = axisMin;
1458
1545
  if (typeof axisMax === "number") domain[1] = axisMax;
1459
1546
  }
1460
- for (const [axisId, domain] of scatterXDomains) {
1547
+ for (const [axisId, domain] of valueXDomains) {
1461
1548
  const axisConfig = categoryAxes.get(axisId);
1462
1549
  const axisMin = axisConfig?.props?.min;
1463
1550
  const axisMax = axisConfig?.props?.max;
@@ -1490,12 +1577,38 @@ function computeDomainContributions(params) {
1490
1577
  const targetAxisId = ld.props[axisIdProp] ?? firstValueAxisId;
1491
1578
  if (targetAxisId !== axisId) continue;
1492
1579
  const vals = lineTransformedValues?.get(ld.id);
1580
+ const lineBases = lineStackBasesMap?.get(ld.id);
1493
1581
  if (vals) {
1494
- for (const v of vals) {
1582
+ for (let i = 0; i < vals.length; i++) {
1583
+ const v = (lineBases?.[i] ?? 0) + vals[i];
1495
1584
  if (!Number.isNaN(v) && v > rawMax) rawMax = v;
1496
1585
  }
1497
1586
  }
1498
1587
  }
1588
+ for (const sd of scatterDatasets) {
1589
+ if (!sd.visible) continue;
1590
+ const targetAxisId = sd.props.yAxisId ?? firstValueAxisId;
1591
+ if (targetAxisId !== axisId) continue;
1592
+ const acc = resolveCartesianAccessors(sd.props);
1593
+ const rawYValues = batchResolveAccessor(acc.measureField, sd.props.data ?? []);
1594
+ const stackBases = scatterStackBasesMap?.get(sd.id);
1595
+ for (let i = 0; i < rawYValues.length; i++) {
1596
+ const raw = rawYValues[i];
1597
+ if (raw === null || raw === void 0 || isNaN(Number(raw))) continue;
1598
+ const v = Number(raw) + (stackBases?.[i] ?? 0);
1599
+ if (v > rawMax) rawMax = v;
1600
+ }
1601
+ }
1602
+ for (const cd of candlestickDatasets) {
1603
+ if (!cd.visible) continue;
1604
+ const targetAxisId = cd.props.yAxisId ?? firstValueAxisId;
1605
+ if (targetAxisId !== axisId) continue;
1606
+ const highs = batchResolveAccessor(cd.props.highField, cd.props.data ?? []);
1607
+ for (const raw of highs) {
1608
+ if (raw === null || raw === void 0 || isNaN(Number(raw))) continue;
1609
+ if (Number(raw) > rawMax) rawMax = Number(raw);
1610
+ }
1611
+ }
1499
1612
  const tickStep = ticks[ticks.length - 1] - ticks[ticks.length - 2];
1500
1613
  if (rawMax > -Infinity && !isLinePercentStacked && !mode.isStacked && !mode.isPercentStacked && !mode.isWaterfall) {
1501
1614
  if (userTickCount === void 0 && tickStep > 0) {
@@ -1510,7 +1623,7 @@ function computeDomainContributions(params) {
1510
1623
  }
1511
1624
  }
1512
1625
  const scatterAxisLength = orientation === "vertical" ? cartesianArea.width : cartesianArea.height;
1513
- for (const [axisId, domain] of scatterXDomains) {
1626
+ for (const [axisId, domain] of valueXDomains) {
1514
1627
  const axisProps = categoryAxes.get(axisId)?.props;
1515
1628
  if (axisProps?.type === "logarithmic") continue;
1516
1629
  const userTickCount = axisProps?.tickCount;
@@ -1573,8 +1686,8 @@ function computeDomainContributions(params) {
1573
1686
  originalDomains.x = [...primaryValueDomain];
1574
1687
  }
1575
1688
  }
1576
- if (scatterXDomains.size > 0) {
1577
- const firstScatterXDomain = scatterXDomains.values().next().value;
1689
+ if (valueXDomains.size > 0) {
1690
+ const firstScatterXDomain = valueXDomains.values().next().value;
1578
1691
  if (firstScatterXDomain) {
1579
1692
  if (orientation === "vertical" && !originalDomains.x) {
1580
1693
  originalDomains.x = [...firstScatterXDomain];
@@ -1585,7 +1698,7 @@ function computeDomainContributions(params) {
1585
1698
  }
1586
1699
  const zoomCategoryAxisForAdaptive = orientation === "vertical" ? zoomState?.x : zoomState?.y;
1587
1700
  const zoomValueAxisExplicit = orientation === "vertical" ? zoomState?.y : zoomState?.x;
1588
- if (zoomCategoryAxisForAdaptive && !zoomValueAxisExplicit && (isTimeAxis && timestamps || scatterXDomains.size > 0)) {
1701
+ if (zoomCategoryAxisForAdaptive && !zoomValueAxisExplicit && (isTimeAxis && timestamps || valueXDomains.size > 0)) {
1589
1702
  const xMin = zoomCategoryAxisForAdaptive.min;
1590
1703
  const xMax = zoomCategoryAxisForAdaptive.max;
1591
1704
  const adaptiveSeries = [];
@@ -1613,10 +1726,11 @@ function computeDomainContributions(params) {
1613
1726
  }
1614
1727
  for (const sd of scatterDatasets) {
1615
1728
  if (!sd.visible) continue;
1729
+ const acc = resolveCartesianAccessors(sd.props);
1616
1730
  adaptiveSeries.push({
1617
1731
  axisId: sd.props.yAxisId ?? firstValueAxisId,
1618
- xValues: batchResolveAccessor(sd.props.xField, sd.props.data ?? []),
1619
- yValues: batchResolveAccessor(sd.props.yField, sd.props.data ?? [])
1732
+ xValues: acc.independentIsCategory ? [] : batchResolveAccessor(acc.independentField, sd.props.data ?? []),
1733
+ yValues: batchResolveAccessor(acc.measureField, sd.props.data ?? [])
1620
1734
  });
1621
1735
  }
1622
1736
  const adaptiveValues = computeVisibleValues(adaptiveSeries, xMin, xMax);
@@ -1637,12 +1751,12 @@ function computeDomainContributions(params) {
1637
1751
  valueDomain[1] = zoomValueAxisExplicit.max;
1638
1752
  }
1639
1753
  const zoomCategoryAxis = orientation === "vertical" ? zoomState?.x : zoomState?.y;
1640
- if (zoomCategoryAxis && scatterXDomains.size > 0) {
1641
- for (const [axisId] of scatterXDomains) {
1642
- scatterXDomains.set(axisId, [zoomCategoryAxis.min, zoomCategoryAxis.max]);
1754
+ if (zoomCategoryAxis && valueXDomains.size > 0) {
1755
+ for (const [axisId] of valueXDomains) {
1756
+ valueXDomains.set(axisId, [zoomCategoryAxis.min, zoomCategoryAxis.max]);
1643
1757
  }
1644
1758
  }
1645
- return { scatterXDomains, valueDomain, originalDomains };
1759
+ return { valueXDomains, valueDomain, originalDomains };
1646
1760
  }
1647
1761
 
1648
1762
  // src/cartesian/layout.data-reduction.ts
@@ -1658,7 +1772,7 @@ function applyDataGrouping(params) {
1658
1772
  const catKey = categoryKey;
1659
1773
  for (const ds of barDatasets) {
1660
1774
  if (!ds.props.data || ds.props.data.length === 0) continue;
1661
- const valueKey = ds.props.valueField ?? FIELD_DEFAULTS.valueField;
1775
+ const valueKey = resolveCartesianAccessors(ds.props).measureField;
1662
1776
  const grouped = groupTimeData(ds.props.data, catKey, valueKey, interval, method);
1663
1777
  if (grouped.length < ds.props.data.length) {
1664
1778
  ds.props = { ...ds.props, data: grouped };
@@ -1666,7 +1780,7 @@ function applyDataGrouping(params) {
1666
1780
  }
1667
1781
  for (const ds of lineDatasets) {
1668
1782
  if (!ds.props.data || ds.props.data.length === 0) continue;
1669
- const valueKey = ds.props.valueField ?? FIELD_DEFAULTS.valueField;
1783
+ const valueKey = resolveCartesianAccessors(ds.props).measureField;
1670
1784
  const grouped = groupTimeData(ds.props.data, catKey, valueKey, interval, method);
1671
1785
  if (grouped.length < ds.props.data.length) {
1672
1786
  ds.props = { ...ds.props, data: grouped };
@@ -1694,7 +1808,7 @@ function applyDecimation(params) {
1694
1808
  const allBarLineDatasets = [...barDatasets, ...lineDatasets];
1695
1809
  const firstVisible = allBarLineDatasets.find((d) => d.visible) ?? allBarLineDatasets[0];
1696
1810
  if (firstVisible && firstVisible.props.data.length > threshold) {
1697
- const yField = firstVisible.props.valueField;
1811
+ const yField = resolveCartesianAccessors(firstVisible.props).measureField;
1698
1812
  const sourceData = firstVisible.props.data;
1699
1813
  let keptIndicesArr;
1700
1814
  if (zoomX && timestamps) {
@@ -1749,6 +1863,10 @@ function computeCartesianLayout(input, lastVisibleLayouts) {
1749
1863
  if (barDatasets.length === 0 && lineDatasets.length === 0 && scatterDatasets.length === 0 && candlestickDatasets.length === 0) {
1750
1864
  return null;
1751
1865
  }
1866
+ validateCartesianAccessors(
1867
+ [...barDatasets, ...lineDatasets, ...scatterDatasets].map((d) => ({ id: d.id, props: d.props })),
1868
+ axes
1869
+ );
1752
1870
  const visibleBarDatasets = barDatasets.filter((d) => d.visible);
1753
1871
  const { width, height } = dimensions;
1754
1872
  const responsiveFeature = features.get("responsive")?.props;
@@ -1756,17 +1874,24 @@ function computeCartesianLayout(input, lastVisibleLayouts) {
1756
1874
  const adaptive = responsiveFeature?.disableAutoAdaptive ? getAdaptiveDefaults("lg", globalFont) : getAdaptiveDefaults(tier, globalFont);
1757
1875
  const allCatSources = [];
1758
1876
  for (const ds of barDatasets) {
1759
- const key = ds.props.categoryField ?? FIELD_DEFAULTS.categoryField;
1877
+ const key = resolveCartesianAccessors(ds.props).independentField ?? FIELD_DEFAULTS.categoryField;
1760
1878
  const data = ds.props.data ?? [];
1761
1879
  if (data.length > 0) allCatSources.push({ key, data, tier: 0 });
1762
1880
  }
1763
1881
  for (const ds of candlestickDatasets) {
1764
- const key = ds.props.timeField;
1882
+ const key = resolveCartesianAccessors(ds.props).independentField ?? FIELD_DEFAULTS.categoryField;
1765
1883
  const data = ds.props.data ?? [];
1766
1884
  if (data.length > 0) allCatSources.push({ key, data, tier: 1 });
1767
1885
  }
1768
1886
  for (const ds of lineDatasets) {
1769
- const key = ds.props.categoryField ?? FIELD_DEFAULTS.categoryField;
1887
+ const key = resolveCartesianAccessors(ds.props).independentField ?? FIELD_DEFAULTS.categoryField;
1888
+ const data = ds.props.data ?? [];
1889
+ if (data.length > 0) allCatSources.push({ key, data, tier: 2 });
1890
+ }
1891
+ for (const ds of scatterDatasets) {
1892
+ const sp = ds.props;
1893
+ const key = sp.categoryXField ?? sp.categoryYField;
1894
+ if (key == null) continue;
1770
1895
  const data = ds.props.data ?? [];
1771
1896
  if (data.length > 0) allCatSources.push({ key, data, tier: 2 });
1772
1897
  }
@@ -1781,7 +1906,8 @@ function computeCartesianLayout(input, lastVisibleLayouts) {
1781
1906
  categoryKey = "__scatter_no_category__";
1782
1907
  categoryDataSource = [];
1783
1908
  }
1784
- const orientation = barDatasets[0]?.props?.orientation ?? "vertical";
1909
+ const usesCategoryY = [...barDatasets, ...lineDatasets, ...scatterDatasets, ...candlestickDatasets].some((d) => d.props.categoryYField != null);
1910
+ const orientation = usesCategoryY ? "horizontal" : "vertical";
1785
1911
  const categoryAxes = orientation === "vertical" ? axes.x : axes.y;
1786
1912
  const primaryCategoryAxisConfig = categoryAxes.size > 0 ? categoryAxes.values().next().value : void 0;
1787
1913
  const isTimeAxis = primaryCategoryAxisConfig?.props?.type === "time";
@@ -1892,7 +2018,7 @@ function computeCartesianLayout(input, lastVisibleLayouts) {
1892
2018
  if (stackedLineDatasets.length > 0) {
1893
2019
  const rawLineValues = stackedLineDatasets.map((ld) => {
1894
2020
  if (!ld.visible) return new Array(categories.length).fill(0);
1895
- const valueKey = ld.props.valueField ?? FIELD_DEFAULTS.valueField;
2021
+ const valueKey = resolveCartesianAccessors(ld.props).measureField;
1896
2022
  const raw = batchResolveAccessor(valueKey, ld.props.data ?? []);
1897
2023
  return raw.map((v) => v === null || v === void 0 || Number.isNaN(Number(v)) ? 0 : Number(v));
1898
2024
  });
@@ -1906,7 +2032,7 @@ function computeCartesianLayout(input, lastVisibleLayouts) {
1906
2032
  lineTransformedValues.set(stackedLineDatasets[i].id, lineValuesPerDataset[i]);
1907
2033
  }
1908
2034
  const lineSignsPerDataset = isLinePercentStacked ? void 0 : stackedLineDatasets.map((ld) => {
1909
- const valueKey = ld.props.valueField ?? FIELD_DEFAULTS.valueField;
2035
+ const valueKey = resolveCartesianAccessors(ld.props).measureField;
1910
2036
  const raw = batchResolveAccessor(valueKey, ld.props.data ?? []);
1911
2037
  return (raw ?? []).map((v) => typeof v === "number" && isFinite(v) && v < 0 ? -1 : v === 0 ? 0 : 1);
1912
2038
  });
@@ -1921,7 +2047,7 @@ function computeCartesianLayout(input, lastVisibleLayouts) {
1921
2047
  }
1922
2048
  for (const ld of lineDatasets) {
1923
2049
  if (ld.stackId !== void 0) continue;
1924
- const valueKey = ld.props.valueField ?? FIELD_DEFAULTS.valueField;
2050
+ const valueKey = resolveCartesianAccessors(ld.props).measureField;
1925
2051
  const raw = batchResolveAccessor(valueKey, ld.props.data ?? []);
1926
2052
  const resolved = raw.map((v) => v === null || v === void 0 || isNaN(Number(v)) ? NaN : Number(v));
1927
2053
  if (!lineTransformedValues) lineTransformedValues = /* @__PURE__ */ new Map();
@@ -1933,7 +2059,8 @@ function computeCartesianLayout(input, lastVisibleLayouts) {
1933
2059
  const scatterPointCount = stackedScatterDatasets.reduce((max, sd) => Math.max(max, sd.props.data?.length ?? 0), 0);
1934
2060
  const rawScatterValues = stackedScatterDatasets.map((sd) => {
1935
2061
  if (!sd.visible) return new Array(scatterPointCount).fill(0);
1936
- const raw = batchResolveAccessor(sd.props.yField, sd.props.data ?? []);
2062
+ const measureKey = resolveCartesianAccessors(sd.props).measureField;
2063
+ const raw = batchResolveAccessor(measureKey, sd.props.data ?? []);
1937
2064
  const padded = new Array(scatterPointCount).fill(0);
1938
2065
  for (let i = 0; i < raw.length; i++) {
1939
2066
  const v = raw[i];
@@ -1942,7 +2069,8 @@ function computeCartesianLayout(input, lastVisibleLayouts) {
1942
2069
  return padded;
1943
2070
  });
1944
2071
  const scatterSignsPerDataset = stackedScatterDatasets.map((sd) => {
1945
- const raw = batchResolveAccessor(sd.props.yField, sd.props.data ?? []);
2072
+ const measureKey = resolveCartesianAccessors(sd.props).measureField;
2073
+ const raw = batchResolveAccessor(measureKey, sd.props.data ?? []);
1946
2074
  const signs = new Array(scatterPointCount).fill(1);
1947
2075
  for (let i = 0; i < raw.length; i++) {
1948
2076
  const v = raw[i];
@@ -1959,7 +2087,7 @@ function computeCartesianLayout(input, lastVisibleLayouts) {
1959
2087
  scatterSignsPerDataset
1960
2088
  );
1961
2089
  }
1962
- const { scatterXDomains, valueDomain, originalDomains } = computeDomainContributions({
2090
+ const { valueXDomains, valueDomain, originalDomains } = computeDomainContributions({
1963
2091
  orientation,
1964
2092
  axes,
1965
2093
  barDatasets,
@@ -2129,9 +2257,9 @@ function computeCartesianLayout(input, lastVisibleLayouts) {
2129
2257
  const primaryReversed = valueAxes.get(firstValueAxisId)?.props?.reversed ?? false;
2130
2258
  const primaryRange = primaryReversed ? [valueScaleRange[1], valueScaleRange[0]] : valueScaleRange;
2131
2259
  const sharedValueScale = valueScales.get(firstValueAxisId) ?? createLinearScale(valueDomain, primaryRange);
2132
- const scatterXScales = /* @__PURE__ */ new Map();
2260
+ const valueXScales = /* @__PURE__ */ new Map();
2133
2261
  const categoryScaleRange = orientation === "vertical" ? [cartesianArea.x, cartesianArea.x + cartesianArea.width] : [cartesianArea.y, cartesianArea.y + cartesianArea.height];
2134
- for (const [axisId, domain] of scatterXDomains) {
2262
+ for (const [axisId, domain] of valueXDomains) {
2135
2263
  const scatterAxisConfig = categoryAxes.get(axisId);
2136
2264
  const scatterAxisProps = scatterAxisConfig?.props;
2137
2265
  const scatterReversed = scatterAxisProps?.reversed ?? false;
@@ -2151,15 +2279,44 @@ function computeCartesianLayout(input, lastVisibleLayouts) {
2151
2279
  const span = domain[1] - domain[0];
2152
2280
  paddedDomain = [domain[0] - span * padMin, domain[1] + span * padMax];
2153
2281
  }
2154
- scatterXDomains.set(axisId, paddedDomain);
2282
+ valueXDomains.set(axisId, paddedDomain);
2283
+ }
2284
+ valueXScales.set(axisId, scatterAxisType === "logarithmic" ? createLogScale(paddedDomain, scatterRange) : createLinearScale(paddedDomain, scatterRange));
2285
+ }
2286
+ if (valueXScales.size > 0 && (barDatasets.some((bd) => bd.visible) || candlestickDatasets.some((cd) => cd.visible))) {
2287
+ const numericBarXs = [];
2288
+ let numericBarXScale;
2289
+ for (const cd of candlestickDatasets) {
2290
+ if (!cd.visible) continue;
2291
+ const acc = resolveCartesianAccessors(cd.props);
2292
+ if (acc.independentIsCategory) continue;
2293
+ const xs = batchResolveAccessor(acc.independentField, cd.props.data ?? []);
2294
+ for (const x of xs) if (x !== null && x !== void 0 && !isNaN(Number(x))) numericBarXs.push(String(Number(x)));
2295
+ const cdXAxisId = cd.props.xAxisId;
2296
+ numericBarXScale = (cdXAxisId ? valueXScales.get(cdXAxisId) : void 0) ?? (valueXScales.size === 1 ? valueXScales.values().next().value : void 0);
2297
+ }
2298
+ for (const bd of barDatasets) {
2299
+ if (!bd.visible) continue;
2300
+ const acc = resolveCartesianAccessors(bd.props);
2301
+ if (acc.independentIsCategory) continue;
2302
+ if (bd.props.weightField != null) {
2303
+ warnChartDevOnce("variwide-numeric-axis", `bar series "${bd.id}" sets weightField on a numeric (valueXField) axis \u2014 variwide weights are ignored; bar width derives from the spacing between points.`);
2304
+ }
2305
+ const xs = batchResolveAccessor(acc.independentField, bd.props.data ?? []);
2306
+ for (const x of xs) if (x !== null && x !== void 0 && !isNaN(Number(x))) numericBarXs.push(String(Number(x)));
2307
+ const xAxisId = bd.props.xAxisId;
2308
+ numericBarXScale = (xAxisId ? valueXScales.get(xAxisId) : void 0) ?? (valueXScales.size === 1 ? valueXScales.values().next().value : void 0);
2309
+ }
2310
+ if (numericBarXs.length > 0 && numericBarXScale) {
2311
+ sharedCategoryScale = createNumericBandScale([...new Set(numericBarXs)], numericBarXScale, bandScaleOptions);
2155
2312
  }
2156
- scatterXScales.set(axisId, scatterAxisType === "logarithmic" ? createLogScale(paddedDomain, scatterRange) : createLinearScale(paddedDomain, scatterRange));
2157
2313
  }
2158
2314
  let stackBasesMap;
2159
2315
  let groupLayout;
2160
2316
  if (mode.isStacked || mode.isWaterfall) {
2161
2317
  const signsPerDataset = mode.isPercentStacked ? void 0 : barDatasets.map((d, i) => {
2162
- const raw = d.visible ? barRawResolved?.[i] : batchResolveAccessor(d.props.valueField, d.props.data);
2318
+ const measureKey = resolveCartesianAccessors(d.props).measureField;
2319
+ const raw = d.visible ? barRawResolved?.[i] : batchResolveAccessor(measureKey, d.props.data);
2163
2320
  return (raw ?? []).map((v) => typeof v === "number" && isFinite(v) && v < 0 ? -1 : v === 0 ? 0 : 1);
2164
2321
  });
2165
2322
  if (mode.isGrouped) {
@@ -2220,9 +2377,9 @@ function computeCartesianLayout(input, lastVisibleLayouts) {
2220
2377
  sharedValueScale,
2221
2378
  sharedTimeScale,
2222
2379
  sharedCategoryScale,
2223
- scatterXScales,
2380
+ valueXScales,
2224
2381
  valueDomains,
2225
- scatterXDomains,
2382
+ valueXDomains,
2226
2383
  mode,
2227
2384
  adaptive,
2228
2385
  cartesianArea,
@@ -2400,7 +2557,7 @@ function computeCartesianLayout(input, lastVisibleLayouts) {
2400
2557
  groupedDataOverride,
2401
2558
  decimatedIndices,
2402
2559
  // Scatter layouts are computed by useScatterRenderer (independent hook)
2403
- scatterXScales: scatterXScales.size > 0 ? scatterXScales : void 0,
2560
+ valueXScales: valueXScales.size > 0 ? valueXScales : void 0,
2404
2561
  scatterStackBasesMap,
2405
2562
  // Candlestick layouts are computed by useCandlestickRenderer (independent hook)
2406
2563
  // Heatmap layouts are computed by useHeatmapRenderer (independent hook)