@visactor/vgrammar-core 0.10.0 → 0.10.2

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 (111) hide show
  1. package/cjs/graph/element.js +3 -1
  2. package/cjs/graph/element.js.map +1 -1
  3. package/cjs/graph/enums.d.ts +0 -10
  4. package/cjs/graph/enums.js +3 -9
  5. package/cjs/graph/enums.js.map +1 -1
  6. package/cjs/index.d.ts +1 -1
  7. package/cjs/index.js +1 -1
  8. package/cjs/index.js.map +1 -1
  9. package/cjs/interactions/base.d.ts +3 -0
  10. package/cjs/interactions/base.js +3 -0
  11. package/cjs/interactions/base.js.map +1 -1
  12. package/cjs/interactions/brush-active.js +1 -1
  13. package/cjs/interactions/brush-active.js.map +1 -1
  14. package/cjs/interactions/brush-base.d.ts +1 -1
  15. package/cjs/interactions/brush-base.js +2 -6
  16. package/cjs/interactions/brush-base.js.map +1 -1
  17. package/cjs/interactions/brush-filter.js +1 -1
  18. package/cjs/interactions/brush-filter.js.map +1 -1
  19. package/cjs/interactions/brush-highlight.js +1 -1
  20. package/cjs/interactions/brush-highlight.js.map +1 -1
  21. package/cjs/interactions/drill-down.js +1 -1
  22. package/cjs/interactions/drill-down.js.map +1 -1
  23. package/cjs/interactions/element-active-by-legend.js +1 -1
  24. package/cjs/interactions/element-active-by-legend.js.map +1 -1
  25. package/cjs/interactions/element-highlight-by-group.js +1 -2
  26. package/cjs/interactions/element-highlight-by-group.js.map +1 -1
  27. package/cjs/interactions/element-highlight-by-key.js +1 -2
  28. package/cjs/interactions/element-highlight-by-key.js.map +1 -1
  29. package/cjs/interactions/element-highlight.js +14 -6
  30. package/cjs/interactions/element-highlight.js.map +1 -1
  31. package/cjs/interactions/element-select.d.ts +1 -1
  32. package/cjs/interactions/element-select.js +23 -11
  33. package/cjs/interactions/element-select.js.map +1 -1
  34. package/cjs/interactions/fish-eye.d.ts +1 -2
  35. package/cjs/interactions/fish-eye.js +0 -6
  36. package/cjs/interactions/fish-eye.js.map +1 -1
  37. package/cjs/interactions/view-drag.js +4 -4
  38. package/cjs/interactions/view-drag.js.map +1 -1
  39. package/cjs/interactions/view-navigation-base.d.ts +1 -2
  40. package/cjs/interactions/view-navigation-base.js +2 -5
  41. package/cjs/interactions/view-navigation-base.js.map +1 -1
  42. package/cjs/interactions/view-roam.js +9 -9
  43. package/cjs/interactions/view-roam.js.map +1 -1
  44. package/cjs/interactions/view-scroll.js +3 -3
  45. package/cjs/interactions/view-scroll.js.map +1 -1
  46. package/cjs/interactions/view-zoom.js +4 -4
  47. package/cjs/interactions/view-zoom.js.map +1 -1
  48. package/es/graph/element.js +3 -1
  49. package/es/graph/element.js.map +1 -1
  50. package/es/graph/enums.d.ts +0 -10
  51. package/es/graph/enums.js +0 -9
  52. package/es/graph/enums.js.map +1 -1
  53. package/es/index.d.ts +1 -1
  54. package/es/index.js +1 -1
  55. package/es/index.js.map +1 -1
  56. package/es/interactions/base.d.ts +3 -0
  57. package/es/interactions/base.js +3 -0
  58. package/es/interactions/base.js.map +1 -1
  59. package/es/interactions/brush-active.js +1 -1
  60. package/es/interactions/brush-active.js.map +1 -1
  61. package/es/interactions/brush-base.d.ts +1 -1
  62. package/es/interactions/brush-base.js +2 -6
  63. package/es/interactions/brush-base.js.map +1 -1
  64. package/es/interactions/brush-filter.js +2 -3
  65. package/es/interactions/brush-filter.js.map +1 -1
  66. package/es/interactions/brush-highlight.js +1 -1
  67. package/es/interactions/brush-highlight.js.map +1 -1
  68. package/es/interactions/drill-down.js +1 -1
  69. package/es/interactions/drill-down.js.map +1 -1
  70. package/es/interactions/element-active-by-legend.js +1 -1
  71. package/es/interactions/element-active-by-legend.js.map +1 -1
  72. package/es/interactions/element-highlight-by-group.js +3 -3
  73. package/es/interactions/element-highlight-by-group.js.map +1 -1
  74. package/es/interactions/element-highlight-by-key.js +1 -2
  75. package/es/interactions/element-highlight-by-key.js.map +1 -1
  76. package/es/interactions/element-highlight.js +14 -6
  77. package/es/interactions/element-highlight.js.map +1 -1
  78. package/es/interactions/element-select.d.ts +1 -1
  79. package/es/interactions/element-select.js +23 -11
  80. package/es/interactions/element-select.js.map +1 -1
  81. package/es/interactions/fish-eye.d.ts +1 -2
  82. package/es/interactions/fish-eye.js +0 -6
  83. package/es/interactions/fish-eye.js.map +1 -1
  84. package/es/interactions/index.js +1 -2
  85. package/es/interactions/legend-filter.js +1 -1
  86. package/es/interactions/player-filter.js +1 -1
  87. package/es/interactions/roll-up.js +1 -1
  88. package/es/interactions/scrollbar-filter.js +1 -1
  89. package/es/interactions/slider-filter.js +1 -1
  90. package/es/interactions/tooltip.js +1 -1
  91. package/es/interactions/utils.js +1 -1
  92. package/es/interactions/view-drag.js +3 -5
  93. package/es/interactions/view-drag.js.map +1 -1
  94. package/es/interactions/view-navigation-base.d.ts +1 -2
  95. package/es/interactions/view-navigation-base.js +2 -5
  96. package/es/interactions/view-navigation-base.js.map +1 -1
  97. package/es/interactions/view-roam.js +8 -10
  98. package/es/interactions/view-roam.js.map +1 -1
  99. package/es/interactions/view-scroll.js +2 -4
  100. package/es/interactions/view-scroll.js.map +1 -1
  101. package/es/interactions/view-zoom.js +3 -5
  102. package/es/interactions/view-zoom.js.map +1 -1
  103. package/es/parse/coordinate.js +1 -1
  104. package/es/parse/event.js +1 -1
  105. package/es/parse/mark.js +1 -1
  106. package/es/parse/option.js +1 -1
  107. package/es/parse/scale.js +2 -1
  108. package/es/parse/transform.js +1 -1
  109. package/es/parse/util.js +1 -1
  110. package/es/parse/view.js +1 -1
  111. package/package.json +9 -9
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interactions/brush-highlight.ts"],"names":[],"mappings":";;;AACA,0CAAsD;AAEtD,6CAAyC;AAEzC,qEAA4D;AAE5D,MAAa,cAAe,SAAQ,sBAAgC;IASlE,YAAY,IAAW,EAAE,MAA8B;QACrD,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;QARxE,SAAI,GAAW,cAAc,CAAC,IAAI,CAAC;QAWnC,sBAAiB,GAAG,CAAC,KAMpB,EAAE,EAAE;YACH,MAAM,QAAQ,GAAiC,EAAE,CAAC;YAElD,IAAI,KAAK,CAAC,IAAI,KAAK,iCAAY,CAAC,UAAU,EAAE;gBAC1C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBACzB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;wBACzB,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;wBACvC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;oBAC9C,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;aACJ;iBAAM;gBACL,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBACzB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;wBACzB,MAAM,WAAW,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC;wBAElG,IAAI,WAAW,EAAE;4BACf,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;4BAClB,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;4BACvC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;yBAC1C;6BAAM;4BACL,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;4BAC5C,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;yBACrC;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;aACJ;YAED,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACtC,CAAC,CAAC;IApCF,CAAC;;AAXH,wCAgDC;AA/CQ,mBAAI,GAAW,iBAAiB,CAAC;AAGjC,6BAAc,GAA0B;IAC7C,cAAc,EAAE,4BAAoB,CAAC,SAAS;IAC9C,SAAS,EAAE,4BAAoB,CAAC,IAAI;CACrC,CAAC","file":"brush-highlight.js","sourcesContent":["import type { IPolygon } from '@visactor/vrender-core';\nimport { InteractionStateEnum } from '../graph/enums';\nimport type { BrushHighlightOptions, IElement, IGlyphElement, IView } from '../types';\nimport { BrushBase } from './brush-base';\nimport { type IBounds } from '@visactor/vutils';\nimport { IOperateType } from '@visactor/vrender-components';\n\nexport class BrushHighlight extends BrushBase<BrushHighlightOptions> {\n static type: string = 'brush-highlight';\n type: string = BrushHighlight.type;\n\n static defaultOptions: BrushHighlightOptions = {\n highlightState: InteractionStateEnum.highlight,\n blurState: InteractionStateEnum.blur\n };\n\n constructor(view: IView, option?: BrushHighlightOptions) {\n super(view, Object.assign({}, BrushHighlight.defaultOptions, option));\n }\n\n handleBrushUpdate = (event: {\n type: string;\n detail: {\n operateMask: IPolygon;\n operatedMaskAABBBounds: { [name: string]: IBounds };\n };\n }) => {\n const elements: (IElement | IGlyphElement)[] = [];\n\n if (event.type === IOperateType.brushClear) {\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n el.removeState(this.options.blurState);\n el.removeState(this.options.highlightState);\n });\n });\n } else {\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n const isHighlight = this.isBrushContainGraphicItem(event.detail.operateMask, el.getGraphicItem());\n\n if (isHighlight) {\n elements.push(el);\n el.removeState(this.options.blurState);\n el.addState(this.options.highlightState);\n } else {\n el.removeState(this.options.highlightState);\n el.addState(this.options.blurState);\n }\n });\n });\n }\n\n this.dispatchEvent(event, elements);\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/interactions/brush-highlight.ts"],"names":[],"mappings":";;;AACA,0CAAsD;AAEtD,6CAAyC;AAEzC,qEAA4D;AAE5D,MAAa,cAAe,SAAQ,sBAAgC;IASlE,YAAY,IAAW,EAAE,MAA8B;QACrD,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;QARxE,SAAI,GAAW,cAAc,CAAC,IAAI,CAAC;QAWnC,sBAAiB,GAAG,CAAC,KAMpB,EAAE,EAAE;YACH,MAAM,QAAQ,GAAiC,EAAE,CAAC;YAElD,IAAI,KAAK,CAAC,IAAI,KAAK,iCAAY,CAAC,UAAU,EAAE;gBAC1C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBACzB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;wBACzB,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;wBACvC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;oBAC9C,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;aACJ;iBAAM;gBACL,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBACzB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;wBACzB,MAAM,WAAW,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC;wBAElG,IAAI,WAAW,EAAE;4BACf,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;4BAClB,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;4BACvC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;yBAC1C;6BAAM;4BACL,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;4BAC5C,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;yBACrC;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;aACJ;YAED,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACvC,CAAC,CAAC;IApCF,CAAC;;AAXH,wCAgDC;AA/CQ,mBAAI,GAAW,iBAAiB,CAAC;AAGjC,6BAAc,GAA0B;IAC7C,cAAc,EAAE,4BAAoB,CAAC,SAAS;IAC9C,SAAS,EAAE,4BAAoB,CAAC,IAAI;CACrC,CAAC","file":"brush-highlight.js","sourcesContent":["import type { IPolygon } from '@visactor/vrender-core';\nimport { InteractionStateEnum } from '../graph/enums';\nimport type { BrushHighlightOptions, IElement, IGlyphElement, IView } from '../types';\nimport { BrushBase } from './brush-base';\nimport { type IBounds } from '@visactor/vutils';\nimport { IOperateType } from '@visactor/vrender-components';\n\nexport class BrushHighlight extends BrushBase<BrushHighlightOptions> {\n static type: string = 'brush-highlight';\n type: string = BrushHighlight.type;\n\n static defaultOptions: BrushHighlightOptions = {\n highlightState: InteractionStateEnum.highlight,\n blurState: InteractionStateEnum.blur\n };\n\n constructor(view: IView, option?: BrushHighlightOptions) {\n super(view, Object.assign({}, BrushHighlight.defaultOptions, option));\n }\n\n handleBrushUpdate = (event: {\n type: string;\n detail: {\n operateMask: IPolygon;\n operatedMaskAABBBounds: { [name: string]: IBounds };\n };\n }) => {\n const elements: (IElement | IGlyphElement)[] = [];\n\n if (event.type === IOperateType.brushClear) {\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n el.removeState(this.options.blurState);\n el.removeState(this.options.highlightState);\n });\n });\n } else {\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n const isHighlight = this.isBrushContainGraphicItem(event.detail.operateMask, el.getGraphicItem());\n\n if (isHighlight) {\n elements.push(el);\n el.removeState(this.options.blurState);\n el.addState(this.options.highlightState);\n } else {\n el.removeState(this.options.highlightState);\n el.addState(this.options.blurState);\n }\n });\n });\n }\n\n this._dispatchEvent(event, elements);\n };\n}\n"]}
@@ -18,7 +18,7 @@ class DrillDown extends brush_base_1.BrushBase {
18
18
  filterValue = filterValue.concat((0, vutils_1.array)(el.getDatum())));
