@visactor/vgrammar-core 0.12.6 → 0.12.8-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/cjs/core/factory.d.ts +0 -1
  2. package/cjs/core/factory.js +0 -3
  3. package/cjs/core/factory.js.map +1 -1
  4. package/cjs/graph/animation/attribute.js +11 -15
  5. package/cjs/graph/animation/attribute.js.map +1 -1
  6. package/cjs/graph/canvas-renderer.js +1 -2
  7. package/cjs/graph/canvas-renderer.js.map +1 -1
  8. package/cjs/graph/element.d.ts +2 -2
  9. package/cjs/graph/element.js +7 -1
  10. package/cjs/graph/element.js.map +1 -1
  11. package/cjs/index.d.ts +1 -1
  12. package/cjs/index.js +1 -1
  13. package/cjs/index.js.map +1 -1
  14. package/cjs/interactions/base-tooltip.js +1 -4
  15. package/cjs/interactions/base-tooltip.js.map +1 -1
  16. package/cjs/interactions/base.js +4 -4
  17. package/cjs/interactions/base.js.map +1 -1
  18. package/cjs/interactions/brush-base.js +2 -4
  19. package/cjs/interactions/brush-base.js.map +1 -1
  20. package/cjs/interactions/crosshair.d.ts +2 -5
  21. package/cjs/interactions/crosshair.js +2 -4
  22. package/cjs/interactions/crosshair.js.map +1 -1
  23. package/cjs/interactions/dimension-tooltip.d.ts +2 -5
  24. package/cjs/interactions/element-active.d.ts +1 -1
  25. package/cjs/interactions/element-highlight-by-group.d.ts +1 -1
  26. package/cjs/interactions/element-highlight-by-key.d.ts +1 -1
  27. package/cjs/interactions/element-highlight-by-name.d.ts +2 -5
  28. package/cjs/interactions/element-select.js +2 -2
  29. package/cjs/interactions/element-select.js.map +1 -1
  30. package/cjs/interactions/tooltip.d.ts +2 -5
  31. package/cjs/interactions/view-drag.d.ts +0 -1
  32. package/cjs/interactions/view-drag.js +7 -7
  33. package/cjs/interactions/view-drag.js.map +1 -1
  34. package/cjs/interactions/view-navigation-base.d.ts +2 -2
  35. package/cjs/interactions/view-navigation-base.js +8 -11
  36. package/cjs/interactions/view-navigation-base.js.map +1 -1
  37. package/cjs/interactions/view-roam.d.ts +0 -3
  38. package/cjs/interactions/view-roam.js +8 -12
  39. package/cjs/interactions/view-roam.js.map +1 -1
  40. package/cjs/interactions/view-scroll.d.ts +0 -1
  41. package/cjs/interactions/view-scroll.js +3 -4
  42. package/cjs/interactions/view-scroll.js.map +1 -1
  43. package/cjs/interactions/view-utils.js +3 -8
  44. package/cjs/interactions/view-utils.js.map +1 -1
  45. package/cjs/interactions/view-zoom-mixin.js +3 -7
  46. package/cjs/interactions/view-zoom-mixin.js.map +1 -1
  47. package/cjs/interactions/view-zoom.d.ts +1 -2
  48. package/cjs/interactions/view-zoom.js +6 -6
  49. package/cjs/interactions/view-zoom.js.map +1 -1
  50. package/cjs/types/element.d.ts +2 -2
  51. package/cjs/types/element.js.map +1 -1
  52. package/cjs/types/interaction.d.ts +9 -13
  53. package/cjs/types/interaction.js.map +1 -1
  54. package/cjs/view/View.js +2 -3
  55. package/cjs/view/View.js.map +1 -1
  56. package/cjs/view/animate.js +3 -5
  57. package/cjs/view/animate.js.map +1 -1
  58. package/cjs/view/component.js +2 -5
  59. package/cjs/view/component.js.map +1 -1
  60. package/cjs/view/group.d.ts +1 -4
  61. package/cjs/view/group.js +4 -45
  62. package/cjs/view/group.js.map +1 -1
  63. package/cjs/view/mark.d.ts +3 -6
  64. package/cjs/view/mark.js +27 -20
  65. package/cjs/view/mark.js.map +1 -1
  66. package/es/core/factory.d.ts +0 -1
  67. package/es/core/factory.js +0 -3
  68. package/es/core/factory.js.map +1 -1
  69. package/es/graph/animation/attribute.js +11 -15
  70. package/es/graph/animation/attribute.js.map +1 -1
  71. package/es/graph/canvas-renderer.js +1 -2
  72. package/es/graph/canvas-renderer.js.map +1 -1
  73. package/es/graph/element.d.ts +2 -2
  74. package/es/graph/element.js +5 -1
  75. package/es/graph/element.js.map +1 -1
  76. package/es/index.d.ts +1 -1
  77. package/es/index.js +1 -1
  78. package/es/index.js.map +1 -1
  79. package/es/interactions/base-tooltip.js +1 -4
  80. package/es/interactions/base-tooltip.js.map +1 -1
  81. package/es/interactions/base.js +4 -4
  82. package/es/interactions/base.js.map +1 -1
  83. package/es/interactions/brush-base.js +2 -4
  84. package/es/interactions/brush-base.js.map +1 -1
  85. package/es/interactions/brush-filter.js +1 -2
  86. package/es/interactions/crosshair.d.ts +2 -5
  87. package/es/interactions/crosshair.js +2 -4
  88. package/es/interactions/crosshair.js.map +1 -1
  89. package/es/interactions/dimension-tooltip.d.ts +2 -5
  90. package/es/interactions/element-active.d.ts +1 -1
  91. package/es/interactions/element-highlight-by-group.d.ts +1 -1
  92. package/es/interactions/element-highlight-by-group.js +2 -1
  93. package/es/interactions/element-highlight-by-key.d.ts +1 -1
  94. package/es/interactions/element-highlight-by-name.d.ts +2 -5
  95. package/es/interactions/element-select.js +1 -2
  96. package/es/interactions/element-select.js.map +1 -1
  97. package/es/interactions/index.js +1 -2
  98. package/es/interactions/legend-filter.js +1 -1
  99. package/es/interactions/player-filter.js +1 -1
  100. package/es/interactions/roll-up.js +1 -1
  101. package/es/interactions/scrollbar-filter.js +1 -1
  102. package/es/interactions/slider-filter.js +1 -1
  103. package/es/interactions/toggle-state-mixin.js +1 -1
  104. package/es/interactions/tooltip.d.ts +2 -5
  105. package/es/interactions/tooltip.js +1 -1
  106. package/es/interactions/view-drag.d.ts +0 -1
  107. package/es/interactions/view-drag.js +7 -7
  108. package/es/interactions/view-drag.js.map +1 -1
  109. package/es/interactions/view-navigation-base.d.ts +2 -2
  110. package/es/interactions/view-navigation-base.js +9 -11
  111. package/es/interactions/view-navigation-base.js.map +1 -1
  112. package/es/interactions/view-roam.d.ts +0 -3
  113. package/es/interactions/view-roam.js +8 -12
  114. package/es/interactions/view-roam.js.map +1 -1
  115. package/es/interactions/view-scroll.d.ts +0 -1
  116. package/es/interactions/view-scroll.js +3 -4
  117. package/es/interactions/view-scroll.js.map +1 -1
  118. package/es/interactions/view-utils.js +3 -6
  119. package/es/interactions/view-utils.js.map +1 -1
  120. package/es/interactions/view-zoom-mixin.js +3 -7
  121. package/es/interactions/view-zoom-mixin.js.map +1 -1
  122. package/es/interactions/view-zoom.d.ts +1 -2
  123. package/es/interactions/view-zoom.js +6 -6
  124. package/es/interactions/view-zoom.js.map +1 -1
  125. package/es/parse/coordinate.js +1 -1
  126. package/es/parse/event.js +1 -1
  127. package/es/parse/mark.js +1 -1
  128. package/es/parse/option.js +1 -1
  129. package/es/parse/scale.js +2 -1
  130. package/es/parse/transform.js +1 -1
  131. package/es/parse/util.js +1 -1
  132. package/es/parse/view.js +1 -1
  133. package/es/types/element.d.ts +2 -2
  134. package/es/types/element.js.map +1 -1
  135. package/es/types/interaction.d.ts +9 -13
  136. package/es/types/interaction.js.map +1 -1
  137. package/es/view/View.js +2 -3
  138. package/es/view/View.js.map +1 -1
  139. package/es/view/animate.js +3 -5
  140. package/es/view/animate.js.map +1 -1
  141. package/es/view/component.js +2 -5
  142. package/es/view/component.js.map +1 -1
  143. package/es/view/group.d.ts +1 -4
  144. package/es/view/group.js +4 -48
  145. package/es/view/group.js.map +1 -1
  146. package/es/view/mark.d.ts +3 -6
  147. package/es/view/mark.js +28 -21
  148. package/es/view/mark.js.map +1 -1
  149. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interactions/view-roam.ts"],"names":[],"mappings":"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","file":"view-roam.js","sourcesContent":["import { merge, throttle } from '@visactor/vutils';\nimport type {\n ViewRoamOptions,\n IView,\n InteractionEvent,\n IScale,\n IData,\n IViewZoomMixin,\n IViewScrollMixin,\n IViewDragMixin,\n InteractionEventHandler\n} from '../types';\nimport { ViewNavigationBase } from './view-navigation-base';\n\nexport interface ViewRoam\n extends Pick<IViewDragMixin, 'handleDragStart' | 'handleDragEnd' | 'handleDragUpdate'>,\n Pick<IViewScrollMixin, 'formatScrollEvent' | 'handleScrollStart' | 'handleScrollEnd'>,\n Pick<\n IViewZoomMixin,\n 'formatZoomEvent' | 'handleZoomStart' | 'handleZoomEnd' | 'handleZoomReset' | 'updateZoomRange'\n >,\n ViewNavigationBase<ViewRoamOptions> {}\n\nexport class ViewRoam extends ViewNavigationBase<ViewRoamOptions> {\n static type: string = 'view-roam';\n type: string = ViewRoam.type;\n\n static defaultOptions: ViewRoamOptions = {\n zoom: {\n realtime: true,\n enable: true,\n focus: true,\n trigger: 'wheel',\n endTrigger: 'pointerup',\n triggerOff: 'dblclick',\n rate: 1\n },\n scroll: {\n realtime: true,\n enable: false,\n reversed: false,\n trigger: 'wheel',\n endTrigger: 'pointerup'\n },\n drag: {\n realtime: true,\n enable: true,\n reversed: false,\n trigger: 'pointerdown',\n updateTrigger: 'pointermove',\n endTrigger: 'pointerup'\n },\n throttle: 100\n };\n\n protected _inited?: boolean;\n protected _lastScale: number;\n protected _scaleX: IScale;\n protected _scaleY: IScale;\n protected _data: IData;\n protected handleRoamZoomStart: (e: InteractionEvent) => void;\n protected handleRoamDragUpdate: (e: InteractionEvent) => void;\n protected handleRoamScrollStart: (e: InteractionEvent) => void;\n protected _isDragStarted?: boolean;\n protected _isScrollStarted?: boolean;\n protected _isZoomStarted?: boolean;\n\n constructor(view: IView, option?: ViewRoamOptions) {\n super(view, merge({}, ViewRoam.defaultOptions, option));\n this.handleRoamZoomStart = throttle(this.handleRoamZoomStartInner, this.options.throttle);\n this.handleRoamDragUpdate = throttle(this.handleRoamDragUpdateInner, this.options.throttle);\n this.handleRoamScrollStart = throttle(this.handleRoamScrollStartInner, this.options.throttle);\n }\n\n protected getEvents() {\n const events: Array<{ type: string; handler: InteractionEventHandler }> = [];\n\n if (this.options.zoom?.enable) {\n this.options.zoom.trigger && events.push({ type: this.options.zoom.trigger, handler: this.handleRoamZoomStart });\n this.options.zoom.endTrigger &&\n events.push({ type: this.options.zoom.endTrigger, handler: this.handleRoamZoomEnd });\n this.options.zoom.triggerOff &&\n events.push({ type: this.options.zoom.triggerOff, handler: this.handleRoamZoomReset });\n }\n\n if (this.options.scroll?.enable) {\n this.options.scroll.trigger &&\n events.push({ type: this.options.scroll.trigger, handler: this.handleRoamScrollStart });\n this.options.scroll.trigger &&\n events.push({ type: this.options.scroll.endTrigger, handler: this.handleRoamScrollEnd });\n }\n\n if (this.options.drag?.enable) {\n this.options.drag.trigger && events.push({ type: this.options.drag.trigger, handler: this.handleRoamDragStart });\n this.options.drag.updateTrigger &&\n events.push({ type: this.options.drag.updateTrigger, handler: this.handleRoamDragUpdate });\n this.options.drag.endTrigger &&\n events.push({ type: this.options.drag.endTrigger, handler: this.handleRoamDragEnd });\n }\n\n return events;\n }\n\n handleRoamZoomStartInner = (e: InteractionEvent) => {\n this.formatZoomEvent(e);\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._isZoomStarted = true;\n\n this.updateView('start', this.handleZoomStart(e, this._state, this.options.zoom), 'zoom', e);\n };\n\n handleRoamZoomEnd = (e: InteractionEvent) => {\n if (!this._isZoomStarted) {\n return;\n }\n\n this.formatZoomEvent(e);\n if (!e || (this.options.shouldEnd && !this.options.shouldEnd(e))) {\n return;\n }\n\n this.updateView('end', this.handleZoomEnd(e, this._state, this.options.zoom), 'zoom', e);\n this._isZoomStarted = false;\n };\n\n handleRoamZoomReset = (e: InteractionEvent) => {\n if (!this._isZoomStarted || !e || (this.options.shouldReset && !this.options.shouldReset(e))) {\n return;\n }\n this.updateView('reset', this.handleZoomReset(e, this._state, this.options.zoom), 'zoom', e);\n this._isZoomStarted = false;\n };\n\n handleRoamDragStart = (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 this._isDragStarted = true;\n\n this.updateView('start', this.handleDragStart(e, this._state, this.options.drag), 'drag', e);\n };\n\n handleRoamDragUpdateInner = (e: InteractionEvent) => {\n if (!this._isDragStarted || !e || (this.options.shouldUpdate && !this.options.shouldUpdate(e))) {\n return;\n }\n this.updateView('update', this.handleDragUpdate(e, this._state, this.options.drag), 'drag', e);\n };\n\n handleRoamDragEnd = (e: InteractionEvent) => {\n if (!this._isDragStarted || !e || (this.options.shouldEnd && !this.options.shouldEnd(e))) {\n return;\n }\n\n this.updateView('end', this.handleDragEnd(e, this._state, this.options.drag), 'drag', e);\n this._isDragStarted = false;\n };\n\n handleRoamScrollStartInner = (e: InteractionEvent) => {\n this.formatScrollEvent(e);\n if (!e || (this.options.shouldStart && !this.options.shouldStart(e))) {\n return;\n }\n\n if (!this._inited) {\n this._initGrammars();\n }\n this._isScrollStarted = true;\n\n this.updateView('start', this.handleScrollStart(e, this._state, this.options.scroll), 'scroll', e);\n };\n\n handleRoamScrollEnd = (e: InteractionEvent) => {\n if (!this._isScrollStarted) {\n return;\n }\n\n this.formatScrollEvent(e);\n if (!e || (this.options.shouldEnd && !this.options.shouldEnd(e))) {\n return;\n }\n\n this.updateView('end', this.handleScrollEnd(e, this._state, this.options.scroll), 'scroll', e);\n this._isScrollStarted = true;\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/interactions/view-roam.ts"],"names":[],"mappings":"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","file":"view-roam.js","sourcesContent":["import { merge, throttle } from '@visactor/vutils';\nimport type {\n ViewRoamOptions,\n IView,\n InteractionEvent,\n IScale,\n IData,\n IViewZoomMixin,\n IViewScrollMixin,\n IViewDragMixin,\n InteractionEventHandler\n} from '../types';\nimport { ViewNavigationBase } from './view-navigation-base';\n\nexport interface ViewRoam\n extends Pick<IViewDragMixin, 'handleDragStart' | 'handleDragEnd' | 'handleDragUpdate'>,\n Pick<IViewScrollMixin, 'formatScrollEvent' | 'handleScrollStart' | 'handleScrollEnd'>,\n Pick<\n IViewZoomMixin,\n 'formatZoomEvent' | 'handleZoomStart' | 'handleZoomEnd' | 'handleZoomReset' | 'updateZoomRange'\n >,\n ViewNavigationBase<ViewRoamOptions> {}\n\nexport class ViewRoam extends ViewNavigationBase<ViewRoamOptions> {\n static type: string = 'view-roam';\n type: string = ViewRoam.type;\n\n static defaultOptions: ViewRoamOptions = {\n zoom: {\n realtime: true,\n enable: true,\n focus: true,\n trigger: 'wheel',\n endTrigger: 'pointerup',\n triggerOff: 'dblclick',\n rate: 1\n },\n scroll: {\n realtime: true,\n enable: false,\n reversed: false,\n trigger: 'wheel',\n endTrigger: 'pointerup'\n },\n drag: {\n realtime: true,\n enable: true,\n reversed: false,\n trigger: 'pointerdown',\n updateTrigger: 'pointermove',\n endTrigger: 'pointerup'\n },\n throttle: 100\n };\n\n protected _inited?: boolean;\n protected _lastScale: number;\n protected _scaleX: IScale;\n protected _scaleY: IScale;\n protected _data: IData;\n protected handleRoamZoomStart: (e: InteractionEvent) => void;\n protected handleRoamDragUpdate: (e: InteractionEvent) => void;\n protected handleRoamScrollStart: (e: InteractionEvent) => void;\n\n constructor(view: IView, option?: ViewRoamOptions) {\n super(view, merge({}, ViewRoam.defaultOptions, option));\n this.handleRoamZoomStart = throttle(this.handleRoamZoomStartInner, this.options.throttle);\n this.handleRoamDragUpdate = throttle(this.handleRoamDragUpdateInner, this.options.throttle);\n this.handleRoamScrollStart = throttle(this.handleRoamScrollStartInner, this.options.throttle);\n }\n\n protected getEvents() {\n const events: Array<{ type: string; handler: InteractionEventHandler }> = [];\n\n if (this.options.zoom?.enable) {\n this.options.zoom.trigger && events.push({ type: this.options.zoom.trigger, handler: this.handleRoamZoomStart });\n this.options.zoom.endTrigger &&\n events.push({ type: this.options.zoom.endTrigger, handler: this.handleRoamZoomEnd });\n this.options.zoom.triggerOff &&\n events.push({ type: this.options.zoom.triggerOff, handler: this.handleRoamZoomReset });\n }\n\n if (this.options.scroll?.enable) {\n this.options.scroll.trigger &&\n events.push({ type: this.options.scroll.trigger, handler: this.handleRoamScrollStart });\n this.options.scroll.trigger &&\n events.push({ type: this.options.scroll.endTrigger, handler: this.handleRoamScrollEnd });\n }\n\n if (this.options.drag?.enable) {\n this.options.drag.trigger && events.push({ type: this.options.drag.trigger, handler: this.handleRoamDragStart });\n this.options.drag.updateTrigger &&\n events.push({ type: this.options.drag.updateTrigger, handler: this.handleRoamDragUpdate });\n this.options.drag.endTrigger &&\n events.push({ type: this.options.drag.endTrigger, handler: this.handleRoamDragEnd });\n }\n\n return events;\n }\n\n handleRoamZoomStartInner = (e: InteractionEvent) => {\n this.formatZoomEvent(e);\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.handleZoomStart(e, this._state, this.options.zoom), e);\n };\n\n handleRoamZoomEnd = (e: InteractionEvent) => {\n this.formatZoomEvent(e);\n if (!e || (this.options.shouldEnd && !this.options.shouldEnd(e))) {\n return;\n }\n\n this.updateView('end', this.handleZoomEnd(e, this._state, this.options.zoom), e);\n };\n\n handleRoamZoomReset = (e: InteractionEvent) => {\n if (!e || (this.options.shouldReset && !this.options.shouldReset(e))) {\n return;\n }\n this.updateView('reset', this.handleZoomReset(e, this._state, this.options.zoom), e);\n };\n\n handleRoamDragStart = (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, this.options.drag), e);\n };\n\n handleRoamDragUpdateInner = (e: InteractionEvent) => {\n if (!e || (this.options.shouldUpdate && !this.options.shouldUpdate(e))) {\n return;\n }\n this.updateView('update', this.handleDragUpdate(e, this._state, this.options.drag), e);\n };\n\n handleRoamDragEnd = (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, this.options.drag), e);\n };\n\n handleRoamScrollStartInner = (e: InteractionEvent) => {\n this.formatScrollEvent(e);\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.handleScrollStart(e, this._state, this.options.scroll), e);\n };\n\n handleRoamScrollEnd = (e: InteractionEvent) => {\n this.formatScrollEvent(e);\n if (!e || (this.options.shouldEnd && !this.options.shouldEnd(e))) {\n return;\n }\n\n this.updateView('end', this.handleScrollEnd(e, this._state, this.options.scroll), e);\n };\n}\n"]}
