@visactor/vchart 1.12.8 → 1.12.9-alpha.0

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 (73) hide show
  1. package/build/es5/index.js +1 -1
  2. package/build/index.js +68 -21
  3. package/build/index.min.js +1 -1
  4. package/build/tsconfig.tsbuildinfo +1 -1
  5. package/cjs/chart/chart-meta/data.js.map +1 -1
  6. package/cjs/component/label/label.js +6 -3
  7. package/cjs/component/label/label.js.map +1 -1
  8. package/cjs/component/tooltip/tooltip.d.ts +1 -0
  9. package/cjs/component/tooltip/tooltip.js +15 -11
  10. package/cjs/component/tooltip/tooltip.js.map +1 -1
  11. package/cjs/component/tooltip/utils/common.js +3 -1
  12. package/cjs/component/tooltip/utils/common.js.map +1 -1
  13. package/cjs/core/index.d.ts +1 -1
  14. package/cjs/core/index.js +1 -1
  15. package/cjs/core/index.js.map +1 -1
  16. package/cjs/core/vchart.js +1 -2
  17. package/cjs/data/register.js +2 -1
  18. package/cjs/series/box-plot/box-plot.d.ts +1 -0
  19. package/cjs/series/box-plot/box-plot.js +4 -0
  20. package/cjs/series/box-plot/box-plot.js.map +1 -1
  21. package/cjs/series/correlation/correlation.d.ts +1 -0
  22. package/cjs/series/correlation/correlation.js +4 -0
  23. package/cjs/series/correlation/correlation.js.map +1 -1
  24. package/cjs/series/funnel/funnel.d.ts +1 -0
  25. package/cjs/series/funnel/funnel.js +13 -9
  26. package/cjs/series/funnel/funnel.js.map +1 -1
  27. package/cjs/series/map/map.d.ts +1 -0
  28. package/cjs/series/map/map.js +4 -0
  29. package/cjs/series/map/map.js.map +1 -1
  30. package/cjs/series/pie/pie.d.ts +1 -0
  31. package/cjs/series/pie/pie.js +4 -0
  32. package/cjs/series/pie/pie.js.map +1 -1
  33. package/cjs/series/sankey/sankey.d.ts +1 -0
  34. package/cjs/series/sankey/sankey.js +5 -0
  35. package/cjs/series/sankey/sankey.js.map +1 -1
  36. package/cjs/series/waterfall/waterfall.d.ts +1 -0
  37. package/cjs/series/waterfall/waterfall.js +4 -0
  38. package/cjs/series/waterfall/waterfall.js.map +1 -1
  39. package/esm/chart/chart-meta/data.js.map +1 -1
  40. package/esm/component/label/label.js +7 -4
  41. package/esm/component/label/label.js.map +1 -1
  42. package/esm/component/tooltip/tooltip.d.ts +1 -0
  43. package/esm/component/tooltip/tooltip.js +15 -11
  44. package/esm/component/tooltip/tooltip.js.map +1 -1
  45. package/esm/component/tooltip/utils/common.js +3 -1
  46. package/esm/component/tooltip/utils/common.js.map +1 -1
  47. package/esm/core/index.d.ts +1 -1
  48. package/esm/core/index.js +1 -1
  49. package/esm/core/index.js.map +1 -1
  50. package/esm/core/vchart.js +1 -2
  51. package/esm/data/register.js +2 -1
  52. package/esm/series/box-plot/box-plot.d.ts +1 -0
  53. package/esm/series/box-plot/box-plot.js +4 -0
  54. package/esm/series/box-plot/box-plot.js.map +1 -1
  55. package/esm/series/correlation/correlation.d.ts +1 -0
  56. package/esm/series/correlation/correlation.js +4 -0
  57. package/esm/series/correlation/correlation.js.map +1 -1
  58. package/esm/series/funnel/funnel.d.ts +1 -0
  59. package/esm/series/funnel/funnel.js +13 -9
  60. package/esm/series/funnel/funnel.js.map +1 -1
  61. package/esm/series/map/map.d.ts +1 -0
  62. package/esm/series/map/map.js +4 -0
  63. package/esm/series/map/map.js.map +1 -1
  64. package/esm/series/pie/pie.d.ts +1 -0
  65. package/esm/series/pie/pie.js +4 -0
  66. package/esm/series/pie/pie.js.map +1 -1
  67. package/esm/series/sankey/sankey.d.ts +1 -0
  68. package/esm/series/sankey/sankey.js +5 -0
  69. package/esm/series/sankey/sankey.js.map +1 -1
  70. package/esm/series/waterfall/waterfall.d.ts +1 -0
  71. package/esm/series/waterfall/waterfall.js +4 -0
  72. package/esm/series/waterfall/waterfall.js.map +1 -1
  73. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/series/pie/pie.ts"],"names":[],"mappings":";;;AACA,6CAA2D;AAC3D,iDAA8C;AAC9C,gDAU8B;AAC9B,wDAA0D;AAC1D,8CAA2E;AAC3E,8CAA6C;AAE7C,0CAAyD;AACzD,4CAAwD;AACxD,8CAA0C;AAE1C,0CAA6C;AAO7C,4CAAuE;AAGvE,mDAA6D;AAC7D,kDAAuE;AAEvE,qDAA2F;AAC3F,iDAAgG;AAChG,yDAA+D;AAE/D,qDAAiD;AAGjD,2DAA8D;AAC9D,wCAAiD;AACjD,yCAA2C;AAC3C,gDAA6C;AAC7C,6CAA2D;AAC3D,uDAA6D;AAC7D,gDAA6D;AAC7D,gDAAkD;AAClD,mEAA6E;AAE7E,MAAa,aAA4C,SAAQ,mBAAc;IAA/E;;QAEW,2BAAsB,GAAG,0CAAwB,CAAC;QAEjD,iBAAY,SAA8C;QAC1D,iBAAY,SAAkC;QAOxD,cAAS,GAAG,GAAW,EAAE;;YACvB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YACvD,OAAO;gBACL,CAAC,EAAE,MAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,OAAO,mCAAI,KAAK,GAAG,CAAC;gBACnC,CAAC,EAAE,MAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,OAAO,mCAAI,MAAM,GAAG,CAAC;aACrC,CAAC;QACJ,CAAC,CAAC;QAKQ,gBAAW,GAAW,0BAAkB,CAAC;QACzC,cAAS,GAAW,wBAAgB,CAAC;QAGrC,aAAQ,GAAoB,IAAI,CAAC;QACjC,eAAU,GAAqB,IAAI,CAAC;QACpC,mBAAc,GAAqB,IAAI,CAAC;QAGxC,kBAAa,GAAoB,IAAI,CAAC;QAwVhD,0BAAqB,GAAG,CAAC,KAAY,EAAiB,EAAE;YAEtD,MAAM,KAAK,GAAG,KAAK,CAAC,wBAAgB,CAAC,CAAC;YACtC,IAAI,IAAA,cAAK,EAAC,KAAK,CAAC,EAAE;gBAChB,OAAO,IAAI,CAAC;aACb;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;YACxD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAEzC,OAAO,IAAA,yBAAgB,EAAC,MAAM,EAAE,CAAC,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;QACrE,CAAC,CAAC;IAyFJ,CAAC;IAvbW,0BAA0B;QAClC,KAAK,CAAC,0BAA0B,EAAE,CAAC;QAEnC,IAAI,CAAC,qBAAqB,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC,CAAC;YAC5C,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YAC3B,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;SAC5B,CAAC,CAAC;QAGH,IAAI,CAAC,qBAAqB,CAAC,eAAe,GAAG,CAAC,KAAY,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC3F,IAAI,CAAC,qBAAqB,CAAC,aAAa,GAAG,CAAC,KAAY,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACzF,CAAC;IAED,eAAe;;QACb,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,aAAa,GAAG,MAAA,IAAI,CAAC,KAAK,CAAC,YAAY,mCAAI,CAAC,CAAC;QAClD,IAAI,CAAC,aAAa,GAAG,MAAA,IAAI,CAAC,KAAK,CAAC,YAAY,mCAAI,CAAC,CAAC;QAElD,MAAM,UAAU,GAAG,IAAA,6BAAsB,EACvC,IAAA,gBAAO,EAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAA,uBAAc,EAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EACzF,IAAA,gBAAO,EAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAA,uBAAc,EAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CACpF,CAAC;QACF,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC;QACzC,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,IAAA,gBAAO,EAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAA,uBAAc,EAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAGxF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACnE,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;YAC5B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;SAC/C;QACD,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QAEvB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QAChD,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAE3B,IAAI,CAAC,gBAAgB,GAAG,MAAA,MAAA,IAAI,CAAC,KAAK,CAAC,gBAAgB,0CAAE,eAAe,mCAAI,KAAK,CAAC;QAE9E,IAAI,CAAC,YAAY,GAAG,MAAA,IAAI,CAAC,KAAK,CAAC,WAAW,mCAAI,KAAK,CAAC;QACpD,IAAI,CAAC,gBAAgB,GAAG,MAAA,IAAI,CAAC,KAAK,CAAC,eAAe,mCAAI,KAAK,CAAC;IAC9D,CAAC;IAED,QAAQ;QACN,KAAK,CAAC,QAAQ,EAAE,CAAC;QAEjB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO;SACR;QAED,IAAA,2CAAgC,EAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAG,CAAC,CAAC;QAE5D,QAAQ,CAAC,SAAS,CAChB;YACE,IAAI,EAAE,KAAK;YACX,OAAO,EAAE;gBACP,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;gBACrC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW;gBAClC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS;gBAC9B,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,IAAA,gBAAO,EAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAA,uBAAc,EAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxF,YAAY,EAAE,uBAAe;gBAC7B,UAAU,EAAE,qBAAa;gBACzB,OAAO,EAAE,iBAAS;gBAClB,aAAa,EAAE,wBAAgB;gBAC/B,QAAQ,EAAE,kBAAU;gBACpB,UAAU,EAAE,oBAAY;gBACxB,GAAG,EAAE,aAAK;gBACV,WAAW,EAAE,IAAI,CAAC,YAAY;gBAC9B,eAAe,EAAE,IAAI,CAAC,gBAAgB;gBACtC,eAAe,EAAE,IAAI,CAAC,gBAAgB;aAC5B;SACb,EACD,KAAK,CACN,CAAC;QAEF,MAAM,aAAa,GAAG,IAAI,mBAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,GAAG,aAAM,WAAW,IAAI,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACzG,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE;YACxC,IAAI,EAAE,UAAU;SACjB,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,GAAG,IAAI,wBAAU,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACpE,CAAC;IAED,QAAQ;;QACN,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,iCAEzB,aAAa,CAAC,IAAI,CAAC,GAAG,KACzB,IAAI,EAAE,IAAI,CAAC,YAAY,EACvB,IAAI,EAAE,IAAI,CAAC,YAAY,KAEzB;YACE,KAAK,EAAE,IAAA,yBAAiB,EAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC;YACvD,sBAAsB,EAAE,IAAI,CAAC,YAAY;YACzC,GAAG,EAAE,uBAAgB;YACrB,QAAQ,EAAE,IAAI,CAAC,YAAY;YAC3B,kBAAkB,EAAE,IAAI;YACxB,YAAY,EAAE,IAAI;YAClB,WAAW,EAAE,MAAA,IAAI,CAAC,KAAK,CAAC,GAAG,0CAAE,WAAW;YACxC,SAAS,EAAE,MAAA,IAAI,CAAC,KAAK,CAAC,GAAG,0CAAE,SAAS;SACrC,CACU,CAAC;QAEd,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CACnC;gBACE,IAAI,EAAE,aAAa;gBACnB,IAAI,EAAE,KAAK;aACZ,EACD;gBACE,QAAQ,EAAE,KAAK;aAChB,CACU,CAAC;SACf;IACH,CAAC;IAEO,eAAe,CAAC,KAAY;QAClC,OAAO,IAAA,cAAK,EAAC,uBAAe,CAAC,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAEO,aAAa,CAAC,KAAY;QAChC,OAAO,IAAA,cAAK,EAAC,qBAAa,CAAC,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAES,oBAAoB;QAC5B,OAAO,IAAA,4BAAmB,EACxB,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAC7B,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,SAAS,EACd,GAAG,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CACnE,CAAC;IACJ,CAAC;IAED,aAAa;QACX,MAAM,YAAY,GAAsC;YACtD,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YAC3B,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YAC3B,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE;YAC9B,WAAW,EAAE,IAAA,4BAAoB,EAAC,IAAI,CAAC,YAAY,CAAC;gBAClD,CAAC,CAAC,IAAI,CAAC,YAAY;gBACnB,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,IAAI,CAAC,YAAY;YACzD,WAAW,EAAE,IAAA,4BAAoB,EAAC,IAAI,CAAC,YAAY,CAAC;gBAClD,CAAC,CAAC,IAAI,CAAC,YAAY;gBACnB,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,IAAI,CAAC,YAAY;YACzD,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,IAAI,CAAC,aAAa;YACpE,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;YAChD,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;YAC5C,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,YAAY,EAAE,IAAI,CAAC,aAAa;SACjC,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,0BAAc,CAAC,MAAM,CAAC,CAAC;SAC3E;QAMD,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,IAAI,YAAY,EAAE;YAChB,IAAI,CAAC,YAAY,CACf,YAAY,kCAEP,YAAY,KACf,OAAO,EAAE,GAAG,EAAE;oBACZ,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;oBAC3C,OAAO,IAAA,iBAAW,EAAC,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBACvF,CAAC,KAEH,QAAQ,EACR,0BAAc,CAAC,MAAM,CACtB,CAAC;SACH;IACH,CAAC;IAED,eAAe;QACb,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACrE,CAAC;IAES,WAAW;QACnB,KAAK,CAAC,WAAW,EAAE,CAAC;QAEpB,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChF,CAAC;IAED,qBAAqB,CAAC,IAAY,EAAE,IAAU,EAAE,GAAY;QAC1D,KAAK,CAAC,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAC7C,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,EAAE;YAEnC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAa,CAAC,CAAC;YACnD,IAAI,OAAO,EAAE;gBACX,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,IAAI,EAAE,EAAE;oBACvC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,0BAAc,CAAC,SAAS,CAAC,CAAC;iBAC1G;aACF;SACF;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE;YAE/B,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,0BAAc,CAAC,SAAS,CAAC,CAAC;SACnG;IACH,CAAC;IAED,kBAAkB,CAAC,QAAmB;QACpC,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO;SACR;QACD,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;YAC1B,OAAO,EAAE,IAAA,cAAK,EAAC,6BAAqB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAChD,IAAI,EAAE,CAAC,KAAY,EAAE,EAAE;gBACrB,OAAO,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,CAAC;YACD,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE;YAC9B,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;SACnC,CAAC,CAAC;IACL,CAAC;IAED,aAAa;QACX,KAAK,CAAC,aAAa,EAAE,CAAC;IACxB,CAAC;IAED,SAAS;;QACP,KAAK,CAAC,SAAS,EAAE,CAAC;QAClB,MAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,0CAAE,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACvG,CAAC;IAGD,UAAU;QACR,OAAO;IACT,CAAC;IAMD,WAAW,CAAC,GAAuB;QACjC,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,iBAAiB,EAAE,CAAC;QACtD,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtD,CAAC;IACD,eAAe;QACb,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAEO,mBAAmB;QACzB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAU,CAAC,mBAAmB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;IACnC,CAAC;IAES,mBAAmB,CAAC,IAAS;QACrC,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;SACR;QACD,MAAM,KAAK,GAAQ,EAAE,CAAC;QACtB,IAAI,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;QAC/F,IAAI,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;QAC/F,IAAI,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;QAClG,OAAO,KAAK,CAAC;IACf,CAAC;IAED,aAAa,CAAC,KAAY;QACxB,OAAO;YACL,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAW;YAC7D,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAW;SAC9D,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,QAAwB,QAAQ;;QACxC,MAAM,WAAW,GACf,KAAK,KAAK,QAAQ;YAChB,CAAC,CAAC,MAAA,MAAA,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,IAAI,KAAI,KAAK,CAAC,0CAAE,KAAK,0CAAE,WAAW;YAClE,CAAC,CAAC,MAAA,MAAA,MAAA,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,IAAI,KAAI,KAAK,CAAC,0CAAE,KAAK,0CAAG,KAAK,CAAC,0CAAE,WAAW,CAAC;QAChF,OAAO,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,IAAI,CAAC,YAAY,CAAC;IAC1C,CAAC;IAED,cAAc,CAAC,QAAwB,QAAQ;;QAC7C,MAAM,WAAW,GACf,KAAK,KAAK,QAAQ;YAChB,CAAC,CAAC,MAAA,MAAA,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,IAAI,KAAI,KAAK,CAAC,0CAAE,KAAK,0CAAE,WAAW;YAClE,CAAC,CAAC,MAAA,MAAA,MAAA,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,IAAI,KAAI,KAAK,CAAC,0CAAE,KAAK,0CAAG,KAAK,CAAC,0CAAE,WAAW,CAAC;QAChF,OAAO,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,IAAI,CAAC,YAAY,CAAC;IAC1C,CAAC;IAED,aAAa,CAAC,CAAS,EAAE,CAAU;QACjC,OAAO,IAAI,CAAC,oBAAoB,EAAE,GAAG,CAAC,GAAG,CAAC,IAAA,cAAK,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;IACnF,CAAC;IAED,kBAAkB,CAAC,KAAY,EAAE,KAAc;QAC7C,OAAO,IAAI,CAAC,oBAAoB,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;IAClF,CAAC;IAED,YAAY,CAAC,IAAO,EAAE,QAAW,EAAE,eAAyC;QAC1E,eAAe,GAAG,eAAe,aAAf,eAAe,cAAf,eAAe,GAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACpD,MAAM,iBAAiB,GAAa;YAClC,SAAS;YACT,SAAS;YACT,cAAc;YACd,QAAQ;YACR,aAAa;YACb,cAAc;YACd,YAAY;YACZ,UAAU;YACV,UAAU;SACX,CAAC;QACF,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAC9B,eAAe,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;QACnE,IAAI,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAK,EAAQ,CAAC;QACzB,IAAI,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAE,IAAY,CAAC,GAAG,CAAC,KAAM,QAAgB,CAAC,GAAG,CAAC,CAAC,EAAE;YAChF,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;YACvB,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;SACtB;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,uBAAuB,CAAC,KAAY,EAAE,KAAc;QAClD,OAAO,IAAI,CAAC,oBAAoB,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;IACvF,CAAC;IAED,cAAc,CAAC,KAAY,EAAE,eAAyB;QACpD,MAAM,KAAK,GAAG,KAAK,CAAC,wBAAgB,CAAC,CAAC;QACtC,IAAI,IAAA,cAAK,EAAC,KAAK,CAAC,EAAE;YAChB,OAAO,IAAI,CAAC;SACb;QACD,IAAI,eAAe,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;YACrD,OAAO,IAAI,CAAC;SACb;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAEzC,OAAO,IAAA,yBAAgB,EAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;IAeD,aAAa;;QACX,MAAM,eAAe,GAAwB;YAC3C,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;;gBAClC,IAAI,KAAK,KAAK,8BAAkB,CAAC,MAAM,EAAE;oBACvC,OAAO,IAAI,CAAC,WAAW,CAAC;iBACzB;gBACD,IAAI,KAAK,KAAK,8BAAkB,CAAC,SAAS,EAAE;oBAC1C,OAAO,IAAI,CAAC,SAAS,CAAC;iBACvB;gBAED,MAAM,QAAQ,GAAG,CAAC,8BAAkB,CAAC,SAAS,EAAE,8BAAkB,CAAC,IAAI,CAAC,CAAC;gBACzE,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAE3C,MAAM,IAAI,GAAG,KAAK,CAAC;gBACnB,MAAM,SAAS,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAG,yBAAkB,CAAC,CAAC;gBAG7C,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAC,OAAA,CAAA,MAAA,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,0CAAG,yBAAkB,CAAC,IAAG,SAAS,CAAA,EAAA,CAAC,KAAK,SAAS,EAAE;oBACrF,OAAO,IAAI,CAAC,WAAW,CAAC;iBACzB;gBAED,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAC,OAAA,CAAA,MAAA,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,0CAAG,yBAAkB,CAAC,IAAG,SAAS,CAAA,EAAA,CAAC,KAAK,SAAS,EAAE;oBACrF,OAAO,IAAI,CAAC,SAAS,CAAC;iBACvB;gBAGD,MAAM,eAAe,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAC,OAAA,CAAA,MAAA,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,0CAAG,yBAAkB,CAAC,IAAG,SAAS,CAAA,EAAA,CAAC,CAAC;gBAE3G,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;oBAC5B,OAAO,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,wBAAwB,EAAE,0CAAE,QAAQ,CAAC;iBAC9D;gBACD,OAAO,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAChE,CAAC;SACF,CAAC;QACF,MAAM,YAAY,GAAG,MAAC,IAAI,CAAC,KAAK,CAAC,eAAsD,0CAAE,MAAM,CAAC;QAEhG,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,MAAM,kBAAkB,GAAG,IAAA,uBAAe,EACxC,MAAA,iBAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,0CAAG,eAAe,EAAE,YAAY,CAAC,EACjE,IAAA,2BAAmB,SAAyB,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,qBAAqB,CAAC,CACpF,CAAC;YAEF,IAAI,kBAAkB,CAAC,MAAM,IAAK,kBAAkB,CAAC,MAA+B,CAAC,IAAI,EAAE;gBACzF,kBAAkB,CAAC,MAAM,GAAG,IAAA,iCAAkB,EAC5C,IAAI,CAAC,QAAQ,EACb,kBAAkB,CAAC,MAA8B,CAClD,CAAC;aACH;YAED,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;SACtD;QAED,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,MAAM,kBAAkB,GAAG,IAAA,uBAAe,EACxC,MAAA,iBAAO,CAAC,iBAAiB,CAAC,aAAa,CAAC,0CAAG,eAAe,EAAE,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,QAAQ,CAAC,CACtF,CAAC;YACF,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;SAC3D;IACH,CAAC;IAED,mBAAmB;QACjB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,cAAc;QAEZ,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,mBAAmB;QAEjB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,kBAAkB;QAEhB,OAAO,EAAE,CAAC;IACZ,CAAC;IAGS,mBAAmB,CAAC,KAAY,EAAE,KAAa;QACvD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,cAAc;QACZ,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;;AA3dH,sCA4dC;AA3diB,oCAAsB,GAAG,0CAA+B,CAAC;AAMzD,kBAAI,GAAkB,wBAAa,CAAC;AAudtD,MAAa,SAAqD,SAAQ,aAAgB;IAA1F;;QAEE,SAAI,GAAG,qBAAc,CAAC,GAAG,CAAC;IAC5B,CAAC;;AAHD,8BAGC;AAFiB,cAAI,GAAW,qBAAc,CAAC,GAAG,CAAC;AAI7C,MAAM,iBAAiB,GAAG,GAAG,EAAE;IACpC,IAAA,qBAAe,GAAE,CAAC;IAClB,IAAA,gCAAoB,GAAE,CAAC;IACvB,IAAA,wCAA4B,GAAE,CAAC;IAC/B,iBAAO,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACpD,CAAC,CAAC;AALW,QAAA,iBAAiB,qBAK5B","file":"pie.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport { degreeToRadian, isValid } from '@visactor/vutils';\nimport { DataView } from '@visactor/vdataset';\nimport {\n ARC_START_ANGLE,\n ARC_END_ANGLE,\n ARC_RATIO,\n ARC_MIDDLE_ANGLE,\n ARC_RADIAN,\n ARC_QUADRANT,\n ARC_K,\n POLAR_START_RADIAN,\n POLAR_END_RADIAN\n} from '../../constant/polar';\nimport { AttributeLevel } from '../../constant/attribute';\nimport { DEFAULT_DATA_KEY, DEFAULT_DATA_INDEX } from '../../constant/data';\nimport { PREFIX } from '../../constant/base';\nimport type { IPoint, Datum, StateValueType, IArcMarkSpec } from '../../typings';\nimport { normalizeStartEndAngle } from '../../util/math';\nimport { isSpecValueWithScale } from '../../util/scale';\nimport { field } from '../../util/object';\nimport type { IModelLayoutOption } from '../../model/interface';\nimport { PolarSeries } from '../polar/polar';\nimport type { IMark, IMarkStyle } from '../../mark/interface';\nimport { MarkTypeEnum } from '../../mark/interface/type';\nimport type { IArcMark } from '../../mark/arc';\nimport type { ITextMark } from '../../mark/text';\nimport type { IPathMark } from '../../mark/path';\nimport type { IArcSeries, SeriesMarkMap } from '../interface';\nimport { SeriesMarkNameEnum, SeriesTypeEnum } from '../interface/type';\nimport type { IPieOpt } from '../../data/transforms/pie';\n// eslint-disable-next-line no-duplicate-imports\nimport { isDataEmpty, pie } from '../../data/transforms/pie';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport type { IPieAnimationParams, PieAppearPreset } from './animation/animation';\nimport { registerEmptyCircleAnimation, registerPieAnimation } from './animation/animation';\nimport { animationConfig, shouldMarkDoMorph, userAnimationConfig } from '../../animation/utils';\nimport { AnimationStateEnum } from '../../animation/interface';\nimport type { IBasePieSeriesSpec, IPieSeriesSpec } from './interface';\nimport { SeriesData } from '../base/series-data';\nimport type { IStateAnimateSpec } from '../../animation/spec';\nimport type { IAnimationTypeConfig } from '@visactor/vgrammar-core';\nimport { centerOffsetConfig } from './animation/centerOffset';\nimport { registerArcMark } from '../../mark/arc';\nimport { pieSeriesMark } from './constant';\nimport { Factory } from '../../core/factory';\nimport { isNil, polarToCartesian } from '@visactor/vutils';\nimport { PieSeriesSpecTransformer } from './pie-transformer';\nimport { DEFAULT_LABEL_VISIBLE } from '../../constant/label';\nimport { ChartEvent } from '../../constant/event';\nimport { computeLayoutRadius } from '../../component/axis/polar/util/common';\n\nexport class BasePieSeries<T extends IBasePieSeriesSpec> extends PolarSeries<T> implements IArcSeries {\n static readonly transformerConstructor = PieSeriesSpecTransformer as any;\n readonly transformerConstructor = PieSeriesSpecTransformer;\n\n protected _pieMarkName: SeriesMarkNameEnum = SeriesMarkNameEnum.pie;\n protected _pieMarkType: MarkTypeEnum = MarkTypeEnum.arc;\n\n static readonly mark: SeriesMarkMap = pieSeriesMark;\n\n protected _viewDataLabel!: SeriesData;\n\n // 饼图渲染不依赖于极坐标系轴,因此由 series 自己存储相关配置信息\n getCenter = (): IPoint => {\n const { width, height } = this._region.getLayoutRect();\n return {\n x: this._spec?.centerX ?? width / 2,\n y: this._spec?.centerY ?? height / 2\n };\n };\n protected _centerOffset!: number;\n\n protected _cornerRadius!: number;\n\n protected _startAngle: number = POLAR_START_RADIAN;\n protected _endAngle: number = POLAR_END_RADIAN;\n protected _padAngle!: number;\n\n protected _pieMark: IArcMark | null = null;\n protected _labelMark: ITextMark | null = null;\n protected _labelLineMark: IPathMark | null = null;\n\n protected _showEmptyCircle: boolean;\n protected _emptyArcMark: IArcMark | null = null;\n\n protected _showAllZero: boolean;\n protected _supportNegative: boolean;\n\n protected _buildMarkAttributeContext() {\n super._buildMarkAttributeContext();\n // center\n this._markAttributeContext.getCenter = () => ({\n x: () => this.getCenter().x,\n y: () => this.getCenter().y\n });\n\n // angle scale\n this._markAttributeContext.startAngleScale = (datum: Datum) => this.startAngleScale(datum);\n this._markAttributeContext.endAngleScale = (datum: Datum) => this.endAngleScale(datum);\n }\n\n setAttrFromSpec(): void {\n super.setAttrFromSpec();\n this._centerOffset = this._spec.centerOffset ?? 0;\n this._cornerRadius = this._spec.cornerRadius ?? 0;\n\n const normalized = normalizeStartEndAngle(\n isValid(this._spec.startAngle) ? degreeToRadian(this._spec.startAngle) : this._startAngle,\n isValid(this._spec.endAngle) ? degreeToRadian(this._spec.endAngle) : this._endAngle\n );\n this._startAngle = normalized.startAngle;\n this._endAngle = normalized.endAngle;\n this._padAngle = isValid(this._spec.padAngle) ? degreeToRadian(this._spec.padAngle) : 0;\n\n // 值信息给角度,angleField 是为了兼容小组件用法,因为 spec 改造前已经开放了\n this.setAngleField(this._spec.valueField || this._spec.angleField);\n if (this._spec.categoryField) {\n this.setSeriesField(this._spec.categoryField);\n }\n this._radiusField = [];\n\n this._specAngleField = this._angleField.slice();\n this._specRadiusField = [];\n\n this._showEmptyCircle = this._spec.emptyPlaceholder?.showEmptyCircle ?? false;\n\n this._showAllZero = this._spec.showAllZero ?? false;\n this._supportNegative = this._spec.supportNegative ?? false;\n }\n\n initData() {\n super.initData();\n\n const viewData = this.getViewData();\n if (!viewData) {\n return;\n }\n\n registerDataSetInstanceTransform(this._dataSet, 'pie', pie);\n\n viewData.transform(\n {\n type: 'pie',\n options: {\n angleField: () => this._angleField[0],\n startAngle: () => this._startAngle,\n endAngle: () => this._endAngle,\n minAngle: () => (isValid(this._spec.minAngle) ? degreeToRadian(this._spec.minAngle) : 0),\n asStartAngle: ARC_START_ANGLE,\n asEndAngle: ARC_END_ANGLE,\n asRatio: ARC_RATIO,\n asMiddleAngle: ARC_MIDDLE_ANGLE,\n asRadian: ARC_RADIAN,\n asQuadrant: ARC_QUADRANT,\n asK: ARC_K,\n showAllZero: this._showAllZero,\n supportNegative: this._supportNegative,\n showEmptyCircle: this._showEmptyCircle\n } as IPieOpt\n },\n false\n );\n\n const viewDataLabel = new DataView(this._dataSet, { name: `${PREFIX}_series_${this.id}_viewDataLabel` });\n viewDataLabel.parse([this.getViewData()], {\n type: 'dataview'\n });\n\n this._viewDataLabel = new SeriesData(this._option, viewDataLabel);\n }\n\n initMark(): void {\n this._pieMark = this._createMark(\n {\n ...BasePieSeries.mark.pie,\n name: this._pieMarkName,\n type: this._pieMarkType\n },\n {\n morph: shouldMarkDoMorph(this._spec, this._pieMarkName),\n defaultMorphElementKey: this._seriesField,\n key: DEFAULT_DATA_KEY,\n groupKey: this._seriesField,\n skipBeforeLayouted: true,\n isSeriesMark: true,\n customShape: this._spec.pie?.customShape,\n stateSort: this._spec.pie?.stateSort\n }\n ) as IArcMark;\n\n if (this._showEmptyCircle) {\n this._emptyArcMark = this._createMark(\n {\n name: 'emptyCircle',\n type: 'arc'\n },\n {\n dataView: false\n }\n ) as IArcMark;\n }\n }\n\n private startAngleScale(datum: Datum) {\n return field(ARC_START_ANGLE)(datum);\n }\n\n private endAngleScale(datum: Datum) {\n return field(ARC_END_ANGLE)(datum);\n }\n\n protected _computeLayoutRadius() {\n return computeLayoutRadius(\n () => this._spec.layoutRadius,\n this.getLayoutRect,\n this.getCenter,\n () => ({ startAngle: this._startAngle, endAngle: this._endAngle })\n );\n }\n\n initMarkStyle(): void {\n const initialStyle: Partial<IMarkStyle<IArcMarkSpec>> = {\n x: () => this.getCenter().x,\n y: () => this.getCenter().y,\n fill: this.getColorAttribute(),\n outerRadius: isSpecValueWithScale(this._outerRadius)\n ? this._outerRadius\n : () => this._computeLayoutRadius() * this._outerRadius,\n innerRadius: isSpecValueWithScale(this._innerRadius)\n ? this._innerRadius\n : () => this._computeLayoutRadius() * this._innerRadius,\n cornerRadius: () => this._computeLayoutRadius() * this._cornerRadius,\n startAngle: datum => this.startAngleScale(datum),\n endAngle: datum => this.endAngleScale(datum),\n padAngle: this._padAngle,\n centerOffset: this._centerOffset\n };\n\n const pieMark = this._pieMark;\n if (pieMark) {\n this.setMarkStyle(pieMark, initialStyle, 'normal', AttributeLevel.Series);\n }\n\n /**\n * !important\n * !TODO: isDataEmpty执行了2次, 需要结构上优化, 保存isEmpty的状态, 尝试将2次执行优化为1次\n */\n const emptyPieMark = this._emptyArcMark;\n if (emptyPieMark) {\n this.setMarkStyle(\n emptyPieMark,\n {\n ...initialStyle,\n visible: () => {\n const angleField = this.getAngleField()[0];\n return isDataEmpty(this.getViewData().latestData, angleField, this._supportNegative);\n }\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n }\n\n initInteraction(): void {\n this._parseInteractionConfig(this._pieMark ? [this._pieMark] : []);\n }\n\n protected initTooltip() {\n super.initTooltip();\n\n this._pieMark && this._tooltipHelper.activeTriggerSet.mark.add(this._pieMark);\n }\n\n initMarkStyleWithSpec(mark?: IMark, spec?: any, key?: string): void {\n super.initMarkStyleWithSpec(mark, spec, key);\n if (mark.name === this._pieMarkName) {\n // radius 配置需要额外处理比例值\n const pieSpec = this.getSpec()[mark.name as 'pie'];\n if (pieSpec) {\n for (const state in pieSpec.state || {}) {\n this.setMarkStyle(mark, this.generateRadiusStyle(pieSpec.state[state]), state, AttributeLevel.User_Mark);\n }\n }\n }\n if (mark.name === 'emptyCircle') {\n // 使用emptyCircle的radius比例值进行覆盖\n this.setMarkStyle(mark, this.generateRadiusStyle(spec.style), 'normal', AttributeLevel.User_Mark);\n }\n }\n\n initLabelMarkStyle(textMark: ITextMark) {\n if (!textMark) {\n return;\n }\n this.setMarkStyle(textMark, {\n visible: field(DEFAULT_LABEL_VISIBLE).bind(this),\n text: (datum: Datum) => {\n return datum[this.getDimensionField()[0]];\n },\n fill: this.getColorAttribute(),\n z: this.dataToPositionZ.bind(this)\n });\n }\n\n afterInitMark(): void {\n super.afterInitMark();\n }\n\n initEvent(): void {\n super.initEvent();\n this._viewDataLabel.getDataView()?.target.addListener('change', this.viewDataLabelUpdate.bind(this));\n }\n\n // 饼图不支持分组\n initGroups() {\n return;\n }\n\n /**\n * @override\n * @param ctx\n */\n onLayoutEnd(ctx: IModelLayoutOption): void {\n this._viewDataLabel.getDataView().reRunAllTransform();\n this.onMarkPositionUpdate();\n super.onLayoutEnd(ctx);\n }\n\n getDimensionField(): string[] {\n return this._seriesField ? [this._seriesField] : [];\n }\n getMeasureField(): string[] {\n return this._specAngleField;\n }\n\n private viewDataLabelUpdate() {\n this.event.emit(ChartEvent.viewDataLabelUpdate, { model: this });\n this._viewDataLabel.updateData();\n }\n\n protected generateRadiusStyle(spec: any) {\n if (!spec) {\n return;\n }\n const style: any = {};\n spec.outerRadius && (style.outerRadius = () => this._computeLayoutRadius() * spec.outerRadius);\n spec.innerRadius && (style.innerRadius = () => this._computeLayoutRadius() * spec.innerRadius);\n spec.cornerRadius && (style.cornerRadius = () => this._computeLayoutRadius() * spec.cornerRadius);\n return style;\n }\n\n computeCenter(datum: Datum): IPoint {\n return {\n x: this._pieMark.getAttribute('x', datum, 'normal') as number,\n y: this._pieMark.getAttribute('y', datum, 'normal') as number\n };\n }\n\n getRadius(state: StateValueType = 'normal'): number {\n const styleRadius =\n state === 'normal'\n ? this.getSpec()[this._pieMark?.name || 'pie']?.style?.outerRadius\n : this.getSpec()[this._pieMark?.name || 'pie']?.state?.[state]?.outerRadius;\n return styleRadius ?? this._outerRadius;\n }\n\n getInnerRadius(state: StateValueType = 'normal'): number {\n const styleRadius =\n state === 'normal'\n ? this.getSpec()[this._pieMark?.name || 'pie']?.style?.innerRadius\n : this.getSpec()[this._pieMark?.name || 'pie']?.state?.[state]?.innerRadius;\n return styleRadius ?? this._innerRadius;\n }\n\n computeRadius(r: number, k?: number): number {\n return this._computeLayoutRadius() * r * (isNil(k) ? 1 : k) + this._centerOffset;\n }\n\n computeDatumRadius(datum: Datum, state?: string): number {\n return this._computeLayoutRadius() * this.getRadius(state) + this._centerOffset;\n }\n\n _compareSpec(spec: T, prevSpec: T, ignoreCheckKeys?: { [key: string]: true }) {\n ignoreCheckKeys = ignoreCheckKeys ?? { data: true };\n const defaultIgnoreKeys: string[] = [\n 'centerX',\n 'centerY',\n 'centerOffset',\n 'radius',\n 'innerRadius',\n 'cornerRadius',\n 'startAngle',\n 'endAngle',\n 'padAngle'\n ];\n defaultIgnoreKeys.forEach(key => {\n ignoreCheckKeys[key] = true;\n });\n\n const result = super._compareSpec(spec, prevSpec, ignoreCheckKeys);\n spec = spec ?? ({} as T);\n if (defaultIgnoreKeys.some(key => (spec as any)[key] !== (prevSpec as any)[key])) {\n result.reRender = true;\n result.change = true;\n }\n return result;\n }\n\n computeDatumInnerRadius(datum: Datum, state?: string): number {\n return this._computeLayoutRadius() * this.getInnerRadius(state) + this._centerOffset;\n }\n\n dataToPosition(datum: Datum, checkInViewData?: boolean): IPoint | null {\n const angle = datum[ARC_MIDDLE_ANGLE];\n if (isNil(angle)) {\n return null;\n }\n if (checkInViewData && !this.isDatumInViewData(datum)) {\n return null;\n }\n const radius = this.computeDatumRadius(datum);\n const center = this.computeCenter(datum);\n\n return polarToCartesian(center, radius, angle);\n }\n\n dataToCentralPosition = (datum: Datum): IPoint | null => {\n // 和 PieSeries.dataToPosition 实现不同,这里考虑了美观性,返回的位置是曲边梯形的中心\n const angle = datum[ARC_MIDDLE_ANGLE];\n if (isNil(angle)) {\n return null;\n }\n const radius = this.computeDatumRadius(datum);\n const innerRadius = this.computeDatumInnerRadius(datum);\n const center = this.computeCenter(datum);\n\n return polarToCartesian(center, (radius + innerRadius) / 2, angle);\n };\n\n initAnimation() {\n const animationParams: IPieAnimationParams = {\n growFrom: (datum, element, state) => {\n if (state === AnimationStateEnum.appear) {\n return this._startAngle;\n }\n if (state === AnimationStateEnum.disappear) {\n return this._endAngle;\n }\n\n const outState = [AnimationStateEnum.disappear, AnimationStateEnum.exit];\n const markElements = element.mark.elements;\n\n const data = datum;\n const dataIndex = data?.[DEFAULT_DATA_INDEX];\n\n // 当前 mark 在上个状态是否处于第一个\n if (markElements.find(e => e.data[0]?.[DEFAULT_DATA_INDEX] < dataIndex) === undefined) {\n return this._startAngle;\n }\n // 当前 mark 在上个状态是否处于最后一个\n if (markElements.find(e => e.data[0]?.[DEFAULT_DATA_INDEX] > dataIndex) === undefined) {\n return this._endAngle;\n }\n\n // 扇形不在边缘时,获取扇形生长点:获取相邻状态下相邻扇形的边缘\n const prevMarkElement = [...markElements].reverse().find(e => e.data[0]?.[DEFAULT_DATA_INDEX] < dataIndex);\n\n if (outState.includes(state)) {\n return prevMarkElement?.getNextGraphicAttributes()?.endAngle;\n }\n return prevMarkElement?.getGraphicAttribute('endAngle', true);\n }\n };\n const appearPreset = (this._spec.animationAppear as IStateAnimateSpec<PieAppearPreset>)?.preset;\n\n if (this._pieMark) {\n const pieAnimationConfig = animationConfig(\n Factory.getAnimationInKey('pie')?.(animationParams, appearPreset),\n userAnimationConfig(SeriesMarkNameEnum.pie, this._spec, this._markAttributeContext)\n );\n\n if (pieAnimationConfig.normal && (pieAnimationConfig.normal as IAnimationTypeConfig).type) {\n pieAnimationConfig.normal = centerOffsetConfig(\n this._pieMark,\n pieAnimationConfig.normal as IAnimationTypeConfig\n );\n }\n\n this._pieMark.setAnimationConfig(pieAnimationConfig);\n }\n\n if (this._emptyArcMark) {\n const pieAnimationConfig = animationConfig(\n Factory.getAnimationInKey('emptyCircle')?.(animationParams, appearPreset ?? 'fadeIn')\n );\n this._emptyArcMark.setAnimationConfig(pieAnimationConfig);\n }\n }\n\n getDefaultShapeType() {\n return 'circle';\n }\n\n getGroupFields(): string[] {\n // do nothing\n return [];\n }\n\n getStackGroupFields(): string[] {\n // do nothing\n return [];\n }\n\n getStackValueField(): string {\n // do nothing\n return '';\n }\n\n // make sure this function fast\n protected _noAnimationDataKey(datum: Datum, index: number) {\n return index;\n }\n\n getActiveMarks(): IMark[] {\n return [this._pieMark];\n }\n}\n\nexport class PieSeries<T extends IPieSeriesSpec = IPieSeriesSpec> extends BasePieSeries<T> implements IArcSeries {\n static readonly type: string = SeriesTypeEnum.pie;\n type = SeriesTypeEnum.pie;\n}\n\nexport const registerPieSeries = () => {\n registerArcMark();\n registerPieAnimation();\n registerEmptyCircleAnimation();\n Factory.registerSeries(PieSeries.type, PieSeries);\n};\n"]}
