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