@@ -6,7 +6,6 @@ export declare class ViewScroll extends ViewNavigationBase<ViewScrollOptions> {
6
6
  static type: string;
7
7
  type: string;
8
8
  static defaultOptions: ViewScrollOptions;
9
- protected _isStarted?: boolean;
10
9
  protected handleStart: (e: InteractionEvent) => void;
11
10
  constructor(view: IView, option?: ViewScrollOptions);
12
11
  protected getEvents(): {
@@ -6,11 +6,10 @@ export class ViewScroll extends ViewNavigationBase {
6
6
  constructor(view, option) {
7
7
  super(view, Object.assign({}, ViewScroll.defaultOptions, option)), this.type = ViewScroll.type,
8
8
  this.handleStartInner = e => {
9
- this.formatScrollEvent(e), !e || this.options.shouldStart && !this.options.shouldStart(e) || (this._isStarted = !0,
10
- this._inited || this._initGrammars(), this.updateView("start", this.handleScrollStart(e, this._state, this.options), "scroll", e));
9
+ this.formatScrollEvent(e), !e || this.options.shouldStart && !this.options.shouldStart(e) || (this._inited || this._initGrammars(),
10
+ this.updateView("start", this.handleScrollStart(e, this._state, this.options), e));
11
11
  }, this.handleEnd = e => {
12
- this._isStarted && (this.formatScrollEvent(e), !e || this.options.shouldEnd && !this.options.shouldEnd(e) || (this.updateView("end", this.handleScrollEnd(e, this._state, this.options), "scroll", e),
13
- this._isStarted = !1));
12
+ this.formatScrollEvent(e), !e || this.options.shouldEnd && !this.options.shouldEnd(e) || this.updateView("end", this.handleScrollEnd(e, this._state, this.options), e);
14
13
  }, this.handleStart = throttle(this.handleStartInner, this.options.throttle);
15
14
  }
16
15
  getEvents() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interactions/view-scroll.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAM5D,MAAM,OAAO,UAAW,SAAQ,kBAAqC;IAenE,YAAY,IAAW,EAAE,MAA0B;QACjD,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;QAdpE,SAAI,GAAW,UAAU,CAAC,IAAI,CAAC;QA0B/B,qBAAgB,GAAG,CAAC,CAAmB,EAAE,EAAE;YACxC,IAAoC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAC3D,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,UAAU,GAAG,IAAI,CAAC;YAEvB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBACjB,IAAI,CAAC,aAAa,EAAE,CAAC;aACtB;YAED,IAAI,CAAC,UAAU,CACb,OAAO,EACN,IAAoC,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,EACrF,QAAQ,EACR,CAAC,CACF,CAAC;QACJ,CAAC,CAAC;QAEF,cAAS,GAAG,CAAC,CAAmB,EAAE,EAAE;YAClC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACpB,OAAO;aACR;YAEA,IAAoC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAC3D,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,KAAK,EACJ,IAAoC,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,EACnF,QAAQ,EACR,CAAC,CACF,CAAC;YACF,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAC1B,CAAC,CAAC;QA/CA,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5E,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;SAC3D,CAAC;IACJ,CAAC;;AAzBM,eAAI,GAAW,aAAa,CAAC;AAG7B,yBAAc,GAAsB;IACzC,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,WAAW;IACvB,QAAQ,EAAE,GAAG;CACd,CAAC","file":"view-scroll.js","sourcesContent":["import { throttle } from '@visactor/vutils';\nimport type { ViewScrollOptions, IView, InteractionEvent, IViewScrollMixin } from '../types';\nimport { ViewNavigationBase } from './view-navigation-base';\n\nexport interface ViewScroll\n extends Pick<IViewScrollMixin, 'formatScrollEvent' | 'handleScrollStart' | 'handleScrollEnd'>,\n ViewNavigationBase<ViewScrollOptions> {}\n\nexport class ViewScroll extends ViewNavigationBase<ViewScrollOptions> {\n static type: string = 'view-scroll';\n type: string = ViewScroll.type;\n\n static defaultOptions: ViewScrollOptions = {\n realtime: true,\n reversed: false,\n trigger: 'wheel',\n endTrigger: 'pointerup',\n throttle: 100\n };\n\n protected _isStarted?: boolean;\n protected handleStart: (e: InteractionEvent) => void;\n\n constructor(view: IView, option?: ViewScrollOptions) {\n super(view, Object.assign({}, ViewScroll.defaultOptions, option));\n\n this.handleStart = throttle(this.handleStartInner, 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 ];\n }\n\n handleStartInner = (e: InteractionEvent) => {\n (this as unknown as IViewScrollMixin).formatScrollEvent(e);\n if (!e || (this.options.shouldStart && !this.options.shouldStart(e))) {\n return;\n }\n\n this._isStarted = true;\n\n if (!this._inited) {\n this._initGrammars();\n }\n\n this.updateView(\n 'start',\n (this as unknown as IViewScrollMixin).handleScrollStart(e, this._state, this.options),\n 'scroll',\n e\n );\n };\n\n handleEnd = (e: InteractionEvent) => {\n if (!this._isStarted) {\n return;\n }\n\n (this as unknown as IViewScrollMixin).formatScrollEvent(e);\n if (!e || (this.options.shouldEnd && !this.options.shouldEnd(e))) {\n return;\n }\n\n this.updateView(\n 'end',\n (this as unknown as IViewScrollMixin).handleScrollEnd(e, this._state, this.options),\n 'scroll',\n e\n );\n this._isStarted = false;\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/interactions/view-scroll.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAM5D,MAAM,OAAO,UAAW,SAAQ,kBAAqC;IAcnE,YAAY,IAAW,EAAE,MAA0B;QACjD,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;QAbpE,SAAI,GAAW,UAAU,CAAC,IAAI,CAAC;QAyB/B,qBAAgB,GAAG,CAAC,CAAmB,EAAE,EAAE;YACxC,IAAoC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAC3D,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,EAAG,IAAoC,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACrH,CAAC,CAAC;QAEF,cAAS,GAAG,CAAC,CAAmB,EAAE,EAAE;YACjC,IAAoC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAC3D,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,EAAG,IAAoC,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACjH,CAAC,CAAC;QA9BA,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5E,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;SAC3D,CAAC;IACJ,CAAC;;AAxBM,eAAI,GAAW,aAAa,CAAC;AAG7B,yBAAc,GAAsB;IACzC,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,WAAW;IACvB,QAAQ,EAAE,GAAG;CACd,CAAC","file":"view-scroll.js","sourcesContent":["import { throttle } from '@visactor/vutils';\nimport type { ViewScrollOptions, IView, InteractionEvent, IViewScrollMixin } from '../types';\nimport { ViewNavigationBase } from './view-navigation-base';\n\nexport interface ViewScroll\n extends Pick<IViewScrollMixin, 'formatScrollEvent' | 'handleScrollStart' | 'handleScrollEnd'>,\n ViewNavigationBase<ViewScrollOptions> {}\n\nexport class ViewScroll extends ViewNavigationBase<ViewScrollOptions> {\n static type: string = 'view-scroll';\n type: string = ViewScroll.type;\n\n static defaultOptions: ViewScrollOptions = {\n realtime: true,\n reversed: false,\n trigger: 'wheel',\n endTrigger: 'pointerup',\n throttle: 100\n };\n\n protected handleStart: (e: InteractionEvent) => void;\n\n constructor(view: IView, option?: ViewScrollOptions) {\n super(view, Object.assign({}, ViewScroll.defaultOptions, option));\n\n this.handleStart = throttle(this.handleStartInner, 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 ];\n }\n\n handleStartInner = (e: InteractionEvent) => {\n (this as unknown as IViewScrollMixin).formatScrollEvent(e);\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 as unknown as IViewScrollMixin).handleScrollStart(e, this._state, this.options), e);\n };\n\n handleEnd = (e: InteractionEvent) => {\n (this as unknown as IViewScrollMixin).formatScrollEvent(e);\n if (!e || (this.options.shouldEnd && !this.options.shouldEnd(e))) {\n return;\n }\n\n this.updateView('end', (this as unknown as IViewScrollMixin).handleScrollEnd(e, this._state, this.options), e);\n };\n}\n"]}
@@ -48,15 +48,12 @@ export const handleScrolling = (scrollPos, navState, scrollOptions) => {
48
48
  needUpdate: !1
49
49
  };
50
50
  return navState ? (Object.keys(navState).forEach((dim => {
51
- const {scale: scale, data: data, linkedComponent: linkedComponent, rangeFactor: rangeFactor, getCurrentRange: getCurrentRange} = navState[dim];
51
+ const {scale: scale, data: data, linkedComponent: linkedComponent, rangeFactor: rangeFactor, wholeScale: wholeScale} = navState[dim];
52
52
  if (linkedComponent) res[dim] = updateScrollRange(getRangeOfLinkedComponent(linkedComponent), getBoundsRangeOfLinkedComponent(linkedComponent, dim), scrollPos[dim], scrollOptions); else if (scale) {
53
- const innerScale = scale.getScale(), oldRange = scale.getRangeFactor() || rangeFactor, newRange = updateScrollRange(oldRange, innerScale.range(), scrollPos[dim], scrollOptions);
54
- newRange && (navState[dim].rangeFactor = newRange, data ? (navState[dim].filterValue = newRange,
53
+ const innerScale = scale.getScale(), newRange = updateScrollRange(rangeFactor, innerScale.range(), scrollPos[dim], scrollOptions);
54
+ newRange && (navState[dim].rangeFactor = newRange, data ? (navState[dim].filterValue = rangeFactor,
55
55
  data.commit()) : (scale.setRangeFactor(newRange), scale.commit()), res.needUpdate = !0,
56
56
  res[dim] = newRange);
57
- } else {
58
- const oldRange = (getCurrentRange ? getCurrentRange() : rangeFactor) || [ 0, 1 ], newRange = updateScrollRange(oldRange, [ 0, 1 ], scrollPos[dim], scrollOptions);
59
- res[dim] = newRange || oldRange;
60
57
  }
61
58
  })), res) : res;
62
59
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interactions/view-utils.ts"],"names":[],"mappings":"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","file":"view-utils.js","sourcesContent":["import { isContinuous, type IBaseScale } from '@visactor/vscale';\nimport { ComponentEnum } from '../graph/enums';\nimport type { IDatazoom, IScrollbar, ViewNavigationRange, ViewStateByDim } from '../types';\n\nexport const getRangeOfLinkedComponent = (comp: IDatazoom | IScrollbar): [number, number] => {\n if (comp.componentType === ComponentEnum.datazoom) {\n const res = (comp as IDatazoom).getStartEndValue();\n return res ? [res.start, res.end] : null;\n }\n\n return (comp as IScrollbar).getScrollRange();\n};\n\nexport const getBoundsRangeOfLinkedComponent = (comp: IDatazoom | IScrollbar, dim: 'x' | 'y'): [number, number] => {\n const bounds = comp.getBounds();\n\n if (bounds && !bounds.empty()) {\n return dim === 'y' ? [bounds.y1, bounds.y2] : [bounds.x1, bounds.x2];\n }\n};\n\nexport const getFilteredValuesFromScale = (scale: IBaseScale, range: [number, number]) => {\n const scaleRange = scale.range();\n const startPos = scaleRange[0] + (scaleRange[1] - scaleRange[0]) * range[0];\n const endPos = scaleRange[0] + (scaleRange[1] - scaleRange[0]) * range[1];\n\n if (isContinuous(scale.type)) {\n const startValue = scale.invert(startPos);\n const endValue = scale.invert(endPos);\n\n return [Math.min(startValue, endValue), Math.max(startValue, endValue)];\n }\n const domain = scale.domain();\n\n return domain.filter((entry: any) => {\n const val = scale.scale(entry);\n return val >= startPos && val <= endPos;\n });\n};\n\nexport const updateScrollRange = (\n rangeFactor: [number, number] = [0, 1],\n range: [number, number],\n scrollValue: number = 0,\n scrollOptions?: { reversed?: boolean }\n) => {\n if (Math.abs(scrollValue) < 1e-3) {\n return;\n }\n const rangeDelta = Math.abs(rangeFactor[1] - rangeFactor[0]);\n\n if (rangeDelta >= 1) {\n return;\n }\n const size = Math.abs(range[range.length - 1] - range[0]);\n\n if (size <= 0 || Number.isNaN(size)) {\n return;\n }\n\n const value = (scrollOptions.reversed ? -1 : 1) * scrollValue;\n\n if (value > 0 && rangeFactor[1] < 1) {\n const delta = Math.min(1 - rangeFactor[1], value / size);\n\n return [rangeFactor[0] + delta, rangeFactor[1] + delta] as [number, number];\n } else if (value < 0 && rangeFactor[0] > 0) {\n const delta = Math.max(-rangeFactor[0], value / size);\n\n return [rangeFactor[0] + delta, rangeFactor[1] + delta] as [number, number];\n }\n};\n\nexport const handleScrolling = (\n scrollPos: { x?: number; y?: number },\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n scrollOptions?: { reversed?: boolean }\n): ViewNavigationRange => {\n const res: ViewNavigationRange = { needUpdate: false };\n if (!navState) {\n return res;\n }\n\n Object.keys(navState).forEach(dim => {\n const { scale, data, linkedComponent, rangeFactor, getCurrentRange } = navState[dim];\n\n if (linkedComponent) {\n res[dim] = updateScrollRange(\n getRangeOfLinkedComponent(linkedComponent),\n getBoundsRangeOfLinkedComponent(linkedComponent, dim as 'x' | 'y'),\n scrollPos[dim],\n scrollOptions\n );\n } else if (scale) {\n const innerScale = scale.getScale();\n const oldRange = scale.getRangeFactor() || rangeFactor;\n const newRange = updateScrollRange(oldRange, innerScale.range(), scrollPos[dim], scrollOptions);\n\n if (newRange) {\n navState[dim].rangeFactor = newRange;\n\n if (data) {\n navState[dim].filterValue = newRange;\n\n data.commit();\n } else {\n scale.setRangeFactor(newRange);\n scale.commit();\n }\n res.needUpdate = true;\n res[dim] = newRange;\n }\n } else {\n const oldRange = (getCurrentRange ? getCurrentRange() : rangeFactor) || [0, 1];\n const newRange = updateScrollRange(oldRange, [0, 1], scrollPos[dim], scrollOptions);\n\n res[dim] = newRange || oldRange;\n }\n });\n return res;\n};\n"]}
1
+ {"version":3,"sources":["../src/interactions/view-utils.ts"],"names":[],"mappings":"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","file":"view-utils.js","sourcesContent":["import { isContinuous, type IBaseScale } from '@visactor/vscale';\nimport { ComponentEnum } from '../graph/enums';\nimport type { IDatazoom, IScrollbar, ViewNavigationRange, ViewStateByDim } from '../types';\n\nexport const getRangeOfLinkedComponent = (comp: IDatazoom | IScrollbar): [number, number] => {\n if (comp.componentType === ComponentEnum.datazoom) {\n const res = (comp as IDatazoom).getStartEndValue();\n return res ? [res.start, res.end] : null;\n }\n\n return (comp as IScrollbar).getScrollRange();\n};\n\nexport const getBoundsRangeOfLinkedComponent = (comp: IDatazoom | IScrollbar, dim: 'x' | 'y'): [number, number] => {\n const bounds = comp.getBounds();\n\n if (bounds && !bounds.empty()) {\n return dim === 'y' ? [bounds.y1, bounds.y2] : [bounds.x1, bounds.x2];\n }\n};\n\nexport const getFilteredValuesFromScale = (scale: IBaseScale, range: [number, number]) => {\n const scaleRange = scale.range();\n const startPos = scaleRange[0] + (scaleRange[1] - scaleRange[0]) * range[0];\n const endPos = scaleRange[0] + (scaleRange[1] - scaleRange[0]) * range[1];\n\n if (isContinuous(scale.type)) {\n const startValue = scale.invert(startPos);\n const endValue = scale.invert(endPos);\n\n return [Math.min(startValue, endValue), Math.max(startValue, endValue)];\n }\n const domain = scale.domain();\n\n return domain.filter((entry: any) => {\n const val = scale.scale(entry);\n return val >= startPos && val <= endPos;\n });\n};\n\nexport const updateScrollRange = (\n rangeFactor: [number, number] = [0, 1],\n range: [number, number],\n scrollValue: number = 0,\n scrollOptions?: { reversed?: boolean }\n) => {\n if (Math.abs(scrollValue) < 1e-3) {\n return;\n }\n const rangeDelta = Math.abs(rangeFactor[1] - rangeFactor[0]);\n\n if (rangeDelta >= 1) {\n return;\n }\n const size = Math.abs(range[range.length - 1] - range[0]);\n\n if (size <= 0 || Number.isNaN(size)) {\n return;\n }\n\n const value = (scrollOptions.reversed ? -1 : 1) * scrollValue;\n\n if (value > 0 && rangeFactor[1] < 1) {\n const delta = Math.min(1 - rangeFactor[1], value / size);\n\n return [rangeFactor[0] + delta, rangeFactor[1] + delta] as [number, number];\n } else if (value < 0 && rangeFactor[0] > 0) {\n const delta = Math.max(-rangeFactor[0], value / size);\n\n return [rangeFactor[0] + delta, rangeFactor[1] + delta] as [number, number];\n }\n};\n\nexport const handleScrolling = (\n scrollPos: { x?: number; y?: number },\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n scrollOptions?: { reversed?: boolean }\n): ViewNavigationRange => {\n const res: ViewNavigationRange = { needUpdate: false };\n if (!navState) {\n return res;\n }\n\n Object.keys(navState).forEach(dim => {\n const { scale, data, linkedComponent, rangeFactor, wholeScale } = navState[dim];\n\n if (linkedComponent) {\n res[dim] = updateScrollRange(\n getRangeOfLinkedComponent(linkedComponent),\n getBoundsRangeOfLinkedComponent(linkedComponent, dim as 'x' | 'y'),\n scrollPos[dim],\n scrollOptions\n );\n } else if (scale) {\n const innerScale = scale.getScale();\n const newRange = updateScrollRange(rangeFactor, innerScale.range(), scrollPos[dim], scrollOptions);\n\n if (newRange) {\n navState[dim].rangeFactor = newRange;\n\n if (data) {\n navState[dim].filterValue = rangeFactor;\n\n data.commit();\n } else {\n scale.setRangeFactor(newRange);\n scale.commit();\n }\n res.needUpdate = true;\n res[dim] = newRange;\n }\n }\n });\n return res;\n};\n"]}
@@ -32,15 +32,12 @@ export class ViewZoomMixin {
32
32
  needUpdate: !1
33
33
  };
34
34
  return navState ? (Object.keys(navState).forEach((dim => {
35
- const {scale: scale, data: data, linkedComponent: linkedComponent, rangeFactor: rangeFactor, getCurrentRange: getCurrentRange} = navState[dim];
35
+ const {scale: scale, data: data, linkedComponent: linkedComponent, rangeFactor: rangeFactor} = navState[dim];
36
36
  if (linkedComponent) res[dim] = this.updateZoomRange(getRangeOfLinkedComponent(linkedComponent), null, zoomPos, zoomOptions); else if (scale) {
37
37
  const innerScale = scale.getScale(), newRange = this.updateZoomRange(rangeFactor, innerScale, zoomPos, zoomOptions);
38
38
  newRange && (navState[dim].rangeFactor = newRange, data ? (navState[dim].filterValue = newRange,
39
39
  data.commit()) : (scale.setRangeFactor(newRange), scale.commit()), res.needUpdate = !0,
40
40
  res[dim] = newRange);
41
- } else {
42
- const oldRange = (getCurrentRange ? getCurrentRange() : rangeFactor) || [ 0, 1 ], newRange = this.updateZoomRange(oldRange, null, zoomPos, zoomOptions);
43
- res[dim] = newRange || oldRange;
44
41
  }
45
42
  })), res) : res;
46
43
  }
@@ -62,10 +59,9 @@ export class ViewZoomMixin {
62
59
  };
63
60
  return navState ? (Object.keys(navState).forEach((dim => {
64
61
  const {scale: scale, data: data, linkedComponent: linkedComponent} = navState[dim], newRange = [ 0, 1 ];
65
- linkedComponent ? res[dim] = newRange : scale ? (navState[dim].rangeFactor = null,
62
+ linkedComponent ? res[dim] = newRange : scale && (navState[dim].rangeFactor = null,
66
63
  data ? (navState[dim].filterValue = null, data.commit()) : (scale.setRangeFactor(newRange),
67
- scale.commit()), res.needUpdate = !0, res[dim] = newRange) : (navState[dim].rangeFactor = navState[dim].initRangeFactor,
68
- res[dim] = navState[dim].initRangeFactor);
64
+ scale.commit()), res.needUpdate = !0, res[dim] = newRange);
69
65
  })), res) : res;
70
66
  }
71
67
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interactions/view-zoom-mixin.ts"],"names":[],"mappings":"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","file":"view-zoom-mixin.js","sourcesContent":["import { clamp, isNil } from '@visactor/vutils';\nimport type {\n IViewZoomMixin,\n InteractionEvent,\n ViewNavigationRange,\n ViewStateByDim,\n ViewZoomSimpleOptions\n} from '../types';\nimport { getRangeOfLinkedComponent } from './view-utils';\n\nexport class ViewZoomMixin implements IViewZoomMixin {\n protected declare _state: Partial<Record<'x' | 'y', ViewStateByDim>>;\n\n protected _lastScale: number;\n protected _zoomPos: {\n zoomDelta: number;\n zoomX: number;\n zoomY: number;\n };\n\n protected _formatPinchZoom(e: InteractionEvent) {\n const scale = (e as any).scale;\n if (isNil(this._lastScale)) {\n this._lastScale = scale;\n return e;\n }\n const zoomDelta = scale / this._lastScale;\n\n this._lastScale = scale;\n const center = (e as any).center;\n\n (e as any).zoomDelta = zoomDelta;\n (e as any).zoomX = center.x;\n (e as any).zoomY = center.y;\n\n return e;\n }\n\n protected _formatWheelZoom(e: InteractionEvent) {\n /**\n * @see https://vega.github.io/vega/examples/zoomable-world-map/\n * After testing, the ctrlKey field will only be true when the directions of the two fingers are inconsistent.\n * Based on this, determine whether to trigger the scroll event.\n */\n if (!(e as any).ctrlKey) {\n (e as any).zoomDelta = null;\n (e as any).zoomX = null;\n (e as any).zoomY = null;\n return e;\n }\n\n // @see https://vega.github.io/vega/examples/zoomable-world-map/\n const zoomDelta = Math.pow(1.0005, -(e as any).deltaY * Math.pow(16, (e as any).deltaMode));\n\n (e as any).zoomDelta = zoomDelta;\n (e as any).zoomX = e.canvasX;\n (e as any).zoomY = e.canvasY;\n return e;\n }\n\n formatZoomEvent(e: InteractionEvent) {\n if (!e) {\n return e;\n }\n\n if (e.type === 'pinch') {\n return this._formatPinchZoom(e);\n }\n\n return this._formatWheelZoom(e);\n }\n\n updateZoomRange(\n rangeFactor: [number, number] = [0, 1],\n range: [number, number],\n zoomEvent: { zoomDelta: number; zoomX: number; zoomY: number },\n zoomOptions?: { rate?: number; focus?: boolean }\n ) {\n const { zoomDelta } = zoomEvent;\n\n const rangeDelta = Math.abs(rangeFactor[1] - rangeFactor[0]);\n\n if (rangeDelta >= 1 && zoomDelta >= 1) {\n return;\n }\n if (rangeDelta <= 1e-3 && zoomDelta <= 1) {\n return;\n }\n const value = (rangeDelta * (zoomDelta - 1) * (zoomOptions.rate ?? 1)) / 2;\n\n const start = clamp(rangeFactor[0] - value, 0, 1);\n const end = clamp(rangeFactor[1] + value, 0, 1);\n\n return [Math.min(start, end), Math.max(start, end)] as [number, number];\n }\n\n protected _handleZooming(\n zoomPos: { zoomDelta: number; zoomX: number; zoomY: number },\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n zoomOptions?: ViewZoomSimpleOptions\n ): ViewNavigationRange {\n const res: ViewNavigationRange = { needUpdate: false };\n if (!navState) {\n return res;\n }\n\n Object.keys(navState).forEach(dim => {\n const { scale, data, linkedComponent, rangeFactor, getCurrentRange } = navState[dim];\n\n if (linkedComponent) {\n res[dim] = this.updateZoomRange(getRangeOfLinkedComponent(linkedComponent), null, zoomPos, zoomOptions);\n } else if (scale) {\n const innerScale = scale.getScale();\n const newRange = this.updateZoomRange(rangeFactor, innerScale, zoomPos, zoomOptions);\n\n if (newRange) {\n navState[dim].rangeFactor = newRange;\n\n if (data) {\n navState[dim].filterValue = newRange;\n\n data.commit();\n } else {\n scale.setRangeFactor(newRange);\n scale.commit();\n }\n res.needUpdate = true;\n res[dim] = newRange;\n }\n } else {\n const oldRange = (getCurrentRange ? getCurrentRange() : rangeFactor) || [0, 1];\n const newRange = this.updateZoomRange(oldRange, null, zoomPos, zoomOptions);\n\n res[dim] = newRange || oldRange;\n }\n });\n return res;\n }\n\n handleZoomStart(\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n zoomOptions?: ViewZoomSimpleOptions\n ): ViewNavigationRange {\n if (isNil((e as any).zoomDelta)) {\n return;\n }\n e.stopPropagation();\n e.preventDefault();\n\n if (zoomOptions && zoomOptions.realtime) {\n return this._handleZooming(\n e as unknown as { zoomDelta: number; zoomX: number; zoomY: number },\n navState,\n zoomOptions\n );\n }\n\n if (isNil(this._zoomPos)) {\n this._zoomPos = {\n zoomDelta: (e as any).zoomDelta,\n zoomX: (e as any).zoomX,\n zoomY: (e as any).zoomY\n };\n } else {\n this._zoomPos.zoomDelta *= (e as any).zoomDelta;\n }\n\n return null;\n }\n\n handleZoomEnd(\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n zoomOptions?: ViewZoomSimpleOptions\n ): ViewNavigationRange {\n this._lastScale = null;\n const res =\n zoomOptions && zoomOptions.realtime === false && this._zoomPos\n ? this._handleZooming(this._zoomPos, navState, zoomOptions)\n : null;\n\n this._zoomPos = null;\n\n return res;\n }\n\n handleZoomReset(\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n zoomOptions?: ViewZoomSimpleOptions\n ): ViewNavigationRange {\n const res: ViewNavigationRange = { needUpdate: false };\n if (!navState) {\n return res;\n }\n\n Object.keys(navState).forEach(dim => {\n const { scale, data, linkedComponent } = navState[dim];\n const newRange = [0, 1];\n\n if (linkedComponent) {\n res[dim] = newRange;\n } else if (scale) {\n navState[dim].rangeFactor = null;\n\n if (data) {\n navState[dim].filterValue = null;\n\n data.commit();\n } else {\n scale.setRangeFactor(newRange);\n scale.commit();\n }\n res.needUpdate = true;\n res[dim] = newRange;\n } else {\n navState[dim].rangeFactor = navState[dim].initRangeFactor;\n res[dim] = navState[dim].initRangeFactor;\n }\n });\n return res;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/interactions/view-zoom-mixin.ts"],"names":[],"mappings":"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","file":"view-zoom-mixin.js","sourcesContent":["import { clamp, isNil } from '@visactor/vutils';\nimport type {\n IViewZoomMixin,\n InteractionEvent,\n ViewNavigationRange,\n ViewStateByDim,\n ViewZoomSimpleOptions\n} from '../types';\nimport { getFilteredValuesFromScale, getRangeOfLinkedComponent } from './view-utils';\n\nexport class ViewZoomMixin implements IViewZoomMixin {\n protected declare _state: Partial<Record<'x' | 'y', ViewStateByDim>>;\n\n protected _lastScale: number;\n protected _zoomPos: {\n zoomDelta: number;\n zoomX: number;\n zoomY: number;\n };\n\n protected _formatPinchZoom(e: InteractionEvent) {\n const scale = (e as any).scale;\n if (isNil(this._lastScale)) {\n this._lastScale = scale;\n return e;\n }\n const zoomDelta = scale / this._lastScale;\n\n this._lastScale = scale;\n const center = (e as any).center;\n\n (e as any).zoomDelta = zoomDelta;\n (e as any).zoomX = center.x;\n (e as any).zoomY = center.y;\n\n return e;\n }\n\n protected _formatWheelZoom(e: InteractionEvent) {\n /**\n * @see https://vega.github.io/vega/examples/zoomable-world-map/\n * After testing, the ctrlKey field will only be true when the directions of the two fingers are inconsistent.\n * Based on this, determine whether to trigger the scroll event.\n */\n if (!(e as any).ctrlKey) {\n (e as any).zoomDelta = null;\n (e as any).zoomX = null;\n (e as any).zoomY = null;\n return e;\n }\n\n // @see https://vega.github.io/vega/examples/zoomable-world-map/\n const zoomDelta = Math.pow(1.0005, -(e as any).deltaY * Math.pow(16, (e as any).deltaMode));\n\n (e as any).zoomDelta = zoomDelta;\n (e as any).zoomX = e.canvasX;\n (e as any).zoomY = e.canvasY;\n return e;\n }\n\n formatZoomEvent(e: InteractionEvent) {\n if (!e) {\n return e;\n }\n\n if (e.type === 'pinch') {\n return this._formatPinchZoom(e);\n }\n\n return this._formatWheelZoom(e);\n }\n\n updateZoomRange(\n rangeFactor: [number, number] = [0, 1],\n range: [number, number],\n zoomEvent: { zoomDelta: number; zoomX: number; zoomY: number },\n zoomOptions?: { rate?: number; focus?: boolean }\n ) {\n const { zoomDelta } = zoomEvent;\n\n const rangeDelta = Math.abs(rangeFactor[1] - rangeFactor[0]);\n\n if (rangeDelta >= 1 && zoomDelta >= 1) {\n return;\n }\n if (rangeDelta <= 1e-3 && zoomDelta <= 1) {\n return;\n }\n const value = (rangeDelta * (zoomDelta - 1) * (zoomOptions.rate ?? 1)) / 2;\n\n const start = clamp(rangeFactor[0] - value, 0, 1);\n const end = clamp(rangeFactor[1] + value, 0, 1);\n\n return [Math.min(start, end), Math.max(start, end)] as [number, number];\n }\n\n protected _handleZooming(\n zoomPos: { zoomDelta: number; zoomX: number; zoomY: number },\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n zoomOptions?: ViewZoomSimpleOptions\n ): ViewNavigationRange {\n const res: ViewNavigationRange = { needUpdate: false };\n if (!navState) {\n return res;\n }\n\n Object.keys(navState).forEach(dim => {\n const { scale, data, linkedComponent, rangeFactor } = navState[dim];\n\n if (linkedComponent) {\n res[dim] = this.updateZoomRange(getRangeOfLinkedComponent(linkedComponent), null, zoomPos, zoomOptions);\n } else if (scale) {\n const innerScale = scale.getScale();\n const newRange = this.updateZoomRange(rangeFactor, innerScale, zoomPos, zoomOptions);\n\n if (newRange) {\n navState[dim].rangeFactor = newRange;\n\n if (data) {\n navState[dim].filterValue = newRange;\n\n data.commit();\n } else {\n scale.setRangeFactor(newRange);\n scale.commit();\n }\n res.needUpdate = true;\n res[dim] = newRange;\n }\n }\n });\n return res;\n }\n\n handleZoomStart(\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n zoomOptions?: ViewZoomSimpleOptions\n ): ViewNavigationRange {\n if (isNil((e as any).zoomDelta)) {\n return;\n }\n e.stopPropagation();\n e.preventDefault();\n\n if (zoomOptions && zoomOptions.realtime) {\n return this._handleZooming(\n e as unknown as { zoomDelta: number; zoomX: number; zoomY: number },\n navState,\n zoomOptions\n );\n }\n\n if (isNil(this._zoomPos)) {\n this._zoomPos = {\n zoomDelta: (e as any).zoomDelta,\n zoomX: (e as any).zoomX,\n zoomY: (e as any).zoomY\n };\n } else {\n this._zoomPos.zoomDelta *= (e as any).zoomDelta;\n }\n\n return null;\n }\n\n handleZoomEnd(\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n zoomOptions?: ViewZoomSimpleOptions\n ): ViewNavigationRange {\n this._lastScale = null;\n const res =\n zoomOptions && zoomOptions.realtime === false && this._zoomPos\n ? this._handleZooming(this._zoomPos, navState, zoomOptions)\n : null;\n\n this._zoomPos = null;\n\n return res;\n }\n\n handleZoomReset(\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n zoomOptions?: ViewZoomSimpleOptions\n ): ViewNavigationRange {\n const res: ViewNavigationRange = { needUpdate: false };\n if (!navState) {\n return res;\n }\n\n Object.keys(navState).forEach(dim => {\n const { scale, data, linkedComponent } = navState[dim];\n const newRange = [0, 1];\n\n if (linkedComponent) {\n res[dim] = newRange;\n } else if (scale) {\n navState[dim].rangeFactor = null;\n\n if (data) {\n navState[dim].filterValue = null;\n\n data.commit();\n } else {\n scale.setRangeFactor(newRange);\n scale.commit();\n }\n res.needUpdate = true;\n res[dim] = newRange;\n }\n });\n return res;\n }\n}\n"]}
@@ -12,10 +12,9 @@ export declare class ViewZoom extends ViewNavigationBase<ViewZoomOptions> {
12
12
  protected _scaleY: IScale;
13
13
  protected _data: IData;
14
14
  protected handleStart: (e: InteractionEvent) => void;
15
- protected _isStarted?: boolean;
16
15
  constructor(view: IView, option?: ViewZoomOptions);
17
16
  protected getEvents(): {
18
- type: "none" | import("../types").EventType;
17
+ type: import("../types").EventType;
19
18
  handler: (e: InteractionEvent) => void;
20
19
  }[];
21
20
  handleStartInner: (e: InteractionEvent) => void;
@@ -7,20 +7,20 @@ export class ViewZoom extends ViewNavigationBase {
7
7
  super(view, Object.assign({}, ViewZoom.defaultOptions, option)), this.type = ViewZoom.type,
8
8
  this.handleStartInner = e => {
9
9
  this.formatZoomEvent(e), !e || this.options.shouldStart && !this.options.shouldStart(e) || (this._inited || this._initGrammars(),
10
- this._isStarted = !0, this.updateView("start", this.handleZoomStart(e, this._state, {
10
+ this.updateView("start", this.handleZoomStart(e, this._state, {
11
11
  rate: this.options.rate,
12
12
  focus: this.options.focus
13
- }), "zoom", e));
13
+ })));
14
14
  }, this.handleEnd = e => {
15
- this._isStarted && (this.formatZoomEvent(e), !e || this.options.shouldEnd && !this.options.shouldEnd(e) || this.updateView("end", this.handleZoomEnd(e, this._state, {
15
+ this.formatZoomEvent(e), !e || this.options.shouldEnd && !this.options.shouldEnd(e) || this.updateView("end", this.handleZoomEnd(e, this._state, {
16
16
  rate: this.options.rate,
17
17
  focus: this.options.focus
18
- }), "zoom", e));
18
+ }), e);
19
19
  }, this.handleReset = e => {
20
- this._isStarted && (!e || this.options.shouldReset && !this.options.shouldReset(e) || (this.updateView("reset", this.handleZoomReset(e, this._state, {
20
+ !e || this.options.shouldReset && !this.options.shouldReset(e) || this.updateView("reset", this.handleZoomReset(e, this._state, {
21
21
  rate: this.options.rate,
22
22
  focus: this.options.focus
23
- }), "zoom", e), this._isStarted = !1));
23
+ }), e);
24
24
  }, this.handleStart = throttle(this.handleStartInner, this.options.throttle);
25
25
  }
26
26
  getEvents() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interactions/view-zoom.ts"],"names":[],"mappings":"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","file":"view-zoom.js","sourcesContent":["import { throttle } from '@visactor/vutils';\nimport type { ViewZoomOptions, IView, InteractionEvent, IScale, IData, IViewZoomMixin } from '../types';\nimport { ViewNavigationBase } from './view-navigation-base';\n\nexport interface ViewZoom\n extends Pick<\n IViewZoomMixin,\n 'formatZoomEvent' | 'handleZoomStart' | 'handleZoomEnd' | 'handleZoomReset' | 'updateZoomRange'\n >,\n ViewNavigationBase<ViewZoomOptions> {}\nexport class ViewZoom extends ViewNavigationBase<ViewZoomOptions> {\n static type: string = 'view-zoom';\n type: string = ViewZoom.type;\n\n static defaultOptions: ViewZoomOptions = {\n realtime: true,\n focus: true,\n trigger: 'wheel',\n endTrigger: 'pointerup',\n triggerOff: 'dblclick',\n rate: 1,\n throttle: 100\n };\n\n protected _inited?: boolean;\n protected _lastScale: number;\n protected _scaleX: IScale;\n protected _scaleY: IScale;\n protected _data: IData;\n protected handleStart: (e: InteractionEvent) => void;\n protected _isStarted?: boolean;\n\n constructor(view: IView, option?: ViewZoomOptions) {\n super(view, Object.assign({}, ViewZoom.defaultOptions, option));\n this.handleStart = throttle(this.handleStartInner, 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.triggerOff, handler: this.handleReset }\n ];\n }\n\n handleStartInner = (e: InteractionEvent) => {\n (this as unknown as IViewZoomMixin).formatZoomEvent(e);\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._isStarted = true;\n\n this.updateView(\n 'start',\n (this as unknown as IViewZoomMixin).handleZoomStart(e, this._state, {\n rate: this.options.rate,\n focus: this.options.focus\n }),\n 'zoom',\n e\n );\n };\n\n handleEnd = (e: InteractionEvent) => {\n if (!this._isStarted) {\n return;\n }\n\n (this as unknown as IViewZoomMixin).formatZoomEvent(e);\n if (!e || (this.options.shouldEnd && !this.options.shouldEnd(e))) {\n return;\n }\n\n this.updateView(\n 'end',\n (this as unknown as IViewZoomMixin).handleZoomEnd(e, this._state, {\n rate: this.options.rate,\n focus: this.options.focus\n }),\n 'zoom',\n e\n );\n };\n\n handleReset = (e: InteractionEvent) => {\n if (!this._isStarted) {\n return;\n }\n if (!e || (this.options.shouldReset && !this.options.shouldReset(e))) {\n return;\n }\n\n this.updateView(\n 'reset',\n (this as unknown as IViewZoomMixin).handleZoomReset(e, this._state, {\n rate: this.options.rate,\n focus: this.options.focus\n }),\n 'zoom',\n e\n );\n this._isStarted = false;\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/interactions/view-zoom.ts"],"names":[],"mappings":"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","file":"view-zoom.js","sourcesContent":["import { throttle } from '@visactor/vutils';\nimport type { ViewZoomOptions, IView, InteractionEvent, IScale, IData, IViewZoomMixin } from '../types';\nimport { ViewNavigationBase } from './view-navigation-base';\n\nexport interface ViewZoom\n extends Pick<\n IViewZoomMixin,\n 'formatZoomEvent' | 'handleZoomStart' | 'handleZoomEnd' | 'handleZoomReset' | 'updateZoomRange'\n >,\n ViewNavigationBase<ViewZoomOptions> {}\nexport class ViewZoom extends ViewNavigationBase<ViewZoomOptions> {\n static type: string = 'view-zoom';\n type: string = ViewZoom.type;\n\n static defaultOptions: ViewZoomOptions = {\n realtime: true,\n focus: true,\n trigger: 'wheel',\n endTrigger: 'pointerup',\n triggerOff: 'dblclick',\n rate: 1,\n throttle: 100\n };\n\n protected _inited?: boolean;\n protected _lastScale: number;\n protected _scaleX: IScale;\n protected _scaleY: IScale;\n protected _data: IData;\n protected handleStart: (e: InteractionEvent) => void;\n\n constructor(view: IView, option?: ViewZoomOptions) {\n super(view, Object.assign({}, ViewZoom.defaultOptions, option));\n this.handleStart = throttle(this.handleStartInner, 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.triggerOff, handler: this.handleReset }\n ];\n }\n\n handleStartInner = (e: InteractionEvent) => {\n (this as unknown as IViewZoomMixin).formatZoomEvent(e);\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 'start',\n (this as unknown as IViewZoomMixin).handleZoomStart(e, this._state, {\n rate: this.options.rate,\n focus: this.options.focus\n })\n );\n };\n\n handleEnd = (e: InteractionEvent) => {\n (this as unknown as IViewZoomMixin).formatZoomEvent(e);\n if (!e || (this.options.shouldEnd && !this.options.shouldEnd(e))) {\n return;\n }\n\n this.updateView(\n 'end',\n (this as unknown as IViewZoomMixin).handleZoomEnd(e, this._state, {\n rate: this.options.rate,\n focus: this.options.focus\n }),\n e\n );\n };\n\n handleReset = (e: InteractionEvent) => {\n if (!e || (this.options.shouldReset && !this.options.shouldReset(e))) {\n return;\n }\n this.updateView(\n 'reset',\n (this as unknown as IViewZoomMixin).handleZoomReset(e, this._state, {\n rate: this.options.rate,\n focus: this.options.focus\n }),\n e\n );\n };\n}\n"]}
@@ -62,4 +62,4 @@ export function configureCoordinate(spec, coordinate, parameters) {
62
62
  }
63
63
  coordinate.applyTransforms(transforms);
64
64
  }
65
- //# sourceMappingURL=coordinate.js.map
65
+ //# sourceMappingURL=coordinate.js.map
package/es/parse/event.js CHANGED
@@ -24,4 +24,4 @@ export const parseEventSelector = (selector, source = EVENT_SOURCE_VIEW) => {
24
24
  } else 1 === splitArr.length && (spec.type = selector, spec.source = source);
25
25
  return spec;
26
26
  };
27
- //# sourceMappingURL=event.js.map
27
+ //# sourceMappingURL=event.js.map
package/es/parse/mark.js CHANGED
@@ -16,4 +16,4 @@ export function parseEncodeType(encoder, view) {
16
16
  return encoder.scale && (dependencies = isGrammar(encoder.scale) ? [ encoder.scale ] : array(view.getScaleById(encoder.scale))),
17
17
  dependencies.concat(parseFunctionType(encoder, view));
18
18
  }
19
- //# sourceMappingURL=mark.js.map
19
+ //# sourceMappingURL=mark.js.map
@@ -8,4 +8,4 @@ export const parseOptions = (options, params) => options ? isObject(options) ? O
8
8
  const option = options[key];
9
9
  return res[key] = parseOptionValue(option, params), res;
10
10
  }), {}) : options.map((option => parseOptionValue(option, params))) : options;
