@visactor/vgrammar-core 0.7.7 → 0.8.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.
- package/cjs/component/axis.js.map +1 -1
- package/cjs/component/datazoom.d.ts +7 -4
- package/cjs/component/datazoom.js +21 -43
- package/cjs/component/datazoom.js.map +1 -1
- package/cjs/component/grid.js.map +1 -1
- package/cjs/component/index.d.ts +0 -2
- package/cjs/component/index.js +1 -19
- package/cjs/component/index.js.map +1 -1
- package/cjs/component/label.js.map +1 -1
- package/cjs/component/legend.d.ts +1 -3
- package/cjs/component/legend.js +5 -26
- package/cjs/component/legend.js.map +1 -1
- package/cjs/component/player.d.ts +1 -2
- package/cjs/component/player.js +15 -31
- package/cjs/component/player.js.map +1 -1
- package/cjs/component/scale.d.ts +1 -0
- package/cjs/component/scale.js +3 -0
- package/cjs/component/scale.js.map +1 -1
- package/cjs/component/scrollbar.d.ts +3 -4
- package/cjs/component/scrollbar.js +12 -54
- package/cjs/component/scrollbar.js.map +1 -1
- package/cjs/component/slider.d.ts +2 -5
- package/cjs/component/slider.js +4 -26
- package/cjs/component/slider.js.map +1 -1
- package/cjs/component/title.js.map +1 -1
- package/cjs/core/factory.d.ts +6 -3
- package/cjs/core/factory.js +9 -2
- package/cjs/core/factory.js.map +1 -1
- package/cjs/env.d.ts +1 -0
- package/cjs/env.js +20 -0
- package/cjs/env.js.map +1 -0
- package/cjs/glyph/index.js +2 -1
- package/cjs/glyph/link-path.js +1 -2
- package/cjs/graph/animation/animate.js +25 -19
- package/cjs/graph/animation/animate.js.map +1 -1
- package/cjs/graph/animation/animation/grow-cartesian.js.map +1 -1
- package/cjs/graph/animation/animator.js +4 -4
- package/cjs/graph/animation/animator.js.map +1 -1
- package/cjs/graph/animation/attribute.d.ts +2 -2
- package/cjs/graph/animation/attribute.js +12 -12
- package/cjs/graph/animation/attribute.js.map +1 -1
- package/cjs/graph/animation/morph.js +4 -4
- package/cjs/graph/animation/morph.js.map +1 -1
- package/cjs/graph/attributes/index.js +1 -1
- package/cjs/graph/attributes/index.js.map +1 -1
- package/cjs/graph/canvas-renderer.d.ts +1 -1
- package/cjs/graph/canvas-renderer.js +5 -5
- package/cjs/graph/canvas-renderer.js.map +1 -1
- package/cjs/graph/element.d.ts +1 -1
- package/cjs/graph/element.js +4 -4
- package/cjs/graph/element.js.map +1 -1
- package/cjs/graph/enums.d.ts +25 -8
- package/cjs/graph/enums.js +23 -14
- package/cjs/graph/enums.js.map +1 -1
- package/cjs/graph/glyph-element.d.ts +1 -1
- package/cjs/graph/glyph-element.js.map +1 -1
- package/cjs/graph/mark/encode.d.ts +0 -3
- package/cjs/graph/mark/encode.js +3 -12
- package/cjs/graph/mark/encode.js.map +1 -1
- package/cjs/graph/mark/large-rects.d.ts +2 -2
- package/cjs/graph/mark/large-rects.js +3 -3
- package/cjs/graph/mark/large-rects.js.map +1 -1
- package/cjs/graph/mark/large-symbols.d.ts +2 -2
- package/cjs/graph/mark/large-symbols.js +3 -3
- package/cjs/graph/mark/large-symbols.js.map +1 -1
- package/cjs/graph/util/env.js +2 -2
- package/cjs/graph/util/env.js.map +1 -1
- package/cjs/graph/util/events-extend.d.ts +1 -1
- package/cjs/graph/util/events-extend.js +1 -1
- package/cjs/graph/util/events-extend.js.map +1 -1
- package/cjs/graph/util/graphic.d.ts +3 -3
- package/cjs/graph/util/graphic.js +21 -21
- package/cjs/graph/util/graphic.js.map +1 -1
- package/cjs/index.d.ts +5 -1
- package/cjs/index.js +13 -3
- package/cjs/index.js.map +1 -1
- package/cjs/interactions/base-tooltip.d.ts +29 -0
- package/cjs/interactions/base-tooltip.js +74 -0
- package/cjs/interactions/base-tooltip.js.map +1 -0
- package/cjs/interactions/base.d.ts +14 -0
- package/cjs/interactions/base.js +41 -0
- package/cjs/interactions/base.js.map +1 -0
- package/cjs/interactions/brush-active.d.ts +17 -0
- package/cjs/interactions/brush-active.js +27 -0
- package/cjs/interactions/brush-active.js.map +1 -0
- package/cjs/interactions/brush-base.d.ts +43 -0
- package/cjs/interactions/brush-base.js +106 -0
- package/cjs/interactions/brush-base.js.map +1 -0
- package/cjs/interactions/brush-filter.d.ts +24 -0
- package/cjs/interactions/brush-filter.js +34 -0
- package/cjs/interactions/brush-filter.js.map +1 -0
- package/cjs/interactions/brush-highlight.d.ts +17 -0
- package/cjs/interactions/brush-highlight.js +34 -0
- package/cjs/interactions/brush-highlight.js.map +1 -0
- package/cjs/interactions/crosshair.d.ts +53 -0
- package/cjs/{component → interactions}/crosshair.js +80 -79
- package/cjs/interactions/crosshair.js.map +1 -0
- package/cjs/interactions/datazoom-filter.d.ts +13 -0
- package/cjs/interactions/datazoom-filter.js +42 -0
- package/cjs/interactions/datazoom-filter.js.map +1 -0
- package/cjs/interactions/dimension-tooltip.d.ts +18 -0
- package/cjs/interactions/dimension-tooltip.js +99 -0
- package/cjs/interactions/dimension-tooltip.js.map +1 -0
- package/cjs/interactions/drill-down.d.ts +25 -0
- package/cjs/interactions/drill-down.js +48 -0
- package/cjs/interactions/drill-down.js.map +1 -0
- package/cjs/interactions/element-active-by-legend.d.ts +17 -0
- package/cjs/interactions/element-active-by-legend.js +44 -0
- package/cjs/interactions/element-active-by-legend.js.map +1 -0
- package/cjs/interactions/element-active.d.ts +16 -0
- package/cjs/interactions/element-active.js +33 -0
- package/cjs/interactions/element-active.js.map +1 -0
- package/cjs/interactions/element-highlight-by-group.d.ts +17 -0
- package/cjs/interactions/element-highlight-by-group.js +53 -0
- package/cjs/interactions/element-highlight-by-group.js.map +1 -0
- package/cjs/interactions/element-highlight-by-key.d.ts +17 -0
- package/cjs/interactions/element-highlight-by-key.js +53 -0
- package/cjs/interactions/element-highlight-by-key.js.map +1 -0
- package/cjs/interactions/element-highlight-by-legend.d.ts +17 -0
- package/cjs/interactions/element-highlight-by-legend.js +47 -0
- package/cjs/interactions/element-highlight-by-legend.js.map +1 -0
- package/cjs/interactions/element-highlight-by-name.d.ts +18 -0
- package/cjs/interactions/element-highlight-by-name.js +59 -0
- package/cjs/interactions/element-highlight-by-name.js.map +1 -0
- package/cjs/interactions/element-highlight.d.ts +17 -0
- package/cjs/interactions/element-highlight.js +48 -0
- package/cjs/interactions/element-highlight.js.map +1 -0
- package/cjs/interactions/element-select.d.ts +18 -0
- package/cjs/interactions/element-select.js +42 -0
- package/cjs/interactions/element-select.js.map +1 -0
- package/cjs/interactions/filter.d.ts +20 -0
- package/cjs/interactions/filter.js +37 -0
- package/cjs/interactions/filter.js.map +1 -0
- package/cjs/interactions/fish-eye.d.ts +38 -0
- package/cjs/interactions/fish-eye.js +109 -0
- package/cjs/interactions/fish-eye.js.map +1 -0
- package/cjs/interactions/index.d.ts +50 -0
- package/cjs/interactions/index.js +386 -0
- package/cjs/interactions/index.js.map +1 -0
- package/cjs/interactions/legend-filter.d.ts +13 -0
- package/cjs/interactions/legend-filter.js +33 -0
- package/cjs/interactions/legend-filter.js.map +1 -0
- package/cjs/interactions/player-filter.d.ts +14 -0
- package/cjs/interactions/player-filter.js +32 -0
- package/cjs/interactions/player-filter.js.map +1 -0
- package/cjs/interactions/roll-up.d.ts +16 -0
- package/cjs/interactions/roll-up.js +47 -0
- package/cjs/interactions/roll-up.js.map +1 -0
- package/cjs/interactions/scrollbar-filter.d.ts +13 -0
- package/cjs/interactions/scrollbar-filter.js +54 -0
- package/cjs/interactions/scrollbar-filter.js.map +1 -0
- package/cjs/interactions/slider-filter.d.ts +13 -0
- package/cjs/interactions/slider-filter.js +32 -0
- package/cjs/interactions/slider-filter.js.map +1 -0
- package/cjs/interactions/tooltip.d.ts +15 -0
- package/cjs/interactions/tooltip.js +62 -0
- package/cjs/interactions/tooltip.js.map +1 -0
- package/cjs/interactions/view-drag-mixin.d.ts +22 -0
- package/cjs/interactions/view-drag-mixin.js +52 -0
- package/cjs/interactions/view-drag-mixin.js.map +1 -0
- package/cjs/interactions/view-drag.d.ts +19 -0
- package/cjs/interactions/view-drag.js +49 -0
- package/cjs/interactions/view-drag.js.map +1 -0
- package/cjs/interactions/view-navigation-base.d.ts +17 -0
- package/cjs/interactions/view-navigation-base.js +81 -0
- package/cjs/interactions/view-navigation-base.js.map +1 -0
- package/cjs/interactions/view-roam.d.ts +30 -0
- package/cjs/interactions/view-roam.js +93 -0
- package/cjs/interactions/view-roam.js.map +1 -0
- package/cjs/interactions/view-scroll-mixin.d.ts +10 -0
- package/cjs/interactions/view-scroll-mixin.js +45 -0
- package/cjs/interactions/view-scroll-mixin.js.map +1 -0
- package/cjs/interactions/view-scroll.d.ts +17 -0
- package/cjs/interactions/view-scroll.js +37 -0
- package/cjs/interactions/view-scroll.js.map +1 -0
- package/cjs/interactions/view-utils.d.ts +14 -0
- package/cjs/interactions/view-utils.js +73 -0
- package/cjs/interactions/view-utils.js.map +1 -0
- package/cjs/interactions/view-zoom-mixin.d.ts +29 -0
- package/cjs/interactions/view-zoom-mixin.js +77 -0
- package/cjs/interactions/view-zoom-mixin.js.map +1 -0
- package/cjs/interactions/view-zoom.d.ts +23 -0
- package/cjs/interactions/view-zoom.js +53 -0
- package/cjs/interactions/view-zoom.js.map +1 -0
- package/cjs/parse/coordinate.js +1 -1
- package/cjs/parse/event.d.ts +2 -0
- package/cjs/parse/event.js +8 -4
- package/cjs/parse/event.js.map +1 -1
- package/cjs/parse/mark.js +1 -1
- package/cjs/parse/option.js +2 -1
- package/cjs/parse/scale.js +1 -1
- package/cjs/parse/transform.js +1 -1
- package/cjs/parse/util.js +1 -1
- package/cjs/parse/view.js +1 -1
- package/cjs/semantic-marks/cell.d.ts +1 -1
- package/cjs/semantic-marks/cell.js +4 -4
- package/cjs/semantic-marks/cell.js.map +1 -1
- package/cjs/semantic-marks/interval.d.ts +1 -1
- package/cjs/semantic-marks/interval.js +1 -1
- package/cjs/semantic-marks/text.js +1 -1
- package/cjs/theme/dark.js +1 -1
- package/cjs/theme/default.js +1 -1
- package/cjs/theme/theme-manager.js +1 -1
- package/cjs/transforms/index.js +1 -1
- package/cjs/transforms/mark/dodge.js +4 -4
- package/cjs/transforms/mark/dodge.js.map +1 -1
- package/cjs/transforms/mark/jitter.js +2 -2
- package/cjs/transforms/mark/jitter.js.map +1 -1
- package/cjs/types/animate.d.ts +1 -1
- package/cjs/types/animate.js +1 -1
- package/cjs/types/animate.js.map +1 -1
- package/cjs/types/base.js +1 -1
- package/cjs/types/component.d.ts +16 -88
- package/cjs/types/component.js +1 -1
- package/cjs/types/component.js.map +1 -1
- package/cjs/types/coordinate.js +1 -1
- package/cjs/types/data.js +2 -1
- package/cjs/types/dataflow.js +1 -1
- package/cjs/types/element.d.ts +1 -1
- package/cjs/types/element.js +1 -1
- package/cjs/types/element.js.map +1 -1
- package/cjs/types/event.d.ts +11 -4
- package/cjs/types/event.js +1 -1
- package/cjs/types/event.js.map +1 -1
- package/cjs/types/glyph.js +1 -1
- package/cjs/types/grammar.d.ts +6 -2
- package/cjs/types/grammar.js +1 -1
- package/cjs/types/grammar.js.map +1 -1
- package/cjs/types/hooks.js +1 -1
- package/cjs/types/index.d.ts +1 -0
- package/cjs/types/index.js +3 -2
- package/cjs/types/index.js.map +1 -1
- package/cjs/types/interaction.d.ts +353 -0
- package/cjs/types/interaction.js +6 -0
- package/cjs/types/interaction.js.map +1 -0
- package/cjs/types/mark.d.ts +2 -3
- package/cjs/types/mark.js.map +1 -1
- package/cjs/types/morph.d.ts +1 -1
- package/cjs/types/morph.js.map +1 -1
- package/cjs/types/plot.d.ts +1 -1
- package/cjs/types/plot.js.map +1 -1
- package/cjs/types/renderer.d.ts +1 -1
- package/cjs/types/renderer.js.map +1 -1
- package/cjs/types/theme.d.ts +1 -1
- package/cjs/types/theme.js.map +1 -1
- package/cjs/types/view.d.ts +13 -14
- package/cjs/types/view.js.map +1 -1
- package/cjs/util/scale.d.ts +4 -0
- package/cjs/util/scale.js +24 -0
- package/cjs/util/scale.js.map +1 -0
- package/cjs/util/text.d.ts +1 -1
- package/cjs/util/text.js +3 -3
- package/cjs/util/text.js.map +1 -1
- package/cjs/view/View.d.ts +9 -13
- package/cjs/view/View.js +49 -74
- package/cjs/view/View.js.map +1 -1
- package/cjs/view/component.d.ts +2 -6
- package/cjs/view/component.js +1 -19
- package/cjs/view/component.js.map +1 -1
- package/cjs/view/dataflow.js +1 -1
- package/cjs/view/dataflow.js.map +1 -1
- package/cjs/view/events.d.ts +1 -1
- package/cjs/view/mark.d.ts +2 -2
- package/cjs/view/mark.js +12 -10
- package/cjs/view/mark.js.map +1 -1
- package/cjs/view/scale.d.ts +7 -1
- package/cjs/view/scale.js +17 -3
- package/cjs/view/scale.js.map +1 -1
- package/es/component/axis.js.map +1 -1
- package/es/component/datazoom.d.ts +7 -4
- package/es/component/datazoom.js +26 -42
- package/es/component/datazoom.js.map +1 -1
- package/es/component/grid.js.map +1 -1
- package/es/component/index.d.ts +0 -2
- package/es/component/index.js +0 -4
- package/es/component/index.js.map +1 -1
- package/es/component/label.js.map +1 -1
- package/es/component/legend.d.ts +1 -3
- package/es/component/legend.js +11 -26
- package/es/component/legend.js.map +1 -1
- package/es/component/player.d.ts +1 -2
- package/es/component/player.js +17 -30
- package/es/component/player.js.map +1 -1
- package/es/component/scale.d.ts +1 -0
- package/es/component/scale.js +3 -0
- package/es/component/scale.js.map +1 -1
- package/es/component/scrollbar.d.ts +3 -4
- package/es/component/scrollbar.js +17 -53
- package/es/component/scrollbar.js.map +1 -1
- package/es/component/slider.d.ts +2 -5
- package/es/component/slider.js +9 -25
- package/es/component/slider.js.map +1 -1
- package/es/component/title.js.map +1 -1
- package/es/core/factory.d.ts +6 -3
- package/es/core/factory.js +9 -2
- package/es/core/factory.js.map +1 -1
- package/es/env.d.ts +1 -0
- package/es/env.js +1 -0
- package/es/env.js.map +1 -0
- package/es/glyph/index.js +2 -1
- package/es/glyph/link-path.js +1 -2
- package/es/graph/animation/animate.js +24 -19
- package/es/graph/animation/animate.js.map +1 -1
- package/es/graph/animation/animation/grow-cartesian.js.map +1 -1
- package/es/graph/animation/animator.js +1 -1
- package/es/graph/animation/animator.js.map +1 -1
- package/es/graph/animation/attribute.d.ts +2 -2
- package/es/graph/animation/attribute.js +7 -7
- package/es/graph/animation/attribute.js.map +1 -1
- package/es/graph/animation/morph.js +1 -1
- package/es/graph/animation/morph.js.map +1 -1
- package/es/graph/attributes/index.js +1 -1
- package/es/graph/attributes/index.js.map +1 -1
- package/es/graph/canvas-renderer.d.ts +1 -1
- package/es/graph/canvas-renderer.js +3 -1
- package/es/graph/canvas-renderer.js.map +1 -1
- package/es/graph/element.d.ts +1 -1
- package/es/graph/element.js +3 -3
- package/es/graph/element.js.map +1 -1
- package/es/graph/enums.d.ts +25 -8
- package/es/graph/enums.js +27 -11
- package/es/graph/enums.js.map +1 -1
- package/es/graph/glyph-element.d.ts +1 -1
- package/es/graph/glyph-element.js.map +1 -1
- package/es/graph/mark/encode.d.ts +0 -3
- package/es/graph/mark/encode.js +0 -10
- package/es/graph/mark/encode.js.map +1 -1
- package/es/graph/mark/large-rects.d.ts +2 -2
- package/es/graph/mark/large-rects.js +1 -1
- package/es/graph/mark/large-rects.js.map +1 -1
- package/es/graph/mark/large-symbols.d.ts +2 -2
- package/es/graph/mark/large-symbols.js +1 -1
- package/es/graph/mark/large-symbols.js.map +1 -1
- package/es/graph/util/env.js +1 -1
- package/es/graph/util/env.js.map +1 -1
- package/es/graph/util/events-extend.d.ts +1 -1
- package/es/graph/util/events-extend.js +1 -1
- package/es/graph/util/events-extend.js.map +1 -1
- package/es/graph/util/graphic.d.ts +3 -3
- package/es/graph/util/graphic.js +1 -1
- package/es/graph/util/graphic.js.map +1 -1
- package/es/index.d.ts +5 -1
- package/es/index.js +11 -2
- package/es/index.js.map +1 -1
- package/es/interactions/base-tooltip.d.ts +29 -0
- package/es/interactions/base-tooltip.js +73 -0
- package/es/interactions/base-tooltip.js.map +1 -0
- package/es/interactions/base.d.ts +14 -0
- package/es/interactions/base.js +32 -0
- package/es/interactions/base.js.map +1 -0
- package/es/interactions/brush-active.d.ts +17 -0
- package/es/interactions/brush-active.js +23 -0
- package/es/interactions/brush-active.js.map +1 -0
- package/es/interactions/brush-base.d.ts +43 -0
- package/es/interactions/brush-base.js +103 -0
- package/es/interactions/brush-base.js.map +1 -0
- package/es/interactions/brush-filter.d.ts +24 -0
- package/es/interactions/brush-filter.js +33 -0
- package/es/interactions/brush-filter.js.map +1 -0
- package/es/interactions/brush-highlight.d.ts +17 -0
- package/es/interactions/brush-highlight.js +31 -0
- package/es/interactions/brush-highlight.js.map +1 -0
- package/es/interactions/crosshair.d.ts +53 -0
- package/es/{component → interactions}/crosshair.js +82 -81
- package/es/interactions/crosshair.js.map +1 -0
- package/es/interactions/datazoom-filter.d.ts +13 -0
- package/es/interactions/datazoom-filter.js +40 -0
- package/es/interactions/datazoom-filter.js.map +1 -0
- package/es/interactions/dimension-tooltip.d.ts +18 -0
- package/es/interactions/dimension-tooltip.js +99 -0
- package/es/interactions/dimension-tooltip.js.map +1 -0
- package/es/interactions/drill-down.d.ts +25 -0
- package/es/interactions/drill-down.js +46 -0
- package/es/interactions/drill-down.js.map +1 -0
- package/es/interactions/element-active-by-legend.d.ts +17 -0
- package/es/interactions/element-active-by-legend.js +43 -0
- package/es/interactions/element-active-by-legend.js.map +1 -0
- package/es/interactions/element-active.d.ts +16 -0
- package/es/interactions/element-active.js +29 -0
- package/es/interactions/element-active.js.map +1 -0
- package/es/interactions/element-highlight-by-group.d.ts +17 -0
- package/es/interactions/element-highlight-by-group.js +49 -0
- package/es/interactions/element-highlight-by-group.js.map +1 -0
- package/es/interactions/element-highlight-by-key.d.ts +17 -0
- package/es/interactions/element-highlight-by-key.js +50 -0
- package/es/interactions/element-highlight-by-key.js.map +1 -0
- package/es/interactions/element-highlight-by-legend.d.ts +17 -0
- package/es/interactions/element-highlight-by-legend.js +46 -0
- package/es/interactions/element-highlight-by-legend.js.map +1 -0
- package/es/interactions/element-highlight-by-name.d.ts +18 -0
- package/es/interactions/element-highlight-by-name.js +56 -0
- package/es/interactions/element-highlight-by-name.js.map +1 -0
- package/es/interactions/element-highlight.d.ts +17 -0
- package/es/interactions/element-highlight.js +43 -0
- package/es/interactions/element-highlight.js.map +1 -0
- package/es/interactions/element-select.d.ts +18 -0
- package/es/interactions/element-select.js +38 -0
- package/es/interactions/element-select.js.map +1 -0
- package/es/interactions/filter.d.ts +20 -0
- package/es/interactions/filter.js +31 -0
- package/es/interactions/filter.js.map +1 -0
- package/es/interactions/fish-eye.d.ts +38 -0
- package/es/interactions/fish-eye.js +105 -0
- package/es/interactions/fish-eye.js.map +1 -0
- package/es/interactions/index.d.ts +50 -0
- package/es/interactions/index.js +149 -0
- package/es/interactions/index.js.map +1 -0
- package/es/interactions/legend-filter.d.ts +13 -0
- package/es/interactions/legend-filter.js +32 -0
- package/es/interactions/legend-filter.js.map +1 -0
- package/es/interactions/player-filter.d.ts +14 -0
- package/es/interactions/player-filter.js +32 -0
- package/es/interactions/player-filter.js.map +1 -0
- package/es/interactions/roll-up.d.ts +16 -0
- package/es/interactions/roll-up.js +45 -0
- package/es/interactions/roll-up.js.map +1 -0
- package/es/interactions/scrollbar-filter.d.ts +13 -0
- package/es/interactions/scrollbar-filter.js +50 -0
- package/es/interactions/scrollbar-filter.js.map +1 -0
- package/es/interactions/slider-filter.d.ts +13 -0
- package/es/interactions/slider-filter.js +29 -0
- package/es/interactions/slider-filter.js.map +1 -0
- package/es/interactions/tooltip.d.ts +15 -0
- package/es/interactions/tooltip.js +58 -0
- package/es/interactions/tooltip.js.map +1 -0
- package/es/interactions/view-drag-mixin.d.ts +22 -0
- package/es/interactions/view-drag-mixin.js +46 -0
- package/es/interactions/view-drag-mixin.js.map +1 -0
- package/es/interactions/view-drag.d.ts +19 -0
- package/es/interactions/view-drag.js +47 -0
- package/es/interactions/view-drag.js.map +1 -0
- package/es/interactions/view-navigation-base.d.ts +17 -0
- package/es/interactions/view-navigation-base.js +78 -0
- package/es/interactions/view-navigation-base.js.map +1 -0
- package/es/interactions/view-roam.d.ts +30 -0
- package/es/interactions/view-roam.js +91 -0
- package/es/interactions/view-roam.js.map +1 -0
- package/es/interactions/view-scroll-mixin.d.ts +10 -0
- package/es/interactions/view-scroll-mixin.js +37 -0
- package/es/interactions/view-scroll-mixin.js.map +1 -0
- package/es/interactions/view-scroll.d.ts +17 -0
- package/es/interactions/view-scroll.js +35 -0
- package/es/interactions/view-scroll.js.map +1 -0
- package/es/interactions/view-utils.d.ts +14 -0
- package/es/interactions/view-utils.js +60 -0
- package/es/interactions/view-utils.js.map +1 -0
- package/es/interactions/view-zoom-mixin.d.ts +29 -0
- package/es/interactions/view-zoom-mixin.js +68 -0
- package/es/interactions/view-zoom-mixin.js.map +1 -0
- package/es/interactions/view-zoom.d.ts +23 -0
- package/es/interactions/view-zoom.js +51 -0
- package/es/interactions/view-zoom.js.map +1 -0
- package/es/parse/event.d.ts +2 -0
- package/es/parse/event.js +5 -1
- package/es/parse/event.js.map +1 -1
- package/es/parse/option.js +2 -1
- package/es/parse/scale.js +1 -2
- package/es/semantic-marks/cell.d.ts +1 -1
- package/es/semantic-marks/cell.js +4 -2
- package/es/semantic-marks/cell.js.map +1 -1
- package/es/semantic-marks/interval.d.ts +1 -1
- package/es/semantic-marks/interval.js +1 -1
- package/es/semantic-marks/text.js +1 -1
- package/es/theme/dark.js +1 -1
- package/es/theme/default.js +1 -1
- package/es/theme/theme-manager.js +1 -1
- package/es/transforms/index.js +1 -1
- package/es/transforms/mark/dodge.js +2 -2
- package/es/transforms/mark/dodge.js.map +1 -1
- package/es/transforms/mark/jitter.js +2 -2
- package/es/transforms/mark/jitter.js.map +1 -1
- package/es/types/animate.d.ts +1 -1
- package/es/types/animate.js +1 -1
- package/es/types/animate.js.map +1 -1
- package/es/types/base.js +1 -1
- package/es/types/component.d.ts +16 -88
- package/es/types/component.js +1 -1
- package/es/types/component.js.map +1 -1
- package/es/types/coordinate.js +1 -1
- package/es/types/data.js +2 -1
- package/es/types/dataflow.js +1 -1
- package/es/types/element.d.ts +1 -1
- package/es/types/element.js +1 -1
- package/es/types/element.js.map +1 -1
- package/es/types/event.d.ts +11 -4
- package/es/types/event.js +1 -1
- package/es/types/event.js.map +1 -1
- package/es/types/glyph.js +1 -1
- package/es/types/grammar.d.ts +6 -2
- package/es/types/grammar.js +1 -1
- package/es/types/grammar.js.map +1 -1
- package/es/types/hooks.js +1 -1
- package/es/types/index.d.ts +1 -0
- package/es/types/index.js +3 -1
- package/es/types/index.js.map +1 -1
- package/es/types/interaction.d.ts +353 -0
- package/es/types/interaction.js +2 -0
- package/es/types/interaction.js.map +1 -0
- package/es/types/mark.d.ts +2 -3
- package/es/types/mark.js.map +1 -1
- package/es/types/morph.d.ts +1 -1
- package/es/types/morph.js.map +1 -1
- package/es/types/plot.d.ts +1 -1
- package/es/types/plot.js.map +1 -1
- package/es/types/renderer.d.ts +1 -1
- package/es/types/renderer.js.map +1 -1
- package/es/types/theme.d.ts +1 -1
- package/es/types/theme.js.map +1 -1
- package/es/types/view.d.ts +13 -14
- package/es/types/view.js.map +1 -1
- package/es/util/scale.d.ts +4 -0
- package/es/util/scale.js +15 -0
- package/es/util/scale.js.map +1 -0
- package/es/util/text.d.ts +1 -1
- package/es/util/text.js +1 -1
- package/es/util/text.js.map +1 -1
- package/es/view/View.d.ts +9 -13
- package/es/view/View.js +49 -69
- package/es/view/View.js.map +1 -1
- package/es/view/component.d.ts +2 -6
- package/es/view/component.js +0 -20
- package/es/view/component.js.map +1 -1
- package/es/view/dataflow.js +1 -1
- package/es/view/dataflow.js.map +1 -1
- package/es/view/events.d.ts +1 -1
- package/es/view/mark.d.ts +2 -2
- package/es/view/mark.js +12 -10
- package/es/view/mark.js.map +1 -1
- package/es/view/scale.d.ts +7 -1
- package/es/view/scale.js +17 -2
- package/es/view/scale.js.map +1 -1
- package/package.json +9 -8
- package/cjs/component/crosshair.d.ts +0 -50
- package/cjs/component/crosshair.js.map +0 -1
- package/cjs/component/tooltip.d.ts +0 -62
- package/cjs/component/tooltip.js +0 -305
- package/cjs/component/tooltip.js.map +0 -1
- package/es/component/crosshair.d.ts +0 -50
- package/es/component/crosshair.js.map +0 -1
- package/es/component/tooltip.d.ts +0 -62
- package/es/component/tooltip.js +0 -303
- package/es/component/tooltip.js.map +0 -1
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { isNil } from "@visactor/vutils";
|
|
2
|
+
|
|
3
|
+
import { handleScrolling } from "./view-utils";
|
|
4
|
+
|
|
5
|
+
export class ViewDragMixin {
|
|
6
|
+
_shouldTriggerDragByPointer(e) {
|
|
7
|
+
if (!isNil(e.pointerId)) {
|
|
8
|
+
const shouldStart = isNil(this._pointerId) || this._pointerId === e.pointerId;
|
|
9
|
+
return this._pointerId = e.pointerId, shouldStart;
|
|
10
|
+
}
|
|
11
|
+
return !0;
|
|
12
|
+
}
|
|
13
|
+
_shouldStart(e) {
|
|
14
|
+
return this._shouldTriggerDragByPointer(e);
|
|
15
|
+
}
|
|
16
|
+
_shouldUpdate(e) {
|
|
17
|
+
return this._shouldTriggerDragByPointer(e);
|
|
18
|
+
}
|
|
19
|
+
handleDragStart(e, navState, dragOptions) {
|
|
20
|
+
if (this._shouldStart(e)) return this._dragStart = {
|
|
21
|
+
x: e.canvasX,
|
|
22
|
+
y: e.canvasY
|
|
23
|
+
}, null;
|
|
24
|
+
}
|
|
25
|
+
handleDragUpdate(e, navState, dragOptions) {
|
|
26
|
+
if (this._dragStart && this._shouldUpdate(e)) {
|
|
27
|
+
if (null == dragOptions ? void 0 : dragOptions.realtime) {
|
|
28
|
+
const x = e.canvasX - this._dragStart.x, y = e.canvasY - this._dragStart.y;
|
|
29
|
+
return handleScrolling({
|
|
30
|
+
x: x,
|
|
31
|
+
y: y
|
|
32
|
+
}, navState, dragOptions);
|
|
33
|
+
}
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
handleDragEnd(e, navState, dragOptions) {
|
|
38
|
+
if (!this._dragStart) return;
|
|
39
|
+
const res = !1 === (null == dragOptions ? void 0 : dragOptions.realtime) ? handleScrolling({
|
|
40
|
+
x: e.canvasX - this._dragStart.x,
|
|
41
|
+
y: e.canvasY - this._dragStart.y
|
|
42
|
+
}, navState, dragOptions) : null;
|
|
43
|
+
return this._pointerId = null, this._dragStart = null, res;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=view-drag-mixin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/interactions/view-drag-mixin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAQzC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,OAAO,aAAa;IAMd,2BAA2B,CAAC,CAAmB;QACvD,IAAI,CAAC,KAAK,CAAE,CAAS,CAAC,SAAS,CAAC,EAAE;YAChC,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,KAAM,CAAS,CAAC,SAAS,CAAC;YACvF,IAAI,CAAC,UAAU,GAAI,CAAS,CAAC,SAAS,CAAC;YAEvC,OAAO,WAAW,CAAC;SACpB;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAES,YAAY,CAAC,CAAmB;QACxC,OAAO,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAES,aAAa,CAAC,CAAmB;QACzC,OAAO,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,eAAe,CACb,CAAmB,EACnB,QAAoD,EACpD,WAAmC;QAEnC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;YACzB,OAAO;SACR;QAED,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAgB,CACd,CAAmB,EACnB,QAAoD,EACpD,WAAmC;QAEnC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;YAC9C,OAAO;SACR;QAED,IAAI,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,QAAQ,EAAE;YACzB,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YACxC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YACxC,OAAO,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;SACzD;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CACX,CAAmB,EACnB,QAAoD,EACpD,WAAmC;QAEnC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,OAAO;SACR;QACD,MAAM,GAAG,GACP,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,QAAQ,MAAK,KAAK;YAC7B,CAAC,CAAC,eAAe,CACb;gBACE,CAAC,EAAE,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;gBAChC,CAAC,EAAE,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;aACjC,EACD,QAAQ,EACR,WAAW,CACZ;YACH,CAAC,CAAC,IAAI,CAAC;QAEX,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,OAAO,GAAG,CAAC;IACb,CAAC;CACF","file":"view-drag-mixin.js","sourcesContent":["import { isNil } from '@visactor/vutils';\nimport type {\n InteractionEvent,\n IViewDragMixin,\n ViewNavigationRange,\n ViewDragSimpleOptions,\n ViewStateByDim\n} from '../types';\nimport { handleScrolling } from './view-utils';\n\nexport class ViewDragMixin implements IViewDragMixin {\n protected _pointerId: number;\n protected _dragStart: { x: number; y: number };\n protected _filterValueX: { start: number; end: number };\n protected _filterValueY: { start: number; end: number };\n\n protected _shouldTriggerDragByPointer(e: InteractionEvent) {\n if (!isNil((e as any).pointerId)) {\n const shouldStart = isNil(this._pointerId) || this._pointerId === (e as any).pointerId;\n this._pointerId = (e as any).pointerId;\n\n return shouldStart;\n }\n\n return true;\n }\n\n protected _shouldStart(e: InteractionEvent) {\n return this._shouldTriggerDragByPointer(e);\n }\n\n protected _shouldUpdate(e: InteractionEvent) {\n return this._shouldTriggerDragByPointer(e);\n }\n\n handleDragStart(\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n dragOptions?: ViewDragSimpleOptions\n ): ViewNavigationRange {\n if (!this._shouldStart(e)) {\n return;\n }\n\n this._dragStart = { x: e.canvasX, y: e.canvasY };\n return null;\n }\n\n handleDragUpdate(\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n dragOptions?: ViewDragSimpleOptions\n ): ViewNavigationRange {\n if (!this._dragStart || !this._shouldUpdate(e)) {\n return;\n }\n\n if (dragOptions?.realtime) {\n const x = e.canvasX - this._dragStart.x;\n const y = e.canvasY - this._dragStart.y;\n return handleScrolling({ x, y }, navState, dragOptions);\n }\n\n return null;\n }\n\n handleDragEnd(\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n dragOptions?: ViewDragSimpleOptions\n ): ViewNavigationRange {\n if (!this._dragStart) {\n return;\n }\n const res =\n dragOptions?.realtime === false\n ? handleScrolling(\n {\n x: e.canvasX - this._dragStart.x,\n y: e.canvasY - this._dragStart.y\n },\n navState,\n dragOptions\n )\n : null;\n\n this._pointerId = null;\n this._dragStart = null;\n\n return res;\n }\n}\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ViewDragOptions, IView, InteractionEvent, IViewDragMixin } from '../types';
|
|
2
|
+
import { ViewNavigationBase } from './view-navigation-base';
|
|
3
|
+
export interface ViewDrag extends Pick<IViewDragMixin, 'handleDragStart' | 'handleDragEnd' | 'handleDragUpdate'>, ViewNavigationBase<ViewDragOptions> {
|
|
4
|
+
}
|
|
5
|
+
export declare class ViewDrag extends ViewNavigationBase<ViewDragOptions> {
|
|
6
|
+
static type: string;
|
|
7
|
+
type: string;
|
|
8
|
+
static defaultOptions: ViewDragOptions;
|
|
9
|
+
protected _inited?: boolean;
|
|
10
|
+
protected handleUpdate: (e: InteractionEvent) => void;
|
|
11
|
+
constructor(view: IView, option?: ViewDragOptions);
|
|
12
|
+
protected getEvents(): {
|
|
13
|
+
type: import("../types").EventType;
|
|
14
|
+
handler: (e: InteractionEvent) => void;
|
|
15
|
+
}[];
|
|
16
|
+
handleStart: (e: InteractionEvent) => void;
|
|
17
|
+
handleUpdateInner: (e: InteractionEvent) => void;
|
|
18
|
+
handleEnd: (e: InteractionEvent) => void;
|
|
19
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { throttle } from "@visactor/vutils";
|
|
2
|
+
|
|
3
|
+
import { InteractionEventEnum } from "../graph/enums";
|
|
4
|
+
|
|
5
|
+
import { ViewNavigationBase } from "./view-navigation-base";
|
|
6
|
+
|
|
7
|
+
export class ViewDrag extends ViewNavigationBase {
|
|
8
|
+
constructor(view, option) {
|
|
9
|
+
super(view, Object.assign({}, ViewDrag.defaultOptions, option)), this.type = ViewDrag.type,
|
|
10
|
+
this.handleStart = e => {
|
|
11
|
+
!e || this.options.shouldStart && !this.options.shouldStart(e) || (this._inited || this._initGrammars(),
|
|
12
|
+
this.updateView(InteractionEventEnum.viewDragStart, this.handleDragStart(e, this._state, {
|
|
13
|
+
reversed: this.options.reversed
|
|
14
|
+
}), e));
|
|
15
|
+
}, this.handleUpdateInner = e => {
|
|
16
|
+
!e || this.options.shouldUpdate && !this.options.shouldUpdate(e) || this.updateView(InteractionEventEnum.viewDragUpdate, this.handleDragUpdate(e, this._state, {
|
|
17
|
+
reversed: this.options.reversed
|
|
18
|
+
}), e);
|
|
19
|
+
}, this.handleEnd = e => {
|
|
20
|
+
!e || this.options.shouldEnd && !this.options.shouldEnd(e) || this.updateView(InteractionEventEnum.viewDragEnd, this.handleDragEnd(e, this._state, {
|
|
21
|
+
reversed: this.options.reversed
|
|
22
|
+
}), e);
|
|
23
|
+
}, this.handleUpdate = throttle(this.handleUpdateInner, this.options.throttle);
|
|
24
|
+
}
|
|
25
|
+
getEvents() {
|
|
26
|
+
return [ {
|
|
27
|
+
type: this.options.trigger,
|
|
28
|
+
handler: this.handleStart
|
|
29
|
+
}, {
|
|
30
|
+
type: this.options.endTrigger,
|
|
31
|
+
handler: this.handleEnd
|
|
32
|
+
}, {
|
|
33
|
+
type: this.options.updateTrigger,
|
|
34
|
+
handler: this.handleUpdate
|
|
35
|
+
} ];
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
ViewDrag.type = "view-drag", ViewDrag.defaultOptions = {
|
|
40
|
+
realtime: !0,
|
|
41
|
+
reversed: !1,
|
|
42
|
+
trigger: "pointerdown",
|
|
43
|
+
updateTrigger: "pointermove",
|
|
44
|
+
endTrigger: "pointerup",
|
|
45
|
+
throttle: 100
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=view-drag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/interactions/view-drag.ts"],"names":[],"mappings":"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","file":"view-drag.js","sourcesContent":["import { throttle } from '@visactor/vutils';\nimport { InteractionEventEnum } from '../graph/enums';\nimport type { ViewDragOptions, IView, InteractionEvent, IViewDragMixin } from '../types';\nimport { ViewNavigationBase } from './view-navigation-base';\n\nexport interface ViewDrag\n extends Pick<IViewDragMixin, 'handleDragStart' | 'handleDragEnd' | 'handleDragUpdate'>,\n ViewNavigationBase<ViewDragOptions> {}\nexport class ViewDrag extends ViewNavigationBase<ViewDragOptions> {\n static type: string = 'view-drag';\n type: string = ViewDrag.type;\n\n static defaultOptions: ViewDragOptions = {\n realtime: true,\n reversed: false,\n trigger: 'pointerdown',\n updateTrigger: 'pointermove',\n endTrigger: 'pointerup',\n throttle: 100\n };\n\n protected _inited?: boolean;\n\n protected handleUpdate: (e: InteractionEvent) => void;\n\n constructor(view: IView, option?: ViewDragOptions) {\n super(view, Object.assign({}, ViewDrag.defaultOptions, option));\n this.handleUpdate = throttle(this.handleUpdateInner, this.options.throttle);\n }\n\n protected getEvents() {\n return [\n { type: this.options.trigger, handler: this.handleStart },\n { type: this.options.endTrigger, handler: this.handleEnd },\n { type: this.options.updateTrigger, handler: this.handleUpdate }\n ];\n }\n\n handleStart = (e: InteractionEvent) => {\n if (!e || (this.options.shouldStart && !this.options.shouldStart(e))) {\n return;\n }\n\n if (!this._inited) {\n this._initGrammars();\n }\n\n this.updateView(\n InteractionEventEnum.viewDragStart,\n this.handleDragStart(e, this._state, { reversed: this.options.reversed }),\n e\n );\n };\n\n handleUpdateInner = (e: InteractionEvent) => {\n if (!e || (this.options.shouldUpdate && !this.options.shouldUpdate(e))) {\n return;\n }\n\n this.updateView(\n InteractionEventEnum.viewDragUpdate,\n this.handleDragUpdate(e, this._state, { reversed: this.options.reversed }),\n e\n );\n };\n\n handleEnd = (e: InteractionEvent) => {\n if (!e || (this.options.shouldEnd && !this.options.shouldEnd(e))) {\n return;\n }\n\n this.updateView(\n InteractionEventEnum.viewDragEnd,\n this.handleDragEnd(e, this._state, { reversed: this.options.reversed }),\n e\n );\n };\n}\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { FilterDataTarget, IBaseInteractionOptions, IDataFilter, IDatazoom, IScale, IScrollbar, IView, InteractionEvent, ViewNavigationBaseOptions, ViewNavigationRange, ViewStateByDim } from '../types';
|
|
2
|
+
import { BaseInteraction } from './base';
|
|
3
|
+
export declare abstract class ViewNavigationBase<T extends ViewNavigationBaseOptions & IBaseInteractionOptions> extends BaseInteraction<T> {
|
|
4
|
+
options: T;
|
|
5
|
+
protected _state: Partial<Record<'x' | 'y', ViewStateByDim>>;
|
|
6
|
+
protected _inited?: boolean;
|
|
7
|
+
protected _dataFilterX: IDataFilter;
|
|
8
|
+
protected _dataFilterY: IDataFilter;
|
|
9
|
+
constructor(view: IView, options?: T);
|
|
10
|
+
protected _parseLinkedComponent(option: string | IDatazoom | IScrollbar): IDatazoom | IScrollbar;
|
|
11
|
+
protected _initStateByDim(dim: 'x' | 'y', linkedComponent?: string | IDatazoom | IScrollbar, scale?: string | IScale, dataTarget?: FilterDataTarget): void;
|
|
12
|
+
protected _initGrammars(): void;
|
|
13
|
+
protected _updateLinkedComponent(comp: IDatazoom | IScrollbar, newRange: [number, number]): void;
|
|
14
|
+
updateView(type: string, newRange: ViewNavigationRange, e?: InteractionEvent): void;
|
|
15
|
+
protected dispatchEvent(type: string, viewRange: ViewNavigationRange, e?: InteractionEvent): void;
|
|
16
|
+
unbind(): void;
|
|
17
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { isNil, isString } from "@visactor/vutils";
|
|
2
|
+
|
|
3
|
+
import { BaseInteraction } from "./base";
|
|
4
|
+
|
|
5
|
+
import { ComponentEnum, DataFilterRank, GrammarMarkType } from "../graph/enums";
|
|
6
|
+
|
|
7
|
+
import { getScaleRangeRatio } from "../util/scale";
|
|
8
|
+
|
|
9
|
+
export class ViewNavigationBase extends BaseInteraction {
|
|
10
|
+
constructor(view, options) {
|
|
11
|
+
super(view, options), this.options = options;
|
|
12
|
+
}
|
|
13
|
+
_parseLinkedComponent(option) {
|
|
14
|
+
if (!option) return null;
|
|
15
|
+
const comp = isString(option) ? this.view.getMarkById(option) : option;
|
|
16
|
+
return !comp || comp.markType !== GrammarMarkType.component || comp.componentType !== ComponentEnum.datazoom && comp.componentType !== ComponentEnum.scrollbar ? null : comp;
|
|
17
|
+
}
|
|
18
|
+
_initStateByDim(dim, linkedComponent, scale, dataTarget) {
|
|
19
|
+
const comp = this._parseLinkedComponent(linkedComponent);
|
|
20
|
+
if (comp) return void (this._state[dim] = {
|
|
21
|
+
linkedComponent: comp
|
|
22
|
+
});
|
|
23
|
+
const scaleGrammar = isNil(scale) ? null : isString(scale) ? this.view.getScaleById(scale) : scale, dataGrammar = isNil(null == dataTarget ? void 0 : dataTarget.data) ? null : isString(dataTarget.data) ? this.view.getDataById(dataTarget.data) : dataTarget.data;
|
|
24
|
+
if (!scaleGrammar || !dataGrammar) return void (this._state[dim] = {
|
|
25
|
+
data: dataGrammar,
|
|
26
|
+
scale: scaleGrammar
|
|
27
|
+
});
|
|
28
|
+
dataGrammar.attach(scaleGrammar);
|
|
29
|
+
const filterByScale = isString(dataTarget.filter) ? (datum, filterValue) => {
|
|
30
|
+
const scale = scaleGrammar.getScale(), ratio = getScaleRangeRatio(scale, datum[dataTarget.filter]);
|
|
31
|
+
return ratio >= filterValue[0] && ratio <= filterValue[1];
|
|
32
|
+
} : dataTarget.filter, dataFilter = {
|
|
33
|
+
source: `${scaleGrammar.uid}`,
|
|
34
|
+
rank: DataFilterRank.normal,
|
|
35
|
+
filter: data => {
|
|
36
|
+
var _a, _b, _c, _d;
|
|
37
|
+
const filterValue = "x" === dim ? null === (_b = null === (_a = this._state) || void 0 === _a ? void 0 : _a.x) || void 0 === _b ? void 0 : _b.filterValue : null === (_d = null === (_c = this._state) || void 0 === _c ? void 0 : _c.y) || void 0 === _d ? void 0 : _d.filterValue;
|
|
38
|
+
if (!filterValue) return data;
|
|
39
|
+
const filteredData = data.filter((datum => filterByScale(datum, filterValue)));
|
|
40
|
+
return dataTarget.transform ? dataTarget.transform(filteredData, filterValue) : filteredData;
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
"x" === dim ? this._dataFilterX = dataFilter : this._dataFilterY = dataFilter, dataGrammar.addDataFilter(dataFilter),
|
|
44
|
+
this._state[dim] = {
|
|
45
|
+
data: dataGrammar,
|
|
46
|
+
scale: scaleGrammar
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
_initGrammars() {
|
|
50
|
+
const {enableX: enableX, enableY: enableY, scaleX: scaleX, scaleY: scaleY, dataTargetX: dataTargetX, dataTargetY: dataTargetY, linkedComponentX: linkedComponentX, linkedComponentY: linkedComponentY} = this.options;
|
|
51
|
+
this._state = {}, !1 !== enableX && this._initStateByDim("x", linkedComponentX, scaleX, dataTargetX),
|
|
52
|
+
!1 !== enableY && this._initStateByDim("y", linkedComponentY, scaleY, dataTargetY),
|
|
53
|
+
this._inited = !0;
|
|
54
|
+
}
|
|
55
|
+
_updateLinkedComponent(comp, newRange) {
|
|
56
|
+
comp.componentType === ComponentEnum.datazoom ? comp.setStartEndValue(newRange[0], newRange[1]) : comp.setScrollStart(newRange[0]);
|
|
57
|
+
}
|
|
58
|
+
updateView(type, newRange, e) {
|
|
59
|
+
var _a, _b, _c, _d;
|
|
60
|
+
(null == newRange ? void 0 : newRange.x) && (null === (_b = null === (_a = this._state) || void 0 === _a ? void 0 : _a.x) || void 0 === _b ? void 0 : _b.linkedComponent) && this._updateLinkedComponent(this._state.x.linkedComponent, newRange.x),
|
|
61
|
+
(null == newRange ? void 0 : newRange.y) && (null === (_d = null === (_c = this._state) || void 0 === _c ? void 0 : _c.y) || void 0 === _d ? void 0 : _d.linkedComponent) && this._updateLinkedComponent(this._state.y.linkedComponent, newRange.y),
|
|
62
|
+
(null == newRange ? void 0 : newRange.needUpdate) && this.view.runAsync(), this.dispatchEvent(type, newRange, e);
|
|
63
|
+
}
|
|
64
|
+
dispatchEvent(type, viewRange, e) {
|
|
65
|
+
this.view.emit(type, {
|
|
66
|
+
viewRange: viewRange,
|
|
67
|
+
event: e
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
unbind() {
|
|
71
|
+
super.unbind(), this._state && Object.keys(this._state).forEach((dim => {
|
|
72
|
+
const {data: data, scale: scale} = this._state[dim];
|
|
73
|
+
data && scale ? (data.detach(scale), data.removeDataFilter("x" === dim ? this._dataFilterX : this._dataFilterY)) : scale && (scale.setRangeFactor(null),
|
|
74
|
+
scale.commit());
|
|
75
|
+
})), this._state = null;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=view-navigation-base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/interactions/view-navigation-base.ts"],"names":[],"mappings":"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","file":"view-navigation-base.js","sourcesContent":["import { isNil, isString } from '@visactor/vutils';\nimport type {\n FilterDataTarget,\n IBaseInteractionOptions,\n IComponent,\n IDataFilter,\n IDatazoom,\n IMark,\n IScale,\n IScrollbar,\n IView,\n InteractionEvent,\n ViewNavigationBaseOptions,\n ViewNavigationRange,\n ViewStateByDim\n} from '../types';\nimport { BaseInteraction } from './base';\nimport { ComponentEnum, DataFilterRank, GrammarMarkType } from '../graph/enums';\nimport { getScaleRangeRatio } from '../util/scale';\n\nexport abstract class ViewNavigationBase<\n T extends ViewNavigationBaseOptions & IBaseInteractionOptions\n> extends BaseInteraction<T> {\n options: T;\n\n protected _state: Partial<Record<'x' | 'y', ViewStateByDim>>;\n protected _inited?: boolean;\n protected _dataFilterX: IDataFilter;\n protected _dataFilterY: IDataFilter;\n\n constructor(view: IView, options?: T) {\n super(view, options);\n this.options = options;\n }\n\n protected _parseLinkedComponent(option: string | IDatazoom | IScrollbar): IDatazoom | IScrollbar {\n if (!option) {\n return null;\n }\n const comp: IMark = isString(option) ? this.view.getMarkById(option) : option;\n\n if (\n comp &&\n comp.markType === GrammarMarkType.component &&\n ((comp as IComponent).componentType === ComponentEnum.datazoom ||\n (comp as IComponent).componentType === ComponentEnum.scrollbar)\n ) {\n return comp as IDatazoom | IScrollbar;\n }\n\n return null;\n }\n\n protected _initStateByDim(\n dim: 'x' | 'y',\n linkedComponent?: string | IDatazoom | IScrollbar,\n scale?: string | IScale,\n dataTarget?: FilterDataTarget\n ) {\n const comp = this._parseLinkedComponent(linkedComponent);\n\n if (comp) {\n this._state[dim] = { linkedComponent: comp };\n return;\n }\n\n const scaleGrammar = !isNil(scale) ? (isString(scale) ? this.view.getScaleById(scale) : scale) : null;\n const dataGrammar = !isNil(dataTarget?.data)\n ? isString(dataTarget.data)\n ? this.view.getDataById(dataTarget.data)\n : dataTarget.data\n : null;\n\n if (!scaleGrammar || !dataGrammar) {\n this._state[dim] = { data: dataGrammar, scale: scaleGrammar };\n return;\n }\n\n dataGrammar.attach(scaleGrammar);\n\n const filterByScale = isString(dataTarget.filter)\n ? (datum: any, filterValue: number[]) => {\n const scale = scaleGrammar.getScale();\n const ratio = getScaleRangeRatio(scale, datum[dataTarget.filter as string]);\n\n return ratio >= filterValue[0] && ratio <= filterValue[1];\n }\n : dataTarget.filter;\n const dataFilter = {\n source: `${scaleGrammar.uid}`,\n rank: DataFilterRank.normal,\n filter: (data: any[]) => {\n const filterValue = dim === 'x' ? this._state?.x?.filterValue : this._state?.y?.filterValue;\n if (!filterValue) {\n return data;\n }\n const filteredData = data.filter(datum => filterByScale(datum, filterValue));\n return dataTarget.transform ? dataTarget.transform(filteredData, filterValue) : filteredData;\n }\n };\n\n if (dim === 'x') {\n this._dataFilterX = dataFilter;\n } else {\n this._dataFilterY = dataFilter;\n }\n\n dataGrammar.addDataFilter(dataFilter);\n\n this._state[dim] = { data: dataGrammar, scale: scaleGrammar };\n }\n\n protected _initGrammars() {\n const { enableX, enableY, scaleX, scaleY, dataTargetX, dataTargetY, linkedComponentX, linkedComponentY } =\n this.options;\n\n this._state = {};\n\n if (enableX !== false) {\n this._initStateByDim('x', linkedComponentX, scaleX, dataTargetX);\n }\n\n if (enableY !== false) {\n this._initStateByDim('y', linkedComponentY, scaleY, dataTargetY);\n }\n\n this._inited = true;\n }\n\n protected _updateLinkedComponent(comp: IDatazoom | IScrollbar, newRange: [number, number]) {\n if (comp.componentType === ComponentEnum.datazoom) {\n (comp as IDatazoom).setStartEndValue(newRange[0], newRange[1]);\n } else {\n // fix: need to update range scrollbar\n (comp as IScrollbar).setScrollStart(newRange[0]);\n }\n }\n\n updateView(type: string, newRange: ViewNavigationRange, e?: InteractionEvent) {\n if (newRange?.x && this._state?.x?.linkedComponent) {\n this._updateLinkedComponent(this._state.x.linkedComponent, newRange.x);\n }\n\n if (newRange?.y && this._state?.y?.linkedComponent) {\n this._updateLinkedComponent(this._state.y.linkedComponent, newRange.y);\n }\n\n if (newRange?.needUpdate) {\n this.view.runAsync();\n }\n\n this.dispatchEvent(type, newRange, e);\n }\n\n protected dispatchEvent(type: string, viewRange: ViewNavigationRange, e?: InteractionEvent) {\n this.view.emit(type, {\n viewRange,\n event: e\n });\n }\n\n unbind() {\n super.unbind();\n\n if (this._state) {\n Object.keys(this._state).forEach(dim => {\n const { data, scale } = this._state[dim as 'x' | 'y'];\n\n if (data && scale) {\n data.detach(scale);\n data.removeDataFilter(dim === 'x' ? this._dataFilterX : this._dataFilterY);\n } else if (scale) {\n scale.setRangeFactor(null);\n scale.commit();\n }\n });\n }\n\n this._state = null;\n }\n}\n"]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { ViewRoamOptions, IView, InteractionEvent, IScale, IData, IViewZoomMixin, IViewScrollMixin, IViewDragMixin, InteractionEventHandler } from '../types';
|
|
2
|
+
import { ViewNavigationBase } from './view-navigation-base';
|
|
3
|
+
export interface ViewRoam extends Pick<IViewDragMixin, 'handleDragStart' | 'handleDragEnd' | 'handleDragUpdate'>, Pick<IViewScrollMixin, 'formatScrollEvent' | 'handleScrollStart' | 'handleScrollEnd'>, Pick<IViewZoomMixin, 'formatZoomEvent' | 'handleZoomStart' | 'handleZoomEnd' | 'handleZoomReset' | 'updateZoomRange'>, ViewNavigationBase<ViewRoamOptions> {
|
|
4
|
+
}
|
|
5
|
+
export declare class ViewRoam extends ViewNavigationBase<ViewRoamOptions> {
|
|
6
|
+
static type: string;
|
|
7
|
+
type: string;
|
|
8
|
+
static defaultOptions: ViewRoamOptions;
|
|
9
|
+
protected _inited?: boolean;
|
|
10
|
+
protected _lastScale: number;
|
|
11
|
+
protected _scaleX: IScale;
|
|
12
|
+
protected _scaleY: IScale;
|
|
13
|
+
protected _data: IData;
|
|
14
|
+
protected handleRoamZoomStart: (e: InteractionEvent) => void;
|
|
15
|
+
protected handleRoamDragUpdate: (e: InteractionEvent) => void;
|
|
16
|
+
protected handleRoamScrollStart: (e: InteractionEvent) => void;
|
|
17
|
+
constructor(view: IView, option?: ViewRoamOptions);
|
|
18
|
+
protected getEvents(): {
|
|
19
|
+
type: string;
|
|
20
|
+
handler: InteractionEventHandler;
|
|
21
|
+
}[];
|
|
22
|
+
handleRoamZoomStartInner: (e: InteractionEvent) => void;
|
|
23
|
+
handleRoamZoomEnd: (e: InteractionEvent) => void;
|
|
24
|
+
handleRoamZoomReset: (e: InteractionEvent) => void;
|
|
25
|
+
handleRoamDragStart: (e: InteractionEvent) => void;
|
|
26
|
+
handleRoamDragUpdateInner: (e: InteractionEvent) => void;
|
|
27
|
+
handleRoamDragEnd: (e: InteractionEvent) => void;
|
|
28
|
+
handleRoamScrollStartInner: (e: InteractionEvent) => void;
|
|
29
|
+
handleRoamScrollEnd: (e: InteractionEvent) => void;
|
|
30
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { merge, throttle } from "@visactor/vutils";
|
|
2
|
+
|
|
3
|
+
import { ViewNavigationBase } from "./view-navigation-base";
|
|
4
|
+
|
|
5
|
+
import { InteractionEventEnum } from "../graph/enums";
|
|
6
|
+
|
|
7
|
+
export class ViewRoam extends ViewNavigationBase {
|
|
8
|
+
constructor(view, option) {
|
|
9
|
+
super(view, merge({}, ViewRoam.defaultOptions, option)), this.type = ViewRoam.type,
|
|
10
|
+
this.handleRoamZoomStartInner = e => {
|
|
11
|
+
this.formatZoomEvent(e), !e || this.options.shouldStart && !this.options.shouldStart(e) || (this._inited || this._initGrammars(),
|
|
12
|
+
this.updateView(InteractionEventEnum.viewZoomStart, this.handleZoomStart(e, this._state, this.options.zoom), e));
|
|
13
|
+
}, this.handleRoamZoomEnd = e => {
|
|
14
|
+
this.formatZoomEvent(e), !e || this.options.shouldEnd && !this.options.shouldEnd(e) || this.updateView(InteractionEventEnum.viewZoomEnd, this.handleZoomEnd(e, this._state, this.options.zoom), e);
|
|
15
|
+
}, this.handleRoamZoomReset = e => {
|
|
16
|
+
!e || this.options.shouldReset && !this.options.shouldReset(e) || this.updateView(InteractionEventEnum.viewZoomReset, this.handleZoomReset(e, this._state, this.options.zoom), e);
|
|
17
|
+
}, this.handleRoamDragStart = e => {
|
|
18
|
+
!e || this.options.shouldStart && !this.options.shouldStart(e) || (this._inited || this._initGrammars(),
|
|
19
|
+
this.updateView(InteractionEventEnum.viewDragStart, this.handleDragStart(e, this._state, this.options.drag), e));
|
|
20
|
+
}, this.handleRoamDragUpdateInner = e => {
|
|
21
|
+
!e || this.options.shouldUpdate && !this.options.shouldUpdate(e) || this.updateView(InteractionEventEnum.viewDragUpdate, this.handleDragUpdate(e, this._state, this.options.drag), e);
|
|
22
|
+
}, this.handleRoamDragEnd = e => {
|
|
23
|
+
!e || this.options.shouldEnd && !this.options.shouldEnd(e) || this.updateView(InteractionEventEnum.viewDragEnd, this.handleDragEnd(e, this._state, this.options.drag), e);
|
|
24
|
+
}, this.handleRoamScrollStartInner = e => {
|
|
25
|
+
this.formatScrollEvent(e), !e || this.options.shouldStart && !this.options.shouldStart(e) || (this._inited || this._initGrammars(),
|
|
26
|
+
this.updateView(InteractionEventEnum.viewScrollStart, this.handleScrollStart(e, this._state, this.options.scroll), e));
|
|
27
|
+
}, this.handleRoamScrollEnd = e => {
|
|
28
|
+
this.formatScrollEvent(e), !e || this.options.shouldEnd && !this.options.shouldEnd(e) || this.updateView(InteractionEventEnum.viewScrollEnd, this.handleScrollEnd(e, this._state, this.options.scroll), e);
|
|
29
|
+
}, this.handleRoamZoomStart = throttle(this.handleRoamZoomStartInner, this.options.throttle),
|
|
30
|
+
this.handleRoamDragUpdate = throttle(this.handleRoamDragUpdateInner, this.options.throttle),
|
|
31
|
+
this.handleRoamScrollStart = throttle(this.handleRoamScrollStartInner, this.options.throttle);
|
|
32
|
+
}
|
|
33
|
+
getEvents() {
|
|
34
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
|
35
|
+
const events = [];
|
|
36
|
+
return (null === (_a = this.options.zoom) || void 0 === _a ? void 0 : _a.enable) && ((null === (_b = this.options.zoom) || void 0 === _b ? void 0 : _b.trigger) && events.push({
|
|
37
|
+
type: this.options.zoom.trigger,
|
|
38
|
+
handler: this.handleRoamZoomStart
|
|
39
|
+
}), (null === (_c = this.options.zoom) || void 0 === _c ? void 0 : _c.endTrigger) && events.push({
|
|
40
|
+
type: this.options.zoom.endTrigger,
|
|
41
|
+
handler: this.handleRoamZoomEnd
|
|
42
|
+
}), (null === (_d = this.options.zoom) || void 0 === _d ? void 0 : _d.resetTrigger) && events.push({
|
|
43
|
+
type: null === (_e = this.options.zoom) || void 0 === _e ? void 0 : _e.resetTrigger,
|
|
44
|
+
handler: this.handleRoamZoomReset
|
|
45
|
+
})), (null === (_f = this.options.scroll) || void 0 === _f ? void 0 : _f.enable) && ((null === (_g = this.options.scroll) || void 0 === _g ? void 0 : _g.trigger) && events.push({
|
|
46
|
+
type: this.options.scroll.trigger,
|
|
47
|
+
handler: this.handleRoamScrollStart
|
|
48
|
+
}), (null === (_h = this.options.scroll) || void 0 === _h ? void 0 : _h.trigger) && events.push({
|
|
49
|
+
type: this.options.scroll.endTrigger,
|
|
50
|
+
handler: this.handleRoamScrollEnd
|
|
51
|
+
})), (null === (_j = this.options.drag) || void 0 === _j ? void 0 : _j.enable) && ((null === (_k = this.options.drag) || void 0 === _k ? void 0 : _k.trigger) && events.push({
|
|
52
|
+
type: this.options.drag.trigger,
|
|
53
|
+
handler: this.handleRoamDragStart
|
|
54
|
+
}), (null === (_l = this.options.drag) || void 0 === _l ? void 0 : _l.updateTrigger) && events.push({
|
|
55
|
+
type: this.options.drag.updateTrigger,
|
|
56
|
+
handler: this.handleRoamDragUpdate
|
|
57
|
+
}), (null === (_m = this.options.drag) || void 0 === _m ? void 0 : _m.endTrigger) && events.push({
|
|
58
|
+
type: this.options.drag.endTrigger,
|
|
59
|
+
handler: this.handleRoamDragEnd
|
|
60
|
+
})), events;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
ViewRoam.type = "view-roam", ViewRoam.defaultOptions = {
|
|
65
|
+
zoom: {
|
|
66
|
+
realtime: !0,
|
|
67
|
+
enable: !0,
|
|
68
|
+
focus: !0,
|
|
69
|
+
trigger: "wheel",
|
|
70
|
+
endTrigger: "pointerup",
|
|
71
|
+
resetTrigger: "dblclick",
|
|
72
|
+
rate: 1
|
|
73
|
+
},
|
|
74
|
+
scroll: {
|
|
75
|
+
realtime: !0,
|
|
76
|
+
enable: !1,
|
|
77
|
+
reversed: !1,
|
|
78
|
+
trigger: "wheel",
|
|
79
|
+
endTrigger: "pointerup"
|
|
80
|
+
},
|
|
81
|
+
drag: {
|
|
82
|
+
realtime: !0,
|
|
83
|
+
enable: !0,
|
|
84
|
+
reversed: !1,
|
|
85
|
+
trigger: "pointerdown",
|
|
86
|
+
updateTrigger: "pointermove",
|
|
87
|
+
endTrigger: "pointerup"
|
|
88
|
+
},
|
|
89
|
+
throttle: 100
|
|
90
|
+
};
|
|
91
|
+
//# sourceMappingURL=view-roam.js.map
|
|
@@ -0,0 +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';\nimport { InteractionEventEnum } from '../graph/enums';\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 resetTrigger: '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?.resetTrigger &&\n events.push({ type: this.options.zoom?.resetTrigger, 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(InteractionEventEnum.viewZoomStart, 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(InteractionEventEnum.viewZoomEnd, 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(InteractionEventEnum.viewZoomReset, 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(InteractionEventEnum.viewDragStart, 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(InteractionEventEnum.viewDragUpdate, 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(InteractionEventEnum.viewDragEnd, 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(\n InteractionEventEnum.viewScrollStart,\n this.handleScrollStart(e, this._state, this.options.scroll),\n e\n );\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(InteractionEventEnum.viewScrollEnd, this.handleScrollEnd(e, this._state, this.options.scroll), e);\n };\n}\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { InteractionEvent, IViewScrollMixin, ViewNavigationRange, ViewScrollSimpleOptions, ViewStateByDim } from '../types';
|
|
2
|
+
export declare class ViewScrollMixin implements IViewScrollMixin {
|
|
3
|
+
protected _scrollX: number;
|
|
4
|
+
protected _scrollY: number;
|
|
5
|
+
protected formatPanScroll(e: InteractionEvent): InteractionEvent;
|
|
6
|
+
protected formatWheelScroll(e: InteractionEvent): InteractionEvent;
|
|
7
|
+
formatScrollEvent(e: InteractionEvent): InteractionEvent;
|
|
8
|
+
handleScrollStart(e: InteractionEvent, navState: Partial<Record<'x' | 'y', ViewStateByDim>>, scrollOptions?: ViewScrollSimpleOptions): ViewNavigationRange;
|
|
9
|
+
handleScrollEnd(e: InteractionEvent, navState: Partial<Record<'x' | 'y', ViewStateByDim>>, scrollOptions?: ViewScrollSimpleOptions): ViewNavigationRange;
|
|
10
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { isNil } from "@visactor/vutils";
|
|
2
|
+
|
|
3
|
+
import { handleScrolling } from "./view-utils";
|
|
4
|
+
|
|
5
|
+
export class ViewScrollMixin {
|
|
6
|
+
formatPanScroll(e) {
|
|
7
|
+
return e;
|
|
8
|
+
}
|
|
9
|
+
formatWheelScroll(e) {
|
|
10
|
+
return e.ctrlKey || 0 === e.deltaY && 0 === e.deltaX || (e.scrollX = e.deltaX, e.scrollY = e.deltaY),
|
|
11
|
+
e;
|
|
12
|
+
}
|
|
13
|
+
formatScrollEvent(e) {
|
|
14
|
+
return e ? "pan" === e.type ? this.formatPanScroll(e) : "wheel" === e.type ? this.formatWheelScroll(e) : e : e;
|
|
15
|
+
}
|
|
16
|
+
handleScrollStart(e, navState, scrollOptions) {
|
|
17
|
+
if (e.stopPropagation(), e.preventDefault(), !isNil(e.scrollX) || !isNil(e.scrollY)) {
|
|
18
|
+
if (null == scrollOptions ? void 0 : scrollOptions.realtime) return handleScrolling({
|
|
19
|
+
x: e.scrollX,
|
|
20
|
+
y: e.scrollY
|
|
21
|
+
}, navState, scrollOptions);
|
|
22
|
+
isNil(e.scrollX) || (this._scrollX = isNil(this._scrollX) ? e.scrollX : this._scrollX + e.scrollX),
|
|
23
|
+
isNil(e.scrollY) || (this._scrollY = isNil(this._scrollY) ? e.scrollY : this._scrollY + e.scrollY);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
handleScrollEnd(e, navState, scrollOptions) {
|
|
27
|
+
if (!1 === (null == scrollOptions ? void 0 : scrollOptions.realtime) && (isNil(this._scrollX) || isNil(this._scrollY))) {
|
|
28
|
+
const res = handleScrolling({
|
|
29
|
+
x: this._scrollX,
|
|
30
|
+
y: this._scrollY
|
|
31
|
+
}, navState, scrollOptions);
|
|
32
|
+
return this._scrollX = null, this._scrollY = null, res;
|
|
33
|
+
}
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=view-scroll-mixin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/interactions/view-scroll-mixin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAQzC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,OAAO,eAAe;IAIhB,eAAe,CAAC,CAAmB;QAC3C,OAAO,CAAC,CAAC;IACX,CAAC;IAES,iBAAiB,CAAC,CAAmB;QAM7C,IAAI,CAAE,CAAS,CAAC,OAAO,IAAI,CAAE,CAAS,CAAC,MAAM,KAAK,CAAC,IAAK,CAAS,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;YAC9E,CAAS,CAAC,OAAO,GAAI,CAAS,CAAC,MAAM,CAAC;YACtC,CAAS,CAAC,OAAO,GAAI,CAAS,CAAC,MAAM,CAAC;YACvC,OAAO,CAAC,CAAC;SACV;QAED,OAAO,CAAC,CAAC;IACX,CAAC;IAED,iBAAiB,CAAC,CAAmB;QACnC,IAAI,CAAC,CAAC,EAAE;YACN,OAAO,CAAC,CAAC;SACV;QAED,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,EAAE;YACpB,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;SAChC;QAED,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE;YACtB,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;SAClC;QAED,OAAO,CAAC,CAAC;IACX,CAAC;IAED,iBAAiB,CACf,CAAmB,EACnB,QAAoD,EACpD,aAAuC;QAEvC,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,CAAC,CAAC,cAAc,EAAE,CAAC;QAEnB,IAAI,KAAK,CAAE,CAAS,CAAC,OAAO,CAAC,IAAI,KAAK,CAAE,CAAS,CAAC,OAAO,CAAC,EAAE;YAC1D,OAAO;SACR;QAED,IAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,QAAQ,EAAE;YAC3B,OAAO,eAAe,CAAC,EAAE,CAAC,EAAG,CAAS,CAAC,OAAO,EAAE,CAAC,EAAG,CAAS,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;SACnG;QAED,IAAI,CAAC,KAAK,CAAE,CAAS,CAAC,OAAO,CAAC,EAAE;YAC9B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAE,CAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAI,CAAS,CAAC,OAAO,CAAC;SAChG;QAED,IAAI,CAAC,KAAK,CAAE,CAAS,CAAC,OAAO,CAAC,EAAE;YAC9B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAE,CAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAI,CAAS,CAAC,OAAO,CAAC;SAChG;IACH,CAAC;IAED,eAAe,CACb,CAAmB,EACnB,QAAoD,EACpD,aAAuC;QAIvC,IAAI,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,QAAQ,MAAK,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE;YACvF,MAAM,GAAG,GAAG,eAAe,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;YAC7F,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YAErB,OAAO,GAAG,CAAC;SACZ;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF","file":"view-scroll-mixin.js","sourcesContent":["import { isNil } from '@visactor/vutils';\nimport type {\n InteractionEvent,\n IViewScrollMixin,\n ViewNavigationRange,\n ViewScrollSimpleOptions,\n ViewStateByDim\n} from '../types';\nimport { handleScrolling } from './view-utils';\n\nexport class ViewScrollMixin implements IViewScrollMixin {\n protected _scrollX: number;\n protected _scrollY: number;\n\n protected formatPanScroll(e: InteractionEvent) {\n return e;\n }\n\n protected formatWheelScroll(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 && ((e as any).deltaY !== 0 || (e as any).deltaX !== 0)) {\n (e as any).scrollX = (e as any).deltaX;\n (e as any).scrollY = (e as any).deltaY;\n return e;\n }\n\n return e;\n }\n\n formatScrollEvent(e: InteractionEvent) {\n if (!e) {\n return e;\n }\n\n if (e.type === 'pan') {\n return this.formatPanScroll(e);\n }\n\n if (e.type === 'wheel') {\n return this.formatWheelScroll(e);\n }\n\n return e;\n }\n\n handleScrollStart(\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n scrollOptions?: ViewScrollSimpleOptions\n ): ViewNavigationRange {\n e.stopPropagation();\n e.preventDefault();\n\n if (isNil((e as any).scrollX) && isNil((e as any).scrollY)) {\n return;\n }\n\n if (scrollOptions?.realtime) {\n return handleScrolling({ x: (e as any).scrollX, y: (e as any).scrollY }, navState, scrollOptions);\n }\n\n if (!isNil((e as any).scrollX)) {\n this._scrollX = isNil(this._scrollX) ? (e as any).scrollX : this._scrollX + (e as any).scrollX;\n }\n\n if (!isNil((e as any).scrollY)) {\n this._scrollY = isNil(this._scrollY) ? (e as any).scrollY : this._scrollY + (e as any).scrollY;\n }\n }\n\n handleScrollEnd(\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n scrollOptions?: ViewScrollSimpleOptions\n ): ViewNavigationRange {\n // do nothing now\n\n if (scrollOptions?.realtime === false && (isNil(this._scrollX) || isNil(this._scrollY))) {\n const res = handleScrolling({ x: this._scrollX, y: this._scrollY }, navState, scrollOptions);\n this._scrollX = null;\n this._scrollY = null;\n\n return res;\n }\n\n return null;\n }\n}\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ViewScrollOptions, IView, InteractionEvent, IViewScrollMixin } from '../types';
|
|
2
|
+
import { ViewNavigationBase } from './view-navigation-base';
|
|
3
|
+
export interface ViewScroll extends Pick<IViewScrollMixin, 'formatScrollEvent' | 'handleScrollStart' | 'handleScrollEnd'>, ViewNavigationBase<ViewScrollOptions> {
|
|
4
|
+
}
|
|
5
|
+
export declare class ViewScroll extends ViewNavigationBase<ViewScrollOptions> {
|
|
6
|
+
static type: string;
|
|
7
|
+
type: string;
|
|
8
|
+
static defaultOptions: ViewScrollOptions;
|
|
9
|
+
protected handleStart: (e: InteractionEvent) => void;
|
|
10
|
+
constructor(view: IView, option?: ViewScrollOptions);
|
|
11
|
+
protected getEvents(): {
|
|
12
|
+
type: import("../types").EventType;
|
|
13
|
+
handler: (e: InteractionEvent) => void;
|
|
14
|
+
}[];
|
|
15
|
+
handleStartInner: (e: InteractionEvent) => void;
|
|
16
|
+
handleEnd: (e: InteractionEvent) => void;
|
|
17
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { throttle } from "@visactor/vutils";
|
|
2
|
+
|
|
3
|
+
import { InteractionEventEnum } from "../graph/enums";
|
|
4
|
+
|
|
5
|
+
import { ViewNavigationBase } from "./view-navigation-base";
|
|
6
|
+
|
|
7
|
+
export class ViewScroll extends ViewNavigationBase {
|
|
8
|
+
constructor(view, option) {
|
|
9
|
+
super(view, Object.assign({}, ViewScroll.defaultOptions, option)), this.type = ViewScroll.type,
|
|
10
|
+
this.handleStartInner = e => {
|
|
11
|
+
this.formatScrollEvent(e), !e || this.options.shouldStart && !this.options.shouldStart(e) || (this._inited || this._initGrammars(),
|
|
12
|
+
this.updateView(InteractionEventEnum.viewScrollStart, this.handleScrollStart(e, this._state, this.options), e));
|
|
13
|
+
}, this.handleEnd = e => {
|
|
14
|
+
this.formatScrollEvent(e), !e || this.options.shouldEnd && !this.options.shouldEnd(e) || this.updateView(InteractionEventEnum.viewScrollEnd, this.handleScrollEnd(e, this._state, this.options), e);
|
|
15
|
+
}, this.handleStart = throttle(this.handleStartInner, this.options.throttle);
|
|
16
|
+
}
|
|
17
|
+
getEvents() {
|
|
18
|
+
return [ {
|
|
19
|
+
type: this.options.trigger,
|
|
20
|
+
handler: this.handleStart
|
|
21
|
+
}, {
|
|
22
|
+
type: this.options.endTrigger,
|
|
23
|
+
handler: this.handleEnd
|
|
24
|
+
} ];
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
ViewScroll.type = "view-scroll", ViewScroll.defaultOptions = {
|
|
29
|
+
realtime: !0,
|
|
30
|
+
reversed: !1,
|
|
31
|
+
trigger: "wheel",
|
|
32
|
+
endTrigger: "pointerup",
|
|
33
|
+
throttle: 100
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=view-scroll.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/interactions/view-scroll.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEtD,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,CACb,oBAAoB,CAAC,eAAe,EACnC,IAAoC,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,EACrF,CAAC,CACF,CAAC;QACJ,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,CACb,oBAAoB,CAAC,aAAa,EACjC,IAAoC,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,EACnF,CAAC,CACF,CAAC;QACJ,CAAC,CAAC;QAtCA,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 { InteractionEventEnum } from '../graph/enums';\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(\n InteractionEventEnum.viewScrollStart,\n (this as unknown as IViewScrollMixin).handleScrollStart(e, this._state, this.options),\n e\n );\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(\n InteractionEventEnum.viewScrollEnd,\n (this as unknown as IViewScrollMixin).handleScrollEnd(e, this._state, this.options),\n e\n );\n };\n}\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type IBaseScale } from '@visactor/vscale';
|
|
2
|
+
import type { IDatazoom, IScrollbar, ViewNavigationRange, ViewStateByDim } from '../types';
|
|
3
|
+
export declare const getRangeOfLinkedComponent: (comp: IDatazoom | IScrollbar) => [number, number];
|
|
4
|
+
export declare const getBoundsRangeOfLinkedComponent: (comp: IDatazoom | IScrollbar, dim: 'x' | 'y') => [number, number];
|
|
5
|
+
export declare const getFilteredValuesFromScale: (scale: IBaseScale, range: [number, number]) => any;
|
|
6
|
+
export declare const updateScrollRange: (rangeFactor: [number, number], range: [number, number], scrollValue?: number, scrollOptions?: {
|
|
7
|
+
reversed?: boolean;
|
|
8
|
+
}) => [number, number];
|
|
9
|
+
export declare const handleScrolling: (scrollPos: {
|
|
10
|
+
x?: number;
|
|
11
|
+
y?: number;
|
|
12
|
+
}, navState: Partial<Record<'x' | 'y', ViewStateByDim>>, scrollOptions?: {
|
|
13
|
+
reversed?: boolean;
|
|
14
|
+
}) => ViewNavigationRange;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { isContinuous } from "@visactor/vscale";
|
|
2
|
+
|
|
3
|
+
import { ComponentEnum } from "../graph/enums";
|
|
4
|
+
|
|
5
|
+
export const getRangeOfLinkedComponent = comp => {
|
|
6
|
+
if (comp.componentType === ComponentEnum.datazoom) {
|
|
7
|
+
const res = comp.getStartEndValue();
|
|
8
|
+
return res ? [ res.start, res.end ] : null;
|
|
9
|
+
}
|
|
10
|
+
return comp.getScrollRange();
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export const getBoundsRangeOfLinkedComponent = (comp, dim) => {
|
|
14
|
+
const bounds = comp.getBounds();
|
|
15
|
+
if (bounds && !bounds.empty()) return "y" === dim ? [ bounds.y1, bounds.y2 ] : [ bounds.x1, bounds.x2 ];
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export const getFilteredValuesFromScale = (scale, range) => {
|
|
19
|
+
const scaleRange = scale.range(), startPos = scaleRange[0] + (scaleRange[1] - scaleRange[0]) * range[0], endPos = scaleRange[0] + (scaleRange[1] - scaleRange[0]) * range[1];
|
|
20
|
+
if (isContinuous(scale.type)) {
|
|
21
|
+
const startValue = scale.invert(startPos), endValue = scale.invert(endPos);
|
|
22
|
+
return [ Math.min(startValue, endValue), Math.max(startValue, endValue) ];
|
|
23
|
+
}
|
|
24
|
+
return scale.domain().filter((entry => {
|
|
25
|
+
const val = scale.scale(entry);
|
|
26
|
+
return val >= startPos && val <= endPos;
|
|
27
|
+
}));
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export const updateScrollRange = (rangeFactor = [ 0, 1 ], range, scrollValue = 0, scrollOptions) => {
|
|
31
|
+
if (Math.abs(scrollValue) < .001) return;
|
|
32
|
+
if (Math.abs(rangeFactor[1] - rangeFactor[0]) >= 1) return;
|
|
33
|
+
const size = Math.abs(range[range.length - 1] - range[0]);
|
|
34
|
+
if (size <= 0 || Number.isNaN(size)) return;
|
|
35
|
+
const value = (scrollOptions.reversed ? -1 : 1) * scrollValue;
|
|
36
|
+
if (value > 0 && rangeFactor[1] < 1) {
|
|
37
|
+
const delta = Math.min(1 - rangeFactor[1], value / size);
|
|
38
|
+
return [ rangeFactor[0] + delta, rangeFactor[1] + delta ];
|
|
39
|
+
}
|
|
40
|
+
if (value < 0 && rangeFactor[0] > 0) {
|
|
41
|
+
const delta = Math.max(-rangeFactor[0], value / size);
|
|
42
|
+
return [ rangeFactor[0] + delta, rangeFactor[1] + delta ];
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
export const handleScrolling = (scrollPos, navState, scrollOptions) => {
|
|
47
|
+
const res = {
|
|
48
|
+
needUpdate: !1
|
|
49
|
+
};
|
|
50
|
+
return navState ? (Object.keys(navState).forEach((dim => {
|
|
51
|
+
const {scale: scale, data: data, linkedComponent: linkedComponent, rangeFactor: rangeFactor, wholeScale: wholeScale} = navState[dim];
|
|
52
|
+
if (linkedComponent) res[dim] = updateScrollRange(getRangeOfLinkedComponent(linkedComponent), getBoundsRangeOfLinkedComponent(linkedComponent, dim), scrollPos[dim], scrollOptions); else if (scale) {
|
|
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
|
+
data.commit()) : (scale.setRangeFactor(newRange), scale.commit()), res.needUpdate = !0,
|
|
56
|
+
res[dim] = newRange);
|
|
57
|
+
}
|
|
58
|
+
})), res) : res;
|
|
59
|
+
};
|
|
60
|
+
//# sourceMappingURL=view-utils.js.map
|