connected-area.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import { registerInteraction } from '@antv/g2';
  2. var INTERACTION_MAP = {
  3. hover: '__interval-connected-area-hover__',
  4. click: '__interval-connected-area-click__',
  5. };
  6. var getStartStages = function (trigger, style) {
  7. if (trigger === 'hover') {
  8. return [
  9. {
  10. trigger: "interval:mouseenter",
  11. action: ['element-highlight-by-color:highlight', 'element-link-by-color:link'],
  12. arg: [null, { style: style }],
  13. },
  14. ];
  15. }
  16. return [
  17. {
  18. trigger: "interval:click",
  19. action: [
  20. 'element-highlight-by-color:clear',
  21. 'element-highlight-by-color:highlight',
  22. 'element-link-by-color:clear',
  23. 'element-link-by-color:unlink',
  24. 'element-link-by-color:link',
  25. ],
  26. arg: [null, null, null, null, { style: style }],
  27. },
  28. ];
  29. };
  30. /** hover 触发的连通区域交互 */
  31. registerInteraction(INTERACTION_MAP.hover, {
  32. start: getStartStages(INTERACTION_MAP.hover),
  33. end: [
  34. {
  35. trigger: 'interval:mouseleave',
  36. action: ['element-highlight-by-color:reset', 'element-link-by-color:unlink'],
  37. },
  38. ],
  39. });
  40. /** click 触发的联通区域交互 */
  41. registerInteraction(INTERACTION_MAP.click, {
  42. start: getStartStages(INTERACTION_MAP.click),
  43. end: [
  44. {
  45. trigger: 'document:mousedown',
  46. action: ['element-highlight-by-color:clear', 'element-link-by-color:clear'],
  47. },
  48. ],
  49. });
  50. /**
  51. * 返回支持联通区域组件交互的 adaptor,适用于堆叠柱形图/堆叠条形图
  52. * @param disable
  53. */
  54. export function connectedArea(disable) {
  55. if (disable === void 0) { disable = false; }
  56. return function (params) {
  57. var chart = params.chart, options = params.options;
  58. var connectedArea = options.connectedArea;
  59. var clear = function () {
  60. chart.removeInteraction(INTERACTION_MAP.hover);
  61. chart.removeInteraction(INTERACTION_MAP.click);
  62. };
  63. if (!disable && connectedArea) {
  64. var trigger = connectedArea.trigger || 'hover';
  65. clear();
  66. chart.interaction(INTERACTION_MAP[trigger], {
  67. start: getStartStages(trigger, connectedArea.style),
  68. });
  69. }
  70. else {
  71. clear();
  72. }
  73. return params;
  74. };
  75. }
  76. //# sourceMappingURL=connected-area.js.map