11
- //# sourceMappingURL=option.js.map
11
+ //# sourceMappingURL=option.js.map
package/es/parse/scale.js CHANGED
@@ -343,4 +343,5 @@ export function configureScale(spec, scale, parameters) {
343
343
  case "quantile":
344
344
  scale.rescale();
345
345
  }
346
- }
346
+ }
347
+ //# sourceMappingURL=scale.js.map
@@ -99,4 +99,4 @@ export const parseTransformSpec = (spec, view) => {
99
99
  }
100
100
  return null;
101
101
  };
102
- //# sourceMappingURL=transform.js.map
102
+ //# sourceMappingURL=transform.js.map
package/es/parse/util.js CHANGED
@@ -62,4 +62,4 @@ export const isGrammar = el => el && !isNil(el.grammarType);
62
62
  export const parseField = field => isFunction(field) ? field : datum => datum[field];
63
63
 
64
64
  export const parseColor = color => isString(color) && Color.parseColorString(color) ? color : null;
65
- //# sourceMappingURL=util.js.map
65
+ //# sourceMappingURL=util.js.map
package/es/parse/view.js CHANGED
@@ -96,4 +96,4 @@ export const normalizeRunningConfig = runningConfig => {
96
96
  enableExitAnimation: enableExitAnimation
97
97
  };