1
+ {"version":3,"sources":["../src/series/pie/pie.ts"],"names":[],"mappings":"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","file":"pie.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport { degreeToRadian, isValid } from '@visactor/vutils';\nimport { DataView } from '@visactor/vdataset';\nimport {\n ARC_START_ANGLE,\n ARC_END_ANGLE,\n ARC_RATIO,\n ARC_MIDDLE_ANGLE,\n ARC_RADIAN,\n ARC_QUADRANT,\n ARC_K,\n POLAR_START_RADIAN,\n POLAR_END_RADIAN\n} from '../../constant/polar';\nimport { AttributeLevel } from '../../constant/attribute';\nimport { DEFAULT_DATA_KEY, DEFAULT_DATA_INDEX } from '../../constant/data';\nimport { PREFIX } from '../../constant/base';\nimport type { IPoint, Datum, StateValueType, IArcMarkSpec } from '../../typings';\nimport { normalizeStartEndAngle } from '../../util/math';\nimport { isSpecValueWithScale } from '../../util/scale';\nimport { field } from '../../util/object';\nimport type { IModelLayoutOption } from '../../model/interface';\nimport { PolarSeries } from '../polar/polar';\nimport type { IMark, IMarkStyle } from '../../mark/interface';\nimport { MarkTypeEnum } from '../../mark/interface/type';\nimport type { IArcMark } from '../../mark/arc';\nimport type { ITextMark } from '../../mark/text';\nimport type { IPathMark } from '../../mark/path';\nimport type { IArcSeries, SeriesMarkMap } from '../interface';\nimport { SeriesMarkNameEnum, SeriesTypeEnum } from '../interface/type';\nimport type { IPieOpt } from '../../data/transforms/pie';\n// eslint-disable-next-line no-duplicate-imports\nimport { isDataEmpty, pie } from '../../data/transforms/pie';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport type { IPieAnimationParams, PieAppearPreset } from './animation/animation';\nimport { registerEmptyCircleAnimation, registerPieAnimation } from './animation/animation';\nimport { animationConfig, shouldMarkDoMorph, userAnimationConfig } from '../../animation/utils';\nimport { AnimationStateEnum } from '../../animation/interface';\nimport type { IBasePieSeriesSpec, IPieSeriesSpec } from './interface';\nimport { SeriesData } from '../base/series-data';\nimport type { IStateAnimateSpec } from '../../animation/spec';\nimport type { IAnimationTypeConfig } from '@visactor/vgrammar-core';\nimport { centerOffsetConfig } from './animation/centerOffset';\nimport { registerArcMark } from '../../mark/arc';\nimport { pieSeriesMark } from './constant';\nimport { Factory } from '../../core/factory';\nimport { isNil, polarToCartesian } from '@visactor/vutils';\nimport { PieSeriesSpecTransformer } from './pie-transformer';\nimport { DEFAULT_LABEL_VISIBLE } from '../../constant/label';\nimport { ChartEvent } from '../../constant/event';\nimport { computeLayoutRadius } from '../../component/axis/polar/util/common';\n\nexport class BasePieSeries<T extends IBasePieSeriesSpec> extends PolarSeries<T> implements IArcSeries {\n static readonly transformerConstructor = PieSeriesSpecTransformer as any;\n readonly transformerConstructor = PieSeriesSpecTransformer;\n\n protected _pieMarkName: SeriesMarkNameEnum = SeriesMarkNameEnum.pie;\n protected _pieMarkType: MarkTypeEnum = MarkTypeEnum.arc;\n\n static readonly mark: SeriesMarkMap = pieSeriesMark;\n\n protected _viewDataLabel!: SeriesData;\n\n // 饼图渲染不依赖于极坐标系轴,因此由 series 自己存储相关配置信息\n getCenter = (): IPoint => {\n const { width, height } = this._region.getLayoutRect();\n return {\n x: this._spec?.centerX ?? width / 2,\n y: this._spec?.centerY ?? height / 2\n };\n };\n protected _centerOffset!: number;\n\n protected _cornerRadius!: number;\n\n protected _startAngle: number = POLAR_START_RADIAN;\n protected _endAngle: number = POLAR_END_RADIAN;\n protected _padAngle!: number;\n\n protected _pieMark: IArcMark | null = null;\n protected _labelMark: ITextMark | null = null;\n protected _labelLineMark: IPathMark | null = null;\n\n protected _showEmptyCircle: boolean;\n protected _emptyArcMark: IArcMark | null = null;\n\n protected _showAllZero: boolean;\n protected _supportNegative: boolean;\n\n protected _buildMarkAttributeContext() {\n super._buildMarkAttributeContext();\n // center\n this._markAttributeContext.getCenter = () => ({\n x: () => this.getCenter().x,\n y: () => this.getCenter().y\n });\n\n // angle scale\n this._markAttributeContext.startAngleScale = (datum: Datum) => this.startAngleScale(datum);\n this._markAttributeContext.endAngleScale = (datum: Datum) => this.endAngleScale(datum);\n }\n\n setAttrFromSpec(): void {\n super.setAttrFromSpec();\n this._centerOffset = this._spec.centerOffset ?? 0;\n this._cornerRadius = this._spec.cornerRadius ?? 0;\n\n const normalized = normalizeStartEndAngle(\n isValid(this._spec.startAngle) ? degreeToRadian(this._spec.startAngle) : this._startAngle,\n isValid(this._spec.endAngle) ? degreeToRadian(this._spec.endAngle) : this._endAngle\n );\n this._startAngle = normalized.startAngle;\n this._endAngle = normalized.endAngle;\n this._padAngle = isValid(this._spec.padAngle) ? degreeToRadian(this._spec.padAngle) : 0;\n\n // 值信息给角度,angleField 是为了兼容小组件用法,因为 spec 改造前已经开放了\n this.setAngleField(this._spec.valueField || this._spec.angleField);\n if (this._spec.categoryField) {\n this.setSeriesField(this._spec.categoryField);\n }\n this._radiusField = [];\n\n this._specAngleField = this._angleField.slice();\n this._specRadiusField = [];\n\n this._showEmptyCircle = this._spec.emptyPlaceholder?.showEmptyCircle ?? false;\n\n this._showAllZero = this._spec.showAllZero ?? false;\n this._supportNegative = this._spec.supportNegative ?? false;\n }\n\n initData() {\n super.initData();\n\n const viewData = this.getViewData();\n if (!viewData) {\n return;\n }\n\n registerDataSetInstanceTransform(this._dataSet, 'pie', pie);\n\n viewData.transform(\n {\n type: 'pie',\n options: {\n angleField: () => this._angleField[0],\n startAngle: () => this._startAngle,\n endAngle: () => this._endAngle,\n minAngle: () => (isValid(this._spec.minAngle) ? degreeToRadian(this._spec.minAngle) : 0),\n asStartAngle: ARC_START_ANGLE,\n asEndAngle: ARC_END_ANGLE,\n asRatio: ARC_RATIO,\n asMiddleAngle: ARC_MIDDLE_ANGLE,\n asRadian: ARC_RADIAN,\n asQuadrant: ARC_QUADRANT,\n asK: ARC_K,\n showAllZero: this._showAllZero,\n supportNegative: this._supportNegative,\n showEmptyCircle: this._showEmptyCircle\n } as IPieOpt\n },\n false\n );\n\n const viewDataLabel = new DataView(this._dataSet, { name: `${PREFIX}_series_${this.id}_viewDataLabel` });\n viewDataLabel.parse([this.getViewData()], {\n type: 'dataview'\n });\n\n this._viewDataLabel = new SeriesData(this._option, viewDataLabel);\n }\n\n compileData() {\n super.compileData();\n this._viewDataLabel?.compile();\n }\n\n initMark(): void {\n this._pieMark = this._createMark(\n {\n ...BasePieSeries.mark.pie,\n name: this._pieMarkName,\n type: this._pieMarkType\n },\n {\n morph: shouldMarkDoMorph(this._spec, this._pieMarkName),\n defaultMorphElementKey: this._seriesField,\n key: DEFAULT_DATA_KEY,\n groupKey: this._seriesField,\n skipBeforeLayouted: true,\n isSeriesMark: true,\n customShape: this._spec.pie?.customShape,\n stateSort: this._spec.pie?.stateSort\n }\n ) as IArcMark;\n\n if (this._showEmptyCircle) {\n this._emptyArcMark = this._createMark(\n {\n name: 'emptyCircle',\n type: 'arc'\n },\n {\n dataView: false\n }\n ) as IArcMark;\n }\n }\n\n private startAngleScale(datum: Datum) {\n return field(ARC_START_ANGLE)(datum);\n }\n\n private endAngleScale(datum: Datum) {\n return field(ARC_END_ANGLE)(datum);\n }\n\n protected _computeLayoutRadius() {\n return computeLayoutRadius(\n () => this._spec.layoutRadius,\n this.getLayoutRect,\n this.getCenter,\n () => ({ startAngle: this._startAngle, endAngle: this._endAngle })\n );\n }\n\n initMarkStyle(): void {\n const initialStyle: Partial<IMarkStyle<IArcMarkSpec>> = {\n x: () => this.getCenter().x,\n y: () => this.getCenter().y,\n fill: this.getColorAttribute(),\n outerRadius: isSpecValueWithScale(this._outerRadius)\n ? this._outerRadius\n : () => this._computeLayoutRadius() * this._outerRadius,\n innerRadius: isSpecValueWithScale(this._innerRadius)\n ? this._innerRadius\n : () => this._computeLayoutRadius() * this._innerRadius,\n cornerRadius: () => this._computeLayoutRadius() * this._cornerRadius,\n startAngle: datum => this.startAngleScale(datum),\n endAngle: datum => this.endAngleScale(datum),\n padAngle: this._padAngle,\n centerOffset: this._centerOffset\n };\n\n const pieMark = this._pieMark;\n if (pieMark) {\n this.setMarkStyle(pieMark, initialStyle, 'normal', AttributeLevel.Series);\n }\n\n /**\n * !important\n * !TODO: isDataEmpty执行了2次, 需要结构上优化, 保存isEmpty的状态, 尝试将2次执行优化为1次\n */\n const emptyPieMark = this._emptyArcMark;\n if (emptyPieMark) {\n this.setMarkStyle(\n emptyPieMark,\n {\n ...initialStyle,\n visible: () => {\n const angleField = this.getAngleField()[0];\n return isDataEmpty(this.getViewData().latestData, angleField, this._supportNegative);\n }\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n }\n\n initInteraction(): void {\n this._parseInteractionConfig(this._pieMark ? [this._pieMark] : []);\n }\n\n protected initTooltip() {\n super.initTooltip();\n\n this._pieMark && this._tooltipHelper.activeTriggerSet.mark.add(this._pieMark);\n }\n\n initMarkStyleWithSpec(mark?: IMark, spec?: any, key?: string): void {\n super.initMarkStyleWithSpec(mark, spec, key);\n if (mark.name === this._pieMarkName) {\n // radius 配置需要额外处理比例值\n const pieSpec = this.getSpec()[mark.name as 'pie'];\n if (pieSpec) {\n for (const state in pieSpec.state || {}) {\n this.setMarkStyle(mark, this.generateRadiusStyle(pieSpec.state[state]), state, AttributeLevel.User_Mark);\n }\n }\n }\n if (mark.name === 'emptyCircle') {\n // 使用emptyCircle的radius比例值进行覆盖\n this.setMarkStyle(mark, this.generateRadiusStyle(spec.style), 'normal', AttributeLevel.User_Mark);\n }\n }\n\n initLabelMarkStyle(textMark: ITextMark) {\n if (!textMark) {\n return;\n }\n this.setMarkStyle(textMark, {\n visible: field(DEFAULT_LABEL_VISIBLE).bind(this),\n text: (datum: Datum) => {\n return datum[this.getDimensionField()[0]];\n },\n fill: this.getColorAttribute(),\n z: this.dataToPositionZ.bind(this)\n });\n }\n\n afterInitMark(): void {\n super.afterInitMark();\n }\n\n initEvent(): void {\n super.initEvent();\n this._viewDataLabel.getDataView()?.target.addListener('change', this.viewDataLabelUpdate.bind(this));\n }\n\n // 饼图不支持分组\n initGroups() {\n return;\n }\n\n /**\n * @override\n * @param ctx\n */\n onLayoutEnd(ctx: IModelLayoutOption): void {\n this._viewDataLabel.getDataView().reRunAllTransform();\n this.onMarkPositionUpdate();\n super.onLayoutEnd(ctx);\n }\n\n getDimensionField(): string[] {\n return this._seriesField ? [this._seriesField] : [];\n }\n getMeasureField(): string[] {\n return this._specAngleField;\n }\n\n private viewDataLabelUpdate() {\n this.event.emit(ChartEvent.viewDataLabelUpdate, { model: this });\n this._viewDataLabel.updateData();\n }\n\n protected generateRadiusStyle(spec: any) {\n if (!spec) {\n return;\n }\n const style: any = {};\n spec.outerRadius && (style.outerRadius = () => this._computeLayoutRadius() * spec.outerRadius);\n spec.innerRadius && (style.innerRadius = () => this._computeLayoutRadius() * spec.innerRadius);\n spec.cornerRadius && (style.cornerRadius = () => this._computeLayoutRadius() * spec.cornerRadius);\n return style;\n }\n\n computeCenter(datum: Datum): IPoint {\n return {\n x: this._pieMark.getAttribute('x', datum, 'normal') as number,\n y: this._pieMark.getAttribute('y', datum, 'normal') as number\n };\n }\n\n getRadius(state: StateValueType = 'normal'): number {\n const styleRadius =\n state === 'normal'\n ? this.getSpec()[this._pieMark?.name || 'pie']?.style?.outerRadius\n : this.getSpec()[this._pieMark?.name || 'pie']?.state?.[state]?.outerRadius;\n return styleRadius ?? this._outerRadius;\n }\n\n getInnerRadius(state: StateValueType = 'normal'): number {\n const styleRadius =\n state === 'normal'\n ? this.getSpec()[this._pieMark?.name || 'pie']?.style?.innerRadius\n : this.getSpec()[this._pieMark?.name || 'pie']?.state?.[state]?.innerRadius;\n return styleRadius ?? this._innerRadius;\n }\n\n computeRadius(r: number, k?: number): number {\n return this._computeLayoutRadius() * r * (isNil(k) ? 1 : k) + this._centerOffset;\n }\n\n computeDatumRadius(datum: Datum, state?: string): number {\n return this._computeLayoutRadius() * this.getRadius(state) + this._centerOffset;\n }\n\n _compareSpec(spec: T, prevSpec: T, ignoreCheckKeys?: { [key: string]: true }) {\n ignoreCheckKeys = ignoreCheckKeys ?? { data: true };\n const defaultIgnoreKeys: string[] = [\n 'centerX',\n 'centerY',\n 'centerOffset',\n 'radius',\n 'innerRadius',\n 'cornerRadius',\n 'startAngle',\n 'endAngle',\n 'padAngle'\n ];\n defaultIgnoreKeys.forEach(key => {\n ignoreCheckKeys[key] = true;\n });\n\n const result = super._compareSpec(spec, prevSpec, ignoreCheckKeys);\n spec = spec ?? ({} as T);\n if (defaultIgnoreKeys.some(key => (spec as any)[key] !== (prevSpec as any)[key])) {\n result.reRender = true;\n result.change = true;\n }\n return result;\n }\n\n computeDatumInnerRadius(datum: Datum, state?: string): number {\n return this._computeLayoutRadius() * this.getInnerRadius(state) + this._centerOffset;\n }\n\n dataToPosition(datum: Datum, checkInViewData?: boolean): IPoint | null {\n const angle = datum[ARC_MIDDLE_ANGLE];\n if (isNil(angle)) {\n return null;\n }\n if (checkInViewData && !this.isDatumInViewData(datum)) {\n return null;\n }\n const radius = this.computeDatumRadius(datum);\n const center = this.computeCenter(datum);\n\n return polarToCartesian(center, radius, angle);\n }\n\n dataToCentralPosition = (datum: Datum): IPoint | null => {\n // 和 PieSeries.dataToPosition 实现不同,这里考虑了美观性,返回的位置是曲边梯形的中心\n const angle = datum[ARC_MIDDLE_ANGLE];\n if (isNil(angle)) {\n return null;\n }\n const radius = this.computeDatumRadius(datum);\n const innerRadius = this.computeDatumInnerRadius(datum);\n const center = this.computeCenter(datum);\n\n return polarToCartesian(center, (radius + innerRadius) / 2, angle);\n };\n\n initAnimation() {\n const animationParams: IPieAnimationParams = {\n growFrom: (datum, element, state) => {\n if (state === AnimationStateEnum.appear) {\n return this._startAngle;\n }\n if (state === AnimationStateEnum.disappear) {\n return this._endAngle;\n }\n\n const outState = [AnimationStateEnum.disappear, AnimationStateEnum.exit];\n const markElements = element.mark.elements;\n\n const data = datum;\n const dataIndex = data?.[DEFAULT_DATA_INDEX];\n\n // 当前 mark 在上个状态是否处于第一个\n if (markElements.find(e => e.data[0]?.[DEFAULT_DATA_INDEX] < dataIndex) === undefined) {\n return this._startAngle;\n }\n // 当前 mark 在上个状态是否处于最后一个\n if (markElements.find(e => e.data[0]?.[DEFAULT_DATA_INDEX] > dataIndex) === undefined) {\n return this._endAngle;\n }\n\n // 扇形不在边缘时,获取扇形生长点:获取相邻状态下相邻扇形的边缘\n const prevMarkElement = [...markElements].reverse().find(e => e.data[0]?.[DEFAULT_DATA_INDEX] < dataIndex);\n\n if (outState.includes(state)) {\n return prevMarkElement?.getNextGraphicAttributes()?.endAngle;\n }\n return prevMarkElement?.getGraphicAttribute('endAngle', true);\n }\n };\n const appearPreset = (this._spec.animationAppear as IStateAnimateSpec<PieAppearPreset>)?.preset;\n\n if (this._pieMark) {\n const pieAnimationConfig = animationConfig(\n Factory.getAnimationInKey('pie')?.(animationParams, appearPreset),\n userAnimationConfig(SeriesMarkNameEnum.pie, this._spec, this._markAttributeContext)\n );\n\n if (pieAnimationConfig.normal && (pieAnimationConfig.normal as IAnimationTypeConfig).type) {\n pieAnimationConfig.normal = centerOffsetConfig(\n this._pieMark,\n pieAnimationConfig.normal as IAnimationTypeConfig\n );\n }\n\n this._pieMark.setAnimationConfig(pieAnimationConfig);\n }\n\n if (this._emptyArcMark) {\n const pieAnimationConfig = animationConfig(\n Factory.getAnimationInKey('emptyCircle')?.(animationParams, appearPreset ?? 'fadeIn')\n );\n this._emptyArcMark.setAnimationConfig(pieAnimationConfig);\n }\n }\n\n getDefaultShapeType() {\n return 'circle';\n }\n\n getGroupFields(): string[] {\n // do nothing\n return [];\n }\n\n getStackGroupFields(): string[] {\n // do nothing\n return [];\n }\n\n getStackValueField(): string {\n // do nothing\n return '';\n }\n\n // make sure this function fast\n protected _noAnimationDataKey(datum: Datum, index: number) {\n return index;\n }\n\n getActiveMarks(): IMark[] {\n return [this._pieMark];\n }\n}\n\nexport class PieSeries<T extends IPieSeriesSpec = IPieSeriesSpec> extends BasePieSeries<T> implements IArcSeries {\n static readonly type: string = SeriesTypeEnum.pie;\n type = SeriesTypeEnum.pie;\n}\n\nexport const registerPieSeries = () => {\n registerArcMark();\n registerPieAnimation();\n registerEmptyCircleAnimation();\n Factory.registerSeries(PieSeries.type, PieSeries);\n};\n"]}
@@ -35,6 +35,7 @@ export declare class SankeySeries<T extends ISankeySeriesSpec = ISankeySeriesSpe
35
35
  setValueField(f: string): string;
