@chartts/core 0.1.3 → 0.1.4

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 (291) 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-XKERO5K2.js → chunk-24557PYN.js} +3 -3
  20. package/dist/{chunk-XKERO5K2.js.map → chunk-24557PYN.js.map} +1 -1
  21. package/dist/{chunk-5YNIOIKK.js → chunk-2BUIZDOB.js} +3 -3
  22. package/dist/{chunk-5YNIOIKK.js.map → chunk-2BUIZDOB.js.map} +1 -1
  23. package/dist/{chunk-EHKHXQ46.cjs → chunk-2IMUTDTD.cjs} +10 -10
  24. package/dist/{chunk-EHKHXQ46.cjs.map → chunk-2IMUTDTD.cjs.map} +1 -1
  25. package/dist/{chunk-7ZPHLIFP.cjs → chunk-2IWLOBSF.cjs} +6 -6
  26. package/dist/{chunk-7ZPHLIFP.cjs.map → chunk-2IWLOBSF.cjs.map} +1 -1
  27. package/dist/{chunk-F5AOBHQY.js → chunk-2JYK52HV.js} +4 -4
  28. package/dist/{chunk-F5AOBHQY.js.map → chunk-2JYK52HV.js.map} +1 -1
  29. package/dist/{chunk-WVQVGQJO.cjs → chunk-2QRCHYTZ.cjs} +7 -7
  30. package/dist/{chunk-WVQVGQJO.cjs.map → chunk-2QRCHYTZ.cjs.map} +1 -1
  31. package/dist/{chunk-XWCY67K5.js → chunk-34DQGCPP.js} +4 -4
  32. package/dist/{chunk-XWCY67K5.js.map → chunk-34DQGCPP.js.map} +1 -1
  33. package/dist/{chunk-5J26EN5I.js → chunk-3JB4JBBK.js} +4 -4
  34. package/dist/{chunk-5J26EN5I.js.map → chunk-3JB4JBBK.js.map} +1 -1
  35. package/dist/{chunk-EHNX3MG3.cjs → chunk-3NHH6C4K.cjs} +13 -13
  36. package/dist/{chunk-EHNX3MG3.cjs.map → chunk-3NHH6C4K.cjs.map} +1 -1
  37. package/dist/{chunk-ECB3UPTC.cjs → chunk-3SVNEKXE.cjs} +11 -11
  38. package/dist/{chunk-ECB3UPTC.cjs.map → chunk-3SVNEKXE.cjs.map} +1 -1
  39. package/dist/{chunk-BYB3LQAT.cjs → chunk-4D6PVH2C.cjs} +9 -9
  40. package/dist/{chunk-BYB3LQAT.cjs.map → chunk-4D6PVH2C.cjs.map} +1 -1
  41. package/dist/{chunk-NG7DRWWT.cjs → chunk-4MNVJVK3.cjs} +6 -6
  42. package/dist/{chunk-NG7DRWWT.cjs.map → chunk-4MNVJVK3.cjs.map} +1 -1
  43. package/dist/{chunk-RQJRVKAH.js → chunk-4QRND2V5.js} +3 -3
  44. package/dist/{chunk-RQJRVKAH.js.map → chunk-4QRND2V5.js.map} +1 -1
  45. package/dist/{chunk-NGKUI7XE.cjs → chunk-55ZTXQQQ.cjs} +12 -12
  46. package/dist/{chunk-NGKUI7XE.cjs.map → chunk-55ZTXQQQ.cjs.map} +1 -1
  47. package/dist/{chunk-2MWA7H6J.js → chunk-56BN43J4.js} +5 -5
  48. package/dist/{chunk-2MWA7H6J.js.map → chunk-56BN43J4.js.map} +1 -1
  49. package/dist/{chunk-RJIPFWW7.js → chunk-5E7FXDBM.js} +4 -4
  50. package/dist/{chunk-RJIPFWW7.js.map → chunk-5E7FXDBM.js.map} +1 -1
  51. package/dist/{chunk-ILCWDAKD.js → chunk-5HZEDCJG.js} +3 -3
  52. package/dist/{chunk-ILCWDAKD.js.map → chunk-5HZEDCJG.js.map} +1 -1
  53. package/dist/{chunk-DKXW2FQC.cjs → chunk-5QT67VYJ.cjs} +10 -10
  54. package/dist/{chunk-DKXW2FQC.cjs.map → chunk-5QT67VYJ.cjs.map} +1 -1
  55. package/dist/{chunk-XE5ZYFGM.js → chunk-5QVUBGM7.js} +4 -4
  56. package/dist/{chunk-XE5ZYFGM.js.map → chunk-5QVUBGM7.js.map} +1 -1
  57. package/dist/{chunk-DR5MQC3W.js → chunk-62DBXI4N.js} +4 -4
  58. package/dist/{chunk-DR5MQC3W.js.map → chunk-62DBXI4N.js.map} +1 -1
  59. package/dist/{chunk-HMB2RIEE.js → chunk-6QMV75NT.js} +4 -4
  60. package/dist/{chunk-HMB2RIEE.js.map → chunk-6QMV75NT.js.map} +1 -1
  61. package/dist/{chunk-OUN3MWRQ.cjs → chunk-754Z4OR6.cjs} +10 -10
  62. package/dist/{chunk-OUN3MWRQ.cjs.map → chunk-754Z4OR6.cjs.map} +1 -1
  63. package/dist/{chunk-3SOKHPAO.js → chunk-7GLCJPV5.js} +4 -4
  64. package/dist/{chunk-3SOKHPAO.js.map → chunk-7GLCJPV5.js.map} +1 -1
  65. package/dist/{chunk-PQCHNZHM.cjs → chunk-7PHOSSLJ.cjs} +9 -9
  66. package/dist/{chunk-PQCHNZHM.cjs.map → chunk-7PHOSSLJ.cjs.map} +1 -1
  67. package/dist/{chunk-VBEZS3Q4.cjs → chunk-A5G32G2R.cjs} +9 -9
  68. package/dist/{chunk-VBEZS3Q4.cjs.map → chunk-A5G32G2R.cjs.map} +1 -1
  69. package/dist/{chunk-DX4FBN3I.js → chunk-AEQXFDL7.js} +14 -9
  70. package/dist/chunk-AEQXFDL7.js.map +1 -0
  71. package/dist/{chunk-RHTVKBRC.cjs → chunk-ATMSGQCW.cjs} +9 -9
  72. package/dist/{chunk-RHTVKBRC.cjs.map → chunk-ATMSGQCW.cjs.map} +1 -1
  73. package/dist/{chunk-2ITF366P.js → chunk-BFBVJ6MU.js} +3 -3
  74. package/dist/{chunk-2ITF366P.js.map → chunk-BFBVJ6MU.js.map} +1 -1
  75. package/dist/{chunk-E43H3A3G.cjs → chunk-BGGESAAG.cjs} +7 -7
  76. package/dist/{chunk-E43H3A3G.cjs.map → chunk-BGGESAAG.cjs.map} +1 -1
  77. package/dist/{chunk-R6ZDSXN7.cjs → chunk-CA42BCSM.cjs} +8 -8
  78. package/dist/{chunk-R6ZDSXN7.cjs.map → chunk-CA42BCSM.cjs.map} +1 -1
  79. package/dist/{chunk-FV7R2LLD.js → chunk-CU5ZXVZQ.js} +4 -4
  80. package/dist/{chunk-FV7R2LLD.js.map → chunk-CU5ZXVZQ.js.map} +1 -1
  81. package/dist/{chunk-JNQ4NL3R.cjs → chunk-CUIPBYMG.cjs} +8 -8
  82. package/dist/{chunk-JNQ4NL3R.cjs.map → chunk-CUIPBYMG.cjs.map} +1 -1
  83. package/dist/{chunk-CCMLOCTH.js → chunk-CWZADOJ6.js} +3 -3
  84. package/dist/{chunk-CCMLOCTH.js.map → chunk-CWZADOJ6.js.map} +1 -1
  85. package/dist/{chunk-FZIBM3G5.cjs → chunk-D5QUAWF3.cjs} +10 -10
  86. package/dist/{chunk-FZIBM3G5.cjs.map → chunk-D5QUAWF3.cjs.map} +1 -1
  87. package/dist/{chunk-YZQROIJY.js → chunk-DAAU5H24.js} +3 -3
  88. package/dist/{chunk-YZQROIJY.js.map → chunk-DAAU5H24.js.map} +1 -1
  89. package/dist/{chunk-GAWIUMAK.cjs → chunk-DT4GG5BF.cjs} +7 -7
  90. package/dist/{chunk-GAWIUMAK.cjs.map → chunk-DT4GG5BF.cjs.map} +1 -1
  91. package/dist/{chunk-4L62MAZA.js → chunk-DX77WSIB.js} +5 -5
  92. package/dist/{chunk-4L62MAZA.js.map → chunk-DX77WSIB.js.map} +1 -1
  93. package/dist/{chunk-4ORSJM2I.js → chunk-EPUWA3ZW.js} +4 -4
  94. package/dist/{chunk-4ORSJM2I.js.map → chunk-EPUWA3ZW.js.map} +1 -1
  95. package/dist/{chunk-ZTUKOCJN.cjs → chunk-ESJMEDLY.cjs} +4 -4
  96. package/dist/{chunk-ZTUKOCJN.cjs.map → chunk-ESJMEDLY.cjs.map} +1 -1
  97. package/dist/{chunk-6JNW43SE.js → chunk-EWVXMQRW.js} +5 -5
  98. package/dist/{chunk-6JNW43SE.js.map → chunk-EWVXMQRW.js.map} +1 -1
  99. package/dist/{chunk-LIY7MYRG.js → chunk-FGBIJ6PL.js} +4 -4
  100. package/dist/{chunk-LIY7MYRG.js.map → chunk-FGBIJ6PL.js.map} +1 -1
  101. package/dist/{chunk-OFEROCC5.cjs → chunk-FGHSUT6X.cjs} +6 -6
  102. package/dist/{chunk-OFEROCC5.cjs.map → chunk-FGHSUT6X.cjs.map} +1 -1
  103. package/dist/{chunk-QKJUAMRK.cjs → chunk-FVLVTY5D.cjs} +6 -6
  104. package/dist/{chunk-QKJUAMRK.cjs.map → chunk-FVLVTY5D.cjs.map} +1 -1
  105. package/dist/{chunk-YX6RW6ZW.cjs → chunk-GBL4R3GH.cjs} +6 -6
  106. package/dist/{chunk-YX6RW6ZW.cjs.map → chunk-GBL4R3GH.cjs.map} +1 -1
  107. package/dist/{chunk-SXVMEC6N.cjs → chunk-GRXHW5S3.cjs} +12 -12
  108. package/dist/{chunk-SXVMEC6N.cjs.map → chunk-GRXHW5S3.cjs.map} +1 -1
  109. package/dist/{chunk-K5TPJVOK.js → chunk-HCIBBUV5.js} +3 -3
  110. package/dist/{chunk-K5TPJVOK.js.map → chunk-HCIBBUV5.js.map} +1 -1
  111. package/dist/{chunk-HFWO37RY.cjs → chunk-HCK2VUWD.cjs} +8 -8
  112. package/dist/{chunk-HFWO37RY.cjs.map → chunk-HCK2VUWD.cjs.map} +1 -1
  113. package/dist/{chunk-FSDI3NJV.js → chunk-IDZTDJLH.js} +3 -3
  114. package/dist/{chunk-FSDI3NJV.js.map → chunk-IDZTDJLH.js.map} +1 -1
  115. package/dist/{chunk-FDNJNVKA.cjs → chunk-IF6RQ53Q.cjs} +9 -9
  116. package/dist/{chunk-FDNJNVKA.cjs.map → chunk-IF6RQ53Q.cjs.map} +1 -1
  117. package/dist/{chunk-PVPTFMJJ.js → chunk-IOV77VHP.js} +4 -4
  118. package/dist/{chunk-PVPTFMJJ.js.map → chunk-IOV77VHP.js.map} +1 -1
  119. package/dist/{chunk-UMIJYYF3.cjs → chunk-JVVGQLJQ.cjs} +14 -9
  120. package/dist/chunk-JVVGQLJQ.cjs.map +1 -0
  121. package/dist/{chunk-MY4KMVJ5.cjs → chunk-JYVRX3BX.cjs} +8 -8
  122. package/dist/{chunk-MY4KMVJ5.cjs.map → chunk-JYVRX3BX.cjs.map} +1 -1
  123. package/dist/{chunk-ZY7ETQD6.js → chunk-KHG3G2ZX.js} +3 -3
  124. package/dist/{chunk-ZY7ETQD6.js.map → chunk-KHG3G2ZX.js.map} +1 -1
  125. package/dist/{chunk-ASNAQ35U.js → chunk-KNMEXOKJ.js} +4 -4
  126. package/dist/{chunk-ASNAQ35U.js.map → chunk-KNMEXOKJ.js.map} +1 -1
  127. package/dist/{chunk-WYIIWTIR.cjs → chunk-KWSVJRXX.cjs} +4 -4
  128. package/dist/{chunk-WYIIWTIR.cjs.map → chunk-KWSVJRXX.cjs.map} +1 -1
  129. package/dist/{chunk-OAL5RS2X.cjs → chunk-LARNENXE.cjs} +10 -10
  130. package/dist/{chunk-OAL5RS2X.cjs.map → chunk-LARNENXE.cjs.map} +1 -1
  131. package/dist/{chunk-MYXLKVJE.js → chunk-LRHMLNPW.js} +12 -4
  132. package/dist/chunk-LRHMLNPW.js.map +1 -0
  133. package/dist/{chunk-66BHM3UN.cjs → chunk-LXYNL7BI.cjs} +10 -10
  134. package/dist/{chunk-66BHM3UN.cjs.map → chunk-LXYNL7BI.cjs.map} +1 -1
  135. package/dist/{chunk-V45C74EB.js → chunk-MEERXUZS.js} +4 -4
  136. package/dist/{chunk-V45C74EB.js.map → chunk-MEERXUZS.js.map} +1 -1
  137. package/dist/{chunk-YJHB2GHQ.js → chunk-MJY25P44.js} +3 -3
  138. package/dist/{chunk-YJHB2GHQ.js.map → chunk-MJY25P44.js.map} +1 -1
  139. package/dist/{chunk-6UWYKNFN.cjs → chunk-MSCRIA2U.cjs} +12 -12
  140. package/dist/{chunk-6UWYKNFN.cjs.map → chunk-MSCRIA2U.cjs.map} +1 -1
  141. package/dist/{chunk-UZH6PVHD.js → chunk-N35UAFEU.js} +4 -4
  142. package/dist/{chunk-UZH6PVHD.js.map → chunk-N35UAFEU.js.map} +1 -1
  143. package/dist/{chunk-6E6ZDWZD.cjs → chunk-NE2W2MF3.cjs} +10 -10
  144. package/dist/{chunk-6E6ZDWZD.cjs.map → chunk-NE2W2MF3.cjs.map} +1 -1
  145. package/dist/{chunk-7PNCJ4OQ.js → chunk-NQ7Y6ZKH.js} +3 -3
  146. package/dist/{chunk-7PNCJ4OQ.js.map → chunk-NQ7Y6ZKH.js.map} +1 -1
  147. package/dist/{chunk-LK2A3HBT.js → chunk-NRULNA5F.js} +4 -4
  148. package/dist/{chunk-LK2A3HBT.js.map → chunk-NRULNA5F.js.map} +1 -1
  149. package/dist/{chunk-47EP245Y.cjs → chunk-OEGSDOJ2.cjs} +7 -7
  150. package/dist/{chunk-47EP245Y.cjs.map → chunk-OEGSDOJ2.cjs.map} +1 -1
  151. package/dist/{chunk-ZFSFOD5W.cjs → chunk-OMAW52LY.cjs} +6 -6
  152. package/dist/{chunk-ZFSFOD5W.cjs.map → chunk-OMAW52LY.cjs.map} +1 -1
  153. package/dist/{chunk-YOLF5DYU.js → chunk-OMSHGBV3.js} +4 -4
  154. package/dist/{chunk-YOLF5DYU.js.map → chunk-OMSHGBV3.js.map} +1 -1
  155. package/dist/{chunk-4H2LGLGI.cjs → chunk-OTXHJHXU.cjs} +11 -11
  156. package/dist/{chunk-4H2LGLGI.cjs.map → chunk-OTXHJHXU.cjs.map} +1 -1
  157. package/dist/{chunk-DRIJNFWP.cjs → chunk-PCAYYCLY.cjs} +10 -10
  158. package/dist/{chunk-DRIJNFWP.cjs.map → chunk-PCAYYCLY.cjs.map} +1 -1
  159. package/dist/{chunk-QERWC7U6.js → chunk-PKXW45G4.js} +3 -3
  160. package/dist/{chunk-QERWC7U6.js.map → chunk-PKXW45G4.js.map} +1 -1
  161. package/dist/{chunk-YDQDZWZ7.cjs → chunk-QEPMEEZC.cjs} +6 -6
  162. package/dist/{chunk-YDQDZWZ7.cjs.map → chunk-QEPMEEZC.cjs.map} +1 -1
  163. package/dist/{chunk-G6R6MSRF.cjs → chunk-QPHUAF3R.cjs} +8 -8
  164. package/dist/{chunk-G6R6MSRF.cjs.map → chunk-QPHUAF3R.cjs.map} +1 -1
  165. package/dist/{chunk-RFEKSP62.js → chunk-QPHWRD25.js} +3 -3
  166. package/dist/{chunk-RFEKSP62.js.map → chunk-QPHWRD25.js.map} +1 -1
  167. package/dist/{chunk-XN6YS55F.cjs → chunk-QYI7ZV3B.cjs} +30 -22
  168. package/dist/chunk-QYI7ZV3B.cjs.map +1 -0
  169. package/dist/{chunk-3V64BDKG.cjs → chunk-R2W3RJFW.cjs} +13 -13
  170. package/dist/{chunk-3V64BDKG.cjs.map → chunk-R2W3RJFW.cjs.map} +1 -1
  171. package/dist/{chunk-46ZZTP5B.js → chunk-SGZUUUXU.js} +4 -4
  172. package/dist/{chunk-46ZZTP5B.js.map → chunk-SGZUUUXU.js.map} +1 -1
  173. package/dist/{chunk-MPQECPE3.js → chunk-T7SCCACB.js} +3 -3
  174. package/dist/{chunk-MPQECPE3.js.map → chunk-T7SCCACB.js.map} +1 -1
  175. package/dist/{chunk-GPSNBZPX.js → chunk-TC3H6ZED.js} +4 -4
  176. package/dist/{chunk-GPSNBZPX.js.map → chunk-TC3H6ZED.js.map} +1 -1
  177. package/dist/{chunk-AG7VY6MJ.cjs → chunk-TEZNWW3R.cjs} +8 -8
  178. package/dist/{chunk-AG7VY6MJ.cjs.map → chunk-TEZNWW3R.cjs.map} +1 -1
  179. package/dist/{chunk-KTCP23W6.js → chunk-THHZMRFU.js} +3 -3
  180. package/dist/{chunk-KTCP23W6.js.map → chunk-THHZMRFU.js.map} +1 -1
  181. package/dist/{chunk-RWQH5EO5.cjs → chunk-TLHQ6JCK.cjs} +11 -11
  182. package/dist/{chunk-RWQH5EO5.cjs.map → chunk-TLHQ6JCK.cjs.map} +1 -1
  183. package/dist/{chunk-CDS2NXGT.cjs → chunk-V5Q6UNUK.cjs} +4 -4
  184. package/dist/{chunk-CDS2NXGT.cjs.map → chunk-V5Q6UNUK.cjs.map} +1 -1
  185. package/dist/{chunk-BT5H3WMI.js → chunk-VBMLJUBE.js} +4 -4
  186. package/dist/{chunk-BT5H3WMI.js.map → chunk-VBMLJUBE.js.map} +1 -1
  187. package/dist/{chunk-UFMPALRH.js → chunk-VGJD4F4H.js} +3 -3
  188. package/dist/{chunk-UFMPALRH.js.map → chunk-VGJD4F4H.js.map} +1 -1
  189. package/dist/{chunk-RN7NNB6I.js → chunk-VJXUBN7J.js} +3 -3
  190. package/dist/{chunk-RN7NNB6I.js.map → chunk-VJXUBN7J.js.map} +1 -1
  191. package/dist/{chunk-TVDQNLGJ.js → chunk-VUHNBLFA.js} +3 -3
  192. package/dist/{chunk-TVDQNLGJ.js.map → chunk-VUHNBLFA.js.map} +1 -1
  193. package/dist/{chunk-OAIMES5S.cjs → chunk-W476ER4X.cjs} +17 -17
  194. package/dist/{chunk-OAIMES5S.cjs.map → chunk-W476ER4X.cjs.map} +1 -1
  195. package/dist/{chunk-4XVJYNOT.js → chunk-WZCES5M6.js} +4 -4
  196. package/dist/{chunk-4XVJYNOT.js.map → chunk-WZCES5M6.js.map} +1 -1
  197. package/dist/{chunk-2EZ2TVYT.cjs → chunk-Y6CVUI6A.cjs} +13 -13
  198. package/dist/{chunk-2EZ2TVYT.cjs.map → chunk-Y6CVUI6A.cjs.map} +1 -1
  199. package/dist/{chunk-4WQUX2B4.cjs → chunk-YCL43UQM.cjs} +12 -12
  200. package/dist/{chunk-4WQUX2B4.cjs.map → chunk-YCL43UQM.cjs.map} +1 -1
  201. package/dist/{chunk-XWN43PZF.cjs → chunk-YZXRD6K6.cjs} +7 -7
  202. package/dist/{chunk-XWN43PZF.cjs.map → chunk-YZXRD6K6.cjs.map} +1 -1
  203. package/dist/{chunk-IRUIWMH6.js → chunk-ZFGLBJYC.js} +3 -3
  204. package/dist/{chunk-IRUIWMH6.js.map → chunk-ZFGLBJYC.js.map} +1 -1
  205. package/dist/{chunk-6EGHZDZI.cjs → chunk-ZNKVOTPB.cjs} +15 -15
  206. package/dist/{chunk-6EGHZDZI.cjs.map → chunk-ZNKVOTPB.cjs.map} +1 -1
  207. package/dist/{chunk-WJP6CRML.js → chunk-ZOEN3ARN.js} +3 -3
  208. package/dist/{chunk-WJP6CRML.js.map → chunk-ZOEN3ARN.js.map} +1 -1
  209. package/dist/{chunk-TWSWD4PU.js → chunk-ZYXRRVR6.js} +3 -3
  210. package/dist/{chunk-TWSWD4PU.js.map → chunk-ZYXRRVR6.js.map} +1 -1
  211. package/dist/combo.cjs +9 -9
  212. package/dist/combo.js +4 -4
  213. package/dist/custom.cjs +10 -10
  214. package/dist/custom.js +5 -5
  215. package/dist/donut.cjs +11 -11
  216. package/dist/donut.js +6 -6
  217. package/dist/dumbbell.cjs +10 -10
  218. package/dist/dumbbell.js +5 -5
  219. package/dist/funnel.cjs +10 -10
  220. package/dist/funnel.js +5 -5
  221. package/dist/gauge.cjs +10 -10
  222. package/dist/gauge.js +5 -5
  223. package/dist/geo.cjs +12 -12
  224. package/dist/geo.js +5 -5
  225. package/dist/graph.cjs +10 -10
  226. package/dist/graph.js +5 -5
  227. package/dist/heatmap.cjs +10 -10
  228. package/dist/heatmap.js +5 -5
  229. package/dist/histogram.cjs +9 -9
  230. package/dist/histogram.js +4 -4
  231. package/dist/horizontal-bar.cjs +9 -9
  232. package/dist/horizontal-bar.js +4 -4
  233. package/dist/index.cjs +180 -180
  234. package/dist/index.d.cts +4 -0
  235. package/dist/index.d.ts +4 -0
  236. package/dist/index.js +92 -92
  237. package/dist/kagi.cjs +10 -10
  238. package/dist/kagi.js +5 -5
  239. package/dist/line.cjs +9 -9
  240. package/dist/line.js +4 -4
  241. package/dist/lines.cjs +10 -10
  242. package/dist/lines.js +5 -5
  243. package/dist/lollipop.cjs +9 -9
  244. package/dist/lollipop.js +4 -4
  245. package/dist/matrix.cjs +10 -10
  246. package/dist/matrix.js +5 -5
  247. package/dist/ohlc.cjs +9 -9
  248. package/dist/ohlc.js +4 -4
  249. package/dist/parallel.cjs +10 -10
  250. package/dist/parallel.js +5 -5
  251. package/dist/pictorialbar.cjs +10 -10
  252. package/dist/pictorialbar.js +5 -5
  253. package/dist/pie.cjs +11 -11
  254. package/dist/pie.js +6 -6
  255. package/dist/polar.cjs +11 -11
  256. package/dist/polar.js +6 -6
  257. package/dist/radar.cjs +10 -10
  258. package/dist/radar.js +5 -5
  259. package/dist/radialbar.cjs +10 -10
  260. package/dist/radialbar.js +5 -5
  261. package/dist/range.cjs +9 -9
  262. package/dist/range.js +4 -4
  263. package/dist/renko.cjs +10 -10
  264. package/dist/renko.js +5 -5
  265. package/dist/sankey.cjs +10 -10
  266. package/dist/sankey.js +5 -5
  267. package/dist/scatter.cjs +9 -9
  268. package/dist/scatter.js +4 -4
  269. package/dist/sparkline.cjs +9 -9
  270. package/dist/sparkline.js +4 -4
  271. package/dist/stacked-bar.cjs +9 -9
  272. package/dist/stacked-bar.js +4 -4
  273. package/dist/step.cjs +10 -10
  274. package/dist/step.js +5 -5
  275. package/dist/sunburst.cjs +11 -11
  276. package/dist/sunburst.js +6 -6
  277. package/dist/themeriver.cjs +10 -10
  278. package/dist/themeriver.js +5 -5
  279. package/dist/tree.cjs +10 -10
  280. package/dist/tree.js +5 -5
  281. package/dist/treemap.cjs +10 -10
  282. package/dist/treemap.js +5 -5
  283. package/dist/volume.cjs +9 -9
  284. package/dist/volume.js +4 -4
  285. package/dist/waterfall.cjs +9 -9
  286. package/dist/waterfall.js +4 -4
  287. package/package.json +1 -1
  288. package/dist/chunk-DX4FBN3I.js.map +0 -1
  289. package/dist/chunk-MYXLKVJE.js.map +0 -1
  290. package/dist/chunk-UMIJYYF3.cjs.map +0 -1
  291. package/dist/chunk-XN6YS55F.cjs.map +0 -1