98
98
  };
99
- //# sourceMappingURL=view.js.map
99
+ //# sourceMappingURL=view.js.map
@@ -1,7 +1,7 @@
1
1
  import type { IArc, IArc3d, IArea, ICircle, IGlyph, IGraphic, IGroup, IImage, ILine, IPath, IPolygon, IPyramid3d, IRect, IRect3d, IRichText, ISymbol, IText } from '@visactor/vrender-core';
2
2
  import type { DiffState } from '../graph/enums';
3
3
  import type { IMark, IGlyphMark } from './grammar';
4
- import type { BaseEncodeSpec, MarkFunctionType, MarkKeySpec, MarkType } from './mark';
4
+ import type { BaseEncodeSpec, IMarkConfig, MarkFunctionType, MarkKeySpec, MarkType } from './mark';
5
5
  export interface ElementGraphicMap {
6
6
  circle: ICircle;
7
7
  arc: IArc;
@@ -54,7 +54,7 @@ export interface IElement {
54
54
  data?: any[];
55
55
  items: MarkElementItem[];
56
56
  initGraphicItem: (attrs?: any) => void;
57
- updateGraphicItem: () => void;
57
+ updateGraphicItem: (config: IMarkConfig) => void;
58
58
  getDatum: () => any;
59
59
  getBounds: () => any;
60
60
  getGraphicItem: () => IGraphic;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types/element.ts"],"names":[],"mappings":"","file":"element.js","sourcesContent":["import type {\n IArc,\n IArc3d,\n IArea,\n ICircle,\n IGlyph,\n IGraphic,\n IGroup,\n IImage,\n ILine,\n IPath,\n IPolygon,\n IPyramid3d,\n IRect,\n IRect3d,\n IRichText,\n ISymbol,\n IText\n} from '@visactor/vrender-core';\nimport type { DiffState } from '../graph/enums';\nimport type { IMark, IGlyphMark } from './grammar';\nimport type { BaseEncodeSpec, IMarkConfig, MarkFunctionType, MarkKeySpec, MarkType } from './mark';\n\nexport interface ElementGraphicMap {\n circle: ICircle;\n arc: IArc;\n area: IArea;\n image: IImage;\n line: ILine;\n path: IPath;\n rule: ILine;\n shape: IPath;\n symbol: ISymbol;\n text: IText;\n richtext: IRichText;\n polygon: IPolygon;\n cell: ISymbol;\n interval: IGraphic;\n rect: IRect;\n rect3d: IRect3d;\n arc3d: IArc3d;\n pyramid3d: IPyramid3d;\n group: IGroup;\n glyph: IGlyph;\n linkPath: IGlyph;\n treePath: IGlyph;\n wave: IGlyph;\n ripplePoint: IGlyph;\n barBoxplot: IGlyph;\n boxPlot: IGlyph;\n component: IGroup;\n axis: IGroup;\n legend: IGroup;\n corsshair: IGroup;\n slider: IGroup;\n datazoom: IGroup;\n label: IGroup;\n player: IGroup;\n}\n\nexport type GetGraphicByType<T> = T extends keyof ElementGraphicMap ? ElementGraphicMap[T] : IGraphic;\n\n/**\n * 保存graphicItem状态\n */\nexport interface MarkElementItem {\n /** 唯一key */\n key: string;\n /** 原始数据 */\n datum: any;\n /** VGrammar view */\n view: any;\n /** 当前渲染帧下graphicItem对应的最新属性 */\n nextAttrs?: any;\n /** 是否初始化过,用于解决collection mark对应的item,可能跳过enter状态的问题 */\n // hasEntered: boolean;\n}\nexport interface IElement {\n mark: IMark;\n isReserved: boolean;\n diffState: DiffState;\n key: string;\n groupKey?: string;\n data?: any[];\n /**\n * 不推荐使用,但是collection图元暂时可能回涉及到相关修改\n */\n items: MarkElementItem[];\n\n initGraphicItem: (attrs?: any) => void;\n updateGraphicItem: () => void;\n\n getDatum: () => any;\n getBounds: () => any;\n getGraphicItem: () => IGraphic;\n removeGraphicItem: () => void;\n resetGraphicItem: () => void;\n\n /**\n * 获取 graphic 视觉通道属性\n * @param channel 视觉通道\n * @param prev 是否从之前的 graphic 属性上获取,默认为 false\n * @returns 视觉通道值\n */\n getGraphicAttribute: (channel: string, prev?: boolean) => any;\n /**\n * 设置 graphic 视觉通道属性\n * @param channel 视觉通道\n * @param value 视觉通道属性\n * @param final 是否更新 graphic 最终变更的视觉通道结果,默认为 false\n */\n setGraphicAttribute: (channel: string, value: any, final?: boolean) => void;\n /**\n * 设置一系列 graphic 视觉通道属性\n * @param attributes 视觉通道键值对\n * @param final 是否更新 graphic 最终变更的视觉通道结果,默认为 false\n */\n setGraphicAttributes: (attributes: { [channel: string]: any }, final?: boolean) => void;\n\n /**\n * 【慎重使用】获取 VGrammar 自身的视觉通道属性\n * 只有在 'afterEncodeItems' 时机的mark transform中才能调用\n */\n getItemAttribute: (channel?: string) => any;\n /**\n * 【慎重使用】设置 VGrammar 自身的视觉通道\n * 只有在 'afterEncodeItems' 时机的mark transform中才能调用\n * @param attributes\n * @returns\n */\n setItemAttributes: (attributes: { [channel: string]: any } | any[]) => void;\n\n // element 执行流程相关接口\n updateData: (groupKey: string, data: any[], keyGenerator: MarkKeySpec, view: any) => void;\n state: (markState: MarkFunctionType<string | string[]>, parameters?: any) => void;\n encodeItems: (items: MarkElementItem[], encoders: BaseEncodeSpec, isReentered?: boolean, parameters?: any) => void;\n encodeGraphic: (attributes?: any) => void;\n transformElementItems: (items: MarkElementItem[], markType: MarkType, computePoints?: boolean) => Record<string, any>;\n remove: () => void;\n release: () => void;\n\n // 动画相关接口\n\n getFinalGraphicAttributes: () => { [key: string]: any };\n getPrevGraphicAttributes: () => { [key: string]: any };\n getNextGraphicAttributes: () => { [key: string]: any };\n clearChangedGraphicAttributes: () => void;\n clearGraphicAttributes: () => void;\n\n // state相关接口\n getStates: () => string[];\n hasState: (state: string) => boolean;\n clearStates: (noAnimation?: boolean) => void;\n addState: (state: string | string[], attrs?: any) => boolean;\n removeState: (state: string | string[]) => boolean;\n useStates: (states: string[], noAnimation?: boolean) => boolean;\n}\n\nexport interface IGlyphElement<P = any> extends IElement {\n mark: IGlyphMark;\n\n getGlyphGraphicItems: () => { [markName: string]: any };\n\n getGraphicAttribute: (channel: string, prev?: boolean, markName?: any) => any;\n setGraphicAttribute: (channel: string, value: any, final?: boolean, markName?: any) => void;\n setGraphicAttributes: (attributes: { [channel: string]: any }, final?: boolean, markName?: any) => void;\n\n getFinalGraphicAttributes: (markName?: string) => { [key: string]: any };\n getPrevGraphicAttributes: (markName?: string) => { [key: string]: any };\n getNextGraphicAttributes: (markName?: string) => { [key: string]: any };\n\n encodeCustom: (nextAttrs?: any) => { [markName: string]: any };\n}\n"]}
1
+ {"version":3,"sources":["../src/types/element.ts"],"names":[],"mappings":"","file":"element.js","sourcesContent":["import type {\n IArc,\n IArc3d,\n IArea,\n ICircle,\n IGlyph,\n IGraphic,\n IGroup,\n IImage,\n ILine,\n IPath,\n IPolygon,\n IPyramid3d,\n IRect,\n IRect3d,\n IRichText,\n ISymbol,\n IText\n} from '@visactor/vrender-core';\nimport type { DiffState } from '../graph/enums';\nimport type { IMark, IGlyphMark } from './grammar';\nimport type { BaseEncodeSpec, IMarkConfig, MarkFunctionType, MarkKeySpec, MarkType } from './mark';\n\nexport interface ElementGraphicMap {\n circle: ICircle;\n arc: IArc;\n area: IArea;\n image: IImage;\n line: ILine;\n path: IPath;\n rule: ILine;\n shape: IPath;\n symbol: ISymbol;\n text: IText;\n richtext: IRichText;\n polygon: IPolygon;\n cell: ISymbol;\n interval: IGraphic;\n rect: IRect;\n rect3d: IRect3d;\n arc3d: IArc3d;\n pyramid3d: IPyramid3d;\n group: IGroup;\n glyph: IGlyph;\n linkPath: IGlyph;\n treePath: IGlyph;\n wave: IGlyph;\n ripplePoint: IGlyph;\n barBoxplot: IGlyph;\n boxPlot: IGlyph;\n component: IGroup;\n axis: IGroup;\n legend: IGroup;\n corsshair: IGroup;\n slider: IGroup;\n datazoom: IGroup;\n label: IGroup;\n player: IGroup;\n}\n\nexport type GetGraphicByType<T> = T extends keyof ElementGraphicMap ? ElementGraphicMap[T] : IGraphic;\n\n/**\n * 保存graphicItem状态\n */\nexport interface MarkElementItem {\n /** 唯一key */\n key: string;\n /** 原始数据 */\n datum: any;\n /** VGrammar view */\n view: any;\n /** 当前渲染帧下graphicItem对应的最新属性 */\n nextAttrs?: any;\n /** 是否初始化过,用于解决collection mark对应的item,可能跳过enter状态的问题 */\n // hasEntered: boolean;\n}\nexport interface IElement {\n mark: IMark;\n isReserved: boolean;\n diffState: DiffState;\n key: string;\n groupKey?: string;\n data?: any[];\n /**\n * 不推荐使用,但是collection图元暂时可能回涉及到相关修改\n */\n items: MarkElementItem[];\n\n initGraphicItem: (attrs?: any) => void;\n updateGraphicItem: (config: IMarkConfig) => void;\n\n getDatum: () => any;\n getBounds: () => any;\n getGraphicItem: () => IGraphic;\n removeGraphicItem: () => void;\n resetGraphicItem: () => void;\n\n /**\n * 获取 graphic 视觉通道属性\n * @param channel 视觉通道\n * @param prev 是否从之前的 graphic 属性上获取,默认为 false\n * @returns 视觉通道值\n */\n getGraphicAttribute: (channel: string, prev?: boolean) => any;\n /**\n * 设置 graphic 视觉通道属性\n * @param channel 视觉通道\n * @param value 视觉通道属性\n * @param final 是否更新 graphic 最终变更的视觉通道结果,默认为 false\n */\n setGraphicAttribute: (channel: string, value: any, final?: boolean) => void;\n /**\n * 设置一系列 graphic 视觉通道属性\n * @param attributes 视觉通道键值对\n * @param final 是否更新 graphic 最终变更的视觉通道结果,默认为 false\n */\n setGraphicAttributes: (attributes: { [channel: string]: any }, final?: boolean) => void;\n\n /**\n * 【慎重使用】获取 VGrammar 自身的视觉通道属性\n * 只有在 'afterEncodeItems' 时机的mark transform中才能调用\n */\n getItemAttribute: (channel?: string) => any;\n /**\n * 【慎重使用】设置 VGrammar 自身的视觉通道\n * 只有在 'afterEncodeItems' 时机的mark transform中才能调用\n * @param attributes\n * @returns\n */\n setItemAttributes: (attributes: { [channel: string]: any } | any[]) => void;\n\n // element 执行流程相关接口\n updateData: (groupKey: string, data: any[], keyGenerator: MarkKeySpec, view: any) => void;\n state: (markState: MarkFunctionType<string | string[]>, parameters?: any) => void;\n encodeItems: (items: MarkElementItem[], encoders: BaseEncodeSpec, isReentered?: boolean, parameters?: any) => void;\n encodeGraphic: (attributes?: any) => void;\n transformElementItems: (items: MarkElementItem[], markType: MarkType, computePoints?: boolean) => Record<string, any>;\n remove: () => void;\n release: () => void;\n\n // 动画相关接口\n\n getFinalGraphicAttributes: () => { [key: string]: any };\n getPrevGraphicAttributes: () => { [key: string]: any };\n getNextGraphicAttributes: () => { [key: string]: any };\n clearChangedGraphicAttributes: () => void;\n clearGraphicAttributes: () => void;\n\n // state相关接口\n getStates: () => string[];\n hasState: (state: string) => boolean;\n clearStates: (noAnimation?: boolean) => void;\n addState: (state: string | string[], attrs?: any) => boolean;\n removeState: (state: string | string[]) => boolean;\n useStates: (states: string[], noAnimation?: boolean) => boolean;\n}\n\nexport interface IGlyphElement<P = any> extends IElement {\n mark: IGlyphMark;\n\n getGlyphGraphicItems: () => { [markName: string]: any };\n\n getGraphicAttribute: (channel: string, prev?: boolean, markName?: any) => any;\n setGraphicAttribute: (channel: string, value: any, final?: boolean, markName?: any) => void;\n setGraphicAttributes: (attributes: { [channel: string]: any }, final?: boolean, markName?: any) => void;\n\n getFinalGraphicAttributes: (markName?: string) => { [key: string]: any };\n getPrevGraphicAttributes: (markName?: string) => { [key: string]: any };\n getNextGraphicAttributes: (markName?: string) => { [key: string]: any };\n\n encodeCustom: (nextAttrs?: any) => { [markName: string]: any };\n}\n"]}
@@ -41,7 +41,7 @@ export interface IInteractionConstructor<T = any> {
41
41
  export interface ElementActiveOptions extends IBaseInteractionOptions {
42
42
  selector?: string | string[] | IMark | IMark[];
43
43
  trigger?: EventType | EventType[];
44
- triggerOff?: EventType | EventType[] | 'none';
44
+ triggerOff?: EventType | EventType[];
45
45
  state?: string;
46
46
  }
47
47
  export interface ElementSelectOptions extends IBaseInteractionOptions {
@@ -49,13 +49,13 @@ export interface ElementSelectOptions extends IBaseInteractionOptions {
49
49
  trigger?: EventType | EventType[];
50
50
  state?: string;
51
51
  reverseState?: string;
52
- triggerOff?: EventType | EventType[] | ViewEventType | 'empty' | 'none' | number;
52
+ triggerOff?: EventType | EventType[] | ViewEventType | 'empty' | number;
53
53
  isMultiple?: boolean;
54
54
  }
55
55
  export interface ElementHighlightOptions extends IBaseInteractionOptions {
56
56
  selector?: string | string[] | IMark | IMark[];
57
57
  trigger?: EventType;
58
- triggerOff?: EventType | 'none';
58
+ triggerOff?: EventType;
59
59
  highlightState?: string;
60
60
  blurState?: string;
61
61
  }
@@ -75,7 +75,7 @@ export interface ElementHighlightByLegendOptions extends IBaseInteractionOptions
75
75
  export interface ElementHighlightByNameOptions extends ElementHighlightByLegendOptions {
76
76
  graphicName?: string | string[];
77
77
  trigger?: EventType;
78
- triggerOff?: EventType | 'none';
78
+ triggerOff?: EventType;
79
79
  parseData?: (e: InteractionEvent) => any;
80
80
  }
81
81
  export interface BrushEventParams {
@@ -133,7 +133,7 @@ export type TooltipType = 'x' | 'y' | 'angle' | 'radius';
133
133
  export interface TooltipOptions extends IBaseInteractionOptions {
134
134
  selector?: string | string[] | IMark | IMark[];
135
135
  trigger?: EventType;
136
- triggerOff?: EventType | 'none';
136
+ triggerOff?: EventType;
137
137
  title?: ITooltipRow | string | CustomTooltipCallback;
138
138
  content?: ITooltipRow | ITooltipRow[] | CustomTooltipCallback;
139
139
  attributes?: MarkFunctionType<TooltipAttributes>;
@@ -153,7 +153,7 @@ export type CrosshairType = 'x' | 'y' | 'angle' | 'radius' | 'radius-polygon';
153
153
  export type CrosshairShape = 'line' | 'rect';
154
154
  export interface CrosshairOptions extends IBaseInteractionOptions {
155
155
  trigger?: EventType;
156
- triggerOff?: EventType | 'none';
156
+ triggerOff?: EventType;
157
157
  scale?: IScale | string;
158
158
  crosshairType?: CrosshairType;
159
159
  crosshairShape?: CrosshairShape;
@@ -172,8 +172,6 @@ export interface ViewNavigationBaseOptions {
172
172
  throttle?: number;
173
173
  linkedComponentX?: string | IDatazoom | IScrollbar;
174
174
  linkedComponentY?: string | IDatazoom | IScrollbar;
175
- rangeX?: [number, number] | (() => [number, number]);
176
- rangeY?: [number, number] | (() => [number, number]);
177
175
  }
178
176
  export interface ViewZoomSimpleOptions {
179
177
  realtime?: boolean;
@@ -181,7 +179,7 @@ export interface ViewZoomSimpleOptions {
181
179
  focus?: boolean;
182
180
  trigger?: EventType;
183
181
  endTrigger?: EventType;
184
- triggerOff?: EventType | 'none';
182
+ triggerOff?: EventType;
185
183
  }
186
184
  export type ViewZoomOptions = ViewZoomSimpleOptions & IBaseInteractionOptions & ViewNavigationBaseOptions;
187
185
  export interface ViewScrollSimpleOptions {
@@ -214,7 +212,7 @@ export interface SankeyHighlightOptions extends IBaseInteractionOptions {
214
212
  nodeSelector?: string | IMark;
215
213
  linkSelector?: string | IMark;
216
214
  trigger?: EventType;
217
- triggerOff?: EventType | 'none';
215
+ triggerOff?: EventType;
218
216
  highlightState?: string;
219
217
  blurState?: string;
220
218
  effect?: 'adjacency' | 'related';
@@ -235,7 +233,7 @@ export interface FishEyeOptions extends IBaseInteractionOptions {
235
233
  trigger?: EventType;
236
234
  endTrigger?: EventType;
237
235
  updateTrigger?: EventType;
238
- triggerOff?: string | 'none';
236
+ triggerOff?: string;
239
237
  }
240
238
  export interface ElementActiveSpec extends ElementActiveOptions {
241
239
  type: 'element-active';
@@ -365,7 +363,5 @@ export interface ViewStateByDim {
365
363
  linkedComponent?: IDatazoom | IScrollbar;
366
364
  filterValue?: any[];
367
365
  wholeScale?: IBaseScale;
368
- initRangeFactor?: [number, number];
369
- getCurrentRange?: () => [number, number];
370
366
  rangeFactor?: [number, number];
371
367
  }