@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,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunkV5Q6UNUK_cjs = require('./chunk-V5Q6UNUK.cjs');
4
- var chunkJVVGQLJQ_cjs = require('./chunk-JVVGQLJQ.cjs');
3
+ var chunkX5SG6MFS_cjs = require('./chunk-X5SG6MFS.cjs');
4
+ var chunkW626EAS5_cjs = require('./chunk-W626EAS5.cjs');
5
5
 
6
6
  // src/charts/graph/parse.ts
7
7
  function parseGraphData(data, options) {
@@ -192,19 +192,19 @@ function renderNodeShape(node, color, theme) {
192
192
  switch (node.shape) {
193
193
  case "circle": {
194
194
  const r = Math.max(w, h) / 2;
195
- shapeNode = chunkJVVGQLJQ_cjs.circle(cx, cy, r, { ...baseAttrs });
195
+ shapeNode = chunkW626EAS5_cjs.circle(cx, cy, r, { ...baseAttrs });
196
196
  break;
197
197
  }
198
198
  case "diamond": {
199
- const pb = new chunkJVVGQLJQ_cjs.PathBuilder();
199
+ const pb = new chunkW626EAS5_cjs.PathBuilder();
200
200
  pb.moveTo(cx, cy - h / 2).lineTo(cx + w / 2, cy).lineTo(cx, cy + h / 2).lineTo(cx - w / 2, cy).close();
201
- shapeNode = chunkJVVGQLJQ_cjs.path(pb.build(), { ...baseAttrs });
201
+ shapeNode = chunkW626EAS5_cjs.path(pb.build(), { ...baseAttrs });
202
202
  break;
203
203
  }
204
204
  case "hexagon": {
205
205
  const rx = w / 2;
206
206
  const ry = h / 2;
207
- const pb = new chunkJVVGQLJQ_cjs.PathBuilder();
207
+ const pb = new chunkW626EAS5_cjs.PathBuilder();
208
208
  for (let i = 0; i < 6; i++) {
209
209
  const angle = Math.PI / 180 * (i * 60);
210
210
  const px = cx + rx * Math.cos(angle);
@@ -213,11 +213,11 @@ function renderNodeShape(node, color, theme) {
213
213
  else pb.lineTo(px, py);
214
214
  }
215
215
  pb.close();
216
- shapeNode = chunkJVVGQLJQ_cjs.path(pb.build(), { ...baseAttrs });
216
+ shapeNode = chunkW626EAS5_cjs.path(pb.build(), { ...baseAttrs });
217
217
  break;
218
218
  }
219
219
  case "stadium": {
220
- shapeNode = chunkJVVGQLJQ_cjs.rect(cx - w / 2, cy - h / 2, w, h, {
220
+ shapeNode = chunkW626EAS5_cjs.rect(cx - w / 2, cy - h / 2, w, h, {
221
221
  ...baseAttrs,
222
222
  rx: h / 2
223
223
  });
@@ -225,14 +225,14 @@ function renderNodeShape(node, color, theme) {
225
225
  }
226
226
  // 'rect' is the default
227
227
  default: {
228
- shapeNode = chunkJVVGQLJQ_cjs.rect(cx - w / 2, cy - h / 2, w, h, {
228
+ shapeNode = chunkW626EAS5_cjs.rect(cx - w / 2, cy - h / 2, w, h, {
229
229
  ...baseAttrs,
230
230
  rx: 8
231
231
  });
232
232
  break;
233
233
  }
234
234
  }
235
- const labelNode = chunkJVVGQLJQ_cjs.text(cx, cy, node.label, {
235
+ const labelNode = chunkW626EAS5_cjs.text(cx, cy, node.label, {
236
236
  class: "chartts-graph-label",
237
237
  fill: "#fff",
238
238
  textAnchor: "middle",
@@ -343,9 +343,9 @@ function renderArrowhead(tipX, tipY, angle, size, color) {
343
343
  const leftY = baseY + perpY;
344
344
  const rightX = baseX - perpX;
345
345
  const rightY = baseY - perpY;
346
- const pb = new chunkJVVGQLJQ_cjs.PathBuilder();
346
+ const pb = new chunkW626EAS5_cjs.PathBuilder();
347
347
  pb.moveTo(tipX, tipY).lineTo(leftX, leftY).lineTo(rightX, rightY).close();
348
- return chunkJVVGQLJQ_cjs.path(pb.build(), {
348
+ return chunkW626EAS5_cjs.path(pb.build(), {
349
349
  fill: color,
350
350
  class: "chartts-graph-arrow"
351
351
  });
@@ -373,7 +373,7 @@ function renderEdges(nodes, edges, options, theme) {
373
373
  let labelX = (start.x + end.x) / 2;
374
374
  let labelY = (start.y + end.y) / 2;
375
375
  if (options.edgeStyle === "straight" || options.edgeStyle === void 0) {
376
- result.push(chunkJVVGQLJQ_cjs.line(start.x, start.y, end.x, end.y, edgeAttrs));
376
+ result.push(chunkW626EAS5_cjs.line(start.x, start.y, end.x, end.y, edgeAttrs));
377
377
  } else {
378
378
  const pairKey = Math.min(edge.source, edge.target) + ":" + Math.max(edge.source, edge.target);
379
379
  const idx = pairIndex.get(pairKey) ?? 0;
@@ -385,9 +385,9 @@ function renderEdges(nodes, edges, options, theme) {
385
385
  const perpAngle = angle + Math.PI / 2;
386
386
  const cx = mx + Math.cos(perpAngle) * offset * sign;
387
387
  const cy = my + Math.sin(perpAngle) * offset * sign;
388
- const pb = new chunkJVVGQLJQ_cjs.PathBuilder();
388
+ const pb = new chunkW626EAS5_cjs.PathBuilder();
389
389
  pb.moveTo(start.x, start.y).quadTo(cx, cy, end.x, end.y);
390
- result.push(chunkJVVGQLJQ_cjs.path(pb.build(), edgeAttrs));
390
+ result.push(chunkW626EAS5_cjs.path(pb.build(), edgeAttrs));
391
391
  arrowAngle = Math.atan2(end.y - cy, end.x - cx);
392
392
  labelX = 0.25 * start.x + 0.5 * cx + 0.25 * end.x;
393
393
  labelY = 0.25 * start.y + 0.5 * cy + 0.25 * end.y;
@@ -404,13 +404,13 @@ function renderEdges(nodes, edges, options, theme) {
404
404
  const ph = theme.fontSizeSmall - 1 + 6;
405
405
  const bgFill = theme.background === "transparent" ? "#fff" : theme.background;
406
406
  result.push(
407
- chunkJVVGQLJQ_cjs.rect(lx - pw / 2, ly - ph / 2, pw, ph, {
407
+ chunkW626EAS5_cjs.rect(lx - pw / 2, ly - ph / 2, pw, ph, {
408
408
  fill: bgFill,
409
409
  rx: 3
410
410
  })
411
411
  );
412
412
  result.push(
413
- chunkJVVGQLJQ_cjs.text(lx, ly, edge.label, {
413
+ chunkW626EAS5_cjs.text(lx, ly, edge.label, {
414
414
  fill: theme.textMuted,
415
415
  textAnchor: "middle",
416
416
  dominantBaseline: "central",
@@ -424,46 +424,32 @@ function renderEdges(nodes, edges, options, theme) {
424
424
  }
425
425
 
426
426
  // src/charts/graph/layout-force.ts
427
- var layoutCache = /* @__PURE__ */ new Map();
428
- function cacheKey(nodes, edges) {
429
- const nk = nodes.map((n) => n.id).join(",");
430
- const ek = edges.map((e) => `${e.source}-${e.target}`).join(",");
431
- return nk + "|" + ek;
432
- }
433
427
  function forceLayout(nodes, edges, opts) {
434
428
  const { area, iterations } = opts;
435
429
  const n = nodes.length;
436
430
  if (n === 0) return;
437
431
  const cx = area.x + area.width / 2;
438
432
  const cy = area.y + area.height / 2;
439
- const key = cacheKey(nodes, edges);
440
- const cached = layoutCache.get(key);
441
- if (cached && cached.length === n) {
442
- for (let i = 0; i < n; i++) {
443
- const node = nodes[i];
444
- if (!node.pin) {
445
- node.x = cached[i].x;
446
- node.y = cached[i].y;
447
- }
448
- }
449
- } else {
450
- for (let i = 0; i < n; i++) {
451
- const node = nodes[i];
452
- if (node.pin) {
453
- node.x = area.x + node.pin.x * area.width;
454
- node.y = area.y + node.pin.y * area.height;
455
- } else {
456
- const angle = 2 * Math.PI * i / n;
457
- const r = Math.min(area.width, area.height) * 0.3;
458
- node.x = cx + r * Math.cos(angle);
459
- node.y = cy + r * Math.sin(angle);
460
- }
461
- node.vx = 0;
462
- node.vy = 0;
433
+ for (let i = 0; i < n; i++) {
434
+ const node = nodes[i];
435
+ if (node.pin) {
436
+ node.x = area.x + node.pin.x * area.width;
437
+ node.y = area.y + node.pin.y * area.height;
438
+ } else {
439
+ const angle = 2 * Math.PI * i / n;
440
+ const r = Math.min(area.width, area.height) * 0.4;
441
+ node.x = cx + r * Math.cos(angle);
442
+ node.y = cy + r * Math.sin(angle);
463
443
  }
444
+ node.vx = 0;
445
+ node.vy = 0;
464
446
  }
465
- const k = Math.sqrt(area.width * area.height / Math.max(n, 1));
466
- const repulsion = k * k;
447
+ const avgNodeSize = nodes.reduce((s, nd) => s + Math.max(nd.width, nd.height), 0) / n;
448
+ const k = Math.max(
449
+ Math.sqrt(area.width * area.height / Math.max(n, 1)),
450
+ avgNodeSize * 2
451
+ );
452
+ const repulsion = k * k * 1.5;
467
453
  for (let iter = 0; iter < iterations; iter++) {
468
454
  const temp = 0.1 * (1 - iter / iterations) * Math.min(area.width, area.height) * 0.5;
469
455
  for (const node of nodes) {
@@ -477,8 +463,10 @@ function forceLayout(nodes, edges, opts) {
477
463
  const dx = ni.x - nj.x;
478
464
  const dy = ni.y - nj.y;
479
465
  const dist = Math.max(Math.sqrt(dx * dx + dy * dy), 1);
480
- const minDist = (Math.max(ni.width, ni.height) + Math.max(nj.width, nj.height)) / 2;
481
- const effectiveDist = Math.max(dist - minDist * 0.6, 1);
466
+ const ri = Math.sqrt(ni.width * ni.width + ni.height * ni.height) / 2;
467
+ const rj = Math.sqrt(nj.width * nj.width + nj.height * nj.height) / 2;
468
+ const minDist = ri + rj + 12;
469
+ const effectiveDist = Math.max(dist - minDist * 0.5, 1);
482
470
  const force = repulsion / (effectiveDist * effectiveDist);
483
471
  const fx = dx / dist * force;
484
472
  const fy = dy / dist * force;
@@ -495,8 +483,8 @@ function forceLayout(nodes, edges, opts) {
495
483
  const dy = tgt.y - src.y;
496
484
  const dist = Math.max(Math.sqrt(dx * dx + dy * dy), 1);
497
485
  const force = dist * dist / k;
498
- const fx = dx / dist * force * 0.1;
499
- const fy = dy / dist * force * 0.1;
486
+ const fx = dx / dist * force * 0.08;
487
+ const fy = dy / dist * force * 0.08;
500
488
  src.vx += fx;
501
489
  src.vy += fy;
502
490
  tgt.vx -= fx;
@@ -524,7 +512,39 @@ function forceLayout(nodes, edges, opts) {
524
512
  node.y = Math.max(area.y + my, Math.min(area.y + area.height - my, node.y));
525
513
  }
526
514
  }
527
- layoutCache.set(key, nodes.map((nd) => ({ x: nd.x, y: nd.y })));
515
+ for (let pass = 0; pass < 10; pass++) {
516
+ let moved = false;
517
+ for (let i = 0; i < n; i++) {
518
+ for (let j = i + 1; j < n; j++) {
519
+ const ni = nodes[i];
520
+ const nj = nodes[j];
521
+ if (ni.pin && nj.pin) continue;
522
+ const overlapX = (ni.width + nj.width) / 2 + 8 - Math.abs(ni.x - nj.x);
523
+ const overlapY = (ni.height + nj.height) / 2 + 8 - Math.abs(ni.y - nj.y);
524
+ if (overlapX <= 0 || overlapY <= 0) continue;
525
+ const pushX = overlapX < overlapY;
526
+ const push = (pushX ? overlapX : overlapY) / 2 + 1;
527
+ if (pushX) {
528
+ const dir = ni.x >= nj.x ? 1 : -1;
529
+ if (!ni.pin) ni.x += dir * push;
530
+ if (!nj.pin) nj.x -= dir * push;
531
+ } else {
532
+ const dir = ni.y >= nj.y ? 1 : -1;
533
+ if (!ni.pin) ni.y += dir * push;
534
+ if (!nj.pin) nj.y -= dir * push;
535
+ }
536
+ moved = true;
537
+ }
538
+ }
539
+ if (!moved) break;
540
+ for (const node of nodes) {
541
+ if (node.pin) continue;
542
+ const mx = Math.max(20, node.width / 2 + 5);
543
+ const my = Math.max(20, node.height / 2 + 5);
544
+ node.x = Math.max(area.x + mx, Math.min(area.x + area.width - mx, node.x));
545
+ node.y = Math.max(area.y + my, Math.min(area.y + area.height - my, node.y));
546
+ }
547
+ }
528
548
  }
529
549
 
530
550
  // src/charts/graph/layout-hierarchy.ts
@@ -543,46 +563,56 @@ function hierarchyLayout(nodes, edges, opts) {
543
563
  const layers = assignLayers(n, outgoing, incoming);
544
564
  const layerGroups = groupByLayer(layers, n);
545
565
  orderLayers(layerGroups, outgoing, incoming, 3);
546
- const isHorizontal = direction === "LR" || direction === "RL";
547
566
  const maxLayer = Math.max(...layers, 0);
548
- const availW = area.width;
549
- const availH = area.height;
550
567
  const layerCount = maxLayer + 1;
551
- const layerGap = isHorizontal ? availW / (layerCount + 1) : availH / (layerCount + 1);
568
+ const isVertical = direction === "TB" || direction === "BT";
569
+ const layerThickness = new Array(layerCount).fill(0);
570
+ for (let layer = 0; layer < layerCount; layer++) {
571
+ const grp = layerGroups[layer] ?? [];
572
+ for (const idx of grp) {
573
+ const nd = nodes[idx];
574
+ const thick = isVertical ? nd.height : nd.width;
575
+ if (thick > layerThickness[layer]) layerThickness[layer] = thick;
576
+ }
577
+ }
578
+ const gap = 24;
579
+ const totalThickness = layerThickness.reduce((s, t) => s + t, 0) + gap * (layerCount - 1);
580
+ const availableThickness = isVertical ? area.height : area.width;
581
+ const scale = totalThickness > availableThickness ? availableThickness / totalThickness : 1;
582
+ const layerCenter = new Array(layerCount).fill(0);
583
+ const usedThickness = totalThickness * scale;
584
+ const offset = (availableThickness - usedThickness) / 2;
585
+ let cursor = offset + layerThickness[0] * scale / 2;
586
+ layerCenter[0] = cursor;
587
+ for (let layer = 1; layer < layerCount; layer++) {
588
+ cursor += layerThickness[layer - 1] * scale / 2 + gap * scale + layerThickness[layer] * scale / 2;
589
+ layerCenter[layer] = cursor;
590
+ }
591
+ if (direction === "BT" || direction === "RL") {
592
+ layerCenter.reverse();
593
+ }
552
594
  for (let layer = 0; layer <= maxLayer; layer++) {
553
- const group2 = layerGroups[layer] ?? [];
554
- if (group2.length === 0) continue;
555
- const nodeGap = isHorizontal ? availH / (group2.length + 1) : availW / (group2.length + 1);
556
- for (let pos = 0; pos < group2.length; pos++) {
557
- const node = nodes[group2[pos]];
595
+ const grp = layerGroups[layer] ?? [];
596
+ if (grp.length === 0) continue;
597
+ for (let pos = 0; pos < grp.length; pos++) {
598
+ const node = nodes[grp[pos]];
558
599
  if (node.pin) {
559
600
  node.x = area.x + node.pin.x * area.width;
560
601
  node.y = area.y + node.pin.y * area.height;
561
602
  continue;
562
603
  }
563
- let layerCoord = area.x + layerGap * (layer + 1);
564
- let posCoord = area.y + nodeGap * (pos + 1);
565
- if (isHorizontal) ; else {
566
- const tmp = layerCoord;
567
- layerCoord = posCoord;
568
- posCoord = tmp;
569
- }
604
+ const posFrac = (pos + 1) / (grp.length + 1);
605
+ const layerPos = layerCenter[layer];
570
606
  switch (direction) {
571
607
  case "TB":
572
- node.x = layerCoord;
573
- node.y = posCoord;
574
- break;
575
608
  case "BT":
576
- node.x = layerCoord;
577
- node.y = area.y + area.height - (posCoord - area.y);
609
+ node.x = area.x + posFrac * area.width;
610
+ node.y = area.y + layerPos;
578
611
  break;
579
612
  case "LR":
580
- node.x = layerCoord;
581
- node.y = posCoord;
582
- break;
583
613
  case "RL":
584
- node.x = area.x + area.width - (layerCoord - area.x);
585
- node.y = posCoord;
614
+ node.x = area.x + layerPos;
615
+ node.y = area.y + posFrac * area.height;
586
616
  break;
587
617
  }
588
618
  }
@@ -709,23 +739,40 @@ function circularLayout(nodes, edges, opts) {
709
739
  const { area } = opts;
710
740
  const cx = area.x + area.width / 2;
711
741
  const cy = area.y + area.height / 2;
712
- const maxNodeSize = Math.max(
713
- ...nodes.map((nd) => Math.max(nd.width, nd.height)),
714
- 40
715
- );
716
- const radius = Math.min(area.width, area.height) / 2 - maxNodeSize / 2 - 10;
717
742
  const order = connectivityOrder(nodes, edges);
718
743
  const unpinned = [];
719
744
  for (const idx of order) {
720
745
  if (!nodes[idx].pin) unpinned.push(idx);
721
746
  }
722
- const angleStep = 2 * Math.PI / Math.max(unpinned.length, 1);
747
+ const count = Math.max(unpinned.length, 1);
748
+ const angleStep = 2 * Math.PI / count;
749
+ const maxNodeW = Math.max(...nodes.map((nd) => nd.width), 40);
750
+ const maxNodeH = Math.max(...nodes.map((nd) => nd.height), 40);
751
+ const margin = 10;
752
+ let rx = area.width / 2 - maxNodeW / 2 - margin;
753
+ let ry = area.height / 2 - maxNodeH / 2 - margin;
754
+ if (count > 1) {
755
+ const maxDiag = Math.max(
756
+ ...nodes.map((nd) => Math.sqrt(nd.width * nd.width + nd.height * nd.height)),
757
+ 40
758
+ );
759
+ const minSpacing = maxDiag + 16;
760
+ const perimApprox = Math.PI * (3 * (rx + ry) - Math.sqrt((3 * rx + ry) * (rx + 3 * ry)));
761
+ const spacingPerNode = perimApprox / count;
762
+ if (spacingPerNode < minSpacing) {
763
+ const scale = minSpacing / spacingPerNode;
764
+ rx *= scale;
765
+ ry *= scale;
766
+ }
767
+ }
768
+ rx = Math.max(20, Math.min(rx, area.width / 2 - margin));
769
+ ry = Math.max(20, Math.min(ry, area.height / 2 - margin));
723
770
  const startAngle = -Math.PI / 2;
724
771
  for (let i = 0; i < unpinned.length; i++) {
725
772
  const node = nodes[unpinned[i]];
726
773
  const angle = startAngle + angleStep * i;
727
- node.x = cx + radius * Math.cos(angle);
728
- node.y = cy + radius * Math.sin(angle);
774
+ node.x = cx + rx * Math.cos(angle);
775
+ node.y = cy + ry * Math.sin(angle);
729
776
  }
730
777
  for (const node of nodes) {
731
778
  if (node.pin) {
@@ -788,57 +835,138 @@ var graphChartType = {
788
835
  bounds: { xMin: 0, xMax: 1, yMin: 0, yMax: 1 }
789
836
  };
790
837
  }
791
- return chunkV5Q6UNUK_cjs.prepareNoAxes(data, options);
838
+ return chunkX5SG6MFS_cjs.prepareNoAxes(data, options);
792
839
  },
793
840
  render(ctx) {
794
841
  const { data, area, theme, options } = ctx;
795
842
  const graphOpts = options;
796
- const result = [];
797
- const { graphNodes, graphEdges } = parseGraphData(data, options);
798
- if (graphNodes.length === 0) return result;
799
- for (const node of graphNodes) {
800
- const size = measureNodeSize(node.label, theme.fontSizeSmall, node.shape);
801
- node.width = size.width;
802
- node.height = size.height;
803
- }
804
- runLayout(graphNodes, graphEdges, graphOpts, area);
805
- const edgeNodes = renderEdges(graphNodes, graphEdges, graphOpts, theme);
806
- if (edgeNodes.length > 0) {
807
- result.push(chunkJVVGQLJQ_cjs.group(edgeNodes, { class: "chartts-graph-edges" }));
808
- }
809
- for (const node of graphNodes) {
810
- const color = node.color ?? options.colors[node.index % options.colors.length];
811
- const shapeNodes = renderNodeShape(node, color, theme);
812
- result.push(chunkJVVGQLJQ_cjs.group(shapeNodes, {
813
- class: `chartts-series chartts-series-${node.index}`,
814
- "data-series-name": node.label
843
+ if (graphOpts.nodes || graphOpts.edges) {
844
+ return renderRichGraph(ctx);
845
+ }
846
+ const nodes = [];
847
+ const { graphNodes, graphEdges } = parseLegacyGraphData(data);
848
+ if (graphNodes.length === 0) return nodes;
849
+ forceLayout2(graphNodes, graphEdges, area, 80);
850
+ for (let ei = 0; ei < graphEdges.length; ei++) {
851
+ const edge = graphEdges[ei];
852
+ const src = graphNodes[edge.source];
853
+ const tgt = graphNodes[edge.target];
854
+ nodes.push(chunkW626EAS5_cjs.line(src.x, src.y, tgt.x, tgt.y, {
855
+ class: "chartts-graph-edge",
856
+ stroke: theme.gridColor,
857
+ strokeWidth: Math.max(1, Math.min(3, edge.weight * 0.5)),
858
+ opacity: 0.5
815
859
  }));
816
860
  }
817
- return result;
861
+ const maxVal = Math.max(...graphNodes.map((n) => n.value), 1);
862
+ const minR = 5;
863
+ const maxR = Math.min(20, Math.min(area.width, area.height) * 0.06);
864
+ for (let ni = 0; ni < graphNodes.length; ni++) {
865
+ const gn = graphNodes[ni];
866
+ const color = options.colors[ni % options.colors.length];
867
+ const r = minR + gn.value / maxVal * (maxR - minR);
868
+ const nodeGroup = [];
869
+ nodeGroup.push(chunkW626EAS5_cjs.circle(gn.x, gn.y, r, {
870
+ class: "chartts-graph-node",
871
+ fill: color,
872
+ fillOpacity: 0.85,
873
+ stroke: color,
874
+ strokeWidth: 1.5,
875
+ "data-series": ni,
876
+ "data-index": 0,
877
+ tabindex: 0,
878
+ role: "img",
879
+ ariaLabel: `${gn.name}: ${gn.value}`
880
+ }));
881
+ nodeGroup.push(chunkW626EAS5_cjs.text(gn.x, gn.y - r - 5, gn.name, {
882
+ class: "chartts-graph-label",
883
+ fill: theme.textColor,
884
+ textAnchor: "middle",
885
+ dominantBaseline: "auto",
886
+ fontSize: theme.fontSizeSmall,
887
+ fontFamily: theme.fontFamily
888
+ }));
889
+ nodes.push(chunkW626EAS5_cjs.group(nodeGroup, {
890
+ class: `chartts-series chartts-series-${ni}`,
891
+ "data-series-name": gn.name
892
+ }));
893
+ }
894
+ return nodes;
818
895
  },
819
896
  hitTest(ctx, mx, my) {
820
- const { data, area, theme, options } = ctx;
897
+ const { data, area, options } = ctx;
821
898
  const graphOpts = options;
822
- const { graphNodes, graphEdges } = parseGraphData(data, options);
823
- if (graphNodes.length === 0) return null;
824
- for (const node of graphNodes) {
825
- const size = measureNodeSize(node.label, theme.fontSizeSmall, node.shape);
826
- node.width = size.width;
827
- node.height = size.height;
899
+ if (graphOpts.nodes || graphOpts.edges) {
900
+ return richHitTest(ctx, mx, my);
828
901
  }
829
- runLayout(graphNodes, graphEdges, graphOpts, area);
902
+ const { graphNodes, graphEdges } = parseLegacyGraphData(data);
903
+ if (graphNodes.length === 0) return null;
904
+ forceLayout2(graphNodes, graphEdges, area, 80);
905
+ const maxVal = Math.max(...graphNodes.map((n) => n.value), 1);
906
+ const minR = 5;
907
+ const maxR = Math.min(20, Math.min(area.width, area.height) * 0.06);
830
908
  let best = null;
831
909
  let bestDist = Infinity;
832
- for (const node of graphNodes) {
833
- const dist = shapeDistance(node, mx, my);
834
- if (dist < bestDist && dist < 8) {
910
+ for (let ni = 0; ni < graphNodes.length; ni++) {
911
+ const gn = graphNodes[ni];
912
+ const r = minR + gn.value / maxVal * (maxR - minR);
913
+ const dist = Math.sqrt((mx - gn.x) ** 2 + (my - gn.y) ** 2);
914
+ if (dist < bestDist && dist < r + 8) {
835
915
  bestDist = dist;
836
- best = { seriesIndex: node.index, pointIndex: 0, distance: dist, x: node.x, y: node.y };
916
+ best = { seriesIndex: ni, pointIndex: 0, distance: dist, x: gn.x, y: gn.y };
837
917
  }
838
918
  }
839
919
  return best;
840
920
  }
841
921
  };
922
+ function renderRichGraph(ctx) {
923
+ const { data, area, theme, options } = ctx;
924
+ const graphOpts = options;
925
+ const result = [];
926
+ const { graphNodes, graphEdges } = parseGraphData(data, options);
927
+ if (graphNodes.length === 0) return result;
928
+ for (const node of graphNodes) {
929
+ const size = measureNodeSize(node.label, theme.fontSizeSmall, node.shape);
930
+ node.width = size.width;
931
+ node.height = size.height;
932
+ }
933
+ runLayout(graphNodes, graphEdges, graphOpts, area);
934
+ const edgeNodes = renderEdges(graphNodes, graphEdges, graphOpts, theme);
935
+ if (edgeNodes.length > 0) {
936
+ result.push(chunkW626EAS5_cjs.group(edgeNodes, { class: "chartts-graph-edges" }));
937
+ }
938
+ for (const node of graphNodes) {
939
+ const color = node.color ?? options.colors[node.index % options.colors.length];
940
+ const shapeNodes = renderNodeShape(node, color, theme);
941
+ result.push(chunkW626EAS5_cjs.group(shapeNodes, {
942
+ class: `chartts-series chartts-series-${node.index}`,
943
+ "data-series-name": node.label
944
+ }));
945
+ }
946
+ return result;
947
+ }
948
+ function richHitTest(ctx, mx, my) {
949
+ const { data, area, theme, options } = ctx;
950
+ const graphOpts = options;
951
+ const { graphNodes, graphEdges } = parseGraphData(data, options);
952
+ if (graphNodes.length === 0) return null;
953
+ for (const node of graphNodes) {
954
+ const size = measureNodeSize(node.label, theme.fontSizeSmall, node.shape);
955
+ node.width = size.width;
956
+ node.height = size.height;
957
+ }
958
+ runLayout(graphNodes, graphEdges, graphOpts, area);
959
+ let best = null;
960
+ let bestDist = Infinity;
961
+ for (const node of graphNodes) {
962
+ const dist = shapeDistance(node, mx, my);
963
+ if (dist < bestDist && dist < 8) {
964
+ bestDist = dist;
965
+ best = { seriesIndex: node.index, pointIndex: 0, distance: dist, x: node.x, y: node.y };
966
+ }
967
+ }
968
+ return best;
969
+ }
842
970
  function runLayout(nodes, edges, opts, area) {
843
971
  const layout = opts.layout ?? "force";
844
972
  switch (layout) {
@@ -883,7 +1011,6 @@ function shapeDistance(node, mx, my) {
883
1011
  const d = dx * dx / (rx * rx) + dy * dy / (ry * ry);
884
1012
  return d <= 1 ? 0 : Math.sqrt(dx * dx + dy * dy) * (Math.sqrt(d) - 1);
885
1013
  }
886
- // rect, stadium
887
1014
  default: {
888
1015
  const hw = node.width / 2;
889
1016
  const hh = node.height / 2;
@@ -893,7 +1020,125 @@ function shapeDistance(node, mx, my) {
893
1020
  }
894
1021
  }
895
1022
  }
1023
+ function parseLegacyGraphData(data, _options) {
1024
+ const graphNodes = [];
1025
+ const graphEdges = [];
1026
+ const nodeMap = /* @__PURE__ */ new Map();
1027
+ function getOrCreateNode(name, value = 1) {
1028
+ if (nodeMap.has(name)) return nodeMap.get(name);
1029
+ const idx = graphNodes.length;
1030
+ nodeMap.set(name, idx);
1031
+ graphNodes.push({
1032
+ name,
1033
+ index: idx,
1034
+ value,
1035
+ x: 0,
1036
+ y: 0,
1037
+ vx: 0,
1038
+ vy: 0
1039
+ });
1040
+ return idx;
1041
+ }
1042
+ const hasArrows = data.series.some((s) => s.name.includes("\u2192") || s.name.includes("->"));
1043
+ if (hasArrows) {
1044
+ for (const series of data.series) {
1045
+ const parts = series.name.split(/\s*(?:→|->)\s*/);
1046
+ if (parts.length < 2) continue;
1047
+ const srcName = parts[0].trim();
1048
+ const tgtName = parts[1].trim();
1049
+ const weight = series.values[0] ?? 1;
1050
+ const src = getOrCreateNode(srcName);
1051
+ const tgt = getOrCreateNode(tgtName);
1052
+ graphEdges.push({ source: src, target: tgt, weight });
1053
+ graphNodes[src].value += weight;
1054
+ graphNodes[tgt].value += weight;
1055
+ }
1056
+ } else {
1057
+ for (let i = 0; i < data.labels.length; i++) {
1058
+ getOrCreateNode(String(data.labels[i]), Math.abs(data.series[0]?.values[i] ?? 1));
1059
+ }
1060
+ if (data.series.length > 1 && data.series.length === data.labels.length) {
1061
+ for (let si = 0; si < data.series.length; si++) {
1062
+ for (let j = 0; j < data.series[si].values.length; j++) {
1063
+ const val = data.series[si].values[j];
1064
+ if (val > 0 && si !== j) {
1065
+ graphEdges.push({ source: si, target: j, weight: val });
1066
+ }
1067
+ }
1068
+ }
1069
+ }
1070
+ }
1071
+ return { graphNodes, graphEdges };
1072
+ }
1073
+ function forceLayout2(nodes, edges, area, iterations) {
1074
+ const cx = area.x + area.width / 2;
1075
+ const cy = area.y + area.height / 2;
1076
+ const n = nodes.length;
1077
+ if (n === 0) return;
1078
+ for (let i = 0; i < n; i++) {
1079
+ const angle = 2 * Math.PI * i / n;
1080
+ const r = Math.min(area.width, area.height) * 0.3;
1081
+ nodes[i].x = cx + r * Math.cos(angle);
1082
+ nodes[i].y = cy + r * Math.sin(angle);
1083
+ nodes[i].vx = 0;
1084
+ nodes[i].vy = 0;
1085
+ }
1086
+ const k = Math.sqrt(area.width * area.height / Math.max(n, 1));
1087
+ const repulsion = k * k;
1088
+ for (let iter = 0; iter < iterations; iter++) {
1089
+ const temp = 0.1 * (1 - iter / iterations) * Math.min(area.width, area.height) * 0.5;
1090
+ for (const node of nodes) {
1091
+ node.vx = 0;
1092
+ node.vy = 0;
1093
+ }
1094
+ for (let i = 0; i < n; i++) {
1095
+ for (let j = i + 1; j < n; j++) {
1096
+ const dx = nodes[i].x - nodes[j].x;
1097
+ const dy = nodes[i].y - nodes[j].y;
1098
+ const dist = Math.max(Math.sqrt(dx * dx + dy * dy), 1);
1099
+ const force = repulsion / (dist * dist);
1100
+ const fx = dx / dist * force;
1101
+ const fy = dy / dist * force;
1102
+ nodes[i].vx += fx;
1103
+ nodes[i].vy += fy;
1104
+ nodes[j].vx -= fx;
1105
+ nodes[j].vy -= fy;
1106
+ }
1107
+ }
1108
+ for (const edge of edges) {
1109
+ const src = nodes[edge.source];
1110
+ const tgt = nodes[edge.target];
1111
+ const dx = tgt.x - src.x;
1112
+ const dy = tgt.y - src.y;
1113
+ const dist = Math.max(Math.sqrt(dx * dx + dy * dy), 1);
1114
+ const force = dist * dist / k;
1115
+ const fx = dx / dist * force * 0.1;
1116
+ const fy = dy / dist * force * 0.1;
1117
+ src.vx += fx;
1118
+ src.vy += fy;
1119
+ tgt.vx -= fx;
1120
+ tgt.vy -= fy;
1121
+ }
1122
+ for (const node of nodes) {
1123
+ const dx = cx - node.x;
1124
+ const dy = cy - node.y;
1125
+ node.vx += dx * 0.01;
1126
+ node.vy += dy * 0.01;
1127
+ }
1128
+ for (const node of nodes) {
1129
+ const speed = Math.sqrt(node.vx * node.vx + node.vy * node.vy);
1130
+ if (speed > 0) {
1131
+ const capped = Math.min(speed, temp);
1132
+ node.x += node.vx / speed * capped;
1133
+ node.y += node.vy / speed * capped;
1134
+ }
1135
+ const margin = 20;
1136
+ node.x = Math.max(area.x + margin, Math.min(area.x + area.width - margin, node.x));
1137
+ node.y = Math.max(area.y + margin, Math.min(area.y + area.height - margin, node.y));
1138
+ }
1139
+ }
1140
+ }
896
1141
 
897
1142
  exports.graphChartType = graphChartType;
898
- //# sourceMappingURL=chunk-QYI7ZV3B.cjs.map
899
- //# sourceMappingURL=chunk-QYI7ZV3B.cjs.map
1143
+ //# sourceMappingURL=chunk-PX7MLSIH.cjs.map
1144
+ //# sourceMappingURL=chunk-PX7MLSIH.cjs.map