19
19
  }));
20
20
  })), this._data && (filterValue = Array.from(new Set(filterValue)), this._filterValue && filterValue.length === this._filterValue.length && !filterValue.some((datum => !this._filterValue.includes(datum))) || (this._filterValue = filterValue,
21
- this.handleFilter())), this.dispatchEvent(event, elements);
21
+ this.handleFilter())), this._dispatchEvent(event, elements);
22
22
  }, this.handleTrigger = event => {
23
23
  const element = event.element;
24
24
  if (element && this._marks && this._marks.includes(element.mark)) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interactions/drill-down.ts"],"names":[],"mappings":"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","file":"drill-down.js","sourcesContent":["import type { IPolygon } from '@visactor/vrender-core';\nimport type { DrillDownOptions, IElement, IGlyphElement, IView, InteractionEvent } from '../types';\nimport { BrushBase } from './brush-base';\nimport { isString, type IBounds, array } from '@visactor/vutils';\nimport { DataFilterRank } from '../graph/enums';\nimport type { FilterMixin } from './filter';\n\nexport interface DrillDown\n extends Pick<FilterMixin, '_data' | '_filterValue' | '_dataFilter' | 'handleFilter' | '_filterData'>,\n BrushBase<DrillDownOptions> {}\n\nexport class DrillDown extends BrushBase<DrillDownOptions> {\n static type: string = 'drill-down';\n type: string = DrillDown.type;\n\n static defaultOptions: Omit<DrillDownOptions, 'target'> = {\n brush: false,\n trigger: 'click'\n };\n\n constructor(view: IView, option?: DrillDownOptions) {\n super(view, Object.assign({}, DrillDown.defaultOptions, option));\n this._data = isString(this.options.target.data)\n ? view.getDataById(this.options.target.data)\n : this.options.target.data;\n }\n\n protected getEvents() {\n if (!this._data) {\n return [];\n }\n\n const transform = this.options.target.transform;\n const dataTransform = (data: any[], filterValue: any) => {\n const nextData = !filterValue ? data : filterValue;\n return transform ? transform(data, filterValue) : nextData;\n };\n\n this._filterData(this._data, null, DataFilterRank.drillDown, null, undefined, dataTransform);\n\n if (this.options.brush) {\n return super.getEvents();\n }\n return [\n {\n type: this.options.trigger,\n handler: this.handleTrigger\n }\n ];\n }\n\n handleBrushUpdate = (event: {\n type: string;\n detail: {\n operateMask: IPolygon;\n operatedMaskAABBBounds: { [name: string]: IBounds };\n };\n }) => {\n const elements: (IElement | IGlyphElement)[] = [];\n\n let filterValue: any[] = [];\n\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n const isActive = this.isBrushContainGraphicItem(event.detail.operateMask, el.getGraphicItem());\n\n if (isActive) {\n elements.push(el);\n filterValue = filterValue.concat(array(el.getDatum()));\n }\n });\n });\n\n if (this._data) {\n // remove repeated datum\n filterValue = Array.from(new Set(filterValue));\n\n // shallow compare\n if (\n !this._filterValue ||\n filterValue.length !== this._filterValue.length ||\n filterValue.some(datum => !this._filterValue.includes(datum))\n ) {\n this._filterValue = filterValue;\n this.handleFilter();\n }\n }\n\n this.dispatchEvent(event, elements);\n };\n\n handleTrigger = (event: InteractionEvent) => {\n const element = event.element;\n if (element && this._marks && this._marks.includes(element.mark)) {\n const filterValue = array(element.getDatum());\n // shallow compare\n if (\n !this._filterValue ||\n filterValue.length !== this._filterValue.length ||\n filterValue.some(datum => !this._filterValue.includes(datum))\n ) {\n this._filterValue = filterValue;\n this.handleFilter();\n }\n }\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/interactions/drill-down.ts"],"names":[],"mappings":"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","file":"drill-down.js","sourcesContent":["import type { IPolygon } from '@visactor/vrender-core';\nimport type { DrillDownOptions, IElement, IGlyphElement, IView, InteractionEvent } from '../types';\nimport { BrushBase } from './brush-base';\nimport { isString, type IBounds, array } from '@visactor/vutils';\nimport { DataFilterRank } from '../graph/enums';\nimport type { FilterMixin } from './filter';\n\nexport interface DrillDown\n extends Pick<FilterMixin, '_data' | '_filterValue' | '_dataFilter' | 'handleFilter' | '_filterData'>,\n BrushBase<DrillDownOptions> {}\n\nexport class DrillDown extends BrushBase<DrillDownOptions> {\n static type: string = 'drill-down';\n type: string = DrillDown.type;\n\n static defaultOptions: Omit<DrillDownOptions, 'target'> = {\n brush: false,\n trigger: 'click'\n };\n\n constructor(view: IView, option?: DrillDownOptions) {\n super(view, Object.assign({}, DrillDown.defaultOptions, option));\n this._data = isString(this.options.target.data)\n ? view.getDataById(this.options.target.data)\n : this.options.target.data;\n }\n\n protected getEvents() {\n if (!this._data) {\n return [];\n }\n\n const transform = this.options.target.transform;\n const dataTransform = (data: any[], filterValue: any) => {\n const nextData = !filterValue ? data : filterValue;\n return transform ? transform(data, filterValue) : nextData;\n };\n\n this._filterData(this._data, null, DataFilterRank.drillDown, null, undefined, dataTransform);\n\n if (this.options.brush) {\n return super.getEvents();\n }\n return [\n {\n type: this.options.trigger,\n handler: this.handleTrigger\n }\n ];\n }\n\n handleBrushUpdate = (event: {\n type: string;\n detail: {\n operateMask: IPolygon;\n operatedMaskAABBBounds: { [name: string]: IBounds };\n };\n }) => {\n const elements: (IElement | IGlyphElement)[] = [];\n\n let filterValue: any[] = [];\n\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n const isActive = this.isBrushContainGraphicItem(event.detail.operateMask, el.getGraphicItem());\n\n if (isActive) {\n elements.push(el);\n filterValue = filterValue.concat(array(el.getDatum()));\n }\n });\n });\n\n if (this._data) {\n // remove repeated datum\n filterValue = Array.from(new Set(filterValue));\n\n // shallow compare\n if (\n !this._filterValue ||\n filterValue.length !== this._filterValue.length ||\n filterValue.some(datum => !this._filterValue.includes(datum))\n ) {\n this._filterValue = filterValue;\n this.handleFilter();\n }\n }\n\n this._dispatchEvent(event, elements);\n };\n\n handleTrigger = (event: InteractionEvent) => {\n const element = event.element;\n if (element && this._marks && this._marks.includes(element.mark)) {\n const filterValue = array(element.getDatum());\n // shallow compare\n if (\n !this._filterValue ||\n filterValue.length !== this._filterValue.length ||\n filterValue.some(datum => !this._filterValue.includes(datum))\n ) {\n this._filterValue = filterValue;\n this.handleFilter();\n }\n }\n };\n}\n"]}
@@ -21,7 +21,7 @@ class ElementActiveByLegend extends base_1.BaseInteraction {
21
21
  }, this.handleReset = e => {
22
22
  this._marks.forEach((mark => {
23
23
  mark.elements.forEach((el => {
24
- el.hasState(this.options.state) && el.removeState(this.options.state);
24
+ el.removeState(this.options.state);
25
25
  }));
26
26
  }));
27
27
  }, this.options = Object.assign({}, ElementActiveByLegend.defaultOptions, options),
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interactions/element-active-by-legend.ts"],"names":[],"mappings":";;;AAAA,0CAAsD;AAEtD,iCAAyC;AACzC,qEAA2D;AAC3D,6CAAyC;AACzC,mCAA8C;AAE9C,MAAa,qBAAsB,SAAQ,sBAA6C;IAWtF,YAAY,IAAW,EAAE,OAAsC;QAC7D,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAVvB,SAAI,GAAW,qBAAqB,CAAC,IAAI,CAAC;QA6B1C,gBAAW,GAAG,CAAC,CAAmB,EAAE,OAAiC,EAAE,EAAE;;YACvE,MAAM,OAAO,GAAG,MAAA,MAAA,CAAC,CAAC,MAAM,0CAAE,IAAI,0CAAE,EAAE,CAAC;YAEnC,IAAI,IAAA,cAAK,EAAC,OAAO,CAAC,EAAE;gBAClB,OAAO;aACR;YAED,MAAM,WAAW,GAAG,IAAA,2BAAmB,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAEtD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACzB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;oBACzB,MAAM,QAAQ,GAAG,WAAW,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC;oBAE7C,IAAI,QAAQ,EAAE;wBACZ,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;qBACjC;yBAAM;wBACL,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;qBACpC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,gBAAW,GAAG,CAAC,CAAmB,EAAE,EAAE;YACpC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACzB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;oBACzB,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;wBACnC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;qBACpC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAhDA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,qBAAqB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAEhF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/D,CAAC;IAES,SAAS;QACjB,OAAO;YACL;gBACE,IAAI,EAAE,gCAAW,CAAC,eAAe;gBACjC,OAAO,EAAE,IAAI,CAAC,WAAW;aAC1B;YACD;gBACE,IAAI,EAAE,gCAAW,CAAC,iBAAiB;gBACnC,OAAO,EAAE,IAAI,CAAC,WAAW;aAC1B;SACF,CAAC;IACJ,CAAC;;AA7BH,sDA8DC;AA7DQ,0BAAI,GAAW,0BAA0B,CAAC;AAG1C,oCAAc,GAAiC;IACpD,KAAK,EAAE,4BAAoB,CAAC,MAAM;IAClC,UAAU,EAAE,UAAU;CACvB,CAAC","file":"element-active-by-legend.js","sourcesContent":["import { InteractionStateEnum } from '../graph/enums';\nimport type { ElementActiveByLegendOptions, IElement, IGlyphElement, IMark, IView, InteractionEvent } from '../types';\nimport { BaseInteraction } from './base';\nimport { LegendEvent } from '@visactor/vrender-components';\nimport { isNil } from '@visactor/vutils';\nimport { generateFilterValue } from './utils';\n\nexport class ElementActiveByLegend extends BaseInteraction<ElementActiveByLegendOptions> {\n static type: string = 'element-active-by-legend';\n type: string = ElementActiveByLegend.type;\n\n static defaultOptions: ElementActiveByLegendOptions = {\n state: InteractionStateEnum.active,\n filterType: 'groupKey'\n };\n options: ElementActiveByLegendOptions;\n protected _marks?: IMark[];\n\n constructor(view: IView, options?: ElementActiveByLegendOptions) {\n super(view, options);\n this.options = Object.assign({}, ElementActiveByLegend.defaultOptions, options);\n\n this._marks = view.getMarksBySelector(this.options.selector);\n }\n\n protected getEvents() {\n return [\n {\n type: LegendEvent.legendItemHover,\n handler: this.handleStart\n },\n {\n type: LegendEvent.legendItemUnHover,\n handler: this.handleReset\n }\n ];\n }\n\n handleStart = (e: InteractionEvent, element: IElement | IGlyphElement) => {\n const itemKey = e.detail?.data?.id;\n\n if (isNil(itemKey)) {\n return;\n }\n\n const filterValue = generateFilterValue(this.options);\n\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n const isActive = filterValue(el) === itemKey;\n\n if (isActive) {\n el.addState(this.options.state);\n } else {\n el.removeState(this.options.state);\n }\n });\n });\n };\n\n handleReset = (e: InteractionEvent) => {\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n if (el.hasState(this.options.state)) {\n el.removeState(this.options.state);\n }\n });\n });\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/interactions/element-active-by-legend.ts"],"names":[],"mappings":";;;AAAA,0CAAsD;AAEtD,iCAAyC;AACzC,qEAA2D;AAC3D,6CAAyC;AACzC,mCAA8C;AAE9C,MAAa,qBAAsB,SAAQ,sBAA6C;IAWtF,YAAY,IAAW,EAAE,OAAsC;QAC7D,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAVvB,SAAI,GAAW,qBAAqB,CAAC,IAAI,CAAC;QA6B1C,gBAAW,GAAG,CAAC,CAAmB,EAAE,OAAiC,EAAE,EAAE;;YACvE,MAAM,OAAO,GAAG,MAAA,MAAA,CAAC,CAAC,MAAM,0CAAE,IAAI,0CAAE,EAAE,CAAC;YAEnC,IAAI,IAAA,cAAK,EAAC,OAAO,CAAC,EAAE;gBAClB,OAAO;aACR;YAED,MAAM,WAAW,GAAG,IAAA,2BAAmB,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAEtD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACzB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;oBACzB,MAAM,QAAQ,GAAG,WAAW,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC;oBAE7C,IAAI,QAAQ,EAAE;wBACZ,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;qBACjC;yBAAM;wBACL,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;qBACpC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,gBAAW,GAAG,CAAC,CAAmB,EAAE,EAAE;YACpC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACzB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;oBACzB,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACrC,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QA9CA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,qBAAqB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAEhF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/D,CAAC;IAES,SAAS;QACjB,OAAO;YACL;gBACE,IAAI,EAAE,gCAAW,CAAC,eAAe;gBACjC,OAAO,EAAE,IAAI,CAAC,WAAW;aAC1B;YACD;gBACE,IAAI,EAAE,gCAAW,CAAC,iBAAiB;gBACnC,OAAO,EAAE,IAAI,CAAC,WAAW;aAC1B;SACF,CAAC;IACJ,CAAC;;AA7BH,sDA4DC;AA3DQ,0BAAI,GAAW,0BAA0B,CAAC;AAG1C,oCAAc,GAAiC;IACpD,KAAK,EAAE,4BAAoB,CAAC,MAAM;IAClC,UAAU,EAAE,UAAU;CACvB,CAAC","file":"element-active-by-legend.js","sourcesContent":["import { InteractionStateEnum } from '../graph/enums';\nimport type { ElementActiveByLegendOptions, IElement, IGlyphElement, IMark, IView, InteractionEvent } from '../types';\nimport { BaseInteraction } from './base';\nimport { LegendEvent } from '@visactor/vrender-components';\nimport { isNil } from '@visactor/vutils';\nimport { generateFilterValue } from './utils';\n\nexport class ElementActiveByLegend extends BaseInteraction<ElementActiveByLegendOptions> {\n static type: string = 'element-active-by-legend';\n type: string = ElementActiveByLegend.type;\n\n static defaultOptions: ElementActiveByLegendOptions = {\n state: InteractionStateEnum.active,\n filterType: 'groupKey'\n };\n options: ElementActiveByLegendOptions;\n protected _marks?: IMark[];\n\n constructor(view: IView, options?: ElementActiveByLegendOptions) {\n super(view, options);\n this.options = Object.assign({}, ElementActiveByLegend.defaultOptions, options);\n\n this._marks = view.getMarksBySelector(this.options.selector);\n }\n\n protected getEvents() {\n return [\n {\n type: LegendEvent.legendItemHover,\n handler: this.handleStart\n },\n {\n type: LegendEvent.legendItemUnHover,\n handler: this.handleReset\n }\n ];\n }\n\n handleStart = (e: InteractionEvent, element: IElement | IGlyphElement) => {\n const itemKey = e.detail?.data?.id;\n\n if (isNil(itemKey)) {\n return;\n }\n\n const filterValue = generateFilterValue(this.options);\n\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n const isActive = filterValue(el) === itemKey;\n\n if (isActive) {\n el.addState(this.options.state);\n } else {\n el.removeState(this.options.state);\n }\n });\n });\n };\n\n handleReset = (e: InteractionEvent) => {\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n el.removeState(this.options.state);\n });\n });\n };\n}\n"]}
@@ -36,8 +36,7 @@ class ElementHighlightByGroup extends base_1.BaseInteraction {
36
36
  clearPrevElements() {
37
37
  this._marks.forEach((mark => {
38
38
  mark.elements.forEach((el => {
39
- el.hasState(this.options.highlightState) && el.removeState(this.options.highlightState),
40
- el.hasState(this.options.blurState) && el.removeState(this.options.blurState);
39
+ el.removeState(this.options.highlightState), el.removeState(this.options.blurState);
41
40
  }));
42
41
  }));
43
42
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interactions/element-highlight-by-group.ts"],"names":[],"mappings":"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","file":"element-highlight-by-group.js","sourcesContent":["import { isNil } from '@visactor/vutils';\nimport type { ElementHighlightOptions, IMark, IView, InteractionEvent } from '../types';\nimport { BaseInteraction } from './base';\nimport { InteractionStateEnum } from '../graph/enums';\n\nexport class ElementHighlightByGroup extends BaseInteraction<ElementHighlightOptions> {\n static type: string = 'element-highlight-by-group';\n type: string = ElementHighlightByGroup.type;\n\n static defaultOptions: ElementHighlightOptions = {\n highlightState: InteractionStateEnum.highlight,\n blurState: InteractionStateEnum.blur,\n trigger: 'pointerover',\n resetTrigger: 'pointerout'\n };\n options: ElementHighlightOptions;\n protected _marks?: IMark[];\n\n constructor(view: IView, options?: ElementHighlightOptions) {\n super(view, options);\n this.options = Object.assign({}, ElementHighlightByGroup.defaultOptions, options);\n\n this._marks = view.getMarksBySelector(this.options.selector);\n }\n\n protected getEvents() {\n return [\n {\n type: this.options.trigger,\n handler: this.handleStart\n },\n { type: this.options.resetTrigger, handler: this.handleReset }\n ];\n }\n\n clearPrevElements() {\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n if (el.hasState(this.options.highlightState)) {\n el.removeState(this.options.highlightState);\n }\n\n if (el.hasState(this.options.blurState)) {\n el.removeState(this.options.blurState);\n }\n });\n });\n }\n\n handleStart = (e: InteractionEvent) => {\n if (e.element && this._marks && this._marks.includes(e.element.mark)) {\n const highlightKey = e.element.groupKey;\n\n if (isNil(highlightKey)) {\n return;\n }\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n const isHighlight = el.groupKey === highlightKey;\n\n if (isHighlight) {\n el.removeState(this.options.blurState);\n el.addState(this.options.highlightState);\n } else {\n el.removeState(this.options.highlightState);\n el.addState(this.options.blurState);\n }\n });\n });\n }\n };\n\n handleReset = (e: InteractionEvent) => {\n const hasActiveElement = e.element && this._marks && this._marks.includes(e.element.mark);\n\n if (hasActiveElement) {\n this.clearPrevElements();\n }\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/interactions/element-highlight-by-group.ts"],"names":[],"mappings":"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","file":"element-highlight-by-group.js","sourcesContent":["import { isNil } from '@visactor/vutils';\nimport type { ElementHighlightOptions, IMark, IView, InteractionEvent } from '../types';\nimport { BaseInteraction } from './base';\nimport { InteractionStateEnum } from '../graph/enums';\n\nexport class ElementHighlightByGroup extends BaseInteraction<ElementHighlightOptions> {\n static type: string = 'element-highlight-by-group';\n type: string = ElementHighlightByGroup.type;\n\n static defaultOptions: ElementHighlightOptions = {\n highlightState: InteractionStateEnum.highlight,\n blurState: InteractionStateEnum.blur,\n trigger: 'pointerover',\n resetTrigger: 'pointerout'\n };\n options: ElementHighlightOptions;\n protected _marks?: IMark[];\n\n constructor(view: IView, options?: ElementHighlightOptions) {\n super(view, options);\n this.options = Object.assign({}, ElementHighlightByGroup.defaultOptions, options);\n\n this._marks = view.getMarksBySelector(this.options.selector);\n }\n\n protected getEvents() {\n return [\n {\n type: this.options.trigger,\n handler: this.handleStart\n },\n { type: this.options.resetTrigger, handler: this.handleReset }\n ];\n }\n\n clearPrevElements() {\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n el.removeState(this.options.highlightState);\n el.removeState(this.options.blurState);\n });\n });\n }\n\n handleStart = (e: InteractionEvent) => {\n if (e.element && this._marks && this._marks.includes(e.element.mark)) {\n const highlightKey = e.element.groupKey;\n\n if (isNil(highlightKey)) {\n return;\n }\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n const isHighlight = el.groupKey === highlightKey;\n\n if (isHighlight) {\n el.removeState(this.options.blurState);\n el.addState(this.options.highlightState);\n } else {\n el.removeState(this.options.highlightState);\n el.addState(this.options.blurState);\n }\n });\n });\n }\n };\n\n handleReset = (e: InteractionEvent) => {\n const hasActiveElement = e.element && this._marks && this._marks.includes(e.element.mark);\n\n if (hasActiveElement) {\n this.clearPrevElements();\n }\n };\n}\n"]}
@@ -36,8 +36,7 @@ class ElementHighlightByKey extends base_1.BaseInteraction {
36
36
  clearPrevElements() {
37
37
  this._marks.forEach((mark => {
38
38
  mark.elements.forEach((el => {
39
- el.hasState(this.options.highlightState) && el.removeState(this.options.highlightState),
40
- el.hasState(this.options.blurState) && el.removeState(this.options.blurState);
39
+ el.removeState(this.options.highlightState), el.removeState(this.options.blurState);
41
40
  }));
42
41
  }));
43
42
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interactions/element-highlight-by-key.ts"],"names":[],"mappings":"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","file":"element-highlight-by-key.js","sourcesContent":["import { isNil } from '@visactor/vutils';\nimport type { ElementHighlightOptions, IMark, IView, InteractionEvent } from '../types';\nimport { BaseInteraction } from './base';\nimport { InteractionStateEnum } from '../graph/enums';\n\nexport class ElementHighlightByKey extends BaseInteraction<ElementHighlightOptions> {\n static type: string = 'element-highlight-by-key';\n type: string = ElementHighlightByKey.type;\n\n static defaultOptions: ElementHighlightOptions = {\n highlightState: InteractionStateEnum.highlight,\n blurState: InteractionStateEnum.blur,\n trigger: 'pointerover',\n resetTrigger: 'pointerout'\n };\n options: ElementHighlightOptions;\n protected _marks?: IMark[];\n\n constructor(view: IView, options?: ElementHighlightOptions) {\n super(view, options);\n this.options = Object.assign({}, ElementHighlightByKey.defaultOptions, options);\n\n this._marks = view.getMarksBySelector(this.options.selector);\n }\n\n protected getEvents() {\n return [\n {\n type: this.options.trigger,\n handler: this.handleStart\n },\n { type: this.options.resetTrigger, handler: this.handleReset }\n ];\n }\n\n clearPrevElements() {\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n if (el.hasState(this.options.highlightState)) {\n el.removeState(this.options.highlightState);\n }\n\n if (el.hasState(this.options.blurState)) {\n el.removeState(this.options.blurState);\n }\n });\n });\n }\n\n handleStart = (e: InteractionEvent) => {\n if (e.element && this._marks && this._marks.includes(e.element.mark)) {\n const highlightKey = e.element.key;\n\n if (isNil(highlightKey)) {\n return;\n }\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n const isHighlight = el.key === highlightKey;\n\n if (isHighlight) {\n el.removeState(this.options.blurState);\n el.addState(this.options.highlightState);\n } else {\n el.removeState(this.options.highlightState);\n el.addState(this.options.blurState);\n }\n });\n });\n }\n };\n\n handleReset = (e: InteractionEvent) => {\n const hasActiveElement = e.element && this._marks && this._marks.includes(e.element.mark);\n\n if (hasActiveElement) {\n this.clearPrevElements();\n }\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/interactions/element-highlight-by-key.ts"],"names":[],"mappings":"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","file":"element-highlight-by-key.js","sourcesContent":["import { isNil } from '@visactor/vutils';\nimport type { ElementHighlightOptions, IMark, IView, InteractionEvent } from '../types';\nimport { BaseInteraction } from './base';\nimport { InteractionStateEnum } from '../graph/enums';\n\nexport class ElementHighlightByKey extends BaseInteraction<ElementHighlightOptions> {\n static type: string = 'element-highlight-by-key';\n type: string = ElementHighlightByKey.type;\n\n static defaultOptions: ElementHighlightOptions = {\n highlightState: InteractionStateEnum.highlight,\n blurState: InteractionStateEnum.blur,\n trigger: 'pointerover',\n resetTrigger: 'pointerout'\n };\n options: ElementHighlightOptions;\n protected _marks?: IMark[];\n\n constructor(view: IView, options?: ElementHighlightOptions) {\n super(view, options);\n this.options = Object.assign({}, ElementHighlightByKey.defaultOptions, options);\n\n this._marks = view.getMarksBySelector(this.options.selector);\n }\n\n protected getEvents() {\n return [\n {\n type: this.options.trigger,\n handler: this.handleStart\n },\n { type: this.options.resetTrigger, handler: this.handleReset }\n ];\n }\n\n clearPrevElements() {\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n el.removeState(this.options.highlightState);\n el.removeState(this.options.blurState);\n });\n });\n }\n\n handleStart = (e: InteractionEvent) => {\n if (e.element && this._marks && this._marks.includes(e.element.mark)) {\n const highlightKey = e.element.key;\n\n if (isNil(highlightKey)) {\n return;\n }\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n const isHighlight = el.key === highlightKey;\n\n if (isHighlight) {\n el.removeState(this.options.blurState);\n el.addState(this.options.highlightState);\n } else {\n el.removeState(this.options.highlightState);\n el.addState(this.options.blurState);\n }\n });\n });\n }\n };\n\n handleReset = (e: InteractionEvent) => {\n const hasActiveElement = e.element && this._marks && this._marks.includes(e.element.mark);\n\n if (hasActiveElement) {\n this.clearPrevElements();\n }\n };\n}\n"]}
@@ -12,17 +12,21 @@ class ElementHighlight extends base_1.BaseInteraction {
12
12
  if (e.element && this._marks && this._marks.includes(e.element.mark)) {
13
13
  const {highlightState: highlightState, blurState: blurState} = this.options;
14
14
  if (this._lastElement === e.element) return;
15
+ let hasHighlight = !1;
15
16
  if (this._lastElement && this._hasBlur) this._lastElement.removeState(highlightState),
16
- this._lastElement.addState(blurState), e.element.removeState(blurState), e.element.addState(highlightState); else {
17
+ this._lastElement.addState(blurState), e.element.removeState(blurState), hasHighlight = e.element.addState(highlightState); else {
17
18
  let hasBlur = !1;
18
19
  this._marks.forEach((mark => {
19
20
  mark.elements.forEach((el => {
20
- el === e.element ? (el.removeState(blurState), el.addState(highlightState)) : (el.removeState(highlightState),
21
+ el === e.element ? (el.removeState(blurState), hasHighlight = el.addState(highlightState)) : (el.removeState(highlightState),
21
22
  hasBlur = el.addState(blurState), hasBlur && (this._hasBlur = !0));
22
23
  }));
23
24
  }));
24
25
  }
25
- this._lastElement = e.element;
26
+ this._lastElement = e.element, hasHighlight && this.dispatchEvent("start", {
27
+ elements: [ e.element ],
28
+ options: this.options
29
+ });
26
30
  } else this._lastElement && this.clearPrevElements();
27
31
  }, this.handleReset = e => {
28
32
  e.element && this._marks && this._marks.includes(e.element.mark) && this.clearPrevElements();
@@ -39,12 +43,16 @@ class ElementHighlight extends base_1.BaseInteraction {
39
43
  }
40
44
  clearPrevElements() {
41
45
  const {highlightState: highlightState, blurState: blurState} = this.options;
46
+ let hasReset = !1;
47
+ const resetElements = [];
42
48
  this._marks.forEach((mark => {
43
49
  mark.elements.forEach((el => {
44
- highlightState && el.hasState(highlightState) && el.removeState(highlightState),
45
- blurState && el.hasState(blurState) && el.removeState(blurState);
50
+ hasReset = el.removeState(highlightState), el.removeState(blurState), hasReset && resetElements.push(el);
46
51
  }));
47
- })), this._lastElement = null, this._hasBlur = !1;
52
+ })), resetElements.length && this.dispatchEvent("reset", {
53
+ elements: resetElements,
54
+ options: this.options
55
+ }), this._lastElement = null, this._hasBlur = !1;
48
56
  }
