@visactor/vgrammar-core 0.11.0-alpha.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/cjs/component/label.js.map +1 -1
  2. package/cjs/graph/animation/animator.js +3 -4
  3. package/cjs/graph/animation/animator.js.map +1 -1
  4. package/cjs/graph/attributes/line.d.ts +2 -0
  5. package/cjs/graph/attributes/line.js +38 -5
  6. package/cjs/graph/attributes/line.js.map +1 -1
  7. package/cjs/graph/element.js +15 -6
  8. package/cjs/graph/element.js.map +1 -1
  9. package/cjs/graph/enums.d.ts +2 -1
  10. package/cjs/graph/enums.js +1 -1
  11. package/cjs/graph/enums.js.map +1 -1
  12. package/cjs/index.d.ts +1 -1
  13. package/cjs/index.js +1 -1
  14. package/cjs/index.js.map +1 -1
  15. package/cjs/interactions/brush-filter.js +1 -2
  16. package/cjs/interactions/crosshair.js +2 -2
  17. package/cjs/interactions/crosshair.js.map +1 -1
  18. package/cjs/interactions/dimension-tooltip.js +2 -2
  19. package/cjs/interactions/dimension-tooltip.js.map +1 -1
  20. package/cjs/interactions/element-active.js +2 -2
  21. package/cjs/interactions/element-active.js.map +1 -1
  22. package/cjs/interactions/element-highlight-by-group.js +4 -3
  23. package/cjs/interactions/element-highlight-by-group.js.map +1 -1
  24. package/cjs/interactions/element-highlight-by-key.js +2 -2
  25. package/cjs/interactions/element-highlight-by-key.js.map +1 -1
  26. package/cjs/interactions/element-highlight-by-name.js +2 -2
  27. package/cjs/interactions/element-highlight-by-name.js.map +1 -1
  28. package/cjs/interactions/element-highlight.d.ts +5 -2
  29. package/cjs/interactions/element-highlight.js +10 -25
  30. package/cjs/interactions/element-highlight.js.map +1 -1
  31. package/cjs/interactions/element-select.d.ts +6 -3
  32. package/cjs/interactions/element-select.js +26 -34
  33. package/cjs/interactions/element-select.js.map +1 -1
  34. package/cjs/interactions/filter.js +1 -1
  35. package/cjs/interactions/filter.js.map +1 -1
  36. package/cjs/interactions/fish-eye.js +3 -3
  37. package/cjs/interactions/fish-eye.js.map +1 -1
  38. package/cjs/interactions/index.js +5 -2
  39. package/cjs/interactions/index.js.map +1 -1
  40. package/cjs/interactions/legend-filter.js +1 -1
  41. package/cjs/interactions/player-filter.js +1 -1
  42. package/cjs/interactions/roll-up.js +3 -3
  43. package/cjs/interactions/roll-up.js.map +1 -1
  44. package/cjs/interactions/scrollbar-filter.js +1 -1
  45. package/cjs/interactions/slider-filter.js +1 -1
  46. package/cjs/interactions/toggle-state-mixin.d.ts +8 -0
  47. package/cjs/interactions/toggle-state-mixin.js +30 -0
  48. package/cjs/interactions/toggle-state-mixin.js.map +1 -0
  49. package/cjs/interactions/tooltip.js +3 -3
  50. package/cjs/interactions/tooltip.js.map +1 -1
  51. package/cjs/interactions/utils.d.ts +2 -1
  52. package/cjs/interactions/utils.js +14 -1
  53. package/cjs/interactions/utils.js.map +1 -1
  54. package/cjs/interactions/view-navigation-base.js +1 -1
  55. package/cjs/interactions/view-navigation-base.js.map +1 -1
  56. package/cjs/interactions/view-roam.js +3 -3
  57. package/cjs/interactions/view-roam.js.map +1 -1
  58. package/cjs/interactions/view-zoom.js +2 -2
  59. package/cjs/interactions/view-zoom.js.map +1 -1
  60. package/cjs/parse/coordinate.js +1 -1
  61. package/cjs/parse/event.js +1 -1
  62. package/cjs/parse/mark.js +1 -1
  63. package/cjs/parse/option.js +1 -1
  64. package/cjs/parse/scale.js +2 -1
  65. package/cjs/parse/transform.js +1 -1
  66. package/cjs/parse/util.js +1 -1
  67. package/cjs/parse/view.js +1 -1
  68. package/cjs/transforms/data/sampling.js.map +1 -1
  69. package/cjs/types/dataflow.d.ts +1 -2
  70. package/cjs/types/dataflow.js.map +1 -1
  71. package/cjs/types/grammar.d.ts +0 -1
  72. package/cjs/types/grammar.js.map +1 -1
  73. package/cjs/types/interaction.d.ts +14 -10
  74. package/cjs/types/interaction.js.map +1 -1
  75. package/cjs/types/mark.d.ts +1 -1
  76. package/cjs/types/mark.js.map +1 -1
  77. package/cjs/types/plot.d.ts +0 -1
  78. package/cjs/types/plot.js.map +1 -1
  79. package/cjs/types/transform.d.ts +1 -1
  80. package/cjs/types/transform.js.map +1 -1
  81. package/cjs/types/view.d.ts +2 -5
  82. package/cjs/types/view.js.map +1 -1
  83. package/cjs/util/data.d.ts +0 -1
  84. package/cjs/util/data.js +1 -37
  85. package/cjs/util/data.js.map +1 -1
  86. package/cjs/view/View.d.ts +2 -10
  87. package/cjs/view/View.js +20 -103
  88. package/cjs/view/View.js.map +1 -1
  89. package/cjs/view/data.d.ts +1 -2
  90. package/cjs/view/data.js +7 -49
  91. package/cjs/view/data.js.map +1 -1
  92. package/cjs/view/dataflow.d.ts +1 -6
  93. package/cjs/view/dataflow.js +7 -72
  94. package/cjs/view/dataflow.js.map +1 -1
  95. package/cjs/view/grammar-base.d.ts +3 -6
  96. package/cjs/view/grammar-base.js +0 -46
  97. package/cjs/view/grammar-base.js.map +1 -1
  98. package/cjs/view/mark.d.ts +1 -2
  99. package/cjs/view/mark.js +9 -38
  100. package/cjs/view/mark.js.map +1 -1
  101. package/es/component/label.js.map +1 -1
  102. package/es/graph/animation/animator.js +2 -3
  103. package/es/graph/animation/animator.js.map +1 -1
  104. package/es/graph/attributes/line.d.ts +2 -0
  105. package/es/graph/attributes/line.js +34 -5
  106. package/es/graph/attributes/line.js.map +1 -1
  107. package/es/graph/element.js +17 -8
  108. package/es/graph/element.js.map +1 -1
  109. package/es/graph/enums.d.ts +2 -1
  110. package/es/graph/enums.js +1 -1
  111. package/es/graph/enums.js.map +1 -1
  112. package/es/index.d.ts +1 -1
  113. package/es/index.js +1 -1
  114. package/es/index.js.map +1 -1
  115. package/es/interactions/crosshair.js +2 -2
  116. package/es/interactions/crosshair.js.map +1 -1
  117. package/es/interactions/dimension-tooltip.js +2 -2
  118. package/es/interactions/dimension-tooltip.js.map +1 -1
  119. package/es/interactions/element-active.js +2 -2
  120. package/es/interactions/element-active.js.map +1 -1
  121. package/es/interactions/element-highlight-by-group.js +2 -2
  122. package/es/interactions/element-highlight-by-group.js.map +1 -1
  123. package/es/interactions/element-highlight-by-key.js +2 -2
  124. package/es/interactions/element-highlight-by-key.js.map +1 -1
  125. package/es/interactions/element-highlight-by-name.js +2 -2
  126. package/es/interactions/element-highlight-by-name.js.map +1 -1
  127. package/es/interactions/element-highlight.d.ts +5 -2
  128. package/es/interactions/element-highlight.js +11 -24
  129. package/es/interactions/element-highlight.js.map +1 -1
  130. package/es/interactions/element-select.d.ts +6 -3
  131. package/es/interactions/element-select.js +25 -31
  132. package/es/interactions/element-select.js.map +1 -1
  133. package/es/interactions/filter.js +1 -1
  134. package/es/interactions/filter.js.map +1 -1
  135. package/es/interactions/fish-eye.js +3 -3
  136. package/es/interactions/fish-eye.js.map +1 -1
  137. package/es/interactions/index.js +4 -2
  138. package/es/interactions/index.js.map +1 -1
  139. package/es/interactions/roll-up.js +2 -2
  140. package/es/interactions/roll-up.js.map +1 -1
  141. package/es/interactions/toggle-state-mixin.d.ts +8 -0
  142. package/es/interactions/toggle-state-mixin.js +22 -0
  143. package/es/interactions/toggle-state-mixin.js.map +1 -0
  144. package/es/interactions/tooltip.js +2 -2
  145. package/es/interactions/tooltip.js.map +1 -1
  146. package/es/interactions/utils.d.ts +2 -1
  147. package/es/interactions/utils.js +12 -1
  148. package/es/interactions/utils.js.map +1 -1
  149. package/es/interactions/view-navigation-base.js +1 -1
  150. package/es/interactions/view-navigation-base.js.map +1 -1
  151. package/es/interactions/view-roam.js +3 -3
  152. package/es/interactions/view-roam.js.map +1 -1
  153. package/es/interactions/view-zoom.js +2 -2
  154. package/es/interactions/view-zoom.js.map +1 -1
  155. package/es/transforms/data/sampling.js.map +1 -1
  156. package/es/types/dataflow.d.ts +1 -2
  157. package/es/types/dataflow.js.map +1 -1
  158. package/es/types/grammar.d.ts +0 -1
  159. package/es/types/grammar.js.map +1 -1
  160. package/es/types/interaction.d.ts +14 -10
  161. package/es/types/interaction.js.map +1 -1
  162. package/es/types/mark.d.ts +1 -1
  163. package/es/types/mark.js.map +1 -1
  164. package/es/types/plot.d.ts +0 -1
  165. package/es/types/plot.js.map +1 -1
  166. package/es/types/transform.d.ts +1 -1
  167. package/es/types/transform.js.map +1 -1
  168. package/es/types/view.d.ts +2 -5
  169. package/es/types/view.js.map +1 -1
  170. package/es/util/data.d.ts +0 -1
  171. package/es/util/data.js +0 -34
  172. package/es/util/data.js.map +1 -1
  173. package/es/view/View.d.ts +2 -10
  174. package/es/view/View.js +19 -103
  175. package/es/view/View.js.map +1 -1
  176. package/es/view/data.d.ts +1 -2
  177. package/es/view/data.js +8 -49
  178. package/es/view/data.js.map +1 -1
  179. package/es/view/dataflow.d.ts +1 -6
  180. package/es/view/dataflow.js +7 -72
  181. package/es/view/dataflow.js.map +1 -1
  182. package/es/view/grammar-base.d.ts +3 -6
  183. package/es/view/grammar-base.js +0 -45
  184. package/es/view/grammar-base.js.map +1 -1
  185. package/es/view/mark.d.ts +1 -2
  186. package/es/view/mark.js +8 -39
  187. package/es/view/mark.js.map +1 -1
  188. package/package.json +6 -6
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.ElementHighlight = void 0;
6
6
 
