@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 +1 @@
1
- {"version":3,"sources":["../src/api/convenience.ts","../src/interaction/link.ts","../src/data/streaming.ts","../src/features/dataset.ts","../src/features/datazoom.ts","../src/features/datazoom-widget.ts","../src/features/graphic.ts","../src/features/richtext.ts","../src/registry/registry.ts","../src/scales/time.ts"],"names":["createChart","lineChartType","barChartType","stackedBarChartType","horizontalBarChartType","pieChartType","donutChartType","scatterChartType","sparklineChartType","areaChartType","radarChartType","bubbleChartType","candlestickChartType","gaugeChartType","waterfallChartType","funnelChartType","heatmapChartType","boxplotChartType","histogramChartType","treemapChartType","polarChartType","radialBarChartType","lollipopChartType","bulletChartType","dumbbellChartType","calendarChartType","comboChartType","sankeyChartType","sunburstChartType","treeChartType","graphChartType","parallelChartType","themeRiverChartType","pictorialBarChartType","chordChartType","geoChartType","linesChartType","matrixChartType","customChartType","ohlcChartType","stepChartType","volumeChartType","rangeChartType","baselineChartType","kagiChartType","renkoChartType","charts","rect","PathBuilder","path","text","pad","circle","line","group"],"mappings":"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","file":"index.cjs","sourcesContent":["import type { ChartData, ChartOptions, ChartInstance } from '../types'\nimport { createChart } from './create'\nimport { lineChartType } from '../charts/line/line-type'\nimport { barChartType } from '../charts/bar/bar-type'\nimport { stackedBarChartType } from '../charts/bar/stacked-bar-type'\nimport { horizontalBarChartType } from '../charts/bar/horizontal-bar-type'\nimport { pieChartType, donutChartType } from '../charts/pie/pie-type'\nimport { scatterChartType } from '../charts/scatter/scatter-type'\nimport { sparklineChartType } from '../charts/sparkline/sparkline-type'\nimport { areaChartType } from '../charts/area/area-type'\nimport { radarChartType } from '../charts/radar/radar-type'\nimport { bubbleChartType } from '../charts/bubble/bubble-type'\nimport { candlestickChartType } from '../charts/candlestick/candlestick-type'\nimport { gaugeChartType } from '../charts/gauge/gauge-type'\nimport { waterfallChartType } from '../charts/waterfall/waterfall-type'\nimport { funnelChartType } from '../charts/funnel/funnel-type'\nimport { heatmapChartType } from '../charts/heatmap/heatmap-type'\nimport { boxplotChartType } from '../charts/boxplot/boxplot-type'\nimport { histogramChartType } from '../charts/histogram/histogram-type'\nimport { treemapChartType } from '../charts/treemap/treemap-type'\nimport { polarChartType } from '../charts/polar/polar-type'\nimport { radialBarChartType } from '../charts/radialbar/radialbar-type'\nimport { lollipopChartType } from '../charts/lollipop/lollipop-type'\nimport { bulletChartType } from '../charts/bullet/bullet-type'\nimport { dumbbellChartType } from '../charts/dumbbell/dumbbell-type'\nimport { calendarChartType } from '../charts/calendar/calendar-type'\nimport { comboChartType } from '../charts/combo/combo-type'\nimport { sankeyChartType } from '../charts/sankey/sankey-type'\nimport { sunburstChartType } from '../charts/sunburst/sunburst-type'\nimport { treeChartType } from '../charts/tree/tree-type'\nimport { graphChartType } from '../charts/graph/graph-type'\nimport { parallelChartType } from '../charts/parallel/parallel-type'\nimport { themeRiverChartType } from '../charts/themeriver/themeriver-type'\nimport { pictorialBarChartType } from '../charts/pictorialbar/pictorialbar-type'\nimport { chordChartType } from '../charts/chord/chord-type'\nimport { geoChartType } from '../charts/geo/geo-type'\nimport { linesChartType } from '../charts/lines/lines-type'\nimport { matrixChartType } from '../charts/matrix/matrix-type'\nimport { customChartType } from '../charts/custom/custom-type'\nimport { ohlcChartType } from '../charts/ohlc/ohlc-type'\nimport { stepChartType } from '../charts/step/step-type'\nimport { volumeChartType } from '../charts/volume/volume-type'\nimport { rangeChartType } from '../charts/range/range-type'\nimport { baselineChartType } from '../charts/baseline/baseline-type'\nimport { kagiChartType } from '../charts/kagi/kagi-type'\nimport { renkoChartType } from '../charts/renko/renko-type'\n\ninterface ChartConfig extends ChartOptions {\n data: ChartData\n debug?: boolean\n}\n\nexport function Line(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, lineChartType, data, options)\n}\n\nexport function Bar(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, barChartType, data, options)\n}\n\nexport function StackedBar(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, stackedBarChartType, data, options)\n}\n\nexport function HorizontalBar(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, horizontalBarChartType, data, options)\n}\n\nexport function Pie(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, pieChartType, data, options)\n}\n\nexport function Donut(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, donutChartType, data, options)\n}\n\nexport function Scatter(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, scatterChartType, data, options)\n}\n\nexport function Sparkline(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, sparklineChartType, data, options)\n}\n\nexport function Area(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, areaChartType, data, options)\n}\n\nexport function Radar(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, radarChartType, data, options)\n}\n\nexport function Bubble(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, bubbleChartType, data, options)\n}\n\nexport function Candlestick(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, candlestickChartType, data, options)\n}\n\nexport function Gauge(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, gaugeChartType, data, options)\n}\n\nexport function Waterfall(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, waterfallChartType, data, options)\n}\n\nexport function Funnel(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, funnelChartType, data, options)\n}\n\nexport function Heatmap(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, heatmapChartType, data, options)\n}\n\nexport function Boxplot(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, boxplotChartType, data, options)\n}\n\nexport function Histogram(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, histogramChartType, data, options)\n}\n\nexport function Treemap(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, treemapChartType, data, options)\n}\n\nexport function Polar(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, polarChartType, data, options)\n}\n\nexport function RadialBar(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, radialBarChartType, data, options)\n}\n\nexport function Lollipop(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, lollipopChartType, data, options)\n}\n\nexport function Bullet(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, bulletChartType, data, options)\n}\n\nexport function Dumbbell(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, dumbbellChartType, data, options)\n}\n\nexport function Calendar(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, calendarChartType, data, options)\n}\n\nexport function Combo(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, comboChartType, data, options)\n}\n\nexport function Sankey(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, sankeyChartType, data, options)\n}\n\nexport function Sunburst(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, sunburstChartType, data, options)\n}\n\nexport function Tree(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, treeChartType, data, options)\n}\n\nexport function Graph(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, graphChartType, data, options)\n}\n\nexport function Parallel(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, parallelChartType, data, options)\n}\n\nexport function ThemeRiver(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, themeRiverChartType, data, options)\n}\n\nexport function PictorialBar(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, pictorialBarChartType, data, options)\n}\n\nexport function Chord(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, chordChartType, data, options)\n}\n\nexport function Geo(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, geoChartType, data, options)\n}\n\nexport function Lines(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, linesChartType, data, options)\n}\n\nexport function Matrix(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, matrixChartType, data, options)\n}\n\nexport function Custom(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, customChartType, data, options)\n}\n\nexport function OHLC(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, ohlcChartType, data, options)\n}\n\nexport function Step(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, stepChartType, data, options)\n}\n\nexport function Volume(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, volumeChartType, data, options)\n}\n\nexport function Range(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, rangeChartType, data, options)\n}\n\nexport function Baseline(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, baselineChartType, data, options)\n}\n\nexport function Kagi(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, kagiChartType, data, options)\n}\n\nexport function Renko(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, renkoChartType, data, options)\n}\n","/**\n * Linked charts — sync crosshair position across multiple chart instances.\n *\n * Usage:\n * ```ts\n * const unlink = linkCharts(chart1, chart2, chart3)\n * // Later:\n * unlink()\n * ```\n */\n\nimport type { ChartInstance } from '../types'\n\n/**\n * Link multiple chart instances so their crosshair positions stay in sync.\n * When one chart emits a crosshair:move event, all others receive it.\n *\n * Returns an unlink function to disconnect the charts.\n */\nexport function linkCharts(...charts: ChartInstance[]): () => void {\n if (charts.length < 2) return () => {}\n\n let broadcasting = false\n const unsubs: (() => void)[] = []\n\n for (const chart of charts) {\n const unsub = chart.on('crosshair:move', (payload: unknown) => {\n if (broadcasting) return\n broadcasting = true\n\n const { x, label } = payload as { x: number; label: string | number | Date }\n\n // Broadcast to all other charts via public _bus\n for (const other of charts) {\n if (other === chart) continue\n other._bus.emit('crosshair:move' as never, { x, label } as never)\n }\n\n broadcasting = false\n })\n\n unsubs.push(unsub)\n\n // Also sync hide events\n const unsubHide = chart.on('crosshair:hide', () => {\n if (broadcasting) return\n broadcasting = true\n for (const other of charts) {\n if (other === chart) continue\n other._bus.emit('crosshair:hide' as never, undefined as never)\n }\n broadcasting = false\n })\n unsubs.push(unsubHide)\n }\n\n return () => {\n for (const unsub of unsubs) unsub()\n unsubs.length = 0\n }\n}\n","/**\n * Realtime streaming data module.\n *\n * Provides a circular buffer + rolling window for live data feeds.\n * Throttled re-render via requestAnimationFrame.\n *\n * Usage:\n * ```ts\n * const stream = createStreamingChart(chart, {\n * windowSize: 100, // show last 100 points\n * seriesCount: 3, // 3 data series\n * seriesNames: ['CPU', 'Memory', 'Disk'],\n * })\n *\n * // Push single data point (one value per series)\n * stream.push([45, 72, 30], 'now')\n *\n * // Push batch of data points\n * stream.pushBatch([\n * { values: [45, 72, 30], label: '10:00' },\n * { values: [46, 71, 31], label: '10:01' },\n * ])\n *\n * // Pause / resume\n * stream.pause()\n * stream.resume()\n *\n * // Clean up\n * stream.destroy()\n * ```\n */\n\nimport type { ChartInstance, ChartData } from '../types'\n\n// ---------------------------------------------------------------------------\n// Config\n// ---------------------------------------------------------------------------\n\nexport interface StreamingConfig {\n /** Number of data points visible in the rolling window. Default 100. */\n windowSize?: number\n /** Number of data series. Default 1. */\n seriesCount?: number\n /** Series names. Default ['Series 1', 'Series 2', ...] */\n seriesNames?: string[]\n /** Series colors (optional — falls back to chart palette). */\n seriesColors?: string[]\n /** Maximum buffer size (oldest data is discarded beyond this). Default 10x windowSize. */\n maxBufferSize?: number\n /** Throttle interval in ms (0 = use rAF). Default 0. */\n throttleMs?: number\n}\n\n// ---------------------------------------------------------------------------\n// Instance\n// ---------------------------------------------------------------------------\n\nexport interface StreamingInstance {\n /** Push one data point (one value per series). */\n push(values: number[], label?: string | number | Date): void\n /** Push a batch of data points at once. */\n pushBatch(points: Array<{ values: number[]; label?: string | number | Date }>): void\n /** Pause streaming (stops re-renders but still accepts data). */\n pause(): void\n /** Resume streaming re-renders. */\n resume(): void\n /** Clear all buffered data. */\n clear(): void\n /** Get current buffer size. */\n getBufferSize(): number\n /** Destroy the streaming instance and clean up. */\n destroy(): void\n}\n\n// ---------------------------------------------------------------------------\n// Implementation\n// ---------------------------------------------------------------------------\n\nexport function createStreamingChart(\n chart: ChartInstance,\n config: StreamingConfig = {},\n): StreamingInstance {\n const windowSize = config.windowSize ?? 100\n const seriesCount = config.seriesCount ?? 1\n const maxBuffer = config.maxBufferSize ?? windowSize * 10\n const throttleMs = config.throttleMs ?? 0\n\n const names: string[] = config.seriesNames\n ?? Array.from({ length: seriesCount }, (_, i) => `Series ${i + 1}`)\n const colors: (string | undefined)[] = config.seriesColors ?? []\n\n // Circular buffers: one per series + one for labels\n const buffers: number[][] = Array.from({ length: seriesCount }, () => [])\n const labels: (string | number | Date)[] = []\n let totalPushed = 0\n\n let paused = false\n let dirty = false\n let rafId: number | null = null\n let throttleTimer: ReturnType<typeof setTimeout> | null = null\n\n // -----------------------------------------------------------------------\n // Internal: schedule a chart update\n // -----------------------------------------------------------------------\n\n function scheduleUpdate(): void {\n if (paused) { dirty = true; return }\n\n if (throttleMs > 0) {\n if (throttleTimer !== null) return\n throttleTimer = setTimeout(() => {\n throttleTimer = null\n flush()\n }, throttleMs)\n } else {\n if (rafId !== null) return\n rafId = requestAnimationFrame(() => {\n rafId = null\n flush()\n })\n }\n }\n\n function flush(): void {\n dirty = false\n\n // Build ChartData from the rolling window\n const start = Math.max(0, labels.length - windowSize)\n const windowLabels = labels.slice(start)\n const series = buffers.map((buf, i) => ({\n name: names[i] ?? `Series ${i + 1}`,\n values: buf.slice(start),\n ...(colors[i] ? { color: colors[i] } : {}),\n }))\n\n const data: ChartData = {\n labels: windowLabels as string[],\n series,\n }\n\n chart.setData(data)\n }\n\n // -----------------------------------------------------------------------\n // Trim buffer if it exceeds maxBuffer\n // -----------------------------------------------------------------------\n\n function trimBuffer(): void {\n if (labels.length <= maxBuffer) return\n const excess = labels.length - maxBuffer\n labels.splice(0, excess)\n for (const buf of buffers) {\n buf.splice(0, excess)\n }\n }\n\n // -----------------------------------------------------------------------\n // Public API\n // -----------------------------------------------------------------------\n\n return {\n push(values: number[], label?: string | number | Date): void {\n totalPushed++\n const lbl = label ?? totalPushed\n labels.push(lbl)\n\n for (let i = 0; i < seriesCount; i++) {\n buffers[i]!.push(values[i] ?? 0)\n }\n\n trimBuffer()\n scheduleUpdate()\n },\n\n pushBatch(points): void {\n for (const pt of points) {\n totalPushed++\n const lbl = pt.label ?? totalPushed\n labels.push(lbl)\n\n for (let i = 0; i < seriesCount; i++) {\n buffers[i]!.push(pt.values[i] ?? 0)\n }\n }\n\n trimBuffer()\n scheduleUpdate()\n },\n\n pause(): void {\n paused = true\n },\n\n resume(): void {\n paused = false\n if (dirty) scheduleUpdate()\n },\n\n clear(): void {\n labels.length = 0\n for (const buf of buffers) buf.length = 0\n totalPushed = 0\n dirty = false\n },\n\n getBufferSize(): number {\n return labels.length\n },\n\n destroy(): void {\n if (rafId !== null) cancelAnimationFrame(rafId)\n if (throttleTimer !== null) clearTimeout(throttleTimer)\n labels.length = 0\n for (const buf of buffers) buf.length = 0\n },\n }\n}\n","import type { ChartData, Series } from '../types'\n\n/**\n * Dataset — data transformation utilities for filtering, sorting, and\n * aggregating chart data before rendering.\n */\n\ntype Labels = ChartData['labels']\n\nfunction getLabels(data: ChartData): NonNullable<Labels> {\n return data.labels ?? []\n}\n\n// ---------------------------------------------------------------------------\n// Filter\n// ---------------------------------------------------------------------------\n\n/** Filter series by a predicate on values. */\nexport function filterData(\n data: ChartData,\n predicate: (value: number, index: number, seriesIndex: number) => boolean,\n): ChartData {\n const labels = getLabels(data)\n const keepIndices = labels\n .map((_: unknown, i: number) =>\n data.series.some((s, si) => predicate(s.values[i] ?? 0, i, si)) ? i : -1,\n )\n .filter((i: number) => i >= 0)\n\n return {\n ...data,\n series: data.series.map((s, si) => ({\n ...s,\n values: s.values.filter((v, i) => predicate(v, i, si)),\n })),\n labels: keepIndices.map((i: number) => (labels as unknown[])[i]) as Labels,\n }\n}\n\n/** Filter to keep only specific series by name or index. */\nexport function filterSeries(\n data: ChartData,\n keep: (string | number)[],\n): ChartData {\n return {\n ...data,\n series: data.series.filter((s, i) =>\n keep.includes(s.name) || keep.includes(i),\n ),\n }\n}\n\n/** Filter to keep only specific labels/categories. */\nexport function filterLabels(\n data: ChartData,\n keep: (string | number | Date)[],\n): ChartData {\n const labels = getLabels(data)\n const keepSet = new Set(keep.map(String))\n const indices = (labels as unknown[])\n .map((l, i) => keepSet.has(String(l)) ? i : -1)\n .filter(i => i >= 0)\n\n return {\n ...data,\n labels: indices.map(i => (labels as unknown[])[i]) as Labels,\n series: data.series.map(s => ({\n ...s,\n values: indices.map(i => s.values[i] ?? 0),\n })),\n }\n}\n\n// ---------------------------------------------------------------------------\n// Sort\n// ---------------------------------------------------------------------------\n\n/** Sort data by label or by a specific series' values. */\nexport function sortData(\n data: ChartData,\n by: 'label' | number,\n direction: 'asc' | 'desc' = 'asc',\n): ChartData {\n const labels = getLabels(data)\n const indices = (labels as unknown[]).map((_: unknown, i: number) => i)\n const dir = direction === 'asc' ? 1 : -1\n\n if (by === 'label') {\n indices.sort((a, b) => dir * String((labels as unknown[])[a]).localeCompare(String((labels as unknown[])[b])))\n } else {\n const series = data.series[by]\n if (series) {\n indices.sort((a, b) => dir * ((series.values[a] ?? 0) - (series.values[b] ?? 0)))\n }\n }\n\n return {\n ...data,\n labels: indices.map(i => (labels as unknown[])[i]) as Labels,\n series: data.series.map(s => ({\n ...s,\n values: indices.map(i => s.values[i] ?? 0),\n })),\n }\n}\n\n// ---------------------------------------------------------------------------\n// Aggregate\n// ---------------------------------------------------------------------------\n\ntype AggFn = 'sum' | 'avg' | 'min' | 'max' | 'count'\n\n/** Aggregate all series values per label into a single series. */\nexport function aggregateData(\n data: ChartData,\n fn: AggFn = 'sum',\n): ChartData {\n const labels = getLabels(data)\n const agg = getAggFn(fn)\n const values = (labels as unknown[]).map((_: unknown, i: number) => {\n const vals = data.series.map(s => s.values[i] ?? 0)\n return agg(vals)\n })\n\n return {\n ...data,\n series: [{ name: fn, values }],\n }\n}\n\nfunction getAggFn(fn: AggFn): (vals: number[]) => number {\n switch (fn) {\n case 'sum': return vals => vals.reduce((a, b) => a + b, 0)\n case 'avg': return vals => vals.length > 0 ? vals.reduce((a, b) => a + b, 0) / vals.length : 0\n case 'min': return vals => Math.min(...vals)\n case 'max': return vals => Math.max(...vals)\n case 'count': return vals => vals.filter(v => v !== 0).length\n }\n}\n\n// ---------------------------------------------------------------------------\n// Transform pipeline\n// ---------------------------------------------------------------------------\n\ntype TransformFn = (data: ChartData) => ChartData\n\n/** Apply a chain of transforms to chart data. */\nexport function transformData(data: ChartData, ...transforms: TransformFn[]): ChartData {\n return transforms.reduce((d, fn) => fn(d), data)\n}\n\n// ---------------------------------------------------------------------------\n// Pivot / transpose\n// ---------------------------------------------------------------------------\n\n/** Transpose rows and columns — series become labels and vice versa. */\nexport function pivotData(data: ChartData): ChartData {\n const labels = getLabels(data)\n const newLabels = data.series.map(s => s.name) as string[]\n const newSeries: Series[] = (labels as unknown[]).map((label: unknown, i: number) => ({\n name: String(label),\n values: data.series.map(s => s.values[i] ?? 0),\n }))\n\n return { labels: newLabels, series: newSeries }\n}\n\n// ---------------------------------------------------------------------------\n// Slice / window\n// ---------------------------------------------------------------------------\n\n/** Take a slice of the data (for pagination or windowing). */\nexport function sliceData(data: ChartData, start: number, end?: number): ChartData {\n const labels = getLabels(data)\n return {\n ...data,\n labels: (labels as unknown[]).slice(start, end) as Labels,\n series: data.series.map(s => ({\n ...s,\n values: s.values.slice(start, end),\n })),\n }\n}\n","import type { ChartData, RenderNode } from '../types'\nimport { rect, path, text } from '../render/tree'\nimport { PathBuilder } from '../render/tree'\n\n/**\n * DataZoom — interactive data range selection and filtering.\n *\n * Provides utilities to:\n * 1. Filter chart data to a visible window (applyDataZoom)\n * 2. Render a zoom slider control (renderDataZoomSlider)\n * 3. Manage zoom state (createDataZoomState)\n */\n\nexport interface DataZoomRange {\n /** Start percentage 0..1 */\n start: number\n /** End percentage 0..1 */\n end: number\n}\n\nexport interface DataZoomState {\n range: DataZoomRange\n setRange(start: number, end: number): void\n reset(): void\n zoomIn(factor?: number): void\n zoomOut(factor?: number): void\n panLeft(amount?: number): void\n panRight(amount?: number): void\n}\n\nexport interface DataZoomSliderOptions {\n x: number\n y: number\n width: number\n height?: number\n trackColor?: string\n handleColor?: string\n selectedColor?: string\n showMinimap?: boolean\n}\n\n/** Create a DataZoom state manager. */\nexport function createDataZoomState(\n initial?: Partial<DataZoomRange>,\n onChange?: (range: DataZoomRange) => void,\n): DataZoomState {\n const range: DataZoomRange = {\n start: initial?.start ?? 0,\n end: initial?.end ?? 1,\n }\n\n function clamp() {\n range.start = Math.max(0, Math.min(range.start, 1))\n range.end = Math.max(range.start + 0.01, Math.min(range.end, 1))\n onChange?.(range)\n }\n\n return {\n range,\n setRange(start: number, end: number) {\n range.start = start\n range.end = end\n clamp()\n },\n reset() {\n range.start = 0\n range.end = 1\n onChange?.(range)\n },\n zoomIn(factor = 0.1) {\n const center = (range.start + range.end) / 2\n const halfSpan = (range.end - range.start) / 2 * (1 - factor)\n range.start = center - halfSpan\n range.end = center + halfSpan\n clamp()\n },\n zoomOut(factor = 0.1) {\n const center = (range.start + range.end) / 2\n const halfSpan = (range.end - range.start) / 2 * (1 + factor)\n range.start = center - halfSpan\n range.end = center + halfSpan\n clamp()\n },\n panLeft(amount = 0.05) {\n const span = range.end - range.start\n range.start = Math.max(0, range.start - amount)\n range.end = range.start + span\n clamp()\n },\n panRight(amount = 0.05) {\n const span = range.end - range.start\n range.end = Math.min(1, range.end + amount)\n range.start = range.end - span\n clamp()\n },\n }\n}\n\n/** Apply DataZoom range to filter chart data. */\nexport function applyDataZoom(data: ChartData, range: DataZoomRange): ChartData {\n const labels = data.labels ?? []\n const total = labels.length\n if (total === 0) return data\n\n const startIdx = Math.floor(range.start * total)\n const endIdx = Math.ceil(range.end * total)\n\n return {\n ...data,\n labels: (labels as unknown[]).slice(startIdx, endIdx) as ChartData['labels'],\n series: data.series.map(s => ({\n ...s,\n values: s.values.slice(startIdx, endIdx),\n })),\n }\n}\n\n/** Render a DataZoom slider as RenderNode[]. */\nexport function renderDataZoomSlider(\n data: ChartData,\n range: DataZoomRange,\n opts: DataZoomSliderOptions,\n): RenderNode[] {\n const nodes: RenderNode[] = []\n const h = opts.height ?? 30\n const trackColor = opts.trackColor ?? '#e5e7eb'\n const handleColor = opts.handleColor ?? '#6b7280'\n const selectedColor = opts.selectedColor ?? 'rgba(59,130,246,0.2)'\n\n // Track background\n nodes.push(rect(opts.x, opts.y, opts.width, h, {\n class: 'chartts-datazoom-track',\n fill: trackColor,\n rx: 4,\n ry: 4,\n }))\n\n // Minimap sparkline\n if (opts.showMinimap !== false && data.series[0]) {\n const values = data.series[0].values\n const max = Math.max(...values.map(Math.abs), 1)\n const pb = new PathBuilder()\n\n for (let i = 0; i < values.length; i++) {\n const x = opts.x + (i / Math.max(values.length - 1, 1)) * opts.width\n const y = opts.y + h - (Math.abs(values[i]!) / max) * (h - 4) - 2\n if (i === 0) pb.moveTo(x, y)\n else pb.lineTo(x, y)\n }\n\n nodes.push(path(pb.build(), {\n class: 'chartts-datazoom-minimap',\n fill: 'none',\n stroke: handleColor,\n strokeWidth: 1,\n strokeOpacity: 0.4,\n }))\n }\n\n // Selected region\n const selX = opts.x + range.start * opts.width\n const selW = (range.end - range.start) * opts.width\n\n nodes.push(rect(selX, opts.y, selW, h, {\n class: 'chartts-datazoom-selected',\n fill: selectedColor,\n rx: 2,\n ry: 2,\n }))\n\n // Left handle\n nodes.push(rect(selX - 3, opts.y + 4, 6, h - 8, {\n class: 'chartts-datazoom-handle chartts-datazoom-handle-left',\n fill: handleColor,\n rx: 3,\n ry: 3,\n cursor: 'ew-resize',\n }))\n\n // Right handle\n nodes.push(rect(selX + selW - 3, opts.y + 4, 6, h - 8, {\n class: 'chartts-datazoom-handle chartts-datazoom-handle-right',\n fill: handleColor,\n rx: 3,\n ry: 3,\n cursor: 'ew-resize',\n }))\n\n // Range labels\n const dlabels = data.labels ?? []\n const total = dlabels.length\n const startIdx = Math.floor(range.start * total)\n const endIdx = Math.min(Math.ceil(range.end * total) - 1, total - 1)\n\n if (total > 0) {\n nodes.push(text(selX, opts.y + h + 12, String((dlabels as unknown[])[startIdx] ?? ''), {\n class: 'chartts-datazoom-label',\n fill: handleColor,\n textAnchor: 'start',\n fontSize: 9,\n }))\n\n nodes.push(text(selX + selW, opts.y + h + 12, String((dlabels as unknown[])[endIdx] ?? ''), {\n class: 'chartts-datazoom-label',\n fill: handleColor,\n textAnchor: 'end',\n fontSize: 9,\n }))\n }\n\n return nodes\n}\n","/**\n * Interactive DataZoom slider widget.\n *\n * A real DOM element with draggable handles and minimap sparkline.\n * Lives outside the chart render loop — manages its own pointer events.\n *\n * Usage:\n * ```ts\n * const widget = createDataZoomWidget({\n * data: fullData,\n * onChange: (range) => {\n * chart.setData(applyDataZoom(fullData, range))\n * },\n * })\n * container.appendChild(widget.element)\n * ```\n */\n\nimport type { ChartData } from '../types'\nimport { createDataZoomState, type DataZoomState, type DataZoomRange } from './datazoom'\n\nexport interface DataZoomWidgetOptions {\n /** Chart data (first series used for minimap sparkline). */\n data: ChartData\n /** Height of the slider in pixels. Default 40. */\n height?: number\n /** Initial visible range. Default { start: 0, end: 1 }. */\n initialRange?: Partial<DataZoomRange>\n /** Called when range changes via user interaction. */\n onChange?: (range: DataZoomRange) => void\n /** Track background color. */\n trackColor?: string\n /** Handle color. */\n handleColor?: string\n /** Selected region color. */\n selectedColor?: string\n /** Minimap line color. */\n minimapColor?: string\n}\n\nexport interface DataZoomWidget {\n /** The DOM element to insert into the page. */\n element: HTMLElement\n /** The state manager (setRange, reset, zoomIn, zoomOut, panLeft, panRight). */\n state: DataZoomState\n /** Update minimap sparkline data. */\n setData(data: ChartData): void\n /** Destroy and clean up. */\n destroy(): void\n}\n\nexport function createDataZoomWidget(options: DataZoomWidgetOptions): DataZoomWidget {\n const h = options.height ?? 40\n const trackColor = options.trackColor ?? '#e5e7eb'\n const handleColor = options.handleColor ?? '#6b7280'\n const selectedColor = options.selectedColor ?? 'rgba(59,130,246,0.25)'\n const minimapColor = options.minimapColor ?? '#9ca3af'\n\n let currentData = options.data\n\n // State\n const state = createDataZoomState(\n options.initialRange,\n (range) => {\n updateLayout()\n options.onChange?.(range)\n },\n )\n\n // -----------------------------------------------------------------------\n // DOM construction\n // -----------------------------------------------------------------------\n\n const root = document.createElement('div')\n root.className = 'chartts-datazoom-widget'\n root.style.cssText = `position:relative;height:${h}px;width:100%;user-select:none;touch-action:none;`\n\n // Track background\n const track = document.createElement('div')\n track.className = 'chartts-datazoom-track'\n track.style.cssText = `position:absolute;inset:0;background:${trackColor};border-radius:4px;overflow:hidden;`\n root.appendChild(track)\n\n // Minimap canvas\n const minimap = document.createElement('canvas')\n minimap.className = 'chartts-datazoom-minimap'\n minimap.style.cssText = 'position:absolute;inset:0;width:100%;height:100%;'\n track.appendChild(minimap)\n\n // Left mask (dimmed area)\n const maskLeft = document.createElement('div')\n maskLeft.style.cssText = `position:absolute;top:0;left:0;height:100%;background:rgba(0,0,0,0.15);border-radius:4px 0 0 4px;pointer-events:none;`\n root.appendChild(maskLeft)\n\n // Right mask (dimmed area)\n const maskRight = document.createElement('div')\n maskRight.style.cssText = `position:absolute;top:0;right:0;height:100%;background:rgba(0,0,0,0.15);border-radius:0 4px 4px 0;pointer-events:none;`\n root.appendChild(maskRight)\n\n // Selected region (draggable for pan)\n const selected = document.createElement('div')\n selected.className = 'chartts-datazoom-selected'\n selected.style.cssText = `position:absolute;top:0;height:100%;background:${selectedColor};cursor:grab;border-top:2px solid ${handleColor};border-bottom:2px solid ${handleColor};`\n root.appendChild(selected)\n\n // Left handle\n const handleLeft = document.createElement('div')\n handleLeft.className = 'chartts-datazoom-handle-left'\n handleLeft.style.cssText = `position:absolute;top:2px;width:8px;height:${h - 4}px;background:${handleColor};border-radius:4px;cursor:ew-resize;z-index:2;transform:translateX(-50%);`\n root.appendChild(handleLeft)\n\n // Right handle\n const handleRight = document.createElement('div')\n handleRight.className = 'chartts-datazoom-handle-right'\n handleRight.style.cssText = `position:absolute;top:2px;width:8px;height:${h - 4}px;background:${handleColor};border-radius:4px;cursor:ew-resize;z-index:2;transform:translateX(-50%);`\n root.appendChild(handleRight)\n\n // -----------------------------------------------------------------------\n // Layout update\n // -----------------------------------------------------------------------\n\n function updateLayout(): void {\n const w = root.clientWidth || root.offsetWidth || 300\n const { start, end } = state.range\n\n const leftPx = start * w\n const rightPx = end * w\n const selWidth = rightPx - leftPx\n\n maskLeft.style.width = `${leftPx}px`\n maskRight.style.width = `${w - rightPx}px`\n\n selected.style.left = `${leftPx}px`\n selected.style.width = `${selWidth}px`\n\n handleLeft.style.left = `${leftPx}px`\n handleRight.style.left = `${rightPx}px`\n }\n\n // -----------------------------------------------------------------------\n // Minimap rendering\n // -----------------------------------------------------------------------\n\n function drawMinimap(): void {\n const w = root.clientWidth || root.offsetWidth || 300\n const dpr = window.devicePixelRatio || 1\n minimap.width = Math.round(w * dpr)\n minimap.height = Math.round(h * dpr)\n minimap.style.width = `${w}px`\n minimap.style.height = `${h}px`\n\n const ctx = minimap.getContext('2d')\n if (!ctx) return\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0)\n ctx.clearRect(0, 0, w, h)\n\n const series = currentData.series[0]\n if (!series || series.values.length === 0) return\n\n const values = series.values.filter(v => !isNaN(v))\n if (values.length === 0) return\n\n const max = Math.max(...values)\n const min = Math.min(...values)\n const range = max - min || 1\n const pad = 4\n\n ctx.beginPath()\n ctx.strokeStyle = minimapColor\n ctx.lineWidth = 1\n ctx.globalAlpha = 0.5\n\n let started = false\n for (let i = 0; i < series.values.length; i++) {\n const v = series.values[i]!\n if (isNaN(v)) continue\n const x = (i / Math.max(series.values.length - 1, 1)) * w\n const y = h - pad - ((v - min) / range) * (h - pad * 2)\n if (!started) { ctx.moveTo(x, y); started = true }\n else ctx.lineTo(x, y)\n }\n ctx.stroke()\n\n // Fill area below the line\n if (started) {\n ctx.lineTo(w, h)\n ctx.lineTo(0, h)\n ctx.closePath()\n ctx.fillStyle = minimapColor\n ctx.globalAlpha = 0.08\n ctx.fill()\n }\n }\n\n // -----------------------------------------------------------------------\n // Pointer interaction\n // -----------------------------------------------------------------------\n\n type DragMode = 'left' | 'right' | 'pan' | null\n let dragMode: DragMode = null\n let dragStartX = 0\n let dragStartRange: DataZoomRange = { start: 0, end: 1 }\n\n function toNormalized(clientX: number): number {\n const r = root.getBoundingClientRect()\n return Math.max(0, Math.min(1, (clientX - r.left) / r.width))\n }\n\n function onPointerDown(e: PointerEvent): void {\n const target = e.target as HTMLElement\n if (target === handleLeft || target.closest('.chartts-datazoom-handle-left')) {\n dragMode = 'left'\n } else if (target === handleRight || target.closest('.chartts-datazoom-handle-right')) {\n dragMode = 'right'\n } else if (target === selected || target.closest('.chartts-datazoom-selected')) {\n dragMode = 'pan'\n selected.style.cursor = 'grabbing'\n } else {\n // Click on track — jump to position\n const pos = toNormalized(e.clientX)\n const span = state.range.end - state.range.start\n state.setRange(pos - span / 2, pos + span / 2)\n return\n }\n\n dragStartX = e.clientX\n dragStartRange = { ...state.range }\n root.setPointerCapture(e.pointerId)\n e.preventDefault()\n }\n\n function onPointerMove(e: PointerEvent): void {\n if (!dragMode) return\n\n const dx = e.clientX - dragStartX\n const w = root.clientWidth || root.offsetWidth || 300\n const delta = dx / w\n\n if (dragMode === 'left') {\n state.setRange(\n Math.min(dragStartRange.start + delta, state.range.end - 0.02),\n state.range.end,\n )\n } else if (dragMode === 'right') {\n state.setRange(\n state.range.start,\n Math.max(dragStartRange.end + delta, state.range.start + 0.02),\n )\n } else if (dragMode === 'pan') {\n const span = dragStartRange.end - dragStartRange.start\n let newStart = dragStartRange.start + delta\n let newEnd = dragStartRange.end + delta\n // Clamp to bounds\n if (newStart < 0) { newStart = 0; newEnd = span }\n if (newEnd > 1) { newEnd = 1; newStart = 1 - span }\n state.setRange(newStart, newEnd)\n }\n }\n\n function onPointerUp(_e: PointerEvent): void {\n dragMode = null\n selected.style.cursor = 'grab'\n }\n\n function onDblClick(): void {\n state.reset()\n }\n\n root.addEventListener('pointerdown', onPointerDown)\n root.addEventListener('pointermove', onPointerMove)\n root.addEventListener('pointerup', onPointerUp)\n root.addEventListener('dblclick', onDblClick)\n\n // -----------------------------------------------------------------------\n // Resize observer\n // -----------------------------------------------------------------------\n\n let resizeObserver: ResizeObserver | null = null\n if (typeof ResizeObserver !== 'undefined') {\n resizeObserver = new ResizeObserver(() => {\n updateLayout()\n drawMinimap()\n })\n resizeObserver.observe(root)\n }\n\n // Initial draw (deferred to next frame so root has dimensions)\n requestAnimationFrame(() => {\n updateLayout()\n drawMinimap()\n })\n\n // -----------------------------------------------------------------------\n // Public API\n // -----------------------------------------------------------------------\n\n return {\n element: root,\n state,\n\n setData(data: ChartData): void {\n currentData = data\n drawMinimap()\n },\n\n destroy(): void {\n resizeObserver?.disconnect()\n root.removeEventListener('pointerdown', onPointerDown)\n root.removeEventListener('pointermove', onPointerMove)\n root.removeEventListener('pointerup', onPointerUp)\n root.removeEventListener('dblclick', onDblClick)\n root.remove()\n },\n }\n}\n","import type { RenderNode, RenderAttrs } from '../types'\nimport { rect, circle, path, text, line, group } from '../render/tree'\n\n/**\n * Graphic — create custom SVG overlay elements for charts.\n *\n * Provides a declarative API to define arbitrary shapes, text, and groups\n * that can be overlaid on any chart. Positions can be absolute (px)\n * or relative (0..1 proportion of chart area).\n */\n\nexport interface GraphicElement {\n type: 'rect' | 'circle' | 'path' | 'text' | 'line' | 'group' | 'image'\n // Position (absolute px or relative 0..1 with position: 'relative')\n x?: number\n y?: number\n // Sizing\n width?: number\n height?: number\n r?: number\n // Content\n d?: string // path data\n content?: string // text content\n x2?: number // line end x\n y2?: number // line end y\n src?: string // image source\n // Children (for groups)\n children?: GraphicElement[]\n // Positioning mode\n position?: 'absolute' | 'relative'\n // Any SVG attributes\n attrs?: Record<string, unknown>\n}\n\nexport interface GraphicArea {\n x: number\n y: number\n width: number\n height: number\n}\n\n/**\n * Convert an array of GraphicElement definitions into RenderNode[].\n * Use `area` to resolve relative positions.\n */\nexport function createGraphicElements(\n elements: GraphicElement[],\n area?: GraphicArea,\n): RenderNode[] {\n return elements.map(el => resolveElement(el, area)).filter(Boolean) as RenderNode[]\n}\n\nfunction resolveElement(el: GraphicElement, area?: GraphicArea): RenderNode | null {\n const resolve = (v: number | undefined, dim: 'x' | 'y'): number => {\n if (v === undefined) return 0\n if (el.position === 'relative' && area) {\n return dim === 'x'\n ? area.x + v * area.width\n : area.y + v * area.height\n }\n return v\n }\n\n const resolveSize = (v: number | undefined, dim: 'w' | 'h'): number => {\n if (v === undefined) return 0\n if (el.position === 'relative' && area) {\n return dim === 'w' ? v * area.width : v * area.height\n }\n return v\n }\n\n const attrs: RenderAttrs = {\n class: 'chartts-graphic',\n ...(el.attrs as RenderAttrs),\n }\n\n switch (el.type) {\n case 'rect':\n return rect(\n resolve(el.x, 'x'),\n resolve(el.y, 'y'),\n resolveSize(el.width, 'w'),\n resolveSize(el.height, 'h'),\n attrs,\n )\n\n case 'circle':\n return circle(\n resolve(el.x, 'x'),\n resolve(el.y, 'y'),\n el.r ?? 10,\n attrs,\n )\n\n case 'path':\n return el.d ? path(el.d, attrs) : null\n\n case 'text':\n return text(\n resolve(el.x, 'x'),\n resolve(el.y, 'y'),\n el.content ?? '',\n attrs,\n )\n\n case 'line':\n return line(\n resolve(el.x, 'x'),\n resolve(el.y, 'y'),\n resolve(el.x2, 'x'),\n resolve(el.y2, 'y'),\n attrs,\n )\n\n case 'group': {\n const children = (el.children ?? [])\n .map(c => resolveElement(c, area))\n .filter(Boolean) as RenderNode[]\n return group(children, attrs)\n }\n\n case 'image':\n return {\n type: 'image' as unknown as RenderNode['type'],\n attrs: {\n ...attrs,\n href: el.src ?? '',\n x: resolve(el.x, 'x'),\n y: resolve(el.y, 'y'),\n width: resolveSize(el.width, 'w'),\n height: resolveSize(el.height, 'h'),\n },\n } as unknown as RenderNode\n\n default:\n return null\n }\n}\n\n/**\n * Convenience: create a horizontal guideline.\n */\nexport function horizontalLine(\n y: number,\n area: GraphicArea,\n attrs?: RenderAttrs,\n): RenderNode {\n return line(area.x, y, area.x + area.width, y, {\n class: 'chartts-graphic-guideline',\n stroke: '#6b7280',\n strokeWidth: 1,\n strokeDasharray: '4,3',\n ...attrs,\n })\n}\n\n/**\n * Convenience: create a vertical guideline.\n */\nexport function verticalLine(\n x: number,\n area: GraphicArea,\n attrs?: RenderAttrs,\n): RenderNode {\n return line(x, area.y, x, area.y + area.height, {\n class: 'chartts-graphic-guideline',\n stroke: '#6b7280',\n strokeWidth: 1,\n strokeDasharray: '4,3',\n ...attrs,\n })\n}\n\n/**\n * Convenience: create a text annotation at a position.\n */\nexport function annotation(\n x: number, y: number,\n content: string,\n attrs?: RenderAttrs,\n): RenderNode {\n return text(x, y, content, {\n class: 'chartts-graphic-annotation',\n fill: '#374151',\n fontSize: 11,\n textAnchor: 'middle',\n dominantBaseline: 'auto',\n ...attrs,\n })\n}\n","import type { RenderNode, RenderAttrs } from '../types'\n\n/**\n * Rich Text — parse simple markup into multi-styled text elements.\n *\n * Supports a simple markup syntax:\n * - {b}bold{/b} or **bold**\n * - {i}italic{/i} or *italic*\n * - {color:red}colored{/color}\n * - {size:16}sized{/size}\n * - {style:name}custom{/style} — uses named styles\n *\n * Returns a RenderNode (text element with tspan children).\n */\n\nexport interface RichTextStyle {\n fontWeight?: number | string\n fontStyle?: string\n fill?: string\n fontSize?: number | string\n fontFamily?: string\n textDecoration?: string\n}\n\nexport interface RichTextOptions {\n /** Default text attributes */\n defaults?: RichTextStyle\n /** Named styles for {style:name} syntax */\n styles?: Record<string, RichTextStyle>\n /** X position */\n x?: number\n /** Y position */\n y?: number\n /** Additional attributes for the parent text element */\n attrs?: RenderAttrs\n}\n\ninterface TextSpan {\n text: string\n style: RichTextStyle\n}\n\n/**\n * Parse rich text markup and return a RenderNode with tspan children.\n */\nexport function parseRichText(\n input: string,\n options: RichTextOptions = {},\n): RenderNode {\n const spans = parse(input, options.defaults ?? {}, options.styles ?? {})\n\n // Build tspan children\n const tspans: RenderNode[] = spans.map(span => ({\n type: 'tspan' as unknown as RenderNode['type'],\n attrs: {\n ...(span.style.fontWeight ? { fontWeight: span.style.fontWeight } : {}),\n ...(span.style.fontStyle ? { fontStyle: span.style.fontStyle } : {}),\n ...(span.style.fill ? { fill: span.style.fill } : {}),\n ...(span.style.fontSize ? { fontSize: span.style.fontSize } : {}),\n ...(span.style.fontFamily ? { fontFamily: span.style.fontFamily } : {}),\n ...(span.style.textDecoration ? { textDecoration: span.style.textDecoration } : {}),\n },\n children: [],\n text: span.text,\n } as unknown as RenderNode))\n\n return {\n type: 'text',\n x: options.x ?? 0,\n y: options.y ?? 0,\n text: '',\n attrs: {\n class: 'chartts-richtext',\n ...options.attrs,\n },\n children: tspans,\n } as unknown as RenderNode\n}\n\n/**\n * Format a value with rich text markup.\n * E.g., richLabel(\"Revenue\", 1234, { valueColor: \"#3b82f6\" })\n * → \"{b}Revenue{/b}: {color:#3b82f6}1,234{/color}\"\n */\nexport function richLabel(\n label: string,\n value: number | string,\n opts?: { valueColor?: string; valueWeight?: string },\n): string {\n const color = opts?.valueColor ?? '#3b82f6'\n const weight = opts?.valueWeight ?? ''\n const valueStr = typeof value === 'number' ? formatNum(value) : value\n const weightTag = weight ? `{b}${valueStr}{/b}` : valueStr\n return `{b}${label}{/b}: {color:${color}}${weightTag}{/color}`\n}\n\n// ---------------------------------------------------------------------------\n// Parser\n// ---------------------------------------------------------------------------\n\nfunction parse(\n input: string,\n defaults: RichTextStyle,\n namedStyles: Record<string, RichTextStyle>,\n): TextSpan[] {\n const spans: TextSpan[] = []\n const styleStack: RichTextStyle[] = [{ ...defaults }]\n\n // Pattern matches: {b}, {/b}, {i}, {/i}, {color:X}, {/color}, {size:X}, {/size}, {style:X}, {/style}, **X**, *X*\n const regex = /\\{(b|\\/b|i|\\/i|color:([^}]+)|\\/color|size:([^}]+)|\\/size|style:([^}]+)|\\/style)\\}|\\*\\*(.+?)\\*\\*|\\*(.+?)\\*/g\n\n let lastIndex = 0\n let match: RegExpExecArray | null\n\n while ((match = regex.exec(input)) !== null) {\n // Text before this match\n if (match.index > lastIndex) {\n spans.push({ text: input.slice(lastIndex, match.index), style: currentStyle(styleStack) })\n }\n\n const tag = match[1]\n const boldShorthand = match[5]\n const italicShorthand = match[6]\n\n if (boldShorthand) {\n spans.push({ text: boldShorthand, style: { ...currentStyle(styleStack), fontWeight: 700 } })\n } else if (italicShorthand) {\n spans.push({ text: italicShorthand, style: { ...currentStyle(styleStack), fontStyle: 'italic' } })\n } else if (tag === 'b') {\n styleStack.push({ ...currentStyle(styleStack), fontWeight: 700 })\n } else if (tag === '/b') {\n popStyle(styleStack)\n } else if (tag === 'i') {\n styleStack.push({ ...currentStyle(styleStack), fontStyle: 'italic' })\n } else if (tag === '/i') {\n popStyle(styleStack)\n } else if (tag?.startsWith('color:')) {\n styleStack.push({ ...currentStyle(styleStack), fill: match[2] })\n } else if (tag === '/color') {\n popStyle(styleStack)\n } else if (tag?.startsWith('size:')) {\n styleStack.push({ ...currentStyle(styleStack), fontSize: parseFloat(match[3]!) || 12 })\n } else if (tag === '/size') {\n popStyle(styleStack)\n } else if (tag?.startsWith('style:')) {\n const named = namedStyles[match[4]!]\n if (named) {\n styleStack.push({ ...currentStyle(styleStack), ...named })\n }\n } else if (tag === '/style') {\n popStyle(styleStack)\n }\n\n lastIndex = match.index + match[0].length\n }\n\n // Remaining text\n if (lastIndex < input.length) {\n spans.push({ text: input.slice(lastIndex), style: currentStyle(styleStack) })\n }\n\n return spans\n}\n\nfunction currentStyle(stack: RichTextStyle[]): RichTextStyle {\n return { ...stack[stack.length - 1]! }\n}\n\nfunction popStyle(stack: RichTextStyle[]): void {\n if (stack.length > 1) stack.pop()\n}\n\nfunction formatNum(n: number): string {\n return n.toLocaleString()\n}\n","import type { ChartTypePlugin, ScaleFactory, ScaleType } from '../types'\n\nconst charts = new Map<string, ChartTypePlugin>()\nconst scales = new Map<ScaleType, ScaleFactory>()\n\nexport function registerChart(plugin: ChartTypePlugin): void {\n if (charts.has(plugin.type)) {\n throw new Error(`[chartts] Chart type \"${plugin.type}\" already registered.`)\n }\n charts.set(plugin.type, plugin)\n}\n\nexport function getChart(type: string): ChartTypePlugin {\n const plugin = charts.get(type)\n if (!plugin) {\n const available = Array.from(charts.keys()).join(', ') || 'none'\n throw new Error(`[chartts] Unknown chart type \"${type}\". Registered: ${available}`)\n }\n return plugin\n}\n\nexport function registerScale(type: ScaleType, factory: ScaleFactory): void {\n scales.set(type, factory)\n}\n\nexport function getScaleFactory(type: ScaleType): ScaleFactory {\n const factory = scales.get(type)\n if (!factory) {\n throw new Error(`[chartts] Unknown scale type \"${type}\".`)\n }\n return factory\n}\n\nexport function clearRegistry(): void {\n charts.clear()\n scales.clear()\n}\n","import type { Scale, Tick } from '../types'\n\nexport interface TimeScaleOpts {\n domain?: [number | Date, number | Date]\n range?: [number, number]\n format?: (value: Date) => string\n}\n\nconst S = 1000, M = 60 * S, H = 60 * M, D = 24 * H, W = 7 * D, MO = 30 * D, Y = 365 * D\n\nconst INTERVALS: { ms: number; fmt: (d: Date) => string }[] = [\n { ms: S, fmt: fmtTime },\n { ms: 5 * S, fmt: fmtTime },\n { ms: 15 * S, fmt: fmtTime },\n { ms: 30 * S, fmt: fmtTime },\n { ms: M, fmt: fmtTime },\n { ms: 5 * M, fmt: fmtTime },\n { ms: 15 * M, fmt: fmtTime },\n { ms: H, fmt: fmtTime },\n { ms: 3 * H, fmt: fmtTime },\n { ms: 6 * H, fmt: fmtTime },\n { ms: 12 * H, fmt: fmtTime },\n { ms: D, fmt: fmtDate },\n { ms: W, fmt: fmtDate },\n { ms: MO, fmt: fmtMonthYear },\n { ms: 3 * MO, fmt: fmtMonthYear },\n { ms: 6 * MO, fmt: fmtMonthYear },\n { ms: Y, fmt: fmtYear },\n { ms: 5 * Y, fmt: fmtYear },\n { ms: 10 * Y, fmt: fmtYear },\n]\n\nexport function createTimeScale(opts?: TimeScaleOpts): Scale {\n let dMin = ts(opts?.domain?.[0] ?? 0)\n let dMax = ts(opts?.domain?.[1] ?? Date.now())\n let rMin = opts?.range?.[0] ?? 0\n let rMax = opts?.range?.[1] ?? 1\n const customFmt = opts?.format\n\n function map(value: number | string | Date): number {\n const v = ts(value)\n const span = dMax - dMin\n if (span === 0) return (rMin + rMax) / 2\n return rMin + ((v - dMin) / span) * (rMax - rMin)\n }\n\n function invert(px: number): number {\n const span = rMax - rMin\n if (span === 0) return (dMin + dMax) / 2\n return dMin + ((px - rMin) / span) * (dMax - dMin)\n }\n\n function ticks(count = 6): Tick[] {\n const span = dMax - dMin\n if (span <= 0) return []\n\n const target = span / count\n const interval = INTERVALS.find((i) => i.ms >= target) ?? INTERVALS[INTERVALS.length - 1]!\n const fmt = customFmt ?? interval.fmt\n const result: Tick[] = []\n const start = Math.ceil(dMin / interval.ms) * interval.ms\n\n for (let t = start; t <= dMax; t += interval.ms) {\n const d = new Date(t)\n result.push({ value: d, position: map(t), label: fmt(d) })\n }\n return result\n }\n\n return {\n map,\n invert,\n ticks,\n setDomain(min, max) { dMin = ts(min); dMax = ts(max) },\n setRange(min, max) { rMin = min; rMax = max },\n getDomain() { return [new Date(dMin), new Date(dMax)] },\n getRange() { return [rMin, rMax] },\n bandwidth() { return 0 },\n }\n}\n\nfunction ts(v: number | string | Date): number {\n return v instanceof Date ? v.getTime() : typeof v === 'string' ? new Date(v).getTime() : v\n}\n\nconst MONTHS = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'] as const\n\nfunction pad(n: number): string { return n < 10 ? `0${n}` : String(n) }\nfunction fmtTime(d: Date): string { return `${pad(d.getHours())}:${pad(d.getMinutes())}` }\nfunction fmtDate(d: Date): string { return `${MONTHS[d.getMonth()]} ${d.getDate()}` }\nfunction fmtMonthYear(d: Date): string { return `${MONTHS[d.getMonth()]} ${d.getFullYear()}` }\nfunction fmtYear(d: Date): string { return String(d.getFullYear()) }\n"]}
1
+ {"version":3,"sources":["../src/api/convenience.ts","../src/interaction/link.ts","../src/data/streaming.ts","../src/features/dataset.ts","../src/features/datazoom.ts","../src/features/datazoom-widget.ts","../src/features/graphic.ts","../src/features/richtext.ts","../src/registry/registry.ts","../src/scales/time.ts"],"names":["createChart","lineChartType","barChartType","stackedBarChartType","horizontalBarChartType","pieChartType","donutChartType","scatterChartType","sparklineChartType","areaChartType","radarChartType","bubbleChartType","candlestickChartType","gaugeChartType","waterfallChartType","funnelChartType","heatmapChartType","boxplotChartType","histogramChartType","treemapChartType","polarChartType","radialBarChartType","lollipopChartType","bulletChartType","dumbbellChartType","calendarChartType","comboChartType","sankeyChartType","sunburstChartType","treeChartType","graphChartType","parallelChartType","themeRiverChartType","pictorialBarChartType","chordChartType","geoChartType","linesChartType","matrixChartType","customChartType","ohlcChartType","stepChartType","volumeChartType","rangeChartType","baselineChartType","kagiChartType","renkoChartType","violinChartType","packChartType","voronoiChartType","wordcloudChartType","pillarChartType","charts","rect","PathBuilder","path","text","pad","circle","line","group"],"mappings":"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","file":"index.cjs","sourcesContent":["import type { ChartData, ChartOptions, ChartInstance } from '../types'\nimport { createChart } from './create'\nimport { lineChartType } from '../charts/line/line-type'\nimport { barChartType } from '../charts/bar/bar-type'\nimport { stackedBarChartType } from '../charts/bar/stacked-bar-type'\nimport { horizontalBarChartType } from '../charts/bar/horizontal-bar-type'\nimport { pieChartType, donutChartType } from '../charts/pie/pie-type'\nimport { scatterChartType } from '../charts/scatter/scatter-type'\nimport { sparklineChartType } from '../charts/sparkline/sparkline-type'\nimport { areaChartType } from '../charts/area/area-type'\nimport { radarChartType } from '../charts/radar/radar-type'\nimport { bubbleChartType } from '../charts/bubble/bubble-type'\nimport { candlestickChartType } from '../charts/candlestick/candlestick-type'\nimport { gaugeChartType } from '../charts/gauge/gauge-type'\nimport { waterfallChartType } from '../charts/waterfall/waterfall-type'\nimport { funnelChartType } from '../charts/funnel/funnel-type'\nimport { heatmapChartType } from '../charts/heatmap/heatmap-type'\nimport { boxplotChartType } from '../charts/boxplot/boxplot-type'\nimport { histogramChartType } from '../charts/histogram/histogram-type'\nimport { treemapChartType } from '../charts/treemap/treemap-type'\nimport { polarChartType } from '../charts/polar/polar-type'\nimport { radialBarChartType } from '../charts/radialbar/radialbar-type'\nimport { lollipopChartType } from '../charts/lollipop/lollipop-type'\nimport { bulletChartType } from '../charts/bullet/bullet-type'\nimport { dumbbellChartType } from '../charts/dumbbell/dumbbell-type'\nimport { calendarChartType } from '../charts/calendar/calendar-type'\nimport { comboChartType } from '../charts/combo/combo-type'\nimport { sankeyChartType } from '../charts/sankey/sankey-type'\nimport { sunburstChartType } from '../charts/sunburst/sunburst-type'\nimport { treeChartType } from '../charts/tree/tree-type'\nimport { graphChartType } from '../charts/graph/graph-type'\nimport { parallelChartType } from '../charts/parallel/parallel-type'\nimport { themeRiverChartType } from '../charts/themeriver/themeriver-type'\nimport { pictorialBarChartType } from '../charts/pictorialbar/pictorialbar-type'\nimport { chordChartType } from '../charts/chord/chord-type'\nimport { geoChartType } from '../charts/geo/geo-type'\nimport { linesChartType } from '../charts/lines/lines-type'\nimport { matrixChartType } from '../charts/matrix/matrix-type'\nimport { customChartType } from '../charts/custom/custom-type'\nimport { ohlcChartType } from '../charts/ohlc/ohlc-type'\nimport { stepChartType } from '../charts/step/step-type'\nimport { volumeChartType } from '../charts/volume/volume-type'\nimport { rangeChartType } from '../charts/range/range-type'\nimport { baselineChartType } from '../charts/baseline/baseline-type'\nimport { kagiChartType } from '../charts/kagi/kagi-type'\nimport { renkoChartType } from '../charts/renko/renko-type'\nimport { violinChartType } from '../charts/violin/violin-type'\nimport { packChartType } from '../charts/pack/pack-type'\nimport { voronoiChartType } from '../charts/voronoi/voronoi-type'\nimport { wordcloudChartType } from '../charts/wordcloud/wordcloud-type'\nimport { pillarChartType } from '../charts/pillar/pillar-type'\n\ninterface ChartConfig extends ChartOptions {\n data: ChartData\n debug?: boolean\n}\n\nexport function Line(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, lineChartType, data, options)\n}\n\nexport function Bar(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, barChartType, data, options)\n}\n\nexport function StackedBar(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, stackedBarChartType, data, options)\n}\n\nexport function HorizontalBar(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, horizontalBarChartType, data, options)\n}\n\nexport function Pie(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, pieChartType, data, options)\n}\n\nexport function Donut(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, donutChartType, data, options)\n}\n\nexport function Scatter(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, scatterChartType, data, options)\n}\n\nexport function Sparkline(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, sparklineChartType, data, options)\n}\n\nexport function Area(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, areaChartType, data, options)\n}\n\nexport function Radar(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, radarChartType, data, options)\n}\n\nexport function Bubble(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, bubbleChartType, data, options)\n}\n\nexport function Candlestick(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, candlestickChartType, data, options)\n}\n\nexport function Gauge(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, gaugeChartType, data, options)\n}\n\nexport function Waterfall(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, waterfallChartType, data, options)\n}\n\nexport function Funnel(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, funnelChartType, data, options)\n}\n\nexport function Heatmap(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, heatmapChartType, data, options)\n}\n\nexport function Boxplot(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, boxplotChartType, data, options)\n}\n\nexport function Histogram(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, histogramChartType, data, options)\n}\n\nexport function Treemap(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, treemapChartType, data, options)\n}\n\nexport function Polar(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, polarChartType, data, options)\n}\n\nexport function RadialBar(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, radialBarChartType, data, options)\n}\n\nexport function Lollipop(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, lollipopChartType, data, options)\n}\n\nexport function Bullet(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, bulletChartType, data, options)\n}\n\nexport function Dumbbell(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, dumbbellChartType, data, options)\n}\n\nexport function Calendar(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, calendarChartType, data, options)\n}\n\nexport function Combo(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, comboChartType, data, options)\n}\n\nexport function Sankey(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, sankeyChartType, data, options)\n}\n\nexport function Sunburst(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, sunburstChartType, data, options)\n}\n\nexport function Tree(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, treeChartType, data, options)\n}\n\nexport function Graph(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, graphChartType, data, options)\n}\n\nexport function Parallel(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, parallelChartType, data, options)\n}\n\nexport function ThemeRiver(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, themeRiverChartType, data, options)\n}\n\nexport function PictorialBar(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, pictorialBarChartType, data, options)\n}\n\nexport function Chord(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, chordChartType, data, options)\n}\n\nexport function Geo(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, geoChartType, data, options)\n}\n\nexport function Lines(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, linesChartType, data, options)\n}\n\nexport function Matrix(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, matrixChartType, data, options)\n}\n\nexport function Custom(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, customChartType, data, options)\n}\n\nexport function OHLC(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, ohlcChartType, data, options)\n}\n\nexport function Step(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, stepChartType, data, options)\n}\n\nexport function Volume(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, volumeChartType, data, options)\n}\n\nexport function Range(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, rangeChartType, data, options)\n}\n\nexport function Baseline(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, baselineChartType, data, options)\n}\n\nexport function Kagi(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, kagiChartType, data, options)\n}\n\nexport function Renko(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, renkoChartType, data, options)\n}\n\nexport function Violin(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, violinChartType, data, options)\n}\n\nexport function Pack(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, packChartType, data, options)\n}\n\nexport function Voronoi(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, voronoiChartType, data, options)\n}\n\nexport function WordCloud(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, wordcloudChartType, data, options)\n}\n\nexport function Pillar(target: string | HTMLElement, config: ChartConfig): ChartInstance {\n const { data, ...options } = config\n return createChart(target, pillarChartType, data, options)\n}\n","/**\n * Linked charts — sync crosshair position across multiple chart instances.\n *\n * Usage:\n * ```ts\n * const unlink = linkCharts(chart1, chart2, chart3)\n * // Later:\n * unlink()\n * ```\n */\n\nimport type { ChartInstance } from '../types'\n\n/**\n * Link multiple chart instances so their crosshair positions stay in sync.\n * When one chart emits a crosshair:move event, all others receive it.\n *\n * Returns an unlink function to disconnect the charts.\n */\nexport function linkCharts(...charts: ChartInstance[]): () => void {\n if (charts.length < 2) return () => {}\n\n let broadcasting = false\n const unsubs: (() => void)[] = []\n\n for (const chart of charts) {\n const unsub = chart.on('crosshair:move', (payload: unknown) => {\n if (broadcasting) return\n broadcasting = true\n\n const { x, label } = payload as { x: number; label: string | number | Date }\n\n // Broadcast to all other charts via public _bus\n for (const other of charts) {\n if (other === chart) continue\n other._bus.emit('crosshair:move' as never, { x, label } as never)\n }\n\n broadcasting = false\n })\n\n unsubs.push(unsub)\n\n // Also sync hide events\n const unsubHide = chart.on('crosshair:hide', () => {\n if (broadcasting) return\n broadcasting = true\n for (const other of charts) {\n if (other === chart) continue\n other._bus.emit('crosshair:hide' as never, undefined as never)\n }\n broadcasting = false\n })\n unsubs.push(unsubHide)\n }\n\n return () => {\n for (const unsub of unsubs) unsub()\n unsubs.length = 0\n }\n}\n","/**\n * Realtime streaming data module.\n *\n * Provides a circular buffer + rolling window for live data feeds.\n * Throttled re-render via requestAnimationFrame.\n *\n * Usage:\n * ```ts\n * const stream = createStreamingChart(chart, {\n * windowSize: 100, // show last 100 points\n * seriesCount: 3, // 3 data series\n * seriesNames: ['CPU', 'Memory', 'Disk'],\n * })\n *\n * // Push single data point (one value per series)\n * stream.push([45, 72, 30], 'now')\n *\n * // Push batch of data points\n * stream.pushBatch([\n * { values: [45, 72, 30], label: '10:00' },\n * { values: [46, 71, 31], label: '10:01' },\n * ])\n *\n * // Pause / resume\n * stream.pause()\n * stream.resume()\n *\n * // Clean up\n * stream.destroy()\n * ```\n */\n\nimport type { ChartInstance, ChartData } from '../types'\n\n// ---------------------------------------------------------------------------\n// Config\n// ---------------------------------------------------------------------------\n\nexport interface StreamingConfig {\n /** Number of data points visible in the rolling window. Default 100. */\n windowSize?: number\n /** Number of data series. Default 1. */\n seriesCount?: number\n /** Series names. Default ['Series 1', 'Series 2', ...] */\n seriesNames?: string[]\n /** Series colors (optional — falls back to chart palette). */\n seriesColors?: string[]\n /** Maximum buffer size (oldest data is discarded beyond this). Default 10x windowSize. */\n maxBufferSize?: number\n /** Throttle interval in ms (0 = use rAF). Default 0. */\n throttleMs?: number\n}\n\n// ---------------------------------------------------------------------------\n// Instance\n// ---------------------------------------------------------------------------\n\nexport interface StreamingInstance {\n /** Push one data point (one value per series). */\n push(values: number[], label?: string | number | Date): void\n /** Push a batch of data points at once. */\n pushBatch(points: Array<{ values: number[]; label?: string | number | Date }>): void\n /** Pause streaming (stops re-renders but still accepts data). */\n pause(): void\n /** Resume streaming re-renders. */\n resume(): void\n /** Clear all buffered data. */\n clear(): void\n /** Get current buffer size. */\n getBufferSize(): number\n /** Destroy the streaming instance and clean up. */\n destroy(): void\n}\n\n// ---------------------------------------------------------------------------\n// Implementation\n// ---------------------------------------------------------------------------\n\nexport function createStreamingChart(\n chart: ChartInstance,\n config: StreamingConfig = {},\n): StreamingInstance {\n const windowSize = config.windowSize ?? 100\n const seriesCount = config.seriesCount ?? 1\n const maxBuffer = config.maxBufferSize ?? windowSize * 10\n const throttleMs = config.throttleMs ?? 0\n\n const names: string[] = config.seriesNames\n ?? Array.from({ length: seriesCount }, (_, i) => `Series ${i + 1}`)\n const colors: (string | undefined)[] = config.seriesColors ?? []\n\n // Circular buffers: one per series + one for labels\n const buffers: number[][] = Array.from({ length: seriesCount }, () => [])\n const labels: (string | number | Date)[] = []\n let totalPushed = 0\n\n let paused = false\n let dirty = false\n let rafId: number | null = null\n let throttleTimer: ReturnType<typeof setTimeout> | null = null\n\n // -----------------------------------------------------------------------\n // Internal: schedule a chart update\n // -----------------------------------------------------------------------\n\n function scheduleUpdate(): void {\n if (paused) { dirty = true; return }\n\n if (throttleMs > 0) {\n if (throttleTimer !== null) return\n throttleTimer = setTimeout(() => {\n throttleTimer = null\n flush()\n }, throttleMs)\n } else {\n if (rafId !== null) return\n rafId = requestAnimationFrame(() => {\n rafId = null\n flush()\n })\n }\n }\n\n function flush(): void {\n dirty = false\n\n // Build ChartData from the rolling window\n const start = Math.max(0, labels.length - windowSize)\n const windowLabels = labels.slice(start)\n const series = buffers.map((buf, i) => ({\n name: names[i] ?? `Series ${i + 1}`,\n values: buf.slice(start),\n ...(colors[i] ? { color: colors[i] } : {}),\n }))\n\n const data: ChartData = {\n labels: windowLabels as string[],\n series,\n }\n\n chart.setData(data)\n }\n\n // -----------------------------------------------------------------------\n // Trim buffer if it exceeds maxBuffer\n // -----------------------------------------------------------------------\n\n function trimBuffer(): void {\n if (labels.length <= maxBuffer) return\n const excess = labels.length - maxBuffer\n labels.splice(0, excess)\n for (const buf of buffers) {\n buf.splice(0, excess)\n }\n }\n\n // -----------------------------------------------------------------------\n // Public API\n // -----------------------------------------------------------------------\n\n return {\n push(values: number[], label?: string | number | Date): void {\n totalPushed++\n const lbl = label ?? totalPushed\n labels.push(lbl)\n\n for (let i = 0; i < seriesCount; i++) {\n buffers[i]!.push(values[i] ?? 0)\n }\n\n trimBuffer()\n scheduleUpdate()\n },\n\n pushBatch(points): void {\n for (const pt of points) {\n totalPushed++\n const lbl = pt.label ?? totalPushed\n labels.push(lbl)\n\n for (let i = 0; i < seriesCount; i++) {\n buffers[i]!.push(pt.values[i] ?? 0)\n }\n }\n\n trimBuffer()\n scheduleUpdate()\n },\n\n pause(): void {\n paused = true\n },\n\n resume(): void {\n paused = false\n if (dirty) scheduleUpdate()\n },\n\n clear(): void {\n labels.length = 0\n for (const buf of buffers) buf.length = 0\n totalPushed = 0\n dirty = false\n },\n\n getBufferSize(): number {\n return labels.length\n },\n\n destroy(): void {\n if (rafId !== null) cancelAnimationFrame(rafId)\n if (throttleTimer !== null) clearTimeout(throttleTimer)\n labels.length = 0\n for (const buf of buffers) buf.length = 0\n },\n }\n}\n","import type { ChartData, Series } from '../types'\n\n/**\n * Dataset — data transformation utilities for filtering, sorting, and\n * aggregating chart data before rendering.\n */\n\ntype Labels = ChartData['labels']\n\nfunction getLabels(data: ChartData): NonNullable<Labels> {\n return data.labels ?? []\n}\n\n// ---------------------------------------------------------------------------\n// Filter\n// ---------------------------------------------------------------------------\n\n/** Filter series by a predicate on values. */\nexport function filterData(\n data: ChartData,\n predicate: (value: number, index: number, seriesIndex: number) => boolean,\n): ChartData {\n const labels = getLabels(data)\n const keepIndices = labels\n .map((_: unknown, i: number) =>\n data.series.some((s, si) => predicate(s.values[i] ?? 0, i, si)) ? i : -1,\n )\n .filter((i: number) => i >= 0)\n\n return {\n ...data,\n series: data.series.map((s, si) => ({\n ...s,\n values: s.values.filter((v, i) => predicate(v, i, si)),\n })),\n labels: keepIndices.map((i: number) => (labels as unknown[])[i]) as Labels,\n }\n}\n\n/** Filter to keep only specific series by name or index. */\nexport function filterSeries(\n data: ChartData,\n keep: (string | number)[],\n): ChartData {\n return {\n ...data,\n series: data.series.filter((s, i) =>\n keep.includes(s.name) || keep.includes(i),\n ),\n }\n}\n\n/** Filter to keep only specific labels/categories. */\nexport function filterLabels(\n data: ChartData,\n keep: (string | number | Date)[],\n): ChartData {\n const labels = getLabels(data)\n const keepSet = new Set(keep.map(String))\n const indices = (labels as unknown[])\n .map((l, i) => keepSet.has(String(l)) ? i : -1)\n .filter(i => i >= 0)\n\n return {\n ...data,\n labels: indices.map(i => (labels as unknown[])[i]) as Labels,\n series: data.series.map(s => ({\n ...s,\n values: indices.map(i => s.values[i] ?? 0),\n })),\n }\n}\n\n// ---------------------------------------------------------------------------\n// Sort\n// ---------------------------------------------------------------------------\n\n/** Sort data by label or by a specific series' values. */\nexport function sortData(\n data: ChartData,\n by: 'label' | number,\n direction: 'asc' | 'desc' = 'asc',\n): ChartData {\n const labels = getLabels(data)\n const indices = (labels as unknown[]).map((_: unknown, i: number) => i)\n const dir = direction === 'asc' ? 1 : -1\n\n if (by === 'label') {\n indices.sort((a, b) => dir * String((labels as unknown[])[a]).localeCompare(String((labels as unknown[])[b])))\n } else {\n const series = data.series[by]\n if (series) {\n indices.sort((a, b) => dir * ((series.values[a] ?? 0) - (series.values[b] ?? 0)))\n }\n }\n\n return {\n ...data,\n labels: indices.map(i => (labels as unknown[])[i]) as Labels,\n series: data.series.map(s => ({\n ...s,\n values: indices.map(i => s.values[i] ?? 0),\n })),\n }\n}\n\n// ---------------------------------------------------------------------------\n// Aggregate\n// ---------------------------------------------------------------------------\n\ntype AggFn = 'sum' | 'avg' | 'min' | 'max' | 'count'\n\n/** Aggregate all series values per label into a single series. */\nexport function aggregateData(\n data: ChartData,\n fn: AggFn = 'sum',\n): ChartData {\n const labels = getLabels(data)\n const agg = getAggFn(fn)\n const values = (labels as unknown[]).map((_: unknown, i: number) => {\n const vals = data.series.map(s => s.values[i] ?? 0)\n return agg(vals)\n })\n\n return {\n ...data,\n series: [{ name: fn, values }],\n }\n}\n\nfunction getAggFn(fn: AggFn): (vals: number[]) => number {\n switch (fn) {\n case 'sum': return vals => vals.reduce((a, b) => a + b, 0)\n case 'avg': return vals => vals.length > 0 ? vals.reduce((a, b) => a + b, 0) / vals.length : 0\n case 'min': return vals => Math.min(...vals)\n case 'max': return vals => Math.max(...vals)\n case 'count': return vals => vals.filter(v => v !== 0).length\n }\n}\n\n// ---------------------------------------------------------------------------\n// Transform pipeline\n// ---------------------------------------------------------------------------\n\ntype TransformFn = (data: ChartData) => ChartData\n\n/** Apply a chain of transforms to chart data. */\nexport function transformData(data: ChartData, ...transforms: TransformFn[]): ChartData {\n return transforms.reduce((d, fn) => fn(d), data)\n}\n\n// ---------------------------------------------------------------------------\n// Pivot / transpose\n// ---------------------------------------------------------------------------\n\n/** Transpose rows and columns — series become labels and vice versa. */\nexport function pivotData(data: ChartData): ChartData {\n const labels = getLabels(data)\n const newLabels = data.series.map(s => s.name) as string[]\n const newSeries: Series[] = (labels as unknown[]).map((label: unknown, i: number) => ({\n name: String(label),\n values: data.series.map(s => s.values[i] ?? 0),\n }))\n\n return { labels: newLabels, series: newSeries }\n}\n\n// ---------------------------------------------------------------------------\n// Slice / window\n// ---------------------------------------------------------------------------\n\n/** Take a slice of the data (for pagination or windowing). */\nexport function sliceData(data: ChartData, start: number, end?: number): ChartData {\n const labels = getLabels(data)\n return {\n ...data,\n labels: (labels as unknown[]).slice(start, end) as Labels,\n series: data.series.map(s => ({\n ...s,\n values: s.values.slice(start, end),\n })),\n }\n}\n","import type { ChartData, RenderNode } from '../types'\nimport { rect, path, text } from '../render/tree'\nimport { PathBuilder } from '../render/tree'\n\n/**\n * DataZoom — interactive data range selection and filtering.\n *\n * Provides utilities to:\n * 1. Filter chart data to a visible window (applyDataZoom)\n * 2. Render a zoom slider control (renderDataZoomSlider)\n * 3. Manage zoom state (createDataZoomState)\n */\n\nexport interface DataZoomRange {\n /** Start percentage 0..1 */\n start: number\n /** End percentage 0..1 */\n end: number\n}\n\nexport interface DataZoomState {\n range: DataZoomRange\n setRange(start: number, end: number): void\n reset(): void\n zoomIn(factor?: number): void\n zoomOut(factor?: number): void\n panLeft(amount?: number): void\n panRight(amount?: number): void\n}\n\nexport interface DataZoomSliderOptions {\n x: number\n y: number\n width: number\n height?: number\n trackColor?: string\n handleColor?: string\n selectedColor?: string\n showMinimap?: boolean\n}\n\n/** Create a DataZoom state manager. */\nexport function createDataZoomState(\n initial?: Partial<DataZoomRange>,\n onChange?: (range: DataZoomRange) => void,\n): DataZoomState {\n const range: DataZoomRange = {\n start: initial?.start ?? 0,\n end: initial?.end ?? 1,\n }\n\n function clamp() {\n range.start = Math.max(0, Math.min(range.start, 1))\n range.end = Math.max(range.start + 0.01, Math.min(range.end, 1))\n onChange?.(range)\n }\n\n return {\n range,\n setRange(start: number, end: number) {\n range.start = start\n range.end = end\n clamp()\n },\n reset() {\n range.start = 0\n range.end = 1\n onChange?.(range)\n },\n zoomIn(factor = 0.1) {\n const center = (range.start + range.end) / 2\n const halfSpan = (range.end - range.start) / 2 * (1 - factor)\n range.start = center - halfSpan\n range.end = center + halfSpan\n clamp()\n },\n zoomOut(factor = 0.1) {\n const center = (range.start + range.end) / 2\n const halfSpan = (range.end - range.start) / 2 * (1 + factor)\n range.start = center - halfSpan\n range.end = center + halfSpan\n clamp()\n },\n panLeft(amount = 0.05) {\n const span = range.end - range.start\n range.start = Math.max(0, range.start - amount)\n range.end = range.start + span\n clamp()\n },\n panRight(amount = 0.05) {\n const span = range.end - range.start\n range.end = Math.min(1, range.end + amount)\n range.start = range.end - span\n clamp()\n },\n }\n}\n\n/** Apply DataZoom range to filter chart data. */\nexport function applyDataZoom(data: ChartData, range: DataZoomRange): ChartData {\n const labels = data.labels ?? []\n const total = labels.length\n if (total === 0) return data\n\n const startIdx = Math.floor(range.start * total)\n const endIdx = Math.ceil(range.end * total)\n\n return {\n ...data,\n labels: (labels as unknown[]).slice(startIdx, endIdx) as ChartData['labels'],\n series: data.series.map(s => ({\n ...s,\n values: s.values.slice(startIdx, endIdx),\n })),\n }\n}\n\n/** Render a DataZoom slider as RenderNode[]. */\nexport function renderDataZoomSlider(\n data: ChartData,\n range: DataZoomRange,\n opts: DataZoomSliderOptions,\n): RenderNode[] {\n const nodes: RenderNode[] = []\n const h = opts.height ?? 30\n const trackColor = opts.trackColor ?? '#e5e7eb'\n const handleColor = opts.handleColor ?? '#6b7280'\n const selectedColor = opts.selectedColor ?? 'rgba(59,130,246,0.2)'\n\n // Track background\n nodes.push(rect(opts.x, opts.y, opts.width, h, {\n class: 'chartts-datazoom-track',\n fill: trackColor,\n rx: 4,\n ry: 4,\n }))\n\n // Minimap sparkline\n if (opts.showMinimap !== false && data.series[0]) {\n const values = data.series[0].values\n const max = Math.max(...values.map(Math.abs), 1)\n const pb = new PathBuilder()\n\n for (let i = 0; i < values.length; i++) {\n const x = opts.x + (i / Math.max(values.length - 1, 1)) * opts.width\n const y = opts.y + h - (Math.abs(values[i]!) / max) * (h - 4) - 2\n if (i === 0) pb.moveTo(x, y)\n else pb.lineTo(x, y)\n }\n\n nodes.push(path(pb.build(), {\n class: 'chartts-datazoom-minimap',\n fill: 'none',\n stroke: handleColor,\n strokeWidth: 1,\n strokeOpacity: 0.4,\n }))\n }\n\n // Selected region\n const selX = opts.x + range.start * opts.width\n const selW = (range.end - range.start) * opts.width\n\n nodes.push(rect(selX, opts.y, selW, h, {\n class: 'chartts-datazoom-selected',\n fill: selectedColor,\n rx: 2,\n ry: 2,\n }))\n\n // Left handle\n nodes.push(rect(selX - 3, opts.y + 4, 6, h - 8, {\n class: 'chartts-datazoom-handle chartts-datazoom-handle-left',\n fill: handleColor,\n rx: 3,\n ry: 3,\n cursor: 'ew-resize',\n }))\n\n // Right handle\n nodes.push(rect(selX + selW - 3, opts.y + 4, 6, h - 8, {\n class: 'chartts-datazoom-handle chartts-datazoom-handle-right',\n fill: handleColor,\n rx: 3,\n ry: 3,\n cursor: 'ew-resize',\n }))\n\n // Range labels\n const dlabels = data.labels ?? []\n const total = dlabels.length\n const startIdx = Math.floor(range.start * total)\n const endIdx = Math.min(Math.ceil(range.end * total) - 1, total - 1)\n\n if (total > 0) {\n nodes.push(text(selX, opts.y + h + 12, String((dlabels as unknown[])[startIdx] ?? ''), {\n class: 'chartts-datazoom-label',\n fill: handleColor,\n textAnchor: 'start',\n fontSize: 9,\n }))\n\n nodes.push(text(selX + selW, opts.y + h + 12, String((dlabels as unknown[])[endIdx] ?? ''), {\n class: 'chartts-datazoom-label',\n fill: handleColor,\n textAnchor: 'end',\n fontSize: 9,\n }))\n }\n\n return nodes\n}\n","/**\n * Interactive DataZoom slider widget.\n *\n * A real DOM element with draggable handles and minimap sparkline.\n * Lives outside the chart render loop — manages its own pointer events.\n *\n * Usage:\n * ```ts\n * const widget = createDataZoomWidget({\n * data: fullData,\n * onChange: (range) => {\n * chart.setData(applyDataZoom(fullData, range))\n * },\n * })\n * container.appendChild(widget.element)\n * ```\n */\n\nimport type { ChartData } from '../types'\nimport { createDataZoomState, type DataZoomState, type DataZoomRange } from './datazoom'\n\nexport interface DataZoomWidgetOptions {\n /** Chart data (first series used for minimap sparkline). */\n data: ChartData\n /** Height of the slider in pixels. Default 40. */\n height?: number\n /** Initial visible range. Default { start: 0, end: 1 }. */\n initialRange?: Partial<DataZoomRange>\n /** Called when range changes via user interaction. */\n onChange?: (range: DataZoomRange) => void\n /** Track background color. */\n trackColor?: string\n /** Handle color. */\n handleColor?: string\n /** Selected region color. */\n selectedColor?: string\n /** Minimap line color. */\n minimapColor?: string\n}\n\nexport interface DataZoomWidget {\n /** The DOM element to insert into the page. */\n element: HTMLElement\n /** The state manager (setRange, reset, zoomIn, zoomOut, panLeft, panRight). */\n state: DataZoomState\n /** Update minimap sparkline data. */\n setData(data: ChartData): void\n /** Destroy and clean up. */\n destroy(): void\n}\n\nexport function createDataZoomWidget(options: DataZoomWidgetOptions): DataZoomWidget {\n const h = options.height ?? 40\n const trackColor = options.trackColor ?? '#e5e7eb'\n const handleColor = options.handleColor ?? '#6b7280'\n const selectedColor = options.selectedColor ?? 'rgba(59,130,246,0.25)'\n const minimapColor = options.minimapColor ?? '#9ca3af'\n\n let currentData = options.data\n\n // State\n const state = createDataZoomState(\n options.initialRange,\n (range) => {\n updateLayout()\n options.onChange?.(range)\n },\n )\n\n // -----------------------------------------------------------------------\n // DOM construction\n // -----------------------------------------------------------------------\n\n const root = document.createElement('div')\n root.className = 'chartts-datazoom-widget'\n root.style.cssText = `position:relative;height:${h}px;width:100%;user-select:none;touch-action:none;`\n\n // Track background\n const track = document.createElement('div')\n track.className = 'chartts-datazoom-track'\n track.style.cssText = `position:absolute;inset:0;background:${trackColor};border-radius:4px;overflow:hidden;`\n root.appendChild(track)\n\n // Minimap canvas\n const minimap = document.createElement('canvas')\n minimap.className = 'chartts-datazoom-minimap'\n minimap.style.cssText = 'position:absolute;inset:0;width:100%;height:100%;'\n track.appendChild(minimap)\n\n // Left mask (dimmed area)\n const maskLeft = document.createElement('div')\n maskLeft.style.cssText = `position:absolute;top:0;left:0;height:100%;background:rgba(0,0,0,0.15);border-radius:4px 0 0 4px;pointer-events:none;`\n root.appendChild(maskLeft)\n\n // Right mask (dimmed area)\n const maskRight = document.createElement('div')\n maskRight.style.cssText = `position:absolute;top:0;right:0;height:100%;background:rgba(0,0,0,0.15);border-radius:0 4px 4px 0;pointer-events:none;`\n root.appendChild(maskRight)\n\n // Selected region (draggable for pan)\n const selected = document.createElement('div')\n selected.className = 'chartts-datazoom-selected'\n selected.style.cssText = `position:absolute;top:0;height:100%;background:${selectedColor};cursor:grab;border-top:2px solid ${handleColor};border-bottom:2px solid ${handleColor};`\n root.appendChild(selected)\n\n // Left handle\n const handleLeft = document.createElement('div')\n handleLeft.className = 'chartts-datazoom-handle-left'\n handleLeft.style.cssText = `position:absolute;top:2px;width:8px;height:${h - 4}px;background:${handleColor};border-radius:4px;cursor:ew-resize;z-index:2;transform:translateX(-50%);`\n root.appendChild(handleLeft)\n\n // Right handle\n const handleRight = document.createElement('div')\n handleRight.className = 'chartts-datazoom-handle-right'\n handleRight.style.cssText = `position:absolute;top:2px;width:8px;height:${h - 4}px;background:${handleColor};border-radius:4px;cursor:ew-resize;z-index:2;transform:translateX(-50%);`\n root.appendChild(handleRight)\n\n // -----------------------------------------------------------------------\n // Layout update\n // -----------------------------------------------------------------------\n\n function updateLayout(): void {\n const w = root.clientWidth || root.offsetWidth || 300\n const { start, end } = state.range\n\n const leftPx = start * w\n const rightPx = end * w\n const selWidth = rightPx - leftPx\n\n maskLeft.style.width = `${leftPx}px`\n maskRight.style.width = `${w - rightPx}px`\n\n selected.style.left = `${leftPx}px`\n selected.style.width = `${selWidth}px`\n\n handleLeft.style.left = `${leftPx}px`\n handleRight.style.left = `${rightPx}px`\n }\n\n // -----------------------------------------------------------------------\n // Minimap rendering\n // -----------------------------------------------------------------------\n\n function drawMinimap(): void {\n const w = root.clientWidth || root.offsetWidth || 300\n const dpr = window.devicePixelRatio || 1\n minimap.width = Math.round(w * dpr)\n minimap.height = Math.round(h * dpr)\n minimap.style.width = `${w}px`\n minimap.style.height = `${h}px`\n\n const ctx = minimap.getContext('2d')\n if (!ctx) return\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0)\n ctx.clearRect(0, 0, w, h)\n\n const series = currentData.series[0]\n if (!series || series.values.length === 0) return\n\n const values = series.values.filter(v => !isNaN(v))\n if (values.length === 0) return\n\n const max = Math.max(...values)\n const min = Math.min(...values)\n const range = max - min || 1\n const pad = 4\n\n ctx.beginPath()\n ctx.strokeStyle = minimapColor\n ctx.lineWidth = 1\n ctx.globalAlpha = 0.5\n\n let started = false\n for (let i = 0; i < series.values.length; i++) {\n const v = series.values[i]!\n if (isNaN(v)) continue\n const x = (i / Math.max(series.values.length - 1, 1)) * w\n const y = h - pad - ((v - min) / range) * (h - pad * 2)\n if (!started) { ctx.moveTo(x, y); started = true }\n else ctx.lineTo(x, y)\n }\n ctx.stroke()\n\n // Fill area below the line\n if (started) {\n ctx.lineTo(w, h)\n ctx.lineTo(0, h)\n ctx.closePath()\n ctx.fillStyle = minimapColor\n ctx.globalAlpha = 0.08\n ctx.fill()\n }\n }\n\n // -----------------------------------------------------------------------\n // Pointer interaction\n // -----------------------------------------------------------------------\n\n type DragMode = 'left' | 'right' | 'pan' | null\n let dragMode: DragMode = null\n let dragStartX = 0\n let dragStartRange: DataZoomRange = { start: 0, end: 1 }\n\n function toNormalized(clientX: number): number {\n const r = root.getBoundingClientRect()\n return Math.max(0, Math.min(1, (clientX - r.left) / r.width))\n }\n\n function onPointerDown(e: PointerEvent): void {\n const target = e.target as HTMLElement\n if (target === handleLeft || target.closest('.chartts-datazoom-handle-left')) {\n dragMode = 'left'\n } else if (target === handleRight || target.closest('.chartts-datazoom-handle-right')) {\n dragMode = 'right'\n } else if (target === selected || target.closest('.chartts-datazoom-selected')) {\n dragMode = 'pan'\n selected.style.cursor = 'grabbing'\n } else {\n // Click on track — jump to position\n const pos = toNormalized(e.clientX)\n const span = state.range.end - state.range.start\n state.setRange(pos - span / 2, pos + span / 2)\n return\n }\n\n dragStartX = e.clientX\n dragStartRange = { ...state.range }\n root.setPointerCapture(e.pointerId)\n e.preventDefault()\n }\n\n function onPointerMove(e: PointerEvent): void {\n if (!dragMode) return\n\n const dx = e.clientX - dragStartX\n const w = root.clientWidth || root.offsetWidth || 300\n const delta = dx / w\n\n if (dragMode === 'left') {\n state.setRange(\n Math.min(dragStartRange.start + delta, state.range.end - 0.02),\n state.range.end,\n )\n } else if (dragMode === 'right') {\n state.setRange(\n state.range.start,\n Math.max(dragStartRange.end + delta, state.range.start + 0.02),\n )\n } else if (dragMode === 'pan') {\n const span = dragStartRange.end - dragStartRange.start\n let newStart = dragStartRange.start + delta\n let newEnd = dragStartRange.end + delta\n // Clamp to bounds\n if (newStart < 0) { newStart = 0; newEnd = span }\n if (newEnd > 1) { newEnd = 1; newStart = 1 - span }\n state.setRange(newStart, newEnd)\n }\n }\n\n function onPointerUp(_e: PointerEvent): void {\n dragMode = null\n selected.style.cursor = 'grab'\n }\n\n function onDblClick(): void {\n state.reset()\n }\n\n root.addEventListener('pointerdown', onPointerDown)\n root.addEventListener('pointermove', onPointerMove)\n root.addEventListener('pointerup', onPointerUp)\n root.addEventListener('dblclick', onDblClick)\n\n // -----------------------------------------------------------------------\n // Resize observer\n // -----------------------------------------------------------------------\n\n let resizeObserver: ResizeObserver | null = null\n if (typeof ResizeObserver !== 'undefined') {\n resizeObserver = new ResizeObserver(() => {\n updateLayout()\n drawMinimap()\n })\n resizeObserver.observe(root)\n }\n\n // Initial draw (deferred to next frame so root has dimensions)\n requestAnimationFrame(() => {\n updateLayout()\n drawMinimap()\n })\n\n // -----------------------------------------------------------------------\n // Public API\n // -----------------------------------------------------------------------\n\n return {\n element: root,\n state,\n\n setData(data: ChartData): void {\n currentData = data\n drawMinimap()\n },\n\n destroy(): void {\n resizeObserver?.disconnect()\n root.removeEventListener('pointerdown', onPointerDown)\n root.removeEventListener('pointermove', onPointerMove)\n root.removeEventListener('pointerup', onPointerUp)\n root.removeEventListener('dblclick', onDblClick)\n root.remove()\n },\n }\n}\n","import type { RenderNode, RenderAttrs } from '../types'\nimport { rect, circle, path, text, line, group } from '../render/tree'\n\n/**\n * Graphic — create custom SVG overlay elements for charts.\n *\n * Provides a declarative API to define arbitrary shapes, text, and groups\n * that can be overlaid on any chart. Positions can be absolute (px)\n * or relative (0..1 proportion of chart area).\n */\n\nexport interface GraphicElement {\n type: 'rect' | 'circle' | 'path' | 'text' | 'line' | 'group' | 'image'\n // Position (absolute px or relative 0..1 with position: 'relative')\n x?: number\n y?: number\n // Sizing\n width?: number\n height?: number\n r?: number\n // Content\n d?: string // path data\n content?: string // text content\n x2?: number // line end x\n y2?: number // line end y\n src?: string // image source\n // Children (for groups)\n children?: GraphicElement[]\n // Positioning mode\n position?: 'absolute' | 'relative'\n // Any SVG attributes\n attrs?: Record<string, unknown>\n}\n\nexport interface GraphicArea {\n x: number\n y: number\n width: number\n height: number\n}\n\n/**\n * Convert an array of GraphicElement definitions into RenderNode[].\n * Use `area` to resolve relative positions.\n */\nexport function createGraphicElements(\n elements: GraphicElement[],\n area?: GraphicArea,\n): RenderNode[] {\n return elements.map(el => resolveElement(el, area)).filter(Boolean) as RenderNode[]\n}\n\nfunction resolveElement(el: GraphicElement, area?: GraphicArea): RenderNode | null {\n const resolve = (v: number | undefined, dim: 'x' | 'y'): number => {\n if (v === undefined) return 0\n if (el.position === 'relative' && area) {\n return dim === 'x'\n ? area.x + v * area.width\n : area.y + v * area.height\n }\n return v\n }\n\n const resolveSize = (v: number | undefined, dim: 'w' | 'h'): number => {\n if (v === undefined) return 0\n if (el.position === 'relative' && area) {\n return dim === 'w' ? v * area.width : v * area.height\n }\n return v\n }\n\n const attrs: RenderAttrs = {\n class: 'chartts-graphic',\n ...(el.attrs as RenderAttrs),\n }\n\n switch (el.type) {\n case 'rect':\n return rect(\n resolve(el.x, 'x'),\n resolve(el.y, 'y'),\n resolveSize(el.width, 'w'),\n resolveSize(el.height, 'h'),\n attrs,\n )\n\n case 'circle':\n return circle(\n resolve(el.x, 'x'),\n resolve(el.y, 'y'),\n el.r ?? 10,\n attrs,\n )\n\n case 'path':\n return el.d ? path(el.d, attrs) : null\n\n case 'text':\n return text(\n resolve(el.x, 'x'),\n resolve(el.y, 'y'),\n el.content ?? '',\n attrs,\n )\n\n case 'line':\n return line(\n resolve(el.x, 'x'),\n resolve(el.y, 'y'),\n resolve(el.x2, 'x'),\n resolve(el.y2, 'y'),\n attrs,\n )\n\n case 'group': {\n const children = (el.children ?? [])\n .map(c => resolveElement(c, area))\n .filter(Boolean) as RenderNode[]\n return group(children, attrs)\n }\n\n case 'image':\n return {\n type: 'image' as unknown as RenderNode['type'],\n attrs: {\n ...attrs,\n href: el.src ?? '',\n x: resolve(el.x, 'x'),\n y: resolve(el.y, 'y'),\n width: resolveSize(el.width, 'w'),\n height: resolveSize(el.height, 'h'),\n },\n } as unknown as RenderNode\n\n default:\n return null\n }\n}\n\n/**\n * Convenience: create a horizontal guideline.\n */\nexport function horizontalLine(\n y: number,\n area: GraphicArea,\n attrs?: RenderAttrs,\n): RenderNode {\n return line(area.x, y, area.x + area.width, y, {\n class: 'chartts-graphic-guideline',\n stroke: '#6b7280',\n strokeWidth: 1,\n strokeDasharray: '4,3',\n ...attrs,\n })\n}\n\n/**\n * Convenience: create a vertical guideline.\n */\nexport function verticalLine(\n x: number,\n area: GraphicArea,\n attrs?: RenderAttrs,\n): RenderNode {\n return line(x, area.y, x, area.y + area.height, {\n class: 'chartts-graphic-guideline',\n stroke: '#6b7280',\n strokeWidth: 1,\n strokeDasharray: '4,3',\n ...attrs,\n })\n}\n\n/**\n * Convenience: create a text annotation at a position.\n */\nexport function annotation(\n x: number, y: number,\n content: string,\n attrs?: RenderAttrs,\n): RenderNode {\n return text(x, y, content, {\n class: 'chartts-graphic-annotation',\n fill: '#374151',\n fontSize: 11,\n textAnchor: 'middle',\n dominantBaseline: 'auto',\n ...attrs,\n })\n}\n","import type { RenderNode, RenderAttrs } from '../types'\n\n/**\n * Rich Text — parse simple markup into multi-styled text elements.\n *\n * Supports a simple markup syntax:\n * - {b}bold{/b} or **bold**\n * - {i}italic{/i} or *italic*\n * - {color:red}colored{/color}\n * - {size:16}sized{/size}\n * - {style:name}custom{/style} — uses named styles\n *\n * Returns a RenderNode (text element with tspan children).\n */\n\nexport interface RichTextStyle {\n fontWeight?: number | string\n fontStyle?: string\n fill?: string\n fontSize?: number | string\n fontFamily?: string\n textDecoration?: string\n}\n\nexport interface RichTextOptions {\n /** Default text attributes */\n defaults?: RichTextStyle\n /** Named styles for {style:name} syntax */\n styles?: Record<string, RichTextStyle>\n /** X position */\n x?: number\n /** Y position */\n y?: number\n /** Additional attributes for the parent text element */\n attrs?: RenderAttrs\n}\n\ninterface TextSpan {\n text: string\n style: RichTextStyle\n}\n\n/**\n * Parse rich text markup and return a RenderNode with tspan children.\n */\nexport function parseRichText(\n input: string,\n options: RichTextOptions = {},\n): RenderNode {\n const spans = parse(input, options.defaults ?? {}, options.styles ?? {})\n\n // Build tspan children\n const tspans: RenderNode[] = spans.map(span => ({\n type: 'tspan' as unknown as RenderNode['type'],\n attrs: {\n ...(span.style.fontWeight ? { fontWeight: span.style.fontWeight } : {}),\n ...(span.style.fontStyle ? { fontStyle: span.style.fontStyle } : {}),\n ...(span.style.fill ? { fill: span.style.fill } : {}),\n ...(span.style.fontSize ? { fontSize: span.style.fontSize } : {}),\n ...(span.style.fontFamily ? { fontFamily: span.style.fontFamily } : {}),\n ...(span.style.textDecoration ? { textDecoration: span.style.textDecoration } : {}),\n },\n children: [],\n text: span.text,\n } as unknown as RenderNode))\n\n return {\n type: 'text',\n x: options.x ?? 0,\n y: options.y ?? 0,\n text: '',\n attrs: {\n class: 'chartts-richtext',\n ...options.attrs,\n },\n children: tspans,\n } as unknown as RenderNode\n}\n\n/**\n * Format a value with rich text markup.\n * E.g., richLabel(\"Revenue\", 1234, { valueColor: \"#3b82f6\" })\n * → \"{b}Revenue{/b}: {color:#3b82f6}1,234{/color}\"\n */\nexport function richLabel(\n label: string,\n value: number | string,\n opts?: { valueColor?: string; valueWeight?: string },\n): string {\n const color = opts?.valueColor ?? '#3b82f6'\n const weight = opts?.valueWeight ?? ''\n const valueStr = typeof value === 'number' ? formatNum(value) : value\n const weightTag = weight ? `{b}${valueStr}{/b}` : valueStr\n return `{b}${label}{/b}: {color:${color}}${weightTag}{/color}`\n}\n\n// ---------------------------------------------------------------------------\n// Parser\n// ---------------------------------------------------------------------------\n\nfunction parse(\n input: string,\n defaults: RichTextStyle,\n namedStyles: Record<string, RichTextStyle>,\n): TextSpan[] {\n const spans: TextSpan[] = []\n const styleStack: RichTextStyle[] = [{ ...defaults }]\n\n // Pattern matches: {b}, {/b}, {i}, {/i}, {color:X}, {/color}, {size:X}, {/size}, {style:X}, {/style}, **X**, *X*\n const regex = /\\{(b|\\/b|i|\\/i|color:([^}]+)|\\/color|size:([^}]+)|\\/size|style:([^}]+)|\\/style)\\}|\\*\\*(.+?)\\*\\*|\\*(.+?)\\*/g\n\n let lastIndex = 0\n let match: RegExpExecArray | null\n\n while ((match = regex.exec(input)) !== null) {\n // Text before this match\n if (match.index > lastIndex) {\n spans.push({ text: input.slice(lastIndex, match.index), style: currentStyle(styleStack) })\n }\n\n const tag = match[1]\n const boldShorthand = match[5]\n const italicShorthand = match[6]\n\n if (boldShorthand) {\n spans.push({ text: boldShorthand, style: { ...currentStyle(styleStack), fontWeight: 700 } })\n } else if (italicShorthand) {\n spans.push({ text: italicShorthand, style: { ...currentStyle(styleStack), fontStyle: 'italic' } })\n } else if (tag === 'b') {\n styleStack.push({ ...currentStyle(styleStack), fontWeight: 700 })\n } else if (tag === '/b') {\n popStyle(styleStack)\n } else if (tag === 'i') {\n styleStack.push({ ...currentStyle(styleStack), fontStyle: 'italic' })\n } else if (tag === '/i') {\n popStyle(styleStack)\n } else if (tag?.startsWith('color:')) {\n styleStack.push({ ...currentStyle(styleStack), fill: match[2] })\n } else if (tag === '/color') {\n popStyle(styleStack)\n } else if (tag?.startsWith('size:')) {\n styleStack.push({ ...currentStyle(styleStack), fontSize: parseFloat(match[3]!) || 12 })\n } else if (tag === '/size') {\n popStyle(styleStack)\n } else if (tag?.startsWith('style:')) {\n const named = namedStyles[match[4]!]\n if (named) {\n styleStack.push({ ...currentStyle(styleStack), ...named })\n }\n } else if (tag === '/style') {\n popStyle(styleStack)\n }\n\n lastIndex = match.index + match[0].length\n }\n\n // Remaining text\n if (lastIndex < input.length) {\n spans.push({ text: input.slice(lastIndex), style: currentStyle(styleStack) })\n }\n\n return spans\n}\n\nfunction currentStyle(stack: RichTextStyle[]): RichTextStyle {\n return { ...stack[stack.length - 1]! }\n}\n\nfunction popStyle(stack: RichTextStyle[]): void {\n if (stack.length > 1) stack.pop()\n}\n\nfunction formatNum(n: number): string {\n return n.toLocaleString()\n}\n","import type { ChartTypePlugin, ScaleFactory, ScaleType } from '../types'\n\nconst charts = new Map<string, ChartTypePlugin>()\nconst scales = new Map<ScaleType, ScaleFactory>()\n\nexport function registerChart(plugin: ChartTypePlugin): void {\n if (charts.has(plugin.type)) {\n throw new Error(`[chartts] Chart type \"${plugin.type}\" already registered.`)\n }\n charts.set(plugin.type, plugin)\n}\n\nexport function getChart(type: string): ChartTypePlugin {\n const plugin = charts.get(type)\n if (!plugin) {\n const available = Array.from(charts.keys()).join(', ') || 'none'\n throw new Error(`[chartts] Unknown chart type \"${type}\". Registered: ${available}`)\n }\n return plugin\n}\n\nexport function registerScale(type: ScaleType, factory: ScaleFactory): void {\n scales.set(type, factory)\n}\n\nexport function getScaleFactory(type: ScaleType): ScaleFactory {\n const factory = scales.get(type)\n if (!factory) {\n throw new Error(`[chartts] Unknown scale type \"${type}\".`)\n }\n return factory\n}\n\nexport function clearRegistry(): void {\n charts.clear()\n scales.clear()\n}\n","import type { Scale, Tick } from '../types'\n\nexport interface TimeScaleOpts {\n domain?: [number | Date, number | Date]\n range?: [number, number]\n format?: (value: Date) => string\n}\n\nconst S = 1000, M = 60 * S, H = 60 * M, D = 24 * H, W = 7 * D, MO = 30 * D, Y = 365 * D\n\nconst INTERVALS: { ms: number; fmt: (d: Date) => string }[] = [\n { ms: S, fmt: fmtTime },\n { ms: 5 * S, fmt: fmtTime },\n { ms: 15 * S, fmt: fmtTime },\n { ms: 30 * S, fmt: fmtTime },\n { ms: M, fmt: fmtTime },\n { ms: 5 * M, fmt: fmtTime },\n { ms: 15 * M, fmt: fmtTime },\n { ms: H, fmt: fmtTime },\n { ms: 3 * H, fmt: fmtTime },\n { ms: 6 * H, fmt: fmtTime },\n { ms: 12 * H, fmt: fmtTime },\n { ms: D, fmt: fmtDate },\n { ms: W, fmt: fmtDate },\n { ms: MO, fmt: fmtMonthYear },\n { ms: 3 * MO, fmt: fmtMonthYear },\n { ms: 6 * MO, fmt: fmtMonthYear },\n { ms: Y, fmt: fmtYear },\n { ms: 5 * Y, fmt: fmtYear },\n { ms: 10 * Y, fmt: fmtYear },\n]\n\nexport function createTimeScale(opts?: TimeScaleOpts): Scale {\n let dMin = ts(opts?.domain?.[0] ?? 0)\n let dMax = ts(opts?.domain?.[1] ?? Date.now())\n let rMin = opts?.range?.[0] ?? 0\n let rMax = opts?.range?.[1] ?? 1\n const customFmt = opts?.format\n\n function map(value: number | string | Date): number {\n const v = ts(value)\n const span = dMax - dMin\n if (span === 0) return (rMin + rMax) / 2\n return rMin + ((v - dMin) / span) * (rMax - rMin)\n }\n\n function invert(px: number): number {\n const span = rMax - rMin\n if (span === 0) return (dMin + dMax) / 2\n return dMin + ((px - rMin) / span) * (dMax - dMin)\n }\n\n function ticks(count = 6): Tick[] {\n const span = dMax - dMin\n if (span <= 0) return []\n\n const target = span / count\n const interval = INTERVALS.find((i) => i.ms >= target) ?? INTERVALS[INTERVALS.length - 1]!\n const fmt = customFmt ?? interval.fmt\n const result: Tick[] = []\n const start = Math.ceil(dMin / interval.ms) * interval.ms\n\n for (let t = start; t <= dMax; t += interval.ms) {\n const d = new Date(t)\n result.push({ value: d, position: map(t), label: fmt(d) })\n }\n return result\n }\n\n return {\n map,\n invert,\n ticks,\n setDomain(min, max) { dMin = ts(min); dMax = ts(max) },\n setRange(min, max) { rMin = min; rMax = max },\n getDomain() { return [new Date(dMin), new Date(dMax)] },\n getRange() { return [rMin, rMax] },\n bandwidth() { return 0 },\n }\n}\n\nfunction ts(v: number | string | Date): number {\n return v instanceof Date ? v.getTime() : typeof v === 'string' ? new Date(v).getTime() : v\n}\n\nconst MONTHS = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'] as const\n\nfunction pad(n: number): string { return n < 10 ? `0${n}` : String(n) }\nfunction fmtTime(d: Date): string { return `${pad(d.getHours())}:${pad(d.getMinutes())}` }\nfunction fmtDate(d: Date): string { return `${MONTHS[d.getMonth()]} ${d.getDate()}` }\nfunction fmtMonthYear(d: Date): string { return `${MONTHS[d.getMonth()]} ${d.getFullYear()}` }\nfunction fmtYear(d: Date): string { return String(d.getFullYear()) }\n"]}
package/dist/index.d.cts CHANGED
@@ -28,7 +28,7 @@ export { c as comboChartType } from './combo-type-CCrfKcTc.cjs';
28
28
  export { s as sankeyChartType } from './sankey-type-B0LCLees.cjs';