49
57
  }
50
58
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interactions/element-highlight.ts"],"names":[],"mappings":"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","file":"element-highlight.js","sourcesContent":["import { InteractionStateEnum } from '../graph/enums';\nimport type { ElementHighlightOptions, IElement, IMark, IView, InteractionEvent } from '../types';\nimport { BaseInteraction } from './base';\n\nexport class ElementHighlight extends BaseInteraction<ElementHighlightOptions> {\n static type: string = 'element-highlight';\n type: string = ElementHighlight.type;\n\n static defaultOptions: ElementHighlightOptions = {\n highlightState: InteractionStateEnum.highlight,\n blurState: InteractionStateEnum.blur,\n trigger: 'pointerover',\n resetTrigger: 'pointerout'\n };\n options: ElementHighlightOptions;\n protected _marks?: IMark[];\n protected _lastElement?: IElement;\n protected _hasBlur?: boolean;\n\n constructor(view: IView, options?: ElementHighlightOptions) {\n super(view, options);\n this.options = Object.assign({}, ElementHighlight.defaultOptions, options);\n\n this._marks = view.getMarksBySelector(this.options.selector);\n }\n\n protected getEvents() {\n return [\n {\n type: this.options.trigger,\n handler: this.handleStart\n },\n { type: this.options.resetTrigger, handler: this.handleReset }\n ];\n }\n\n clearPrevElements() {\n const { highlightState, blurState } = this.options;\n\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n if (highlightState && el.hasState(highlightState)) {\n el.removeState(highlightState);\n }\n\n if (blurState && el.hasState(blurState)) {\n el.removeState(blurState);\n }\n });\n });\n\n this._lastElement = null;\n this._hasBlur = false;\n }\n\n handleStart = (e: InteractionEvent) => {\n if (e.element && this._marks && this._marks.includes(e.element.mark)) {\n const { highlightState, blurState } = this.options;\n\n if (this._lastElement === e.element) {\n return;\n }\n\n if (this._lastElement && this._hasBlur) {\n this._lastElement.removeState(highlightState);\n this._lastElement.addState(blurState);\n\n e.element.removeState(blurState);\n e.element.addState(highlightState);\n } else {\n let hasBlur = false;\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n const isHighlight = el === e.element;\n\n if (isHighlight) {\n el.removeState(blurState);\n el.addState(highlightState);\n } else {\n el.removeState(highlightState);\n hasBlur = el.addState(blurState);\n\n if (hasBlur) {\n this._hasBlur = true;\n }\n }\n });\n });\n }\n\n this._lastElement = e.element;\n } else if (this._lastElement) {\n this.clearPrevElements();\n }\n };\n\n handleReset = (e: InteractionEvent) => {\n const hasActiveElement = e.element && this._marks && this._marks.includes(e.element.mark);\n\n if (hasActiveElement) {\n this.clearPrevElements();\n }\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/interactions/element-highlight.ts"],"names":[],"mappings":"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","file":"element-highlight.js","sourcesContent":["import { InteractionStateEnum } from '../graph/enums';\nimport type { ElementHighlightOptions, IElement, IGlyphElement, IMark, IView, InteractionEvent } from '../types';\nimport { BaseInteraction } from './base';\n\nexport class ElementHighlight extends BaseInteraction<ElementHighlightOptions> {\n static type: string = 'element-highlight';\n type: string = ElementHighlight.type;\n\n static defaultOptions: ElementHighlightOptions = {\n highlightState: InteractionStateEnum.highlight,\n blurState: InteractionStateEnum.blur,\n trigger: 'pointerover',\n resetTrigger: 'pointerout'\n };\n options: ElementHighlightOptions;\n protected _marks?: IMark[];\n protected _lastElement?: IElement;\n protected _hasBlur?: boolean;\n\n constructor(view: IView, options?: ElementHighlightOptions) {\n super(view, options);\n this.options = Object.assign({}, ElementHighlight.defaultOptions, options);\n\n this._marks = view.getMarksBySelector(this.options.selector);\n }\n\n protected getEvents() {\n return [\n {\n type: this.options.trigger,\n handler: this.handleStart\n },\n { type: this.options.resetTrigger, handler: this.handleReset }\n ];\n }\n\n clearPrevElements() {\n const { highlightState, blurState } = this.options;\n let hasReset = false;\n const resetElements: (IElement | IGlyphElement)[] = [];\n\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n hasReset = el.removeState(highlightState);\n el.removeState(blurState);\n\n if (hasReset) {\n resetElements.push(el);\n }\n });\n });\n\n if (resetElements.length) {\n this.dispatchEvent('reset', { elements: resetElements, options: this.options });\n }\n\n this._lastElement = null;\n this._hasBlur = false;\n }\n\n handleStart = (e: InteractionEvent) => {\n if (e.element && this._marks && this._marks.includes(e.element.mark)) {\n const { highlightState, blurState } = this.options;\n\n if (this._lastElement === e.element) {\n return;\n }\n\n let hasHighlight = false;\n\n if (this._lastElement && this._hasBlur) {\n this._lastElement.removeState(highlightState);\n this._lastElement.addState(blurState);\n\n e.element.removeState(blurState);\n hasHighlight = e.element.addState(highlightState);\n } else {\n let hasBlur = false;\n\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n const isHighlight = el === e.element;\n\n if (isHighlight) {\n el.removeState(blurState);\n hasHighlight = el.addState(highlightState);\n } else {\n el.removeState(highlightState);\n hasBlur = el.addState(blurState);\n\n if (hasBlur) {\n this._hasBlur = true;\n }\n }\n });\n });\n }\n\n this._lastElement = e.element;\n\n if (hasHighlight) {\n this.dispatchEvent('start', { elements: [e.element], options: this.options });\n }\n } else if (this._lastElement) {\n this.clearPrevElements();\n }\n };\n\n handleReset = (e: InteractionEvent) => {\n const hasActiveElement = e.element && this._marks && this._marks.includes(e.element.mark);\n\n if (hasActiveElement) {\n this.clearPrevElements();\n }\n };\n}\n"]}
@@ -4,10 +4,10 @@ export declare class ElementSelect extends BaseInteraction<ElementSelectOptions>
4
4
  static type: string;