7
- const enums_1 = require("../graph/enums"), base_1 = require("./base");
7
+ const enums_1 = require("../graph/enums"), base_1 = require("./base"), utils_1 = require("./utils");
8
8
 
9
9
  class ElementHighlight extends base_1.BaseInteraction {
10
10
  constructor(view, options) {
@@ -12,47 +12,32 @@ 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;
16
- if (this._lastElement && this._hasBlur) this._lastElement.removeState(highlightState),
17
- this._lastElement.addState(blurState), e.element.removeState(blurState), hasHighlight = e.element.addState(highlightState); else {
18
- let hasBlur = !1;
19
- this._marks.forEach((mark => {
20
- mark.elements.forEach((el => {
21
- el === e.element ? (el.removeState(blurState), hasHighlight = el.addState(highlightState)) : (el.removeState(highlightState),
22
- hasBlur = el.addState(blurState), hasBlur && (this._hasBlur = !0));
23
- }));
24
- }));
25
- }
26
- this._lastElement = e.element, hasHighlight && this.dispatchEvent("start", {
15
+ this._statedElements = [ e.element ], this.updateStates(highlightState, blurState),
16
+ this._lastElement = e.element, this.dispatchEvent("start", {
27
17
  elements: [ e.element ],
28
18
  options: this.options
29
19
  });
30
20
  } else this._lastElement && this.clearPrevElements();
31
21
  }, this.handleReset = e => {
32
22
  e.element && this._marks && this._marks.includes(e.element.mark) && this.clearPrevElements();
33
- }, this.options = Object.assign({}, ElementHighlight.defaultOptions, options), this._marks = view.getMarksBySelector(this.options.selector);
23
+ }, this.options = Object.assign({}, ElementHighlight.defaultOptions, options), this._marks = view.getMarksBySelector(this.options.selector),
24
+ this._stateMarks = (0, utils_1.groupMarksByState)(this._marks, [ this.options.highlightState, this.options.blurState ]);
34
25
  }
35
26
  getEvents() {
36
27
  return [ {
37
28
  type: this.options.trigger,
38
29
  handler: this.handleStart
39
30
  }, {
40
- type: this.options.resetTrigger,
31
+ type: this.options.triggerOff,
41
32
  handler: this.handleReset
42
33
  } ];
43
34
  }
44
35
  clearPrevElements() {
45
36
  const {highlightState: highlightState, blurState: blurState} = this.options;
46
- let hasReset = !1;
47
- const resetElements = [];
48
- this._marks.forEach((mark => {
49
- mark.elements.forEach((el => {
50
- hasReset = el.removeState(highlightState), el.removeState(blurState), hasReset && resetElements.push(el);
51
- }));
52
- })), resetElements.length && this.dispatchEvent("reset", {
53
- elements: resetElements,
37
+ this._lastElement && (this.clearAllStates(highlightState, blurState), this.dispatchEvent("reset", {
38
+ elements: [ this._lastElement ],
54
39
  options: this.options
55
- }), this._lastElement = null, this._hasBlur = !1;
40
+ }), this._lastElement = null);
56
41
  }
57
42
  }
58
43
 
@@ -61,6 +46,6 @@ ElementHighlight.defaultOptions = {
61
46
  highlightState: enums_1.InteractionStateEnum.highlight,
62
47
  blurState: enums_1.InteractionStateEnum.blur,
63
48
  trigger: "pointerover",
64
- resetTrigger: "pointerout"
49
+ triggerOff: "pointerout"
65
50
  };
