@chartts/core 0.1.4 → 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-62DBXI4N.js → chunk-2VHG2N75.js} +4 -4
  22. package/dist/{chunk-62DBXI4N.js.map → chunk-2VHG2N75.js.map} +1 -1
  23. package/dist/{chunk-VJXUBN7J.js → chunk-2X7UIG3G.js} +3 -3
  24. package/dist/{chunk-VJXUBN7J.js.map → chunk-2X7UIG3G.js.map} +1 -1
  25. package/dist/{chunk-ESJMEDLY.cjs → chunk-35XUPEAD.cjs} +4 -4
  26. package/dist/{chunk-ESJMEDLY.cjs.map → chunk-35XUPEAD.cjs.map} +1 -1
  27. package/dist/{chunk-Y6CVUI6A.cjs → chunk-3HBRAGJA.cjs} +13 -13
  28. package/dist/{chunk-Y6CVUI6A.cjs.map → chunk-3HBRAGJA.cjs.map} +1 -1
  29. package/dist/{chunk-ZOEN3ARN.js → chunk-45Y77XDM.js} +3 -3
  30. package/dist/{chunk-ZOEN3ARN.js.map → chunk-45Y77XDM.js.map} +1 -1
  31. package/dist/{chunk-PCAYYCLY.cjs → chunk-47R2QUID.cjs} +10 -10
  32. package/dist/{chunk-PCAYYCLY.cjs.map → chunk-47R2QUID.cjs.map} +1 -1
  33. package/dist/{chunk-IF6RQ53Q.cjs → chunk-4C5IV57Z.cjs} +9 -9
  34. package/dist/{chunk-IF6RQ53Q.cjs.map → chunk-4C5IV57Z.cjs.map} +1 -1
  35. package/dist/{chunk-2BUIZDOB.js → chunk-4EV5UN6V.js} +3 -3
  36. package/dist/{chunk-2BUIZDOB.js.map → chunk-4EV5UN6V.js.map} +1 -1
  37. package/dist/{chunk-THHZMRFU.js → chunk-5JDHVXPE.js} +3 -3
  38. package/dist/{chunk-THHZMRFU.js.map → chunk-5JDHVXPE.js.map} +1 -1
  39. package/dist/{chunk-PKXW45G4.js → chunk-5VI5F5XA.js} +3 -3
  40. package/dist/{chunk-PKXW45G4.js.map → chunk-5VI5F5XA.js.map} +1 -1
  41. package/dist/{chunk-TEZNWW3R.cjs → chunk-64B7FGFP.cjs} +8 -8
  42. package/dist/{chunk-TEZNWW3R.cjs.map → chunk-64B7FGFP.cjs.map} +1 -1
  43. package/dist/{chunk-5HZEDCJG.js → chunk-66GE7TI3.js} +3 -3
  44. package/dist/{chunk-5HZEDCJG.js.map → chunk-66GE7TI3.js.map} +1 -1
  45. package/dist/{chunk-CWZADOJ6.js → chunk-6H34P4AG.js} +3 -3
  46. package/dist/{chunk-CWZADOJ6.js.map → chunk-6H34P4AG.js.map} +1 -1
  47. package/dist/{chunk-BGGESAAG.cjs → chunk-6KNS32OH.cjs} +7 -7
  48. package/dist/{chunk-BGGESAAG.cjs.map → chunk-6KNS32OH.cjs.map} +1 -1
  49. package/dist/{chunk-GBL4R3GH.cjs → chunk-6S2NCXNP.cjs} +6 -6
  50. package/dist/{chunk-GBL4R3GH.cjs.map → chunk-6S2NCXNP.cjs.map} +1 -1
  51. package/dist/{chunk-FVLVTY5D.cjs → chunk-6XD3VSAM.cjs} +6 -6
  52. package/dist/{chunk-FVLVTY5D.cjs.map → chunk-6XD3VSAM.cjs.map} +1 -1
  53. package/dist/{chunk-KWSVJRXX.cjs → chunk-6XWZSV6M.cjs} +4 -4
  54. package/dist/{chunk-KWSVJRXX.cjs.map → chunk-6XWZSV6M.cjs.map} +1 -1
  55. package/dist/{chunk-N35UAFEU.js → chunk-7FUQMZGT.js} +4 -4
  56. package/dist/{chunk-N35UAFEU.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-A5G32G2R.cjs → chunk-7XOK2HLV.cjs} +9 -9
  60. package/dist/{chunk-A5G32G2R.cjs.map → chunk-7XOK2HLV.cjs.map} +1 -1
  61. package/dist/{chunk-SGZUUUXU.js → chunk-ACN4JCSF.js} +4 -4
  62. package/dist/{chunk-SGZUUUXU.js.map → chunk-ACN4JCSF.js.map} +1 -1
  63. package/dist/{chunk-3NHH6C4K.cjs → chunk-AOZ47DTE.cjs} +13 -13
  64. package/dist/{chunk-3NHH6C4K.cjs.map → chunk-AOZ47DTE.cjs.map} +1 -1
  65. package/dist/{chunk-WZCES5M6.js → chunk-AYEXPYFE.js} +4 -4
  66. package/dist/{chunk-WZCES5M6.js.map → chunk-AYEXPYFE.js.map} +1 -1
  67. package/dist/{chunk-D5QUAWF3.cjs → chunk-BPXEQPZU.cjs} +10 -10
  68. package/dist/{chunk-D5QUAWF3.cjs.map → chunk-BPXEQPZU.cjs.map} +1 -1
  69. package/dist/{chunk-YZXRD6K6.cjs → chunk-BQUMYOBP.cjs} +7 -7
  70. package/dist/{chunk-YZXRD6K6.cjs.map → chunk-BQUMYOBP.cjs.map} +1 -1
  71. package/dist/{chunk-FGHSUT6X.cjs → chunk-CG4KMZRU.cjs} +6 -6
  72. package/dist/{chunk-FGHSUT6X.cjs.map → chunk-CG4KMZRU.cjs.map} +1 -1
  73. package/dist/{chunk-BFBVJ6MU.js → chunk-CLBVCWJG.js} +3 -3
  74. package/dist/{chunk-BFBVJ6MU.js.map → chunk-CLBVCWJG.js.map} +1 -1
  75. package/dist/{chunk-754Z4OR6.cjs → chunk-CVKWXLXW.cjs} +10 -10
  76. package/dist/{chunk-754Z4OR6.cjs.map → chunk-CVKWXLXW.cjs.map} +1 -1
  77. package/dist/{chunk-5E7FXDBM.js → chunk-D4RP2H6A.js} +4 -4
  78. package/dist/{chunk-5E7FXDBM.js.map → chunk-D4RP2H6A.js.map} +1 -1
  79. package/dist/{chunk-HCIBBUV5.js → chunk-DMBUUJGU.js} +3 -3
  80. package/dist/{chunk-HCIBBUV5.js.map → chunk-DMBUUJGU.js.map} +1 -1
  81. package/dist/{chunk-EWVXMQRW.js → chunk-DQAFYVCX.js} +5 -5
  82. package/dist/{chunk-EWVXMQRW.js.map → chunk-DQAFYVCX.js.map} +1 -1
  83. package/dist/{chunk-ATMSGQCW.cjs → chunk-EXA5HCX7.cjs} +9 -9
  84. package/dist/{chunk-ATMSGQCW.cjs.map → chunk-EXA5HCX7.cjs.map} +1 -1
  85. package/dist/{chunk-TLHQ6JCK.cjs → chunk-F3TVVAYG.cjs} +11 -11
  86. package/dist/{chunk-TLHQ6JCK.cjs.map → chunk-F3TVVAYG.cjs.map} +1 -1
  87. package/dist/{chunk-HCK2VUWD.cjs → chunk-FCDKWHIV.cjs} +8 -8
  88. package/dist/{chunk-HCK2VUWD.cjs.map → chunk-FCDKWHIV.cjs.map} +1 -1
  89. package/dist/{chunk-IDZTDJLH.js → chunk-FWKYNE3A.js} +3 -3
  90. package/dist/{chunk-IDZTDJLH.js.map → chunk-FWKYNE3A.js.map} +1 -1
  91. package/dist/{chunk-6QMV75NT.js → chunk-GAXX6YK5.js} +4 -4
  92. package/dist/{chunk-6QMV75NT.js.map → chunk-GAXX6YK5.js.map} +1 -1
  93. package/dist/{chunk-OMAW52LY.cjs → chunk-H2DHSBPO.cjs} +6 -6
  94. package/dist/{chunk-OMAW52LY.cjs.map → chunk-H2DHSBPO.cjs.map} +1 -1
  95. package/dist/{chunk-DX77WSIB.js → chunk-I7HB3FBC.js} +5 -5
  96. package/dist/{chunk-DX77WSIB.js.map → chunk-I7HB3FBC.js.map} +1 -1
  97. package/dist/{chunk-MJY25P44.js → chunk-IGIAGPC5.js} +3 -3
  98. package/dist/{chunk-MJY25P44.js.map → chunk-IGIAGPC5.js.map} +1 -1
  99. package/dist/{chunk-4QRND2V5.js → chunk-ILD5ZZHH.js} +3 -3
  100. package/dist/{chunk-4QRND2V5.js.map → chunk-ILD5ZZHH.js.map} +1 -1
  101. package/dist/{chunk-CU5ZXVZQ.js → chunk-IN7SCXMD.js} +4 -4
  102. package/dist/{chunk-CU5ZXVZQ.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-7GLCJPV5.js → chunk-J6A72I5K.js} +4 -4
  106. package/dist/{chunk-7GLCJPV5.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-KNMEXOKJ.js → chunk-K7NVM76W.js} +4 -4
  110. package/dist/{chunk-KNMEXOKJ.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-OMSHGBV3.js → chunk-KRLKDJPM.js} +4 -4
  116. package/dist/{chunk-OMSHGBV3.js.map → chunk-KRLKDJPM.js.map} +1 -1
  117. package/dist/{chunk-ZNKVOTPB.cjs → chunk-KSCMLSUI.cjs} +15 -15
  118. package/dist/{chunk-ZNKVOTPB.cjs.map → chunk-KSCMLSUI.cjs.map} +1 -1
  119. package/dist/{chunk-OTXHJHXU.cjs → chunk-KT4LY42Y.cjs} +11 -11
  120. package/dist/{chunk-OTXHJHXU.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-56BN43J4.js → chunk-KXJOIVL5.js} +5 -5
  124. package/dist/{chunk-56BN43J4.js.map → chunk-KXJOIVL5.js.map} +1 -1
  125. package/dist/{chunk-EPUWA3ZW.js → chunk-LFV46XLH.js} +4 -4
  126. package/dist/{chunk-EPUWA3ZW.js.map → chunk-LFV46XLH.js.map} +1 -1
  127. package/dist/{chunk-T7SCCACB.js → chunk-LKSKGQX7.js} +3 -3
  128. package/dist/{chunk-T7SCCACB.js.map → chunk-LKSKGQX7.js.map} +1 -1
  129. package/dist/{chunk-LARNENXE.cjs → chunk-LQ26WSLH.cjs} +10 -10
  130. package/dist/{chunk-LARNENXE.cjs.map → chunk-LQ26WSLH.cjs.map} +1 -1
  131. package/dist/{chunk-NRULNA5F.js → chunk-LROB73B4.js} +4 -4
  132. package/dist/{chunk-NRULNA5F.js.map → chunk-LROB73B4.js.map} +1 -1
  133. package/dist/{chunk-34DQGCPP.js → chunk-LXBBM6IF.js} +4 -4
  134. package/dist/{chunk-34DQGCPP.js.map → chunk-LXBBM6IF.js.map} +1 -1
  135. package/dist/{chunk-QPHWRD25.js → chunk-MCORUYWB.js} +3 -3
  136. package/dist/{chunk-QPHWRD25.js.map → chunk-MCORUYWB.js.map} +1 -1
  137. package/dist/{chunk-2JYK52HV.js → chunk-MJFCMUIY.js} +4 -4
  138. package/dist/{chunk-2JYK52HV.js.map → chunk-MJFCMUIY.js.map} +1 -1
  139. package/dist/{chunk-7PHOSSLJ.cjs → chunk-NHSPO4BN.cjs} +9 -9
  140. package/dist/{chunk-7PHOSSLJ.cjs.map → chunk-NHSPO4BN.cjs.map} +1 -1
  141. package/dist/{chunk-5QT67VYJ.cjs → chunk-NR5NQ6TV.cjs} +10 -10
  142. package/dist/{chunk-5QT67VYJ.cjs.map → chunk-NR5NQ6TV.cjs.map} +1 -1
  143. package/dist/{chunk-DT4GG5BF.cjs → chunk-NRMQMPUE.cjs} +7 -7
  144. package/dist/{chunk-DT4GG5BF.cjs.map → chunk-NRMQMPUE.cjs.map} +1 -1
  145. package/dist/{chunk-FGBIJ6PL.js → chunk-NW4JBVY2.js} +4 -4
  146. package/dist/{chunk-FGBIJ6PL.js.map → chunk-NW4JBVY2.js.map} +1 -1
  147. package/dist/{chunk-2QRCHYTZ.cjs → chunk-OLY33H6E.cjs} +7 -7
  148. package/dist/{chunk-2QRCHYTZ.cjs.map → chunk-OLY33H6E.cjs.map} +1 -1
  149. package/dist/{chunk-2IWLOBSF.cjs → chunk-OUQ63IJQ.cjs} +6 -6
  150. package/dist/{chunk-2IWLOBSF.cjs.map → chunk-OUQ63IJQ.cjs.map} +1 -1
  151. package/dist/{chunk-VUHNBLFA.js → chunk-PHFBF5ON.js} +3 -3
  152. package/dist/{chunk-VUHNBLFA.js.map → chunk-PHFBF5ON.js.map} +1 -1
  153. package/dist/{chunk-4MNVJVK3.cjs → chunk-PL3M46GS.cjs} +6 -6
  154. package/dist/{chunk-4MNVJVK3.cjs.map → chunk-PL3M46GS.cjs.map} +1 -1
  155. package/dist/{chunk-JYVRX3BX.cjs → chunk-PNHDHEBQ.cjs} +8 -8
  156. package/dist/{chunk-JYVRX3BX.cjs.map → chunk-PNHDHEBQ.cjs.map} +1 -1
  157. package/dist/{chunk-QYI7ZV3B.cjs → chunk-PX7MLSIH.cjs} +369 -124
  158. package/dist/chunk-PX7MLSIH.cjs.map +1 -0
  159. package/dist/{chunk-YCL43UQM.cjs → chunk-QCEC2KBW.cjs} +12 -12
  160. package/dist/{chunk-YCL43UQM.cjs.map → chunk-QCEC2KBW.cjs.map} +1 -1
  161. package/dist/{chunk-ZFGLBJYC.js → chunk-QRVTY6UU.js} +3 -3
  162. package/dist/{chunk-ZFGLBJYC.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-QPHUAF3R.cjs → chunk-QVQKYVD2.cjs} +8 -8
  166. package/dist/{chunk-QPHUAF3R.cjs.map → chunk-QVQKYVD2.cjs.map} +1 -1
  167. package/dist/{chunk-CUIPBYMG.cjs → chunk-RIJPMRKC.cjs} +8 -8
  168. package/dist/{chunk-CUIPBYMG.cjs.map → chunk-RIJPMRKC.cjs.map} +1 -1
  169. package/dist/{chunk-5QVUBGM7.js → chunk-RKX7GKOU.js} +4 -4
  170. package/dist/{chunk-5QVUBGM7.js.map → chunk-RKX7GKOU.js.map} +1 -1
  171. package/dist/{chunk-3SVNEKXE.cjs → chunk-ROUFAI5M.cjs} +11 -11
  172. package/dist/{chunk-3SVNEKXE.cjs.map → chunk-ROUFAI5M.cjs.map} +1 -1
  173. package/dist/{chunk-55ZTXQQQ.cjs → chunk-S52RCLDQ.cjs} +12 -12
  174. package/dist/{chunk-55ZTXQQQ.cjs.map → chunk-S52RCLDQ.cjs.map} +1 -1
  175. package/dist/{chunk-GRXHW5S3.cjs → chunk-SEOHPUXV.cjs} +12 -12
  176. package/dist/{chunk-GRXHW5S3.cjs.map → chunk-SEOHPUXV.cjs.map} +1 -1
  177. package/dist/{chunk-KHG3G2ZX.js → chunk-SI4VJK4A.js} +3 -3
  178. package/dist/{chunk-KHG3G2ZX.js.map → chunk-SI4VJK4A.js.map} +1 -1
  179. package/dist/{chunk-VGJD4F4H.js → chunk-SUB5WML4.js} +3 -3
  180. package/dist/{chunk-VGJD4F4H.js.map → chunk-SUB5WML4.js.map} +1 -1
  181. package/dist/{chunk-CA42BCSM.cjs → chunk-T5NDUMLD.cjs} +8 -8
  182. package/dist/{chunk-CA42BCSM.cjs.map → chunk-T5NDUMLD.cjs.map} +1 -1
  183. package/dist/{chunk-QEPMEEZC.cjs → chunk-TKHYY3B5.cjs} +6 -6
  184. package/dist/{chunk-QEPMEEZC.cjs.map → chunk-TKHYY3B5.cjs.map} +1 -1
  185. package/dist/{chunk-LXYNL7BI.cjs → chunk-TMQ2V5B2.cjs} +10 -10
  186. package/dist/{chunk-LXYNL7BI.cjs.map → chunk-TMQ2V5B2.cjs.map} +1 -1
  187. package/dist/{chunk-R2W3RJFW.cjs → chunk-TNIMRV3N.cjs} +13 -13
  188. package/dist/{chunk-R2W3RJFW.cjs.map → chunk-TNIMRV3N.cjs.map} +1 -1
  189. package/dist/{chunk-NQ7Y6ZKH.js → chunk-TUPPYHUR.js} +3 -3
  190. package/dist/{chunk-NQ7Y6ZKH.js.map → chunk-TUPPYHUR.js.map} +1 -1
  191. package/dist/{chunk-MSCRIA2U.cjs → chunk-U456ET3M.cjs} +12 -12
  192. package/dist/{chunk-MSCRIA2U.cjs.map → chunk-U456ET3M.cjs.map} +1 -1
  193. package/dist/{chunk-NE2W2MF3.cjs → chunk-UMS2MPYC.cjs} +10 -10
  194. package/dist/{chunk-NE2W2MF3.cjs.map → chunk-UMS2MPYC.cjs.map} +1 -1
  195. package/dist/{chunk-DAAU5H24.js → chunk-UNQBXGX5.js} +3 -3
  196. package/dist/{chunk-DAAU5H24.js.map → chunk-UNQBXGX5.js.map} +1 -1
  197. package/dist/{chunk-VBMLJUBE.js → chunk-V3AENTZB.js} +4 -4
  198. package/dist/{chunk-VBMLJUBE.js.map → chunk-V3AENTZB.js.map} +1 -1
  199. package/dist/{chunk-3JB4JBBK.js → chunk-V5LLTYOY.js} +4 -4
  200. package/dist/{chunk-3JB4JBBK.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-MEERXUZS.js → chunk-VJT5UA7J.js} +4 -4
  204. package/dist/{chunk-MEERXUZS.js.map → chunk-VJT5UA7J.js.map} +1 -1
  205. package/dist/{chunk-JVVGQLJQ.cjs → chunk-W626EAS5.cjs} +100 -6
  206. package/dist/chunk-W626EAS5.cjs.map +1 -0
  207. package/dist/{chunk-IOV77VHP.js → chunk-WHGNA44O.js} +4 -4
  208. package/dist/{chunk-IOV77VHP.js.map → chunk-WHGNA44O.js.map} +1 -1
  209. package/dist/{chunk-ZYXRRVR6.js → chunk-WIA4MDRX.js} +3 -3
  210. package/dist/{chunk-ZYXRRVR6.js.map → chunk-WIA4MDRX.js.map} +1 -1
  211. package/dist/{chunk-OEGSDOJ2.cjs → chunk-WOYVHVXC.cjs} +7 -7
  212. package/dist/{chunk-OEGSDOJ2.cjs.map → chunk-WOYVHVXC.cjs.map} +1 -1
  213. package/dist/{chunk-V5Q6UNUK.cjs → chunk-X5SG6MFS.cjs} +4 -4
  214. package/dist/{chunk-V5Q6UNUK.cjs.map → chunk-X5SG6MFS.cjs.map} +1 -1
  215. package/dist/{chunk-LRHMLNPW.js → chunk-XB5K7OYD.js} +353 -108
  216. package/dist/chunk-XB5K7OYD.js.map +1 -0
  217. package/dist/{chunk-AEQXFDL7.js → chunk-XIVC32HU.js} +100 -6
  218. package/dist/chunk-XIVC32HU.js.map +1 -0
  219. package/dist/{chunk-TC3H6ZED.js → chunk-XQ7BTVV3.js} +4 -4
  220. package/dist/{chunk-TC3H6ZED.js.map → chunk-XQ7BTVV3.js.map} +1 -1
  221. package/dist/{chunk-4D6PVH2C.cjs → chunk-YMOQGTGJ.cjs} +9 -9
  222. package/dist/{chunk-4D6PVH2C.cjs.map → chunk-YMOQGTGJ.cjs.map} +1 -1
  223. package/dist/{chunk-2IMUTDTD.cjs → chunk-YOK3JGW5.cjs} +10 -10
  224. package/dist/{chunk-2IMUTDTD.cjs.map → chunk-YOK3JGW5.cjs.map} +1 -1
  225. package/dist/{chunk-24557PYN.js → chunk-YUIHMAHA.js} +3 -3
  226. package/dist/{chunk-24557PYN.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-W476ER4X.cjs → chunk-ZCLW4B5S.cjs} +17 -17
  230. package/dist/{chunk-W476ER4X.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 +12 -2
  260. package/dist/index.d.ts +12 -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-AEQXFDL7.js.map +0 -1
  355. package/dist/chunk-JVVGQLJQ.cjs.map +0 -1
  356. package/dist/chunk-LRHMLNPW.js.map +0 -1
  357. package/dist/chunk-QYI7ZV3B.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,5 +1,5 @@
1
- import { prepareNoAxes } from './chunk-T7SCCACB.js';
2
- import { group, line, PathBuilder, path, rect, text, circle } from './chunk-AEQXFDL7.js';
1
+ import { prepareNoAxes } from './chunk-LKSKGQX7.js';
2
+ import { line, circle, text, group, PathBuilder, path, rect } from './chunk-XIVC32HU.js';
3
3
 
4
4
  // src/charts/graph/parse.ts
5
5
  function parseGraphData(data, options) {
@@ -422,46 +422,32 @@ function renderEdges(nodes, edges, options, theme) {
422
422
  }
423
423
 
424
424
  // src/charts/graph/layout-force.ts
425
- var layoutCache = /* @__PURE__ */ new Map();
426
- function cacheKey(nodes, edges) {
427
- const nk = nodes.map((n) => n.id).join(",");
428
- const ek = edges.map((e) => `${e.source}-${e.target}`).join(",");
429
- return nk + "|" + ek;
430
- }
431
425
  function forceLayout(nodes, edges, opts) {
432
426
  const { area, iterations } = opts;
433
427
  const n = nodes.length;
434
428
  if (n === 0) return;
435
429
  const cx = area.x + area.width / 2;
436
430
  const cy = area.y + area.height / 2;
437
- const key = cacheKey(nodes, edges);
438
- const cached = layoutCache.get(key);
439
- if (cached && cached.length === n) {
440
- for (let i = 0; i < n; i++) {
441
- const node = nodes[i];
442
- if (!node.pin) {
443
- node.x = cached[i].x;
444
- node.y = cached[i].y;
445
- }
446
- }
447
- } else {
448
- for (let i = 0; i < n; i++) {
449
- const node = nodes[i];
450
- if (node.pin) {
451
- node.x = area.x + node.pin.x * area.width;
452
- node.y = area.y + node.pin.y * area.height;
453
- } else {
454
- const angle = 2 * Math.PI * i / n;
455
- const r = Math.min(area.width, area.height) * 0.3;
456
- node.x = cx + r * Math.cos(angle);
457
- node.y = cy + r * Math.sin(angle);
458
- }
459
- node.vx = 0;
460
- node.vy = 0;
431
+ for (let i = 0; i < n; i++) {
432
+ const node = nodes[i];
433
+ if (node.pin) {
434
+ node.x = area.x + node.pin.x * area.width;
435
+ node.y = area.y + node.pin.y * area.height;
436
+ } else {
437
+ const angle = 2 * Math.PI * i / n;
438
+ const r = Math.min(area.width, area.height) * 0.4;
439
+ node.x = cx + r * Math.cos(angle);
440
+ node.y = cy + r * Math.sin(angle);
461
441
  }
442
+ node.vx = 0;
443
+ node.vy = 0;
462
444
  }
463
- const k = Math.sqrt(area.width * area.height / Math.max(n, 1));
464
- const repulsion = k * k;
445
+ const avgNodeSize = nodes.reduce((s, nd) => s + Math.max(nd.width, nd.height), 0) / n;
446
+ const k = Math.max(
447
+ Math.sqrt(area.width * area.height / Math.max(n, 1)),
448
+ avgNodeSize * 2
449
+ );
450
+ const repulsion = k * k * 1.5;
465
451
  for (let iter = 0; iter < iterations; iter++) {
466
452
  const temp = 0.1 * (1 - iter / iterations) * Math.min(area.width, area.height) * 0.5;
467
453
  for (const node of nodes) {
@@ -475,8 +461,10 @@ function forceLayout(nodes, edges, opts) {
475
461
  const dx = ni.x - nj.x;
476
462
  const dy = ni.y - nj.y;
477
463
  const dist = Math.max(Math.sqrt(dx * dx + dy * dy), 1);
478
- const minDist = (Math.max(ni.width, ni.height) + Math.max(nj.width, nj.height)) / 2;
479
- const effectiveDist = Math.max(dist - minDist * 0.6, 1);
464
+ const ri = Math.sqrt(ni.width * ni.width + ni.height * ni.height) / 2;
465
+ const rj = Math.sqrt(nj.width * nj.width + nj.height * nj.height) / 2;
466
+ const minDist = ri + rj + 12;
467
+ const effectiveDist = Math.max(dist - minDist * 0.5, 1);
480
468
  const force = repulsion / (effectiveDist * effectiveDist);
481
469
  const fx = dx / dist * force;
482
470
  const fy = dy / dist * force;
@@ -493,8 +481,8 @@ function forceLayout(nodes, edges, opts) {
493
481
  const dy = tgt.y - src.y;
494
482
  const dist = Math.max(Math.sqrt(dx * dx + dy * dy), 1);
495
483
  const force = dist * dist / k;
496
- const fx = dx / dist * force * 0.1;
497
- const fy = dy / dist * force * 0.1;
484
+ const fx = dx / dist * force * 0.08;
485
+ const fy = dy / dist * force * 0.08;
498
486
  src.vx += fx;
499
487
  src.vy += fy;
500
488
  tgt.vx -= fx;
@@ -522,7 +510,39 @@ function forceLayout(nodes, edges, opts) {
522
510
  node.y = Math.max(area.y + my, Math.min(area.y + area.height - my, node.y));
523
511
  }
524
512
  }
525
- layoutCache.set(key, nodes.map((nd) => ({ x: nd.x, y: nd.y })));
513
+ for (let pass = 0; pass < 10; pass++) {
514
+ let moved = false;
515
+ for (let i = 0; i < n; i++) {
516
+ for (let j = i + 1; j < n; j++) {
517
+ const ni = nodes[i];
518
+ const nj = nodes[j];
519
+ if (ni.pin && nj.pin) continue;
520
+ const overlapX = (ni.width + nj.width) / 2 + 8 - Math.abs(ni.x - nj.x);
521
+ const overlapY = (ni.height + nj.height) / 2 + 8 - Math.abs(ni.y - nj.y);
522
+ if (overlapX <= 0 || overlapY <= 0) continue;
523
+ const pushX = overlapX < overlapY;
524
+ const push = (pushX ? overlapX : overlapY) / 2 + 1;
525
+ if (pushX) {
526
+ const dir = ni.x >= nj.x ? 1 : -1;
527
+ if (!ni.pin) ni.x += dir * push;
528
+ if (!nj.pin) nj.x -= dir * push;
529
+ } else {
530
+ const dir = ni.y >= nj.y ? 1 : -1;
531
+ if (!ni.pin) ni.y += dir * push;
532
+ if (!nj.pin) nj.y -= dir * push;
533
+ }
534
+ moved = true;
535
+ }
536
+ }
537
+ if (!moved) break;
538
+ for (const node of nodes) {
539
+ if (node.pin) continue;
540
+ const mx = Math.max(20, node.width / 2 + 5);
541
+ const my = Math.max(20, node.height / 2 + 5);
542
+ node.x = Math.max(area.x + mx, Math.min(area.x + area.width - mx, node.x));
543
+ node.y = Math.max(area.y + my, Math.min(area.y + area.height - my, node.y));
544
+ }
545
+ }
526
546
  }
527
547
 
528
548
  // src/charts/graph/layout-hierarchy.ts
@@ -541,46 +561,56 @@ function hierarchyLayout(nodes, edges, opts) {
541
561
  const layers = assignLayers(n, outgoing, incoming);
542
562
  const layerGroups = groupByLayer(layers, n);
543
563
  orderLayers(layerGroups, outgoing, incoming, 3);
544
- const isHorizontal = direction === "LR" || direction === "RL";
545
564
  const maxLayer = Math.max(...layers, 0);
546
- const availW = area.width;
547
- const availH = area.height;
548
565
  const layerCount = maxLayer + 1;
549
- const layerGap = isHorizontal ? availW / (layerCount + 1) : availH / (layerCount + 1);
566
+ const isVertical = direction === "TB" || direction === "BT";
567
+ const layerThickness = new Array(layerCount).fill(0);
568
+ for (let layer = 0; layer < layerCount; layer++) {
569
+ const grp = layerGroups[layer] ?? [];
570
+ for (const idx of grp) {
571
+ const nd = nodes[idx];
572
+ const thick = isVertical ? nd.height : nd.width;
573
+ if (thick > layerThickness[layer]) layerThickness[layer] = thick;
574
+ }
575
+ }
576
+ const gap = 24;
577
+ const totalThickness = layerThickness.reduce((s, t) => s + t, 0) + gap * (layerCount - 1);
578
+ const availableThickness = isVertical ? area.height : area.width;
579
+ const scale = totalThickness > availableThickness ? availableThickness / totalThickness : 1;
580
+ const layerCenter = new Array(layerCount).fill(0);
581
+ const usedThickness = totalThickness * scale;
582
+ const offset = (availableThickness - usedThickness) / 2;
583
+ let cursor = offset + layerThickness[0] * scale / 2;
584
+ layerCenter[0] = cursor;
585
+ for (let layer = 1; layer < layerCount; layer++) {
586
+ cursor += layerThickness[layer - 1] * scale / 2 + gap * scale + layerThickness[layer] * scale / 2;
587
+ layerCenter[layer] = cursor;
588
+ }
589
+ if (direction === "BT" || direction === "RL") {
590
+ layerCenter.reverse();
591
+ }
550
592
  for (let layer = 0; layer <= maxLayer; layer++) {
551
- const group2 = layerGroups[layer] ?? [];
552
- if (group2.length === 0) continue;
553
- const nodeGap = isHorizontal ? availH / (group2.length + 1) : availW / (group2.length + 1);
554
- for (let pos = 0; pos < group2.length; pos++) {
555
- const node = nodes[group2[pos]];
593
+ const grp = layerGroups[layer] ?? [];
594
+ if (grp.length === 0) continue;
595
+ for (let pos = 0; pos < grp.length; pos++) {
596
+ const node = nodes[grp[pos]];
556
597
  if (node.pin) {
557
598
  node.x = area.x + node.pin.x * area.width;
558
599
  node.y = area.y + node.pin.y * area.height;
559
600
  continue;
560
601
  }
561
- let layerCoord = area.x + layerGap * (layer + 1);
562
- let posCoord = area.y + nodeGap * (pos + 1);
563
- if (isHorizontal) ; else {
564
- const tmp = layerCoord;
565
- layerCoord = posCoord;
566
- posCoord = tmp;
567
- }
602
+ const posFrac = (pos + 1) / (grp.length + 1);
603
+ const layerPos = layerCenter[layer];
568
604
  switch (direction) {
569
605
  case "TB":
570
- node.x = layerCoord;
571
- node.y = posCoord;
572
- break;
573
606
  case "BT":
574
- node.x = layerCoord;
575
- node.y = area.y + area.height - (posCoord - area.y);
607
+ node.x = area.x + posFrac * area.width;
608
+ node.y = area.y + layerPos;
576
609
  break;
577
610
  case "LR":
578
- node.x = layerCoord;
579
- node.y = posCoord;
580
- break;
581
611
  case "RL":
582
- node.x = area.x + area.width - (layerCoord - area.x);
583
- node.y = posCoord;
612
+ node.x = area.x + layerPos;
613
+ node.y = area.y + posFrac * area.height;
584
614
  break;
585
615
  }
586
616
  }
@@ -707,23 +737,40 @@ function circularLayout(nodes, edges, opts) {
707
737
  const { area } = opts;
708
738
  const cx = area.x + area.width / 2;
709
739
  const cy = area.y + area.height / 2;
710
- const maxNodeSize = Math.max(
711
- ...nodes.map((nd) => Math.max(nd.width, nd.height)),
712
- 40
713
- );
714
- const radius = Math.min(area.width, area.height) / 2 - maxNodeSize / 2 - 10;
715
740
  const order = connectivityOrder(nodes, edges);
716
741
  const unpinned = [];
717
742
  for (const idx of order) {
718
743
  if (!nodes[idx].pin) unpinned.push(idx);
719
744
  }
720
- const angleStep = 2 * Math.PI / Math.max(unpinned.length, 1);
745
+ const count = Math.max(unpinned.length, 1);
746
+ const angleStep = 2 * Math.PI / count;
747
+ const maxNodeW = Math.max(...nodes.map((nd) => nd.width), 40);
748
+ const maxNodeH = Math.max(...nodes.map((nd) => nd.height), 40);
749
+ const margin = 10;
750
+ let rx = area.width / 2 - maxNodeW / 2 - margin;
751
+ let ry = area.height / 2 - maxNodeH / 2 - margin;
752
+ if (count > 1) {
753
+ const maxDiag = Math.max(
754
+ ...nodes.map((nd) => Math.sqrt(nd.width * nd.width + nd.height * nd.height)),
755
+ 40
756
+ );
757
+ const minSpacing = maxDiag + 16;
758
+ const perimApprox = Math.PI * (3 * (rx + ry) - Math.sqrt((3 * rx + ry) * (rx + 3 * ry)));
759
+ const spacingPerNode = perimApprox / count;
760
+ if (spacingPerNode < minSpacing) {
761
+ const scale = minSpacing / spacingPerNode;
762
+ rx *= scale;
763
+ ry *= scale;
764
+ }
765
+ }
766
+ rx = Math.max(20, Math.min(rx, area.width / 2 - margin));
767
+ ry = Math.max(20, Math.min(ry, area.height / 2 - margin));
721
768
  const startAngle = -Math.PI / 2;
722
769
  for (let i = 0; i < unpinned.length; i++) {
723
770
  const node = nodes[unpinned[i]];
724
771
  const angle = startAngle + angleStep * i;
725
- node.x = cx + radius * Math.cos(angle);
726
- node.y = cy + radius * Math.sin(angle);
772
+ node.x = cx + rx * Math.cos(angle);
773
+ node.y = cy + ry * Math.sin(angle);
727
774
  }
728
775
  for (const node of nodes) {
729
776
  if (node.pin) {
@@ -791,52 +838,133 @@ var graphChartType = {
791
838
  render(ctx) {
792
839
  const { data, area, theme, options } = ctx;
793
840
  const graphOpts = options;
794
- const result = [];
795
- const { graphNodes, graphEdges } = parseGraphData(data, options);
796
- if (graphNodes.length === 0) return result;
797
- for (const node of graphNodes) {
798
- const size = measureNodeSize(node.label, theme.fontSizeSmall, node.shape);
799
- node.width = size.width;
800
- node.height = size.height;
801
- }
802
- runLayout(graphNodes, graphEdges, graphOpts, area);
803
- const edgeNodes = renderEdges(graphNodes, graphEdges, graphOpts, theme);
804
- if (edgeNodes.length > 0) {
805
- result.push(group(edgeNodes, { class: "chartts-graph-edges" }));
806
- }
807
- for (const node of graphNodes) {
808
- const color = node.color ?? options.colors[node.index % options.colors.length];
809
- const shapeNodes = renderNodeShape(node, color, theme);
810
- result.push(group(shapeNodes, {
811
- class: `chartts-series chartts-series-${node.index}`,
812
- "data-series-name": node.label
841
+ if (graphOpts.nodes || graphOpts.edges) {
842
+ return renderRichGraph(ctx);
843
+ }
844
+ const nodes = [];
845
+ const { graphNodes, graphEdges } = parseLegacyGraphData(data);
846
+ if (graphNodes.length === 0) return nodes;
847
+ forceLayout2(graphNodes, graphEdges, area, 80);
848
+ for (let ei = 0; ei < graphEdges.length; ei++) {
849
+ const edge = graphEdges[ei];
850
+ const src = graphNodes[edge.source];
851
+ const tgt = graphNodes[edge.target];
852
+ nodes.push(line(src.x, src.y, tgt.x, tgt.y, {
853
+ class: "chartts-graph-edge",
854
+ stroke: theme.gridColor,
855
+ strokeWidth: Math.max(1, Math.min(3, edge.weight * 0.5)),
856
+ opacity: 0.5
813
857
  }));
814
858
  }
815
- return result;
859
+ const maxVal = Math.max(...graphNodes.map((n) => n.value), 1);
860
+ const minR = 5;
861
+ const maxR = Math.min(20, Math.min(area.width, area.height) * 0.06);
862
+ for (let ni = 0; ni < graphNodes.length; ni++) {
863
+ const gn = graphNodes[ni];
864
+ const color = options.colors[ni % options.colors.length];
865
+ const r = minR + gn.value / maxVal * (maxR - minR);
866
+ const nodeGroup = [];
867
+ nodeGroup.push(circle(gn.x, gn.y, r, {
868
+ class: "chartts-graph-node",
869
+ fill: color,
870
+ fillOpacity: 0.85,
871
+ stroke: color,
872
+ strokeWidth: 1.5,
873
+ "data-series": ni,
874
+ "data-index": 0,
875
+ tabindex: 0,
876
+ role: "img",
877
+ ariaLabel: `${gn.name}: ${gn.value}`
878
+ }));
879
+ nodeGroup.push(text(gn.x, gn.y - r - 5, gn.name, {
880
+ class: "chartts-graph-label",
881
+ fill: theme.textColor,
882
+ textAnchor: "middle",
883
+ dominantBaseline: "auto",
884
+ fontSize: theme.fontSizeSmall,
885
+ fontFamily: theme.fontFamily
886
+ }));
887
+ nodes.push(group(nodeGroup, {
888
+ class: `chartts-series chartts-series-${ni}`,
889
+ "data-series-name": gn.name
890
+ }));
891
+ }
892
+ return nodes;
816
893
  },
817
894
  hitTest(ctx, mx, my) {
818
- const { data, area, theme, options } = ctx;
895
+ const { data, area, options } = ctx;
819
896
  const graphOpts = options;
820
- const { graphNodes, graphEdges } = parseGraphData(data, options);
821
- if (graphNodes.length === 0) return null;
822
- for (const node of graphNodes) {
823
- const size = measureNodeSize(node.label, theme.fontSizeSmall, node.shape);
824
- node.width = size.width;
825
- node.height = size.height;
897
+ if (graphOpts.nodes || graphOpts.edges) {
898
+ return richHitTest(ctx, mx, my);
826
899
  }
827
- runLayout(graphNodes, graphEdges, graphOpts, area);
900
+ const { graphNodes, graphEdges } = parseLegacyGraphData(data);
901
+ if (graphNodes.length === 0) return null;
902
+ forceLayout2(graphNodes, graphEdges, area, 80);
903
+ const maxVal = Math.max(...graphNodes.map((n) => n.value), 1);
904
+ const minR = 5;
905
+ const maxR = Math.min(20, Math.min(area.width, area.height) * 0.06);
828
906
  let best = null;
829
907
  let bestDist = Infinity;
830
- for (const node of graphNodes) {
831
- const dist = shapeDistance(node, mx, my);
832
- if (dist < bestDist && dist < 8) {
908
+ for (let ni = 0; ni < graphNodes.length; ni++) {
909
+ const gn = graphNodes[ni];
910
+ const r = minR + gn.value / maxVal * (maxR - minR);
911
+ const dist = Math.sqrt((mx - gn.x) ** 2 + (my - gn.y) ** 2);
912
+ if (dist < bestDist && dist < r + 8) {
833
913
  bestDist = dist;
834
- best = { seriesIndex: node.index, pointIndex: 0, distance: dist, x: node.x, y: node.y };
914
+ best = { seriesIndex: ni, pointIndex: 0, distance: dist, x: gn.x, y: gn.y };
835
915
  }
836
916
  }
837
917
  return best;
838
918
  }
839
919
  };
920
+ function renderRichGraph(ctx) {
921
+ const { data, area, theme, options } = ctx;
922
+ const graphOpts = options;
923
+ const result = [];
924
+ const { graphNodes, graphEdges } = parseGraphData(data, options);
925
+ if (graphNodes.length === 0) return result;
926
+ for (const node of graphNodes) {
927
+ const size = measureNodeSize(node.label, theme.fontSizeSmall, node.shape);
928
+ node.width = size.width;
929
+ node.height = size.height;
930
+ }
931
+ runLayout(graphNodes, graphEdges, graphOpts, area);
932
+ const edgeNodes = renderEdges(graphNodes, graphEdges, graphOpts, theme);
933
+ if (edgeNodes.length > 0) {
934
+ result.push(group(edgeNodes, { class: "chartts-graph-edges" }));
935
+ }
936
+ for (const node of graphNodes) {
937
+ const color = node.color ?? options.colors[node.index % options.colors.length];
938
+ const shapeNodes = renderNodeShape(node, color, theme);
939
+ result.push(group(shapeNodes, {
940
+ class: `chartts-series chartts-series-${node.index}`,
941
+ "data-series-name": node.label
942
+ }));
943
+ }
944
+ return result;
945
+ }
946
+ function richHitTest(ctx, mx, my) {
947
+ const { data, area, theme, options } = ctx;
948
+ const graphOpts = options;
949
+ const { graphNodes, graphEdges } = parseGraphData(data, options);
950
+ if (graphNodes.length === 0) return null;
951
+ for (const node of graphNodes) {
952
+ const size = measureNodeSize(node.label, theme.fontSizeSmall, node.shape);
953
+ node.width = size.width;
954
+ node.height = size.height;
955
+ }
956
+ runLayout(graphNodes, graphEdges, graphOpts, area);
957
+ let best = null;
958
+ let bestDist = Infinity;
959
+ for (const node of graphNodes) {
960
+ const dist = shapeDistance(node, mx, my);
961
+ if (dist < bestDist && dist < 8) {
962
+ bestDist = dist;
963
+ best = { seriesIndex: node.index, pointIndex: 0, distance: dist, x: node.x, y: node.y };
964
+ }
965
+ }
966
+ return best;
967
+ }
840
968
  function runLayout(nodes, edges, opts, area) {
841
969
  const layout = opts.layout ?? "force";
842
970
  switch (layout) {
@@ -881,7 +1009,6 @@ function shapeDistance(node, mx, my) {
881
1009
  const d = dx * dx / (rx * rx) + dy * dy / (ry * ry);
882
1010
  return d <= 1 ? 0 : Math.sqrt(dx * dx + dy * dy) * (Math.sqrt(d) - 1);
883
1011
  }
884
- // rect, stadium
885
1012
  default: {
886
1013
  const hw = node.width / 2;
887
1014
  const hh = node.height / 2;
@@ -891,7 +1018,125 @@ function shapeDistance(node, mx, my) {
891
1018
  }
892
1019
  }
893
1020
  }
1021
+ function parseLegacyGraphData(data, _options) {
1022
+ const graphNodes = [];
1023
+ const graphEdges = [];
1024
+ const nodeMap = /* @__PURE__ */ new Map();
1025
+ function getOrCreateNode(name, value = 1) {
1026
+ if (nodeMap.has(name)) return nodeMap.get(name);
1027
+ const idx = graphNodes.length;
1028
+ nodeMap.set(name, idx);
1029
+ graphNodes.push({
1030
+ name,
1031
+ index: idx,
1032
+ value,
1033
+ x: 0,
1034
+ y: 0,
1035
+ vx: 0,
1036
+ vy: 0
1037
+ });
1038
+ return idx;
1039
+ }
1040
+ const hasArrows = data.series.some((s) => s.name.includes("\u2192") || s.name.includes("->"));
1041
+ if (hasArrows) {
1042
+ for (const series of data.series) {
1043
+ const parts = series.name.split(/\s*(?:→|->)\s*/);
1044
+ if (parts.length < 2) continue;
1045
+ const srcName = parts[0].trim();
1046
+ const tgtName = parts[1].trim();
1047
+ const weight = series.values[0] ?? 1;
1048
+ const src = getOrCreateNode(srcName);
1049
+ const tgt = getOrCreateNode(tgtName);
1050
+ graphEdges.push({ source: src, target: tgt, weight });
1051
+ graphNodes[src].value += weight;
1052
+ graphNodes[tgt].value += weight;
1053
+ }
1054
+ } else {
1055
+ for (let i = 0; i < data.labels.length; i++) {
1056
+ getOrCreateNode(String(data.labels[i]), Math.abs(data.series[0]?.values[i] ?? 1));
1057
+ }
1058
+ if (data.series.length > 1 && data.series.length === data.labels.length) {
1059
+ for (let si = 0; si < data.series.length; si++) {
1060
+ for (let j = 0; j < data.series[si].values.length; j++) {
1061
+ const val = data.series[si].values[j];
1062
+ if (val > 0 && si !== j) {
1063
+ graphEdges.push({ source: si, target: j, weight: val });
1064
+ }
1065
+ }
1066
+ }
1067
+ }
1068
+ }
1069
+ return { graphNodes, graphEdges };
1070
+ }
1071
+ function forceLayout2(nodes, edges, area, iterations) {
1072
+ const cx = area.x + area.width / 2;
1073
+ const cy = area.y + area.height / 2;
1074
+ const n = nodes.length;
1075
+ if (n === 0) return;
1076
+ for (let i = 0; i < n; i++) {
1077
+ const angle = 2 * Math.PI * i / n;
1078
+ const r = Math.min(area.width, area.height) * 0.3;
1079
+ nodes[i].x = cx + r * Math.cos(angle);
1080
+ nodes[i].y = cy + r * Math.sin(angle);
1081
+ nodes[i].vx = 0;
1082
+ nodes[i].vy = 0;
1083
+ }
1084
+ const k = Math.sqrt(area.width * area.height / Math.max(n, 1));
1085
+ const repulsion = k * k;
1086
+ for (let iter = 0; iter < iterations; iter++) {
1087
+ const temp = 0.1 * (1 - iter / iterations) * Math.min(area.width, area.height) * 0.5;
1088
+ for (const node of nodes) {
1089
+ node.vx = 0;
1090
+ node.vy = 0;
1091
+ }
1092
+ for (let i = 0; i < n; i++) {
1093
+ for (let j = i + 1; j < n; j++) {
1094
+ const dx = nodes[i].x - nodes[j].x;
1095
+ const dy = nodes[i].y - nodes[j].y;
1096
+ const dist = Math.max(Math.sqrt(dx * dx + dy * dy), 1);
1097
+ const force = repulsion / (dist * dist);
1098
+ const fx = dx / dist * force;
1099
+ const fy = dy / dist * force;
1100
+ nodes[i].vx += fx;
1101
+ nodes[i].vy += fy;
1102
+ nodes[j].vx -= fx;
1103
+ nodes[j].vy -= fy;
1104
+ }
1105
+ }
1106
+ for (const edge of edges) {
1107
+ const src = nodes[edge.source];
1108
+ const tgt = nodes[edge.target];
1109
+ const dx = tgt.x - src.x;
1110
+ const dy = tgt.y - src.y;
1111
+ const dist = Math.max(Math.sqrt(dx * dx + dy * dy), 1);
1112
+ const force = dist * dist / k;
1113
+ const fx = dx / dist * force * 0.1;
1114
+ const fy = dy / dist * force * 0.1;
1115
+ src.vx += fx;
1116
+ src.vy += fy;
1117
+ tgt.vx -= fx;
1118
+ tgt.vy -= fy;
1119
+ }
1120
+ for (const node of nodes) {
1121
+ const dx = cx - node.x;
1122
+ const dy = cy - node.y;
1123
+ node.vx += dx * 0.01;
1124
+ node.vy += dy * 0.01;
1125
+ }
1126
+ for (const node of nodes) {
1127
+ const speed = Math.sqrt(node.vx * node.vx + node.vy * node.vy);
1128
+ if (speed > 0) {
1129
+ const capped = Math.min(speed, temp);
1130
+ node.x += node.vx / speed * capped;
1131
+ node.y += node.vy / speed * capped;
1132
+ }
1133
+ const margin = 20;
1134
+ node.x = Math.max(area.x + margin, Math.min(area.x + area.width - margin, node.x));
1135
+ node.y = Math.max(area.y + margin, Math.min(area.y + area.height - margin, node.y));
1136
+ }
1137
+ }
1138
+ }
894
1139
 
895
1140
  export { graphChartType };
896
- //# sourceMappingURL=chunk-LRHMLNPW.js.map
897
- //# sourceMappingURL=chunk-LRHMLNPW.js.map
1141
+ //# sourceMappingURL=chunk-XB5K7OYD.js.map
1142
+ //# sourceMappingURL=chunk-XB5K7OYD.js.map