@chartts/core 0.1.3 → 0.1.5

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 (359) hide show
  1. package/dist/area.cjs +10 -10
  2. package/dist/area.js +5 -5
  3. package/dist/bar.cjs +9 -9
  4. package/dist/bar.js +4 -4
  5. package/dist/baseline.cjs +9 -9
  6. package/dist/baseline.js +4 -4
  7. package/dist/boxplot.cjs +9 -9
  8. package/dist/boxplot.js +4 -4
  9. package/dist/bubble.cjs +9 -9
  10. package/dist/bubble.js +4 -4
  11. package/dist/bullet.cjs +10 -10
  12. package/dist/bullet.js +5 -5
  13. package/dist/calendar.cjs +10 -10
  14. package/dist/calendar.js +5 -5
  15. package/dist/candlestick.cjs +9 -9
  16. package/dist/candlestick.js +4 -4
  17. package/dist/chord.cjs +10 -10
  18. package/dist/chord.js +5 -5
  19. package/dist/chunk-2OWMJBRN.js +122 -0
  20. package/dist/chunk-2OWMJBRN.js.map +1 -0
  21. package/dist/{chunk-DR5MQC3W.js → chunk-2VHG2N75.js} +4 -4
  22. package/dist/{chunk-DR5MQC3W.js.map → chunk-2VHG2N75.js.map} +1 -1
  23. package/dist/{chunk-RN7NNB6I.js → chunk-2X7UIG3G.js} +3 -3
  24. package/dist/{chunk-RN7NNB6I.js.map → chunk-2X7UIG3G.js.map} +1 -1
  25. package/dist/{chunk-ZTUKOCJN.cjs → chunk-35XUPEAD.cjs} +4 -4
  26. package/dist/{chunk-ZTUKOCJN.cjs.map → chunk-35XUPEAD.cjs.map} +1 -1
  27. package/dist/{chunk-2EZ2TVYT.cjs → chunk-3HBRAGJA.cjs} +13 -13
  28. package/dist/{chunk-2EZ2TVYT.cjs.map → chunk-3HBRAGJA.cjs.map} +1 -1
  29. package/dist/{chunk-WJP6CRML.js → chunk-45Y77XDM.js} +3 -3
  30. package/dist/{chunk-WJP6CRML.js.map → chunk-45Y77XDM.js.map} +1 -1
  31. package/dist/{chunk-DRIJNFWP.cjs → chunk-47R2QUID.cjs} +10 -10
  32. package/dist/{chunk-DRIJNFWP.cjs.map → chunk-47R2QUID.cjs.map} +1 -1
  33. package/dist/{chunk-FDNJNVKA.cjs → chunk-4C5IV57Z.cjs} +9 -9
  34. package/dist/{chunk-FDNJNVKA.cjs.map → chunk-4C5IV57Z.cjs.map} +1 -1
  35. package/dist/{chunk-5YNIOIKK.js → chunk-4EV5UN6V.js} +3 -3
  36. package/dist/{chunk-5YNIOIKK.js.map → chunk-4EV5UN6V.js.map} +1 -1
  37. package/dist/{chunk-KTCP23W6.js → chunk-5JDHVXPE.js} +3 -3
  38. package/dist/{chunk-KTCP23W6.js.map → chunk-5JDHVXPE.js.map} +1 -1
  39. package/dist/{chunk-QERWC7U6.js → chunk-5VI5F5XA.js} +3 -3
  40. package/dist/{chunk-QERWC7U6.js.map → chunk-5VI5F5XA.js.map} +1 -1
  41. package/dist/{chunk-AG7VY6MJ.cjs → chunk-64B7FGFP.cjs} +8 -8
  42. package/dist/{chunk-AG7VY6MJ.cjs.map → chunk-64B7FGFP.cjs.map} +1 -1
  43. package/dist/{chunk-ILCWDAKD.js → chunk-66GE7TI3.js} +3 -3
  44. package/dist/{chunk-ILCWDAKD.js.map → chunk-66GE7TI3.js.map} +1 -1
  45. package/dist/{chunk-CCMLOCTH.js → chunk-6H34P4AG.js} +3 -3
  46. package/dist/{chunk-CCMLOCTH.js.map → chunk-6H34P4AG.js.map} +1 -1
  47. package/dist/{chunk-E43H3A3G.cjs → chunk-6KNS32OH.cjs} +7 -7
  48. package/dist/{chunk-E43H3A3G.cjs.map → chunk-6KNS32OH.cjs.map} +1 -1
  49. package/dist/{chunk-YX6RW6ZW.cjs → chunk-6S2NCXNP.cjs} +6 -6
  50. package/dist/{chunk-YX6RW6ZW.cjs.map → chunk-6S2NCXNP.cjs.map} +1 -1
  51. package/dist/{chunk-QKJUAMRK.cjs → chunk-6XD3VSAM.cjs} +6 -6
  52. package/dist/{chunk-QKJUAMRK.cjs.map → chunk-6XD3VSAM.cjs.map} +1 -1
  53. package/dist/{chunk-WYIIWTIR.cjs → chunk-6XWZSV6M.cjs} +4 -4
  54. package/dist/{chunk-WYIIWTIR.cjs.map → chunk-6XWZSV6M.cjs.map} +1 -1
  55. package/dist/{chunk-UZH6PVHD.js → chunk-7FUQMZGT.js} +4 -4
  56. package/dist/{chunk-UZH6PVHD.js.map → chunk-7FUQMZGT.js.map} +1 -1
  57. package/dist/chunk-7LZVSOZR.cjs +172 -0
  58. package/dist/chunk-7LZVSOZR.cjs.map +1 -0
  59. package/dist/{chunk-VBEZS3Q4.cjs → chunk-7XOK2HLV.cjs} +9 -9
  60. package/dist/{chunk-VBEZS3Q4.cjs.map → chunk-7XOK2HLV.cjs.map} +1 -1
  61. package/dist/{chunk-46ZZTP5B.js → chunk-ACN4JCSF.js} +4 -4
  62. package/dist/{chunk-46ZZTP5B.js.map → chunk-ACN4JCSF.js.map} +1 -1
  63. package/dist/{chunk-EHNX3MG3.cjs → chunk-AOZ47DTE.cjs} +13 -13
  64. package/dist/{chunk-EHNX3MG3.cjs.map → chunk-AOZ47DTE.cjs.map} +1 -1
  65. package/dist/{chunk-4XVJYNOT.js → chunk-AYEXPYFE.js} +4 -4
  66. package/dist/{chunk-4XVJYNOT.js.map → chunk-AYEXPYFE.js.map} +1 -1
  67. package/dist/{chunk-FZIBM3G5.cjs → chunk-BPXEQPZU.cjs} +10 -10
  68. package/dist/{chunk-FZIBM3G5.cjs.map → chunk-BPXEQPZU.cjs.map} +1 -1
  69. package/dist/{chunk-XWN43PZF.cjs → chunk-BQUMYOBP.cjs} +7 -7
  70. package/dist/{chunk-XWN43PZF.cjs.map → chunk-BQUMYOBP.cjs.map} +1 -1
  71. package/dist/{chunk-OFEROCC5.cjs → chunk-CG4KMZRU.cjs} +6 -6
  72. package/dist/{chunk-OFEROCC5.cjs.map → chunk-CG4KMZRU.cjs.map} +1 -1
  73. package/dist/{chunk-2ITF366P.js → chunk-CLBVCWJG.js} +3 -3
  74. package/dist/{chunk-2ITF366P.js.map → chunk-CLBVCWJG.js.map} +1 -1
  75. package/dist/{chunk-OUN3MWRQ.cjs → chunk-CVKWXLXW.cjs} +10 -10
  76. package/dist/{chunk-OUN3MWRQ.cjs.map → chunk-CVKWXLXW.cjs.map} +1 -1
  77. package/dist/{chunk-RJIPFWW7.js → chunk-D4RP2H6A.js} +4 -4
  78. package/dist/{chunk-RJIPFWW7.js.map → chunk-D4RP2H6A.js.map} +1 -1
  79. package/dist/{chunk-K5TPJVOK.js → chunk-DMBUUJGU.js} +3 -3
  80. package/dist/{chunk-K5TPJVOK.js.map → chunk-DMBUUJGU.js.map} +1 -1
  81. package/dist/{chunk-6JNW43SE.js → chunk-DQAFYVCX.js} +5 -5
  82. package/dist/{chunk-6JNW43SE.js.map → chunk-DQAFYVCX.js.map} +1 -1
  83. package/dist/{chunk-RHTVKBRC.cjs → chunk-EXA5HCX7.cjs} +9 -9
  84. package/dist/{chunk-RHTVKBRC.cjs.map → chunk-EXA5HCX7.cjs.map} +1 -1
  85. package/dist/{chunk-RWQH5EO5.cjs → chunk-F3TVVAYG.cjs} +11 -11
  86. package/dist/{chunk-RWQH5EO5.cjs.map → chunk-F3TVVAYG.cjs.map} +1 -1
  87. package/dist/{chunk-HFWO37RY.cjs → chunk-FCDKWHIV.cjs} +8 -8
  88. package/dist/{chunk-HFWO37RY.cjs.map → chunk-FCDKWHIV.cjs.map} +1 -1
  89. package/dist/{chunk-FSDI3NJV.js → chunk-FWKYNE3A.js} +3 -3
  90. package/dist/{chunk-FSDI3NJV.js.map → chunk-FWKYNE3A.js.map} +1 -1
  91. package/dist/{chunk-HMB2RIEE.js → chunk-GAXX6YK5.js} +4 -4
  92. package/dist/{chunk-HMB2RIEE.js.map → chunk-GAXX6YK5.js.map} +1 -1
  93. package/dist/{chunk-ZFSFOD5W.cjs → chunk-H2DHSBPO.cjs} +6 -6
  94. package/dist/{chunk-ZFSFOD5W.cjs.map → chunk-H2DHSBPO.cjs.map} +1 -1
  95. package/dist/{chunk-4L62MAZA.js → chunk-I7HB3FBC.js} +5 -5
  96. package/dist/{chunk-4L62MAZA.js.map → chunk-I7HB3FBC.js.map} +1 -1
  97. package/dist/{chunk-YJHB2GHQ.js → chunk-IGIAGPC5.js} +3 -3
  98. package/dist/{chunk-YJHB2GHQ.js.map → chunk-IGIAGPC5.js.map} +1 -1
  99. package/dist/{chunk-RQJRVKAH.js → chunk-ILD5ZZHH.js} +3 -3
  100. package/dist/{chunk-RQJRVKAH.js.map → chunk-ILD5ZZHH.js.map} +1 -1
  101. package/dist/{chunk-FV7R2LLD.js → chunk-IN7SCXMD.js} +4 -4
  102. package/dist/{chunk-FV7R2LLD.js.map → chunk-IN7SCXMD.js.map} +1 -1
  103. package/dist/chunk-IRBGJP2E.js +170 -0
  104. package/dist/chunk-IRBGJP2E.js.map +1 -0
  105. package/dist/{chunk-3SOKHPAO.js → chunk-J6A72I5K.js} +4 -4
  106. package/dist/{chunk-3SOKHPAO.js.map → chunk-J6A72I5K.js.map} +1 -1
  107. package/dist/chunk-JRTD6Y34.cjs +148 -0
  108. package/dist/chunk-JRTD6Y34.cjs.map +1 -0
  109. package/dist/{chunk-ASNAQ35U.js → chunk-K7NVM76W.js} +4 -4
  110. package/dist/{chunk-ASNAQ35U.js.map → chunk-K7NVM76W.js.map} +1 -1
  111. package/dist/chunk-KNUMF6K2.cjs +156 -0
  112. package/dist/chunk-KNUMF6K2.cjs.map +1 -0
  113. package/dist/chunk-KQJZJADP.js +146 -0
  114. package/dist/chunk-KQJZJADP.js.map +1 -0
  115. package/dist/{chunk-YOLF5DYU.js → chunk-KRLKDJPM.js} +4 -4
  116. package/dist/{chunk-YOLF5DYU.js.map → chunk-KRLKDJPM.js.map} +1 -1
  117. package/dist/{chunk-6EGHZDZI.cjs → chunk-KSCMLSUI.cjs} +15 -15
  118. package/dist/{chunk-6EGHZDZI.cjs.map → chunk-KSCMLSUI.cjs.map} +1 -1
  119. package/dist/{chunk-4H2LGLGI.cjs → chunk-KT4LY42Y.cjs} +11 -11
  120. package/dist/{chunk-4H2LGLGI.cjs.map → chunk-KT4LY42Y.cjs.map} +1 -1
  121. package/dist/chunk-KX4ZBUHB.cjs +211 -0
  122. package/dist/chunk-KX4ZBUHB.cjs.map +1 -0
  123. package/dist/{chunk-2MWA7H6J.js → chunk-KXJOIVL5.js} +5 -5
  124. package/dist/{chunk-2MWA7H6J.js.map → chunk-KXJOIVL5.js.map} +1 -1
  125. package/dist/{chunk-4ORSJM2I.js → chunk-LFV46XLH.js} +4 -4
  126. package/dist/{chunk-4ORSJM2I.js.map → chunk-LFV46XLH.js.map} +1 -1
  127. package/dist/{chunk-MPQECPE3.js → chunk-LKSKGQX7.js} +3 -3
  128. package/dist/{chunk-MPQECPE3.js.map → chunk-LKSKGQX7.js.map} +1 -1
  129. package/dist/{chunk-OAL5RS2X.cjs → chunk-LQ26WSLH.cjs} +10 -10
  130. package/dist/{chunk-OAL5RS2X.cjs.map → chunk-LQ26WSLH.cjs.map} +1 -1
  131. package/dist/{chunk-LK2A3HBT.js → chunk-LROB73B4.js} +4 -4
  132. package/dist/{chunk-LK2A3HBT.js.map → chunk-LROB73B4.js.map} +1 -1
  133. package/dist/{chunk-XWCY67K5.js → chunk-LXBBM6IF.js} +4 -4
  134. package/dist/{chunk-XWCY67K5.js.map → chunk-LXBBM6IF.js.map} +1 -1
  135. package/dist/{chunk-RFEKSP62.js → chunk-MCORUYWB.js} +3 -3
  136. package/dist/{chunk-RFEKSP62.js.map → chunk-MCORUYWB.js.map} +1 -1
  137. package/dist/{chunk-F5AOBHQY.js → chunk-MJFCMUIY.js} +4 -4
  138. package/dist/{chunk-F5AOBHQY.js.map → chunk-MJFCMUIY.js.map} +1 -1
  139. package/dist/{chunk-PQCHNZHM.cjs → chunk-NHSPO4BN.cjs} +9 -9
  140. package/dist/{chunk-PQCHNZHM.cjs.map → chunk-NHSPO4BN.cjs.map} +1 -1
  141. package/dist/{chunk-DKXW2FQC.cjs → chunk-NR5NQ6TV.cjs} +10 -10
  142. package/dist/{chunk-DKXW2FQC.cjs.map → chunk-NR5NQ6TV.cjs.map} +1 -1
  143. package/dist/{chunk-GAWIUMAK.cjs → chunk-NRMQMPUE.cjs} +7 -7
  144. package/dist/{chunk-GAWIUMAK.cjs.map → chunk-NRMQMPUE.cjs.map} +1 -1
  145. package/dist/{chunk-LIY7MYRG.js → chunk-NW4JBVY2.js} +4 -4
  146. package/dist/{chunk-LIY7MYRG.js.map → chunk-NW4JBVY2.js.map} +1 -1
  147. package/dist/{chunk-WVQVGQJO.cjs → chunk-OLY33H6E.cjs} +7 -7
  148. package/dist/{chunk-WVQVGQJO.cjs.map → chunk-OLY33H6E.cjs.map} +1 -1
  149. package/dist/{chunk-7ZPHLIFP.cjs → chunk-OUQ63IJQ.cjs} +6 -6
  150. package/dist/{chunk-7ZPHLIFP.cjs.map → chunk-OUQ63IJQ.cjs.map} +1 -1
  151. package/dist/{chunk-TVDQNLGJ.js → chunk-PHFBF5ON.js} +3 -3
  152. package/dist/{chunk-TVDQNLGJ.js.map → chunk-PHFBF5ON.js.map} +1 -1
  153. package/dist/{chunk-NG7DRWWT.cjs → chunk-PL3M46GS.cjs} +6 -6
  154. package/dist/{chunk-NG7DRWWT.cjs.map → chunk-PL3M46GS.cjs.map} +1 -1
  155. package/dist/{chunk-MY4KMVJ5.cjs → chunk-PNHDHEBQ.cjs} +8 -8
  156. package/dist/{chunk-MY4KMVJ5.cjs.map → chunk-PNHDHEBQ.cjs.map} +1 -1
  157. package/dist/{chunk-XN6YS55F.cjs → chunk-PX7MLSIH.cjs} +377 -124
  158. package/dist/chunk-PX7MLSIH.cjs.map +1 -0
  159. package/dist/{chunk-4WQUX2B4.cjs → chunk-QCEC2KBW.cjs} +12 -12
  160. package/dist/{chunk-4WQUX2B4.cjs.map → chunk-QCEC2KBW.cjs.map} +1 -1
  161. package/dist/{chunk-IRUIWMH6.js → chunk-QRVTY6UU.js} +3 -3
  162. package/dist/{chunk-IRUIWMH6.js.map → chunk-QRVTY6UU.js.map} +1 -1
  163. package/dist/chunk-QS6GR2CQ.js +154 -0
  164. package/dist/chunk-QS6GR2CQ.js.map +1 -0
  165. package/dist/{chunk-G6R6MSRF.cjs → chunk-QVQKYVD2.cjs} +8 -8
  166. package/dist/{chunk-G6R6MSRF.cjs.map → chunk-QVQKYVD2.cjs.map} +1 -1
  167. package/dist/{chunk-JNQ4NL3R.cjs → chunk-RIJPMRKC.cjs} +8 -8
  168. package/dist/{chunk-JNQ4NL3R.cjs.map → chunk-RIJPMRKC.cjs.map} +1 -1
  169. package/dist/{chunk-XE5ZYFGM.js → chunk-RKX7GKOU.js} +4 -4
  170. package/dist/{chunk-XE5ZYFGM.js.map → chunk-RKX7GKOU.js.map} +1 -1
  171. package/dist/{chunk-ECB3UPTC.cjs → chunk-ROUFAI5M.cjs} +11 -11
  172. package/dist/{chunk-ECB3UPTC.cjs.map → chunk-ROUFAI5M.cjs.map} +1 -1
  173. package/dist/{chunk-NGKUI7XE.cjs → chunk-S52RCLDQ.cjs} +12 -12
  174. package/dist/{chunk-NGKUI7XE.cjs.map → chunk-S52RCLDQ.cjs.map} +1 -1
  175. package/dist/{chunk-SXVMEC6N.cjs → chunk-SEOHPUXV.cjs} +12 -12
  176. package/dist/{chunk-SXVMEC6N.cjs.map → chunk-SEOHPUXV.cjs.map} +1 -1
  177. package/dist/{chunk-ZY7ETQD6.js → chunk-SI4VJK4A.js} +3 -3
  178. package/dist/{chunk-ZY7ETQD6.js.map → chunk-SI4VJK4A.js.map} +1 -1
  179. package/dist/{chunk-UFMPALRH.js → chunk-SUB5WML4.js} +3 -3
  180. package/dist/{chunk-UFMPALRH.js.map → chunk-SUB5WML4.js.map} +1 -1
  181. package/dist/{chunk-R6ZDSXN7.cjs → chunk-T5NDUMLD.cjs} +8 -8
  182. package/dist/{chunk-R6ZDSXN7.cjs.map → chunk-T5NDUMLD.cjs.map} +1 -1
  183. package/dist/{chunk-YDQDZWZ7.cjs → chunk-TKHYY3B5.cjs} +6 -6
  184. package/dist/{chunk-YDQDZWZ7.cjs.map → chunk-TKHYY3B5.cjs.map} +1 -1
  185. package/dist/{chunk-66BHM3UN.cjs → chunk-TMQ2V5B2.cjs} +10 -10
  186. package/dist/{chunk-66BHM3UN.cjs.map → chunk-TMQ2V5B2.cjs.map} +1 -1
  187. package/dist/{chunk-3V64BDKG.cjs → chunk-TNIMRV3N.cjs} +13 -13
  188. package/dist/{chunk-3V64BDKG.cjs.map → chunk-TNIMRV3N.cjs.map} +1 -1
  189. package/dist/{chunk-7PNCJ4OQ.js → chunk-TUPPYHUR.js} +3 -3
  190. package/dist/{chunk-7PNCJ4OQ.js.map → chunk-TUPPYHUR.js.map} +1 -1
  191. package/dist/{chunk-6UWYKNFN.cjs → chunk-U456ET3M.cjs} +12 -12
  192. package/dist/{chunk-6UWYKNFN.cjs.map → chunk-U456ET3M.cjs.map} +1 -1
  193. package/dist/{chunk-6E6ZDWZD.cjs → chunk-UMS2MPYC.cjs} +10 -10
  194. package/dist/{chunk-6E6ZDWZD.cjs.map → chunk-UMS2MPYC.cjs.map} +1 -1
  195. package/dist/{chunk-YZQROIJY.js → chunk-UNQBXGX5.js} +3 -3
  196. package/dist/{chunk-YZQROIJY.js.map → chunk-UNQBXGX5.js.map} +1 -1
  197. package/dist/{chunk-BT5H3WMI.js → chunk-V3AENTZB.js} +4 -4
  198. package/dist/{chunk-BT5H3WMI.js.map → chunk-V3AENTZB.js.map} +1 -1
  199. package/dist/{chunk-5J26EN5I.js → chunk-V5LLTYOY.js} +4 -4
  200. package/dist/{chunk-5J26EN5I.js.map → chunk-V5LLTYOY.js.map} +1 -1
  201. package/dist/chunk-VALFF4NG.cjs +124 -0
  202. package/dist/chunk-VALFF4NG.cjs.map +1 -0
  203. package/dist/{chunk-V45C74EB.js → chunk-VJT5UA7J.js} +4 -4
  204. package/dist/{chunk-V45C74EB.js.map → chunk-VJT5UA7J.js.map} +1 -1
  205. package/dist/{chunk-UMIJYYF3.cjs → chunk-W626EAS5.cjs} +112 -13
  206. package/dist/chunk-W626EAS5.cjs.map +1 -0
  207. package/dist/{chunk-PVPTFMJJ.js → chunk-WHGNA44O.js} +4 -4
  208. package/dist/{chunk-PVPTFMJJ.js.map → chunk-WHGNA44O.js.map} +1 -1
  209. package/dist/{chunk-TWSWD4PU.js → chunk-WIA4MDRX.js} +3 -3
  210. package/dist/{chunk-TWSWD4PU.js.map → chunk-WIA4MDRX.js.map} +1 -1
  211. package/dist/{chunk-47EP245Y.cjs → chunk-WOYVHVXC.cjs} +7 -7
  212. package/dist/{chunk-47EP245Y.cjs.map → chunk-WOYVHVXC.cjs.map} +1 -1
  213. package/dist/{chunk-CDS2NXGT.cjs → chunk-X5SG6MFS.cjs} +4 -4
  214. package/dist/{chunk-CDS2NXGT.cjs.map → chunk-X5SG6MFS.cjs.map} +1 -1
  215. package/dist/{chunk-MYXLKVJE.js → chunk-XB5K7OYD.js} +361 -108
  216. package/dist/chunk-XB5K7OYD.js.map +1 -0
  217. package/dist/{chunk-DX4FBN3I.js → chunk-XIVC32HU.js} +112 -13
  218. package/dist/chunk-XIVC32HU.js.map +1 -0
  219. package/dist/{chunk-GPSNBZPX.js → chunk-XQ7BTVV3.js} +4 -4
  220. package/dist/{chunk-GPSNBZPX.js.map → chunk-XQ7BTVV3.js.map} +1 -1
  221. package/dist/{chunk-BYB3LQAT.cjs → chunk-YMOQGTGJ.cjs} +9 -9
  222. package/dist/{chunk-BYB3LQAT.cjs.map → chunk-YMOQGTGJ.cjs.map} +1 -1
  223. package/dist/{chunk-EHKHXQ46.cjs → chunk-YOK3JGW5.cjs} +10 -10
  224. package/dist/{chunk-EHKHXQ46.cjs.map → chunk-YOK3JGW5.cjs.map} +1 -1
  225. package/dist/{chunk-XKERO5K2.js → chunk-YUIHMAHA.js} +3 -3
  226. package/dist/{chunk-XKERO5K2.js.map → chunk-YUIHMAHA.js.map} +1 -1
  227. package/dist/chunk-ZBWBLCY2.js +209 -0
  228. package/dist/chunk-ZBWBLCY2.js.map +1 -0
  229. package/dist/{chunk-OAIMES5S.cjs → chunk-ZCLW4B5S.cjs} +17 -17
  230. package/dist/{chunk-OAIMES5S.cjs.map → chunk-ZCLW4B5S.cjs.map} +1 -1
  231. package/dist/combo.cjs +9 -9
  232. package/dist/combo.js +4 -4
  233. package/dist/custom.cjs +10 -10
  234. package/dist/custom.js +5 -5
  235. package/dist/donut.cjs +11 -11
  236. package/dist/donut.js +6 -6
  237. package/dist/dumbbell.cjs +10 -10
  238. package/dist/dumbbell.js +5 -5
  239. package/dist/funnel.cjs +10 -10
  240. package/dist/funnel.js +5 -5
  241. package/dist/gauge.cjs +10 -10
  242. package/dist/gauge.js +5 -5
  243. package/dist/geo.cjs +12 -12
  244. package/dist/geo.js +5 -5
  245. package/dist/graph-type-Cyb5U1y2.d.ts +5 -0
  246. package/dist/graph-type-DRbMI2E9.d.cts +5 -0
  247. package/dist/graph.cjs +10 -10
  248. package/dist/graph.d.cts +1 -1
  249. package/dist/graph.d.ts +1 -1
  250. package/dist/graph.js +5 -5
  251. package/dist/heatmap.cjs +10 -10
  252. package/dist/heatmap.js +5 -5
  253. package/dist/histogram.cjs +9 -9
  254. package/dist/histogram.js +4 -4
  255. package/dist/horizontal-bar.cjs +9 -9
  256. package/dist/horizontal-bar.js +4 -4
  257. package/dist/index.cjs +242 -192
  258. package/dist/index.cjs.map +1 -1
  259. package/dist/index.d.cts +16 -2
  260. package/dist/index.d.ts +16 -2
  261. package/dist/index.js +123 -93
  262. package/dist/index.js.map +1 -1
  263. package/dist/kagi.cjs +10 -10
  264. package/dist/kagi.js +5 -5
  265. package/dist/line.cjs +9 -9
  266. package/dist/line.js +4 -4
  267. package/dist/lines.cjs +10 -10
  268. package/dist/lines.js +5 -5
  269. package/dist/lollipop.cjs +9 -9
  270. package/dist/lollipop.js +4 -4
  271. package/dist/matrix.cjs +10 -10
  272. package/dist/matrix.js +5 -5
  273. package/dist/ohlc.cjs +9 -9
  274. package/dist/ohlc.js +4 -4
  275. package/dist/pack-type-CdtdkPBR.d.cts +10 -0
  276. package/dist/pack-type-Dm27RLC-.d.ts +10 -0
  277. package/dist/pack.cjs +33 -0
  278. package/dist/pack.cjs.map +1 -0
  279. package/dist/pack.d.cts +8 -0
  280. package/dist/pack.d.ts +8 -0
  281. package/dist/pack.js +12 -0
  282. package/dist/pack.js.map +1 -0
  283. package/dist/parallel.cjs +10 -10
  284. package/dist/parallel.js +5 -5
  285. package/dist/pictorialbar.cjs +10 -10
  286. package/dist/pictorialbar.js +5 -5
  287. package/dist/pie.cjs +11 -11
  288. package/dist/pie.js +6 -6
  289. package/dist/pillar-type-CIcSuZdu.d.cts +11 -0
  290. package/dist/pillar-type-DNpR_98h.d.ts +11 -0
  291. package/dist/pillar.cjs +33 -0
  292. package/dist/pillar.cjs.map +1 -0
  293. package/dist/pillar.d.cts +8 -0
  294. package/dist/pillar.d.ts +8 -0
  295. package/dist/pillar.js +12 -0
  296. package/dist/pillar.js.map +1 -0
  297. package/dist/polar.cjs +11 -11
  298. package/dist/polar.js +6 -6
  299. package/dist/radar.cjs +10 -10
  300. package/dist/radar.js +5 -5
  301. package/dist/radialbar.cjs +10 -10
  302. package/dist/radialbar.js +5 -5
  303. package/dist/range.cjs +9 -9
  304. package/dist/range.js +4 -4
  305. package/dist/renko.cjs +10 -10
  306. package/dist/renko.js +5 -5
  307. package/dist/sankey.cjs +10 -10
  308. package/dist/sankey.js +5 -5
  309. package/dist/scatter.cjs +9 -9
  310. package/dist/scatter.js +4 -4
  311. package/dist/sparkline.cjs +9 -9
  312. package/dist/sparkline.js +4 -4
  313. package/dist/stacked-bar.cjs +9 -9
  314. package/dist/stacked-bar.js +4 -4
  315. package/dist/step.cjs +10 -10
  316. package/dist/step.js +5 -5
  317. package/dist/sunburst.cjs +11 -11
  318. package/dist/sunburst.js +6 -6
  319. package/dist/themeriver.cjs +10 -10
  320. package/dist/themeriver.js +5 -5
  321. package/dist/tree.cjs +10 -10
  322. package/dist/tree.js +5 -5
  323. package/dist/treemap.cjs +10 -10
  324. package/dist/treemap.js +5 -5
  325. package/dist/violin-type-6KmTiJNp.d.cts +5 -0
  326. package/dist/violin-type-BOmiulQc.d.ts +5 -0
  327. package/dist/violin.cjs +33 -0
  328. package/dist/violin.cjs.map +1 -0
  329. package/dist/violin.d.cts +8 -0
  330. package/dist/violin.d.ts +8 -0
  331. package/dist/violin.js +12 -0
  332. package/dist/violin.js.map +1 -0
  333. package/dist/volume.cjs +9 -9
  334. package/dist/volume.js +4 -4
  335. package/dist/voronoi-type-BU5WnrcT.d.cts +12 -0
  336. package/dist/voronoi-type-D7n4mFNp.d.ts +12 -0
  337. package/dist/voronoi.cjs +33 -0
  338. package/dist/voronoi.cjs.map +1 -0
  339. package/dist/voronoi.d.cts +8 -0
  340. package/dist/voronoi.d.ts +8 -0
  341. package/dist/voronoi.js +12 -0
  342. package/dist/voronoi.js.map +1 -0
  343. package/dist/waterfall.cjs +9 -9
  344. package/dist/waterfall.js +4 -4
  345. package/dist/wordcloud-type-C6X9ORRR.d.ts +11 -0
  346. package/dist/wordcloud-type-CCm8rWK7.d.cts +11 -0
  347. package/dist/wordcloud.cjs +33 -0
  348. package/dist/wordcloud.cjs.map +1 -0
  349. package/dist/wordcloud.d.cts +8 -0
  350. package/dist/wordcloud.d.ts +8 -0
  351. package/dist/wordcloud.js +12 -0
  352. package/dist/wordcloud.js.map +1 -0
  353. package/package.json +1 -1
  354. package/dist/chunk-DX4FBN3I.js.map +0 -1
  355. package/dist/chunk-MYXLKVJE.js.map +0 -1
  356. package/dist/chunk-UMIJYYF3.cjs.map +0 -1
  357. package/dist/chunk-XN6YS55F.cjs.map +0 -1
  358. package/dist/graph-type-Bg04GFeS.d.ts +0 -15
  359. package/dist/graph-type-DF-vww8T.d.cts +0 -15
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/charts/radialbar/radialbar-type.ts"],"names":[],"mappings":"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","file":"chunk-YOLF5DYU.js","sourcesContent":["import type {\n ChartTypePlugin, ChartData, ResolvedOptions, PreparedData,\n RenderContext, RenderNode, HitResult, ScaleType,\n} from '../../types'\nimport { prepareNoAxes } from '../../utils/prepare'\nimport { group, path, text } from '../../render/tree'\nimport { PathBuilder } from '../../render/tree'\n\n/**\n * Radial bar chart — concentric arcs radiating from center.\n *\n * Each category gets its own ring. Arc length is proportional to value.\n * Uses the first series' values.\n */\nexport const radialBarChartType: ChartTypePlugin = {\n type: 'radial-bar',\n\n getScaleTypes(): { x: ScaleType; y: ScaleType } {\n return { x: 'categorical', y: 'linear' }\n },\n\n prepareData(data: ChartData, options: ResolvedOptions): PreparedData {\n return prepareNoAxes(data, options)\n },\n\n render(ctx: RenderContext): RenderNode[] {\n const { data, area, theme, options } = ctx\n const nodes: RenderNode[] = []\n\n const series = data.series[0]\n if (!series || series.values.length === 0) return nodes\n\n const values = series.values\n const count = values.length\n let maxVal = 0\n for (const v of values) {\n if (Math.abs(v) > maxVal) maxVal = Math.abs(v)\n }\n if (maxVal === 0) maxVal = 1\n\n const cx = area.x + area.width / 2\n const cy = area.y + area.height / 2\n const outerR = Math.min(area.width, area.height) / 2 - 20\n const innerR = outerR * 0.2\n const ringGap = 3\n const ringWidth = (outerR - innerR - ringGap * (count - 1)) / count\n const startAngle = -Math.PI / 2 // 12 o'clock\n\n for (let i = 0; i < count; i++) {\n const value = Math.abs(values[i]!)\n const fraction = value / maxVal\n const sweepAngle = fraction * Math.PI * 2 * 0.95 // max 95% of circle\n const endAngle = startAngle + sweepAngle\n\n const rOuter = innerR + (count - i) * (ringWidth + ringGap) - ringGap\n const rInner = rOuter - ringWidth\n\n const colorIndex = i % options.colors.length\n const color = options.colors[colorIndex]!\n const label = String(data.labels[i] ?? `Item ${i + 1}`)\n\n // Track arc (full background ring) — rounded caps\n const trackPb = new PathBuilder()\n const trackEnd = startAngle + Math.PI * 2 * 0.95\n strokeArc(trackPb, cx, cy, (rOuter + rInner) / 2, startAngle, trackEnd)\n nodes.push(path(trackPb.build(), {\n class: 'chartts-radialbar-track',\n stroke: theme.gridColor,\n strokeWidth: ringWidth,\n strokeLinecap: 'round',\n fill: 'none',\n opacity: 0.15,\n }))\n\n // Value arc — rounded caps for polished look\n if (sweepAngle > 0.01) {\n const arcPb = new PathBuilder()\n strokeArc(arcPb, cx, cy, (rOuter + rInner) / 2, startAngle, endAngle)\n\n const arcNodes: RenderNode[] = [\n path(arcPb.build(), {\n class: 'chartts-radialbar-arc',\n stroke: color,\n strokeWidth: ringWidth,\n strokeLinecap: 'round',\n fill: 'none',\n opacity: 0.85,\n 'data-series': 0,\n 'data-index': i,\n tabindex: 0,\n role: 'img',\n ariaLabel: `${label}: ${values[i]}`,\n }),\n ]\n\n // Label on the left side of the ring\n const ringMidR = (rOuter + rInner) / 2\n arcNodes.push(text(cx - outerR - 6, cy - ringMidR + cy - cy, label, {\n class: 'chartts-radialbar-label',\n fill: theme.textMuted,\n textAnchor: 'end',\n dominantBaseline: 'central',\n fontSize: Math.min(theme.fontSizeSmall, ringWidth * 0.9),\n fontFamily: theme.fontFamily,\n }))\n\n nodes.push(group(arcNodes, {\n class: `chartts-series chartts-series-${i}`,\n 'data-series-name': label,\n }))\n }\n }\n\n return nodes\n },\n\n hitTest(ctx: RenderContext, mx: number, my: number): HitResult | null {\n const { data, area } = ctx\n const series = data.series[0]\n if (!series || series.values.length === 0) return null\n\n const count = series.values.length\n const cx = area.x + area.width / 2\n const cy = area.y + area.height / 2\n const outerR = Math.min(area.width, area.height) / 2 - 20\n const innerR = outerR * 0.2\n const ringGap = 3\n const ringWidth = (outerR - innerR - ringGap * (count - 1)) / count\n\n const dx = mx - cx\n const dy = my - cy\n const dist = Math.sqrt(dx * dx + dy * dy)\n\n for (let i = 0; i < count; i++) {\n const rOuter = innerR + (count - i) * (ringWidth + ringGap) - ringGap\n const rInner = rOuter - ringWidth\n\n if (dist >= rInner && dist <= rOuter) {\n const midR = (rInner + rOuter) / 2\n const hitAngle = Math.atan2(dy, dx)\n return { seriesIndex: 0, pointIndex: i, distance: 0, x: cx + midR * Math.cos(hitAngle), y: cy + midR * Math.sin(hitAngle) }\n }\n }\n\n return null\n },\n}\n\nfunction strokeArc(pb: PathBuilder, cx: number, cy: number, r: number, startAngle: number, endAngle: number): void {\n const x1 = cx + r * Math.cos(startAngle)\n const y1 = cy + r * Math.sin(startAngle)\n const x2 = cx + r * Math.cos(endAngle)\n const y2 = cy + r * Math.sin(endAngle)\n const largeArc = (endAngle - startAngle) > Math.PI\n\n pb.moveTo(x1, y1)\n pb.arc(r, r, 0, largeArc, true, x2, y2)\n}\n"]}
1
+ {"version":3,"sources":["../src/charts/radialbar/radialbar-type.ts"],"names":[],"mappings":"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","file":"chunk-KRLKDJPM.js","sourcesContent":["import type {\n ChartTypePlugin, ChartData, ResolvedOptions, PreparedData,\n RenderContext, RenderNode, HitResult, ScaleType,\n} from '../../types'\nimport { prepareNoAxes } from '../../utils/prepare'\nimport { group, path, text } from '../../render/tree'\nimport { PathBuilder } from '../../render/tree'\n\n/**\n * Radial bar chart — concentric arcs radiating from center.\n *\n * Each category gets its own ring. Arc length is proportional to value.\n * Uses the first series' values.\n */\nexport const radialBarChartType: ChartTypePlugin = {\n type: 'radial-bar',\n\n getScaleTypes(): { x: ScaleType; y: ScaleType } {\n return { x: 'categorical', y: 'linear' }\n },\n\n prepareData(data: ChartData, options: ResolvedOptions): PreparedData {\n return prepareNoAxes(data, options)\n },\n\n render(ctx: RenderContext): RenderNode[] {\n const { data, area, theme, options } = ctx\n const nodes: RenderNode[] = []\n\n const series = data.series[0]\n if (!series || series.values.length === 0) return nodes\n\n const values = series.values\n const count = values.length\n let maxVal = 0\n for (const v of values) {\n if (Math.abs(v) > maxVal) maxVal = Math.abs(v)\n }\n if (maxVal === 0) maxVal = 1\n\n const cx = area.x + area.width / 2\n const cy = area.y + area.height / 2\n const outerR = Math.min(area.width, area.height) / 2 - 20\n const innerR = outerR * 0.2\n const ringGap = 3\n const ringWidth = (outerR - innerR - ringGap * (count - 1)) / count\n const startAngle = -Math.PI / 2 // 12 o'clock\n\n for (let i = 0; i < count; i++) {\n const value = Math.abs(values[i]!)\n const fraction = value / maxVal\n const sweepAngle = fraction * Math.PI * 2 * 0.95 // max 95% of circle\n const endAngle = startAngle + sweepAngle\n\n const rOuter = innerR + (count - i) * (ringWidth + ringGap) - ringGap\n const rInner = rOuter - ringWidth\n\n const colorIndex = i % options.colors.length\n const color = options.colors[colorIndex]!\n const label = String(data.labels[i] ?? `Item ${i + 1}`)\n\n // Track arc (full background ring) — rounded caps\n const trackPb = new PathBuilder()\n const trackEnd = startAngle + Math.PI * 2 * 0.95\n strokeArc(trackPb, cx, cy, (rOuter + rInner) / 2, startAngle, trackEnd)\n nodes.push(path(trackPb.build(), {\n class: 'chartts-radialbar-track',\n stroke: theme.gridColor,\n strokeWidth: ringWidth,\n strokeLinecap: 'round',\n fill: 'none',\n opacity: 0.15,\n }))\n\n // Value arc — rounded caps for polished look\n if (sweepAngle > 0.01) {\n const arcPb = new PathBuilder()\n strokeArc(arcPb, cx, cy, (rOuter + rInner) / 2, startAngle, endAngle)\n\n const arcNodes: RenderNode[] = [\n path(arcPb.build(), {\n class: 'chartts-radialbar-arc',\n stroke: color,\n strokeWidth: ringWidth,\n strokeLinecap: 'round',\n fill: 'none',\n opacity: 0.85,\n 'data-series': 0,\n 'data-index': i,\n tabindex: 0,\n role: 'img',\n ariaLabel: `${label}: ${values[i]}`,\n }),\n ]\n\n // Label on the left side of the ring\n const ringMidR = (rOuter + rInner) / 2\n arcNodes.push(text(cx - outerR - 6, cy - ringMidR + cy - cy, label, {\n class: 'chartts-radialbar-label',\n fill: theme.textMuted,\n textAnchor: 'end',\n dominantBaseline: 'central',\n fontSize: Math.min(theme.fontSizeSmall, ringWidth * 0.9),\n fontFamily: theme.fontFamily,\n }))\n\n nodes.push(group(arcNodes, {\n class: `chartts-series chartts-series-${i}`,\n 'data-series-name': label,\n }))\n }\n }\n\n return nodes\n },\n\n hitTest(ctx: RenderContext, mx: number, my: number): HitResult | null {\n const { data, area } = ctx\n const series = data.series[0]\n if (!series || series.values.length === 0) return null\n\n const count = series.values.length\n const cx = area.x + area.width / 2\n const cy = area.y + area.height / 2\n const outerR = Math.min(area.width, area.height) / 2 - 20\n const innerR = outerR * 0.2\n const ringGap = 3\n const ringWidth = (outerR - innerR - ringGap * (count - 1)) / count\n\n const dx = mx - cx\n const dy = my - cy\n const dist = Math.sqrt(dx * dx + dy * dy)\n\n for (let i = 0; i < count; i++) {\n const rOuter = innerR + (count - i) * (ringWidth + ringGap) - ringGap\n const rInner = rOuter - ringWidth\n\n if (dist >= rInner && dist <= rOuter) {\n const midR = (rInner + rOuter) / 2\n const hitAngle = Math.atan2(dy, dx)\n return { seriesIndex: 0, pointIndex: i, distance: 0, x: cx + midR * Math.cos(hitAngle), y: cy + midR * Math.sin(hitAngle) }\n }\n }\n\n return null\n },\n}\n\nfunction strokeArc(pb: PathBuilder, cx: number, cy: number, r: number, startAngle: number, endAngle: number): void {\n const x1 = cx + r * Math.cos(startAngle)\n const y1 = cy + r * Math.sin(startAngle)\n const x2 = cx + r * Math.cos(endAngle)\n const y2 = cy + r * Math.sin(endAngle)\n const largeArc = (endAngle - startAngle) > Math.PI\n\n pb.moveTo(x1, y1)\n pb.arc(r, r, 0, largeArc, true, x2, y2)\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunkCDS2NXGT_cjs = require('./chunk-CDS2NXGT.cjs');
4
- var chunkUMIJYYF3_cjs = require('./chunk-UMIJYYF3.cjs');
3
+ var chunkX5SG6MFS_cjs = require('./chunk-X5SG6MFS.cjs');
4
+ var chunkW626EAS5_cjs = require('./chunk-W626EAS5.cjs');
5
5
 
6
6
  // src/charts/gauge/gauge-type.ts
7
7
  var gaugeChartType = {
@@ -10,7 +10,7 @@ var gaugeChartType = {
10
10
  return { x: "categorical", y: "linear" };
11
11
  },
12
12
  prepareData(data, options) {
13
- return chunkCDS2NXGT_cjs.prepareNoAxes(data, options);
13
+ return chunkX5SG6MFS_cjs.prepareNoAxes(data, options);
14
14
  },
15
15
  render(ctx) {
16
16
  const { data, area, theme, options } = ctx;
@@ -36,7 +36,7 @@ var gaugeChartType = {
36
36
  const strokeW = Math.max(12, Math.min(radius * 0.18, 28));
37
37
  const cy = area.y + radius + strokeW / 2 + 4;
38
38
  const arcBottomY = cy + radius * Math.sin(toRad(30));
39
- nodes.push(chunkUMIJYYF3_cjs.path(strokeArc(cx, cy, radius, startRad, endRad), {
39
+ nodes.push(chunkW626EAS5_cjs.path(strokeArc(cx, cy, radius, startRad, endRad), {
40
40
  class: "chartts-gauge-track",
41
41
  stroke: theme.gridColor,
42
42
  strokeWidth: strokeW,
@@ -47,7 +47,7 @@ var gaugeChartType = {
47
47
  const color = options.colors[0];
48
48
  if (pct > 5e-3) {
49
49
  const valueRad = startRad + (endRad - startRad) * pct;
50
- nodes.push(chunkUMIJYYF3_cjs.path(strokeArc(cx, cy, radius, startRad, valueRad), {
50
+ nodes.push(chunkW626EAS5_cjs.path(strokeArc(cx, cy, radius, startRad, valueRad), {
51
51
  class: "chartts-gauge-fill",
52
52
  stroke: color,
53
53
  strokeWidth: strokeW,
@@ -64,24 +64,24 @@ var gaugeChartType = {
64
64
  const baseR = 3.5;
65
65
  const bAngle1 = needleAngle + Math.PI / 2;
66
66
  const bAngle2 = needleAngle - Math.PI / 2;
67
- const npb = new chunkUMIJYYF3_cjs.PathBuilder();
67
+ const npb = new chunkW626EAS5_cjs.PathBuilder();
68
68
  npb.moveTo(needleTipX, needleTipY);
69
69
  npb.lineTo(cx + baseR * Math.cos(bAngle1), cy + baseR * Math.sin(bAngle1));
70
70
  npb.lineTo(cx + baseR * Math.cos(bAngle2), cy + baseR * Math.sin(bAngle2));
71
71
  npb.close();
72
- nodes.push(chunkUMIJYYF3_cjs.path(npb.build(), {
72
+ nodes.push(chunkW626EAS5_cjs.path(npb.build(), {
73
73
  class: "chartts-gauge-needle",
74
74
  fill: color,
75
75
  opacity: 0.85
76
76
  }));
77
- nodes.push(chunkUMIJYYF3_cjs.circle(cx, cy, 5, {
77
+ nodes.push(chunkW626EAS5_cjs.circle(cx, cy, 5, {
78
78
  class: "chartts-gauge-needle-cap",
79
79
  fill: color
80
80
  }));
81
81
  if (showValue) {
82
82
  const valueFontSize = Math.max(16, Math.min(radius * 0.35, 40));
83
83
  const valueY = arcBottomY + labelSpace * 0.28;
84
- nodes.push(chunkUMIJYYF3_cjs.text(cx, valueY, valueFormat(value), {
84
+ nodes.push(chunkW626EAS5_cjs.text(cx, valueY, valueFormat(value), {
85
85
  class: "chartts-gauge-value",
86
86
  fill: theme.textColor,
87
87
  textAnchor: "middle",
@@ -91,7 +91,7 @@ var gaugeChartType = {
91
91
  fontWeight: 700
92
92
  }));
93
93
  if (series.name) {
94
- nodes.push(chunkUMIJYYF3_cjs.text(cx, valueY + valueFontSize * 0.85, series.name, {
94
+ nodes.push(chunkW626EAS5_cjs.text(cx, valueY + valueFontSize * 0.85, series.name, {
95
95
  class: "chartts-gauge-label",
96
96
  fill: theme.textMuted,
97
97
  textAnchor: "middle",
@@ -102,7 +102,7 @@ var gaugeChartType = {
102
102
  }
103
103
  const minX = cx + radius * Math.cos(startRad);
104
104
  const minY = cy + radius * Math.sin(startRad) + strokeW / 2 + 12;
105
- nodes.push(chunkUMIJYYF3_cjs.text(minX, minY, valueFormat(min), {
105
+ nodes.push(chunkW626EAS5_cjs.text(minX, minY, valueFormat(min), {
106
106
  class: "chartts-gauge-min",
107
107
  fill: theme.textMuted,
108
108
  textAnchor: "middle",
@@ -112,7 +112,7 @@ var gaugeChartType = {
112
112
  }));
113
113
  const maxX = cx + radius * Math.cos(toRad(30));
114
114
  const maxY = cy + radius * Math.sin(toRad(30)) + strokeW / 2 + 12;
115
- nodes.push(chunkUMIJYYF3_cjs.text(maxX, maxY, valueFormat(max), {
115
+ nodes.push(chunkW626EAS5_cjs.text(maxX, maxY, valueFormat(max), {
116
116
  class: "chartts-gauge-max",
117
117
  fill: theme.textMuted,
118
118
  textAnchor: "middle",
@@ -128,7 +128,7 @@ var gaugeChartType = {
128
128
  }
129
129
  };
130
130
  function strokeArc(cx, cy, r, startAngle, endAngle) {
131
- const pb = new chunkUMIJYYF3_cjs.PathBuilder();
131
+ const pb = new chunkW626EAS5_cjs.PathBuilder();
132
132
  const x1 = cx + r * Math.cos(startAngle);
133
133
  const y1 = cy + r * Math.sin(startAngle);
134
134
  const x2 = cx + r * Math.cos(endAngle);
@@ -142,5 +142,5 @@ function strokeArc(cx, cy, r, startAngle, endAngle) {
142
142
  }
143
143
 
144
144
  exports.gaugeChartType = gaugeChartType;
145
- //# sourceMappingURL=chunk-6EGHZDZI.cjs.map
146
- //# sourceMappingURL=chunk-6EGHZDZI.cjs.map
145
+ //# sourceMappingURL=chunk-KSCMLSUI.cjs.map
146
+ //# sourceMappingURL=chunk-KSCMLSUI.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/charts/gauge/gauge-type.ts"],"names":["prepareNoAxes","path","PathBuilder","circle","text"],"mappings":"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","file":"chunk-6EGHZDZI.cjs","sourcesContent":["import type {\n ChartTypePlugin, ChartData, ResolvedOptions, PreparedData,\n RenderContext, RenderNode, HitResult, ScaleType,\n} from '../../types'\nimport { prepareNoAxes } from '../../utils/prepare'\nimport { path, circle, text } from '../../render/tree'\nimport { PathBuilder } from '../../render/tree'\n\nexport interface GaugeOptions {\n /** Minimum value. Default 0. */\n gaugeMin?: number\n /** Maximum value. Default 100. */\n gaugeMax?: number\n /** Show value text in center. Default true. */\n showValue?: boolean\n /** Value format function. Default: round to int. */\n valueFormat?: (v: number) => string\n}\n\n/**\n * Gauge / Meter chart — single-value 240° arc with stroke-based rendering.\n *\n * Uses stroke-linecap:round for clean rounded endcaps. No fill-based donut arcs.\n * Looks like a modern dashboard gauge (Grafana, Material style).\n */\nexport const gaugeChartType: ChartTypePlugin = {\n type: 'gauge',\n\n getScaleTypes(): { x: ScaleType; y: ScaleType } {\n return { x: 'categorical', y: 'linear' }\n },\n\n prepareData(data: ChartData, options: ResolvedOptions): PreparedData {\n return prepareNoAxes(data, options)\n },\n\n render(ctx: RenderContext): RenderNode[] {\n const { data, area, theme, options } = ctx\n const nodes: RenderNode[] = []\n\n const series = data.series[0]\n if (!series || series.values.length === 0) return nodes\n\n const gOpts = options as unknown as GaugeOptions\n const min = gOpts.gaugeMin ?? 0\n const max = gOpts.gaugeMax ?? 100\n const showValue = gOpts.showValue ?? true\n const valueFormat = gOpts.valueFormat ?? ((v: number) => String(Math.round(v)))\n\n const value = series.values[0]!\n const pct = Math.max(0, Math.min(1, (value - min) / (max - min || 1)))\n\n // ----- Layout -----\n const cx = area.x + area.width / 2\n\n // Arc angles: 240° sweep, opening at the bottom\n // Start at 150° (bottom-left), sweep CW to 30° (bottom-right)\n const toRad = (d: number) => (d * Math.PI) / 180\n const startRad = toRad(150)\n const endRad = toRad(390) // 390° = 30° but keeps sweep direction clear\n\n // Size the arc to fit within the area with padding for labels\n // The arc bottom-most points are at 150° and 30° — y = cy + r*sin(30°) = cy + r*0.5\n // The arc top is at cy - r\n // Below the arc we need ~50px for value text, label, min/max\n const labelSpace = Math.min(60, area.height * 0.22)\n const availH = area.height - labelSpace\n // Arc top to arc bottom-endpoints: r + r*sin(30°) = r*1.5\n // So r*1.5 + strokeW <= availH\n const maxRadiusH = (availH - 8) / 1.55\n const maxRadiusW = (area.width - 16) / 2\n const radius = Math.min(maxRadiusH, maxRadiusW)\n const strokeW = Math.max(12, Math.min(radius * 0.18, 28))\n\n // Position: the top of the arc (cy - radius - strokeW/2) should be just inside area.y\n const cy = area.y + radius + strokeW / 2 + 4\n\n // Arc bottom-left/right y coordinate\n const arcBottomY = cy + radius * Math.sin(toRad(30))\n\n // ----- Track arc (background) -----\n nodes.push(path(strokeArc(cx, cy, radius, startRad, endRad), {\n class: 'chartts-gauge-track',\n stroke: theme.gridColor,\n strokeWidth: strokeW,\n fill: 'none',\n opacity: 0.3,\n style: 'stroke-linecap:round',\n }))\n\n // ----- Value arc -----\n const color = options.colors[0]!\n if (pct > 0.005) {\n const valueRad = startRad + (endRad - startRad) * pct\n nodes.push(path(strokeArc(cx, cy, radius, startRad, valueRad), {\n class: 'chartts-gauge-fill',\n stroke: color,\n strokeWidth: strokeW,\n fill: 'none',\n style: 'stroke-linecap:round',\n 'data-series': 0,\n 'data-index': 0,\n }))\n }\n\n // ----- Needle -----\n const needleAngle = startRad + (endRad - startRad) * pct\n const needleLen = radius - strokeW / 2 - 2\n const needleTipX = cx + needleLen * Math.cos(needleAngle)\n const needleTipY = cy + needleLen * Math.sin(needleAngle)\n\n // Tapered needle triangle\n const baseR = 3.5\n const bAngle1 = needleAngle + Math.PI / 2\n const bAngle2 = needleAngle - Math.PI / 2\n const npb = new PathBuilder()\n npb.moveTo(needleTipX, needleTipY)\n npb.lineTo(cx + baseR * Math.cos(bAngle1), cy + baseR * Math.sin(bAngle1))\n npb.lineTo(cx + baseR * Math.cos(bAngle2), cy + baseR * Math.sin(bAngle2))\n npb.close()\n\n nodes.push(path(npb.build(), {\n class: 'chartts-gauge-needle',\n fill: color,\n opacity: 0.85,\n }))\n\n // Center cap\n nodes.push(circle(cx, cy, 5, {\n class: 'chartts-gauge-needle-cap',\n fill: color,\n }))\n\n // ----- Labels -----\n if (showValue) {\n // Big value — in the gap below the arc center\n const valueFontSize = Math.max(16, Math.min(radius * 0.35, 40))\n const valueY = arcBottomY + labelSpace * 0.28\n nodes.push(text(cx, valueY, valueFormat(value), {\n class: 'chartts-gauge-value',\n fill: theme.textColor,\n textAnchor: 'middle',\n dominantBaseline: 'central',\n fontSize: valueFontSize,\n fontFamily: theme.fontFamily,\n fontWeight: 700,\n }))\n\n // Series name\n if (series.name) {\n nodes.push(text(cx, valueY + valueFontSize * 0.85, series.name, {\n class: 'chartts-gauge-label',\n fill: theme.textMuted,\n textAnchor: 'middle',\n dominantBaseline: 'central',\n fontSize: theme.fontSizeSmall,\n fontFamily: theme.fontFamily,\n }))\n }\n\n // Min / Max at arc endpoints\n const minX = cx + radius * Math.cos(startRad)\n const minY = cy + radius * Math.sin(startRad) + strokeW / 2 + 12\n nodes.push(text(minX, minY, valueFormat(min), {\n class: 'chartts-gauge-min',\n fill: theme.textMuted,\n textAnchor: 'middle',\n dominantBaseline: 'central',\n fontSize: theme.fontSizeSmall,\n fontFamily: theme.fontFamily,\n }))\n\n const maxX = cx + radius * Math.cos(toRad(30))\n const maxY = cy + radius * Math.sin(toRad(30)) + strokeW / 2 + 12\n nodes.push(text(maxX, maxY, valueFormat(max), {\n class: 'chartts-gauge-max',\n fill: theme.textMuted,\n textAnchor: 'middle',\n dominantBaseline: 'central',\n fontSize: theme.fontSizeSmall,\n fontFamily: theme.fontFamily,\n }))\n }\n\n return nodes\n },\n\n hitTest(): HitResult | null {\n return null\n },\n}\n\n/**\n * Stroke-based arc path (open, for use with thick stroke + stroke-linecap:round).\n * Angles in radians, CW from positive X axis (SVG convention).\n */\nfunction strokeArc(\n cx: number, cy: number, r: number,\n startAngle: number, endAngle: number,\n): string {\n const pb = new PathBuilder()\n const x1 = cx + r * Math.cos(startAngle)\n const y1 = cy + r * Math.sin(startAngle)\n const x2 = cx + r * Math.cos(endAngle)\n const y2 = cy + r * Math.sin(endAngle)\n\n let span = endAngle - startAngle\n if (span < 0) span += 2 * Math.PI\n const largeArc = span > Math.PI\n\n pb.moveTo(x1, y1)\n pb.arc(r, r, 0, largeArc, true, x2, y2)\n return pb.build()\n}\n"]}
1
+ {"version":3,"sources":["../src/charts/gauge/gauge-type.ts"],"names":["prepareNoAxes","path","PathBuilder","circle","text"],"mappings":"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","file":"chunk-KSCMLSUI.cjs","sourcesContent":["import type {\n ChartTypePlugin, ChartData, ResolvedOptions, PreparedData,\n RenderContext, RenderNode, HitResult, ScaleType,\n} from '../../types'\nimport { prepareNoAxes } from '../../utils/prepare'\nimport { path, circle, text } from '../../render/tree'\nimport { PathBuilder } from '../../render/tree'\n\nexport interface GaugeOptions {\n /** Minimum value. Default 0. */\n gaugeMin?: number\n /** Maximum value. Default 100. */\n gaugeMax?: number\n /** Show value text in center. Default true. */\n showValue?: boolean\n /** Value format function. Default: round to int. */\n valueFormat?: (v: number) => string\n}\n\n/**\n * Gauge / Meter chart — single-value 240° arc with stroke-based rendering.\n *\n * Uses stroke-linecap:round for clean rounded endcaps. No fill-based donut arcs.\n * Looks like a modern dashboard gauge (Grafana, Material style).\n */\nexport const gaugeChartType: ChartTypePlugin = {\n type: 'gauge',\n\n getScaleTypes(): { x: ScaleType; y: ScaleType } {\n return { x: 'categorical', y: 'linear' }\n },\n\n prepareData(data: ChartData, options: ResolvedOptions): PreparedData {\n return prepareNoAxes(data, options)\n },\n\n render(ctx: RenderContext): RenderNode[] {\n const { data, area, theme, options } = ctx\n const nodes: RenderNode[] = []\n\n const series = data.series[0]\n if (!series || series.values.length === 0) return nodes\n\n const gOpts = options as unknown as GaugeOptions\n const min = gOpts.gaugeMin ?? 0\n const max = gOpts.gaugeMax ?? 100\n const showValue = gOpts.showValue ?? true\n const valueFormat = gOpts.valueFormat ?? ((v: number) => String(Math.round(v)))\n\n const value = series.values[0]!\n const pct = Math.max(0, Math.min(1, (value - min) / (max - min || 1)))\n\n // ----- Layout -----\n const cx = area.x + area.width / 2\n\n // Arc angles: 240° sweep, opening at the bottom\n // Start at 150° (bottom-left), sweep CW to 30° (bottom-right)\n const toRad = (d: number) => (d * Math.PI) / 180\n const startRad = toRad(150)\n const endRad = toRad(390) // 390° = 30° but keeps sweep direction clear\n\n // Size the arc to fit within the area with padding for labels\n // The arc bottom-most points are at 150° and 30° — y = cy + r*sin(30°) = cy + r*0.5\n // The arc top is at cy - r\n // Below the arc we need ~50px for value text, label, min/max\n const labelSpace = Math.min(60, area.height * 0.22)\n const availH = area.height - labelSpace\n // Arc top to arc bottom-endpoints: r + r*sin(30°) = r*1.5\n // So r*1.5 + strokeW <= availH\n const maxRadiusH = (availH - 8) / 1.55\n const maxRadiusW = (area.width - 16) / 2\n const radius = Math.min(maxRadiusH, maxRadiusW)\n const strokeW = Math.max(12, Math.min(radius * 0.18, 28))\n\n // Position: the top of the arc (cy - radius - strokeW/2) should be just inside area.y\n const cy = area.y + radius + strokeW / 2 + 4\n\n // Arc bottom-left/right y coordinate\n const arcBottomY = cy + radius * Math.sin(toRad(30))\n\n // ----- Track arc (background) -----\n nodes.push(path(strokeArc(cx, cy, radius, startRad, endRad), {\n class: 'chartts-gauge-track',\n stroke: theme.gridColor,\n strokeWidth: strokeW,\n fill: 'none',\n opacity: 0.3,\n style: 'stroke-linecap:round',\n }))\n\n // ----- Value arc -----\n const color = options.colors[0]!\n if (pct > 0.005) {\n const valueRad = startRad + (endRad - startRad) * pct\n nodes.push(path(strokeArc(cx, cy, radius, startRad, valueRad), {\n class: 'chartts-gauge-fill',\n stroke: color,\n strokeWidth: strokeW,\n fill: 'none',\n style: 'stroke-linecap:round',\n 'data-series': 0,\n 'data-index': 0,\n }))\n }\n\n // ----- Needle -----\n const needleAngle = startRad + (endRad - startRad) * pct\n const needleLen = radius - strokeW / 2 - 2\n const needleTipX = cx + needleLen * Math.cos(needleAngle)\n const needleTipY = cy + needleLen * Math.sin(needleAngle)\n\n // Tapered needle triangle\n const baseR = 3.5\n const bAngle1 = needleAngle + Math.PI / 2\n const bAngle2 = needleAngle - Math.PI / 2\n const npb = new PathBuilder()\n npb.moveTo(needleTipX, needleTipY)\n npb.lineTo(cx + baseR * Math.cos(bAngle1), cy + baseR * Math.sin(bAngle1))\n npb.lineTo(cx + baseR * Math.cos(bAngle2), cy + baseR * Math.sin(bAngle2))\n npb.close()\n\n nodes.push(path(npb.build(), {\n class: 'chartts-gauge-needle',\n fill: color,\n opacity: 0.85,\n }))\n\n // Center cap\n nodes.push(circle(cx, cy, 5, {\n class: 'chartts-gauge-needle-cap',\n fill: color,\n }))\n\n // ----- Labels -----\n if (showValue) {\n // Big value — in the gap below the arc center\n const valueFontSize = Math.max(16, Math.min(radius * 0.35, 40))\n const valueY = arcBottomY + labelSpace * 0.28\n nodes.push(text(cx, valueY, valueFormat(value), {\n class: 'chartts-gauge-value',\n fill: theme.textColor,\n textAnchor: 'middle',\n dominantBaseline: 'central',\n fontSize: valueFontSize,\n fontFamily: theme.fontFamily,\n fontWeight: 700,\n }))\n\n // Series name\n if (series.name) {\n nodes.push(text(cx, valueY + valueFontSize * 0.85, series.name, {\n class: 'chartts-gauge-label',\n fill: theme.textMuted,\n textAnchor: 'middle',\n dominantBaseline: 'central',\n fontSize: theme.fontSizeSmall,\n fontFamily: theme.fontFamily,\n }))\n }\n\n // Min / Max at arc endpoints\n const minX = cx + radius * Math.cos(startRad)\n const minY = cy + radius * Math.sin(startRad) + strokeW / 2 + 12\n nodes.push(text(minX, minY, valueFormat(min), {\n class: 'chartts-gauge-min',\n fill: theme.textMuted,\n textAnchor: 'middle',\n dominantBaseline: 'central',\n fontSize: theme.fontSizeSmall,\n fontFamily: theme.fontFamily,\n }))\n\n const maxX = cx + radius * Math.cos(toRad(30))\n const maxY = cy + radius * Math.sin(toRad(30)) + strokeW / 2 + 12\n nodes.push(text(maxX, maxY, valueFormat(max), {\n class: 'chartts-gauge-max',\n fill: theme.textMuted,\n textAnchor: 'middle',\n dominantBaseline: 'central',\n fontSize: theme.fontSizeSmall,\n fontFamily: theme.fontFamily,\n }))\n }\n\n return nodes\n },\n\n hitTest(): HitResult | null {\n return null\n },\n}\n\n/**\n * Stroke-based arc path (open, for use with thick stroke + stroke-linecap:round).\n * Angles in radians, CW from positive X axis (SVG convention).\n */\nfunction strokeArc(\n cx: number, cy: number, r: number,\n startAngle: number, endAngle: number,\n): string {\n const pb = new PathBuilder()\n const x1 = cx + r * Math.cos(startAngle)\n const y1 = cy + r * Math.sin(startAngle)\n const x2 = cx + r * Math.cos(endAngle)\n const y2 = cy + r * Math.sin(endAngle)\n\n let span = endAngle - startAngle\n if (span < 0) span += 2 * Math.PI\n const largeArc = span > Math.PI\n\n pb.moveTo(x1, y1)\n pb.arc(r, r, 0, largeArc, true, x2, y2)\n return pb.build()\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunkCDS2NXGT_cjs = require('./chunk-CDS2NXGT.cjs');
4
- var chunkUMIJYYF3_cjs = require('./chunk-UMIJYYF3.cjs');
3
+ var chunkX5SG6MFS_cjs = require('./chunk-X5SG6MFS.cjs');
4
+ var chunkW626EAS5_cjs = require('./chunk-W626EAS5.cjs');
5
5
 
6
6
  // src/charts/radialbar/radialbar-type.ts
7
7
  var radialBarChartType = {
@@ -10,7 +10,7 @@ var radialBarChartType = {
10
10
  return { x: "categorical", y: "linear" };
11
11
  },
12
12
  prepareData(data, options) {
13
- return chunkCDS2NXGT_cjs.prepareNoAxes(data, options);
13
+ return chunkX5SG6MFS_cjs.prepareNoAxes(data, options);
14
14
  },
15
15
  render(ctx) {
16
16
  const { data, area, theme, options } = ctx;
@@ -41,10 +41,10 @@ var radialBarChartType = {
41
41
  const colorIndex = i % options.colors.length;
42
42
  const color = options.colors[colorIndex];
43
43
  const label = String(data.labels[i] ?? `Item ${i + 1}`);
44
- const trackPb = new chunkUMIJYYF3_cjs.PathBuilder();
44
+ const trackPb = new chunkW626EAS5_cjs.PathBuilder();
45
45
  const trackEnd = startAngle + Math.PI * 2 * 0.95;
46
46
  strokeArc(trackPb, cx, cy, (rOuter + rInner) / 2, startAngle, trackEnd);
47
- nodes.push(chunkUMIJYYF3_cjs.path(trackPb.build(), {
47
+ nodes.push(chunkW626EAS5_cjs.path(trackPb.build(), {
48
48
  class: "chartts-radialbar-track",
49
49
  stroke: theme.gridColor,
50
50
  strokeWidth: ringWidth,
@@ -53,10 +53,10 @@ var radialBarChartType = {
53
53
  opacity: 0.15
54
54
  }));
55
55
  if (sweepAngle > 0.01) {
56
- const arcPb = new chunkUMIJYYF3_cjs.PathBuilder();
56
+ const arcPb = new chunkW626EAS5_cjs.PathBuilder();
57
57
  strokeArc(arcPb, cx, cy, (rOuter + rInner) / 2, startAngle, endAngle);
58
58
  const arcNodes = [
59
- chunkUMIJYYF3_cjs.path(arcPb.build(), {
59
+ chunkW626EAS5_cjs.path(arcPb.build(), {
60
60
  class: "chartts-radialbar-arc",
61
61
  stroke: color,
62
62
  strokeWidth: ringWidth,
@@ -71,7 +71,7 @@ var radialBarChartType = {
71
71
  })
72
72
  ];
73
73
  const ringMidR = (rOuter + rInner) / 2;
74
- arcNodes.push(chunkUMIJYYF3_cjs.text(cx - outerR - 6, cy - ringMidR + cy - cy, label, {
74
+ arcNodes.push(chunkW626EAS5_cjs.text(cx - outerR - 6, cy - ringMidR + cy - cy, label, {
75
75
  class: "chartts-radialbar-label",
76
76
  fill: theme.textMuted,
77
77
  textAnchor: "end",
@@ -79,7 +79,7 @@ var radialBarChartType = {
79
79
  fontSize: Math.min(theme.fontSizeSmall, ringWidth * 0.9),
80
80
  fontFamily: theme.fontFamily
81
81
  }));
82
- nodes.push(chunkUMIJYYF3_cjs.group(arcNodes, {
82
+ nodes.push(chunkW626EAS5_cjs.group(arcNodes, {
83
83
  class: `chartts-series chartts-series-${i}`,
84
84
  "data-series-name": label
85
85
  }));
@@ -124,5 +124,5 @@ function strokeArc(pb, cx, cy, r, startAngle, endAngle) {
124
124
  }
125
125
 
126
126
  exports.radialBarChartType = radialBarChartType;
127
- //# sourceMappingURL=chunk-4H2LGLGI.cjs.map
128
- //# sourceMappingURL=chunk-4H2LGLGI.cjs.map
127
+ //# sourceMappingURL=chunk-KT4LY42Y.cjs.map
128
+ //# sourceMappingURL=chunk-KT4LY42Y.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/charts/radialbar/radialbar-type.ts"],"names":["prepareNoAxes","PathBuilder","path","text","group"],"mappings":"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","file":"chunk-4H2LGLGI.cjs","sourcesContent":["import type {\n ChartTypePlugin, ChartData, ResolvedOptions, PreparedData,\n RenderContext, RenderNode, HitResult, ScaleType,\n} from '../../types'\nimport { prepareNoAxes } from '../../utils/prepare'\nimport { group, path, text } from '../../render/tree'\nimport { PathBuilder } from '../../render/tree'\n\n/**\n * Radial bar chart — concentric arcs radiating from center.\n *\n * Each category gets its own ring. Arc length is proportional to value.\n * Uses the first series' values.\n */\nexport const radialBarChartType: ChartTypePlugin = {\n type: 'radial-bar',\n\n getScaleTypes(): { x: ScaleType; y: ScaleType } {\n return { x: 'categorical', y: 'linear' }\n },\n\n prepareData(data: ChartData, options: ResolvedOptions): PreparedData {\n return prepareNoAxes(data, options)\n },\n\n render(ctx: RenderContext): RenderNode[] {\n const { data, area, theme, options } = ctx\n const nodes: RenderNode[] = []\n\n const series = data.series[0]\n if (!series || series.values.length === 0) return nodes\n\n const values = series.values\n const count = values.length\n let maxVal = 0\n for (const v of values) {\n if (Math.abs(v) > maxVal) maxVal = Math.abs(v)\n }\n if (maxVal === 0) maxVal = 1\n\n const cx = area.x + area.width / 2\n const cy = area.y + area.height / 2\n const outerR = Math.min(area.width, area.height) / 2 - 20\n const innerR = outerR * 0.2\n const ringGap = 3\n const ringWidth = (outerR - innerR - ringGap * (count - 1)) / count\n const startAngle = -Math.PI / 2 // 12 o'clock\n\n for (let i = 0; i < count; i++) {\n const value = Math.abs(values[i]!)\n const fraction = value / maxVal\n const sweepAngle = fraction * Math.PI * 2 * 0.95 // max 95% of circle\n const endAngle = startAngle + sweepAngle\n\n const rOuter = innerR + (count - i) * (ringWidth + ringGap) - ringGap\n const rInner = rOuter - ringWidth\n\n const colorIndex = i % options.colors.length\n const color = options.colors[colorIndex]!\n const label = String(data.labels[i] ?? `Item ${i + 1}`)\n\n // Track arc (full background ring) — rounded caps\n const trackPb = new PathBuilder()\n const trackEnd = startAngle + Math.PI * 2 * 0.95\n strokeArc(trackPb, cx, cy, (rOuter + rInner) / 2, startAngle, trackEnd)\n nodes.push(path(trackPb.build(), {\n class: 'chartts-radialbar-track',\n stroke: theme.gridColor,\n strokeWidth: ringWidth,\n strokeLinecap: 'round',\n fill: 'none',\n opacity: 0.15,\n }))\n\n // Value arc — rounded caps for polished look\n if (sweepAngle > 0.01) {\n const arcPb = new PathBuilder()\n strokeArc(arcPb, cx, cy, (rOuter + rInner) / 2, startAngle, endAngle)\n\n const arcNodes: RenderNode[] = [\n path(arcPb.build(), {\n class: 'chartts-radialbar-arc',\n stroke: color,\n strokeWidth: ringWidth,\n strokeLinecap: 'round',\n fill: 'none',\n opacity: 0.85,\n 'data-series': 0,\n 'data-index': i,\n tabindex: 0,\n role: 'img',\n ariaLabel: `${label}: ${values[i]}`,\n }),\n ]\n\n // Label on the left side of the ring\n const ringMidR = (rOuter + rInner) / 2\n arcNodes.push(text(cx - outerR - 6, cy - ringMidR + cy - cy, label, {\n class: 'chartts-radialbar-label',\n fill: theme.textMuted,\n textAnchor: 'end',\n dominantBaseline: 'central',\n fontSize: Math.min(theme.fontSizeSmall, ringWidth * 0.9),\n fontFamily: theme.fontFamily,\n }))\n\n nodes.push(group(arcNodes, {\n class: `chartts-series chartts-series-${i}`,\n 'data-series-name': label,\n }))\n }\n }\n\n return nodes\n },\n\n hitTest(ctx: RenderContext, mx: number, my: number): HitResult | null {\n const { data, area } = ctx\n const series = data.series[0]\n if (!series || series.values.length === 0) return null\n\n const count = series.values.length\n const cx = area.x + area.width / 2\n const cy = area.y + area.height / 2\n const outerR = Math.min(area.width, area.height) / 2 - 20\n const innerR = outerR * 0.2\n const ringGap = 3\n const ringWidth = (outerR - innerR - ringGap * (count - 1)) / count\n\n const dx = mx - cx\n const dy = my - cy\n const dist = Math.sqrt(dx * dx + dy * dy)\n\n for (let i = 0; i < count; i++) {\n const rOuter = innerR + (count - i) * (ringWidth + ringGap) - ringGap\n const rInner = rOuter - ringWidth\n\n if (dist >= rInner && dist <= rOuter) {\n const midR = (rInner + rOuter) / 2\n const hitAngle = Math.atan2(dy, dx)\n return { seriesIndex: 0, pointIndex: i, distance: 0, x: cx + midR * Math.cos(hitAngle), y: cy + midR * Math.sin(hitAngle) }\n }\n }\n\n return null\n },\n}\n\nfunction strokeArc(pb: PathBuilder, cx: number, cy: number, r: number, startAngle: number, endAngle: number): void {\n const x1 = cx + r * Math.cos(startAngle)\n const y1 = cy + r * Math.sin(startAngle)\n const x2 = cx + r * Math.cos(endAngle)\n const y2 = cy + r * Math.sin(endAngle)\n const largeArc = (endAngle - startAngle) > Math.PI\n\n pb.moveTo(x1, y1)\n pb.arc(r, r, 0, largeArc, true, x2, y2)\n}\n"]}
1
+ {"version":3,"sources":["../src/charts/radialbar/radialbar-type.ts"],"names":["prepareNoAxes","PathBuilder","path","text","group"],"mappings":"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","file":"chunk-KT4LY42Y.cjs","sourcesContent":["import type {\n ChartTypePlugin, ChartData, ResolvedOptions, PreparedData,\n RenderContext, RenderNode, HitResult, ScaleType,\n} from '../../types'\nimport { prepareNoAxes } from '../../utils/prepare'\nimport { group, path, text } from '../../render/tree'\nimport { PathBuilder } from '../../render/tree'\n\n/**\n * Radial bar chart — concentric arcs radiating from center.\n *\n * Each category gets its own ring. Arc length is proportional to value.\n * Uses the first series' values.\n */\nexport const radialBarChartType: ChartTypePlugin = {\n type: 'radial-bar',\n\n getScaleTypes(): { x: ScaleType; y: ScaleType } {\n return { x: 'categorical', y: 'linear' }\n },\n\n prepareData(data: ChartData, options: ResolvedOptions): PreparedData {\n return prepareNoAxes(data, options)\n },\n\n render(ctx: RenderContext): RenderNode[] {\n const { data, area, theme, options } = ctx\n const nodes: RenderNode[] = []\n\n const series = data.series[0]\n if (!series || series.values.length === 0) return nodes\n\n const values = series.values\n const count = values.length\n let maxVal = 0\n for (const v of values) {\n if (Math.abs(v) > maxVal) maxVal = Math.abs(v)\n }\n if (maxVal === 0) maxVal = 1\n\n const cx = area.x + area.width / 2\n const cy = area.y + area.height / 2\n const outerR = Math.min(area.width, area.height) / 2 - 20\n const innerR = outerR * 0.2\n const ringGap = 3\n const ringWidth = (outerR - innerR - ringGap * (count - 1)) / count\n const startAngle = -Math.PI / 2 // 12 o'clock\n\n for (let i = 0; i < count; i++) {\n const value = Math.abs(values[i]!)\n const fraction = value / maxVal\n const sweepAngle = fraction * Math.PI * 2 * 0.95 // max 95% of circle\n const endAngle = startAngle + sweepAngle\n\n const rOuter = innerR + (count - i) * (ringWidth + ringGap) - ringGap\n const rInner = rOuter - ringWidth\n\n const colorIndex = i % options.colors.length\n const color = options.colors[colorIndex]!\n const label = String(data.labels[i] ?? `Item ${i + 1}`)\n\n // Track arc (full background ring) — rounded caps\n const trackPb = new PathBuilder()\n const trackEnd = startAngle + Math.PI * 2 * 0.95\n strokeArc(trackPb, cx, cy, (rOuter + rInner) / 2, startAngle, trackEnd)\n nodes.push(path(trackPb.build(), {\n class: 'chartts-radialbar-track',\n stroke: theme.gridColor,\n strokeWidth: ringWidth,\n strokeLinecap: 'round',\n fill: 'none',\n opacity: 0.15,\n }))\n\n // Value arc — rounded caps for polished look\n if (sweepAngle > 0.01) {\n const arcPb = new PathBuilder()\n strokeArc(arcPb, cx, cy, (rOuter + rInner) / 2, startAngle, endAngle)\n\n const arcNodes: RenderNode[] = [\n path(arcPb.build(), {\n class: 'chartts-radialbar-arc',\n stroke: color,\n strokeWidth: ringWidth,\n strokeLinecap: 'round',\n fill: 'none',\n opacity: 0.85,\n 'data-series': 0,\n 'data-index': i,\n tabindex: 0,\n role: 'img',\n ariaLabel: `${label}: ${values[i]}`,\n }),\n ]\n\n // Label on the left side of the ring\n const ringMidR = (rOuter + rInner) / 2\n arcNodes.push(text(cx - outerR - 6, cy - ringMidR + cy - cy, label, {\n class: 'chartts-radialbar-label',\n fill: theme.textMuted,\n textAnchor: 'end',\n dominantBaseline: 'central',\n fontSize: Math.min(theme.fontSizeSmall, ringWidth * 0.9),\n fontFamily: theme.fontFamily,\n }))\n\n nodes.push(group(arcNodes, {\n class: `chartts-series chartts-series-${i}`,\n 'data-series-name': label,\n }))\n }\n }\n\n return nodes\n },\n\n hitTest(ctx: RenderContext, mx: number, my: number): HitResult | null {\n const { data, area } = ctx\n const series = data.series[0]\n if (!series || series.values.length === 0) return null\n\n const count = series.values.length\n const cx = area.x + area.width / 2\n const cy = area.y + area.height / 2\n const outerR = Math.min(area.width, area.height) / 2 - 20\n const innerR = outerR * 0.2\n const ringGap = 3\n const ringWidth = (outerR - innerR - ringGap * (count - 1)) / count\n\n const dx = mx - cx\n const dy = my - cy\n const dist = Math.sqrt(dx * dx + dy * dy)\n\n for (let i = 0; i < count; i++) {\n const rOuter = innerR + (count - i) * (ringWidth + ringGap) - ringGap\n const rInner = rOuter - ringWidth\n\n if (dist >= rInner && dist <= rOuter) {\n const midR = (rInner + rOuter) / 2\n const hitAngle = Math.atan2(dy, dx)\n return { seriesIndex: 0, pointIndex: i, distance: 0, x: cx + midR * Math.cos(hitAngle), y: cy + midR * Math.sin(hitAngle) }\n }\n }\n\n return null\n },\n}\n\nfunction strokeArc(pb: PathBuilder, cx: number, cy: number, r: number, startAngle: number, endAngle: number): void {\n const x1 = cx + r * Math.cos(startAngle)\n const y1 = cy + r * Math.sin(startAngle)\n const x2 = cx + r * Math.cos(endAngle)\n const y2 = cy + r * Math.sin(endAngle)\n const largeArc = (endAngle - startAngle) > Math.PI\n\n pb.moveTo(x1, y1)\n pb.arc(r, r, 0, largeArc, true, x2, y2)\n}\n"]}
@@ -0,0 +1,211 @@
1
+ 'use strict';
2
+
3
+ var chunkX5SG6MFS_cjs = require('./chunk-X5SG6MFS.cjs');
4
+ var chunkW626EAS5_cjs = require('./chunk-W626EAS5.cjs');
5
+
6
+ // src/charts/voronoi/voronoi-type.ts
7
+ var voronoiChartType = {
8
+ type: "voronoi",
9
+ getScaleTypes() {
10
+ return { x: "categorical", y: "linear" };
11
+ },
12
+ prepareData(data, options) {
13
+ return chunkX5SG6MFS_cjs.prepareNoAxes(data, options);
14
+ },
15
+ render(ctx) {
16
+ const { data, area, theme, options } = ctx;
17
+ const nodes = [];
18
+ const series = data.series[0];
19
+ if (!series || series.values.length === 0) return nodes;
20
+ const n = series.values.length;
21
+ const values = series.values;
22
+ const minVal = Math.min(...values);
23
+ const maxVal = Math.max(...values);
24
+ const range = maxVal - minVal || 1;
25
+ const weights = values.map((v) => (v - minVal) / range);
26
+ const seeds = fibonacciSeeds(n, area);
27
+ const cells = computeWeightedVoronoi(seeds, weights, area);
28
+ const padding = 3;
29
+ for (let i = 0; i < n; i++) {
30
+ const cell = cells[i];
31
+ if (!cell || cell.length < 3) continue;
32
+ const t = weights[i];
33
+ const label = String(data.labels[i] ?? `${i}`);
34
+ const color = options.colors[i % options.colors.length] ?? "#3b82f6";
35
+ const opacity = 0.25 + t * 0.65;
36
+ const centroid = cell.reduce(
37
+ (acc, p) => ({ x: acc.x + p.x / cell.length, y: acc.y + p.y / cell.length }),
38
+ { x: 0, y: 0 }
39
+ );
40
+ const paddedCell = cell.map((p) => {
41
+ const dx = p.x - centroid.x;
42
+ const dy = p.y - centroid.y;
43
+ const dist = Math.sqrt(dx * dx + dy * dy) || 1;
44
+ const shrink = Math.min(padding / dist, 0.3);
45
+ return { x: p.x - dx * shrink, y: p.y - dy * shrink };
46
+ });
47
+ const d = paddedCell.map((p, j) => `${j === 0 ? "M" : "L"} ${p.x} ${p.y}`).join(" ") + " Z";
48
+ const cellNodes = [];
49
+ cellNodes.push(chunkW626EAS5_cjs.path(d, {
50
+ class: "chartts-voronoi-cell",
51
+ fill: color,
52
+ fillOpacity: opacity,
53
+ stroke: theme.background,
54
+ strokeWidth: 2,
55
+ style: `--chartts-i:${i}`,
56
+ "data-series": 0,
57
+ "data-index": i,
58
+ tabindex: 0,
59
+ role: "img",
60
+ ariaLabel: `${label}: ${values[i]}`
61
+ }));
62
+ if (n <= 20) {
63
+ const cellArea = polygonArea(paddedCell);
64
+ const minCellDim = Math.sqrt(cellArea);
65
+ const fontSize = Math.max(8, Math.min(theme.fontSize, minCellDim * 0.2));
66
+ cellNodes.push(chunkW626EAS5_cjs.text(centroid.x, centroid.y - fontSize * 0.4, label, {
67
+ class: "chartts-voronoi-label",
68
+ fill: theme.textColor,
69
+ textAnchor: "middle",
70
+ dominantBaseline: "auto",
71
+ fontSize,
72
+ fontFamily: theme.fontFamily,
73
+ fontWeight: 600,
74
+ pointerEvents: "none"
75
+ }));
76
+ if (minCellDim > 40) {
77
+ cellNodes.push(chunkW626EAS5_cjs.text(centroid.x, centroid.y + fontSize * 0.7, String(values[i]), {
78
+ class: "chartts-voronoi-value",
79
+ fill: theme.textMuted,
80
+ textAnchor: "middle",
81
+ dominantBaseline: "auto",
82
+ fontSize: fontSize * 0.8,
83
+ fontFamily: theme.fontFamily,
84
+ pointerEvents: "none"
85
+ }));
86
+ }
87
+ }
88
+ nodes.push(chunkW626EAS5_cjs.group(cellNodes, {
89
+ class: `chartts-series chartts-series-${i}`,
90
+ "data-series-name": label
91
+ }));
92
+ }
93
+ return nodes;
94
+ },
95
+ hitTest(ctx, mx, my) {
96
+ const { data, area } = ctx;
97
+ const series = data.series[0];
98
+ if (!series || series.values.length === 0) return null;
99
+ const values = series.values;
100
+ const minVal = Math.min(...values);
101
+ const maxVal = Math.max(...values);
102
+ const range = maxVal - minVal || 1;
103
+ const weights = values.map((v) => (v - minVal) / range);
104
+ const seeds = fibonacciSeeds(values.length, area);
105
+ const cells = computeWeightedVoronoi(seeds, weights, area);
106
+ for (let i = 0; i < cells.length; i++) {
107
+ const cell = cells[i];
108
+ if (!cell || cell.length < 3) continue;
109
+ if (pointInPolygon(mx, my, cell)) {
110
+ const centroid = cell.reduce(
111
+ (acc, p) => ({ x: acc.x + p.x / cell.length, y: acc.y + p.y / cell.length }),
112
+ { x: 0, y: 0 }
113
+ );
114
+ return { seriesIndex: 0, pointIndex: i, distance: 0, x: centroid.x, y: centroid.y };
115
+ }
116
+ }
117
+ return null;
118
+ }
119
+ };
120
+ function pointInPolygon(px, py, poly) {
121
+ let inside = false;
122
+ for (let i = 0, j = poly.length - 1; i < poly.length; j = i++) {
123
+ const a = poly[i], b = poly[j];
124
+ if (a.y > py !== b.y > py && px < (b.x - a.x) * (py - a.y) / (b.y - a.y) + a.x) {
125
+ inside = !inside;
126
+ }
127
+ }
128
+ return inside;
129
+ }
130
+ function weightScale(area) {
131
+ return area.width * area.height * 0.15;
132
+ }
133
+ function fibonacciSeeds(n, area) {
134
+ const cx = area.x + area.width / 2;
135
+ const cy = area.y + area.height / 2;
136
+ const maxR = Math.min(area.width, area.height) * 0.45;
137
+ const golden = (1 + Math.sqrt(5)) / 2;
138
+ const pts = [];
139
+ for (let i = 0; i < n; i++) {
140
+ const r = maxR * Math.sqrt((i + 0.5) / n);
141
+ const theta = 2 * Math.PI * i / (golden * golden);
142
+ pts.push({
143
+ x: cx + r * Math.cos(theta) * (area.width / Math.min(area.width, area.height)),
144
+ y: cy + r * Math.sin(theta) * (area.height / Math.min(area.width, area.height))
145
+ });
146
+ }
147
+ return pts;
148
+ }
149
+ function computeWeightedVoronoi(seeds, weights, area) {
150
+ const cells = [];
151
+ const { x: ax, y: ay, width: aw, height: ah } = area;
152
+ const wScale = weightScale(area);
153
+ for (let i = 0; i < seeds.length; i++) {
154
+ let polygon = [
155
+ { x: ax, y: ay },
156
+ { x: ax + aw, y: ay },
157
+ { x: ax + aw, y: ay + ah },
158
+ { x: ax, y: ay + ah }
159
+ ];
160
+ const si = seeds[i];
161
+ const wi = weights[i];
162
+ for (let j = 0; j < seeds.length; j++) {
163
+ if (i === j) continue;
164
+ const sj = seeds[j];
165
+ const wj = weights[j];
166
+ const dx = si.x - sj.x;
167
+ const dy = si.y - sj.y;
168
+ const len2 = dx * dx + dy * dy;
169
+ if (len2 === 0) continue;
170
+ const len = Math.sqrt(len2);
171
+ const shift = (wi - wj) * wScale / (2 * len2);
172
+ const mx = (si.x + sj.x) / 2 + dx * shift;
173
+ const my = (si.y + sj.y) / 2 + dy * shift;
174
+ const nx = dx / len;
175
+ const ny = dy / len;
176
+ polygon = clipPolygon(polygon, mx, my, nx, ny);
177
+ if (polygon.length < 3) break;
178
+ }
179
+ cells.push(polygon);
180
+ }
181
+ return cells;
182
+ }
183
+ function polygonArea(pts) {
184
+ let area = 0;
185
+ for (let i = 0; i < pts.length; i++) {
186
+ const a = pts[i];
187
+ const b = pts[(i + 1) % pts.length];
188
+ area += a.x * b.y - b.x * a.y;
189
+ }
190
+ return Math.abs(area) / 2;
191
+ }
192
+ function clipPolygon(poly, mx, my, nx, ny) {
193
+ if (poly.length < 3) return poly;
194
+ const out = [];
195
+ for (let i = 0; i < poly.length; i++) {
196
+ const a = poly[i];
197
+ const b = poly[(i + 1) % poly.length];
198
+ const da = (a.x - mx) * nx + (a.y - my) * ny;
199
+ const db = (b.x - mx) * nx + (b.y - my) * ny;
200
+ if (da >= 0) out.push(a);
201
+ if (da >= 0 !== db >= 0) {
202
+ const t = da / (da - db);
203
+ out.push({ x: a.x + t * (b.x - a.x), y: a.y + t * (b.y - a.y) });
204
+ }
205
+ }
206
+ return out;
207
+ }
208
+
209
+ exports.voronoiChartType = voronoiChartType;
210
+ //# sourceMappingURL=chunk-KX4ZBUHB.cjs.map
211
+ //# sourceMappingURL=chunk-KX4ZBUHB.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/charts/voronoi/voronoi-type.ts"],"names":["prepareNoAxes","path","text","group"],"mappings":"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","file":"chunk-KX4ZBUHB.cjs","sourcesContent":["import type {\n ChartTypePlugin, ChartData, ResolvedOptions, PreparedData,\n RenderContext, RenderNode, HitResult, ScaleType,\n} from '../../types'\nimport { prepareNoAxes } from '../../utils/prepare'\nimport { group, path, text } from '../../render/tree'\n\n/**\n * Voronoi chart — weighted tessellation where cell AREA is proportional to value.\n *\n * Uses a power diagram: the bisector between two seeds shifts toward the\n * lighter seed, giving heavier seeds (higher values) larger cells.\n * Labels are the cell names, series[0] values control cell size.\n */\nexport const voronoiChartType: ChartTypePlugin = {\n type: 'voronoi',\n\n getScaleTypes(): { x: ScaleType; y: ScaleType } {\n return { x: 'categorical', y: 'linear' }\n },\n\n prepareData(data: ChartData, options: ResolvedOptions): PreparedData {\n return prepareNoAxes(data, options)\n },\n\n render(ctx: RenderContext): RenderNode[] {\n const { data, area, theme, options } = ctx\n const nodes: RenderNode[] = []\n\n const series = data.series[0]\n if (!series || series.values.length === 0) return nodes\n\n const n = series.values.length\n const values = series.values\n const minVal = Math.min(...values)\n const maxVal = Math.max(...values)\n const range = maxVal - minVal || 1\n\n // Compute weights from values — higher value = higher weight = larger cell\n const weights = values.map(v => ((v - minVal) / range))\n\n // Distribute seed points using Fibonacci for even initial spacing\n const seeds = fibonacciSeeds(n, area)\n\n // Compute weighted Voronoi cells (power diagram)\n const cells = computeWeightedVoronoi(seeds, weights, area)\n\n const padding = 3\n\n for (let i = 0; i < n; i++) {\n const cell = cells[i]\n if (!cell || cell.length < 3) continue\n\n const t = weights[i]!\n const label = String(data.labels[i] ?? `${i}`)\n const color = options.colors[i % options.colors.length] ?? '#3b82f6'\n const opacity = 0.25 + t * 0.65\n\n // Shrink cell toward centroid for visual padding\n const centroid = cell.reduce(\n (acc, p) => ({ x: acc.x + p.x / cell.length, y: acc.y + p.y / cell.length }),\n { x: 0, y: 0 },\n )\n const paddedCell = cell.map(p => {\n const dx = p.x - centroid.x\n const dy = p.y - centroid.y\n const dist = Math.sqrt(dx * dx + dy * dy) || 1\n const shrink = Math.min(padding / dist, 0.3)\n return { x: p.x - dx * shrink, y: p.y - dy * shrink }\n })\n\n const d = paddedCell.map((p, j) => `${j === 0 ? 'M' : 'L'} ${p.x} ${p.y}`).join(' ') + ' Z'\n\n const cellNodes: RenderNode[] = []\n\n cellNodes.push(path(d, {\n class: 'chartts-voronoi-cell',\n fill: color,\n fillOpacity: opacity,\n stroke: theme.background,\n strokeWidth: 2,\n style: `--chartts-i:${i}`,\n 'data-series': 0,\n 'data-index': i,\n tabindex: 0,\n role: 'img',\n ariaLabel: `${label}: ${values[i]}`,\n }))\n\n // Label at centroid\n if (n <= 20) {\n const cellArea = polygonArea(paddedCell)\n const minCellDim = Math.sqrt(cellArea)\n const fontSize = Math.max(8, Math.min(theme.fontSize, minCellDim * 0.2))\n\n cellNodes.push(text(centroid.x, centroid.y - fontSize * 0.4, label, {\n class: 'chartts-voronoi-label',\n fill: theme.textColor,\n textAnchor: 'middle',\n dominantBaseline: 'auto',\n fontSize,\n fontFamily: theme.fontFamily,\n fontWeight: 600,\n pointerEvents: 'none',\n }))\n\n // Value below label\n if (minCellDim > 40) {\n cellNodes.push(text(centroid.x, centroid.y + fontSize * 0.7, String(values[i]), {\n class: 'chartts-voronoi-value',\n fill: theme.textMuted,\n textAnchor: 'middle',\n dominantBaseline: 'auto',\n fontSize: fontSize * 0.8,\n fontFamily: theme.fontFamily,\n pointerEvents: 'none',\n }))\n }\n }\n\n nodes.push(group(cellNodes, {\n class: `chartts-series chartts-series-${i}`,\n 'data-series-name': label,\n }))\n }\n\n return nodes\n },\n\n hitTest(ctx: RenderContext, mx: number, my: number): HitResult | null {\n const { data, area } = ctx\n const series = data.series[0]\n if (!series || series.values.length === 0) return null\n\n const values = series.values\n const minVal = Math.min(...values)\n const maxVal = Math.max(...values)\n const range = maxVal - minVal || 1\n const weights = values.map(v => ((v - minVal) / range))\n\n const seeds = fibonacciSeeds(values.length, area)\n const cells = computeWeightedVoronoi(seeds, weights, area)\n\n // Point-in-polygon test on each cell\n for (let i = 0; i < cells.length; i++) {\n const cell = cells[i]\n if (!cell || cell.length < 3) continue\n if (pointInPolygon(mx, my, cell)) {\n const centroid = cell.reduce(\n (acc, p) => ({ x: acc.x + p.x / cell.length, y: acc.y + p.y / cell.length }),\n { x: 0, y: 0 },\n )\n return { seriesIndex: 0, pointIndex: i, distance: 0, x: centroid.x, y: centroid.y }\n }\n }\n\n return null\n },\n}\n\ninterface Pt { x: number; y: number }\n\n/** Ray-casting point-in-polygon test. */\nfunction pointInPolygon(px: number, py: number, poly: Pt[]): boolean {\n let inside = false\n for (let i = 0, j = poly.length - 1; i < poly.length; j = i++) {\n const a = poly[i]!, b = poly[j]!\n if ((a.y > py) !== (b.y > py) &&\n px < (b.x - a.x) * (py - a.y) / (b.y - a.y) + a.x) {\n inside = !inside\n }\n }\n return inside\n}\n\n/** Scale factor for weights based on chart area. */\nfunction weightScale(area: { width: number; height: number }): number {\n return (area.width * area.height) * 0.15\n}\n\n/** Fibonacci/sunflower seed distribution for even spacing. */\nfunction fibonacciSeeds(n: number, area: { x: number; y: number; width: number; height: number }): Pt[] {\n const cx = area.x + area.width / 2\n const cy = area.y + area.height / 2\n const maxR = Math.min(area.width, area.height) * 0.45\n const golden = (1 + Math.sqrt(5)) / 2\n const pts: Pt[] = []\n\n for (let i = 0; i < n; i++) {\n const r = maxR * Math.sqrt((i + 0.5) / n)\n const theta = 2 * Math.PI * i / (golden * golden)\n pts.push({\n x: cx + r * Math.cos(theta) * (area.width / Math.min(area.width, area.height)),\n y: cy + r * Math.sin(theta) * (area.height / Math.min(area.width, area.height)),\n })\n }\n\n return pts\n}\n\n/**\n * Compute weighted Voronoi cells (power diagram).\n *\n * Instead of clipping at the perpendicular bisector (equidistant line),\n * we shift the bisector toward the lighter seed. For seeds i and j with\n * weights wi and wj, the dividing plane shifts along the i→j axis by:\n * shift = (wi - wj) * scale / (2 * |si - sj|)\n * This gives heavier seeds proportionally larger cells.\n */\nfunction computeWeightedVoronoi(\n seeds: Pt[],\n weights: number[],\n area: { x: number; y: number; width: number; height: number },\n): Pt[][] {\n const cells: Pt[][] = []\n const { x: ax, y: ay, width: aw, height: ah } = area\n const wScale = weightScale(area)\n\n for (let i = 0; i < seeds.length; i++) {\n let polygon: Pt[] = [\n { x: ax, y: ay },\n { x: ax + aw, y: ay },\n { x: ax + aw, y: ay + ah },\n { x: ax, y: ay + ah },\n ]\n\n const si = seeds[i]!\n const wi = weights[i]!\n\n for (let j = 0; j < seeds.length; j++) {\n if (i === j) continue\n const sj = seeds[j]!\n const wj = weights[j]!\n\n // Direction from j to i\n const dx = si.x - sj.x\n const dy = si.y - sj.y\n const len2 = dx * dx + dy * dy\n if (len2 === 0) continue\n const len = Math.sqrt(len2)\n\n // Shift bisector toward the lighter seed\n // Positive shift = toward sj = seed i gets more area\n const shift = (wi - wj) * wScale / (2 * len2)\n\n // Shifted midpoint\n const mx = (si.x + sj.x) / 2 + dx * shift\n const my = (si.y + sj.y) / 2 + dy * shift\n\n // Normal pointing toward seed i\n const nx = dx / len\n const ny = dy / len\n\n polygon = clipPolygon(polygon, mx, my, nx, ny)\n if (polygon.length < 3) break\n }\n\n cells.push(polygon)\n }\n\n return cells\n}\n\n/** Approximate polygon area via shoelace formula. */\nfunction polygonArea(pts: Pt[]): number {\n let area = 0\n for (let i = 0; i < pts.length; i++) {\n const a = pts[i]!\n const b = pts[(i + 1) % pts.length]!\n area += a.x * b.y - b.x * a.y\n }\n return Math.abs(area) / 2\n}\n\n/** Sutherland-Hodgman clip: keep the side where dot(p - m, n) >= 0. */\nfunction clipPolygon(poly: Pt[], mx: number, my: number, nx: number, ny: number): Pt[] {\n if (poly.length < 3) return poly\n const out: Pt[] = []\n\n for (let i = 0; i < poly.length; i++) {\n const a = poly[i]!\n const b = poly[(i + 1) % poly.length]!\n const da = (a.x - mx) * nx + (a.y - my) * ny\n const db = (b.x - mx) * nx + (b.y - my) * ny\n\n if (da >= 0) out.push(a)\n if ((da >= 0) !== (db >= 0)) {\n const t = da / (da - db)\n out.push({ x: a.x + t * (b.x - a.x), y: a.y + t * (b.y - a.y) })\n }\n }\n\n return out\n}\n"]}
@@ -1,6 +1,6 @@
1
- import { roundedSlicePath } from './chunk-UFMPALRH.js';
2
- import { prepareNoAxes } from './chunk-MPQECPE3.js';
3
- import { path, text, group } from './chunk-DX4FBN3I.js';
1
+ import { roundedSlicePath } from './chunk-SUB5WML4.js';
2
+ import { prepareNoAxes } from './chunk-LKSKGQX7.js';
3
+ import { path, text, group } from './chunk-XIVC32HU.js';
4
4
 
5
5
  // src/charts/pie/pie-type.ts
6
6
  var pieChartType = {
@@ -167,5 +167,5 @@ var donutChartType = {
167
167
  };
168
168
 
169
169
  export { donutChartType, pieChartType };
170
- //# sourceMappingURL=chunk-2MWA7H6J.js.map
171
- //# sourceMappingURL=chunk-2MWA7H6J.js.map
170
+ //# sourceMappingURL=chunk-KXJOIVL5.js.map
171
+ //# sourceMappingURL=chunk-KXJOIVL5.js.map