36
36
  setAttrFromSpec(): void;
37
37
  initData(): void;
38
+ compileData(): void;
38
39
  initMark(): void;
39
40
  protected _buildMarkAttributeContext(): void;
40
41
  valueToNode(value: StringOrNumber | StringOrNumber[]): any;
@@ -352,6 +352,11 @@ class SankeySeries extends cartesian_1.CartesianSeries {
352
352
  }, !1), this._linksSeriesData = new series_data_1.SeriesData(this._option, linksDataView);
353
353
  }
354
354
  }
355
+ compileData() {
356
+ var _a, _b;
357
+ super.compileData(), null === (_a = this._linksSeriesData) || void 0 === _a || _a.compile(),
358
+ null === (_b = this._nodesSeriesData) || void 0 === _b || _b.compile();
359
+ }
355
360
  initMark() {
356
361
  var _a, _b, _c, _d;
357
362
  const nodeMark = this._createMark(SankeySeries.mark.node, {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/series/sankey/sankey.ts"],"names":[],"mappings":"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","file":"sankey.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport { CartesianSeries } from '../cartesian/cartesian';\nimport type { SeriesMarkMap } from '../interface';\nimport { SeriesMarkNameEnum, SeriesTypeEnum } from '../interface/type';\nimport type { IRectMark } from '../../mark/rect';\nimport type { ILinkPathMark } from '../../mark/link-path';\nimport type { ITextMark } from '../../mark/text';\nimport { registerSankeyTransforms } from '@visactor/vgrammar-sankey';\nimport type { Datum, IRectMarkSpec, ILinkPathMarkSpec, IComposedTextMarkSpec, StringOrNumber } from '../../typings';\nimport { animationConfig, userAnimationConfig } from '../../animation/utils';\nimport { registerFadeInOutAnimation } from '../../animation/config';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport type { ISankeyOpt } from '../../data/transforms/sankey';\nimport { sankeyFormat, sankeyLayout, collectHierarchyField } from '../../data/transforms/sankey';\nimport { sankeyNodes } from '../../data/transforms/sankey-nodes';\nimport { sankeyLinks } from '../../data/transforms/sankey-links';\nimport { STATE_VALUE_ENUM } from '../../compile/mark/interface';\nimport { DataView } from '@visactor/vdataset';\nimport { LayoutZIndex } from '../../constant/layout';\nimport { AttributeLevel } from '../../constant/attribute';\nimport { Event_Bubble_Level } from '../../constant/event';\nimport { SeriesData } from '../base/series-data';\nimport { SankeySeriesTooltipHelper } from './tooltip-helper';\nimport type { IBounds } from '@visactor/vutils';\nimport { Bounds, array, isNil, isValid, isNumber, isArray } from '@visactor/vutils';\nimport type { ISankeyAnimationParams } from './animation';\nimport { registerSankeyAnimation } from './animation';\nimport type { ISankeySeriesSpec, SankeyLinkElement, ISankeyLabelSpec } from './interface';\nimport type { ExtendEventParam } from '../../event/interface';\nimport type { IElement, IGlyphElement, IMark as IVgrammarMark } from '@visactor/vgrammar-core';\nimport type { IMarkAnimateSpec } from '../../animation/spec';\nimport { ColorOrdinalScale } from '../../scale/color-ordinal-scale';\nimport { registerRectMark } from '../../mark/rect';\nimport { registerTextMark } from '../../mark/text';\nimport { registerLinkPathMark } from '../../mark/link-path';\nimport { sankeySeriesMark } from './constant';\nimport { flatten } from '../../data/transforms/flatten';\nimport type { SankeyNodeElement } from '@visactor/vgrammar-sankey';\nimport { Factory } from '../../core/factory';\nimport type { IMark } from '../../mark/interface';\nimport { TransformLevel } from '../../data/initialize';\nimport type { IBaseScale } from '@visactor/vscale';\nimport { addDataKey, initKeyMap } from '../../data/transforms/data-key';\nimport { SankeySeriesSpecTransformer } from './sankey-transformer';\nimport { getFormatFunction } from '../../component/util';\nimport type { ILabelSpec } from '../../component';\n\nexport class SankeySeries<T extends ISankeySeriesSpec = ISankeySeriesSpec> extends CartesianSeries<T> {\n static readonly type: string = SeriesTypeEnum.sankey;\n type = SeriesTypeEnum.sankey;\n\n static readonly transformerConstructor = SankeySeriesSpecTransformer as any;\n readonly transformerConstructor = SankeySeriesSpecTransformer;\n\n static readonly mark: SeriesMarkMap = sankeySeriesMark;\n\n private _nodeMark: IRectMark;\n private _linkMark: ILinkPathMark;\n\n private _nodeLayoutZIndex = LayoutZIndex.Node;\n private _labelLayoutZIndex = LayoutZIndex.Label;\n\n protected _nodesSeriesData?: SeriesData;\n protected _linksSeriesData?: SeriesData;\n\n private _viewBox: IBounds = new Bounds();\n\n protected _categoryField!: string;\n private _colorScale: IBaseScale;\n private _nodeList: (string | number)[];\n private _needClear: boolean;\n\n get direction() {\n return this._spec.direction ?? 'horizontal';\n }\n getCategoryField() {\n return this._categoryField;\n }\n setCategoryField(f: string): string {\n this._categoryField = f;\n return this._categoryField;\n }\n\n protected _valueField!: string;\n getValueField() {\n return this._valueField;\n }\n setValueField(f: string): string {\n this._valueField = f;\n return this._valueField;\n }\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n this.setCategoryField(this._spec.categoryField);\n this.setValueField(this._spec.valueField);\n this.setSeriesField(this._spec.seriesField ?? this._spec.categoryField);\n }\n\n initData() {\n super.initData();\n const viewData = this.getViewData();\n const rawData = this.getRawData();\n\n if (rawData && viewData) {\n // 初始化桑基图数据\n registerDataSetInstanceTransform(this._dataSet, 'sankeyLayout', sankeyLayout);\n registerDataSetInstanceTransform(this._dataSet, 'sankeyFormat', sankeyFormat);\n\n rawData.transform(\n {\n type: 'sankeyFormat'\n },\n false\n );\n\n viewData.transform({\n type: 'sankeyLayout',\n options: {\n view: () => {\n return {\n x0: this._viewBox.x1,\n x1: this._viewBox.x2,\n y0: this._viewBox.y1,\n y1: this._viewBox.y2\n };\n },\n sourceField: this._spec.sourceField,\n targetField: this._spec.targetField,\n valueField: this._spec.valueField,\n direction: this.direction,\n crossNodeAlign: this._spec.crossNodeAlign,\n nodeAlign: this._spec.nodeAlign ?? 'justify',\n nodeGap: this._spec.nodeGap ?? 8,\n nodeWidth: this._spec.nodeWidth ?? 10,\n linkWidth: this._spec.linkWidth,\n minStepWidth: this._spec.minStepWidth,\n minNodeHeight: this._spec.minNodeHeight ?? 4,\n minLinkHeight: this._spec.minLinkHeight,\n iterations: this._spec.iterations,\n nodeKey: this._spec.nodeKey,\n linkSortBy: this._spec.linkSortBy,\n nodeSortBy: this._spec.nodeSortBy,\n setNodeLayer: this._spec.setNodeLayer,\n dropIsolatedNode: this._spec.dropIsolatedNode,\n nodeHeight: this._spec.nodeHeight,\n linkHeight: this._spec.linkHeight,\n equalNodeHeight: this._spec.equalNodeHeight,\n linkOverlap: this._spec.linkOverlap,\n inverse: this._spec.inverse\n } as ISankeyOpt,\n level: TransformLevel.sankeyLayout\n });\n\n // 注册扁平化算法\n const { dataSet } = this._option;\n registerDataSetInstanceTransform(dataSet, 'sankeyNodes', sankeyNodes);\n registerDataSetInstanceTransform(dataSet, 'flatten', flatten);\n const nodesDataView = new DataView(dataSet, { name: `sankey-node-${this.id}-data` });\n nodesDataView.parse([this.getViewData()], {\n type: 'dataview'\n });\n nodesDataView.transform({\n type: 'sankeyNodes'\n });\n // sankeyNode进行扁平化处理(针对层级数据)\n nodesDataView.transform(\n {\n type: 'flatten',\n options: {\n callback: (node: SankeyNodeElement) => {\n if (node.datum) {\n const nodeData = node.datum[node.depth];\n return { ...node, ...nodeData };\n }\n return node;\n }\n }\n },\n false\n );\n\n nodesDataView.transform(\n {\n type: 'addVChartProperty',\n options: {\n beforeCall: initKeyMap.bind(this),\n call: addDataKey\n }\n },\n false\n );\n\n this._nodesSeriesData = new SeriesData(this._option, nodesDataView);\n\n registerDataSetInstanceTransform(dataSet, 'sankeyLinks', sankeyLinks);\n const linksDataView = new DataView(dataSet, { name: `sankey-link-${this.id}-data` });\n linksDataView.parse([this.getViewData()], {\n type: 'dataview'\n });\n linksDataView.transform({\n type: 'sankeyLinks'\n });\n\n linksDataView.transform(\n {\n type: 'addVChartProperty',\n options: {\n beforeCall: initKeyMap.bind(this),\n call: addDataKey\n }\n },\n false\n );\n this._linksSeriesData = new SeriesData(this._option, linksDataView);\n }\n }\n\n initMark(): void {\n const nodeMark = this._createMark(SankeySeries.mark.node, {\n isSeriesMark: true,\n dataView: this._nodesSeriesData.getDataView(),\n dataProductId: this._nodesSeriesData.getProductId(),\n customShape: this._spec.node?.customShape,\n stateSort: this._spec.node?.stateSort\n }) as IRectMark;\n if (nodeMark) {\n nodeMark.setZIndex(this._nodeLayoutZIndex);\n this._nodeMark = nodeMark;\n }\n\n const linkMark = this._createMark(SankeySeries.mark.link, {\n dataView: this._linksSeriesData.getDataView(),\n dataProductId: this._linksSeriesData.getProductId(),\n customShape: this._spec.link?.customShape,\n stateSort: this._spec.link?.stateSort\n }) as ILinkPathMark;\n if (linkMark) {\n this._linkMark = linkMark;\n }\n }\n\n protected _buildMarkAttributeContext() {\n super._buildMarkAttributeContext();\n\n this._markAttributeContext.valueToNode = this.valueToNode.bind(this);\n this._markAttributeContext.valueToLink = this.valueToLink.bind(this);\n }\n\n valueToNode(value: StringOrNumber | StringOrNumber[]) {\n const nodes = this._nodesSeriesData.getLatestData();\n const specifyValue = array(value)[0];\n return nodes && nodes.find((node: SankeyNodeElement) => node.key === specifyValue);\n }\n\n valueToLink(value: StringOrNumber | StringOrNumber[]) {\n const links = this._linksSeriesData.getLatestData();\n const specifyValue = array(value);\n\n return (\n links &&\n links.find(\n (link: SankeyLinkElement) => link && link.source === specifyValue[0] && link.target === specifyValue[1]\n )\n );\n }\n\n valueToPositionX(value: StringOrNumber | StringOrNumber[]) {\n const node = this.valueToNode(value);\n\n return node?.x0;\n }\n valueToPositionY(value: StringOrNumber | StringOrNumber[]) {\n const node = this.valueToNode(value);\n\n return node?.y0;\n }\n\n initMarkStyle(): void {\n this._initNodeMarkStyle();\n this._initLinkMarkStyle();\n }\n\n protected _initNodeMarkStyle() {\n const nodeMark = this._nodeMark;\n if (!nodeMark) {\n return;\n }\n\n this.setMarkStyle<IRectMarkSpec>(\n nodeMark,\n {\n x: (datum: Datum) => {\n return datum.x0;\n },\n x1: (datum: Datum) => datum.x1,\n y: (datum: Datum) => datum.y0,\n y1: (datum: Datum) => datum.y1\n },\n STATE_VALUE_ENUM.STATE_NORMAL,\n AttributeLevel.Mark\n );\n\n this.setMarkStyle(\n nodeMark,\n {\n fill: this._spec.node.style?.fill ?? this._fillByNode\n },\n 'normal',\n AttributeLevel.User_Mark\n );\n }\n\n protected _fillByNode = (datum: Datum) => {\n if (datum && datum.sourceRect && datum.targetRect) {\n return this._fillByLink(datum);\n }\n\n const fill = this._spec.node?.style?.fill;\n\n if (isValid(fill)) {\n return fill;\n } else if (isValid(this._spec.seriesField)) {\n const colorScale = this._option?.globalScale?.getScale('color');\n const nodeDatum = datum?.datum ? datum.datum : datum;\n\n return colorScale?.scale(nodeDatum?.[this._spec.seriesField]);\n }\n\n return this._colorScale?.scale(this._getNodeNameFromData(datum));\n };\n\n protected _fillByLink = (datum: Datum) => {\n const fill = this._spec.link?.style?.fill;\n\n if (fill) {\n return fill;\n } else if (isValid(this._spec.seriesField)) {\n const sourceNode = this._nodesSeriesData?.getLatestData()?.find((entry: any) => datum.source === entry.key);\n const nodeDatum = sourceNode?.datum;\n const colorScale = this._option?.globalScale?.getScale('color');\n\n return colorScale?.scale(nodeDatum?.[this._spec.seriesField]);\n }\n\n const sourceName = isNumber(datum.source) ? this.getNodeList()[datum.source] : datum.source;\n return this._colorScale?.scale(sourceName);\n };\n\n protected _initLinkMarkStyle() {\n const linkMark = this._linkMark;\n if (!linkMark) {\n return;\n }\n\n this.setMarkStyle<ILinkPathMarkSpec>(\n linkMark,\n {\n x0: (datum: Datum) => datum.x0,\n x1: (datum: Datum) => datum.x1,\n y0: (datum: Datum) => datum.y0,\n y1: (datum: Datum) => datum.y1,\n thickness: (datum: Datum) => datum.thickness,\n direction: this.direction\n },\n STATE_VALUE_ENUM.STATE_NORMAL,\n AttributeLevel.Series\n );\n\n this.setMarkStyle(\n linkMark,\n {\n fill: this._spec.link.style?.fill ?? this._fillByLink\n },\n 'normal',\n AttributeLevel.User_Mark\n );\n }\n\n initLabelMarkStyle(labelMark: ITextMark, labelSpec: ILabelSpec) {\n if (!labelMark) {\n return;\n }\n const position = labelSpec.position;\n\n if (position && position.includes('inside')) {\n this.setMarkStyle<IComposedTextMarkSpec>(labelMark, {\n fill: '#ffffff',\n text: (datum: Datum) => this._createText(datum, labelSpec as ISankeyLabelSpec),\n maxLineWidth: (datum: Datum) => (labelSpec as ISankeyLabelSpec).limit ?? datum.x1 - datum.x0\n });\n } else {\n this.setMarkStyle<IComposedTextMarkSpec>(labelMark, {\n fill: this._fillByNode,\n text: (datum: Datum) => this._createText(datum, labelSpec as ISankeyLabelSpec),\n maxLineWidth: (labelSpec as ISankeyLabelSpec).limit\n });\n }\n\n labelMark.setZIndex(this._labelLayoutZIndex);\n }\n\n private _createText(datum: Datum, labelSpec: ISankeyLabelSpec) {\n if (isNil(datum) || isNil(datum.datum)) {\n return '';\n }\n let text = datum.datum[this._spec.categoryField] || '';\n const { formatMethod, formatter } = labelSpec || {};\n\n const { formatFunc, args } = getFormatFunction(formatMethod, formatter, text, datum.datum);\n if (formatFunc) {\n text = formatFunc(...args, { series: this });\n }\n return text;\n }\n\n initAnimation() {\n const animationParams: ISankeyAnimationParams = {\n direction: this.direction,\n growFrom: () =>\n this.direction === 'horizontal'\n ? this._xAxisHelper?.getScale(0).scale(0)\n : this._yAxisHelper?.getScale(0).scale(0)\n };\n const appearPreset = (this._spec?.animationAppear as IMarkAnimateSpec<string>)?.preset;\n if (this._nodeMark) {\n this._nodeMark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('sankeyNode')?.(animationParams, appearPreset),\n userAnimationConfig(SeriesMarkNameEnum.node, this._spec, this._markAttributeContext)\n )\n );\n }\n if (this._linkMark) {\n this._linkMark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('sankeyLinkPath')?.(animationParams, appearPreset),\n userAnimationConfig(SeriesMarkNameEnum.link, this._spec, this._markAttributeContext)\n )\n );\n }\n }\n\n protected initEvent(): void {\n super.initEvent();\n\n this._nodesSeriesData.getDataView()?.target.addListener('change', this.nodesSeriesDataUpdate.bind(this));\n this._linksSeriesData.getDataView()?.target.addListener('change', this.linksSeriesDataUpdate.bind(this));\n const emphasisSpec = this._spec.emphasis ?? ({} as T['emphasis']);\n // 没有关闭交互时,才增加这些交互事件\n if (this._option.disableTriggerEvent !== true) {\n if (emphasisSpec.enable && (emphasisSpec.effect === 'adjacency' || emphasisSpec.effect === 'related')) {\n const event = emphasisSpec.trigger === 'hover' ? 'pointerover' : 'pointerdown';\n\n this.event.on(event, { level: Event_Bubble_Level.chart }, this._handleEmphasisElement);\n }\n }\n }\n\n private nodesSeriesDataUpdate() {\n this._nodesSeriesData.updateData();\n\n this._nodeList = null;\n this._setNodeOrdinalColorScale();\n }\n\n private linksSeriesDataUpdate() {\n this._linksSeriesData.updateData();\n }\n\n protected _handleEmphasisElement = (params: ExtendEventParam) => {\n const emphasisSpec = this._spec.emphasis ?? ({} as T['emphasis']);\n\n const element = params.item;\n\n if (emphasisSpec.effect === 'adjacency') {\n if (element && element.mark === this._nodeMark?.getProduct()) {\n this._handleNodeAdjacencyClick(element);\n } else if (element && element.mark === this._linkMark?.getProduct()) {\n this._handleLinkAdjacencyClick(element);\n } else {\n this._handleClearEmpty();\n }\n } else if (emphasisSpec.effect === 'related') {\n if (element && element.mark === this._nodeMark?.getProduct()) {\n this._handleNodeRelatedClick(element);\n } else if (element && element.mark === this._linkMark?.getProduct()) {\n this._handleLinkRelatedClick(element);\n } else {\n this._handleClearEmpty();\n }\n }\n };\n\n protected _handleClearEmpty = () => {\n if (!this._needClear) {\n return;\n }\n\n const allNodeElements = this._nodeMark?.getProductElements();\n\n if (!allNodeElements || !allNodeElements.length) {\n return;\n }\n\n const allLinkElements = this._linkMark?.getProductElements();\n\n if (!allLinkElements || !allLinkElements.length) {\n return;\n }\n\n const states = [STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE];\n\n allNodeElements.forEach(el => {\n el.removeState(states);\n });\n allLinkElements.forEach(el => {\n el.removeState(states);\n });\n\n this._needClear = false;\n };\n\n protected _handleNodeAdjacencyClick = (element: IElement) => {\n const nodeDatum = element.getDatum();\n const highlightNodes: string[] = [nodeDatum.key];\n\n if (this._linkMark) {\n const allLinkElements = this._linkMark.getProductElements();\n\n if (!allLinkElements || !allLinkElements.length) {\n return;\n }\n\n allLinkElements.forEach((linkEl: IElement, i: number) => {\n const linkDatum = linkEl.getDatum();\n const father = linkDatum?.parents ? 'parents' : 'source';\n if (array(linkDatum[father]).includes(nodeDatum.key)) {\n // 下游link\n if (!highlightNodes.includes(linkDatum.source)) {\n highlightNodes.push(linkDatum.source);\n }\n\n if (!highlightNodes.includes(linkDatum.target)) {\n highlightNodes.push(linkDatum.target);\n }\n\n let ratio;\n if (father === 'parents') {\n const originalDatum = linkDatum.datum;\n const val = originalDatum\n ? originalDatum\n .filter((entry: any) => entry.parents.some((par: any) => par.key === nodeDatum.key))\n .reduce((sum: number, d: any) => {\n return (sum += d.value);\n }, 0)\n : 0;\n ratio = val / linkDatum.value;\n }\n\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS); // 设置上用户配置选中状态\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, { ratio }); // 设置默认的部分高亮\n } else if (linkDatum.target === nodeDatum.key) {\n // 上游link\n if (!highlightNodes.includes(linkDatum.source)) {\n highlightNodes.push(linkDatum.source);\n }\n } else {\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n }\n });\n }\n\n if (this._nodeMark) {\n this._highLightElements(this._nodeMark.getProductElements(), highlightNodes);\n }\n\n this._needClear = true;\n };\n\n protected _handleLinkAdjacencyClick = (element: IGlyphElement) => {\n const curLinkDatum = element.getDatum();\n const highlightNodes: string[] = [curLinkDatum.source, curLinkDatum.target];\n\n if (this._linkMark) {\n const allLinkElements = this._linkMark.getProductElements();\n if (!allLinkElements || !allLinkElements.length) {\n return;\n }\n allLinkElements.forEach(linkEl => {\n if (linkEl === element) {\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, { ratio: 1 });\n } else {\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n }\n });\n }\n\n if (this._nodeMark) {\n this._highLightElements(this._nodeMark.getProductElements(), highlightNodes);\n }\n\n this._needClear = true;\n };\n\n protected _handleNodeRelatedClick = (element: IElement) => {\n const nodeDatum = element.getDatum();\n const allNodeElements = this._nodeMark.getProductElements();\n\n if (!allNodeElements || !allNodeElements.length) {\n return;\n }\n\n const allLinkElements = this._linkMark.getProductElements();\n\n if (!allLinkElements || !allLinkElements.length) {\n return;\n }\n\n const father = allLinkElements[0].getDatum()?.parents ? 'parents' : 'source';\n\n if (father === 'source') {\n // node-link 型数据\n const highlightNodes: string[] = [nodeDatum.key];\n const highlightLinks: string[] = [];\n\n allLinkElements.forEach((linkEl: IElement, i: number) => {\n const linkDatum = linkEl.getDatum();\n const father = linkDatum?.parents ? 'parents' : 'source';\n\n if (array(linkDatum[father]).includes(nodeDatum.key)) {\n // 下游link\n if (!highlightLinks.includes(linkDatum.key ?? linkDatum.index)) {\n highlightLinks.push(linkDatum.key ?? linkDatum.index);\n }\n if (!highlightNodes.includes(linkDatum.source)) {\n highlightNodes.push(linkDatum.source);\n }\n\n if (!highlightNodes.includes(linkDatum.target)) {\n highlightNodes.push(linkDatum.target);\n // 下游link的目标节点\n const targetNode = allNodeElements.find(nodeElement => {\n return nodeElement.data[0].key === linkDatum.target;\n });\n\n // 以下游link的目标节点为起点的links\n let targetNodeSourceLinks: any[] = targetNode.data[0].sourceLinks as any[];\n while (targetNodeSourceLinks?.length > 0) {\n const newTargetNodeSourceLinks: any[] = [];\n targetNodeSourceLinks.forEach((targetNodeSourceLinkDatum: any) => {\n if (!highlightLinks.includes(targetNodeSourceLinkDatum.key ?? targetNodeSourceLinkDatum.index)) {\n highlightLinks.push(targetNodeSourceLinkDatum.key ?? targetNodeSourceLinkDatum.index);\n // 该links的目标节点\n if (!highlightNodes.includes(targetNodeSourceLinkDatum.target)) {\n highlightNodes.push(targetNodeSourceLinkDatum.target);\n const sourceNodeTemp = allNodeElements.find(nodeElement => {\n return nodeElement.data[0].key === targetNodeSourceLinkDatum.target;\n });\n // 以该目标节点为起点的links\n newTargetNodeSourceLinks.push(sourceNodeTemp.data[0].targetLinks as any[]);\n } else {\n return;\n }\n } else {\n return;\n }\n });\n targetNodeSourceLinks = newTargetNodeSourceLinks;\n return;\n }\n }\n } else if (linkDatum.target === nodeDatum.key) {\n // 上游link\n if (!highlightLinks.includes(linkDatum.key ?? linkDatum.index)) {\n highlightLinks.push(linkDatum.key ?? linkDatum.index);\n }\n if (!highlightNodes.includes(linkDatum.source)) {\n highlightNodes.push(linkDatum.source);\n const sourceNode = allNodeElements.find(nodeElement => {\n return nodeElement.data[0].key === linkDatum.source;\n });\n let sourceNodeTargetLinks: any[] = sourceNode.data[0].targetLinks as any;\n while (sourceNodeTargetLinks?.length > 0) {\n const newSourceNodeTargetLinks: any[] = [];\n sourceNodeTargetLinks.forEach((sourceNodeTargetLinkDatum: any) => {\n if (!highlightLinks.includes(sourceNodeTargetLinkDatum.key ?? sourceNodeTargetLinkDatum.index)) {\n highlightLinks.push(sourceNodeTargetLinkDatum.key ?? sourceNodeTargetLinkDatum.index);\n if (!highlightNodes.includes(sourceNodeTargetLinkDatum.source)) {\n highlightNodes.push(sourceNodeTargetLinkDatum.source);\n const sourceNodeTemp = allNodeElements.find(nodeElement => {\n return nodeElement.data[0].key === sourceNodeTargetLinkDatum.source;\n });\n newSourceNodeTargetLinks.push(sourceNodeTemp.data[0].targetLinks as any[]);\n } else {\n return;\n }\n } else {\n return;\n }\n });\n sourceNodeTargetLinks = newSourceNodeTargetLinks;\n return;\n }\n }\n }\n });\n\n if (this._linkMark) {\n const allLinkElements = this._linkMark.getProductElements();\n\n if (!allLinkElements || !allLinkElements.length) {\n return;\n }\n\n allLinkElements.forEach((linkEl: IElement, i: number) => {\n if (highlightLinks.includes(linkEl.getDatum().key ?? linkEl.getDatum().index)) {\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);\n } else {\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n }\n });\n }\n\n if (this._nodeMark) {\n this._highLightElements(this._nodeMark.getProductElements(), highlightNodes);\n }\n } else {\n // 层级型数据\n const highlightNodes: string[] = [nodeDatum.key];\n\n const upstreamLinks = nodeDatum.targetLinks.reduce((res: any[], link: any) => {\n const dividedLinks = array((link as any).datum);\n\n dividedLinks.forEach(dividedLink => {\n const parents = dividedLink.parents;\n const len = parents.length;\n\n for (let i = 0; i < len; i++) {\n const source = parents[i].key;\n const target = parents[i + 1] ? parents[i + 1].key : nodeDatum.key;\n const value = dividedLink.value;\n\n // 检查 res 数组中是否已存在相同的 source 和 target\n const existingItem = res.find(item => item.source === source && item.target === target);\n\n if (existingItem) {\n // 如果存在相同的项,则对其 value 进行累加\n existingItem.value += value;\n } else {\n // 如果不存在相同的项,则添加新的项到 res 数组中\n res.push({ source, target, value });\n }\n }\n });\n return res;\n }, []);\n\n allLinkElements.forEach((linkEl: IElement, i: number) => {\n const linkDatum = linkEl.getDatum();\n const father = linkDatum?.parents ? 'parents' : 'source';\n const originalDatum = linkDatum.datum;\n const selectedDatum = originalDatum\n ? originalDatum.filter((entry: any) => entry[father].some((par: any) => par.key === nodeDatum.key))\n : null;\n\n const upSelectedLink = upstreamLinks.find(\n (upLink: any) => upLink.source === linkDatum.source && upLink.target === linkDatum.target\n );\n\n if (selectedDatum && selectedDatum.length) {\n // 下游link\n if (!highlightNodes.includes(linkDatum.source)) {\n highlightNodes.push(linkDatum.source);\n }\n\n if (!highlightNodes.includes(linkDatum.target)) {\n highlightNodes.push(linkDatum.target);\n }\n\n const val = selectedDatum.reduce((sum: number, d: any) => {\n return (sum += d.value);\n }, 0);\n const ratio = val / linkDatum.value;\n\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS); // 设置上用户配置选中状态\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, { ratio }); // 设置默认的部分高亮\n\n return;\n }\n\n if (upSelectedLink) {\n // 上游link\n if (!highlightNodes.includes(linkDatum.source)) {\n highlightNodes.push(linkDatum.source);\n }\n\n if (!highlightNodes.includes(linkDatum.target)) {\n highlightNodes.push(linkDatum.target);\n }\n\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS); // 设置上用户配置选中状态\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, { ratio: upSelectedLink.value / linkDatum.value }); // 设置默认的部分高亮\n\n return;\n }\n\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n\n return;\n });\n\n if (this._nodeMark) {\n this._highLightElements(this._nodeMark.getProductElements(), highlightNodes);\n }\n }\n\n this._needClear = true;\n };\n\n protected _handleLinkRelatedClick = (element: IGlyphElement) => {\n const allNodeElements = this._nodeMark.getProductElements();\n\n if (!allNodeElements || !allNodeElements.length) {\n return;\n }\n const allLinkElements = this._linkMark.getProductElements();\n\n if (!allLinkElements || !allLinkElements.length) {\n return;\n }\n\n const father = element.getDatum()?.parents ? 'parents' : 'source';\n if (father === 'source') {\n const states = [STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE];\n if (this._linkMark) {\n allLinkElements.forEach(linkEl => {\n linkEl.removeState(states);\n });\n }\n\n if (this._nodeMark) {\n allNodeElements.forEach(el => {\n el.removeState(states);\n });\n }\n } else {\n const curLinkDatum = element.getDatum();\n const highlightNodes: string[] = [curLinkDatum.source, curLinkDatum.target];\n const upstreamLinks: Array<{ source: string; target: string; value: number }> = [];\n\n const dividedLinks = array((curLinkDatum as any).datum);\n\n dividedLinks.forEach(dividedLink => {\n const parents = (dividedLink as any).parents;\n const len = parents.length;\n for (let i = 0; i < len - 1; i++) {\n const source = parents[i].key;\n const target = parents[i + 1].key;\n const value = dividedLink.value;\n\n // 检查 upstreamLinks 数组中是否已存在相同的 source 和 target\n const existingItem = upstreamLinks.find(item => item.source === source && item.target === target);\n upstreamLinks.push({\n source: parents[i].key,\n target: parents[i + 1].key,\n value: dividedLink.value\n });\n\n if (existingItem) {\n // 如果存在相同的项,则对其 value 进行累加\n existingItem.value += value;\n } else {\n // 如果不存在相同的项,则添加新的项到 upstreamLinks 数组中\n upstreamLinks.push({ source, target, value });\n }\n }\n });\n\n allLinkElements.forEach(linkEl => {\n const linkDatum = linkEl.getDatum();\n const originalDatum = linkDatum.datum;\n\n if (linkDatum.source === curLinkDatum.source && linkDatum.target === curLinkDatum.target) {\n // 自身\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, { ratio: 1 });\n return;\n }\n\n const selectedDatum = originalDatum\n ? originalDatum.filter((entry: any) => {\n const parentKeysList = entry.parents.map((item: any) => item.key);\n return parentKeysList.includes(curLinkDatum.source) && parentKeysList.includes(curLinkDatum.target);\n })\n : null;\n\n if (selectedDatum && selectedDatum.length) {\n // 下游link\n if (!highlightNodes.includes(linkDatum.source)) {\n highlightNodes.push(linkDatum.source);\n }\n\n if (!highlightNodes.includes(linkDatum.target)) {\n highlightNodes.push(linkDatum.target);\n }\n\n const val = selectedDatum\n .filter((entry: any) => {\n return entry.parents.some((par: any, index: number) => {\n return par.key === curLinkDatum.source && entry.parents[index + 1]?.key === curLinkDatum.target;\n });\n })\n .reduce((sum: number, d: any) => {\n return (sum += d.value);\n }, 0);\n const ratio = val / linkDatum.value;\n\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS); // 设置上用户配置选中状态\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, { ratio }); // 设置默认的部分高亮\n\n return;\n }\n\n const upSelectedLink = upstreamLinks.find(\n (upLink: any) => upLink.source === linkDatum.source && upLink.target === linkDatum.target\n );\n\n if (upSelectedLink) {\n // 点击节点的上游一层的节点\n if (!highlightNodes.includes(linkDatum.source)) {\n highlightNodes.push(linkDatum.source);\n }\n if (!highlightNodes.includes(linkDatum.target)) {\n highlightNodes.push(linkDatum.target);\n }\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS); // 设置上用户配置选中状态\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, { ratio: upSelectedLink.value / linkDatum.value }); // 设置默认的部分高亮\n\n return;\n }\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n\n return;\n });\n\n this._highLightElements(allNodeElements, highlightNodes);\n }\n\n this._needClear = true;\n };\n\n protected _highLightElements(vGrammarElements: IVgrammarMark['elements'], highlightNodes: string[]) {\n if (!vGrammarElements || !vGrammarElements.length) {\n return;\n }\n\n vGrammarElements.forEach(el => {\n el.removeState([STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS]);\n\n if (highlightNodes.includes(el.getDatum().key)) {\n //\n } else {\n el.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n }\n });\n }\n\n protected initTooltip() {\n this._tooltipHelper = new SankeySeriesTooltipHelper(this);\n this._nodeMark && this._tooltipHelper.activeTriggerSet.mark.add(this._nodeMark);\n this._linkMark && this._tooltipHelper.activeTriggerSet.mark.add(this._linkMark);\n }\n\n _setNodeOrdinalColorScale() {\n const colorScale = this._option?.globalScale?.getScale('color');\n\n if ((colorScale as any)?._specified) {\n this._colorScale = colorScale;\n return;\n }\n\n let colorDomain: string[];\n let colorRange: string[];\n\n if (colorScale) {\n colorDomain = colorScale.domain();\n colorRange = colorScale.range();\n }\n\n if (!colorRange) {\n colorRange = this._getDataScheme() as unknown as string[];\n }\n\n if (!colorDomain || isNil(colorDomain[0])) {\n // no validate domain\n colorDomain = this.getNodeList();\n\n if (colorDomain.length > 10) {\n colorRange = (this._getDataScheme()[1] as any)?.scheme;\n }\n }\n\n const ordinalScale = new ColorOrdinalScale();\n\n ordinalScale.domain(colorDomain).range?.(colorRange);\n\n this._colorScale = ordinalScale;\n return;\n }\n\n getNodeList() {\n if (this._nodeList) {\n return this._nodeList;\n }\n\n const data = this._rawData.latestData[0];\n\n const nodeList = data?.nodes\n ? data.nodes[0]?.children\n ? Array.from(this.extractNamesFromTree(data.nodes, this._spec.categoryField))\n : data.nodes.map((datum: Datum, index: number) => {\n return datum[this._spec.categoryField];\n })\n : data?.links\n ? Array.from(this.extractNamesFromLink(data.links))\n : data?.values?.map((datum: Datum, index: number) => {\n return datum[this._spec.categoryField];\n });\n\n this._nodeList = nodeList;\n\n return nodeList;\n }\n\n _getNodeNameFromData(datum: Datum) {\n return datum?.datum ? datum.datum[this._spec.categoryField] : datum.key ?? datum[this._spec.categoryField];\n }\n\n extractNamesFromTree(tree: any, categoryName: string) {\n // Set 用于存储唯一的 name 值\n const uniqueNames = new Set();\n\n // 遍历当前节点的子节点\n tree.forEach((node: any) => {\n // 将当前节点的 name 值添加到 Set 中\n uniqueNames.add(node[categoryName]);\n\n // 如果当前节点还有子节点,则递归调用该函数继续遍历子节点\n if (node.children) {\n const childNames = this.extractNamesFromTree(node.children, categoryName);\n childNames.forEach(name => uniqueNames.add(name));\n }\n });\n\n return uniqueNames;\n }\n\n extractNamesFromLink(links: any[]) {\n // Set 用于存储唯一的 name 值\n const uniqueNames = new Set();\n const { sourceField, targetField } = this._spec;\n\n // 遍历所有的边\n links.forEach((link: any) => {\n isValid(link[sourceField]) && uniqueNames.add(link[sourceField]);\n isValid(link[targetField]) && uniqueNames.add(link[targetField]);\n });\n\n return uniqueNames;\n }\n\n getDimensionField() {\n return [this._spec.categoryField];\n }\n\n getMeasureField(): string[] {\n return [this._valueField];\n }\n\n getRawDataStatisticsByField(field: string, isNumeric?: boolean) {\n // overwrite the getRawDataStatisticsByField of base-series\n if (!this._rawStatisticsCache) {\n this._rawStatisticsCache = {};\n }\n\n if (!this._rawStatisticsCache[field]) {\n const canUseViewStatistics = this._viewDataStatistics && this.getViewData().transformsArr.length <= 1;\n\n if (canUseViewStatistics && this._viewDataStatistics.latestData?.[field]) {\n this._rawStatisticsCache[field] = this._viewDataStatistics.latestData[field];\n } else if (this._rawData) {\n this._rawStatisticsCache[field] = {\n values: this._collectByField(field)\n };\n }\n }\n\n return this._rawStatisticsCache[field];\n }\n\n private _collectByField(field: string): string[] {\n const keyArray: any[] = [];\n const rawData = this.getRawData()?.latestData?.[0];\n\n if (!rawData) {\n return [];\n }\n\n if ((rawData as any).links) {\n //node-link型数据\n if ((rawData as any).nodes?.length) {\n (rawData as any).nodes.forEach((node: any) => {\n if (node[this._seriesField]) {\n keyArray.push(node[this._seriesField]);\n }\n });\n }\n } else if ((rawData as any).nodes) {\n const set = new Set<string>();\n // 层级型数据\n collectHierarchyField(set, (rawData as any).nodes, this._seriesField);\n\n return Array.from(set);\n }\n\n return keyArray;\n }\n\n onLayoutEnd(ctx: any): void {\n super.onLayoutEnd(ctx);\n this._viewBox.set(0, 0, this._region.getLayoutRect().width, this._region.getLayoutRect().height);\n\n // calculate the sankeyLayout\n this.getViewData().reRunAllTransform();\n }\n\n getDefaultShapeType(): string {\n return 'square';\n }\n\n // make sure this function fast\n protected _noAnimationDataKey(datum: Datum, index: number): unknown | undefined {\n return undefined;\n }\n\n getActiveMarks(): IMark[] {\n return [this._nodeMark, this._linkMark];\n }\n\n getMarkData(datum: Datum) {\n if (datum.datum) {\n if (isArray(datum.datum)) {\n return datum.datum[datum.datum.length - 1];\n }\n return datum.datum;\n }\n return datum;\n }\n}\n\nexport const registerSankeySeries = () => {\n registerSankeyTransforms();\n registerRectMark();\n registerLinkPathMark();\n registerTextMark();\n registerSankeyAnimation();\n registerFadeInOutAnimation();\n Factory.registerSeries(SankeySeries.type, SankeySeries);\n};\n"]}
1
+ {"version":3,"sources":["../src/series/sankey/sankey.ts"],"names":[],"mappings":"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","file":"sankey.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport { CartesianSeries } from '../cartesian/cartesian';\nimport type { SeriesMarkMap } from '../interface';\nimport { SeriesMarkNameEnum, SeriesTypeEnum } from '../interface/type';\nimport type { IRectMark } from '../../mark/rect';\nimport type { ILinkPathMark } from '../../mark/link-path';\nimport type { ITextMark } from '../../mark/text';\nimport { registerSankeyTransforms } from '@visactor/vgrammar-sankey';\nimport type { Datum, IRectMarkSpec, ILinkPathMarkSpec, IComposedTextMarkSpec, StringOrNumber } from '../../typings';\nimport { animationConfig, userAnimationConfig } from '../../animation/utils';\nimport { registerFadeInOutAnimation } from '../../animation/config';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport type { ISankeyOpt } from '../../data/transforms/sankey';\nimport { sankeyFormat, sankeyLayout, collectHierarchyField } from '../../data/transforms/sankey';\nimport { sankeyNodes } from '../../data/transforms/sankey-nodes';\nimport { sankeyLinks } from '../../data/transforms/sankey-links';\nimport { STATE_VALUE_ENUM } from '../../compile/mark/interface';\nimport { DataView } from '@visactor/vdataset';\nimport { LayoutZIndex } from '../../constant/layout';\nimport { AttributeLevel } from '../../constant/attribute';\nimport { Event_Bubble_Level } from '../../constant/event';\nimport { SeriesData } from '../base/series-data';\nimport { SankeySeriesTooltipHelper } from './tooltip-helper';\nimport type { IBounds } from '@visactor/vutils';\nimport { Bounds, array, isNil, isValid, isNumber, isArray } from '@visactor/vutils';\nimport type { ISankeyAnimationParams } from './animation';\nimport { registerSankeyAnimation } from './animation';\nimport type { ISankeySeriesSpec, SankeyLinkElement, ISankeyLabelSpec } from './interface';\nimport type { ExtendEventParam } from '../../event/interface';\nimport type { IElement, IGlyphElement, IMark as IVgrammarMark } from '@visactor/vgrammar-core';\nimport type { IMarkAnimateSpec } from '../../animation/spec';\nimport { ColorOrdinalScale } from '../../scale/color-ordinal-scale';\nimport { registerRectMark } from '../../mark/rect';\nimport { registerTextMark } from '../../mark/text';\nimport { registerLinkPathMark } from '../../mark/link-path';\nimport { sankeySeriesMark } from './constant';\nimport { flatten } from '../../data/transforms/flatten';\nimport type { SankeyNodeElement } from '@visactor/vgrammar-sankey';\nimport { Factory } from '../../core/factory';\nimport type { IMark } from '../../mark/interface';\nimport { TransformLevel } from '../../data/initialize';\nimport type { IBaseScale } from '@visactor/vscale';\nimport { addDataKey, initKeyMap } from '../../data/transforms/data-key';\nimport { SankeySeriesSpecTransformer } from './sankey-transformer';\nimport { getFormatFunction } from '../../component/util';\nimport type { ILabelSpec } from '../../component';\n\nexport class SankeySeries<T extends ISankeySeriesSpec = ISankeySeriesSpec> extends CartesianSeries<T> {\n static readonly type: string = SeriesTypeEnum.sankey;\n type = SeriesTypeEnum.sankey;\n\n static readonly transformerConstructor = SankeySeriesSpecTransformer as any;\n readonly transformerConstructor = SankeySeriesSpecTransformer;\n\n static readonly mark: SeriesMarkMap = sankeySeriesMark;\n\n private _nodeMark: IRectMark;\n private _linkMark: ILinkPathMark;\n\n private _nodeLayoutZIndex = LayoutZIndex.Node;\n private _labelLayoutZIndex = LayoutZIndex.Label;\n\n protected _nodesSeriesData?: SeriesData;\n protected _linksSeriesData?: SeriesData;\n\n private _viewBox: IBounds = new Bounds();\n\n protected _categoryField!: string;\n private _colorScale: IBaseScale;\n private _nodeList: (string | number)[];\n private _needClear: boolean;\n\n get direction() {\n return this._spec.direction ?? 'horizontal';\n }\n getCategoryField() {\n return this._categoryField;\n }\n setCategoryField(f: string): string {\n this._categoryField = f;\n return this._categoryField;\n }\n\n protected _valueField!: string;\n getValueField() {\n return this._valueField;\n }\n setValueField(f: string): string {\n this._valueField = f;\n return this._valueField;\n }\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n this.setCategoryField(this._spec.categoryField);\n this.setValueField(this._spec.valueField);\n this.setSeriesField(this._spec.seriesField ?? this._spec.categoryField);\n }\n\n initData() {\n super.initData();\n const viewData = this.getViewData();\n const rawData = this.getRawData();\n\n if (rawData && viewData) {\n // 初始化桑基图数据\n registerDataSetInstanceTransform(this._dataSet, 'sankeyLayout', sankeyLayout);\n registerDataSetInstanceTransform(this._dataSet, 'sankeyFormat', sankeyFormat);\n\n rawData.transform(\n {\n type: 'sankeyFormat'\n },\n false\n );\n\n viewData.transform({\n type: 'sankeyLayout',\n options: {\n view: () => {\n return {\n x0: this._viewBox.x1,\n x1: this._viewBox.x2,\n y0: this._viewBox.y1,\n y1: this._viewBox.y2\n };\n },\n sourceField: this._spec.sourceField,\n targetField: this._spec.targetField,\n valueField: this._spec.valueField,\n direction: this.direction,\n crossNodeAlign: this._spec.crossNodeAlign,\n nodeAlign: this._spec.nodeAlign ?? 'justify',\n nodeGap: this._spec.nodeGap ?? 8,\n nodeWidth: this._spec.nodeWidth ?? 10,\n linkWidth: this._spec.linkWidth,\n minStepWidth: this._spec.minStepWidth,\n minNodeHeight: this._spec.minNodeHeight ?? 4,\n minLinkHeight: this._spec.minLinkHeight,\n iterations: this._spec.iterations,\n nodeKey: this._spec.nodeKey,\n linkSortBy: this._spec.linkSortBy,\n nodeSortBy: this._spec.nodeSortBy,\n setNodeLayer: this._spec.setNodeLayer,\n dropIsolatedNode: this._spec.dropIsolatedNode,\n nodeHeight: this._spec.nodeHeight,\n linkHeight: this._spec.linkHeight,\n equalNodeHeight: this._spec.equalNodeHeight,\n linkOverlap: this._spec.linkOverlap,\n inverse: this._spec.inverse\n } as ISankeyOpt,\n level: TransformLevel.sankeyLayout\n });\n\n // 注册扁平化算法\n const { dataSet } = this._option;\n registerDataSetInstanceTransform(dataSet, 'sankeyNodes', sankeyNodes);\n registerDataSetInstanceTransform(dataSet, 'flatten', flatten);\n const nodesDataView = new DataView(dataSet, { name: `sankey-node-${this.id}-data` });\n nodesDataView.parse([this.getViewData()], {\n type: 'dataview'\n });\n nodesDataView.transform({\n type: 'sankeyNodes'\n });\n // sankeyNode进行扁平化处理(针对层级数据)\n nodesDataView.transform(\n {\n type: 'flatten',\n options: {\n callback: (node: SankeyNodeElement) => {\n if (node.datum) {\n const nodeData = node.datum[node.depth];\n return { ...node, ...nodeData };\n }\n return node;\n }\n }\n },\n false\n );\n\n nodesDataView.transform(\n {\n type: 'addVChartProperty',\n options: {\n beforeCall: initKeyMap.bind(this),\n call: addDataKey\n }\n },\n false\n );\n\n this._nodesSeriesData = new SeriesData(this._option, nodesDataView);\n\n registerDataSetInstanceTransform(dataSet, 'sankeyLinks', sankeyLinks);\n const linksDataView = new DataView(dataSet, { name: `sankey-link-${this.id}-data` });\n linksDataView.parse([this.getViewData()], {\n type: 'dataview'\n });\n linksDataView.transform({\n type: 'sankeyLinks'\n });\n\n linksDataView.transform(\n {\n type: 'addVChartProperty',\n options: {\n beforeCall: initKeyMap.bind(this),\n call: addDataKey\n }\n },\n false\n );\n this._linksSeriesData = new SeriesData(this._option, linksDataView);\n }\n }\n\n compileData() {\n super.compileData();\n this._linksSeriesData?.compile();\n this._nodesSeriesData?.compile();\n }\n\n initMark(): void {\n const nodeMark = this._createMark(SankeySeries.mark.node, {\n isSeriesMark: true,\n dataView: this._nodesSeriesData.getDataView(),\n dataProductId: this._nodesSeriesData.getProductId(),\n customShape: this._spec.node?.customShape,\n stateSort: this._spec.node?.stateSort\n }) as IRectMark;\n if (nodeMark) {\n nodeMark.setZIndex(this._nodeLayoutZIndex);\n this._nodeMark = nodeMark;\n }\n\n const linkMark = this._createMark(SankeySeries.mark.link, {\n dataView: this._linksSeriesData.getDataView(),\n dataProductId: this._linksSeriesData.getProductId(),\n customShape: this._spec.link?.customShape,\n stateSort: this._spec.link?.stateSort\n }) as ILinkPathMark;\n if (linkMark) {\n this._linkMark = linkMark;\n }\n }\n\n protected _buildMarkAttributeContext() {\n super._buildMarkAttributeContext();\n\n this._markAttributeContext.valueToNode = this.valueToNode.bind(this);\n this._markAttributeContext.valueToLink = this.valueToLink.bind(this);\n }\n\n valueToNode(value: StringOrNumber | StringOrNumber[]) {\n const nodes = this._nodesSeriesData.getLatestData();\n const specifyValue = array(value)[0];\n return nodes && nodes.find((node: SankeyNodeElement) => node.key === specifyValue);\n }\n\n valueToLink(value: StringOrNumber | StringOrNumber[]) {\n const links = this._linksSeriesData.getLatestData();\n const specifyValue = array(value);\n\n return (\n links &&\n links.find(\n (link: SankeyLinkElement) => link && link.source === specifyValue[0] && link.target === specifyValue[1]\n )\n );\n }\n\n valueToPositionX(value: StringOrNumber | StringOrNumber[]) {\n const node = this.valueToNode(value);\n\n return node?.x0;\n }\n valueToPositionY(value: StringOrNumber | StringOrNumber[]) {\n const node = this.valueToNode(value);\n\n return node?.y0;\n }\n\n initMarkStyle(): void {\n this._initNodeMarkStyle();\n this._initLinkMarkStyle();\n }\n\n protected _initNodeMarkStyle() {\n const nodeMark = this._nodeMark;\n if (!nodeMark) {\n return;\n }\n\n this.setMarkStyle<IRectMarkSpec>(\n nodeMark,\n {\n x: (datum: Datum) => {\n return datum.x0;\n },\n x1: (datum: Datum) => datum.x1,\n y: (datum: Datum) => datum.y0,\n y1: (datum: Datum) => datum.y1\n },\n STATE_VALUE_ENUM.STATE_NORMAL,\n AttributeLevel.Mark\n );\n\n this.setMarkStyle(\n nodeMark,\n {\n fill: this._spec.node.style?.fill ?? this._fillByNode\n },\n 'normal',\n AttributeLevel.User_Mark\n );\n }\n\n protected _fillByNode = (datum: Datum) => {\n if (datum && datum.sourceRect && datum.targetRect) {\n return this._fillByLink(datum);\n }\n\n const fill = this._spec.node?.style?.fill;\n\n if (isValid(fill)) {\n return fill;\n } else if (isValid(this._spec.seriesField)) {\n const colorScale = this._option?.globalScale?.getScale('color');\n const nodeDatum = datum?.datum ? datum.datum : datum;\n\n return colorScale?.scale(nodeDatum?.[this._spec.seriesField]);\n }\n\n return this._colorScale?.scale(this._getNodeNameFromData(datum));\n };\n\n protected _fillByLink = (datum: Datum) => {\n const fill = this._spec.link?.style?.fill;\n\n if (fill) {\n return fill;\n } else if (isValid(this._spec.seriesField)) {\n const sourceNode = this._nodesSeriesData?.getLatestData()?.find((entry: any) => datum.source === entry.key);\n const nodeDatum = sourceNode?.datum;\n const colorScale = this._option?.globalScale?.getScale('color');\n\n return colorScale?.scale(nodeDatum?.[this._spec.seriesField]);\n }\n\n const sourceName = isNumber(datum.source) ? this.getNodeList()[datum.source] : datum.source;\n return this._colorScale?.scale(sourceName);\n };\n\n protected _initLinkMarkStyle() {\n const linkMark = this._linkMark;\n if (!linkMark) {\n return;\n }\n\n this.setMarkStyle<ILinkPathMarkSpec>(\n linkMark,\n {\n x0: (datum: Datum) => datum.x0,\n x1: (datum: Datum) => datum.x1,\n y0: (datum: Datum) => datum.y0,\n y1: (datum: Datum) => datum.y1,\n thickness: (datum: Datum) => datum.thickness,\n direction: this.direction\n },\n STATE_VALUE_ENUM.STATE_NORMAL,\n AttributeLevel.Series\n );\n\n this.setMarkStyle(\n linkMark,\n {\n fill: this._spec.link.style?.fill ?? this._fillByLink\n },\n 'normal',\n AttributeLevel.User_Mark\n );\n }\n\n initLabelMarkStyle(labelMark: ITextMark, labelSpec: ILabelSpec) {\n if (!labelMark) {\n return;\n }\n const position = labelSpec.position;\n\n if (position && position.includes('inside')) {\n this.setMarkStyle<IComposedTextMarkSpec>(labelMark, {\n fill: '#ffffff',\n text: (datum: Datum) => this._createText(datum, labelSpec as ISankeyLabelSpec),\n maxLineWidth: (datum: Datum) => (labelSpec as ISankeyLabelSpec).limit ?? datum.x1 - datum.x0\n });\n } else {\n this.setMarkStyle<IComposedTextMarkSpec>(labelMark, {\n fill: this._fillByNode,\n text: (datum: Datum) => this._createText(datum, labelSpec as ISankeyLabelSpec),\n maxLineWidth: (labelSpec as ISankeyLabelSpec).limit\n });\n }\n\n labelMark.setZIndex(this._labelLayoutZIndex);\n }\n\n private _createText(datum: Datum, labelSpec: ISankeyLabelSpec) {\n if (isNil(datum) || isNil(datum.datum)) {\n return '';\n }\n let text = datum.datum[this._spec.categoryField] || '';\n const { formatMethod, formatter } = labelSpec || {};\n\n const { formatFunc, args } = getFormatFunction(formatMethod, formatter, text, datum.datum);\n if (formatFunc) {\n text = formatFunc(...args, { series: this });\n }\n return text;\n }\n\n initAnimation() {\n const animationParams: ISankeyAnimationParams = {\n direction: this.direction,\n growFrom: () =>\n this.direction === 'horizontal'\n ? this._xAxisHelper?.getScale(0).scale(0)\n : this._yAxisHelper?.getScale(0).scale(0)\n };\n const appearPreset = (this._spec?.animationAppear as IMarkAnimateSpec<string>)?.preset;\n if (this._nodeMark) {\n this._nodeMark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('sankeyNode')?.(animationParams, appearPreset),\n userAnimationConfig(SeriesMarkNameEnum.node, this._spec, this._markAttributeContext)\n )\n );\n }\n if (this._linkMark) {\n this._linkMark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('sankeyLinkPath')?.(animationParams, appearPreset),\n userAnimationConfig(SeriesMarkNameEnum.link, this._spec, this._markAttributeContext)\n )\n );\n }\n }\n\n protected initEvent(): void {\n super.initEvent();\n\n this._nodesSeriesData.getDataView()?.target.addListener('change', this.nodesSeriesDataUpdate.bind(this));\n this._linksSeriesData.getDataView()?.target.addListener('change', this.linksSeriesDataUpdate.bind(this));\n const emphasisSpec = this._spec.emphasis ?? ({} as T['emphasis']);\n // 没有关闭交互时,才增加这些交互事件\n if (this._option.disableTriggerEvent !== true) {\n if (emphasisSpec.enable && (emphasisSpec.effect === 'adjacency' || emphasisSpec.effect === 'related')) {\n const event = emphasisSpec.trigger === 'hover' ? 'pointerover' : 'pointerdown';\n\n this.event.on(event, { level: Event_Bubble_Level.chart }, this._handleEmphasisElement);\n }\n }\n }\n\n private nodesSeriesDataUpdate() {\n this._nodesSeriesData.updateData();\n\n this._nodeList = null;\n this._setNodeOrdinalColorScale();\n }\n\n private linksSeriesDataUpdate() {\n this._linksSeriesData.updateData();\n }\n\n protected _handleEmphasisElement = (params: ExtendEventParam) => {\n const emphasisSpec = this._spec.emphasis ?? ({} as T['emphasis']);\n\n const element = params.item;\n\n if (emphasisSpec.effect === 'adjacency') {\n if (element && element.mark === this._nodeMark?.getProduct()) {\n this._handleNodeAdjacencyClick(element);\n } else if (element && element.mark === this._linkMark?.getProduct()) {\n this._handleLinkAdjacencyClick(element);\n } else {\n this._handleClearEmpty();\n }\n } else if (emphasisSpec.effect === 'related') {\n if (element && element.mark === this._nodeMark?.getProduct()) {\n this._handleNodeRelatedClick(element);\n } else if (element && element.mark === this._linkMark?.getProduct()) {\n this._handleLinkRelatedClick(element);\n } else {\n this._handleClearEmpty();\n }\n }\n };\n\n protected _handleClearEmpty = () => {\n if (!this._needClear) {\n return;\n }\n\n const allNodeElements = this._nodeMark?.getProductElements();\n\n if (!allNodeElements || !allNodeElements.length) {\n return;\n }\n\n const allLinkElements = this._linkMark?.getProductElements();\n\n if (!allLinkElements || !allLinkElements.length) {\n return;\n }\n\n const states = [STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE];\n\n allNodeElements.forEach(el => {\n el.removeState(states);\n });\n allLinkElements.forEach(el => {\n el.removeState(states);\n });\n\n this._needClear = false;\n };\n\n protected _handleNodeAdjacencyClick = (element: IElement) => {\n const nodeDatum = element.getDatum();\n const highlightNodes: string[] = [nodeDatum.key];\n\n if (this._linkMark) {\n const allLinkElements = this._linkMark.getProductElements();\n\n if (!allLinkElements || !allLinkElements.length) {\n return;\n }\n\n allLinkElements.forEach((linkEl: IElement, i: number) => {\n const linkDatum = linkEl.getDatum();\n const father = linkDatum?.parents ? 'parents' : 'source';\n if (array(linkDatum[father]).includes(nodeDatum.key)) {\n // 下游link\n if (!highlightNodes.includes(linkDatum.source)) {\n highlightNodes.push(linkDatum.source);\n }\n\n if (!highlightNodes.includes(linkDatum.target)) {\n highlightNodes.push(linkDatum.target);\n }\n\n let ratio;\n if (father === 'parents') {\n const originalDatum = linkDatum.datum;\n const val = originalDatum\n ? originalDatum\n .filter((entry: any) => entry.parents.some((par: any) => par.key === nodeDatum.key))\n .reduce((sum: number, d: any) => {\n return (sum += d.value);\n }, 0)\n : 0;\n ratio = val / linkDatum.value;\n }\n\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS); // 设置上用户配置选中状态\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, { ratio }); // 设置默认的部分高亮\n } else if (linkDatum.target === nodeDatum.key) {\n // 上游link\n if (!highlightNodes.includes(linkDatum.source)) {\n highlightNodes.push(linkDatum.source);\n }\n } else {\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n }\n });\n }\n\n if (this._nodeMark) {\n this._highLightElements(this._nodeMark.getProductElements(), highlightNodes);\n }\n\n this._needClear = true;\n };\n\n protected _handleLinkAdjacencyClick = (element: IGlyphElement) => {\n const curLinkDatum = element.getDatum();\n const highlightNodes: string[] = [curLinkDatum.source, curLinkDatum.target];\n\n if (this._linkMark) {\n const allLinkElements = this._linkMark.getProductElements();\n if (!allLinkElements || !allLinkElements.length) {\n return;\n }\n allLinkElements.forEach(linkEl => {\n if (linkEl === element) {\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, { ratio: 1 });\n } else {\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n }\n });\n }\n\n if (this._nodeMark) {\n this._highLightElements(this._nodeMark.getProductElements(), highlightNodes);\n }\n\n this._needClear = true;\n };\n\n protected _handleNodeRelatedClick = (element: IElement) => {\n const nodeDatum = element.getDatum();\n const allNodeElements = this._nodeMark.getProductElements();\n\n if (!allNodeElements || !allNodeElements.length) {\n return;\n }\n\n const allLinkElements = this._linkMark.getProductElements();\n\n if (!allLinkElements || !allLinkElements.length) {\n return;\n }\n\n const father = allLinkElements[0].getDatum()?.parents ? 'parents' : 'source';\n\n if (father === 'source') {\n // node-link 型数据\n const highlightNodes: string[] = [nodeDatum.key];\n const highlightLinks: string[] = [];\n\n allLinkElements.forEach((linkEl: IElement, i: number) => {\n const linkDatum = linkEl.getDatum();\n const father = linkDatum?.parents ? 'parents' : 'source';\n\n if (array(linkDatum[father]).includes(nodeDatum.key)) {\n // 下游link\n if (!highlightLinks.includes(linkDatum.key ?? linkDatum.index)) {\n highlightLinks.push(linkDatum.key ?? linkDatum.index);\n }\n if (!highlightNodes.includes(linkDatum.source)) {\n highlightNodes.push(linkDatum.source);\n }\n\n if (!highlightNodes.includes(linkDatum.target)) {\n highlightNodes.push(linkDatum.target);\n // 下游link的目标节点\n const targetNode = allNodeElements.find(nodeElement => {\n return nodeElement.data[0].key === linkDatum.target;\n });\n\n // 以下游link的目标节点为起点的links\n let targetNodeSourceLinks: any[] = targetNode.data[0].sourceLinks as any[];\n while (targetNodeSourceLinks?.length > 0) {\n const newTargetNodeSourceLinks: any[] = [];\n targetNodeSourceLinks.forEach((targetNodeSourceLinkDatum: any) => {\n if (!highlightLinks.includes(targetNodeSourceLinkDatum.key ?? targetNodeSourceLinkDatum.index)) {\n highlightLinks.push(targetNodeSourceLinkDatum.key ?? targetNodeSourceLinkDatum.index);\n // 该links的目标节点\n if (!highlightNodes.includes(targetNodeSourceLinkDatum.target)) {\n highlightNodes.push(targetNodeSourceLinkDatum.target);\n const sourceNodeTemp = allNodeElements.find(nodeElement => {\n return nodeElement.data[0].key === targetNodeSourceLinkDatum.target;\n });\n // 以该目标节点为起点的links\n newTargetNodeSourceLinks.push(sourceNodeTemp.data[0].targetLinks as any[]);\n } else {\n return;\n }\n } else {\n return;\n }\n });\n targetNodeSourceLinks = newTargetNodeSourceLinks;\n return;\n }\n }\n } else if (linkDatum.target === nodeDatum.key) {\n // 上游link\n if (!highlightLinks.includes(linkDatum.key ?? linkDatum.index)) {\n highlightLinks.push(linkDatum.key ?? linkDatum.index);\n }\n if (!highlightNodes.includes(linkDatum.source)) {\n highlightNodes.push(linkDatum.source);\n const sourceNode = allNodeElements.find(nodeElement => {\n return nodeElement.data[0].key === linkDatum.source;\n });\n let sourceNodeTargetLinks: any[] = sourceNode.data[0].targetLinks as any;\n while (sourceNodeTargetLinks?.length > 0) {\n const newSourceNodeTargetLinks: any[] = [];\n sourceNodeTargetLinks.forEach((sourceNodeTargetLinkDatum: any) => {\n if (!highlightLinks.includes(sourceNodeTargetLinkDatum.key ?? sourceNodeTargetLinkDatum.index)) {\n highlightLinks.push(sourceNodeTargetLinkDatum.key ?? sourceNodeTargetLinkDatum.index);\n if (!highlightNodes.includes(sourceNodeTargetLinkDatum.source)) {\n highlightNodes.push(sourceNodeTargetLinkDatum.source);\n const sourceNodeTemp = allNodeElements.find(nodeElement => {\n return nodeElement.data[0].key === sourceNodeTargetLinkDatum.source;\n });\n newSourceNodeTargetLinks.push(sourceNodeTemp.data[0].targetLinks as any[]);\n } else {\n return;\n }\n } else {\n return;\n }\n });\n sourceNodeTargetLinks = newSourceNodeTargetLinks;\n return;\n }\n }\n }\n });\n\n if (this._linkMark) {\n const allLinkElements = this._linkMark.getProductElements();\n\n if (!allLinkElements || !allLinkElements.length) {\n return;\n }\n\n allLinkElements.forEach((linkEl: IElement, i: number) => {\n if (highlightLinks.includes(linkEl.getDatum().key ?? linkEl.getDatum().index)) {\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);\n } else {\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n }\n });\n }\n\n if (this._nodeMark) {\n this._highLightElements(this._nodeMark.getProductElements(), highlightNodes);\n }\n } else {\n // 层级型数据\n const highlightNodes: string[] = [nodeDatum.key];\n\n const upstreamLinks = nodeDatum.targetLinks.reduce((res: any[], link: any) => {\n const dividedLinks = array((link as any).datum);\n\n dividedLinks.forEach(dividedLink => {\n const parents = dividedLink.parents;\n const len = parents.length;\n\n for (let i = 0; i < len; i++) {\n const source = parents[i].key;\n const target = parents[i + 1] ? parents[i + 1].key : nodeDatum.key;\n const value = dividedLink.value;\n\n // 检查 res 数组中是否已存在相同的 source 和 target\n const existingItem = res.find(item => item.source === source && item.target === target);\n\n if (existingItem) {\n // 如果存在相同的项,则对其 value 进行累加\n existingItem.value += value;\n } else {\n // 如果不存在相同的项,则添加新的项到 res 数组中\n res.push({ source, target, value });\n }\n }\n });\n return res;\n }, []);\n\n allLinkElements.forEach((linkEl: IElement, i: number) => {\n const linkDatum = linkEl.getDatum();\n const father = linkDatum?.parents ? 'parents' : 'source';\n const originalDatum = linkDatum.datum;\n const selectedDatum = originalDatum\n ? originalDatum.filter((entry: any) => entry[father].some((par: any) => par.key === nodeDatum.key))\n : null;\n\n const upSelectedLink = upstreamLinks.find(\n (upLink: any) => upLink.source === linkDatum.source && upLink.target === linkDatum.target\n );\n\n if (selectedDatum && selectedDatum.length) {\n // 下游link\n if (!highlightNodes.includes(linkDatum.source)) {\n highlightNodes.push(linkDatum.source);\n }\n\n if (!highlightNodes.includes(linkDatum.target)) {\n highlightNodes.push(linkDatum.target);\n }\n\n const val = selectedDatum.reduce((sum: number, d: any) => {\n return (sum += d.value);\n }, 0);\n const ratio = val / linkDatum.value;\n\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS); // 设置上用户配置选中状态\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, { ratio }); // 设置默认的部分高亮\n\n return;\n }\n\n if (upSelectedLink) {\n // 上游link\n if (!highlightNodes.includes(linkDatum.source)) {\n highlightNodes.push(linkDatum.source);\n }\n\n if (!highlightNodes.includes(linkDatum.target)) {\n highlightNodes.push(linkDatum.target);\n }\n\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS); // 设置上用户配置选中状态\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, { ratio: upSelectedLink.value / linkDatum.value }); // 设置默认的部分高亮\n\n return;\n }\n\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n\n return;\n });\n\n if (this._nodeMark) {\n this._highLightElements(this._nodeMark.getProductElements(), highlightNodes);\n }\n }\n\n this._needClear = true;\n };\n\n protected _handleLinkRelatedClick = (element: IGlyphElement) => {\n const allNodeElements = this._nodeMark.getProductElements();\n\n if (!allNodeElements || !allNodeElements.length) {\n return;\n }\n const allLinkElements = this._linkMark.getProductElements();\n\n if (!allLinkElements || !allLinkElements.length) {\n return;\n }\n\n const father = element.getDatum()?.parents ? 'parents' : 'source';\n if (father === 'source') {\n const states = [STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE];\n if (this._linkMark) {\n allLinkElements.forEach(linkEl => {\n linkEl.removeState(states);\n });\n }\n\n if (this._nodeMark) {\n allNodeElements.forEach(el => {\n el.removeState(states);\n });\n }\n } else {\n const curLinkDatum = element.getDatum();\n const highlightNodes: string[] = [curLinkDatum.source, curLinkDatum.target];\n const upstreamLinks: Array<{ source: string; target: string; value: number }> = [];\n\n const dividedLinks = array((curLinkDatum as any).datum);\n\n dividedLinks.forEach(dividedLink => {\n const parents = (dividedLink as any).parents;\n const len = parents.length;\n for (let i = 0; i < len - 1; i++) {\n const source = parents[i].key;\n const target = parents[i + 1].key;\n const value = dividedLink.value;\n\n // 检查 upstreamLinks 数组中是否已存在相同的 source 和 target\n const existingItem = upstreamLinks.find(item => item.source === source && item.target === target);\n upstreamLinks.push({\n source: parents[i].key,\n target: parents[i + 1].key,\n value: dividedLink.value\n });\n\n if (existingItem) {\n // 如果存在相同的项,则对其 value 进行累加\n existingItem.value += value;\n } else {\n // 如果不存在相同的项,则添加新的项到 upstreamLinks 数组中\n upstreamLinks.push({ source, target, value });\n }\n }\n });\n\n allLinkElements.forEach(linkEl => {\n const linkDatum = linkEl.getDatum();\n const originalDatum = linkDatum.datum;\n\n if (linkDatum.source === curLinkDatum.source && linkDatum.target === curLinkDatum.target) {\n // 自身\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, { ratio: 1 });\n return;\n }\n\n const selectedDatum = originalDatum\n ? originalDatum.filter((entry: any) => {\n const parentKeysList = entry.parents.map((item: any) => item.key);\n return parentKeysList.includes(curLinkDatum.source) && parentKeysList.includes(curLinkDatum.target);\n })\n : null;\n\n if (selectedDatum && selectedDatum.length) {\n // 下游link\n if (!highlightNodes.includes(linkDatum.source)) {\n highlightNodes.push(linkDatum.source);\n }\n\n if (!highlightNodes.includes(linkDatum.target)) {\n highlightNodes.push(linkDatum.target);\n }\n\n const val = selectedDatum\n .filter((entry: any) => {\n return entry.parents.some((par: any, index: number) => {\n return par.key === curLinkDatum.source && entry.parents[index + 1]?.key === curLinkDatum.target;\n });\n })\n .reduce((sum: number, d: any) => {\n return (sum += d.value);\n }, 0);\n const ratio = val / linkDatum.value;\n\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS); // 设置上用户配置选中状态\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, { ratio }); // 设置默认的部分高亮\n\n return;\n }\n\n const upSelectedLink = upstreamLinks.find(\n (upLink: any) => upLink.source === linkDatum.source && upLink.target === linkDatum.target\n );\n\n if (upSelectedLink) {\n // 点击节点的上游一层的节点\n if (!highlightNodes.includes(linkDatum.source)) {\n highlightNodes.push(linkDatum.source);\n }\n if (!highlightNodes.includes(linkDatum.target)) {\n highlightNodes.push(linkDatum.target);\n }\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS); // 设置上用户配置选中状态\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, { ratio: upSelectedLink.value / linkDatum.value }); // 设置默认的部分高亮\n\n return;\n }\n linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);\n linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n\n return;\n });\n\n this._highLightElements(allNodeElements, highlightNodes);\n }\n\n this._needClear = true;\n };\n\n protected _highLightElements(vGrammarElements: IVgrammarMark['elements'], highlightNodes: string[]) {\n if (!vGrammarElements || !vGrammarElements.length) {\n return;\n }\n\n vGrammarElements.forEach(el => {\n el.removeState([STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS]);\n\n if (highlightNodes.includes(el.getDatum().key)) {\n //\n } else {\n el.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);\n }\n });\n }\n\n protected initTooltip() {\n this._tooltipHelper = new SankeySeriesTooltipHelper(this);\n this._nodeMark && this._tooltipHelper.activeTriggerSet.mark.add(this._nodeMark);\n this._linkMark && this._tooltipHelper.activeTriggerSet.mark.add(this._linkMark);\n }\n\n _setNodeOrdinalColorScale() {\n const colorScale = this._option?.globalScale?.getScale('color');\n\n if ((colorScale as any)?._specified) {\n this._colorScale = colorScale;\n return;\n }\n\n let colorDomain: string[];\n let colorRange: string[];\n\n if (colorScale) {\n colorDomain = colorScale.domain();\n colorRange = colorScale.range();\n }\n\n if (!colorRange) {\n colorRange = this._getDataScheme() as unknown as string[];\n }\n\n if (!colorDomain || isNil(colorDomain[0])) {\n // no validate domain\n colorDomain = this.getNodeList();\n\n if (colorDomain.length > 10) {\n colorRange = (this._getDataScheme()[1] as any)?.scheme;\n }\n }\n\n const ordinalScale = new ColorOrdinalScale();\n\n ordinalScale.domain(colorDomain).range?.(colorRange);\n\n this._colorScale = ordinalScale;\n return;\n }\n\n getNodeList() {\n if (this._nodeList) {\n return this._nodeList;\n }\n\n const data = this._rawData.latestData[0];\n\n const nodeList = data?.nodes\n ? data.nodes[0]?.children\n ? Array.from(this.extractNamesFromTree(data.nodes, this._spec.categoryField))\n : data.nodes.map((datum: Datum, index: number) => {\n return datum[this._spec.categoryField];\n })\n : data?.links\n ? Array.from(this.extractNamesFromLink(data.links))\n : data?.values?.map((datum: Datum, index: number) => {\n return datum[this._spec.categoryField];\n });\n\n this._nodeList = nodeList;\n\n return nodeList;\n }\n\n _getNodeNameFromData(datum: Datum) {\n return datum?.datum ? datum.datum[this._spec.categoryField] : datum.key ?? datum[this._spec.categoryField];\n }\n\n extractNamesFromTree(tree: any, categoryName: string) {\n // Set 用于存储唯一的 name 值\n const uniqueNames = new Set();\n\n // 遍历当前节点的子节点\n tree.forEach((node: any) => {\n // 将当前节点的 name 值添加到 Set 中\n uniqueNames.add(node[categoryName]);\n\n // 如果当前节点还有子节点,则递归调用该函数继续遍历子节点\n if (node.children) {\n const childNames = this.extractNamesFromTree(node.children, categoryName);\n childNames.forEach(name => uniqueNames.add(name));\n }\n });\n\n return uniqueNames;\n }\n\n extractNamesFromLink(links: any[]) {\n // Set 用于存储唯一的 name 值\n const uniqueNames = new Set();\n const { sourceField, targetField } = this._spec;\n\n // 遍历所有的边\n links.forEach((link: any) => {\n isValid(link[sourceField]) && uniqueNames.add(link[sourceField]);\n isValid(link[targetField]) && uniqueNames.add(link[targetField]);\n });\n\n return uniqueNames;\n }\n\n getDimensionField() {\n return [this._spec.categoryField];\n }\n\n getMeasureField(): string[] {\n return [this._valueField];\n }\n\n getRawDataStatisticsByField(field: string, isNumeric?: boolean) {\n // overwrite the getRawDataStatisticsByField of base-series\n if (!this._rawStatisticsCache) {\n this._rawStatisticsCache = {};\n }\n\n if (!this._rawStatisticsCache[field]) {\n const canUseViewStatistics = this._viewDataStatistics && this.getViewData().transformsArr.length <= 1;\n\n if (canUseViewStatistics && this._viewDataStatistics.latestData?.[field]) {\n this._rawStatisticsCache[field] = this._viewDataStatistics.latestData[field];\n } else if (this._rawData) {\n this._rawStatisticsCache[field] = {\n values: this._collectByField(field)\n };\n }\n }\n\n return this._rawStatisticsCache[field];\n }\n\n private _collectByField(field: string): string[] {\n const keyArray: any[] = [];\n const rawData = this.getRawData()?.latestData?.[0];\n\n if (!rawData) {\n return [];\n }\n\n if ((rawData as any).links) {\n //node-link型数据\n if ((rawData as any).nodes?.length) {\n (rawData as any).nodes.forEach((node: any) => {\n if (node[this._seriesField]) {\n keyArray.push(node[this._seriesField]);\n }\n });\n }\n } else if ((rawData as any).nodes) {\n const set = new Set<string>();\n // 层级型数据\n collectHierarchyField(set, (rawData as any).nodes, this._seriesField);\n\n return Array.from(set);\n }\n\n return keyArray;\n }\n\n onLayoutEnd(ctx: any): void {\n super.onLayoutEnd(ctx);\n this._viewBox.set(0, 0, this._region.getLayoutRect().width, this._region.getLayoutRect().height);\n\n // calculate the sankeyLayout\n this.getViewData().reRunAllTransform();\n }\n\n getDefaultShapeType(): string {\n return 'square';\n }\n\n // make sure this function fast\n protected _noAnimationDataKey(datum: Datum, index: number): unknown | undefined {\n return undefined;\n }\n\n getActiveMarks(): IMark[] {\n return [this._nodeMark, this._linkMark];\n }\n\n getMarkData(datum: Datum) {\n if (datum.datum) {\n if (isArray(datum.datum)) {\n return datum.datum[datum.datum.length - 1];\n }\n return datum.datum;\n }\n return datum;\n }\n}\n\nexport const registerSankeySeries = () => {\n registerSankeyTransforms();\n registerRectMark();\n registerLinkPathMark();\n registerTextMark();\n registerSankeyAnimation();\n registerFadeInOutAnimation();\n Factory.registerSeries(SankeySeries.type, SankeySeries);\n};\n"]}
@@ -27,6 +27,7 @@ export declare class WaterfallSeries<T extends IWaterfallSeriesSpec = IWaterfall
27
27
  setAttrFromSpec(): void;
28
28
  getSeriesKeys(): string[];
29
29
  protected initData(): void;
30
+ compileData(): void;
30
31
  initAnimation(): void;
31
32
  viewDataUpdate(d: DataView): void;
32
33
  addViewDataFilter(_option: ITransformOptions): void;
@@ -61,6 +61,10 @@ class WaterfallSeries extends bar_1.BarSeries {
61
61
  }
62
62
  }, !1);
63
63
  }
64
+ compileData() {
65
+ var _a;
66
+ super.compileData(), null === (_a = this._totalData) || void 0 === _a || _a.compile();
67
+ }
64
68
  initAnimation() {
65
69
  var _a, _b, _c, _e;
66
70
  const waterfallAnimationParams = {