29
29
  export { s as sunburstChartType } from './sunburst-type-DgP1x1nn.cjs';
30
30
  export { t as treeChartType } from './tree-type-xf-pj4pG.cjs';
31
- export { g as graphChartType } from './graph-type-DF-vww8T.cjs';
31
+ export { g as graphChartType } from './graph-type-DRbMI2E9.cjs';
32
32
  export { p as parallelChartType } from './parallel-type-Cn2B_2-r.cjs';
33
33
  export { t as themeRiverChartType } from './themeriver-type-CGn5zE2F.cjs';
34
34
  export { p as pictorialBarChartType } from './pictorialbar-type-jiWGSHOU.cjs';
@@ -44,6 +44,11 @@ export { r as rangeChartType } from './range-type-imi4626F.cjs';
44
44
  export { b as baselineChartType } from './baseline-type-DskNy6iR.cjs';
45
45
  export { k as kagiChartType } from './kagi-type-DolumABK.cjs';
46
46
  export { r as renkoChartType } from './renko-type-DEe4vBKT.cjs';
47
+ export { v as violinChartType } from './violin-type-6KmTiJNp.cjs';
48
+ export { p as packChartType } from './pack-type-CdtdkPBR.cjs';
49
+ export { v as voronoiChartType } from './voronoi-type-BU5WnrcT.cjs';
50
+ export { w as wordcloudChartType } from './wordcloud-type-CCm8rWK7.cjs';
51
+ export { p as pillarChartType } from './pillar-type-CIcSuZdu.cjs';
47
52
  export { BollingerResult, MACDResult, OHLCAggregation, StochasticResult, atr, bollingerBands, cumulativeReturns, drawdown, ema, logReturns, macd, maxDrawdown, obv, rsi, sharpeRatio, simpleReturns, sma, stochastic, toBollingerData, toMACDData, toOHLC, volatility, volumeDirections, vwap, wma } from './finance.cjs';
