@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,4 +1,4 @@
1
- import { clamp } from './chunk-RQ3CKQOX.mjs';
1
+ import { clamp } from './chunk-K7AGQTVK.mjs';
2
2
 
3
3
  // src/utils/layout/borderRadius.utils.ts
4
4
  function resolveBorderRadius(borderRadius) {
@@ -1,6 +1,6 @@
1
- import { DEFAULT_HOVER_BRIGHTNESS, DEFAULT_HOVER_DIM_OPACITY } from './chunk-NKUYIWAP.mjs';
2
- import { defaultLightTheme, isGradientColor } from './chunk-O2X6FF45.mjs';
3
- import { adjustBrightness, brightenGradientStops } from './chunk-SSLTFJ3U.mjs';
1
+ import { DEFAULT_HOVER_BRIGHTNESS, DEFAULT_HOVER_DIM_OPACITY } from './chunk-6LUIVTNV.mjs';
2
+ import { defaultLightTheme, isGradientColor } from './chunk-BDCNBS6W.mjs';
3
+ import { adjustBrightness, brightenGradientStops } from './chunk-BF7RP4A3.mjs';
4
4
 
5
5
  // src/utils/interaction/hover.utils.ts
6
6
  function computeItemHoverState(dataIndex, hoveredIndex, hoverEnabled) {
@@ -122,74 +122,6 @@ function computeLeaderLineHoverEffects(baseColor, isHovered, hasAnyHover, hoverP
122
122
  }
123
123
  return { strokeColor, strokeWidth };
124
124
  }
125
- function applySvgHoverFill(pathEl, isHovered, hasAnyHover, hoverConfig, applyGradientBrightness, restoreGradientBrightness, theme) {
126
- if (!hoverConfig) return;
127
- if (!pathEl.hasAttribute("data-original-fill")) {
128
- pathEl.setAttribute("data-original-fill", pathEl.getAttribute("fill") || "");
129
- }
130
- const originalFill = pathEl.getAttribute("data-original-fill") || "";
131
- const isGradient = originalFill.startsWith("url(");
132
- const brightness = hoverConfig.brightness ?? theme.hoverBrightness ?? DEFAULT_HOVER_BRIGHTNESS;
133
- if (isHovered) {
134
- if (hoverConfig.backgroundColor) {
135
- pathEl.setAttribute("fill", hoverConfig.backgroundColor);
136
- } else if (isGradient && applyGradientBrightness) {
137
- applyGradientBrightness(pathEl, brightness);
138
- } else if (originalFill) {
139
- pathEl.setAttribute("fill", adjustBrightness(originalFill, brightness));
140
- }
141
- pathEl.removeAttribute("opacity");
142
- } else if (hasAnyHover && hoverConfig.dimOpacity !== void 0 && hoverConfig.dimOpacity < 1) {
143
- pathEl.setAttribute("opacity", String(hoverConfig.dimOpacity));
144
- if (isGradient && restoreGradientBrightness) {
145
- restoreGradientBrightness(pathEl);
146
- } else if (originalFill) {
147
- pathEl.setAttribute("fill", originalFill);
148
- }
149
- } else {
150
- if (isGradient && restoreGradientBrightness) {
151
- restoreGradientBrightness(pathEl);
152
- } else if (originalFill) {
153
- pathEl.setAttribute("fill", originalFill);
154
- }
155
- pathEl.removeAttribute("opacity");
156
- }
157
- }
158
- function applySvgHoverStroke(pathEl, isHovered, hoverConfig) {
159
- if (!hoverConfig) return;
160
- if (!pathEl.hasAttribute("data-original-stroke")) {
161
- pathEl.setAttribute("data-original-stroke", pathEl.getAttribute("stroke") || "");
162
- pathEl.setAttribute("data-original-stroke-width", pathEl.getAttribute("stroke-width") || "");
163
- const dashArray = pathEl.getAttribute("stroke-dasharray");
164
- if (dashArray) {
165
- pathEl.setAttribute("data-original-stroke-dasharray", dashArray);
166
- }
167
- }
168
- if (isHovered && (hoverConfig.borderColor || hoverConfig.borderStrokeWidth !== void 0)) {
169
- if (hoverConfig.borderColor) {
170
- pathEl.setAttribute("stroke", hoverConfig.borderColor);
171
- }
172
- if (hoverConfig.borderStrokeWidth !== void 0) {
173
- pathEl.setAttribute("stroke-width", String(hoverConfig.borderStrokeWidth * 2));
174
- }
175
- if (hoverConfig.borderDash) {
176
- pathEl.setAttribute("stroke-dasharray", hoverConfig.borderDash.join(" "));
177
- }
178
- if (!pathEl.hasAttribute("paint-order")) {
179
- pathEl.setAttribute("paint-order", "stroke fill");
180
- }
181
- } else {
182
- const originalStroke = pathEl.getAttribute("data-original-stroke");
183
- const originalWidth = pathEl.getAttribute("data-original-stroke-width");
184
- const originalDash = pathEl.getAttribute("data-original-stroke-dasharray");
185
- if (originalStroke) pathEl.setAttribute("stroke", originalStroke);
186
- else pathEl.removeAttribute("stroke");
187
- if (originalWidth) pathEl.setAttribute("stroke-width", originalWidth);
188
- else pathEl.removeAttribute("stroke-width");
189
- if (originalDash) pathEl.setAttribute("stroke-dasharray", originalDash);
190
- else pathEl.removeAttribute("stroke-dasharray");
191
- }
192
- }
193
125
  function resolveSvgHoverFill(baseFill, isHovered, overrideColor) {
194
126
  if (isHovered && typeof overrideColor === "string") {
195
127
  return { fill: overrideColor, overridden: true };
@@ -197,4 +129,4 @@ function resolveSvgHoverFill(baseFill, isHovered, overrideColor) {
197
129
  return { fill: baseFill, overridden: false };
198
130
  }
199
131
 
200
- export { applyHoverEffects, applySvgHoverFill, applySvgHoverStroke, computeItemHoverState, computeLeaderLineHoverEffects, computeSliceHoverEffects, hoverConfigToBaseEffect, hoverConfigToFullEffect, resolveSvgHoverFill };
132
+ export { applyHoverEffects, computeItemHoverState, computeLeaderLineHoverEffects, computeSliceHoverEffects, hoverConfigToBaseEffect, hoverConfigToFullEffect, resolveSvgHoverFill };
@@ -1,9 +1,9 @@
1
- import { MARKER_SHAPE_NAMES, renderMarkerShapeSvg } from './chunk-PRDVPOZX.mjs';
2
- import { formatPointDescription } from './chunk-OGJ6IIBW.mjs';
3
- import { DEFAULT_HOVER_POINT_RADIUS_MULTIPLIER, DEFAULT_LINE_MARKER_SIZE } from './chunk-NKUYIWAP.mjs';
4
- import { createSvgGradientFromColor, makeItemContext, resolveDash, resolveAccessor, getPrimaryColor } from './chunk-O2X6FF45.mjs';
5
- import { createSvgPathBuilder, traceClosedSpline } from './chunk-IEGLX7VL.mjs';
6
- import { createSvgGroup, setAttr, adjustBrightness, createSvgDefs, appendChild, prependChild, svgClass, createSvgPath, svgNode } from './chunk-SSLTFJ3U.mjs';
1
+ import { MARKER_SHAPE_NAMES, renderMarkerShapeSvg } from './chunk-QIYJUZ7I.mjs';
2
+ import { formatPointDescription } from './chunk-IFJPDARC.mjs';
3
+ import { DEFAULT_HOVER_POINT_RADIUS_MULTIPLIER, DEFAULT_LINE_MARKER_SIZE } from './chunk-6LUIVTNV.mjs';
4
+ import { createSvgGradientFromColor, makeItemContext, resolveDash, resolveAccessor, getPrimaryColor } from './chunk-BDCNBS6W.mjs';
5
+ import { createSvgPathBuilder, traceClosedSpline } from './chunk-PXUXZADY.mjs';
6
+ import { createSvgGroup, setAttr, adjustBrightness, createSvgDefs, appendChild, prependChild, svgClass, createSvgPath, svgNode } from './chunk-BF7RP4A3.mjs';
7
7
 
8
8
  // src/series/radar/shared.ts
9
9
  function buildSmoothPath(points) {
@@ -53,7 +53,7 @@ function renderRadarSeriesSvg(layout, seriesIndex, hoverState, theme, effectConf
53
53
  const isStacked = sd.basePoints && sd.basePoints.length > 0;
54
54
  const innerPathD = isStacked ? isSmooth ? buildSmoothPath([...sd.basePoints].reverse()) : buildPointsPathReversed(sd.basePoints) : "";
55
55
  const fillPathD = isStacked ? `${outerPathD} ${innerPathD}` : outerPathD;
56
- const colorClassN = `p-chart-color-${sd.seriesIdx % 10}`;
56
+ const colorClassN = `p-chart-color-${sd.colorIndex % 14}`;
57
57
  const seriesIsHoveredJs = !isSharedHover && isSeriesHovered;
58
58
  let fillColor = sd.color;
59
59
  let strokeColor = sd.color;
@@ -81,7 +81,7 @@ function renderRadarSeriesSvg(layout, seriesIndex, hoverState, theme, effectConf
81
81
  const dashPattern = sd.lineDash ?? (sd.lineStyle === "dashed" ? [6, 4] : sd.lineStyle === "dotted" ? [2, 3] : null);
82
82
  if (dashPattern?.length) dashAttrs["stroke-dasharray"] = dashPattern.join(" ");
83
83
  const fillAreaCls = svgClass("p-chart-area", `p-chart-series-${sd.seriesIdx}`, fillValue === void 0 && colorClassN, seriesIsHoveredJs && "p-chart-point-hover", anyHover && !isSeriesHovered && "p-chart-series-inactive");
84
- const themedSeriesColor = theme.series[sd.seriesIdx % theme.series.length];
84
+ const themedSeriesColor = theme.series[sd.colorIndex % theme.series.length];
85
85
  const areaEl = createSvgPath(fillPathD, {
86
86
  fill: fillValue ?? themedSeriesColor,
87
87
  "fill-opacity": sd.fillOpacity * seriesOpacity,
@@ -1,7 +1,7 @@
1
- import { buildSvgArcPath } from './chunk-LVMDQ4OJ.mjs';
2
- import { formatPointDescription } from './chunk-OGJ6IIBW.mjs';
3
- import { createSvgGradientFromColor } from './chunk-O2X6FF45.mjs';
4
- import { createSvgGroup, createSvgDefs, appendChild, prependChild, setAttr, adjustBrightness, svgClass, createSvgPath } from './chunk-SSLTFJ3U.mjs';
1
+ import { buildSvgArcPath } from './chunk-4S3FOFCN.mjs';
2
+ import { formatPointDescription } from './chunk-IFJPDARC.mjs';
3
+ import { createSvgGradientFromColor } from './chunk-BDCNBS6W.mjs';
4
+ import { createSvgGroup, createSvgDefs, appendChild, prependChild, setAttr, adjustBrightness, svgClass, createSvgPath } from './chunk-BF7RP4A3.mjs';
5
5
 
6
6
  // src/series/polar/svg/index.ts
7
7
  function renderPolarBarsSvg(layout, hoverState, effectConfig, theme, a11y) {
@@ -49,9 +49,9 @@ function renderPolarBarsSvg(layout, hoverState, effectConfig, theme, a11y) {
49
49
  },
50
50
  false
51
51
  );
52
- const barCls = svgClass("p-chart-arc", `p-chart-series-${bar.seriesIdx}`, fillColor === void 0 && `p-chart-color-${bar.seriesIdx % 10}`, isHovered && "p-chart-point-hover", isInactive && "p-chart-point-inactive");
52
+ const barCls = svgClass("p-chart-arc", `p-chart-series-${bar.seriesIdx}`, fillColor === void 0 && `p-chart-color-${bar.colorIndex % 14}`, isHovered && "p-chart-point-hover", isInactive && "p-chart-point-inactive");
53
53
  const attrs = {
54
- fill: fillColor ?? theme.series[bar.seriesIdx % theme.series.length],
54
+ fill: fillColor ?? theme.series[bar.colorIndex % theme.series.length],
55
55
  stroke: (isHovered ? bar.hoverBorderColor : void 0) ?? bar.borderColor ?? "none",
56
56
  "stroke-width": bar.borderStrokeWidth ?? 0,
57
57
  class: barCls
@@ -1,19 +1,19 @@
1
- import { lineHitTest, lineFindAllNearest, computeStackBases } from './chunk-WFTX4AQJ.mjs';
2
- import { buildLinePath, buildStackedFillPath, buildFillPath, hitTestLine, calculateLineLayout, applyTipExtension, restoreTipExtension, buildRangeFillPath, buildDualRangeFillPaths } from './chunk-6HSEJLSR.mjs';
3
- import { collectLineMarkerOverlays } from './chunk-X4D7FKUS.mjs';
4
- import { registerDatasetLayers, triggerCompositorRepaint } from './chunk-Q6PPVIHU.mjs';
5
- import { resolvePointLabels } from './chunk-66T4MRC5.mjs';
6
- import { renderResolvedLabels } from './chunk-QQBXUDM4.mjs';
7
- import { AnimatedScene, resolveAnimatedProps, LINE_ANIMATABLE_PROPS } from './chunk-VN7CKCSE.mjs';
8
- import { reconcileSvgChildren } from './chunk-KP2TWD4Z.mjs';
9
- import { parseAnimationConfig } from './chunk-3WEMHXZI.mjs';
10
- import { cancelRaf, raf } from './chunk-EDAKJLNA.mjs';
11
- import { buildAccessibilityRenderContext, generateSeriesDescription } from './chunk-OGJ6IIBW.mjs';
12
- import { collectItems } from './chunk-FFMT6OCO.mjs';
13
- import { DEFAULT_HOVER_DIM_OPACITY, DEFAULT_HOVER_BRIGHTNESS, DEFAULT_FALLBACK_COLOR } from './chunk-NKUYIWAP.mjs';
14
- import { streamingPointsInterpolator, buildLineFingerprint, detectStreamingUpdateKind } from './chunk-XQQCGFYB.mjs';
15
- import { getDefaultColor, isGradientColor, createCanvasGradientFromColor, createSvgGradientFromColor } from './chunk-O2X6FF45.mjs';
16
- import { createSvgDefs, appendChild, createSvgPath, setAttr, createSvgGroup, materializeSvgNode } from './chunk-SSLTFJ3U.mjs';
1
+ import { lineHitTest, lineFindAllNearest, computeStackBases } from './chunk-RKNL7UWZ.mjs';
2
+ import { buildLinePath, buildStackedFillPath, buildFillPath, hitTestLine, calculateLineLayout, applyTipExtension, restoreTipExtension, buildRangeFillPath, buildDualRangeFillPaths } from './chunk-7I2SNJ2X.mjs';
3
+ import { collectLineMarkerOverlays } from './chunk-UZWWYKL7.mjs';
4
+ import { registerDatasetLayers, triggerCompositorRepaint } from './chunk-MT3OLVZC.mjs';
5
+ import { renderResolvedLabels } from './chunk-G3DYNMWT.mjs';
6
+ import { resolvePointLabels } from './chunk-7IKKWWRT.mjs';
7
+ import { AnimatedScene, resolveAnimatedProps, LINE_ANIMATABLE_PROPS } from './chunk-JS47MSB2.mjs';
8
+ import { reconcileSvgChildren } from './chunk-FWNWV3H7.mjs';
9
+ import { parseAnimationConfig } from './chunk-LTQH3LQJ.mjs';
10
+ import { cancelRaf, raf } from './chunk-5WFF272M.mjs';
11
+ import { buildAccessibilityRenderContext, generateSeriesDescription } from './chunk-IFJPDARC.mjs';
12
+ import { collectItems } from './chunk-FRVJH7ZG.mjs';
13
+ import { DEFAULT_HOVER_DIM_OPACITY, DEFAULT_HOVER_BRIGHTNESS, DEFAULT_FALLBACK_COLOR } from './chunk-6LUIVTNV.mjs';
14
+ import { buildColorIndexMap, getDefaultColor, isGradientColor, createCanvasGradientFromColor, createSvgGradientFromColor } from './chunk-BDCNBS6W.mjs';
15
+ import { streamingPointsInterpolator, buildLineFingerprint, detectStreamingUpdateKind } from './chunk-EQLCJTM4.mjs';
16
+ import { createSvgDefs, appendChild, createSvgPath, setAttr, createSvgGroup, materializeSvgNode } from './chunk-BF7RP4A3.mjs';
17
17
 
18
18
  // src/series/line/controller/helpers.ts
19
19
  function resolveLineAnimationPlan(layouts, animConfig, isInitial, lastFingerprint, sceneElementCount) {
@@ -21,7 +21,7 @@ function resolveLineAnimationPlan(layouts, animConfig, isInitial, lastFingerprin
21
21
  const { enabled: animEnabled, duration, easing } = parseAnimationConfig(animConfig);
22
22
  const limit = animConfig?.limit ?? 5e3;
23
23
  const fingerprint = buildLineFingerprint(layouts);
24
- const phase = isInitial ? "entrance" : lastFingerprint !== "" && fingerprint !== lastFingerprint ? "update" : "static";
24
+ const phase = isInitial ? "entrance" : fingerprint !== lastFingerprint ? "update" : "static";
25
25
  let totalPoints = 0;
26
26
  for (const [, layout] of layouts) {
27
27
  totalPoints += layout.points.length;
@@ -211,7 +211,7 @@ function renderLinesFrame(params) {
211
211
  if (datasetVisibility?.get(lineLayout.datasetId) === false) continue;
212
212
  const props = renderPropsMap.get(lineLayout.datasetId);
213
213
  if (!props) continue;
214
- const seriesColor = typeof lineLayout.lineColor === "string" ? lineLayout.lineColor : getDefaultColor(lineLayout.seriesIdx, context.theme);
214
+ const seriesColor = typeof lineLayout.lineColor === "string" ? lineLayout.lineColor : getDefaultColor(lineLayout.colorIndex, context.theme);
215
215
  const total = lineLayout.visiblePoints.reduce((sum, pt) => sum + (pt.value ?? 0), 0);
216
216
  const labels = resolvePointLabels(lineLayout.visiblePoints, seriesColor, total, labelConfig, props.name, props.data);
217
217
  renderResolvedLabels(labels, labelConfig, { renderer: "canvas", ctx, theme: context.theme });
@@ -254,8 +254,8 @@ function buildLineSvgChildren(params) {
254
254
  } else {
255
255
  const result = buildDualRangeFillPaths(layoutA.visiblePoints, layoutB.visiblePoints, curve, tension);
256
256
  if (result) {
257
- const colorA = typeof layoutA.lineColor === "string" ? layoutA.lineColor : getDefaultColor(layoutA.seriesIdx, theme);
258
- const colorB = typeof layoutB.lineColor === "string" ? layoutB.lineColor : getDefaultColor(layoutB.seriesIdx, theme);
257
+ const colorA = typeof layoutA.lineColor === "string" ? layoutA.lineColor : getDefaultColor(layoutA.colorIndex, theme);
258
+ const colorB = typeof layoutB.lineColor === "string" ? layoutB.lineColor : getDefaultColor(layoutB.colorIndex, theme);
259
259
  const opacity = rg.fillOpacity * dimOpacity;
260
260
  for (const d of result.abovePaths) children.push(createSvgPath(d, { fill: colorA, opacity }));
261
261
  for (const d of result.belowPaths) children.push(createSvgPath(d, { fill: colorB, opacity }));
@@ -291,7 +291,7 @@ function buildLineSvgChildren(params) {
291
291
  const labelGroup = createSvgGroup();
292
292
  for (const [, lineLayout] of layouts) {
293
293
  if (datasetVisibility?.get(lineLayout.datasetId) === false) continue;
294
- const seriesColor = typeof lineLayout.lineColor === "string" ? lineLayout.lineColor : getDefaultColor(lineLayout.seriesIdx, context.theme);
294
+ const seriesColor = typeof lineLayout.lineColor === "string" ? lineLayout.lineColor : getDefaultColor(lineLayout.colorIndex, context.theme);
295
295
  const total = lineLayout.visiblePoints.reduce((sum, pt) => sum + (pt.value ?? 0), 0);
296
296
  const labels = resolvePointLabels(lineLayout.visiblePoints, seriesColor, total, labelConfig, renderPropsMap.get(lineLayout.datasetId)?.name, renderPropsMap.get(lineLayout.datasetId)?.data);
297
297
  renderResolvedLabels(labels, labelConfig, { renderer: "svg", svgGroup: labelGroup, theme: context.theme });
@@ -334,8 +334,8 @@ function renderRangeFillsCanvas(ctx, rangeGroups, layouts, renderPropsMap, chart
334
334
  } else {
335
335
  const result = buildDualRangeFillPaths(layoutA.visiblePoints, layoutB.visiblePoints, curve, tension);
336
336
  if (!result) continue;
337
- const colorA = typeof layoutA.lineColor === "string" ? layoutA.lineColor : getDefaultColor(layoutA.seriesIdx, theme);
338
- const colorB = typeof layoutB.lineColor === "string" ? layoutB.lineColor : getDefaultColor(layoutB.seriesIdx, theme);
337
+ const colorA = typeof layoutA.lineColor === "string" ? layoutA.lineColor : getDefaultColor(layoutA.colorIndex, theme);
338
+ const colorB = typeof layoutB.lineColor === "string" ? layoutB.lineColor : getDefaultColor(layoutB.colorIndex, theme);
339
339
  const opacity = rg.fillOpacity * dimOpacity;
340
340
  for (const d of result.abovePaths) fillPathCanvas(ctx, d, colorA, opacity);
341
341
  for (const d of result.belowPaths) fillPathCanvas(ctx, d, colorB, opacity);
@@ -419,7 +419,7 @@ function paintCanvasLayer(ctx, canvasCtx, dsId, rangeFirstDs, context) {
419
419
  const renderProps = props.renderMarker ? { ...props, showMarkers: false, interaction: { ...props.interaction, hoveredIndex: null } } : props;
420
420
  ctx._paint.renderCanvas(renderProps, layout, canvasCtx, context);
421
421
  if (input.labelConfig && input.datasetVisibility?.get(dsId) !== false) {
422
- const seriesColor = typeof layout.lineColor === "string" ? layout.lineColor : getDefaultColor(layout.seriesIdx, input.theme);
422
+ const seriesColor = typeof layout.lineColor === "string" ? layout.lineColor : getDefaultColor(layout.colorIndex, input.theme);
423
423
  const total = layout.visiblePoints.reduce((sum, pt) => sum + (pt.value ?? 0), 0);
424
424
  const labels = resolvePointLabels(layout.visiblePoints, seriesColor, total, input.labelConfig, props.name, props.data);
425
425
  renderResolvedLabels(labels, input.labelConfig, { renderer: "canvas", ctx: canvasCtx, theme: input.theme });
@@ -492,11 +492,15 @@ function startSceneUpdateLoop(ctx, easing) {
492
492
  }
493
493
  function buildSceneTargets(ctx, visibleDatasets, renderPropsMap, input, explicitMode) {
494
494
  const targets = /* @__PURE__ */ new Map();
495
+ const colorIndexById = buildColorIndexMap(input.datasets);
495
496
  let anyTip = false;
496
497
  for (const ds of visibleDatasets) {
497
498
  const newValues = input.lineTransformedValues?.get(ds.id) ?? [];
498
499
  const axisId = ds.props[input.axisIdProp] ?? input.firstValueAxisId;
500
+ const valueScale = input.valueScales?.get(axisId) ?? input.valueXScales?.get(axisId);
501
+ const enterBaseline = valueScale ? valueScale.domain()[0] : 0;
499
502
  const stackOrder = input.datasets.get(ds.id)?.order ?? 0;
503
+ const colorIndex = colorIndexById.get(ds.id) ?? 0;
500
504
  const props = ds.props;
501
505
  const renderProps = renderPropsMap.get(ds.id) ?? props;
502
506
  let hint;
@@ -511,7 +515,9 @@ function buildSceneTargets(ctx, visibleDatasets, renderPropsMap, input, explicit
511
515
  geometry: { values: newValues, streamingHint: hint },
512
516
  datasetId: ds.id,
513
517
  axisId,
518
+ enterBaseline,
514
519
  stackOrder,
520
+ colorIndex,
515
521
  props,
516
522
  renderProps,
517
523
  isExiting: false
@@ -523,11 +529,10 @@ function renderSceneFrame(ctx) {
523
529
  const layouts = /* @__PURE__ */ new Map();
524
530
  if (!ctx.lastInput) return layouts;
525
531
  const input = ctx.lastInput;
526
- if (!input.categoryScale || !input.valueScales || input.valueScales.size === 0) return layouts;
527
- const elements = ctx._scene.getElements();
528
- if (elements.length === 0) return layouts;
532
+ if (!input.categoryScale && (!input.valueXScales || input.valueXScales.size === 0) || !input.valueScales || input.valueScales.size === 0) return layouts;
533
+ if (ctx._scene.elementCount === 0) return layouts;
529
534
  const sharedValueScale = input.valueScales.values().next().value;
530
- const orderedElements = [...elements].sort((a, b) => a.current.stackOrder - b.current.stackOrder);
535
+ const orderedElements = Array.from(ctx._scene.elementValues()).sort((a, b) => a.current.stackOrder - b.current.stackOrder);
531
536
  let categoryCount = 0;
532
537
  for (const el of orderedElements) {
533
538
  categoryCount = Math.max(categoryCount, el.current.geometry.values.length);
@@ -546,21 +551,24 @@ function renderSceneFrame(ctx) {
546
551
  const groupedData = input.groupedDataOverride?.get(state.datasetId);
547
552
  const propsForLayout = groupedData ? { ...state.props, data: groupedData } : state.props;
548
553
  const isStacked = state.props.stackId !== void 0;
554
+ const valueXScale = input.valueXScales?.get(state.props.xAxisId ?? "") ?? (input.valueXScales?.size === 1 ? input.valueXScales.values().next().value : void 0);
549
555
  const baseLayout = calculateLineLayout(propsForLayout, input.chartArea, {
550
556
  categoryScale: input.categoryScale,
557
+ valueXScale,
551
558
  valueScale: targetValueScale,
552
559
  stackBases: isStacked ? stackBasesMap.get(state.datasetId) : void 0,
553
560
  transformedValues: state.geometry.values,
554
- seriesId: state.datasetId
561
+ seriesId: state.datasetId,
562
+ orientation: input.orientation
555
563
  });
556
- layouts.set(state.datasetId, { ...baseLayout, datasetIndex: datasetIndex++ });
564
+ layouts.set(state.datasetId, { ...baseLayout, datasetIndex: datasetIndex++, colorIndex: state.colorIndex });
557
565
  }
558
566
  return layouts;
559
567
  }
560
568
  function updateRenderState(ctx) {
561
569
  const layouts = renderSceneFrame(ctx);
562
570
  const activeRenderProps = /* @__PURE__ */ new Map();
563
- for (const el of ctx._scene.getElements()) {
571
+ for (const el of ctx._scene.elementValues()) {
564
572
  const baseProps = el.current.renderProps;
565
573
  const overrides = ctx._propertyOverrides.get(el.current.datasetId);
566
574
  const merged = overrides ? { ...baseProps, ...overrides } : baseProps;
@@ -689,18 +697,19 @@ var LineRendererController = class {
689
697
  this.onFrame = null;
690
698
  this._paint = paint;
691
699
  this._scene = new AnimatedScene({
692
- // ENTER: lines enter from zeros at the same x positions.
693
- // values=[] is intentional the controller seeds the real "zeros" array
694
- // at _buildSceneTargets time (it needs to know category count).
700
+ // ENTER: lines enter from the value-axis floor (`enterBaseline` = domain min)
701
+ // at the same x positions, so they slide up off the axis edge rather than
702
+ // emanating from the data-value-0 gridline (which sits mid-plot when the
703
+ // domain dips below zero).
695
704
  emptyState: (target) => ({
696
705
  ...target,
697
- geometry: { values: target.geometry.values.map(() => 0), streamingHint: "update" },
706
+ geometry: { values: target.geometry.values.map(() => target.enterBaseline), streamingHint: "update" },
698
707
  isExiting: false
699
708
  }),
700
- // EXIT: shrink to zeros at current x positions.
709
+ // EXIT: shrink to the same value-axis floor at current x positions.
701
710
  exitEmptyState: (target) => ({
702
711
  ...target,
703
- geometry: { values: target.geometry.values.map(() => 0), streamingHint: "update" },
712
+ geometry: { values: target.geometry.values.map(() => target.enterBaseline), streamingHint: "update" },
704
713
  isExiting: true
705
714
  }),
706
715
  registry: LINE_REGISTRY
@@ -718,7 +727,7 @@ var LineRendererController = class {
718
727
  const sortedDatasets = Array.from(datasets.entries()).sort(([, a], [, b]) => a.order - b.order);
719
728
  this.lineDatasets = collectItems(sortedDatasets, datasetVisibility).line;
720
729
  let layoutResult = input.layoutResult ?? this.computeLayout(input);
721
- if (!layoutResult && this._scene.getElements().length > 0 && input.categoryScale && input.valueScales && input.valueScales.size > 0) {
730
+ if (!layoutResult && this._scene.elementCount > 0 && input.categoryScale && input.valueScales && input.valueScales.size > 0) {
722
731
  layoutResult = { layouts: /* @__PURE__ */ new Map(), renderPropsMap: /* @__PURE__ */ new Map(), visibleDatasets: [] };
723
732
  }
724
733
  if (!layoutResult) {
@@ -732,6 +741,7 @@ var LineRendererController = class {
732
741
  this._lastFingerprint = "";
733
742
  this.tipProgress = 1;
734
743
  this.tipDuration = 0;
744
+ compositor?.removeLayersByPrefix("line:");
735
745
  if (input.renderer === "svg" && this.svgGroup) {
736
746
  while (this.svgGroup.firstChild) this.svgGroup.removeChild(this.svgGroup.firstChild);
737
747
  }
@@ -751,7 +761,7 @@ var LineRendererController = class {
751
761
  accessibility: buildAccessibilityRenderContext(features)
752
762
  };
753
763
  const animConfig = features.get("animation")?.props;
754
- const { fingerprint, updateMode, phase, shouldAnimate, duration, easing } = resolveLineAnimationPlan(layouts, animConfig, this._isInitial, this._lastFingerprint, this._scene.getElements().length);
764
+ const { fingerprint, updateMode, phase, shouldAnimate, duration, easing } = resolveLineAnimationPlan(layouts, animConfig, this._isInitial, this._lastFingerprint, this._scene.elementCount);
755
765
  const { targets: sceneTargets, anyTip } = buildSceneTargets(this, visibleDatasets, renderPropsMap, input, updateMode);
756
766
  if (input.renderer === "canvas" && compositor) {
757
767
  compositor.removeLayersByPrefix?.("line:");
@@ -888,6 +898,15 @@ var LineRendererController = class {
888
898
  get layouts() {
889
899
  return this.layoutCache;
890
900
  }
901
+ /**
902
+ * Live animated point layouts — the geometry of the current rAF frame, falling back to
903
+ * the settled target layout when no frame has rendered yet. Per-frame consumers (e.g.
904
+ * custom SVG data-label VNodes) read this so their positions track the entrance/transition
905
+ * animation instead of snapping to the final layout, matching the canvas label path.
906
+ */
907
+ get renderedLayouts() {
908
+ return this.lastRenderedLayouts ?? this.layoutCache;
909
+ }
891
910
  get renderProps() {
892
911
  return this.renderPropsCache;
893
912
  }
@@ -977,27 +996,31 @@ var LineRendererController = class {
977
996
  startSceneUpdateLoop(this, easing);
978
997
  }
979
998
  computeLayout(input) {
980
- const { categoryScale, valueScales, chartArea, axisIdProp, firstValueAxisId, lineStackBasesMap, lineTransformedValues, groupedDataOverride, hoverConfig } = input;
981
- if (this.lineDatasets.length === 0 || !categoryScale || !valueScales || valueScales.size === 0) return null;
999
+ const { categoryScale, valueXScales, valueScales, chartArea, axisIdProp, firstValueAxisId, lineStackBasesMap, lineTransformedValues, groupedDataOverride, hoverConfig } = input;
1000
+ if (this.lineDatasets.length === 0 || !categoryScale && (!valueXScales || valueXScales.size === 0) || !valueScales || valueScales.size === 0) return null;
982
1001
  const visibleDatasets = this.lineDatasets.filter((d) => d.visible);
983
1002
  if (visibleDatasets.length === 0) return null;
984
1003
  const layouts = /* @__PURE__ */ new Map();
985
1004
  const renderPropsMap = /* @__PURE__ */ new Map();
986
1005
  const sharedValueScale = valueScales.values().next().value;
1006
+ const colorIndexById = buildColorIndexMap(input.datasets);
987
1007
  let datasetIndex = 0;
988
1008
  for (const ld of visibleDatasets) {
989
1009
  const targetAxisId = ld.props[axisIdProp] ?? firstValueAxisId;
990
1010
  const targetValueScale = valueScales.get(targetAxisId) ?? sharedValueScale;
991
1011
  const groupedData = groupedDataOverride?.get(ld.id);
992
1012
  const propsForLayout = groupedData ? { ...ld.props, data: groupedData } : ld.props;
1013
+ const valueXScale = valueXScales?.get(ld.props.xAxisId ?? "") ?? (valueXScales?.size === 1 ? valueXScales.values().next().value : void 0);
993
1014
  const baseLayout = calculateLineLayout(propsForLayout, chartArea, {
994
1015
  categoryScale,
1016
+ valueXScale,
995
1017
  valueScale: targetValueScale,
996
1018
  stackBases: lineStackBasesMap?.get(ld.id),
997
1019
  transformedValues: lineTransformedValues?.get(ld.id),
998
- seriesId: ld.id
1020
+ seriesId: ld.id,
1021
+ orientation: input.orientation
999
1022
  });
1000
- layouts.set(ld.id, { ...baseLayout, datasetIndex: datasetIndex++ });
1023
+ layouts.set(ld.id, { ...baseLayout, datasetIndex: datasetIndex++, colorIndex: colorIndexById.get(ld.id) ?? 0 });
1001
1024
  const seriesHoverProps = ld.props;
1002
1025
  renderPropsMap.set(ld.id, {
1003
1026
  ...ld.props,
@@ -1,8 +1,8 @@
1
- import { calculateAxisLayout } from './chunk-ZTL2FQEW.mjs';
2
- import { getEasing, easeOutQuart } from './chunk-3WEMHXZI.mjs';
3
- import { raf, cancelRaf } from './chunk-EDAKJLNA.mjs';
4
- import { interpolateCartesianAxisLayout } from './chunk-WH3C3Y7P.mjs';
5
- import { createLinearScale, createOrdinalTimeScale, createOrdinalTimeBandAdapter, createTimeScale, createTimeBandAdapter } from './chunk-RQ3CKQOX.mjs';
1
+ import { calculateAxisLayout } from './chunk-AETETRB4.mjs';
2
+ import { getEasing, easeOutQuart } from './chunk-LTQH3LQJ.mjs';
3
+ import { raf, cancelRaf } from './chunk-5WFF272M.mjs';
4
+ import { interpolateCartesianAxisLayout } from './chunk-CKQ4DNNJ.mjs';
5
+ import { createLinearScale, createOrdinalTimeScale, createOrdinalTimeBandAdapter, createTimeScale, createTimeBandAdapter } from './chunk-K7AGQTVK.mjs';
6
6
 
7
7
  // src/animations/axis-transition.ts
8
8
  var AXIS_SMOOTHING = 0.225;
@@ -1,4 +1,4 @@
1
- import { materializeSvgNode } from './chunk-SSLTFJ3U.mjs';
1
+ import { materializeSvgNode } from './chunk-BF7RP4A3.mjs';
2
2
 
3
3
  // src/utils/render/reconcile.ts
4
4
  var PROTECTED_ATTRS = /* @__PURE__ */ new Set(["style", "tabindex"]);
@@ -0,0 +1,63 @@
1
+ import { isChartDevWarningsEnabled, warnChartDevOnce } from './chunk-K7AGQTVK.mjs';
2
+
3
+ // src/cartesian/series-accessors.ts
4
+ function resolveCartesianAccessors(props) {
5
+ if (props.categoryXField != null) {
6
+ return { independentField: props.categoryXField, measureField: props.valueYField, independentIsCategory: true, orientation: "vertical" };
7
+ }
8
+ if (props.categoryYField != null) {
9
+ return { independentField: props.categoryYField, measureField: props.valueXField, independentIsCategory: true, orientation: "horizontal" };
10
+ }
11
+ return {
12
+ independentField: props.valueXField,
13
+ measureField: props.valueYField,
14
+ independentIsCategory: false,
15
+ orientation: "vertical"
16
+ };
17
+ }
18
+ function boundAxisType(map, axisId) {
19
+ if (map.size === 0) return void 0;
20
+ const entry = axisId != null ? map.get(axisId) : map.values().next().value;
21
+ return entry?.props?.type;
22
+ }
23
+ function validateCartesianAccessors(seriesList, axes) {
24
+ if (!isChartDevWarningsEnabled()) return;
25
+ let sawVertical = false;
26
+ let sawHorizontal = false;
27
+ for (const { id, props } of seriesList) {
28
+ const cx = props.categoryXField != null;
29
+ const cy = props.categoryYField != null;
30
+ const vx = props.valueXField != null;
31
+ const vy = props.valueYField != null;
32
+ if (cx) sawVertical = true;
33
+ if (cy) sawHorizontal = true;
34
+ if (cx && cy) {
35
+ warnChartDevOnce(`cartesian-accessor:${id}:dual-category`, `series "${id}" sets both categoryXField and categoryYField; categoryXField wins and categoryYField is ignored.`);
36
+ }
37
+ const acc = resolveCartesianAccessors(props);
38
+ if (!cx && !cy && !vx && !vy) {
39
+ warnChartDevOnce(`cartesian-accessor:${id}:no-accessors`, `series "${id}" has no cartesian field accessors (categoryXField/categoryYField/valueXField/valueYField); nothing will render.`);
40
+ } else if (acc.independentField != null && acc.measureField == null) {
41
+ warnChartDevOnce(`cartesian-accessor:${id}:missing-measure`, `series "${id}" has an independent field but no value (measure) field \u2014 points will render at zero. Pair categoryXField with valueYField, or categoryYField with valueXField.`);
42
+ }
43
+ const xType = boundAxisType(axes.x, props.xAxisId);
44
+ const yType = boundAxisType(axes.y, props.yAxisId);
45
+ if (cx && (xType === "linear" || xType === "logarithmic")) {
46
+ warnChartDevOnce(`cartesian-accessor:${id}:catx-on-numeric`, `series "${id}" uses categoryXField but its X axis is type "${xType}"; category fields require a category (or time) axis.`);
47
+ }
48
+ if (cy && (yType === "linear" || yType === "logarithmic")) {
49
+ warnChartDevOnce(`cartesian-accessor:${id}:caty-on-numeric`, `series "${id}" uses categoryYField but its Y axis is type "${yType}"; category fields require a category (or time) axis.`);
50
+ }
51
+ if (vx && xType === "category") {
52
+ warnChartDevOnce(`cartesian-accessor:${id}:valx-on-category`, `series "${id}" uses valueXField but its X axis is type "category"; value fields require a linear/logarithmic/time axis.`);
53
+ }
54
+ if (vy && yType === "category") {
55
+ warnChartDevOnce(`cartesian-accessor:${id}:valy-on-category`, `series "${id}" uses valueYField but its Y axis is type "category"; value fields require a linear/logarithmic/time axis.`);
56
+ }
57
+ }
58
+ if (sawVertical && sawHorizontal) {
59
+ warnChartDevOnce("cartesian-accessor:mixed-orientation", "chart has mixed series orientations (categoryXField \u2192 vertical and categoryYField \u2192 horizontal); the chart will collapse to a single orientation.");
60
+ }
61
+ }
62
+
63
+ export { resolveCartesianAccessors, validateCartesianAccessors };
@@ -1,10 +1,11 @@
1
- import { renderAxisSvg, renderAxisCanvas } from './chunk-ZTL2FQEW.mjs';
2
- import { renderReferenceBandsSvg, computeReferenceBands, renderReferenceLinesSvg, computeReferenceLines, renderReferenceBandsCanvas, renderReferenceLinesCanvas, renderCustomMarkersCanvas } from './chunk-ZT2Z7ERM.mjs';
3
- import { createDrawImage } from './chunk-7CMVDIOU.mjs';
4
- import { adjustLabelForRotation } from './chunk-R6Y3R7EW.mjs';
5
- import { DEFAULT_BRACKET_GAP, DEFAULT_BRACKET_LABEL_OFFSET, resolveFontFamily, resolveFontSize, DEFAULT_GROUP_LABEL_FONT_SIZE, resolveAxisColor, DEFAULT_GROUP_LABEL_FONT_WEIGHT, DEFAULT_BRACKET_DEPTH_LAYER_SIZE, DEFAULT_BRACKET_AXIS_TITLE_SPACE, DEFAULT_BG_FILL_EVEN, DEFAULT_BG_FILL_ODD, DEFAULT_BRACKET_TICK_SIZE } from './chunk-NKUYIWAP.mjs';
6
- import { createSvgGroup, appendChild, createSvgRect, withCanvasState, createSvgText, svgNode, materializeSvgGroup, createSvgLine } from './chunk-SSLTFJ3U.mjs';
7
- import { createLinearScale } from './chunk-RQ3CKQOX.mjs';
1
+ import { renderAxisSvg, renderAxisCanvas } from './chunk-AETETRB4.mjs';
2
+ import { renderReferenceBandsSvg, computeReferenceBands, renderReferenceLinesSvg, computeReferenceLines, renderReferenceBandsCanvas, renderReferenceLinesCanvas, renderCustomMarkersCanvas } from './chunk-AC5EAWIP.mjs';
3
+ import { createDrawImage } from './chunk-HXDLOOCS.mjs';
4
+ import { adjustLabelForRotation } from './chunk-GOOBVFFH.mjs';
5
+ import { safeRenderProp } from './chunk-DIJFKY6H.mjs';
6
+ import { DEFAULT_BRACKET_GAP, DEFAULT_BRACKET_LABEL_OFFSET, resolveFontFamily, resolveFontSize, DEFAULT_GROUP_LABEL_FONT_SIZE, resolveAxisColor, DEFAULT_GROUP_LABEL_FONT_WEIGHT, DEFAULT_BRACKET_DEPTH_LAYER_SIZE, DEFAULT_BRACKET_AXIS_TITLE_SPACE, DEFAULT_BG_FILL_EVEN, DEFAULT_BG_FILL_ODD, DEFAULT_BRACKET_TICK_SIZE } from './chunk-6LUIVTNV.mjs';
7
+ import { createSvgGroup, appendChild, createSvgRect, withCanvasState, createSvgText, svgNode, materializeSvgGroup, createSvgLine } from './chunk-BF7RP4A3.mjs';
8
+ import { createLinearScale } from './chunk-K7AGQTVK.mjs';
8
9
 
9
10
  // src/cartesian/backgroundFill.utils.ts
10
11
  function resolveDefaultFillColor(index, color) {
@@ -397,14 +398,17 @@ function renderBracketsCanvas(ctx, geometry) {
397
398
  if (lbl.render) {
398
399
  withCanvasState(ctx, () => {
399
400
  ctx.translate(lbl.x, lbl.y);
400
- lbl.render({
401
- label: lbl.text,
402
- x: lbl.x,
403
- y: lbl.y,
404
- categories: lbl.categories ?? [],
405
- depth: lbl.depth ?? 0,
406
- ctx
407
- });
401
+ safeRenderProp(
402
+ () => lbl.render({
403
+ label: lbl.text,
404
+ x: lbl.x,
405
+ y: lbl.y,
406
+ categories: lbl.categories ?? [],
407
+ depth: lbl.depth ?? 0,
408
+ ctx
409
+ }),
410
+ "axis bracket label"
411
+ );
408
412
  });
409
413
  } else {
410
414
  ctx.font = `${lbl.fontWeight} ${lbl.fontSize}px ${lbl.fontFamily}`;
@@ -469,7 +473,7 @@ function renderResolvedLabels(labels, config, options) {
469
473
  renderContext.ctx = ctx;
470
474
  renderContext.drawImage = createDrawImage(ctx, onImageLoad ?? (() => {
471
475
  }));
472
- config.render(renderContext);
476
+ safeRenderProp(() => config.render(renderContext), "data label");
473
477
  });
474
478
  }
475
479
  continue;
@@ -1,6 +1,6 @@
1
- import { renderLineSvg } from './chunk-3FFJEX4A.mjs';
2
- import { renderLineCanvas } from './chunk-KQIFO5I3.mjs';
3
- import { hitTestLine, calculateLineLayout } from './chunk-6HSEJLSR.mjs';
1
+ import { renderLineSvg } from './chunk-3QQLETCJ.mjs';
2
+ import { renderLineCanvas } from './chunk-5QSTMSPW.mjs';
3
+ import { hitTestLine, calculateLineLayout } from './chunk-7I2SNJ2X.mjs';
4
4
 
5
5
  // src/series/line/index.ts
6
6
  var lineRenderer = {
@@ -0,0 +1,20 @@
1
+ import { renderScatterSvg } from './chunk-QCBESCLG.mjs';
2
+ import { renderScatterCanvas } from './chunk-LC2ZEZWP.mjs';
3
+ import { hitTestScatter, calculateScatterLayout } from './chunk-5EQSFUBA.mjs';
4
+ import { batchResolveRequired } from './chunk-BDCNBS6W.mjs';
5
+ import { resolveCartesianAccessors } from './chunk-G3DIMENH.mjs';
6
+
7
+ // src/series/scatter/index.ts
8
+ var scatterRenderer = {
9
+ calculateLayout: calculateScatterLayout,
10
+ renderSvg: renderScatterSvg,
11
+ renderCanvas: renderScatterCanvas,
12
+ hitTest: hitTestScatter,
13
+ getAxisHints(props, data) {
14
+ const measureField = resolveCartesianAccessors(props).measureField;
15
+ const domainValues = measureField ? batchResolveRequired(measureField, data, "measureField") : [];
16
+ return { domainValues };
17
+ }
18
+ };
19
+
20
+ export { scatterRenderer };