5
5
  type: string;
6
6
  static defaultOptions: ElementSelectOptions;
7
- options: ElementSelectOptions;
8
7
  protected _resetType?: 'view' | 'self' | 'timeout';
9
8
  protected _marks?: IMark[];
10
9
  private _timer?;
10
+ private _hasSelected?;
11
11
  constructor(view: IView, options?: ElementSelectOptions);
12
12
  protected getEvents(): {
13
13
  type: EventType | EventType[];
@@ -10,23 +10,35 @@ class ElementSelect extends base_1.BaseInteraction {
10
10
  constructor(view, options) {
11
11
  super(view, options), this.type = ElementSelect.type, this.clearPrevElements = (isMultiple, isActive) => {
12
12
  const {state: state, reverseState: reverseState} = this.options;
13
- this._marks.forEach((mark => {
13
+ if (!isActive && !this._hasSelected) return;
14
+ let res;
15
+ const elements = [];
16
+ this._hasSelected = !1, this._marks.forEach((mark => {
14
17
  mark.elements.forEach((el => {
15
- !isMultiple && el.hasState(state) && el.removeState(state), reverseState && (isActive ? el.addState(reverseState) : el.removeState(reverseState));
18
+ isMultiple || (res = el.removeState(state), res && !isActive && elements.push(el)),
19
+ reverseState && (isActive ? el.addState(reverseState) : el.removeState(reverseState));
16
20
  }));
17
- }));
21
+ })), elements.length && this.dispatchEvent("reset", {
22
+ elements: elements,
23
+ options: this.options
24
+ });
18
25
  }, this.handleStart = e => {
19
26
  const {state: state, reverseState: reverseState} = this.options;
20
- e.element && this._marks && this._marks.includes(e.element.mark) ? (this.clearPrevElements(this.options.isMultiple, !0),
21
- e.element.hasState(state) ? "self" === this._resetType && (e.element.removeState(state),
22
- reverseState && e.element.addState(reverseState)) : (this._timer && clearTimeout(this._timer),
23
- reverseState && e.element.removeState(reverseState), e.element.addState(state),
24
- "timeout" === this._resetType && (this._timer = setTimeout((() => {
25
- this.clearPrevElements();
26
- }), this.options.resetTrigger)))) : "view" === this._resetType && this.clearPrevElements();
27
+ if (e.element && this._marks && this._marks.includes(e.element.mark)) if (this.clearPrevElements(this.options.isMultiple, !0),
28
+ e.element.hasState(state)) "self" === this._resetType && (e.element.removeState(state),
29
+ reverseState && e.element.addState(reverseState)); else {
30
+ this._timer && clearTimeout(this._timer), reverseState && e.element.removeState(reverseState);
31
+ const res = e.element.addState(state);
32
+ this._hasSelected = res, res && this.dispatchEvent("start", {
33
+ elements: [ e.element ],
34
+ options: this.options
35
+ }), "timeout" === this._resetType && (this._timer = setTimeout((() => {
36
+ this.clearPrevElements();
37
+ }), this.options.resetTrigger));
38
+ } else "view" === this._resetType && this._hasSelected && this.clearPrevElements();
27
39
  }, this.handleReset = e => {
28
40
  const hasActiveElement = e.element && this._marks && this._marks.includes(e.element.mark);
29
- "view" !== this._resetType || hasActiveElement ? "self" === this._resetType && hasActiveElement && this.clearPrevElements() : this.clearPrevElements();
41
+ this._hasSelected && ("view" !== this._resetType || hasActiveElement ? "self" === this._resetType && hasActiveElement && this.clearPrevElements() : this.clearPrevElements());
30
42
  }, this.options = Object.assign({}, ElementSelect.defaultOptions, options), this._marks = view.getMarksBySelector(this.options.selector);
31
43
  }
32
44
  getEvents() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interactions/element-select.ts"],"names":[],"mappings":"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","file":"element-select.js","sourcesContent":["import { isNumber, isString } from '@visactor/vutils';\nimport { InteractionStateEnum } from '../graph/enums';\nimport type { ElementSelectOptions, EventType, IMark, IView, InteractionEvent } from '../types';\nimport { BaseInteraction } from './base';\n\nexport class ElementSelect extends BaseInteraction<ElementSelectOptions> {\n static type: string = 'element-select';\n type: string = ElementSelect.type;\n\n static defaultOptions: ElementSelectOptions = {\n state: InteractionStateEnum.selected,\n trigger: 'click'\n };\n options: ElementSelectOptions;\n protected _resetType?: 'view' | 'self' | 'timeout';\n protected _marks?: IMark[];\n private _timer?: number;\n\n constructor(view: IView, options?: ElementSelectOptions) {\n super(view, options);\n this.options = Object.assign({}, ElementSelect.defaultOptions, options);\n\n this._marks = view.getMarksBySelector(this.options.selector);\n }\n\n protected getEvents() {\n const resetTrigger = this.options.resetTrigger;\n const trigger = this.options.trigger;\n\n const events = [\n {\n type: trigger,\n handler: this.handleStart\n }\n ];\n\n let eventName = resetTrigger;\n\n if (resetTrigger === 'empty') {\n eventName = trigger as EventType;\n\n this._resetType = 'view';\n } else if (isString(resetTrigger)) {\n if (resetTrigger.includes('view:')) {\n eventName = resetTrigger.replace('view:', '') as EventType;\n\n this._resetType = 'view';\n } else {\n eventName = resetTrigger;\n\n this._resetType = 'self';\n }\n } else if (isNumber(resetTrigger)) {\n eventName = null;\n this._resetType = 'timeout';\n } else {\n this._resetType = null;\n }\n\n if (eventName && eventName !== trigger) {\n events.push({ type: eventName as EventType, handler: this.handleReset });\n }\n\n return events;\n }\n\n clearPrevElements = (isMultiple?: boolean, isActive?: boolean) => {\n const { state, reverseState } = this.options;\n\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n if (!isMultiple && el.hasState(state)) {\n el.removeState(state);\n }\n\n if (reverseState) {\n if (isActive) {\n el.addState(reverseState);\n } else {\n el.removeState(reverseState);\n }\n }\n });\n });\n };\n\n handleStart = (e: InteractionEvent) => {\n const { state, reverseState } = this.options;\n\n if (e.element && this._marks && this._marks.includes(e.element.mark)) {\n this.clearPrevElements(this.options.isMultiple, true);\n\n if (e.element.hasState(state)) {\n if (this._resetType === 'self') {\n e.element.removeState(state);\n\n reverseState && e.element.addState(reverseState);\n }\n } else {\n if (this._timer) {\n clearTimeout(this._timer);\n }\n\n reverseState && e.element.removeState(reverseState);\n e.element.addState(state);\n\n if (this._resetType === 'timeout') {\n this._timer = setTimeout(() => {\n this.clearPrevElements();\n }, this.options.resetTrigger as number) as unknown as number;\n }\n }\n } else if (this._resetType === 'view') {\n this.clearPrevElements();\n }\n };\n\n handleReset = (e: InteractionEvent) => {\n const hasActiveElement = e.element && this._marks && this._marks.includes(e.element.mark);\n\n if (this._resetType === 'view' && !hasActiveElement) {\n this.clearPrevElements();\n } else if (this._resetType === 'self' && hasActiveElement) {\n this.clearPrevElements();\n }\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/interactions/element-select.ts"],"names":[],"mappings":"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","file":"element-select.js","sourcesContent":["import { isNumber, isString } from '@visactor/vutils';\nimport { InteractionStateEnum } from '../graph/enums';\nimport type {\n ElementSelectOptions,\n EventType,\n IElement,\n IGlyphElement,\n IMark,\n IView,\n InteractionEvent\n} from '../types';\nimport { BaseInteraction } from './base';\n\nexport class ElementSelect extends BaseInteraction<ElementSelectOptions> {\n static type: string = 'element-select';\n type: string = ElementSelect.type;\n\n static defaultOptions: ElementSelectOptions = {\n state: InteractionStateEnum.selected,\n trigger: 'click'\n };\n protected _resetType?: 'view' | 'self' | 'timeout';\n protected _marks?: IMark[];\n private _timer?: number;\n private _hasSelected?: boolean;\n\n constructor(view: IView, options?: ElementSelectOptions) {\n super(view, options);\n this.options = Object.assign({}, ElementSelect.defaultOptions, options);\n\n this._marks = view.getMarksBySelector(this.options.selector);\n }\n\n protected getEvents() {\n const resetTrigger = this.options.resetTrigger;\n const trigger = this.options.trigger;\n\n const events = [\n {\n type: trigger,\n handler: this.handleStart\n }\n ];\n\n let eventName = resetTrigger;\n\n if (resetTrigger === 'empty') {\n eventName = trigger as EventType;\n\n this._resetType = 'view';\n } else if (isString(resetTrigger)) {\n if (resetTrigger.includes('view:')) {\n eventName = resetTrigger.replace('view:', '') as EventType;\n\n this._resetType = 'view';\n } else {\n eventName = resetTrigger;\n\n this._resetType = 'self';\n }\n } else if (isNumber(resetTrigger)) {\n eventName = null;\n this._resetType = 'timeout';\n } else {\n this._resetType = null;\n }\n\n if (eventName && eventName !== trigger) {\n events.push({ type: eventName as EventType, handler: this.handleReset });\n }\n\n return events;\n }\n\n clearPrevElements = (isMultiple?: boolean, isActive?: boolean) => {\n const { state, reverseState } = this.options;\n\n if (!isActive && !this._hasSelected) {\n return;\n }\n\n let res: boolean;\n const elements: (IElement | IGlyphElement)[] = [];\n\n this._hasSelected = false;\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n if (!isMultiple) {\n res = el.removeState(state);\n\n if (res && !isActive) {\n elements.push(el);\n }\n }\n\n if (reverseState) {\n if (isActive) {\n el.addState(reverseState);\n } else {\n el.removeState(reverseState);\n }\n }\n });\n });\n\n if (elements.length) {\n this.dispatchEvent('reset', { elements, options: this.options });\n }\n };\n\n handleStart = (e: InteractionEvent) => {\n const { state, reverseState } = this.options;\n\n if (e.element && this._marks && this._marks.includes(e.element.mark)) {\n this.clearPrevElements(this.options.isMultiple, true);\n\n if (e.element.hasState(state)) {\n if (this._resetType === 'self') {\n e.element.removeState(state);\n\n reverseState && e.element.addState(reverseState);\n }\n } else {\n if (this._timer) {\n clearTimeout(this._timer);\n }\n\n reverseState && e.element.removeState(reverseState);\n const res = e.element.addState(state);\n this._hasSelected = res;\n\n if (res) {\n this.dispatchEvent('start', { elements: [e.element], options: this.options });\n }\n\n if (this._resetType === 'timeout') {\n this._timer = setTimeout(() => {\n this.clearPrevElements();\n }, this.options.resetTrigger as number) as unknown as number;\n }\n }\n } else if (this._resetType === 'view' && this._hasSelected) {\n this.clearPrevElements();\n }\n };\n\n handleReset = (e: InteractionEvent) => {\n const hasActiveElement = e.element && this._marks && this._marks.includes(e.element.mark);\n\n if (!this._hasSelected) {\n return;\n }\n\n if (this._resetType === 'view' && !hasActiveElement) {\n this.clearPrevElements();\n } else if (this._resetType === 'self' && hasActiveElement) {\n this.clearPrevElements();\n }\n };\n}\n"]}