48
53
 
49
54
  interface ChartConfig extends ChartOptions {
@@ -95,6 +100,11 @@ declare function Range(target: string | HTMLElement, config: ChartConfig): Chart
95
100
  declare function Baseline(target: string | HTMLElement, config: ChartConfig): ChartInstance;
96
101
  declare function Kagi(target: string | HTMLElement, config: ChartConfig): ChartInstance;
97
102
  declare function Renko(target: string | HTMLElement, config: ChartConfig): ChartInstance;
103
+ declare function Violin(target: string | HTMLElement, config: ChartConfig): ChartInstance;
104
+ declare function Pack(target: string | HTMLElement, config: ChartConfig): ChartInstance;
105
+ declare function Voronoi(target: string | HTMLElement, config: ChartConfig): ChartInstance;
106
+ declare function WordCloud(target: string | HTMLElement, config: ChartConfig): ChartInstance;
107
+ declare function Pillar(target: string | HTMLElement, config: ChartConfig): ChartInstance;
98
108
 
99
109
  /**
100
110
  * SVG DOM Renderer.
@@ -595,4 +605,4 @@ interface DebugPanel {
595
605
  }
596
606
  declare function createDebugPanel(): DebugPanel;
597
607
 
598
- export { Area, Bar, Baseline, Boxplot, type BrushConfig, type BrushInstance, Bubble, Bullet, CORPORATE_THEME, CSS_PREFIX, Calendar, Candlestick, ChartArea, ChartData, ChartInstance, ChartOptions, ChartTypePlugin, Chord, Combo, Custom, DARK_THEME, type DataZoomRange, type DataZoomSliderOptions, type DataZoomState, type DataZoomWidget, type DataZoomWidgetOptions, Donut, Dumbbell, EDITORIAL_THEME, EventBus, Funnel, Gauge, Geo, Graph, type GraphicArea, type GraphicElement, Heatmap, Histogram, HorizontalBar, Kagi, LIGHT_THEME, Line, Lines, Lollipop, Matrix, OCEAN_THEME, OHLC, PALETTE, Parallel, PictorialBar, Pie, Polar, PreparedData, Radar, RadialBar, Range, RenderAttrs, RenderContext, RenderNode, Renderer, Renko, type RichTextOptions, type RichTextStyle, SAAS_THEME, STARTUP_THEME, Sankey, Scale, ScaleFactory, ScaleType, Scatter, Sparkline, StackedBar, Step, type StreamingConfig, type StreamingInstance, Sunburst, THEME_PRESETS, ThemeConfig, ThemeRiver, Tree, Treemap, Volume, Waterfall, type ZoomPanConfig, type ZoomPanInstance, type ZoomPanState, aggregateData, annotation, applyDataZoom, clearRegistry, createBrush, createCanvasRenderer, createCategoricalScale, createDataZoomState, createDataZoomWidget, createDebugPanel, createEventBus, createGraphicElements, createLinearScale, createSVGRenderer, createStreamingChart, createTimeScale, createWebGLRenderer, createZoomPan, decimateData, filterData, filterLabels, filterSeries, formatPercent, formatValue, getChart, getScaleFactory, horizontalLine, linkCharts, parseRichText, pivotData, registerChart, registerScale, renderDataZoomSlider, richLabel, sliceData, sortData, transformData, verticalLine };
608
+ export { Area, Bar, Baseline, Boxplot, type BrushConfig, type BrushInstance, Bubble, Bullet, CORPORATE_THEME, CSS_PREFIX, Calendar, Candlestick, ChartArea, ChartData, ChartInstance, ChartOptions, ChartTypePlugin, Chord, Combo, Custom, DARK_THEME, type DataZoomRange, type DataZoomSliderOptions, type DataZoomState, type DataZoomWidget, type DataZoomWidgetOptions, Donut, Dumbbell, EDITORIAL_THEME, EventBus, Funnel, Gauge, Geo, Graph, type GraphicArea, type GraphicElement, Heatmap, Histogram, HorizontalBar, Kagi, LIGHT_THEME, Line, Lines, Lollipop, Matrix, OCEAN_THEME, OHLC, PALETTE, Pack, Parallel, PictorialBar, Pie, Pillar, Polar, PreparedData, Radar, RadialBar, Range, RenderAttrs, RenderContext, RenderNode, Renderer, Renko, type RichTextOptions, type RichTextStyle, SAAS_THEME, STARTUP_THEME, Sankey, Scale, ScaleFactory, ScaleType, Scatter, Sparkline, StackedBar, Step, type StreamingConfig, type StreamingInstance, Sunburst, THEME_PRESETS, ThemeConfig, ThemeRiver, Tree, Treemap, Violin, Volume, Voronoi, Waterfall, WordCloud, type ZoomPanConfig, type ZoomPanInstance, type ZoomPanState, aggregateData, annotation, applyDataZoom, clearRegistry, createBrush, createCanvasRenderer, createCategoricalScale, createDataZoomState, createDataZoomWidget, createDebugPanel, createEventBus, createGraphicElements, createLinearScale, createSVGRenderer, createStreamingChart, createTimeScale, createWebGLRenderer, createZoomPan, decimateData, filterData, filterLabels, filterSeries, formatPercent, formatValue, getChart, getScaleFactory, horizontalLine, linkCharts, parseRichText, pivotData, registerChart, registerScale, renderDataZoomSlider, richLabel, sliceData, sortData, transformData, verticalLine };
package/dist/index.d.ts CHANGED
@@ -28,7 +28,7 @@ export { c as comboChartType } from './combo-type-Drb7xHSH.js';
28
28
  export { s as sankeyChartType } from './sankey-type-Gr2owHtQ.js';
29
29
  export { s as sunburstChartType } from './sunburst-type-CAcFLV8s.js';
30
30
  export { t as treeChartType } from './tree-type-Dyw9F7oq.js';
31
- export { g as graphChartType } from './graph-type-Bg04GFeS.js';
31
+ export { g as graphChartType } from './graph-type-Cyb5U1y2.js';
32
32
  export { p as parallelChartType } from './parallel-type-D4B96-R-.js';
33
33
  export { t as themeRiverChartType } from './themeriver-type-BxLJux1v.js';
34
34
  export { p as pictorialBarChartType } from './pictorialbar-type-CoClaroO.js';
@@ -44,6 +44,11 @@ export { r as rangeChartType } from './range-type-RlwPvBxs.js';
44
44
  export { b as baselineChartType } from './baseline-type-DnAv8oax.js';
45
45
  export { k as kagiChartType } from './kagi-type-DLvdmNEs.js';
46
46
  export { r as renkoChartType } from './renko-type-Bv23hPuk.js';
47
+ export { v as violinChartType } from './violin-type-BOmiulQc.js';
48
+ export { p as packChartType } from './pack-type-Dm27RLC-.js';
49
+ export { v as voronoiChartType } from './voronoi-type-D7n4mFNp.js';
50
+ export { w as wordcloudChartType } from './wordcloud-type-C6X9ORRR.js';
51
+ export { p as pillarChartType } from './pillar-type-DNpR_98h.js';
47
52
  export { BollingerResult, MACDResult, OHLCAggregation, StochasticResult, atr, bollingerBands, cumulativeReturns, drawdown, ema, logReturns, macd, maxDrawdown, obv, rsi, sharpeRatio, simpleReturns, sma, stochastic, toBollingerData, toMACDData, toOHLC, volatility, volumeDirections, vwap, wma } from './finance.js';
48
53
 
49
54
  interface ChartConfig extends ChartOptions {
@@ -95,6 +100,11 @@ declare function Range(target: string | HTMLElement, config: ChartConfig): Chart
95
100
  declare function Baseline(target: string | HTMLElement, config: ChartConfig): ChartInstance;
96
101
  declare function Kagi(target: string | HTMLElement, config: ChartConfig): ChartInstance;
97
102
  declare function Renko(target: string | HTMLElement, config: ChartConfig): ChartInstance;
103
+ declare function Violin(target: string | HTMLElement, config: ChartConfig): ChartInstance;
104
+ declare function Pack(target: string | HTMLElement, config: ChartConfig): ChartInstance;
105
+ declare function Voronoi(target: string | HTMLElement, config: ChartConfig): ChartInstance;
106
+ declare function WordCloud(target: string | HTMLElement, config: ChartConfig): ChartInstance;
107
+ declare function Pillar(target: string | HTMLElement, config: ChartConfig): ChartInstance;
98
108
 
99
109
  /**
100
110
  * SVG DOM Renderer.
@@ -595,4 +605,4 @@ interface DebugPanel {
595
605
  }
596
606
  declare function createDebugPanel(): DebugPanel;
597
607
 
598
- export { Area, Bar, Baseline, Boxplot, type BrushConfig, type BrushInstance, Bubble, Bullet, CORPORATE_THEME, CSS_PREFIX, Calendar, Candlestick, ChartArea, ChartData, ChartInstance, ChartOptions, ChartTypePlugin, Chord, Combo, Custom, DARK_THEME, type DataZoomRange, type DataZoomSliderOptions, type DataZoomState, type DataZoomWidget, type DataZoomWidgetOptions, Donut, Dumbbell, EDITORIAL_THEME, EventBus, Funnel, Gauge, Geo, Graph, type GraphicArea, type GraphicElement, Heatmap, Histogram, HorizontalBar, Kagi, LIGHT_THEME, Line, Lines, Lollipop, Matrix, OCEAN_THEME, OHLC, PALETTE, Parallel, PictorialBar, Pie, Polar, PreparedData, Radar, RadialBar, Range, RenderAttrs, RenderContext, RenderNode, Renderer, Renko, type RichTextOptions, type RichTextStyle, SAAS_THEME, STARTUP_THEME, Sankey, Scale, ScaleFactory, ScaleType, Scatter, Sparkline, StackedBar, Step, type StreamingConfig, type StreamingInstance, Sunburst, THEME_PRESETS, ThemeConfig, ThemeRiver, Tree, Treemap, Volume, Waterfall, type ZoomPanConfig, type ZoomPanInstance, type ZoomPanState, aggregateData, annotation, applyDataZoom, clearRegistry, createBrush, createCanvasRenderer, createCategoricalScale, createDataZoomState, createDataZoomWidget, createDebugPanel, createEventBus, createGraphicElements, createLinearScale, createSVGRenderer, createStreamingChart, createTimeScale, createWebGLRenderer, createZoomPan, decimateData, filterData, filterLabels, filterSeries, formatPercent, formatValue, getChart, getScaleFactory, horizontalLine, linkCharts, parseRichText, pivotData, registerChart, registerScale, renderDataZoomSlider, richLabel, sliceData, sortData, transformData, verticalLine };
608
+ export { Area, Bar, Baseline, Boxplot, type BrushConfig, type BrushInstance, Bubble, Bullet, CORPORATE_THEME, CSS_PREFIX, Calendar, Candlestick, ChartArea, ChartData, ChartInstance, ChartOptions, ChartTypePlugin, Chord, Combo, Custom, DARK_THEME, type DataZoomRange, type DataZoomSliderOptions, type DataZoomState, type DataZoomWidget, type DataZoomWidgetOptions, Donut, Dumbbell, EDITORIAL_THEME, EventBus, Funnel, Gauge, Geo, Graph, type GraphicArea, type GraphicElement, Heatmap, Histogram, HorizontalBar, Kagi, LIGHT_THEME, Line, Lines, Lollipop, Matrix, OCEAN_THEME, OHLC, PALETTE, Pack, Parallel, PictorialBar, Pie, Pillar, Polar, PreparedData, Radar, RadialBar, Range, RenderAttrs, RenderContext, RenderNode, Renderer, Renko, type RichTextOptions, type RichTextStyle, SAAS_THEME, STARTUP_THEME, Sankey, Scale, ScaleFactory, ScaleType, Scatter, Sparkline, StackedBar, Step, type StreamingConfig, type StreamingInstance, Sunburst, THEME_PRESETS, ThemeConfig, ThemeRiver, Tree, Treemap, Violin, Volume, Voronoi, Waterfall, WordCloud, type ZoomPanConfig, type ZoomPanInstance, type ZoomPanState, aggregateData, annotation, applyDataZoom, clearRegistry, createBrush, createCanvasRenderer, createCategoricalScale, createDataZoomState, createDataZoomWidget, createDebugPanel, createEventBus, createGraphicElements, createLinearScale, createSVGRenderer, createStreamingChart, createTimeScale, createWebGLRenderer, createZoomPan, decimateData, filterData, filterLabels, filterSeries, formatPercent, formatValue, getChart, getScaleFactory, horizontalLine, linkCharts, parseRichText, pivotData, registerChart, registerScale, renderDataZoomSlider, richLabel, sliceData, sortData, transformData, verticalLine };