66
51
  //# sourceMappingURL=element-highlight.js.map
@@ -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, 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"]}
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 {\n ElementHighlightOptions,\n IElement,\n IGlyphElement,\n IMark,\n IToggleStateMixin,\n IView,\n InteractionEvent\n} from '../types';\nimport { BaseInteraction } from './base';\nimport { groupMarksByState } from './utils';\n\nexport interface ElementHighlight extends IToggleStateMixin, BaseInteraction<ElementHighlightOptions> {}\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 triggerOff: 'pointerout'\n };\n options: ElementHighlightOptions;\n protected _marks?: IMark[];\n protected _stateMarks: Record<string, IMark[]>;\n protected _lastElement?: IElement;\n protected _statedElements?: (IElement | IGlyphElement)[];\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 this._stateMarks = groupMarksByState(this._marks, [this.options.highlightState, this.options.blurState]);\n }\n\n protected getEvents() {\n return [\n {\n type: this.options.trigger,\n handler: this.handleStart\n },\n { type: this.options.triggerOff, handler: this.handleReset }\n ];\n }\n\n clearPrevElements() {\n const { highlightState, blurState } = this.options;\n\n if (this._lastElement) {\n this.clearAllStates(highlightState, blurState);\n\n this.dispatchEvent('reset', { elements: [this._lastElement], options: this.options });\n\n this._lastElement = null;\n }\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 this._statedElements = [e.element];\n\n this.updateStates(highlightState, blurState);\n\n this._lastElement = e.element;\n\n this.dispatchEvent('start', { elements: [e.element], options: this.options });\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,19 +1,22 @@
1
- import type { ElementSelectOptions, EventType, IMark, IView, InteractionEvent } from '../types';
1
+ import type { ElementSelectOptions, EventType, IElement, IGlyphElement, IMark, IToggleStateMixin, IView, InteractionEvent } from '../types';
2
2
  import { BaseInteraction } from './base';
3
+ export interface ElementSelect extends IToggleStateMixin, BaseInteraction<ElementSelectOptions> {
4
+ }
3
5
  export declare class ElementSelect extends BaseInteraction<ElementSelectOptions> {
4
6
  static type: string;
5
7
  type: string;
6
8
  static defaultOptions: ElementSelectOptions;
7
9
  protected _resetType?: 'view' | 'self' | 'timeout';
8
10
  protected _marks?: IMark[];
11
+ protected _stateMarks: Record<string, IMark[]>;
9
12
  private _timer?;
10
- private _hasSelected?;
13
+ protected _statedElements?: (IElement | IGlyphElement)[];
11
14
  constructor(view: IView, options?: ElementSelectOptions);
12
15
  protected getEvents(): {
13
16
  type: EventType | EventType[];
14
17
  handler: (e: InteractionEvent) => void;
15
18
  }[];
16
- clearPrevElements: (isMultiple?: boolean, isActive?: boolean) => void;
19
+ clearPrevElements: () => void;
17
20
  handleStart: (e: InteractionEvent) => void;
18
21
  handleReset: (e: InteractionEvent) => void;
19
22
  }
@@ -4,53 +4,45 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.ElementSelect = void 0;
6
6
 
7
- const vutils_1 = require("@visactor/vutils"), enums_1 = require("../graph/enums"), base_1 = require("./base");
7
+ const vutils_1 = require("@visactor/vutils"), enums_1 = require("../graph/enums"), base_1 = require("./base"), utils_1 = require("./utils");
8
8
 
9
9
  class ElementSelect extends base_1.BaseInteraction {
10
10
  constructor(view, options) {
11
- super(view, options), this.type = ElementSelect.type, this.clearPrevElements = (isMultiple, isActive) => {
11
+ super(view, options), this.type = ElementSelect.type, this.clearPrevElements = () => {
12
12
  const {state: state, reverseState: reverseState} = this.options;
13
- if (!isActive && !this._hasSelected) return;
14
- let res;
15
- const elements = [];
16
- this._hasSelected = !1, this._marks.forEach((mark => {
17
- mark.elements.forEach((el => {
18
- isMultiple || (res = el.removeState(state), res && !isActive && elements.push(el)),
19
- reverseState && (isActive ? el.addState(reverseState) : el.removeState(reverseState));
20
- }));
21
- })), elements.length && this.dispatchEvent("reset", {
22
- elements: elements,
13
+ this._statedElements && this._statedElements.length && (this.clearAllStates(state, reverseState),
14
+ this.dispatchEvent("reset", {
15
+ elements: this._statedElements,
23
16
  options: this.options
24
- });
17
+ }), this._statedElements = []);
25
18
  }, this.handleStart = e => {
26
- const {state: state, reverseState: reverseState} = this.options;
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();
19
+ const {state: state, reverseState: reverseState, isMultiple: isMultiple} = this.options;
20
+ e.element && this._marks && this._marks.includes(e.element.mark) ? e.element.hasState(state) ? "self" === this._resetType && (this._statedElements && (this._statedElements = this._statedElements.filter((el => el !== e.element))),
21
+ this.updateStates(state, reverseState)) : (this._timer && clearTimeout(this._timer),
22
+ e.element.addState(state), this._statedElements || (this._statedElements = []),
23
+ isMultiple ? this._statedElements.push(e.element) : this._statedElements[0] = e.element,
24
+ this.updateStates(state, reverseState), this.dispatchEvent("start", {
25
+ elements: this._statedElements,
26
+ options: this.options
27
+ }), "timeout" === this._resetType && (this._timer = setTimeout((() => {
28
+ this.clearPrevElements();
29
+ }), this.options.triggerOff))) : "view" === this._resetType && this._statedElements && this._statedElements.length && this.clearPrevElements();
39
30
  }, this.handleReset = e => {
40
31
  const hasActiveElement = e.element && this._marks && this._marks.includes(e.element.mark);
41
- this._hasSelected && ("view" !== this._resetType || hasActiveElement ? "self" === this._resetType && hasActiveElement && this.clearPrevElements() : this.clearPrevElements());
42
- }, this.options = Object.assign({}, ElementSelect.defaultOptions, options), this._marks = view.getMarksBySelector(this.options.selector);
32
+ this._statedElements && this._statedElements.length && ("view" !== this._resetType || hasActiveElement ? "self" === this._resetType && hasActiveElement && this.clearPrevElements() : this.clearPrevElements());
33
+ }, this.options = Object.assign({}, ElementSelect.defaultOptions, options), this._marks = view.getMarksBySelector(this.options.selector),
34
+ this._stateMarks = (0, utils_1.groupMarksByState)(this._marks, [ this.options.state, this.options.reverseState ]);
43
35
  }
44
36
  getEvents() {
45
- const resetTrigger = this.options.resetTrigger, trigger = this.options.trigger, events = [ {
37
+ const triggerOff = this.options.triggerOff, trigger = this.options.trigger, events = [ {
46
38
  type: trigger,
47
39
  handler: this.handleStart
48
40
  } ];
49
- let eventName = resetTrigger;
50
- return "empty" === resetTrigger ? (eventName = trigger, this._resetType = "view") : (0,
51
- vutils_1.isString)(resetTrigger) ? resetTrigger.includes("view:") ? (eventName = resetTrigger.replace("view:", ""),
52
- this._resetType = "view") : (eventName = resetTrigger, this._resetType = "self") : (0,
53
- vutils_1.isNumber)(resetTrigger) ? (eventName = null, this._resetType = "timeout") : this._resetType = null,
41
+ let eventName = triggerOff;
42
+ return "empty" === triggerOff ? (eventName = trigger, this._resetType = "view") : (0,
43
+ vutils_1.isString)(triggerOff) ? triggerOff.includes("view:") ? (eventName = triggerOff.replace("view:", ""),
44
+ this._resetType = "view") : (eventName = triggerOff, this._resetType = "self") : (0,
45
+ vutils_1.isNumber)(triggerOff) ? (eventName = null, this._resetType = "timeout") : this._resetType = null,
54
46
  eventName && eventName !== trigger && events.push({
55
47
  type: eventName,
56
48
  handler: this.handleReset
@@ -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 {\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
+ {"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 IToggleStateMixin,\n IView,\n InteractionEvent\n} from '../types';\nimport { BaseInteraction } from './base';\nimport { groupMarksByState } from './utils';\n\nexport interface ElementSelect extends IToggleStateMixin, BaseInteraction<ElementSelectOptions> {}\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 protected _stateMarks: Record<string, IMark[]>;\n private _timer?: number;\n protected _statedElements?: (IElement | IGlyphElement)[];\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 this._stateMarks = groupMarksByState(this._marks, [this.options.state, this.options.reverseState]);\n }\n\n protected getEvents() {\n const triggerOff = this.options.triggerOff;\n const trigger = this.options.trigger;\n\n const events = [\n {\n type: trigger,\n handler: this.handleStart\n }\n ];\n\n let eventName = triggerOff;\n\n if (triggerOff === 'empty') {\n eventName = trigger as EventType;\n\n this._resetType = 'view';\n } else if (isString(triggerOff)) {\n if (triggerOff.includes('view:')) {\n eventName = triggerOff.replace('view:', '') as EventType;\n\n this._resetType = 'view';\n } else {\n eventName = triggerOff;\n\n this._resetType = 'self';\n }\n } else if (isNumber(triggerOff)) {\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 = () => {\n const { state, reverseState } = this.options;\n\n if (this._statedElements && this._statedElements.length) {\n this.clearAllStates(state, reverseState);\n this.dispatchEvent('reset', { elements: this._statedElements, options: this.options });\n\n this._statedElements = [];\n }\n };\n\n handleStart = (e: InteractionEvent) => {\n const { state, reverseState, isMultiple } = this.options;\n\n if (e.element && this._marks && this._marks.includes(e.element.mark)) {\n if (e.element.hasState(state)) {\n if (this._resetType === 'self') {\n if (this._statedElements) {\n this._statedElements = this._statedElements.filter(el => el !== e.element);\n }\n\n this.updateStates(state, reverseState);\n }\n } else {\n if (this._timer) {\n clearTimeout(this._timer);\n }\n e.element.addState(state);\n\n if (!this._statedElements) {\n this._statedElements = [];\n }\n if (isMultiple) {\n this._statedElements.push(e.element);\n } else {\n this._statedElements[0] = e.element;\n }\n this.updateStates(state, reverseState);\n this.dispatchEvent('start', { elements: this._statedElements, options: this.options });\n\n if (this._resetType === 'timeout') {\n this._timer = setTimeout(() => {\n this.clearPrevElements();\n }, this.options.triggerOff as number) as unknown as number;\n }\n }\n } else if (this._resetType === 'view' && this._statedElements && this._statedElements.length) {\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._statedElements || !this._statedElements.length) {\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"]}
@@ -12,7 +12,7 @@ class FilterMixin {
12
12
  return dataGrammar && (this.handleFilter = event => {
13
13
  const element = null == event ? void 0 : event.element;
14
14
  dataGrammar && (!source || element && element.mark === source) && (getFilterValue && (this._filterValue = getFilterValue(event)),
15
- dataGrammar.commit(), this.view.runAsync());
15
+ dataGrammar.commit(), this.view.run());
16
16
  }, this._dataFilter = {
17
17
  source: source ? `${source.uid}` : null,
18
18
  rank: filterRank,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interactions/filter.ts"],"names":[],"mappings":";;;AACA,iCAAyC;AACzC,6CAA4C;AAW5C,MAAa,WAAW;IACtB,WAAW,CACT,IAAW,EACX,MAAoB,EACpB,UAAkB,EAClB,cAAmC,EACnC,MAAkD,EAClD,SAAmD;QAEnD,MAAM,WAAW,GAAG,IAAA,iBAAQ,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACxE,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,YAAY,GAAG,CAAC,KAAuB,EAAE,EAAE;gBAC9C,MAAM,OAAO,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAC;gBAC/B,IAAI,CAAC,WAAW,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,EAAE;oBACrE,OAAO;iBACR;gBACD,IAAI,cAAc,EAAE;oBAClB,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;iBAC3C;gBACD,WAAW,CAAC,MAAM,EAAE,CAAC;gBACrB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACvB,CAAC,CAAC;YAEF,IAAI,CAAC,WAAW,GAAG;gBACjB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI;gBACvC,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,CAAC,IAAW,EAAE,EAAE;oBACtB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;wBACtB,OAAO,IAAI,CAAC;qBACb;oBACD,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBAC5F,OAAO,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;gBAC/E,CAAC;aACF,CAAC;YACF,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SAC7C;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAtCD,kCAsCC;AAMD,MAAsB,MAAO,SAAQ,sBAAkC;IAIrE,YAAY,IAAW,EAAE,OAA2B;QAClD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrB,IAAI,OAAO,CAAC,MAAM,EAAE;YAClB,IAAI,CAAC,KAAK,GAAG,IAAA,iBAAQ,EAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;SAC1G;IACH,CAAC;;AATH,wBAUC;AATQ,qBAAc,GAAsC,EAAE,CAAC","file":"filter.js","sourcesContent":["import type { DataFilterOptions, IData, IDataFilter, IMark, IView, InteractionEvent } from '../types';\nimport { BaseInteraction } from './base';\nimport { isString } from '@visactor/vutils';\n\nexport interface FilterMixin {\n view: IView;\n _data?: IData;\n _marks?: IMark[];\n _filterValue: any;\n _dataFilter: IDataFilter;\n handleFilter: (event?: InteractionEvent) => void;\n}\n\nexport class FilterMixin {\n _filterData(\n data: IData,\n source: IMark | null,\n filterRank: number,\n getFilterValue: (event: any) => any,\n filter?: (data: any[], parameters: any) => boolean,\n transform?: (data: any[], parameters: any) => any[]\n ) {\n const dataGrammar = isString(data) ? this.view.getDataById(data) : data;\n if (dataGrammar) {\n this.handleFilter = (event: InteractionEvent) => {\n const element = event?.element;\n if (!dataGrammar || (source && (!element || element.mark !== source))) {\n return;\n }\n if (getFilterValue) {\n this._filterValue = getFilterValue(event);\n }\n dataGrammar.commit();\n this.view.runAsync();\n };\n\n this._dataFilter = {\n source: source ? `${source.uid}` : null,\n rank: filterRank,\n filter: (data: any[]) => {\n if (!this._filterValue) {\n return data;\n }\n const filteredData = filter ? data.filter(datum => filter(datum, this._filterValue)) : data;\n return transform ? transform(filteredData, this._filterValue) : filteredData;\n }\n };\n dataGrammar.addDataFilter(this._dataFilter);\n }\n return this;\n }\n}\n\nexport interface Filter\n extends Pick<FilterMixin, '_data' | '_marks' | '_filterValue' | '_dataFilter' | 'handleFilter' | '_filterData'>,\n BaseInteraction<DataFilterOptions> {}\n\nexport abstract class Filter extends BaseInteraction<DataFilterOptions> {\n static defaultOptions: Omit<DataFilterOptions, 'target'> = {};\n options: DataFilterOptions;\n\n constructor(view: IView, options?: DataFilterOptions) {\n super(view, options);\n if (options.target) {\n this._data = isString(options.target.data) ? view.getDataById(options.target.data) : options.target.data;\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/interactions/filter.ts"],"names":[],"mappings":";;;AACA,iCAAyC;AACzC,6CAA4C;AAW5C,MAAa,WAAW;IACtB,WAAW,CACT,IAAW,EACX,MAAoB,EACpB,UAAkB,EAClB,cAAmC,EACnC,MAAkD,EAClD,SAAmD;QAEnD,MAAM,WAAW,GAAG,IAAA,iBAAQ,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACxE,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,YAAY,GAAG,CAAC,KAAuB,EAAE,EAAE;gBAC9C,MAAM,OAAO,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAC;gBAC/B,IAAI,CAAC,WAAW,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,EAAE;oBACrE,OAAO;iBACR;gBACD,IAAI,cAAc,EAAE;oBAClB,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;iBAC3C;gBACD,WAAW,CAAC,MAAM,EAAE,CAAC;gBACrB,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAClB,CAAC,CAAC;YAEF,IAAI,CAAC,WAAW,GAAG;gBACjB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI;gBACvC,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,CAAC,IAAW,EAAE,EAAE;oBACtB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;wBACtB,OAAO,IAAI,CAAC;qBACb;oBACD,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBAC5F,OAAO,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;gBAC/E,CAAC;aACF,CAAC;YACF,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SAC7C;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAtCD,kCAsCC;AAMD,MAAsB,MAAO,SAAQ,sBAAkC;IAIrE,YAAY,IAAW,EAAE,OAA2B;QAClD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrB,IAAI,OAAO,CAAC,MAAM,EAAE;YAClB,IAAI,CAAC,KAAK,GAAG,IAAA,iBAAQ,EAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;SAC1G;IACH,CAAC;;AATH,wBAUC;AATQ,qBAAc,GAAsC,EAAE,CAAC","file":"filter.js","sourcesContent":["import type { DataFilterOptions, IData, IDataFilter, IMark, IView, InteractionEvent } from '../types';\nimport { BaseInteraction } from './base';\nimport { isString } from '@visactor/vutils';\n\nexport interface FilterMixin {\n view: IView;\n _data?: IData;\n _marks?: IMark[];\n _filterValue: any;\n _dataFilter: IDataFilter;\n handleFilter: (event?: InteractionEvent) => void;\n}\n\nexport class FilterMixin {\n _filterData(\n data: IData,\n source: IMark | null,\n filterRank: number,\n getFilterValue: (event: any) => any,\n filter?: (data: any[], parameters: any) => boolean,\n transform?: (data: any[], parameters: any) => any[]\n ) {\n const dataGrammar = isString(data) ? this.view.getDataById(data) : data;\n if (dataGrammar) {\n this.handleFilter = (event: InteractionEvent) => {\n const element = event?.element;\n if (!dataGrammar || (source && (!element || element.mark !== source))) {\n return;\n }\n if (getFilterValue) {\n this._filterValue = getFilterValue(event);\n }\n dataGrammar.commit();\n this.view.run();\n };\n\n this._dataFilter = {\n source: source ? `${source.uid}` : null,\n rank: filterRank,\n filter: (data: any[]) => {\n if (!this._filterValue) {\n return data;\n }\n const filteredData = filter ? data.filter(datum => filter(datum, this._filterValue)) : data;\n return transform ? transform(filteredData, this._filterValue) : filteredData;\n }\n };\n dataGrammar.addDataFilter(this._dataFilter);\n }\n return this;\n }\n}\n\nexport interface Filter\n extends Pick<FilterMixin, '_data' | '_marks' | '_filterValue' | '_dataFilter' | 'handleFilter' | '_filterData'>,\n BaseInteraction<DataFilterOptions> {}\n\nexport abstract class Filter extends BaseInteraction<DataFilterOptions> {\n static defaultOptions: Omit<DataFilterOptions, 'target'> = {};\n options: DataFilterOptions;\n\n constructor(view: IView, options?: DataFilterOptions) {\n super(view, options);\n if (options.target) {\n this._data = isString(options.target.data) ? view.getDataById(options.target.data) : options.target.data;\n }\n }\n}\n"]}
@@ -20,7 +20,7 @@ class FishEye extends base_1.BaseInteraction {
20
20
  y: e.canvasY
21
21
  }, e);
22
22
  }, this.handleEnd = e => {
23
- e && (this.options.shouldEnd ? this.options.shouldEnd(e) : this.shouldHandle(e)) && !this.options.resetTrigger && this._isActive && (this._isActive = !1,
23
+ e && (this.options.shouldEnd ? this.options.shouldEnd(e) : this.shouldHandle(e)) && !this.options.triggerOff && this._isActive && (this._isActive = !1,
24
24
  this.updateView(null, e));
25
25
  }, this.handleReset = e => {
26
26
  e && (this.options.shouldReset ? this.options.shouldReset(e) : this.shouldHandle(e)) && this._isActive && (this.updateView(null, e),
@@ -39,7 +39,7 @@ class FishEye extends base_1.BaseInteraction {
39
39
  type: this.options.endTrigger,
40
40
  handler: this.handleEnd
41
41
  }, {
42
- type: this.options.resetTrigger,
42
+ type: this.options.triggerOff,
43
43
  handler: this.handleReset
44
44
  } ];
45
45
  }
@@ -73,7 +73,7 @@ class FishEye extends base_1.BaseInteraction {
73
73
  const dimState = this._state[dim];
74
74
  dimState.scale && !(0, vutils_1.isNil)(dimState.focus) && (needUpdate = !0, dimState.focus = null,
75
75
  dimState.scale.setFishEye(null), dimState.scale.commit());
76
- })), needUpdate && this.view.runSync();
76
+ })), needUpdate && this.view.run();
77
77
  }
78
78
  shouldHandle(e) {
79
79
  var _a, _b, _c;
@@ -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\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.triggerOff, 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.run();\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.triggerOff && 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"]}
@@ -220,6 +220,8 @@ Object.defineProperty(exports, "FishEye", {
220
220
  }
221
221
  });
222
222
 
223
+ const toggle_state_mixin_1 = require("./toggle-state-mixin");
224
+
223
225
  var base_tooltip_1 = require("./base-tooltip");
224
226
 
225
227
  Object.defineProperty(exports, "BaseTooltip", {
@@ -263,12 +265,14 @@ const registerElementActive = () => {
263
265
  exports.registerElementActive = registerElementActive;
264
266
 
265
267
  const registerElementSelect = () => {
268
+ (0, vutils_1.mixin)(element_select_1.ElementSelect, toggle_state_mixin_1.ToggleStateMixin),
266
269
  factory_1.Factory.registerInteraction(element_select_1.ElementSelect.type, element_select_1.ElementSelect);
267
270
  };
268
271
 
269
272
  exports.registerElementSelect = registerElementSelect;
270
273
 
271
274
  const registerElementHighlight = () => {
275
+ (0, vutils_1.mixin)(element_highlight_1.ElementHighlight, toggle_state_mixin_1.ToggleStateMixin),
272
276
  factory_1.Factory.registerInteraction(element_highlight_1.ElementHighlight.type, element_highlight_1.ElementHighlight);
273
277
  };
274
278
 
@@ -383,5 +387,4 @@ const registerFishEye = () => {
383
387
  factory_1.Factory.registerInteraction(fish_eye_1.FishEye.type, fish_eye_1.FishEye);
384
388
  };
385
389
 
386
- exports.registerFishEye = registerFishEye;
387
- //# sourceMappingURL=index.js.map
390
+ exports.registerFishEye = registerFishEye;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interactions/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { Factory } from '../core/factory';\nimport { ElementActive } from './element-active';\nimport { ElementSelect } from './element-select';\nimport { ElementHighlight } from './element-highlight';\nimport { ElementHighlightByKey } from './element-highlight-by-key';\nimport { ElementHighlightByGroup } from './element-highlight-by-group';\nimport { ElementActiveByLegend } from './element-active-by-legend';\nimport { ElementHighlightByLegend } from './element-highlight-by-legend';\nimport { ElementHighlightByName } from './element-highlight-by-name';\nimport { BrushHighlight } from './brush-highlight';\nimport { BrushActive } from './brush-active';\nimport { BrushFilter } from './brush-filter';\nimport { DrillDown } from './drill-down';\nimport { RollUp } from './roll-up';\nimport { Tooltip } from './tooltip';\nimport { DimensionTooltip } from './dimension-tooltip';\nimport { Crosshair } from './crosshair';\nimport { FilterMixin } from './filter';\nimport { ViewZoom } from './view-zoom';\nimport { ViewScroll } from './view-scroll';\nimport { ViewDrag } from './view-drag';\nimport { mixin } from '@visactor/vutils';\nimport { ViewZoomMixin } from './view-zoom-mixin';\nimport { ViewScrollMixin } from './view-scroll-mixin';\nimport { ViewDragMixin } from './view-drag-mixin';\nimport { ViewRoam } from './view-roam';\nimport { FishEye } from './fish-eye';\n\nexport { BaseTooltip } from './base-tooltip';\nexport { BaseInteraction } from './base';\nexport { BrushBase } from './brush-base';\nexport { ViewNavigationBase } from './view-navigation-base';\nexport {\n ElementActive,\n ElementSelect,\n ElementHighlight,\n ElementHighlightByKey,\n ElementHighlightByGroup,\n ElementActiveByLegend,\n ElementHighlightByLegend,\n ElementHighlightByName,\n BrushHighlight,\n BrushActive,\n DrillDown,\n RollUp,\n Tooltip,\n DimensionTooltip,\n Crosshair,\n FilterMixin,\n ViewZoom,\n ViewScroll,\n ViewDrag,\n ViewRoam,\n ViewScrollMixin,\n ViewZoomMixin,\n ViewDragMixin,\n FishEye\n};\n\nexport const registerElementActive = () => {\n Factory.registerInteraction(ElementActive.type, ElementActive);\n};\n\nexport const registerElementSelect = () => {\n Factory.registerInteraction(ElementSelect.type, ElementSelect);\n};\n\nexport const registerElementHighlight = () => {\n Factory.registerInteraction(ElementHighlight.type, ElementHighlight);\n};\n\nexport const registerElementHighlightByKey = () => {\n Factory.registerInteraction(ElementHighlightByKey.type, ElementHighlightByKey);\n};\n\nexport const registerElementHighlightByGroup = () => {\n Factory.registerInteraction(ElementHighlightByGroup.type, ElementHighlightByGroup);\n};\n\nexport const registerElementActiveByLegend = () => {\n Factory.registerInteraction(ElementActiveByLegend.type, ElementActiveByLegend);\n};\n\nexport const registerElementHighlightByLegend = () => {\n Factory.registerInteraction(ElementHighlightByLegend.type, ElementHighlightByLegend);\n};\n\nexport const registerElementHighlightByName = () => {\n Factory.registerInteraction(ElementHighlightByName.type, ElementHighlightByName);\n};\n\nexport const registerBrushHighlight = () => {\n Factory.registerInteraction(BrushHighlight.type, BrushHighlight);\n};\n\nexport const registerBrushActive = () => {\n Factory.registerInteraction(BrushActive.type, BrushActive);\n};\n\nexport const registerBrushFilter = () => {\n mixin(BrushFilter, FilterMixin);\n Factory.registerInteraction(BrushFilter.type, BrushFilter);\n};\n\nexport const registerDrillDown = () => {\n mixin(DrillDown, FilterMixin);\n Factory.registerInteraction(DrillDown.type, DrillDown);\n};\n\nexport const registerRollUp = () => {\n Factory.registerInteraction(RollUp.type, RollUp);\n};\n\nexport const registerTooltip = () => {\n Factory.registerInteraction(Tooltip.type, Tooltip);\n};\n\nexport const registerDimensionTooltip = () => {\n Factory.registerInteraction(DimensionTooltip.type, DimensionTooltip);\n};\n\nexport const registerCrosshair = () => {\n Factory.registerInteraction(Crosshair.type, Crosshair);\n};\nexport const registerViewZoom = () => {\n mixin(ViewZoom, ViewZoomMixin);\n Factory.registerInteraction(ViewZoom.type, ViewZoom);\n};\n\nexport const registerViewScroll = () => {\n mixin(ViewScroll, ViewScrollMixin);\n Factory.registerInteraction(ViewScroll.type, ViewScroll);\n};\n\nexport const registerViewDrag = () => {\n mixin(ViewDrag, ViewDragMixin);\n Factory.registerInteraction(ViewDrag.type, ViewDrag);\n};\n\nexport const registerViewRoam = () => {\n mixin(ViewRoam, ViewZoomMixin);\n mixin(ViewRoam, ViewDragMixin);\n mixin(ViewRoam, ViewScrollMixin);\n Factory.registerInteraction(ViewRoam.type, ViewRoam);\n};\n\nexport const registerFishEye = () => {\n Factory.registerInteraction(FishEye.type, FishEye);\n};\n"]}
1
+ {"version":3,"sources":["../src/interactions/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { Factory } from '../core/factory';\nimport { ElementActive } from './element-active';\nimport { ElementSelect } from './element-select';\nimport { ElementHighlight } from './element-highlight';\nimport { ElementHighlightByKey } from './element-highlight-by-key';\nimport { ElementHighlightByGroup } from './element-highlight-by-group';\nimport { ElementActiveByLegend } from './element-active-by-legend';\nimport { ElementHighlightByLegend } from './element-highlight-by-legend';\nimport { ElementHighlightByName } from './element-highlight-by-name';\nimport { BrushHighlight } from './brush-highlight';\nimport { BrushActive } from './brush-active';\nimport { BrushFilter } from './brush-filter';\nimport { DrillDown } from './drill-down';\nimport { RollUp } from './roll-up';\nimport { Tooltip } from './tooltip';\nimport { DimensionTooltip } from './dimension-tooltip';\nimport { Crosshair } from './crosshair';\nimport { FilterMixin } from './filter';\nimport { ViewZoom } from './view-zoom';\nimport { ViewScroll } from './view-scroll';\nimport { ViewDrag } from './view-drag';\nimport { mixin } from '@visactor/vutils';\nimport { ViewZoomMixin } from './view-zoom-mixin';\nimport { ViewScrollMixin } from './view-scroll-mixin';\nimport { ViewDragMixin } from './view-drag-mixin';\nimport { ViewRoam } from './view-roam';\nimport { FishEye } from './fish-eye';\nimport { ToggleStateMixin } from './toggle-state-mixin';\n\nexport { BaseTooltip } from './base-tooltip';\nexport { BaseInteraction } from './base';\nexport { BrushBase } from './brush-base';\nexport { ViewNavigationBase } from './view-navigation-base';\nexport {\n ElementActive,\n ElementSelect,\n ElementHighlight,\n ElementHighlightByKey,\n ElementHighlightByGroup,\n ElementActiveByLegend,\n ElementHighlightByLegend,\n ElementHighlightByName,\n BrushHighlight,\n BrushActive,\n DrillDown,\n RollUp,\n Tooltip,\n DimensionTooltip,\n Crosshair,\n FilterMixin,\n ViewZoom,\n ViewScroll,\n ViewDrag,\n ViewRoam,\n ViewScrollMixin,\n ViewZoomMixin,\n ViewDragMixin,\n FishEye\n};\n\nexport const registerElementActive = () => {\n Factory.registerInteraction(ElementActive.type, ElementActive);\n};\n\nexport const registerElementSelect = () => {\n mixin(ElementSelect, ToggleStateMixin);\n Factory.registerInteraction(ElementSelect.type, ElementSelect);\n};\n\nexport const registerElementHighlight = () => {\n mixin(ElementHighlight, ToggleStateMixin);\n Factory.registerInteraction(ElementHighlight.type, ElementHighlight);\n};\n\nexport const registerElementHighlightByKey = () => {\n Factory.registerInteraction(ElementHighlightByKey.type, ElementHighlightByKey);\n};\n\nexport const registerElementHighlightByGroup = () => {\n Factory.registerInteraction(ElementHighlightByGroup.type, ElementHighlightByGroup);\n};\n\nexport const registerElementActiveByLegend = () => {\n Factory.registerInteraction(ElementActiveByLegend.type, ElementActiveByLegend);\n};\n\nexport const registerElementHighlightByLegend = () => {\n Factory.registerInteraction(ElementHighlightByLegend.type, ElementHighlightByLegend);\n};\n\nexport const registerElementHighlightByName = () => {\n Factory.registerInteraction(ElementHighlightByName.type, ElementHighlightByName);\n};\n\nexport const registerBrushHighlight = () => {\n Factory.registerInteraction(BrushHighlight.type, BrushHighlight);\n};\n\nexport const registerBrushActive = () => {\n Factory.registerInteraction(BrushActive.type, BrushActive);\n};\n\nexport const registerBrushFilter = () => {\n mixin(BrushFilter, FilterMixin);\n Factory.registerInteraction(BrushFilter.type, BrushFilter);\n};\n\nexport const registerDrillDown = () => {\n mixin(DrillDown, FilterMixin);\n Factory.registerInteraction(DrillDown.type, DrillDown);\n};\n\nexport const registerRollUp = () => {\n Factory.registerInteraction(RollUp.type, RollUp);\n};\n\nexport const registerTooltip = () => {\n Factory.registerInteraction(Tooltip.type, Tooltip);\n};\n\nexport const registerDimensionTooltip = () => {\n Factory.registerInteraction(DimensionTooltip.type, DimensionTooltip);\n};\n\nexport const registerCrosshair = () => {\n Factory.registerInteraction(Crosshair.type, Crosshair);\n};\nexport const registerViewZoom = () => {\n mixin(ViewZoom, ViewZoomMixin);\n Factory.registerInteraction(ViewZoom.type, ViewZoom);\n};\n\nexport const registerViewScroll = () => {\n mixin(ViewScroll, ViewScrollMixin);\n Factory.registerInteraction(ViewScroll.type, ViewScroll);\n};\n\nexport const registerViewDrag = () => {\n mixin(ViewDrag, ViewDragMixin);\n Factory.registerInteraction(ViewDrag.type, ViewDrag);\n};\n\nexport const registerViewRoam = () => {\n mixin(ViewRoam, ViewZoomMixin);\n mixin(ViewRoam, ViewDragMixin);\n mixin(ViewRoam, ViewScrollMixin);\n Factory.registerInteraction(ViewRoam.type, ViewRoam);\n};\n\nexport const registerFishEye = () => {\n Factory.registerInteraction(FishEye.type, FishEye);\n};\n"]}
@@ -30,4 +30,4 @@ class LegendFilter extends filter_1.Filter {
30
30
  }
31
31
 
32
32
  exports.LegendFilter = LegendFilter, LegendFilter.type = "legend-filter", LegendFilter.defaultOptions = {};
33
- //# sourceMappingURL=legend-filter.js.map
33
+ //# sourceMappingURL=legend-filter.js.map
@@ -29,4 +29,4 @@ class PlayerFilter extends filter_1.Filter {
29
29
  }
30
30
 
31
31
  exports.PlayerFilter = PlayerFilter, PlayerFilter.type = "player-filter", PlayerFilter.defaultOptions = {};
32
- //# sourceMappingURL=player-filter.js.map
32
+ //# sourceMappingURL=player-filter.js.map
@@ -32,7 +32,7 @@ class RollUp extends filter_1.Filter {
32
32
  const events = [ {
33
33
  type: this.options.trigger,
34
34
  handler: this.handleStart
35
- } ], eventName = "empty" === this.options.resetTrigger ? this.options.trigger : this.options.resetTrigger.includes("view:") ? this.options.resetTrigger.replace("view:", "") : this.options.resetTrigger;
35
+ } ], eventName = "empty" === this.options.triggerOff ? this.options.trigger : this.options.triggerOff.includes("view:") ? this.options.triggerOff.replace("view:", "") : this.options.triggerOff;
36
36
  return eventName !== this.options.trigger ? (events.push({
37
37
  type: eventName,
38
38
  handler: this.handleReset
@@ -42,6 +42,6 @@ class RollUp extends filter_1.Filter {
42
42
 
43
43
  exports.RollUp = RollUp, RollUp.type = "roll-up", RollUp.defaultOptions = {
44
44
  trigger: "click",
45
- resetTrigger: "empty"
45
+ triggerOff: "empty"
46
46
  };
47
- //# sourceMappingURL=roll-up.js.map
47
+ //# sourceMappingURL=roll-up.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interactions/roll-up.ts"],"names":[],"mappings":"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","file":"roll-up.js","sourcesContent":["import type { EventType, IView, InteractionEvent, RollUpOptions } from '../types';\nimport { DataFilterRank } from '../graph/enums';\nimport { isArray, isString } from '@visactor/vutils';\nimport { Filter } from './filter';\n\nexport class RollUp extends Filter {\n static type: string = 'roll-up';\n type: string = RollUp.type;\n\n static defaultOptions: Omit<RollUpOptions, 'target'> = {\n trigger: 'click',\n resetTrigger: 'empty'\n };\n options: RollUpOptions;\n\n protected _isToggle: boolean = false;\n\n constructor(view: IView, options?: RollUpOptions) {\n super(view, options);\n this.options = Object.assign({}, RollUp.defaultOptions, options);\n\n this._marks = view.getMarksBySelector(this.options.source);\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._marks || this._marks.length === 0) {\n return [];\n }\n\n if (!this._data) {\n return [];\n }\n\n const transform = this.options.target.transform;\n\n const getFilterValue = (event: InteractionEvent) => event?.element?.getDatum?.();\n const dataTransform = (data: any[], filterValue: any) => {\n return transform(data, filterValue);\n };\n\n this._filterData(this._data, null, DataFilterRank.rollUp, getFilterValue, undefined, dataTransform);\n\n const events = [\n {\n type: this.options.trigger,\n handler: this.handleStart\n }\n ];\n\n const eventName =\n this.options.resetTrigger === 'empty'\n ? this.options.trigger\n : this.options.resetTrigger.includes('view:')\n ? this.options.resetTrigger.replace('view:', '')\n : this.options.resetTrigger;\n\n if (eventName !== this.options.trigger) {\n events.push({\n type: eventName as EventType,\n handler: this.handleReset\n });\n this._isToggle = false;\n } else {\n this._isToggle = true;\n }\n\n return events;\n }\n\n protected handleStart = (event: InteractionEvent) => {\n const element = event.element;\n if (element && this._marks && this._marks.includes(element.mark)) {\n const filterValue = event.element?.getDatum?.();\n\n const isEqualFilterValue =\n filterValue === this._filterData ||\n (isArray(filterValue) &&\n isArray(this._filterValue) &&\n filterValue.length === this._filterValue.length &&\n filterValue.every(datum => !this._filterValue.includes(datum)));\n\n if (isEqualFilterValue) {\n // reset filter value when toggle is enabled\n if (this._isToggle) {\n this._filterValue = null;\n this.handleFilter(event);\n }\n } else {\n this.handleFilter(event);\n }\n }\n };\n\n protected handleReset = (event: InteractionEvent) => {\n if (this._filterValue) {\n this._filterValue = null;\n this.handleFilter(event);\n }\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/interactions/roll-up.ts"],"names":[],"mappings":"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","file":"roll-up.js","sourcesContent":["import type { EventType, IView, InteractionEvent, RollUpOptions } from '../types';\nimport { DataFilterRank } from '../graph/enums';\nimport { isArray, isString } from '@visactor/vutils';\nimport { Filter } from './filter';\n\nexport class RollUp extends Filter {\n static type: string = 'roll-up';\n type: string = RollUp.type;\n\n static defaultOptions: Omit<RollUpOptions, 'target'> = {\n trigger: 'click',\n triggerOff: 'empty'\n };\n options: RollUpOptions;\n\n protected _isToggle: boolean = false;\n\n constructor(view: IView, options?: RollUpOptions) {\n super(view, options);\n this.options = Object.assign({}, RollUp.defaultOptions, options);\n\n this._marks = view.getMarksBySelector(this.options.source);\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._marks || this._marks.length === 0) {\n return [];\n }\n\n if (!this._data) {\n return [];\n }\n\n const transform = this.options.target.transform;\n\n const getFilterValue = (event: InteractionEvent) => event?.element?.getDatum?.();\n const dataTransform = (data: any[], filterValue: any) => {\n return transform(data, filterValue);\n };\n\n this._filterData(this._data, null, DataFilterRank.rollUp, getFilterValue, undefined, dataTransform);\n\n const events = [\n {\n type: this.options.trigger,\n handler: this.handleStart\n }\n ];\n\n const eventName =\n this.options.triggerOff === 'empty'\n ? this.options.trigger\n : this.options.triggerOff.includes('view:')\n ? this.options.triggerOff.replace('view:', '')\n : this.options.triggerOff;\n\n if (eventName !== this.options.trigger) {\n events.push({\n type: eventName as EventType,\n handler: this.handleReset\n });\n this._isToggle = false;\n } else {\n this._isToggle = true;\n }\n\n return events;\n }\n\n protected handleStart = (event: InteractionEvent) => {\n const element = event.element;\n if (element && this._marks && this._marks.includes(element.mark)) {\n const filterValue = event.element?.getDatum?.();\n\n const isEqualFilterValue =\n filterValue === this._filterData ||\n (isArray(filterValue) &&\n isArray(this._filterValue) &&\n filterValue.length === this._filterValue.length &&\n filterValue.every(datum => !this._filterValue.includes(datum)));\n\n if (isEqualFilterValue) {\n // reset filter value when toggle is enabled\n if (this._isToggle) {\n this._filterValue = null;\n this.handleFilter(event);\n }\n } else {\n this.handleFilter(event);\n }\n }\n };\n\n protected handleReset = (event: InteractionEvent) => {\n if (this._filterValue) {\n this._filterValue = null;\n this.handleFilter(event);\n }\n };\n}\n"]}
@@ -51,4 +51,4 @@ class ScrollbarFilter extends filter_1.Filter {
51
51
 
52
52
  exports.ScrollbarFilter = ScrollbarFilter, ScrollbarFilter.type = "scrollbar-filter",
53
53
  ScrollbarFilter.defaultOptions = {};
54
- //# sourceMappingURL=scrollbar-filter.js.map
54
+ //# sourceMappingURL=scrollbar-filter.js.map
@@ -29,4 +29,4 @@ class SliderFilter extends filter_1.Filter {
29
29
  }
30
30
 
31
31
  exports.SliderFilter = SliderFilter, SliderFilter.type = "slider-filter", SliderFilter.defaultOptions = {};
32
- //# sourceMappingURL=slider-filter.js.map
32
+ //# sourceMappingURL=slider-filter.js.map
@@ -0,0 +1,8 @@
1
+ import type { IElement, IGlyphElement, IMark, IToggleStateMixin } from '../types';
2
+ export declare class ToggleStateMixin implements IToggleStateMixin {
3
+ protected _statedElements?: (IElement | IGlyphElement)[];
4
+ protected _marks?: IMark[];
5
+ protected _stateMarks: Record<string, IMark[]>;
6
+ updateStates(state?: string, reverseState?: string): void;
7
+ clearAllStates(state?: string, reverseState?: string): void;
8
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.ToggleStateMixin = void 0;
6
+
7
+ class ToggleStateMixin {
8
+ updateStates(state, reverseState) {
9
+ this._marks.forEach((mark => {
10
+ const hasReverse = reverseState && this._stateMarks[reverseState] && this._stateMarks[reverseState].includes(mark), hasState = state && this._stateMarks[state] && this._stateMarks[state].includes(mark);
11
+ (hasReverse || hasState) && mark.elements.forEach((el => {
12
+ this._statedElements && this._statedElements.includes(el) ? (hasState && el.addState(state),
13
+ hasReverse && el.removeState(reverseState)) : (hasState && el.removeState(state),
14
+ hasReverse && el.addState(reverseState));
15
+ }));
16
+ }));
17
+ }
18
+ clearAllStates(state, reverseState) {
19
+ this._statedElements && this._statedElements.length && this._marks.forEach((mark => {
20
+ reverseState && this._stateMarks[reverseState] && this._stateMarks[reverseState].includes(mark) && mark.elements.forEach((el => {
21
+ el.removeState(reverseState);
22
+ })), state && this._stateMarks[state] && this._stateMarks[state].includes(mark) && mark.elements.forEach((el => {
23
+ el.removeState(state);
24
+ }));
25
+ }));
26
+ }
27
+ }
28
+
29
+ exports.ToggleStateMixin = ToggleStateMixin;
30
+ //# sourceMappingURL=toggle-state-mixin.js.map