@@ -1,4 +1,4 @@
1
- import type { FishEyeOptions, IMark, IScale, IView, InteractionEvent, ViewNavigationRange } from '../types';
1
+ import type { FishEyeOptions, IMark, IScale, IView, InteractionEvent } from '../types';
2
2
  import { BaseInteraction } from './base';
3
3
  export declare class FishEye extends BaseInteraction<FishEyeOptions> {
4
4
  static type: string;
@@ -27,7 +27,6 @@ export declare class FishEye extends BaseInteraction<FishEyeOptions> {
27
27
  x: number;
28
28
  y: number;
29
29
  }, e?: InteractionEvent): void;
30
- protected dispatchEvent(type: string, viewRange: ViewNavigationRange, e?: InteractionEvent): void;
31
30
  shouldHandle(e: InteractionEvent): boolean;
32
31
  shouldUpdate(e: InteractionEvent): boolean;
33
32
  handleStart: (e: InteractionEvent) => void;
@@ -75,12 +75,6 @@ class FishEye extends base_1.BaseInteraction {
75
75
  dimState.scale.setFishEye(null), dimState.scale.commit());
76
76
  })), needUpdate && this.view.runSync();
77
77
  }
78
- dispatchEvent(type, viewRange, e) {
79
- this.view.emit(type, {
80
- viewRange: viewRange,
81
- event: e
82
- });
83
- }
84
78
  shouldHandle(e) {
85
79
  var _a, _b, _c;
86
80
  return this._marks ? e.element && this._marks && this._marks.includes(e.element.mark) : e.target === (null === (_c = null === (_b = null === (_a = this.view) || void 0 === _a ? void 0 : _a.renderer) || void 0 === _b ? void 0 : _b.stage) || void 0 === _c ? void 0 : _c.call(_b));
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interactions/fish-eye.ts"],"names":[],"mappings":"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","file":"fish-eye.js","sourcesContent":["import { isNil, isString, throttle } from '@visactor/vutils';\nimport type { FishEyeOptions, IMark, IScale, IView, InteractionEvent, ViewNavigationRange } from '../types';\nimport { BaseInteraction } from './base';\n\nexport class FishEye extends BaseInteraction<FishEyeOptions> {\n static type: string = 'fish-eye';\n type: string = FishEye.type;\n\n static defaultOptions: FishEyeOptions = {\n trigger: 'pointerenter',\n updateTrigger: 'pointermove',\n endTrigger: 'pointerleave',\n distortionX: 2,\n distortionY: 2,\n throttle: 100\n };\n\n options: FishEyeOptions;\n protected _inited?: boolean;\n protected _state: Partial<\n Record<'x' | 'y', { scale?: IScale; focus?: number; distortion?: number; radius?: number; radiusRatio?: number }>\n >;\n protected _isActive?: boolean;\n protected _marks?: IMark[];\n\n protected handleUpdate: (e: InteractionEvent) => void;\n\n constructor(view: IView, options?: FishEyeOptions) {\n super(view, options);\n this.options = Object.assign({}, FishEye.defaultOptions, options);\n this._marks = view.getMarksBySelector(this.options.selector);\n\n this.handleUpdate = throttle(this.handleUpdateInner, this.options.throttle);\n }\n\n protected getEvents() {\n return [\n { type: this.options.trigger, handler: this.handleStart },\n { type: this.options.updateTrigger, handler: this.handleUpdate },\n { type: this.options.endTrigger, handler: this.handleEnd },\n { type: this.options.resetTrigger, handler: this.handleReset }\n ];\n }\n\n protected _initStateByDim(\n dim: 'x' | 'y',\n distortion: number,\n scale?: string | IScale,\n radius?: number,\n radiusRatio?: number\n ) {\n const scaleGrammar = !isNil(scale) ? (isString(scale) ? this.view.getScaleById(scale) : scale) : null;\n\n this._state[dim] = { scale: scaleGrammar, distortion, radius, radiusRatio };\n }\n\n protected _initGrammars() {\n const { enableX, enableY, scaleX, scaleY, distortionX, distortionY, radiusRatioX, radiusRatioY, radiusX, radiusY } =\n this.options;\n\n this._state = {};\n\n if (enableX !== false) {\n this._initStateByDim('x', distortionX, scaleX, radiusX, radiusRatioX);\n }\n\n if (enableY !== false) {\n this._initStateByDim('y', distortionY, scaleY, radiusY, radiusRatioY);\n }\n\n this._inited = true;\n }\n\n updateView(focus?: { x: number; y: number }, e?: InteractionEvent) {\n let needUpdate = false;\n\n if (focus) {\n Object.keys(this._state).forEach(dim => {\n const dimState = this._state[dim];\n\n if (dimState.scale && dimState.focus !== focus[dim]) {\n needUpdate = true;\n // 坐标转换问题\n dimState.focus = focus[dim];\n dimState.scale.setFishEye({\n distortion: dimState.distortion,\n radius: dimState.radius,\n radiusRatio: dimState.radiusRatio,\n focus: focus[dim]\n });\n dimState.scale.commit();\n }\n });\n } else {\n Object.keys(this._state).forEach(dim => {\n const dimState = this._state[dim];\n\n if (dimState.scale && !isNil(dimState.focus)) {\n needUpdate = true;\n // 坐标转换问题\n dimState.focus = null;\n dimState.scale.setFishEye(null);\n dimState.scale.commit();\n }\n });\n }\n\n if (needUpdate) {\n this.view.runSync();\n }\n\n // this.dispatchEvent(type, newRange, e);\n }\n\n protected dispatchEvent(type: string, viewRange: ViewNavigationRange, e?: InteractionEvent) {\n this.view.emit(type, {\n viewRange,\n event: e\n });\n }\n\n shouldHandle(e: InteractionEvent) {\n if (this._marks) {\n return e.element && this._marks && this._marks.includes(e.element.mark);\n }\n return (e.target as any) === this.view?.renderer?.stage?.();\n }\n\n shouldUpdate(e: InteractionEvent) {\n if (this._marks) {\n return e.element && this._marks && this._marks.includes(e.element.mark);\n }\n const viewBox = this.view.getViewBox();\n return e.canvasX >= viewBox.x1 && e.canvasX <= viewBox.x2 && e.canvasY >= viewBox.y1 && e.canvasY <= viewBox.y2;\n }\n\n handleStart = (e: InteractionEvent) => {\n if (!e || !(this.options.shouldStart ? this.options.shouldStart(e) : this.shouldHandle(e))) {\n return;\n }\n\n if (!this._inited) {\n this._initGrammars();\n }\n if (!this._isActive) {\n this._isActive = true;\n this.updateView({ x: e.canvasX, y: e.canvasY }, e);\n }\n };\n\n handleUpdateInner = (e: InteractionEvent) => {\n if (!e || !(this.options.shouldUpdate ? this.options.shouldUpdate(e) : this.shouldUpdate(e))) {\n return;\n }\n\n this._isActive && this.updateView({ x: e.canvasX, y: e.canvasY }, e);\n };\n\n handleEnd = (e: InteractionEvent) => {\n if (!e || !(this.options.shouldEnd ? this.options.shouldEnd(e) : this.shouldHandle(e))) {\n return;\n }\n\n if (!this.options.resetTrigger && this._isActive) {\n this._isActive = false;\n this.updateView(null, e);\n }\n };\n\n handleReset = (e: InteractionEvent) => {\n if (!e || !(this.options.shouldReset ? this.options.shouldReset(e) : this.shouldHandle(e))) {\n return;\n }\n\n if (this._isActive) {\n this.updateView(null, e);\n this._isActive = false;\n }\n };\n\n unbind() {\n super.unbind();\n\n if (this._state) {\n Object.keys(this._state).forEach(dim => {\n const { scale } = this._state[dim as 'x' | 'y'];\n\n if (scale) {\n scale.setRangeFactor(null);\n scale.commit();\n }\n });\n }\n\n this._state = null;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/interactions/fish-eye.ts"],"names":[],"mappings":"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","file":"fish-eye.js","sourcesContent":["import { isNil, isString, throttle } from '@visactor/vutils';\nimport type { FishEyeOptions, IMark, IScale, IView, InteractionEvent, ViewNavigationRange } from '../types';\nimport { BaseInteraction } from './base';\n\nexport class FishEye extends BaseInteraction<FishEyeOptions> {\n static type: string = 'fish-eye';\n type: string = FishEye.type;\n\n static defaultOptions: FishEyeOptions = {\n trigger: 'pointerenter',\n updateTrigger: 'pointermove',\n endTrigger: 'pointerleave',\n distortionX: 2,\n distortionY: 2,\n throttle: 100\n };\n\n options: FishEyeOptions;\n protected _inited?: boolean;\n protected _state: Partial<\n Record<'x' | 'y', { scale?: IScale; focus?: number; distortion?: number; radius?: number; radiusRatio?: number }>\n >;\n protected _isActive?: boolean;\n protected _marks?: IMark[];\n\n protected handleUpdate: (e: InteractionEvent) => void;\n\n constructor(view: IView, options?: FishEyeOptions) {\n super(view, options);\n this.options = Object.assign({}, FishEye.defaultOptions, options);\n this._marks = view.getMarksBySelector(this.options.selector);\n\n this.handleUpdate = throttle(this.handleUpdateInner, this.options.throttle);\n }\n\n protected getEvents() {\n return [\n { type: this.options.trigger, handler: this.handleStart },\n { type: this.options.updateTrigger, handler: this.handleUpdate },\n { type: this.options.endTrigger, handler: this.handleEnd },\n { type: this.options.resetTrigger, handler: this.handleReset }\n ];\n }\n\n protected _initStateByDim(\n dim: 'x' | 'y',\n distortion: number,\n scale?: string | IScale,\n radius?: number,\n radiusRatio?: number\n ) {\n const scaleGrammar = !isNil(scale) ? (isString(scale) ? this.view.getScaleById(scale) : scale) : null;\n\n this._state[dim] = { scale: scaleGrammar, distortion, radius, radiusRatio };\n }\n\n protected _initGrammars() {\n const { enableX, enableY, scaleX, scaleY, distortionX, distortionY, radiusRatioX, radiusRatioY, radiusX, radiusY } =\n this.options;\n\n this._state = {};\n\n if (enableX !== false) {\n this._initStateByDim('x', distortionX, scaleX, radiusX, radiusRatioX);\n }\n\n if (enableY !== false) {\n this._initStateByDim('y', distortionY, scaleY, radiusY, radiusRatioY);\n }\n\n this._inited = true;\n }\n\n updateView(focus?: { x: number; y: number }, e?: InteractionEvent) {\n let needUpdate = false;\n\n if (focus) {\n Object.keys(this._state).forEach(dim => {\n const dimState = this._state[dim];\n\n if (dimState.scale && dimState.focus !== focus[dim]) {\n needUpdate = true;\n // 坐标转换问题\n dimState.focus = focus[dim];\n dimState.scale.setFishEye({\n distortion: dimState.distortion,\n radius: dimState.radius,\n radiusRatio: dimState.radiusRatio,\n focus: focus[dim]\n });\n dimState.scale.commit();\n }\n });\n } else {\n Object.keys(this._state).forEach(dim => {\n const dimState = this._state[dim];\n\n if (dimState.scale && !isNil(dimState.focus)) {\n needUpdate = true;\n // 坐标转换问题\n dimState.focus = null;\n dimState.scale.setFishEye(null);\n dimState.scale.commit();\n }\n });\n }\n\n if (needUpdate) {\n this.view.runSync();\n }\n }\n\n shouldHandle(e: InteractionEvent) {\n if (this._marks) {\n return e.element && this._marks && this._marks.includes(e.element.mark);\n }\n return (e.target as any) === this.view?.renderer?.stage?.();\n }\n\n shouldUpdate(e: InteractionEvent) {\n if (this._marks) {\n return e.element && this._marks && this._marks.includes(e.element.mark);\n }\n const viewBox = this.view.getViewBox();\n return e.canvasX >= viewBox.x1 && e.canvasX <= viewBox.x2 && e.canvasY >= viewBox.y1 && e.canvasY <= viewBox.y2;\n }\n\n handleStart = (e: InteractionEvent) => {\n if (!e || !(this.options.shouldStart ? this.options.shouldStart(e) : this.shouldHandle(e))) {\n return;\n }\n\n if (!this._inited) {\n this._initGrammars();\n }\n if (!this._isActive) {\n this._isActive = true;\n this.updateView({ x: e.canvasX, y: e.canvasY }, e);\n }\n };\n\n handleUpdateInner = (e: InteractionEvent) => {\n if (!e || !(this.options.shouldUpdate ? this.options.shouldUpdate(e) : this.shouldUpdate(e))) {\n return;\n }\n\n this._isActive && this.updateView({ x: e.canvasX, y: e.canvasY }, e);\n };\n\n handleEnd = (e: InteractionEvent) => {\n if (!e || !(this.options.shouldEnd ? this.options.shouldEnd(e) : this.shouldHandle(e))) {\n return;\n }\n\n if (!this.options.resetTrigger && this._isActive) {\n this._isActive = false;\n this.updateView(null, e);\n }\n };\n\n handleReset = (e: InteractionEvent) => {\n if (!e || !(this.options.shouldReset ? this.options.shouldReset(e) : this.shouldHandle(e))) {\n return;\n }\n\n if (this._isActive) {\n this.updateView(null, e);\n this._isActive = false;\n }\n };\n\n unbind() {\n super.unbind();\n\n if (this._state) {\n Object.keys(this._state).forEach(dim => {\n const { scale } = this._state[dim as 'x' | 'y'];\n\n if (scale) {\n scale.setRangeFactor(null);\n scale.commit();\n }\n });\n }\n\n this._state = null;\n }\n}\n"]}
@@ -4,22 +4,22 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.ViewDrag = void 0;
6
6
 
7
- const vutils_1 = require("@visactor/vutils"), enums_1 = require("../graph/enums"), view_navigation_base_1 = require("./view-navigation-base");
7
+ const vutils_1 = require("@visactor/vutils"), view_navigation_base_1 = require("./view-navigation-base");
8
8
 
9
9
  class ViewDrag extends view_navigation_base_1.ViewNavigationBase {
10
10
  constructor(view, option) {
11
11
  super(view, Object.assign({}, ViewDrag.defaultOptions, option)), this.type = ViewDrag.type,
12
12
  this.handleStart = e => {
13
13
  !e || this.options.shouldStart && !this.options.shouldStart(e) || (this._inited || this._initGrammars(),
14
- this.updateView(enums_1.InteractionEventEnum.viewDragStart, this.handleDragStart(e, this._state, {
14
+ this.updateView("start", this.handleDragStart(e, this._state, {
15
15
  reversed: this.options.reversed
16
16
  }), e));
17
17
  }, this.handleUpdateInner = e => {
18
- !e || this.options.shouldUpdate && !this.options.shouldUpdate(e) || this.updateView(enums_1.InteractionEventEnum.viewDragUpdate, this.handleDragUpdate(e, this._state, {
18
+ !e || this.options.shouldUpdate && !this.options.shouldUpdate(e) || this.updateView("update", this.handleDragUpdate(e, this._state, {
19
19
  reversed: this.options.reversed
20
20
  }), e);
21
21
  }, this.handleEnd = e => {
22
- !e || this.options.shouldEnd && !this.options.shouldEnd(e) || this.updateView(enums_1.InteractionEventEnum.viewDragEnd, this.handleDragEnd(e, this._state, {
22
+ !e || this.options.shouldEnd && !this.options.shouldEnd(e) || this.updateView("end", this.handleDragEnd(e, this._state, {
23
23
  reversed: this.options.reversed
24
24
  }), e);
25
25
  }, this.handleUpdate = (0, vutils_1.throttle)(this.handleUpdateInner, this.options.throttle);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interactions/view-drag.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAC5C,0CAAsD;AAEtD,iEAA4D;AAK5D,MAAa,QAAS,SAAQ,yCAAmC;IAiB/D,YAAY,IAAW,EAAE,MAAwB;QAC/C,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;QAhBlE,SAAI,GAAW,QAAQ,CAAC,IAAI,CAAC;QA4B7B,gBAAW,GAAG,CAAC,CAAmB,EAAE,EAAE;YACpC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE;gBACpE,OAAO;aACR;YAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBACjB,IAAI,CAAC,aAAa,EAAE,CAAC;aACtB;YAED,IAAI,CAAC,UAAU,CACb,4BAAoB,CAAC,aAAa,EAClC,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,EACzE,CAAC,CACF,CAAC;QACJ,CAAC,CAAC;QAEF,sBAAiB,GAAG,CAAC,CAAmB,EAAE,EAAE;YAC1C,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE;gBACtE,OAAO;aACR;YAED,IAAI,CAAC,UAAU,CACb,4BAAoB,CAAC,cAAc,EACnC,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,EAC1E,CAAC,CACF,CAAC;QACJ,CAAC,CAAC;QAEF,cAAS,GAAG,CAAC,CAAmB,EAAE,EAAE;YAClC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;gBAChE,OAAO;aACR;YAED,IAAI,CAAC,UAAU,CACb,4BAAoB,CAAC,WAAW,EAChC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,EACvE,CAAC,CACF,CAAC;QACJ,CAAC,CAAC;QAjDA,IAAI,CAAC,YAAY,GAAG,IAAA,iBAAQ,EAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9E,CAAC;IAES,SAAS;QACjB,OAAO;YACL,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE;YACzD,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE;YAC1D,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE;SACjE,CAAC;IACJ,CAAC;;AA5BH,4BAqEC;AApEQ,aAAI,GAAW,WAAW,CAAC;AAG3B,uBAAc,GAAoB;IACvC,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,aAAa;IACtB,aAAa,EAAE,aAAa;IAC5B,UAAU,EAAE,WAAW;IACvB,QAAQ,EAAE,GAAG;CACd,CAAC","file":"view-drag.js","sourcesContent":["import { throttle } from '@visactor/vutils';\nimport { InteractionEventEnum } from '../graph/enums';\nimport type { ViewDragOptions, IView, InteractionEvent, IViewDragMixin } from '../types';\nimport { ViewNavigationBase } from './view-navigation-base';\n\nexport interface ViewDrag\n extends Pick<IViewDragMixin, 'handleDragStart' | 'handleDragEnd' | 'handleDragUpdate'>,\n ViewNavigationBase<ViewDragOptions> {}\nexport class ViewDrag extends ViewNavigationBase<ViewDragOptions> {\n static type: string = 'view-drag';\n type: string = ViewDrag.type;\n\n static defaultOptions: ViewDragOptions = {\n realtime: true,\n reversed: false,\n trigger: 'pointerdown',\n updateTrigger: 'pointermove',\n endTrigger: 'pointerup',\n throttle: 100\n };\n\n protected _inited?: boolean;\n\n protected handleUpdate: (e: InteractionEvent) => void;\n\n constructor(view: IView, option?: ViewDragOptions) {\n super(view, Object.assign({}, ViewDrag.defaultOptions, option));\n this.handleUpdate = throttle(this.handleUpdateInner, this.options.throttle);\n }\n\n protected getEvents() {\n return [\n { type: this.options.trigger, handler: this.handleStart },\n { type: this.options.endTrigger, handler: this.handleEnd },\n { type: this.options.updateTrigger, handler: this.handleUpdate }\n ];\n }\n\n handleStart = (e: InteractionEvent) => {\n if (!e || (this.options.shouldStart && !this.options.shouldStart(e))) {\n return;\n }\n\n if (!this._inited) {\n this._initGrammars();\n }\n\n this.updateView(\n InteractionEventEnum.viewDragStart,\n this.handleDragStart(e, this._state, { reversed: this.options.reversed }),\n e\n );\n };\n\n handleUpdateInner = (e: InteractionEvent) => {\n if (!e || (this.options.shouldUpdate && !this.options.shouldUpdate(e))) {\n return;\n }\n\n this.updateView(\n InteractionEventEnum.viewDragUpdate,\n this.handleDragUpdate(e, this._state, { reversed: this.options.reversed }),\n e\n );\n };\n\n handleEnd = (e: InteractionEvent) => {\n if (!e || (this.options.shouldEnd && !this.options.shouldEnd(e))) {\n return;\n }\n\n this.updateView(\n InteractionEventEnum.viewDragEnd,\n this.handleDragEnd(e, this._state, { reversed: this.options.reversed }),\n e\n );\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/interactions/view-drag.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAE5C,iEAA4D;AAK5D,MAAa,QAAS,SAAQ,yCAAmC;IAiB/D,YAAY,IAAW,EAAE,MAAwB;QAC/C,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;QAhBlE,SAAI,GAAW,QAAQ,CAAC,IAAI,CAAC;QA4B7B,gBAAW,GAAG,CAAC,CAAmB,EAAE,EAAE;YACpC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE;gBACpE,OAAO;aACR;YAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBACjB,IAAI,CAAC,aAAa,EAAE,CAAC;aACtB;YAED,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACzG,CAAC,CAAC;QAEF,sBAAiB,GAAG,CAAC,CAAmB,EAAE,EAAE;YAC1C,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE;gBACtE,OAAO;aACR;YAED,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3G,CAAC,CAAC;QAEF,cAAS,GAAG,CAAC,CAAmB,EAAE,EAAE;YAClC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;gBAChE,OAAO;aACR;YAED,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACrG,CAAC,CAAC;QArCA,IAAI,CAAC,YAAY,GAAG,IAAA,iBAAQ,EAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9E,CAAC;IAES,SAAS;QACjB,OAAO;YACL,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE;YACzD,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE;YAC1D,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE;SACjE,CAAC;IACJ,CAAC;;AA5BH,4BAyDC;AAxDQ,aAAI,GAAW,WAAW,CAAC;AAG3B,uBAAc,GAAoB;IACvC,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,aAAa;IACtB,aAAa,EAAE,aAAa;IAC5B,UAAU,EAAE,WAAW;IACvB,QAAQ,EAAE,GAAG;CACd,CAAC","file":"view-drag.js","sourcesContent":["import { throttle } from '@visactor/vutils';\nimport type { ViewDragOptions, IView, InteractionEvent, IViewDragMixin } from '../types';\nimport { ViewNavigationBase } from './view-navigation-base';\n\nexport interface ViewDrag\n extends Pick<IViewDragMixin, 'handleDragStart' | 'handleDragEnd' | 'handleDragUpdate'>,\n ViewNavigationBase<ViewDragOptions> {}\nexport class ViewDrag extends ViewNavigationBase<ViewDragOptions> {\n static type: string = 'view-drag';\n type: string = ViewDrag.type;\n\n static defaultOptions: ViewDragOptions = {\n realtime: true,\n reversed: false,\n trigger: 'pointerdown',\n updateTrigger: 'pointermove',\n endTrigger: 'pointerup',\n throttle: 100\n };\n\n protected _inited?: boolean;\n\n protected handleUpdate: (e: InteractionEvent) => void;\n\n constructor(view: IView, option?: ViewDragOptions) {\n super(view, Object.assign({}, ViewDrag.defaultOptions, option));\n this.handleUpdate = throttle(this.handleUpdateInner, this.options.throttle);\n }\n\n protected getEvents() {\n return [\n { type: this.options.trigger, handler: this.handleStart },\n { type: this.options.endTrigger, handler: this.handleEnd },\n { type: this.options.updateTrigger, handler: this.handleUpdate }\n ];\n }\n\n handleStart = (e: InteractionEvent) => {\n if (!e || (this.options.shouldStart && !this.options.shouldStart(e))) {\n return;\n }\n\n if (!this._inited) {\n this._initGrammars();\n }\n\n this.updateView('start', this.handleDragStart(e, this._state, { reversed: this.options.reversed }), e);\n };\n\n handleUpdateInner = (e: InteractionEvent) => {\n if (!e || (this.options.shouldUpdate && !this.options.shouldUpdate(e))) {\n return;\n }\n\n this.updateView('update', this.handleDragUpdate(e, this._state, { reversed: this.options.reversed }), e);\n };\n\n handleEnd = (e: InteractionEvent) => {\n if (!e || (this.options.shouldEnd && !this.options.shouldEnd(e))) {\n return;\n }\n\n this.updateView('end', this.handleDragEnd(e, this._state, { reversed: this.options.reversed }), e);\n };\n}\n"]}
@@ -11,7 +11,6 @@ export declare abstract class ViewNavigationBase<T extends ViewNavigationBaseOpt
11
11
  protected _initStateByDim(dim: 'x' | 'y', linkedComponent?: string | IDatazoom | IScrollbar, scale?: string | IScale, dataTarget?: FilterDataTarget): void;
12
12
  protected _initGrammars(): void;
13
13
  protected _updateLinkedComponent(comp: IDatazoom | IScrollbar, newRange: [number, number]): void;
14
- updateView(type: string, newRange: ViewNavigationRange, e?: InteractionEvent): void;
15
- protected dispatchEvent(type: string, viewRange: ViewNavigationRange, e?: InteractionEvent): void;
14
+ updateView(type: 'start' | 'reset' | 'update' | 'end', newRange: ViewNavigationRange, e?: InteractionEvent): void;
16
15
  unbind(): void;
17
16
  }
@@ -60,11 +60,8 @@ class ViewNavigationBase extends base_1.BaseInteraction {
60
60
  var _a, _b, _c, _d;
61
61
  (null == newRange ? void 0 : newRange.x) && (null === (_b = null === (_a = this._state) || void 0 === _a ? void 0 : _a.x) || void 0 === _b ? void 0 : _b.linkedComponent) && this._updateLinkedComponent(this._state.x.linkedComponent, newRange.x),
62
62
  (null == newRange ? void 0 : newRange.y) && (null === (_d = null === (_c = this._state) || void 0 === _c ? void 0 : _c.y) || void 0 === _d ? void 0 : _d.linkedComponent) && this._updateLinkedComponent(this._state.y.linkedComponent, newRange.y),
63
- (null == newRange ? void 0 : newRange.needUpdate) && this.view.runAsync(), this.dispatchEvent(type, newRange, e);
64
- }
65
- dispatchEvent(type, viewRange, e) {
66
- this.view.emit(type, {
67
- viewRange: viewRange,
63
+ (null == newRange ? void 0 : newRange.needUpdate) && this.view.runAsync(), this.dispatchEvent(type, {
64
+ viewRange: newRange,
68
65
  event: e
69
66
  });
70
67
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interactions/view-navigation-base.ts"],"names":[],"mappings":"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","file":"view-navigation-base.js","sourcesContent":["import { isNil, isString } from '@visactor/vutils';\nimport type {\n FilterDataTarget,\n IBaseInteractionOptions,\n IComponent,\n IDataFilter,\n IDatazoom,\n IMark,\n IScale,\n IScrollbar,\n IView,\n InteractionEvent,\n ViewNavigationBaseOptions,\n ViewNavigationRange,\n ViewStateByDim\n} from '../types';\nimport { BaseInteraction } from './base';\nimport { ComponentEnum, DataFilterRank, GrammarMarkType } from '../graph/enums';\nimport { getScaleRangeRatio } from '../util/scale';\n\nexport abstract class ViewNavigationBase<\n T extends ViewNavigationBaseOptions & IBaseInteractionOptions\n> extends BaseInteraction<T> {\n options: T;\n\n protected _state: Partial<Record<'x' | 'y', ViewStateByDim>>;\n protected _inited?: boolean;\n protected _dataFilterX: IDataFilter;\n protected _dataFilterY: IDataFilter;\n\n constructor(view: IView, options?: T) {\n super(view, options);\n this.options = options;\n }\n\n protected _parseLinkedComponent(option: string | IDatazoom | IScrollbar): IDatazoom | IScrollbar {\n if (!option) {\n return null;\n }\n const comp: IMark = isString(option) ? this.view.getMarkById(option) : option;\n\n if (\n comp &&\n comp.markType === GrammarMarkType.component &&\n ((comp as IComponent).componentType === ComponentEnum.datazoom ||\n (comp as IComponent).componentType === ComponentEnum.scrollbar)\n ) {\n return comp as IDatazoom | IScrollbar;\n }\n\n return null;\n }\n\n protected _initStateByDim(\n dim: 'x' | 'y',\n linkedComponent?: string | IDatazoom | IScrollbar,\n scale?: string | IScale,\n dataTarget?: FilterDataTarget\n ) {\n const comp = this._parseLinkedComponent(linkedComponent);\n\n if (comp) {\n this._state[dim] = { linkedComponent: comp };\n return;\n }\n\n const scaleGrammar = !isNil(scale) ? (isString(scale) ? this.view.getScaleById(scale) : scale) : null;\n const dataGrammar = !isNil(dataTarget?.data)\n ? isString(dataTarget.data)\n ? this.view.getDataById(dataTarget.data)\n : dataTarget.data\n : null;\n\n if (!scaleGrammar || !dataGrammar) {\n this._state[dim] = { data: dataGrammar, scale: scaleGrammar };\n return;\n }\n\n dataGrammar.attach(scaleGrammar);\n\n const filterByScale = isString(dataTarget.filter)\n ? (datum: any, filterValue: number[]) => {\n const scale = scaleGrammar.getScale();\n const ratio = getScaleRangeRatio(scale, datum[dataTarget.filter as string]);\n\n return ratio >= filterValue[0] && ratio <= filterValue[1];\n }\n : dataTarget.filter;\n const dataFilter = {\n source: `${scaleGrammar.uid}`,\n rank: DataFilterRank.normal,\n filter: (data: any[]) => {\n const filterValue = dim === 'x' ? this._state?.x?.filterValue : this._state?.y?.filterValue;\n if (!filterValue) {\n return data;\n }\n const filteredData = data.filter(datum => filterByScale(datum, filterValue));\n return dataTarget.transform ? dataTarget.transform(filteredData, filterValue) : filteredData;\n }\n };\n\n if (dim === 'x') {\n this._dataFilterX = dataFilter;\n } else {\n this._dataFilterY = dataFilter;\n }\n\n dataGrammar.addDataFilter(dataFilter);\n\n this._state[dim] = { data: dataGrammar, scale: scaleGrammar };\n }\n\n protected _initGrammars() {\n const { enableX, enableY, scaleX, scaleY, dataTargetX, dataTargetY, linkedComponentX, linkedComponentY } =\n this.options;\n\n this._state = {};\n\n if (enableX !== false) {\n this._initStateByDim('x', linkedComponentX, scaleX, dataTargetX);\n }\n\n if (enableY !== false) {\n this._initStateByDim('y', linkedComponentY, scaleY, dataTargetY);\n }\n\n this._inited = true;\n }\n\n protected _updateLinkedComponent(comp: IDatazoom | IScrollbar, newRange: [number, number]) {\n if (comp.componentType === ComponentEnum.datazoom) {\n (comp as IDatazoom).setStartEndValue(newRange[0], newRange[1]);\n } else {\n // fix: need to update range scrollbar\n (comp as IScrollbar).setScrollStart(newRange[0]);\n }\n }\n\n updateView(type: string, newRange: ViewNavigationRange, e?: InteractionEvent) {\n if (newRange?.x && this._state?.x?.linkedComponent) {\n this._updateLinkedComponent(this._state.x.linkedComponent, newRange.x);\n }\n\n if (newRange?.y && this._state?.y?.linkedComponent) {\n this._updateLinkedComponent(this._state.y.linkedComponent, newRange.y);\n }\n\n if (newRange?.needUpdate) {\n this.view.runAsync();\n }\n\n this.dispatchEvent(type, newRange, e);\n }\n\n protected dispatchEvent(type: string, viewRange: ViewNavigationRange, e?: InteractionEvent) {\n this.view.emit(type, {\n viewRange,\n event: e\n });\n }\n\n unbind() {\n super.unbind();\n\n if (this._state) {\n Object.keys(this._state).forEach(dim => {\n const { data, scale } = this._state[dim as 'x' | 'y'];\n\n if (data && scale) {\n data.detach(scale);\n data.removeDataFilter(dim === 'x' ? this._dataFilterX : this._dataFilterY);\n } else if (scale) {\n scale.setRangeFactor(null);\n scale.commit();\n }\n });\n }\n\n this._state = null;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/interactions/view-navigation-base.ts"],"names":[],"mappings":";;;AAAA,6CAAmD;AAgBnD,iCAAyC;AACzC,0CAAgF;AAChF,yCAAmD;AAEnD,MAAsB,kBAEpB,SAAQ,sBAAkB;IAQ1B,YAAY,IAAW,EAAE,OAAW;QAClC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAES,qBAAqB,CAAC,MAAuC;QACrE,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,IAAI,CAAC;SACb;QACD,MAAM,IAAI,GAAU,IAAA,iBAAQ,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAE9E,IACE,IAAI;YACJ,IAAI,CAAC,QAAQ,KAAK,uBAAe,CAAC,SAAS;YAC3C,CAAE,IAAmB,CAAC,aAAa,KAAK,qBAAa,CAAC,QAAQ;gBAC3D,IAAmB,CAAC,aAAa,KAAK,qBAAa,CAAC,SAAS,CAAC,EACjE;YACA,OAAO,IAA8B,CAAC;SACvC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAES,eAAe,CACvB,GAAc,EACd,eAAiD,EACjD,KAAuB,EACvB,UAA6B;QAE7B,MAAM,IAAI,GAAG,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC;QAEzD,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;YAC7C,OAAO;SACR;QAED,MAAM,YAAY,GAAG,CAAC,IAAA,cAAK,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAA,iBAAQ,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACtG,MAAM,WAAW,GAAG,CAAC,IAAA,cAAK,EAAC,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,CAAC;YAC1C,CAAC,CAAC,IAAA,iBAAQ,EAAC,UAAU,CAAC,IAAI,CAAC;gBACzB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC;gBACxC,CAAC,CAAC,UAAU,CAAC,IAAI;YACnB,CAAC,CAAC,IAAI,CAAC;QAET,IAAI,CAAC,YAAY,IAAI,CAAC,WAAW,EAAE;YACjC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;YAC9D,OAAO;SACR;QAED,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAEjC,MAAM,aAAa,GAAG,IAAA,iBAAQ,EAAC,UAAU,CAAC,MAAM,CAAC;YAC/C,CAAC,CAAC,CAAC,KAAU,EAAE,WAAqB,EAAE,EAAE;gBACpC,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;gBACtC,MAAM,KAAK,GAAG,IAAA,0BAAkB,EAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,MAAgB,CAAC,CAAC,CAAC;gBAE5E,OAAO,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;YAC5D,CAAC;YACH,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;QACtB,MAAM,UAAU,GAAG;YACjB,MAAM,EAAE,GAAG,YAAY,CAAC,GAAG,EAAE;YAC7B,IAAI,EAAE,sBAAc,CAAC,MAAM;YAC3B,MAAM,EAAE,CAAC,IAAW,EAAE,EAAE;;gBACtB,MAAM,WAAW,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,CAAC,0CAAE,WAAW,CAAC,CAAC,CAAC,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,CAAC,0CAAE,WAAW,CAAC;gBAC5F,IAAI,CAAC,WAAW,EAAE;oBAChB,OAAO,IAAI,CAAC;iBACb;gBACD,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;gBAC7E,OAAO,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;YAC/F,CAAC;SACF,CAAC;QAEF,IAAI,GAAG,KAAK,GAAG,EAAE;YACf,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;SAChC;aAAM;YACL,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;SAChC;QAED,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAEtC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IAChE,CAAC;IAES,aAAa;QACrB,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,GACtG,IAAI,CAAC,OAAO,CAAC;QAEf,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QAEjB,IAAI,OAAO,KAAK,KAAK,EAAE;YACrB,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,gBAAgB,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;SAClE;QAED,IAAI,OAAO,KAAK,KAAK,EAAE;YACrB,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,gBAAgB,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;SAClE;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAES,sBAAsB,CAAC,IAA4B,EAAE,QAA0B;QACvF,IAAI,IAAI,CAAC,aAAa,KAAK,qBAAa,CAAC,QAAQ,EAAE;YAChD,IAAkB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;SAChE;aAAM;YAEJ,IAAmB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;SAClD;IACH,CAAC;IAED,UAAU,CAAC,IAA0C,EAAE,QAA6B,EAAE,CAAoB;;QACxG,IAAI,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,CAAC,MAAI,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,CAAC,0CAAE,eAAe,CAAA,EAAE;YAClD,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;SACxE;QAED,IAAI,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,CAAC,MAAI,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,CAAC,0CAAE,eAAe,CAAA,EAAE;YAClD,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;SACxE;QAED,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,UAAU,EAAE;YACxB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;SACtB;QAED,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM;QACJ,KAAK,CAAC,MAAM,EAAE,CAAC;QAEf,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACrC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAgB,CAAC,CAAC;gBAEtD,IAAI,IAAI,IAAI,KAAK,EAAE;oBACjB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACnB,IAAI,CAAC,gBAAgB,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;iBAC5E;qBAAM,IAAI,KAAK,EAAE;oBAChB,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;oBAC3B,KAAK,CAAC,MAAM,EAAE,CAAC;iBAChB;YACH,CAAC,CAAC,CAAC;SACJ;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;CACF;AAzJD,gDAyJC","file":"view-navigation-base.js","sourcesContent":["import { isNil, isString } from '@visactor/vutils';\nimport type {\n FilterDataTarget,\n IBaseInteractionOptions,\n IComponent,\n IDataFilter,\n IDatazoom,\n IMark,\n IScale,\n IScrollbar,\n IView,\n InteractionEvent,\n ViewNavigationBaseOptions,\n ViewNavigationRange,\n ViewStateByDim\n} from '../types';\nimport { BaseInteraction } from './base';\nimport { ComponentEnum, DataFilterRank, GrammarMarkType } from '../graph/enums';\nimport { getScaleRangeRatio } from '../util/scale';\n\nexport abstract class ViewNavigationBase<\n T extends ViewNavigationBaseOptions & IBaseInteractionOptions\n> extends BaseInteraction<T> {\n options: T;\n\n protected _state: Partial<Record<'x' | 'y', ViewStateByDim>>;\n protected _inited?: boolean;\n protected _dataFilterX: IDataFilter;\n protected _dataFilterY: IDataFilter;\n\n constructor(view: IView, options?: T) {\n super(view, options);\n this.options = options;\n }\n\n protected _parseLinkedComponent(option: string | IDatazoom | IScrollbar): IDatazoom | IScrollbar {\n if (!option) {\n return null;\n }\n const comp: IMark = isString(option) ? this.view.getMarkById(option) : option;\n\n if (\n comp &&\n comp.markType === GrammarMarkType.component &&\n ((comp as IComponent).componentType === ComponentEnum.datazoom ||\n (comp as IComponent).componentType === ComponentEnum.scrollbar)\n ) {\n return comp as IDatazoom | IScrollbar;\n }\n\n return null;\n }\n\n protected _initStateByDim(\n dim: 'x' | 'y',\n linkedComponent?: string | IDatazoom | IScrollbar,\n scale?: string | IScale,\n dataTarget?: FilterDataTarget\n ) {\n const comp = this._parseLinkedComponent(linkedComponent);\n\n if (comp) {\n this._state[dim] = { linkedComponent: comp };\n return;\n }\n\n const scaleGrammar = !isNil(scale) ? (isString(scale) ? this.view.getScaleById(scale) : scale) : null;\n const dataGrammar = !isNil(dataTarget?.data)\n ? isString(dataTarget.data)\n ? this.view.getDataById(dataTarget.data)\n : dataTarget.data\n : null;\n\n if (!scaleGrammar || !dataGrammar) {\n this._state[dim] = { data: dataGrammar, scale: scaleGrammar };\n return;\n }\n\n dataGrammar.attach(scaleGrammar);\n\n const filterByScale = isString(dataTarget.filter)\n ? (datum: any, filterValue: number[]) => {\n const scale = scaleGrammar.getScale();\n const ratio = getScaleRangeRatio(scale, datum[dataTarget.filter as string]);\n\n return ratio >= filterValue[0] && ratio <= filterValue[1];\n }\n : dataTarget.filter;\n const dataFilter = {\n source: `${scaleGrammar.uid}`,\n rank: DataFilterRank.normal,\n filter: (data: any[]) => {\n const filterValue = dim === 'x' ? this._state?.x?.filterValue : this._state?.y?.filterValue;\n if (!filterValue) {\n return data;\n }\n const filteredData = data.filter(datum => filterByScale(datum, filterValue));\n return dataTarget.transform ? dataTarget.transform(filteredData, filterValue) : filteredData;\n }\n };\n\n if (dim === 'x') {\n this._dataFilterX = dataFilter;\n } else {\n this._dataFilterY = dataFilter;\n }\n\n dataGrammar.addDataFilter(dataFilter);\n\n this._state[dim] = { data: dataGrammar, scale: scaleGrammar };\n }\n\n protected _initGrammars() {\n const { enableX, enableY, scaleX, scaleY, dataTargetX, dataTargetY, linkedComponentX, linkedComponentY } =\n this.options;\n\n this._state = {};\n\n if (enableX !== false) {\n this._initStateByDim('x', linkedComponentX, scaleX, dataTargetX);\n }\n\n if (enableY !== false) {\n this._initStateByDim('y', linkedComponentY, scaleY, dataTargetY);\n }\n\n this._inited = true;\n }\n\n protected _updateLinkedComponent(comp: IDatazoom | IScrollbar, newRange: [number, number]) {\n if (comp.componentType === ComponentEnum.datazoom) {\n (comp as IDatazoom).setStartEndValue(newRange[0], newRange[1]);\n } else {\n // fix: need to update range scrollbar\n (comp as IScrollbar).setScrollStart(newRange[0]);\n }\n }\n\n updateView(type: 'start' | 'reset' | 'update' | 'end', newRange: ViewNavigationRange, e?: InteractionEvent) {\n if (newRange?.x && this._state?.x?.linkedComponent) {\n this._updateLinkedComponent(this._state.x.linkedComponent, newRange.x);\n }\n\n if (newRange?.y && this._state?.y?.linkedComponent) {\n this._updateLinkedComponent(this._state.y.linkedComponent, newRange.y);\n }\n\n if (newRange?.needUpdate) {\n this.view.runAsync();\n }\n\n this.dispatchEvent(type, { viewRange: newRange, event: e });\n }\n\n unbind() {\n super.unbind();\n\n if (this._state) {\n Object.keys(this._state).forEach(dim => {\n const { data, scale } = this._state[dim as 'x' | 'y'];\n\n if (data && scale) {\n data.detach(scale);\n data.removeDataFilter(dim === 'x' ? this._dataFilterX : this._dataFilterY);\n } else if (scale) {\n scale.setRangeFactor(null);\n scale.commit();\n }\n });\n }\n\n this._state = null;\n }\n}\n"]}