@@ -1,4 +1,4 @@
1
- import { PathBuilder } from './chunk-DX4FBN3I.js';
1
+ import { PathBuilder } from './chunk-AEQXFDL7.js';
2
2
 
3
3
  // src/utils/slice-path.ts
4
4
  function roundedSlicePath(cx, cy, outerR, innerR, outerStart, outerEnd, innerStart, innerEnd, cornerRadius) {
@@ -122,5 +122,5 @@ function roundedSlicePath(cx, cy, outerR, innerR, outerStart, outerEnd, innerSta
122
122
  }
123
123
 
124
124
  export { roundedSlicePath };
125
- //# sourceMappingURL=chunk-UFMPALRH.js.map
126
- //# sourceMappingURL=chunk-UFMPALRH.js.map
125
+ //# sourceMappingURL=chunk-VGJD4F4H.js.map
126
+ //# sourceMappingURL=chunk-VGJD4F4H.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/slice-path.ts"],"names":[],"mappings":"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","file":"chunk-UFMPALRH.js","sourcesContent":["import { PathBuilder } from '../render/tree'\n\n/**\n * Build a rounded annular sector (pie/donut slice) SVG path string.\n *\n * Supports different angular offsets at inner vs outer radius for uniform\n * pixel-width gaps between slices.\n *\n * @param cx - Center x\n * @param cy - Center y\n * @param outerR - Outer radius\n * @param innerR - Inner radius (0 for full pie, >0 for donut)\n * @param outerStart - Start angle on outer arc (radians)\n * @param outerEnd - End angle on outer arc (radians)\n * @param innerStart - Start angle on inner arc (radians)\n * @param innerEnd - End angle on inner arc (radians)\n * @param cornerRadius - Corner rounding radius in px\n */\nexport function roundedSlicePath(\n cx: number, cy: number,\n outerR: number, innerR: number,\n outerStart: number, outerEnd: number,\n innerStart: number, innerEnd: number,\n cornerRadius: number,\n): string {\n const pb = new PathBuilder()\n const outerSliceAngle = outerEnd - outerStart\n const innerSliceAngle = innerEnd - innerStart\n const radialThickness = outerR - innerR\n const outerArcLen = outerSliceAngle * outerR\n const innerArcLen = innerSliceAngle * innerR\n\n // Separate corner radii for outer and inner edges.\n // Inner corners need aggressive clamping — when innerR is small, the angular\n // span of a corner becomes huge relative to the slice, causing path distortion.\n const outerCr = Math.min(\n cornerRadius,\n radialThickness / 2,\n outerArcLen / 4,\n )\n // Skip inner rounding entirely when inner radius is too small (<20px)\n // — the angular span of any rounding would dominate the inner edge.\n const innerCr = innerR >= 20\n ? Math.min(\n cornerRadius,\n radialThickness / 2,\n innerArcLen / 4,\n innerR * 0.25,\n )\n : 0\n\n if (outerCr < 0.5 && innerCr < 0.5) {\n // No rounding — standard path with per-radius angles\n const x1o = cx + outerR * Math.cos(outerStart)\n const y1o = cy + outerR * Math.sin(outerStart)\n const x2o = cx + outerR * Math.cos(outerEnd)\n const y2o = cy + outerR * Math.sin(outerEnd)\n const x1i = cx + innerR * Math.cos(innerEnd)\n const y1i = cy + innerR * Math.sin(innerEnd)\n const x2i = cx + innerR * Math.cos(innerStart)\n const y2i = cy + innerR * Math.sin(innerStart)\n\n pb.moveTo(x1o, y1o)\n pb.arc(outerR, outerR, 0, outerSliceAngle > Math.PI, true, x2o, y2o)\n pb.lineTo(x1i, y1i)\n if (innerR > 0) {\n pb.arc(innerR, innerR, 0, innerSliceAngle > Math.PI, false, x2i, y2i)\n }\n pb.close()\n return pb.build()\n }\n\n // Angular offsets for rounding on each arc (separate for outer/inner)\n const outerCrAngle = outerCr / outerR\n const innerCrAngle = innerR > 0 && innerCr > 0.5 ? innerCr / innerR : 0\n\n // Outer arc inset by corner angles\n const oa1 = outerStart + outerCrAngle\n const oa2 = outerEnd - outerCrAngle\n // Inner arc inset by corner angles (reverse direction)\n const ia1 = innerEnd - innerCrAngle\n const ia2 = innerStart + innerCrAngle\n\n // -- Corner 1: outer-start (start radial meets outer arc) --\n pb.moveTo(\n cx + (outerR - outerCr) * Math.cos(outerStart),\n cy + (outerR - outerCr) * Math.sin(outerStart),\n )\n if (outerCr >= 0.5) {\n pb.quadTo(\n cx + outerR * Math.cos(outerStart),\n cy + outerR * Math.sin(outerStart),\n cx + outerR * Math.cos(oa1),\n cy + outerR * Math.sin(oa1),\n )\n }\n\n // -- Outer arc from oa1 to oa2 --\n if (oa2 > oa1) {\n pb.arc(outerR, outerR, 0, (oa2 - oa1) > Math.PI, true,\n cx + outerR * Math.cos(oa2),\n cy + outerR * Math.sin(oa2),\n )\n }\n\n // -- Corner 2: outer-end (outer arc meets end radial) --\n if (outerCr >= 0.5) {\n pb.quadTo(\n cx + outerR * Math.cos(outerEnd),\n cy + outerR * Math.sin(outerEnd),\n cx + (outerR - outerCr) * Math.cos(outerEnd),\n cy + (outerR - outerCr) * Math.sin(outerEnd),\n )\n }\n\n // -- Inner edge --\n if (innerCr >= 0.5 && innerR > 0) {\n // Line down to inner-end corner\n pb.lineTo(\n cx + (innerR + innerCr) * Math.cos(innerEnd),\n cy + (innerR + innerCr) * Math.sin(innerEnd),\n )\n\n // Corner 3: inner-end (end radial meets inner arc)\n pb.quadTo(\n cx + innerR * Math.cos(innerEnd),\n cy + innerR * Math.sin(innerEnd),\n cx + innerR * Math.cos(ia1),\n cy + innerR * Math.sin(ia1),\n )\n\n // Inner arc from ia1 to ia2 (reverse)\n if (ia1 > ia2) {\n pb.arc(innerR, innerR, 0, (ia1 - ia2) > Math.PI, false,\n cx + innerR * Math.cos(ia2),\n cy + innerR * Math.sin(ia2),\n )\n }\n\n // Corner 4: inner-start (inner arc meets start radial)\n pb.quadTo(\n cx + innerR * Math.cos(innerStart),\n cy + innerR * Math.sin(innerStart),\n cx + (innerR + innerCr) * Math.cos(innerStart),\n cy + (innerR + innerCr) * Math.sin(innerStart),\n )\n } else if (innerR > 0) {\n // No inner rounding — sharp inner corners\n pb.lineTo(\n cx + innerR * Math.cos(innerEnd),\n cy + innerR * Math.sin(innerEnd),\n )\n pb.arc(innerR, innerR, 0, innerSliceAngle > Math.PI, false,\n cx + innerR * Math.cos(innerStart),\n cy + innerR * Math.sin(innerStart),\n )\n }\n\n pb.close()\n return pb.build()\n}\n\n/**\n * Compute angular offsets for a uniform pixel gap at different radii.\n * Returns the padded start/end angles for both outer and inner arcs.\n */\nexport function uniformGapAngles(\n startAngle: number, endAngle: number,\n outerR: number, innerR: number,\n gapPx: number,\n): { outerStart: number; outerEnd: number; innerStart: number; innerEnd: number } {\n const halfGap = gapPx / 2\n const outerPad = halfGap / outerR\n const innerPad = innerR > 0 ? halfGap / innerR : 0\n return {\n outerStart: startAngle + outerPad,\n outerEnd: endAngle - outerPad,\n innerStart: startAngle + innerPad,\n innerEnd: endAngle - innerPad,\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/utils/slice-path.ts"],"names":[],"mappings":"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","file":"chunk-VGJD4F4H.js","sourcesContent":["import { PathBuilder } from '../render/tree'\n\n/**\n * Build a rounded annular sector (pie/donut slice) SVG path string.\n *\n * Supports different angular offsets at inner vs outer radius for uniform\n * pixel-width gaps between slices.\n *\n * @param cx - Center x\n * @param cy - Center y\n * @param outerR - Outer radius\n * @param innerR - Inner radius (0 for full pie, >0 for donut)\n * @param outerStart - Start angle on outer arc (radians)\n * @param outerEnd - End angle on outer arc (radians)\n * @param innerStart - Start angle on inner arc (radians)\n * @param innerEnd - End angle on inner arc (radians)\n * @param cornerRadius - Corner rounding radius in px\n */\nexport function roundedSlicePath(\n cx: number, cy: number,\n outerR: number, innerR: number,\n outerStart: number, outerEnd: number,\n innerStart: number, innerEnd: number,\n cornerRadius: number,\n): string {\n const pb = new PathBuilder()\n const outerSliceAngle = outerEnd - outerStart\n const innerSliceAngle = innerEnd - innerStart\n const radialThickness = outerR - innerR\n const outerArcLen = outerSliceAngle * outerR\n const innerArcLen = innerSliceAngle * innerR\n\n // Separate corner radii for outer and inner edges.\n // Inner corners need aggressive clamping — when innerR is small, the angular\n // span of a corner becomes huge relative to the slice, causing path distortion.\n const outerCr = Math.min(\n cornerRadius,\n radialThickness / 2,\n outerArcLen / 4,\n )\n // Skip inner rounding entirely when inner radius is too small (<20px)\n // — the angular span of any rounding would dominate the inner edge.\n const innerCr = innerR >= 20\n ? Math.min(\n cornerRadius,\n radialThickness / 2,\n innerArcLen / 4,\n innerR * 0.25,\n )\n : 0\n\n if (outerCr < 0.5 && innerCr < 0.5) {\n // No rounding — standard path with per-radius angles\n const x1o = cx + outerR * Math.cos(outerStart)\n const y1o = cy + outerR * Math.sin(outerStart)\n const x2o = cx + outerR * Math.cos(outerEnd)\n const y2o = cy + outerR * Math.sin(outerEnd)\n const x1i = cx + innerR * Math.cos(innerEnd)\n const y1i = cy + innerR * Math.sin(innerEnd)\n const x2i = cx + innerR * Math.cos(innerStart)\n const y2i = cy + innerR * Math.sin(innerStart)\n\n pb.moveTo(x1o, y1o)\n pb.arc(outerR, outerR, 0, outerSliceAngle > Math.PI, true, x2o, y2o)\n pb.lineTo(x1i, y1i)\n if (innerR > 0) {\n pb.arc(innerR, innerR, 0, innerSliceAngle > Math.PI, false, x2i, y2i)\n }\n pb.close()\n return pb.build()\n }\n\n // Angular offsets for rounding on each arc (separate for outer/inner)\n const outerCrAngle = outerCr / outerR\n const innerCrAngle = innerR > 0 && innerCr > 0.5 ? innerCr / innerR : 0\n\n // Outer arc inset by corner angles\n const oa1 = outerStart + outerCrAngle\n const oa2 = outerEnd - outerCrAngle\n // Inner arc inset by corner angles (reverse direction)\n const ia1 = innerEnd - innerCrAngle\n const ia2 = innerStart + innerCrAngle\n\n // -- Corner 1: outer-start (start radial meets outer arc) --\n pb.moveTo(\n cx + (outerR - outerCr) * Math.cos(outerStart),\n cy + (outerR - outerCr) * Math.sin(outerStart),\n )\n if (outerCr >= 0.5) {\n pb.quadTo(\n cx + outerR * Math.cos(outerStart),\n cy + outerR * Math.sin(outerStart),\n cx + outerR * Math.cos(oa1),\n cy + outerR * Math.sin(oa1),\n )\n }\n\n // -- Outer arc from oa1 to oa2 --\n if (oa2 > oa1) {\n pb.arc(outerR, outerR, 0, (oa2 - oa1) > Math.PI, true,\n cx + outerR * Math.cos(oa2),\n cy + outerR * Math.sin(oa2),\n )\n }\n\n // -- Corner 2: outer-end (outer arc meets end radial) --\n if (outerCr >= 0.5) {\n pb.quadTo(\n cx + outerR * Math.cos(outerEnd),\n cy + outerR * Math.sin(outerEnd),\n cx + (outerR - outerCr) * Math.cos(outerEnd),\n cy + (outerR - outerCr) * Math.sin(outerEnd),\n )\n }\n\n // -- Inner edge --\n if (innerCr >= 0.5 && innerR > 0) {\n // Line down to inner-end corner\n pb.lineTo(\n cx + (innerR + innerCr) * Math.cos(innerEnd),\n cy + (innerR + innerCr) * Math.sin(innerEnd),\n )\n\n // Corner 3: inner-end (end radial meets inner arc)\n pb.quadTo(\n cx + innerR * Math.cos(innerEnd),\n cy + innerR * Math.sin(innerEnd),\n cx + innerR * Math.cos(ia1),\n cy + innerR * Math.sin(ia1),\n )\n\n // Inner arc from ia1 to ia2 (reverse)\n if (ia1 > ia2) {\n pb.arc(innerR, innerR, 0, (ia1 - ia2) > Math.PI, false,\n cx + innerR * Math.cos(ia2),\n cy + innerR * Math.sin(ia2),\n )\n }\n\n // Corner 4: inner-start (inner arc meets start radial)\n pb.quadTo(\n cx + innerR * Math.cos(innerStart),\n cy + innerR * Math.sin(innerStart),\n cx + (innerR + innerCr) * Math.cos(innerStart),\n cy + (innerR + innerCr) * Math.sin(innerStart),\n )\n } else if (innerR > 0) {\n // No inner rounding — sharp inner corners\n pb.lineTo(\n cx + innerR * Math.cos(innerEnd),\n cy + innerR * Math.sin(innerEnd),\n )\n pb.arc(innerR, innerR, 0, innerSliceAngle > Math.PI, false,\n cx + innerR * Math.cos(innerStart),\n cy + innerR * Math.sin(innerStart),\n )\n }\n\n pb.close()\n return pb.build()\n}\n\n/**\n * Compute angular offsets for a uniform pixel gap at different radii.\n * Returns the padded start/end angles for both outer and inner arcs.\n */\nexport function uniformGapAngles(\n startAngle: number, endAngle: number,\n outerR: number, innerR: number,\n gapPx: number,\n): { outerStart: number; outerEnd: number; innerStart: number; innerEnd: number } {\n const halfGap = gapPx / 2\n const outerPad = halfGap / outerR\n const innerPad = innerR > 0 ? halfGap / innerR : 0\n return {\n outerStart: startAngle + outerPad,\n outerEnd: endAngle - outerPad,\n innerStart: startAngle + innerPad,\n innerEnd: endAngle - innerPad,\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { PathBuilder, path, circle, CSS_PREFIX, group, prepareData } from './chunk-DX4FBN3I.js';
1
+ import { PathBuilder, path, circle, CSS_PREFIX, group, prepareData } from './chunk-AEQXFDL7.js';
2
2
 
3
3
  // src/charts/range/range-type.ts
4
4
  var rangeChartType = {
@@ -151,5 +151,5 @@ function buildLinePath(values, xScale, yScale) {
151
151
  }
152
152
 
153
153
  export { rangeChartType };
154
- //# sourceMappingURL=chunk-RN7NNB6I.js.map
155
- //# sourceMappingURL=chunk-RN7NNB6I.js.map
154
+ //# sourceMappingURL=chunk-VJXUBN7J.js.map
155
+ //# sourceMappingURL=chunk-VJXUBN7J.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/charts/range/range-type.ts"],"names":[],"mappings":"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","file":"chunk-RN7NNB6I.js","sourcesContent":["import type {\n ChartTypePlugin, ChartData, ResolvedOptions, PreparedData,\n RenderContext, RenderNode, HitResult, ScaleType,\n} from '../../types'\nimport { CSS_PREFIX } from '../../constants'\nimport { prepareData } from '../../data/prepare'\nimport { group, path, circle } from '../../render/tree'\nimport { PathBuilder } from '../../render/tree'\n\nexport interface RangeOptions {\n /** Upper and lower bound arrays. */\n range?: {\n upper: number[]\n lower: number[]\n }\n /** Band fill color. Default uses series color with opacity. */\n bandColor?: string\n /** Band fill opacity. Default 0.2. */\n bandOpacity?: number\n /** Show center line (series[0].values). Default true. */\n showCenter?: boolean\n /** Show data points on center line. Default false. */\n showPoints?: boolean\n}\n\n/**\n * Range / Band chart — shaded area between upper and lower bounds.\n *\n * Used for: Bollinger bands, confidence intervals, forecast ranges,\n * bid-ask spread visualization.\n */\nexport const rangeChartType: ChartTypePlugin = {\n type: 'range',\n\n getScaleTypes(): { x: ScaleType; y: ScaleType } {\n return { x: 'categorical', y: 'linear' }\n },\n\n prepareData(data: ChartData, options: ResolvedOptions): PreparedData {\n const opts = options as unknown as RangeOptions\n const range = opts.range\n const prepared = prepareData(data, options)\n\n if (range) {\n let yMin = prepared.bounds.yMin\n let yMax = prepared.bounds.yMax\n for (let i = 0; i < range.upper.length; i++) {\n const u = range.upper[i]!\n const l = range.lower[i]!\n if (!isNaN(u) && u > yMax) yMax = u\n if (!isNaN(l) && l < yMin) yMin = l\n }\n prepared.bounds.yMin = yMin\n prepared.bounds.yMax = yMax\n }\n\n return prepared\n },\n\n render(ctx: RenderContext): RenderNode[] {\n const { data, xScale, yScale, options, theme } = ctx\n const nodes: RenderNode[] = []\n\n const opts = options as unknown as RangeOptions\n const range = opts.range\n if (!range) return nodes\n\n const series = data.series[0]\n if (!series) return nodes\n\n const showCenter = opts.showCenter ?? true\n const showPoints = opts.showPoints ?? false\n const bandOpacity = opts.bandOpacity ?? 0.2\n\n const seriesNodes: RenderNode[] = []\n\n // Build band polygon: upper path forward, lower path backward\n const pb = new PathBuilder()\n const n = range.upper.length\n\n // Upper path (left to right) — skip NaN\n let bandStarted = false\n for (let i = 0; i < n; i++) {\n if (isNaN(range.upper[i]!)) continue\n const x = xScale.map(i)\n const y = yScale.map(range.upper[i]!)\n if (!bandStarted) { pb.moveTo(x, y); bandStarted = true }\n else pb.lineTo(x, y)\n }\n\n // Lower path (right to left) — skip NaN\n for (let i = n - 1; i >= 0; i--) {\n if (isNaN(range.lower[i]!)) continue\n const x = xScale.map(i)\n const y = yScale.map(range.lower[i]!)\n pb.lineTo(x, y)\n }\n if (bandStarted) pb.close()\n\n seriesNodes.push(path(pb.build(), {\n class: 'chartts-range-band',\n fill: opts.bandColor ?? series.color,\n fillOpacity: bandOpacity,\n 'data-series': 0,\n }))\n\n // Upper bound line\n const upperPath = buildLinePath(range.upper, xScale, yScale)\n seriesNodes.push(path(upperPath, {\n class: 'chartts-range-bound',\n stroke: series.color,\n strokeWidth: 1,\n strokeDasharray: '4,3',\n opacity: 0.6,\n 'data-series': 0,\n }))\n\n // Lower bound line\n const lowerPath = buildLinePath(range.lower, xScale, yScale)\n seriesNodes.push(path(lowerPath, {\n class: 'chartts-range-bound',\n stroke: series.color,\n strokeWidth: 1,\n strokeDasharray: '4,3',\n opacity: 0.6,\n 'data-series': 0,\n }))\n\n // Center line\n if (showCenter && series.values.length > 0) {\n const centerPath = buildLinePath(series.values, xScale, yScale)\n seriesNodes.push(path(centerPath, {\n class: 'chartts-range-center',\n stroke: series.color,\n strokeWidth: theme.lineWidth,\n 'data-series': 0,\n }))\n\n if (showPoints) {\n for (let i = 0; i < series.values.length; i++) {\n if (isNaN(series.values[i]!)) continue\n const x = xScale.map(i)\n const y = yScale.map(series.values[i]!)\n seriesNodes.push(circle(x, y, theme.pointRadius, {\n class: 'chartts-point',\n fill: series.color,\n stroke: `var(${CSS_PREFIX}-bg, #fff)`,\n strokeWidth: 2,\n 'data-series': 0,\n 'data-index': i,\n tabindex: 0,\n role: 'img',\n ariaLabel: `${data.labels[i] ?? i}: ${series.values[i]} [${range.lower[i]}–${range.upper[i]}]`,\n }))\n }\n }\n }\n\n nodes.push(group(seriesNodes, {\n class: 'chartts-series chartts-series-0',\n 'data-series-name': series.name,\n }))\n\n return nodes\n },\n\n hitTest(ctx: RenderContext, mx: number, my: number): HitResult | null {\n const { data, xScale, yScale } = ctx\n const series = data.series[0]\n if (!series) return null\n\n let best: HitResult | null = null\n let bestDist = Infinity\n\n for (let i = 0; i < series.values.length; i++) {\n if (isNaN(series.values[i]!)) continue\n const x = xScale.map(i)\n const y = yScale.map(series.values[i]!)\n const dist = Math.sqrt((mx - x) ** 2 + (my - y) ** 2)\n if (dist < bestDist) {\n bestDist = dist\n best = { seriesIndex: 0, pointIndex: i, distance: dist, x, y }\n }\n }\n\n return best && best.distance < 30 ? best : null\n },\n}\n\nfunction buildLinePath(\n values: number[],\n xScale: { map(v: number | string | Date): number },\n yScale: { map(v: number | string | Date): number },\n): string {\n if (values.length === 0) return ''\n const pb = new PathBuilder()\n let started = false\n for (let i = 0; i < values.length; i++) {\n if (isNaN(values[i]!)) { started = false; continue }\n const x = xScale.map(i)\n const y = yScale.map(values[i]!)\n if (!started) { pb.moveTo(x, y); started = true }\n else pb.lineTo(x, y)\n }\n return pb.build()\n}\n"]}
1
+ {"version":3,"sources":["../src/charts/range/range-type.ts"],"names":[],"mappings":"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","file":"chunk-VJXUBN7J.js","sourcesContent":["import type {\n ChartTypePlugin, ChartData, ResolvedOptions, PreparedData,\n RenderContext, RenderNode, HitResult, ScaleType,\n} from '../../types'\nimport { CSS_PREFIX } from '../../constants'\nimport { prepareData } from '../../data/prepare'\nimport { group, path, circle } from '../../render/tree'\nimport { PathBuilder } from '../../render/tree'\n\nexport interface RangeOptions {\n /** Upper and lower bound arrays. */\n range?: {\n upper: number[]\n lower: number[]\n }\n /** Band fill color. Default uses series color with opacity. */\n bandColor?: string\n /** Band fill opacity. Default 0.2. */\n bandOpacity?: number\n /** Show center line (series[0].values). Default true. */\n showCenter?: boolean\n /** Show data points on center line. Default false. */\n showPoints?: boolean\n}\n\n/**\n * Range / Band chart — shaded area between upper and lower bounds.\n *\n * Used for: Bollinger bands, confidence intervals, forecast ranges,\n * bid-ask spread visualization.\n */\nexport const rangeChartType: ChartTypePlugin = {\n type: 'range',\n\n getScaleTypes(): { x: ScaleType; y: ScaleType } {\n return { x: 'categorical', y: 'linear' }\n },\n\n prepareData(data: ChartData, options: ResolvedOptions): PreparedData {\n const opts = options as unknown as RangeOptions\n const range = opts.range\n const prepared = prepareData(data, options)\n\n if (range) {\n let yMin = prepared.bounds.yMin\n let yMax = prepared.bounds.yMax\n for (let i = 0; i < range.upper.length; i++) {\n const u = range.upper[i]!\n const l = range.lower[i]!\n if (!isNaN(u) && u > yMax) yMax = u\n if (!isNaN(l) && l < yMin) yMin = l\n }\n prepared.bounds.yMin = yMin\n prepared.bounds.yMax = yMax\n }\n\n return prepared\n },\n\n render(ctx: RenderContext): RenderNode[] {\n const { data, xScale, yScale, options, theme } = ctx\n const nodes: RenderNode[] = []\n\n const opts = options as unknown as RangeOptions\n const range = opts.range\n if (!range) return nodes\n\n const series = data.series[0]\n if (!series) return nodes\n\n const showCenter = opts.showCenter ?? true\n const showPoints = opts.showPoints ?? false\n const bandOpacity = opts.bandOpacity ?? 0.2\n\n const seriesNodes: RenderNode[] = []\n\n // Build band polygon: upper path forward, lower path backward\n const pb = new PathBuilder()\n const n = range.upper.length\n\n // Upper path (left to right) — skip NaN\n let bandStarted = false\n for (let i = 0; i < n; i++) {\n if (isNaN(range.upper[i]!)) continue\n const x = xScale.map(i)\n const y = yScale.map(range.upper[i]!)\n if (!bandStarted) { pb.moveTo(x, y); bandStarted = true }\n else pb.lineTo(x, y)\n }\n\n // Lower path (right to left) — skip NaN\n for (let i = n - 1; i >= 0; i--) {\n if (isNaN(range.lower[i]!)) continue\n const x = xScale.map(i)\n const y = yScale.map(range.lower[i]!)\n pb.lineTo(x, y)\n }\n if (bandStarted) pb.close()\n\n seriesNodes.push(path(pb.build(), {\n class: 'chartts-range-band',\n fill: opts.bandColor ?? series.color,\n fillOpacity: bandOpacity,\n 'data-series': 0,\n }))\n\n // Upper bound line\n const upperPath = buildLinePath(range.upper, xScale, yScale)\n seriesNodes.push(path(upperPath, {\n class: 'chartts-range-bound',\n stroke: series.color,\n strokeWidth: 1,\n strokeDasharray: '4,3',\n opacity: 0.6,\n 'data-series': 0,\n }))\n\n // Lower bound line\n const lowerPath = buildLinePath(range.lower, xScale, yScale)\n seriesNodes.push(path(lowerPath, {\n class: 'chartts-range-bound',\n stroke: series.color,\n strokeWidth: 1,\n strokeDasharray: '4,3',\n opacity: 0.6,\n 'data-series': 0,\n }))\n\n // Center line\n if (showCenter && series.values.length > 0) {\n const centerPath = buildLinePath(series.values, xScale, yScale)\n seriesNodes.push(path(centerPath, {\n class: 'chartts-range-center',\n stroke: series.color,\n strokeWidth: theme.lineWidth,\n 'data-series': 0,\n }))\n\n if (showPoints) {\n for (let i = 0; i < series.values.length; i++) {\n if (isNaN(series.values[i]!)) continue\n const x = xScale.map(i)\n const y = yScale.map(series.values[i]!)\n seriesNodes.push(circle(x, y, theme.pointRadius, {\n class: 'chartts-point',\n fill: series.color,\n stroke: `var(${CSS_PREFIX}-bg, #fff)`,\n strokeWidth: 2,\n 'data-series': 0,\n 'data-index': i,\n tabindex: 0,\n role: 'img',\n ariaLabel: `${data.labels[i] ?? i}: ${series.values[i]} [${range.lower[i]}–${range.upper[i]}]`,\n }))\n }\n }\n }\n\n nodes.push(group(seriesNodes, {\n class: 'chartts-series chartts-series-0',\n 'data-series-name': series.name,\n }))\n\n return nodes\n },\n\n hitTest(ctx: RenderContext, mx: number, my: number): HitResult | null {\n const { data, xScale, yScale } = ctx\n const series = data.series[0]\n if (!series) return null\n\n let best: HitResult | null = null\n let bestDist = Infinity\n\n for (let i = 0; i < series.values.length; i++) {\n if (isNaN(series.values[i]!)) continue\n const x = xScale.map(i)\n const y = yScale.map(series.values[i]!)\n const dist = Math.sqrt((mx - x) ** 2 + (my - y) ** 2)\n if (dist < bestDist) {\n bestDist = dist\n best = { seriesIndex: 0, pointIndex: i, distance: dist, x, y }\n }\n }\n\n return best && best.distance < 30 ? best : null\n },\n}\n\nfunction buildLinePath(\n values: number[],\n xScale: { map(v: number | string | Date): number },\n yScale: { map(v: number | string | Date): number },\n): string {\n if (values.length === 0) return ''\n const pb = new PathBuilder()\n let started = false\n for (let i = 0; i < values.length; i++) {\n if (isNaN(values[i]!)) { started = false; continue }\n const x = xScale.map(i)\n const y = yScale.map(values[i]!)\n if (!started) { pb.moveTo(x, y); started = true }\n else pb.lineTo(x, y)\n }\n return pb.build()\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { getBandwidth } from './chunk-E6PR75X7.js';
2
- import { rect, group, prepareData } from './chunk-DX4FBN3I.js';
2
+ import { rect, group, prepareData } from './chunk-AEQXFDL7.js';
3
3
 
4
4
  // src/charts/volume/volume-type.ts
5
5
  var volumeChartType = {
@@ -75,5 +75,5 @@ var volumeChartType = {
75
75
  };
76
76
 
77
77
  export { volumeChartType };
78
- //# sourceMappingURL=chunk-TVDQNLGJ.js.map
79
- //# sourceMappingURL=chunk-TVDQNLGJ.js.map
78
+ //# sourceMappingURL=chunk-VUHNBLFA.js.map
79
+ //# sourceMappingURL=chunk-VUHNBLFA.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/charts/volume/volume-type.ts"],"names":[],"mappings":"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","file":"chunk-TVDQNLGJ.js","sourcesContent":["import type {\n ChartTypePlugin, ChartData, ResolvedOptions, PreparedData,\n RenderContext, RenderNode, HitResult, ScaleType,\n} from '../../types'\nimport { prepareData } from '../../data/prepare'\nimport { group, rect } from '../../render/tree'\nimport { getBandwidth } from '../../utils/scale'\n\nexport interface VolumeOptions {\n /** Explicit direction per bar: 'up' or 'down'. Auto-detected if omitted. */\n directions?: ('up' | 'down')[]\n /** Up color (volume on up-price day). Default green. */\n upColor?: string\n /** Down color (volume on down-price day). Default red. */\n downColor?: string\n /** Gap between bars as fraction of bandwidth. Default 0.2. */\n gap?: number\n}\n\n/**\n * Volume chart — vertical bars colored by price direction.\n *\n * Essential companion to candlestick/OHLC price charts.\n * Green bars = volume on up days, red bars = volume on down days.\n */\nexport const volumeChartType: ChartTypePlugin = {\n type: 'volume',\n\n getScaleTypes(): { x: ScaleType; y: ScaleType } {\n return { x: 'categorical', y: 'linear' }\n },\n\n prepareData(data: ChartData, options: ResolvedOptions): PreparedData {\n const prepared = prepareData(data, options)\n // Volume always starts at zero\n if (prepared.bounds.yMin > 0) prepared.bounds.yMin = 0\n return prepared\n },\n\n render(ctx: RenderContext): RenderNode[] {\n const { data, xScale, yScale, area, options } = ctx\n const nodes: RenderNode[] = []\n\n const series = data.series[0]\n if (!series) return nodes\n\n const opts = options as unknown as VolumeOptions\n const upColor = opts.upColor ?? 'var(--color-emerald-500, #10b981)'\n const downColor = opts.downColor ?? 'var(--color-red-500, #ef4444)'\n const gapFrac = opts.gap ?? 0.2\n\n const bw = getBandwidth(xScale)\n const barWidth = bw * (1 - gapFrac)\n const baseline = area.y + area.height\n\n // Auto-detect direction: current value vs previous\n const directions = opts.directions ?? series.values.map((v, i) =>\n i === 0 ? 'up' as const : (v >= series.values[i - 1]! ? 'up' as const : 'down' as const),\n )\n\n const barNodes: RenderNode[] = []\n\n for (let i = 0; i < series.values.length; i++) {\n const val = series.values[i]!\n const cx = xScale.map(i)\n const yTop = yScale.map(val)\n const barHeight = Math.max(baseline - yTop, 1)\n const dir = directions[i] ?? 'up'\n const color = dir === 'up' ? upColor : downColor\n\n barNodes.push(rect(cx - barWidth / 2, yTop, barWidth, barHeight, {\n rx: 1, ry: 1,\n class: 'chartts-volume-bar',\n fill: color,\n fillOpacity: 0.85,\n 'data-series': 0,\n 'data-index': i,\n tabindex: 0,\n role: 'img',\n ariaLabel: `${data.labels[i] ?? i}: ${val} (${dir})`,\n }))\n }\n\n nodes.push(group(barNodes, {\n class: 'chartts-series chartts-series-0',\n 'data-series-name': series.name,\n }))\n\n return nodes\n },\n\n hitTest(ctx: RenderContext, mx: number, my: number): HitResult | null {\n const { data, xScale, yScale, area, options } = ctx\n const series = data.series[0]\n if (!series) return null\n\n const opts = options as unknown as VolumeOptions\n const gapFrac = opts.gap ?? 0.2\n const bw = getBandwidth(xScale)\n const barWidth = bw * (1 - gapFrac)\n const baseline = area.y + area.height\n\n for (let i = 0; i < series.values.length; i++) {\n const cx = xScale.map(i)\n const yTop = yScale.map(series.values[i]!)\n if (mx >= cx - barWidth / 2 && mx <= cx + barWidth / 2 && my >= yTop && my <= baseline) {\n return { seriesIndex: 0, pointIndex: i, distance: Math.abs(mx - cx), x: cx, y: yTop }\n }\n }\n\n return null\n },\n}\n"]}
1
+ {"version":3,"sources":["../src/charts/volume/volume-type.ts"],"names":[],"mappings":";;;;AAyBO,IAAM,eAAA,GAAmC;AAAA,EAC9C,IAAA,EAAM,QAAA;AAAA,EAEN,aAAA,GAAgD;AAC9C,IAAA,OAAO,EAAE,CAAA,EAAG,aAAA,EAAe,CAAA,EAAG,QAAA,EAAS;AAAA,EACzC,CAAA;AAAA,EAEA,WAAA,CAAY,MAAiB,OAAA,EAAwC;AACnE,IAAA,MAAM,QAAA,GAAW,WAAA,CAAY,IAAA,EAAM,OAAO,CAAA;AAE1C,IAAA,IAAI,SAAS,MAAA,CAAO,IAAA,GAAO,CAAA,EAAG,QAAA,CAAS,OAAO,IAAA,GAAO,CAAA;AACrD,IAAA,OAAO,QAAA;AAAA,EACT,CAAA;AAAA,EAEA,OAAO,GAAA,EAAkC;AACvC,IAAA,MAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,MAAA,EAAQ,IAAA,EAAM,SAAQ,GAAI,GAAA;AAChD,IAAA,MAAM,QAAsB,EAAC;AAE7B,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA;AAC5B,IAAA,IAAI,CAAC,QAAQ,OAAO,KAAA;AAEpB,IAAA,MAAM,IAAA,GAAO,OAAA;AACb,IAAA,MAAM,OAAA,GAAU,KAAK,OAAA,IAAW,mCAAA;AAChC,IAAA,MAAM,SAAA,GAAY,KAAK,SAAA,IAAa,+BAAA;AACpC,IAAA,MAAM,OAAA,GAAU,KAAK,GAAA,IAAO,GAAA;AAE5B,IAAA,MAAM,EAAA,GAAK,aAAa,MAAM,CAAA;AAC9B,IAAA,MAAM,QAAA,GAAW,MAAM,CAAA,GAAI,OAAA,CAAA;AAC3B,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,CAAA,GAAI,IAAA,CAAK,MAAA;AAG/B,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,UAAA,IAAc,MAAA,CAAO,MAAA,CAAO,GAAA;AAAA,MAAI,CAAC,CAAA,EAAG,CAAA,KAC1D,CAAA,KAAM,CAAA,GAAI,IAAA,GAAiB,CAAA,IAAK,MAAA,CAAO,MAAA,CAAO,CAAA,GAAI,CAAC,CAAA,GAAK,IAAA,GAAgB;AAAA,KAC1E;AAEA,IAAA,MAAM,WAAyB,EAAC;AAEhC,IAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AAC7C,MAAA,MAAM,GAAA,GAAM,MAAA,CAAO,MAAA,CAAO,CAAC,CAAA;AAC3B,MAAA,MAAM,EAAA,GAAK,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA;AACvB,MAAA,MAAM,IAAA,GAAO,MAAA,CAAO,GAAA,CAAI,GAAG,CAAA;AAC3B,MAAA,MAAM,SAAA,GAAY,IAAA,CAAK,GAAA,CAAI,QAAA,GAAW,MAAM,CAAC,CAAA;AAC7C,MAAA,MAAM,GAAA,GAAM,UAAA,CAAW,CAAC,CAAA,IAAK,IAAA;AAC7B,MAAA,MAAM,KAAA,GAAQ,GAAA,KAAQ,IAAA,GAAO,OAAA,GAAU,SAAA;AAEvC,MAAA,QAAA,CAAS,KAAK,IAAA,CAAK,EAAA,GAAK,WAAW,CAAA,EAAG,IAAA,EAAM,UAAU,SAAA,EAAW;AAAA,QAC/D,EAAA,EAAI,CAAA;AAAA,QAAG,EAAA,EAAI,CAAA;AAAA,QACX,KAAA,EAAO,oBAAA;AAAA,QACP,IAAA,EAAM,KAAA;AAAA,QACN,WAAA,EAAa,IAAA;AAAA,QACb,aAAA,EAAe,CAAA;AAAA,QACf,YAAA,EAAc,CAAA;AAAA,QACd,QAAA,EAAU,CAAA;AAAA,QACV,IAAA,EAAM,KAAA;AAAA,QACN,SAAA,EAAW,CAAA,EAAG,IAAA,CAAK,MAAA,CAAO,CAAC,KAAK,CAAC,CAAA,EAAA,EAAK,GAAG,CAAA,EAAA,EAAK,GAAG,CAAA,CAAA;AAAA,OAClD,CAAC,CAAA;AAAA,IACJ;AAEA,IAAA,KAAA,CAAM,IAAA,CAAK,MAAM,QAAA,EAAU;AAAA,MACzB,KAAA,EAAO,iCAAA;AAAA,MACP,oBAAoB,MAAA,CAAO;AAAA,KAC5B,CAAC,CAAA;AAEF,IAAA,OAAO,KAAA;AAAA,EACT,CAAA;AAAA,EAEA,OAAA,CAAQ,GAAA,EAAoB,EAAA,EAAY,EAAA,EAA8B;AACpE,IAAA,MAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,MAAA,EAAQ,IAAA,EAAM,SAAQ,GAAI,GAAA;AAChD,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA;AAC5B,IAAA,IAAI,CAAC,QAAQ,OAAO,IAAA;AAEpB,IAAA,MAAM,IAAA,GAAO,OAAA;AACb,IAAA,MAAM,OAAA,GAAU,KAAK,GAAA,IAAO,GAAA;AAC5B,IAAA,MAAM,EAAA,GAAK,aAAa,MAAM,CAAA;AAC9B,IAAA,MAAM,QAAA,GAAW,MAAM,CAAA,GAAI,OAAA,CAAA;AAC3B,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,CAAA,GAAI,IAAA,CAAK,MAAA;AAE/B,IAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AAC7C,MAAA,MAAM,EAAA,GAAK,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA;AACvB,MAAA,MAAM,OAAO,MAAA,CAAO,GAAA,CAAI,MAAA,CAAO,MAAA,CAAO,CAAC,CAAE,CAAA;AACzC,MAAA,IAAI,EAAA,IAAM,EAAA,GAAK,QAAA,GAAW,CAAA,IAAK,EAAA,IAAM,EAAA,GAAK,QAAA,GAAW,CAAA,IAAK,EAAA,IAAM,IAAA,IAAQ,EAAA,IAAM,QAAA,EAAU;AACtF,QAAA,OAAO,EAAE,WAAA,EAAa,CAAA,EAAG,UAAA,EAAY,GAAG,QAAA,EAAU,IAAA,CAAK,GAAA,CAAI,EAAA,GAAK,EAAE,CAAA,EAAG,CAAA,EAAG,EAAA,EAAI,GAAG,IAAA,EAAK;AAAA,MACtF;AAAA,IACF;AAEA,IAAA,OAAO,IAAA;AAAA,EACT;AACF","file":"chunk-VUHNBLFA.js","sourcesContent":["import type {\n ChartTypePlugin, ChartData, ResolvedOptions, PreparedData,\n RenderContext, RenderNode, HitResult, ScaleType,\n} from '../../types'\nimport { prepareData } from '../../data/prepare'\nimport { group, rect } from '../../render/tree'\nimport { getBandwidth } from '../../utils/scale'\n\nexport interface VolumeOptions {\n /** Explicit direction per bar: 'up' or 'down'. Auto-detected if omitted. */\n directions?: ('up' | 'down')[]\n /** Up color (volume on up-price day). Default green. */\n upColor?: string\n /** Down color (volume on down-price day). Default red. */\n downColor?: string\n /** Gap between bars as fraction of bandwidth. Default 0.2. */\n gap?: number\n}\n\n/**\n * Volume chart — vertical bars colored by price direction.\n *\n * Essential companion to candlestick/OHLC price charts.\n * Green bars = volume on up days, red bars = volume on down days.\n */\nexport const volumeChartType: ChartTypePlugin = {\n type: 'volume',\n\n getScaleTypes(): { x: ScaleType; y: ScaleType } {\n return { x: 'categorical', y: 'linear' }\n },\n\n prepareData(data: ChartData, options: ResolvedOptions): PreparedData {\n const prepared = prepareData(data, options)\n // Volume always starts at zero\n if (prepared.bounds.yMin > 0) prepared.bounds.yMin = 0\n return prepared\n },\n\n render(ctx: RenderContext): RenderNode[] {\n const { data, xScale, yScale, area, options } = ctx\n const nodes: RenderNode[] = []\n\n const series = data.series[0]\n if (!series) return nodes\n\n const opts = options as unknown as VolumeOptions\n const upColor = opts.upColor ?? 'var(--color-emerald-500, #10b981)'\n const downColor = opts.downColor ?? 'var(--color-red-500, #ef4444)'\n const gapFrac = opts.gap ?? 0.2\n\n const bw = getBandwidth(xScale)\n const barWidth = bw * (1 - gapFrac)\n const baseline = area.y + area.height\n\n // Auto-detect direction: current value vs previous\n const directions = opts.directions ?? series.values.map((v, i) =>\n i === 0 ? 'up' as const : (v >= series.values[i - 1]! ? 'up' as const : 'down' as const),\n )\n\n const barNodes: RenderNode[] = []\n\n for (let i = 0; i < series.values.length; i++) {\n const val = series.values[i]!\n const cx = xScale.map(i)\n const yTop = yScale.map(val)\n const barHeight = Math.max(baseline - yTop, 1)\n const dir = directions[i] ?? 'up'\n const color = dir === 'up' ? upColor : downColor\n\n barNodes.push(rect(cx - barWidth / 2, yTop, barWidth, barHeight, {\n rx: 1, ry: 1,\n class: 'chartts-volume-bar',\n fill: color,\n fillOpacity: 0.85,\n 'data-series': 0,\n 'data-index': i,\n tabindex: 0,\n role: 'img',\n ariaLabel: `${data.labels[i] ?? i}: ${val} (${dir})`,\n }))\n }\n\n nodes.push(group(barNodes, {\n class: 'chartts-series chartts-series-0',\n 'data-series-name': series.name,\n }))\n\n return nodes\n },\n\n hitTest(ctx: RenderContext, mx: number, my: number): HitResult | null {\n const { data, xScale, yScale, area, options } = ctx\n const series = data.series[0]\n if (!series) return null\n\n const opts = options as unknown as VolumeOptions\n const gapFrac = opts.gap ?? 0.2\n const bw = getBandwidth(xScale)\n const barWidth = bw * (1 - gapFrac)\n const baseline = area.y + area.height\n\n for (let i = 0; i < series.values.length; i++) {\n const cx = xScale.map(i)\n const yTop = yScale.map(series.values[i]!)\n if (mx >= cx - barWidth / 2 && mx <= cx + barWidth / 2 && my >= yTop && my <= baseline) {\n return { seriesIndex: 0, pointIndex: i, distance: Math.abs(mx - cx), x: cx, y: yTop }\n }\n }\n\n return null\n },\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 chunkV5Q6UNUK_cjs = require('./chunk-V5Q6UNUK.cjs');
4
+ var chunkJVVGQLJQ_cjs = require('./chunk-JVVGQLJQ.cjs');
5
5
 
6
6
  // src/charts/geo/world-regions.ts
7
7
  var WORLD_REGIONS = [
@@ -282,7 +282,7 @@ var geoChartType = {
282
282
  return { x: "categorical", y: "linear" };
283
283
  },
284
284
  prepareData(data, options) {
285
- return chunkCDS2NXGT_cjs.prepareNoAxes(data, options);
285
+ return chunkV5Q6UNUK_cjs.prepareNoAxes(data, options);
286
286
  },
287
287
  render(ctx) {
288
288
  const { data, area, theme, options } = ctx;
@@ -315,7 +315,7 @@ var geoChartType = {
315
315
  const hasData = val !== void 0;
316
316
  const t = hasData ? (val - minVal) / range : 0;
317
317
  const fillOpacity = hasData ? 0.2 + t * 0.75 : 0.06;
318
- nodes.push(chunkUMIJYYF3_cjs.path(region.path, {
318
+ nodes.push(chunkJVVGQLJQ_cjs.path(region.path, {
319
319
  class: "chartts-geo-region",
320
320
  fill: hasData ? baseColor : theme.gridColor,
321
321
  fillOpacity,
@@ -336,7 +336,7 @@ var geoChartType = {
336
336
  if (!centroid) continue;
337
337
  const lx = offsetX + centroid.x * scale;
338
338
  const ly = offsetY + centroid.y * scale;
339
- labelNodes.push(chunkUMIJYYF3_cjs.text(lx, ly, name, {
339
+ labelNodes.push(chunkJVVGQLJQ_cjs.text(lx, ly, name, {
340
340
  class: "chartts-geo-label",
341
341
  fill: theme.textColor,
342
342
  textAnchor: "middle",
@@ -354,7 +354,7 @@ var geoChartType = {
354
354
  if (!centroid) continue;
355
355
  const lx = offsetX + centroid.x * scale;
356
356
  const ly = offsetY + centroid.y * scale;
357
- labelNodes.push(chunkUMIJYYF3_cjs.text(lx, ly, region.name, {
357
+ labelNodes.push(chunkJVVGQLJQ_cjs.text(lx, ly, region.name, {
358
358
  class: "chartts-geo-label",
359
359
  fill: theme.textMuted,
360
360
  textAnchor: "middle",
@@ -365,7 +365,7 @@ var geoChartType = {
365
365
  }));
366
366
  }
367
367
  }
368
- nodes.push(chunkUMIJYYF3_cjs.group(labelNodes, { class: "chartts-geo-labels", pointerEvents: "none" }));
368
+ nodes.push(chunkJVVGQLJQ_cjs.group(labelNodes, { class: "chartts-geo-labels", pointerEvents: "none" }));
369
369
  }
370
370
  if (gOpts.scatterSeries !== void 0) {
371
371
  const scatterSeries = data.series[gOpts.scatterSeries];
@@ -382,7 +382,7 @@ var geoChartType = {
382
382
  const sy = offsetY + centroid.y * scale;
383
383
  const r = 3 + val / maxScatter * 12;
384
384
  const color = options.colors[1 % options.colors.length];
385
- scatterNodes.push(chunkUMIJYYF3_cjs.circle(sx, sy, r, {
385
+ scatterNodes.push(chunkJVVGQLJQ_cjs.circle(sx, sy, r, {
386
386
  class: "chartts-geo-scatter",
387
387
  fill: color,
388
388
  fillOpacity: 0.5,
@@ -393,7 +393,7 @@ var geoChartType = {
393
393
  }));
394
394
  }
395
395
  if (scatterNodes.length > 0) {
396
- nodes.push(chunkUMIJYYF3_cjs.group(scatterNodes, { class: "chartts-geo-scatter-layer" }));
396
+ nodes.push(chunkJVVGQLJQ_cjs.group(scatterNodes, { class: "chartts-geo-scatter-layer" }));
397
397
  }
398
398
  }
399
399
  }
@@ -408,13 +408,13 @@ var geoChartType = {
408
408
  for (let s = 0; s < steps; s++) {
409
409
  const t = s / (steps - 1);
410
410
  const opacity = 0.2 + t * 0.75;
411
- legendNodes.push(chunkUMIJYYF3_cjs.rect(lx + s * stepW, ly, stepW + 0.5, lh, {
411
+ legendNodes.push(chunkJVVGQLJQ_cjs.rect(lx + s * stepW, ly, stepW + 0.5, lh, {
412
412
  fill: baseColor,
413
413
  fillOpacity: opacity,
414
414
  stroke: "none"
415
415
  }));
416
416
  }
417
- legendNodes.push(chunkUMIJYYF3_cjs.rect(lx, ly, lw, lh, {
417
+ legendNodes.push(chunkJVVGQLJQ_cjs.rect(lx, ly, lw, lh, {
418
418
  fill: "none",
419
419
  stroke: theme.textMuted,
420
420
  strokeWidth: 0.5,
@@ -422,20 +422,20 @@ var geoChartType = {
422
422
  }));
423
423
  const labelSize = Math.max(8, theme.fontSizeSmall * 0.8);
424
424
  const seriesName = series?.name ?? "";
425
- legendNodes.push(chunkUMIJYYF3_cjs.text(lx, ly + lh + labelSize + 2, formatValue(minVal), {
425
+ legendNodes.push(chunkJVVGQLJQ_cjs.text(lx, ly + lh + labelSize + 2, formatValue(minVal), {
426
426
  fill: theme.textMuted,
427
427
  fontSize: labelSize,
428
428
  fontFamily: theme.fontFamily,
429
429
  textAnchor: "start"
430
430
  }));
431
- legendNodes.push(chunkUMIJYYF3_cjs.text(lx + lw, ly + lh + labelSize + 2, formatValue(maxVal), {
431
+ legendNodes.push(chunkJVVGQLJQ_cjs.text(lx + lw, ly + lh + labelSize + 2, formatValue(maxVal), {
432
432
  fill: theme.textMuted,
433
433
  fontSize: labelSize,
434
434
  fontFamily: theme.fontFamily,
435
435
  textAnchor: "end"
436
436
  }));
437
437
  if (seriesName) {
438
- legendNodes.push(chunkUMIJYYF3_cjs.text(lx + lw / 2, ly + lh + labelSize + 2, seriesName, {
438
+ legendNodes.push(chunkJVVGQLJQ_cjs.text(lx + lw / 2, ly + lh + labelSize + 2, seriesName, {
439
439
  fill: theme.textColor,
440
440
  fontSize: labelSize,
441
441
  fontFamily: theme.fontFamily,
@@ -443,7 +443,7 @@ var geoChartType = {
443
443
  fontWeight: 600
444
444
  }));
445
445
  }
446
- nodes.push(chunkUMIJYYF3_cjs.group(legendNodes, { class: "chartts-geo-legend" }));
446
+ nodes.push(chunkJVVGQLJQ_cjs.group(legendNodes, { class: "chartts-geo-legend" }));
447
447
  }
448
448
  return nodes;
449
449
  },
@@ -516,5 +516,5 @@ function getPathBBox(d) {
516
516
  exports.WORLD_REGIONS = WORLD_REGIONS;
517
517
  exports.WORLD_SIMPLE = WORLD_SIMPLE;
518
518
  exports.geoChartType = geoChartType;
519
- //# sourceMappingURL=chunk-OAIMES5S.cjs.map
520
- //# sourceMappingURL=chunk-OAIMES5S.cjs.map
519
+ //# sourceMappingURL=chunk-W476ER4X.cjs.map
520
+ //# sourceMappingURL=chunk-W476ER4X.cjs.map