@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
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: !0
|
|
5
|
-
}), exports.
|
|
5
|
+
}), exports.Crosshair = exports.generatePolygonCrosshairAttributes = exports.generateCircleCrosshairAttributes = exports.generateSectorCrosshairAttributes = exports.generateRingCrosshairAttributes = exports.generateRectCrosshairAttributes = exports.generateLineCrosshairAttributes = void 0;
|
|
6
6
|
|
|
7
|
-
const vutils_1 = require("@visactor/vutils"), vrender_components_1 = require("@visactor/vrender-components"),
|
|
7
|
+
const vutils_1 = require("@visactor/vutils"), vrender_components_1 = require("@visactor/vrender-components"), base_1 = require("./base"), graph_1 = require("../graph"), vscale_1 = require("@visactor/vscale"), util_1 = require("../parse/util"), computeCrosshairStartEnd = (point, scale, type, groupSize, config, offset = 0) => {
|
|
8
8
|
var _a, _b;
|
|
9
9
|
const start = {
|
|
10
10
|
x: 0,
|
|
@@ -147,22 +147,29 @@ const generatePolygonCrosshairAttributes = (point, scale, type, groupSize, confi
|
|
|
147
147
|
|
|
148
148
|
exports.generatePolygonCrosshairAttributes = generatePolygonCrosshairAttributes;
|
|
149
149
|
|
|
150
|
-
class Crosshair extends
|
|
151
|
-
constructor(view,
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
150
|
+
class Crosshair extends base_1.BaseInteraction {
|
|
151
|
+
constructor(view, options) {
|
|
152
|
+
var _a, _b;
|
|
153
|
+
super(view, options), this.type = Crosshair.type, this.handleCrosshairShow = event => {
|
|
154
|
+
var _a;
|
|
155
|
+
if (!this._crosshairComponent) return;
|
|
156
|
+
const groupGraphicItem = this._container.getGroupGraphicItem(), point = {
|
|
156
157
|
x: 0,
|
|
157
158
|
y: 0
|
|
159
|
+
}, globalTransMatrix = groupGraphicItem.globalTransMatrix, containerPoint = {
|
|
160
|
+
x: globalTransMatrix.e,
|
|
161
|
+
y: globalTransMatrix.f
|
|
158
162
|
};
|
|
159
|
-
if (
|
|
160
|
-
const
|
|
163
|
+
if (globalTransMatrix.transformPoint(event.canvas, point), point.x < 0 || point.x > groupGraphicItem.attribute.width || point.y < 0 || point.y > groupGraphicItem.attribute.height) return void this._crosshairComponent.hideAll();
|
|
164
|
+
const crosshairType = null !== (_a = this.options.crosshairType) && void 0 !== _a ? _a : "x", groupSize = {
|
|
161
165
|
width: groupGraphicItem.attribute.width,
|
|
162
166
|
height: groupGraphicItem.attribute.height
|
|
163
|
-
}, scale = ((0, vutils_1.isString)(this.
|
|
167
|
+
}, scale = ((0, vutils_1.isString)(this.options.scale) ? this.view.getScaleById(this.options.scale) : this.options.scale).getScale(), config = {
|
|
168
|
+
center: this.options.center,
|
|
169
|
+
radius: this.options.radius
|
|
170
|
+
}, theme = this.view.getCurrentTheme(), addition = (0, util_1.invokeFunctionType)(this.options.attributes, this.parameters(), {}, {});
|
|
164
171
|
let attributes = {};
|
|
165
|
-
switch (this.
|
|
172
|
+
switch (this.getCrosshairComponentType()) {
|
|
166
173
|
case graph_1.CrosshairEnum.lineCrosshair:
|
|
167
174
|
attributes = (0, exports.generateLineCrosshairAttributes)(point, scale, crosshairType, groupSize, config, theme, addition);
|
|
168
175
|
break;
|
|
@@ -186,72 +193,37 @@ class Crosshair extends scale_1.ScaleComponent {
|
|
|
186
193
|
case graph_1.CrosshairEnum.ringCrosshair:
|
|
187
194
|
attributes = (0, exports.generateRingCrosshairAttributes)(point, scale, crosshairType, groupSize, config, theme, addition);
|
|
188
195
|
}
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
this.
|
|
194
|
-
}
|
|
195
|
-
parseAddition(spec) {
|
|
196
|
-
return super.parseAddition(spec), this.crosshairType(spec.crosshairType), this.crosshairShape(spec.crosshairShape),
|
|
197
|
-
this;
|
|
198
|
-
}
|
|
199
|
-
crosshairType(crosshairType) {
|
|
200
|
-
return this.spec.crosshairType = crosshairType, this._crosshairComponentType = null,
|
|
201
|
-
this._prepareRejoin(), this.commit(), this;
|
|
202
|
-
}
|
|
203
|
-
crosshairShape(crosshairShape) {
|
|
204
|
-
return this.spec.crosshairShape = crosshairShape, this._crosshairComponentType = null,
|
|
205
|
-
this._prepareRejoin(), this.commit(), this;
|
|
206
|
-
}
|
|
207
|
-
addGraphicItem(attrs, groupKey) {
|
|
208
|
-
const initialAttributes = Object.assign(this._getDefaultCrosshairAttribute(), attrs), graphicItem = factory_1.Factory.createGraphicComponent(this._getCrosshairComponentType(), initialAttributes);
|
|
209
|
-
return super.addGraphicItem(initialAttributes, groupKey, graphicItem);
|
|
196
|
+
this.getCrosshairComponentType() !== graph_1.CrosshairEnum.circleCrosshair && (attributes.x = containerPoint.x,
|
|
197
|
+
attributes.y = containerPoint.y), this._crosshairComponent.showAll(), this._crosshairComponent.setAttributes(attributes);
|
|
198
|
+
}, this.handleCrosshairHide = () => {
|
|
199
|
+
this._crosshairComponent.hideAll();
|
|
200
|
+
}, this.options = Object.assign({}, Crosshair.defaultOptions, options), this._container = null !== (_b = null === (_a = view.getMarksBySelector(this.options.container)) || void 0 === _a ? void 0 : _a[0]) && void 0 !== _b ? _b : view.rootMark;
|
|
210
201
|
}
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
202
|
+
getEvents() {
|
|
203
|
+
return [ {
|
|
204
|
+
type: this.options.trigger,
|
|
205
|
+
handler: this.handleCrosshairShow
|
|
206
|
+
}, {
|
|
207
|
+
type: this.options.resetTrigger,
|
|
208
|
+
handler: this.handleCrosshairHide
|
|
209
|
+
} ];
|
|
216
210
|
}
|
|
217
|
-
|
|
218
|
-
var _a, _b, _c, _d, _e, _f;
|
|
219
|
-
super.init(stage, parameters);
|
|
220
|
-
const groupGraphicItem = this.group ? this.group.getGroupGraphicItem() : stage.defaultLayer;
|
|
221
|
-
this._lastGroup !== groupGraphicItem && (null === (_b = null === (_a = this._lastGroup) || void 0 === _a ? void 0 : _a.off) || void 0 === _b || _b.call(_a, "pointermove", this._onCrosshairShow),
|
|
222
|
-
null === (_d = null === (_c = this._lastGroup) || void 0 === _c ? void 0 : _c.off) || void 0 === _d || _d.call(_c, "pointerleave", this._onCrosshairHide)),
|
|
223
|
-
null === (_e = null == groupGraphicItem ? void 0 : groupGraphicItem.on) || void 0 === _e || _e.call(groupGraphicItem, "pointermove", this._onCrosshairShow),
|
|
224
|
-
null === (_f = null == groupGraphicItem ? void 0 : groupGraphicItem.on) || void 0 === _f || _f.call(groupGraphicItem, "pointerleave", this._onCrosshairHide),
|
|
225
|
-
this._lastGroup = groupGraphicItem;
|
|
226
|
-
}
|
|
227
|
-
_updateComponentEncoders() {
|
|
228
|
-
const encoders = Object.assign({
|
|
229
|
-
update: {}
|
|
230
|
-
}, this.spec.encode), componentEncoders = Object.keys(encoders).reduce(((res, state) => {
|
|
231
|
-
const encoder = encoders[state];
|
|
232
|
-
return encoder && (res[state] = {
|
|
233
|
-
callback: (datum, element, parameters) => {
|
|
234
|
-
this._additionalEncodeResult = (0, encode_1.invokeEncoder)(encoder, datum, element, parameters);
|
|
235
|
-
}
|
|
236
|
-
}), res;
|
|
237
|
-
}), {});
|
|
238
|
-
this._encoders = componentEncoders;
|
|
239
|
-
}
|
|
240
|
-
_getCrosshairComponentType() {
|
|
211
|
+
getCrosshairComponentType() {
|
|
241
212
|
var _a, _b;
|
|
242
213
|
if (this._crosshairComponentType) return this._crosshairComponentType;
|
|
243
|
-
const shape = null !== (_a = this.
|
|
214
|
+
const shape = null !== (_a = this.options.crosshairShape) && void 0 !== _a ? _a : "line", type = null !== (_b = this.options.crosshairType) && void 0 !== _b ? _b : "x";
|
|
244
215
|
return this._crosshairComponentType = "rect" === shape ? "angle" === type ? graph_1.CrosshairEnum.sectorCrosshair : "radius" === type ? graph_1.CrosshairEnum.ringCrosshair : "radius-polygon" === type ? graph_1.CrosshairEnum.polygonCrosshair : graph_1.CrosshairEnum.rectCrosshair : "radius" === type ? graph_1.CrosshairEnum.circleCrosshair : "radius-polygon" === type ? graph_1.CrosshairEnum.polygonCrosshair : graph_1.CrosshairEnum.lineCrosshair,
|
|
245
216
|
this._crosshairComponentType;
|
|
246
217
|
}
|
|
247
|
-
|
|
218
|
+
getDefaultCrosshairAttribute() {
|
|
248
219
|
var _a;
|
|
249
|
-
const type = null !== (_a = this.
|
|
220
|
+
const type = null !== (_a = this.options.crosshairType) && void 0 !== _a ? _a : "x";
|
|
250
221
|
return "radius" === type || "radius-polygon" === type ? {
|
|
251
222
|
center: {
|
|
252
223
|
x: 0,
|
|
253
224
|
y: 0
|
|
254
|
-
}
|
|
225
|
+
},
|
|
226
|
+
zIndex: -1
|
|
255
227
|
} : {
|
|
256
228
|
start: {
|
|
257
229
|
x: 0,
|
|
@@ -260,22 +232,51 @@ class Crosshair extends scale_1.ScaleComponent {
|
|
|
260
232
|
end: {
|
|
261
233
|
x: 0,
|
|
262
234
|
y: 0
|
|
263
|
-
}
|
|
235
|
+
},
|
|
236
|
+
zIndex: -1
|
|
264
237
|
};
|
|
265
238
|
}
|
|
266
|
-
|
|
239
|
+
bind() {
|
|
240
|
+
super.bind();
|
|
241
|
+
const stage = this.view.renderer.stage();
|
|
242
|
+
if (!this._crosshairComponent && stage) {
|
|
243
|
+
switch (this.getCrosshairComponentType()) {
|
|
244
|
+
case graph_1.CrosshairEnum.lineCrosshair:
|
|
245
|
+
this._crosshairComponent = new vrender_components_1.LineCrosshair(this.getDefaultCrosshairAttribute());
|
|
246
|
+
break;
|
|
267
247
|
|
|
268
|
-
|
|
248
|
+
case graph_1.CrosshairEnum.rectCrosshair:
|
|
249
|
+
this._crosshairComponent = new vrender_components_1.RectCrosshair(this.getDefaultCrosshairAttribute());
|
|
250
|
+
break;
|
|
269
251
|
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
252
|
+
case graph_1.CrosshairEnum.sectorCrosshair:
|
|
253
|
+
this._crosshairComponent = new vrender_components_1.SectorCrosshair(this.getDefaultCrosshairAttribute());
|
|
254
|
+
break;
|
|
255
|
+
|
|
256
|
+
case graph_1.CrosshairEnum.circleCrosshair:
|
|
257
|
+
this._crosshairComponent = new vrender_components_1.CircleCrosshair(this.getDefaultCrosshairAttribute());
|
|
258
|
+
break;
|
|
259
|
+
|
|
260
|
+
case graph_1.CrosshairEnum.polygonCrosshair:
|
|
261
|
+
this._crosshairComponent = new vrender_components_1.PolygonCrosshair(this.getDefaultCrosshairAttribute());
|
|
262
|
+
break;
|
|
279
263
|
|
|
280
|
-
|
|
264
|
+
case graph_1.CrosshairEnum.ringCrosshair:
|
|
265
|
+
this._crosshairComponent = new vrender_components_1.SectorCrosshair(this.getDefaultCrosshairAttribute());
|
|
266
|
+
}
|
|
267
|
+
stage.defaultLayer.appendChild(this._crosshairComponent);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
unbind() {
|
|
271
|
+
super.unbind(), this._crosshairComponent && (this._crosshairComponent.release(),
|
|
272
|
+
this._crosshairComponent = null);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
exports.Crosshair = Crosshair, Crosshair.type = "crosshair", Crosshair.defaultOptions = {
|
|
277
|
+
trigger: "pointermove",
|
|
278
|
+
resetTrigger: "pointerleave",
|
|
279
|
+
crosshairType: "x",
|
|
280
|
+
crosshairShape: "line"
|
|
281
|
+
};
|
|
281
282
|
//# sourceMappingURL=crosshair.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/interactions/crosshair.ts"],"names":[],"mappings":"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","file":"crosshair.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { clampRadian, getAngleByPoint, isString, merge } from '@visactor/vutils';\nimport type { IRectGraphicAttribute } from '@visactor/vrender-core';\nimport type {\n CircleCrosshairAttrs,\n LineCrosshairAttrs,\n PolygonCrosshairAttrs,\n RectCrosshairAttrs,\n SectorCrosshairAttrs\n} from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport {\n CircleCrosshair,\n LineCrosshair,\n PolygonCrosshair,\n RectCrosshair,\n SectorCrosshair\n} from '@visactor/vrender-components';\nimport type {\n CrosshairOptions,\n CrosshairType,\n IGroupMark,\n ITheme,\n IView,\n InteractionEvent,\n RecursivePartial\n} from '../types';\nimport { BaseInteraction } from './base';\nimport { CrosshairEnum } from '../graph';\nimport type { IBandLikeScale, IBaseScale } from '@visactor/vscale';\n// eslint-disable-next-line no-duplicate-imports\nimport { isContinuous, isDiscrete } from '@visactor/vscale';\nimport { invokeFunctionType } from '../parse/util';\n\ntype CrosshairComponent = CircleCrosshair | LineCrosshair | PolygonCrosshair | RectCrosshair | SectorCrosshair;\n\nconst computeCrosshairStartEnd = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: any,\n offset: number = 0\n) => {\n const start = { x: 0, y: 0 };\n const end = { x: 0, y: 0 };\n const radius = type === 'angle' ? config?.radius ?? Math.min(groupSize.width, groupSize.height) / 2 : null;\n const center = type === 'angle' ? config?.center ?? { x: groupSize.width / 2, y: groupSize.height / 2 } : null;\n\n let current = 0;\n if (isDiscrete(scale.type)) {\n if (type === 'x') {\n current = scale.scale(scale.invert(point.x));\n } else if (type === 'y') {\n current = scale.scale(scale.invert(point.y));\n } else if (type === 'angle') {\n const angle = clampRadian(getAngleByPoint(center, point) + Math.PI * 2);\n current = scale.scale(scale.invert(angle));\n }\n } else if (isContinuous(scale.type)) {\n if (type === 'x') {\n current = point.x;\n } else if (type === 'y') {\n current = point.y;\n } else if (type === 'angle') {\n current = getAngleByPoint(center, point);\n }\n }\n current += offset;\n switch (type) {\n case 'x':\n start.x = current;\n start.y = 0;\n end.x = current;\n end.y = groupSize.height;\n break;\n case 'y':\n start.x = 0;\n start.y = current;\n end.x = groupSize.width;\n end.y = current;\n break;\n case 'angle':\n start.x = center.x;\n start.y = center.y;\n end.x = center.x + radius * Math.cos(current);\n end.y = center.y + radius * Math.sin(current);\n break;\n }\n return { start, end };\n};\n\nconst computeRadiusOfTangential = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: any,\n addition?:\n | RecursivePartial<PolygonCrosshairAttrs>\n | RecursivePartial<CircleCrosshairAttrs>\n | RecursivePartial<SectorCrosshairAttrs>\n) => {\n const center = addition?.center ?? config?.center ?? { x: groupSize.width / 2, y: groupSize.height / 2 };\n let currentRadius = 0;\n\n if (isDiscrete(scale.type)) {\n const offset = scale.type === 'band' ? (scale as IBandLikeScale).bandwidth() / 2 : 0;\n const radius = Math.sqrt((point.x - center.x) ** 2 + (point.y - center.y) ** 2);\n currentRadius = scale.scale(scale.invert(radius)) + offset;\n } else if (isContinuous(scale.type)) {\n const maxRadius = config?.radius ?? Math.min(groupSize.width, groupSize.height) / 2;\n currentRadius = Math.min(maxRadius, Math.sqrt((point.x - center.x) ** 2 + (point.y - center.y) ** 2));\n }\n\n return { radius: currentRadius, center };\n};\n\nexport const generateLineCrosshairAttributes = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: any,\n theme?: ITheme,\n addition?: RecursivePartial<LineCrosshairAttrs> & any\n): LineCrosshairAttrs => {\n const crosshairTheme = theme?.components?.lineCrosshair;\n const offset = scale.type === 'band' ? (scale as IBandLikeScale).bandwidth() / 2 : 0;\n const points = computeCrosshairStartEnd(\n point,\n scale,\n type,\n groupSize,\n {\n radius: addition?.radius ?? config?.radius,\n center: addition?.center ?? config?.center\n },\n offset\n );\n return merge({}, crosshairTheme, points, addition ?? {});\n};\n\nexport const generateRectCrosshairAttributes = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: any,\n theme?: ITheme,\n addition?: RecursivePartial<RectCrosshairAttrs>\n): RectCrosshairAttrs => {\n const crosshairTheme = theme?.components?.rectCrosshair;\n const defaultSize = scale.type === 'band' || scale.type === 'point' ? (scale as IBandLikeScale).step() : undefined;\n const customRectStyle = addition?.rectStyle;\n const size =\n defaultSize ??\n (type === 'y'\n ? customRectStyle?.width ?? crosshairTheme.rectStyle.width\n : customRectStyle?.height ?? crosshairTheme.rectStyle.height);\n const points = computeCrosshairStartEnd(point, scale, type, groupSize, config, scale.type === 'band' ? 0 : -size / 2);\n const rectStyle: Partial<IRectGraphicAttribute> = {};\n if (type === 'x') {\n rectStyle.width = size;\n } else {\n rectStyle.height = size;\n }\n const attribute = merge(\n {},\n crosshairTheme,\n {\n start: points.start,\n end: points.end,\n rectStyle\n },\n addition ?? {}\n );\n if (type === 'x') {\n attribute.rectStyle.height = attribute.end.y - attribute.start.y;\n } else {\n attribute.rectStyle.width = attribute.end.x - attribute.start.x;\n }\n return attribute;\n};\n\nexport const generateRingCrosshairAttributes = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: any,\n theme?: ITheme,\n addition?: RecursivePartial<SectorCrosshairAttrs>\n): SectorCrosshairAttrs => {\n const crosshairTheme = theme?.components?.circleCrosshair;\n const { center, radius } = computeRadiusOfTangential(point, scale, type, groupSize, config, addition);\n\n const startAngle = crosshairTheme.startAngle;\n const endAngle = crosshairTheme.endAngle;\n const deltaRadius = scale.type === 'band' || scale.type === 'point' ? (scale as IBandLikeScale).step() : 0;\n\n return merge(\n {},\n crosshairTheme,\n { center, innerRadius: radius - deltaRadius / 2, radius: radius + deltaRadius / 2, startAngle, endAngle },\n addition ?? {}\n );\n};\n\nexport const generateSectorCrosshairAttributes = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: any,\n theme?: ITheme,\n addition?: RecursivePartial<SectorCrosshairAttrs>\n): SectorCrosshairAttrs => {\n const crosshairTheme = theme?.components?.sectorCrosshair;\n const radius = addition?.radius ?? config?.radius ?? Math.min(groupSize.width, groupSize.height) / 2;\n const center = (addition?.center ??\n config?.center ?? { x: groupSize.width / 2, y: groupSize.height / 2 }) as IPointLike;\n const defaultAngle = crosshairTheme.endAngle - crosshairTheme.startAngle;\n const angle = scale.type === 'band' || scale.type === 'point' ? (scale as IBandLikeScale).step() : defaultAngle;\n let currentAngle = 0;\n if (isDiscrete(scale.type)) {\n const angle = clampRadian(getAngleByPoint(center, point) + Math.PI * 2);\n currentAngle =\n scale.scale(scale.invert(angle)) + (scale.type === 'band' ? (scale as IBandLikeScale).bandwidth() / 2 : 0);\n } else if (isContinuous(scale.type)) {\n currentAngle = getAngleByPoint(center, point);\n }\n const startAngle = currentAngle - angle / 2;\n const endAngle = currentAngle + angle / 2;\n return merge({}, crosshairTheme, { center, radius, startAngle, endAngle }, addition ?? {});\n};\n\nexport const generateCircleCrosshairAttributes = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: any,\n theme?: ITheme,\n addition?: RecursivePartial<CircleCrosshairAttrs>\n): CircleCrosshairAttrs => {\n const crosshairTheme = theme?.components?.circleCrosshair;\n const { center, radius } = computeRadiusOfTangential(point, scale, type, groupSize, config, addition);\n\n const startAngle = crosshairTheme.startAngle;\n const endAngle = crosshairTheme.endAngle;\n\n return merge({}, crosshairTheme, { center, radius: radius, startAngle, endAngle }, addition ?? {});\n};\n\nexport const generatePolygonCrosshairAttributes = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: any,\n theme?: ITheme,\n addition?: RecursivePartial<PolygonCrosshairAttrs>\n): PolygonCrosshairAttrs => {\n const crosshairTheme = theme?.components?.circleCrosshair;\n const { center, radius } = computeRadiusOfTangential(point, scale, type, groupSize, config, addition);\n\n const startAngle = crosshairTheme.startAngle;\n const endAngle = crosshairTheme.endAngle;\n return merge({}, crosshairTheme, { center, radius: radius, startAngle, endAngle }, addition ?? {});\n};\n\nexport class Crosshair extends BaseInteraction<CrosshairOptions> {\n static type: string = 'crosshair';\n type: string = Crosshair.type;\n options: CrosshairOptions;\n\n static defaultOptions: Omit<CrosshairOptions, 'target'> = {\n trigger: 'pointermove',\n resetTrigger: 'pointerleave',\n crosshairType: 'x',\n crosshairShape: 'line'\n };\n\n protected _crosshairComponent?: CrosshairComponent;\n protected _crosshairComponentType?: keyof typeof CrosshairEnum;\n protected _container: IGroupMark;\n\n constructor(view: IView, options?: CrosshairOptions) {\n super(view, options);\n this.options = Object.assign({}, Crosshair.defaultOptions, options);\n this._container = (view.getMarksBySelector(this.options.container)?.[0] as IGroupMark) ?? view.rootMark;\n }\n\n protected getEvents() {\n return [\n {\n type: this.options.trigger,\n handler: this.handleCrosshairShow\n },\n {\n type: this.options.resetTrigger,\n handler: this.handleCrosshairHide\n }\n ];\n }\n\n protected handleCrosshairShow = (event: InteractionEvent) => {\n if (!this._crosshairComponent) {\n return;\n }\n const groupGraphicItem = this._container.getGroupGraphicItem();\n // FIXME: waiting for vRender to add transformed position to event\n const point = { x: 0, y: 0 };\n const globalTransMatrix = groupGraphicItem.globalTransMatrix;\n const containerPoint = { x: globalTransMatrix.e, y: globalTransMatrix.f };\n globalTransMatrix.transformPoint(event.canvas, point);\n\n if (\n point.x < 0 ||\n point.x > groupGraphicItem.attribute.width ||\n point.y < 0 ||\n point.y > groupGraphicItem.attribute.height\n ) {\n this._crosshairComponent.hideAll();\n return;\n }\n\n const crosshairType = this.options.crosshairType ?? 'x';\n const groupSize = { width: groupGraphicItem.attribute.width, height: groupGraphicItem.attribute.height };\n const scaleGrammar = isString(this.options.scale) ? this.view.getScaleById(this.options.scale) : this.options.scale;\n const scale = scaleGrammar.getScale();\n const config = { center: this.options.center, radius: this.options.radius };\n const theme = this.view.getCurrentTheme();\n const addition = invokeFunctionType(this.options.attributes, this.parameters(), {}, {}) as any;\n\n let attributes: any = {};\n switch (this.getCrosshairComponentType()) {\n case CrosshairEnum.lineCrosshair:\n attributes = generateLineCrosshairAttributes(point, scale, crosshairType, groupSize, config, theme, addition);\n break;\n case CrosshairEnum.rectCrosshair:\n attributes = generateRectCrosshairAttributes(point, scale, crosshairType, groupSize, config, theme, addition);\n break;\n case CrosshairEnum.sectorCrosshair:\n attributes = generateSectorCrosshairAttributes(point, scale, crosshairType, groupSize, config, theme, addition);\n break;\n case CrosshairEnum.circleCrosshair:\n attributes = generateCircleCrosshairAttributes(point, scale, crosshairType, groupSize, config, theme, addition);\n break;\n case CrosshairEnum.polygonCrosshair:\n attributes = generatePolygonCrosshairAttributes(\n point,\n scale,\n crosshairType,\n groupSize,\n config,\n theme,\n addition\n );\n break;\n case CrosshairEnum.ringCrosshair:\n attributes = generateRingCrosshairAttributes(point, scale, crosshairType, groupSize, config, theme, addition);\n break;\n }\n // Hack: waiting for component to fix\n if (this.getCrosshairComponentType() !== CrosshairEnum.circleCrosshair) {\n attributes.x = containerPoint.x;\n attributes.y = containerPoint.y;\n }\n this._crosshairComponent.showAll();\n this._crosshairComponent.setAttributes(attributes);\n };\n\n protected handleCrosshairHide = () => {\n this._crosshairComponent.hideAll();\n };\n\n protected getCrosshairComponentType() {\n if (this._crosshairComponentType) {\n return this._crosshairComponentType;\n }\n const shape = this.options.crosshairShape ?? 'line';\n const type = this.options.crosshairType ?? 'x';\n if (shape === 'rect') {\n if (type === 'angle') {\n this._crosshairComponentType = CrosshairEnum.sectorCrosshair;\n } else if (type === 'radius') {\n this._crosshairComponentType = CrosshairEnum.ringCrosshair;\n } else if (type === 'radius-polygon') {\n this._crosshairComponentType = CrosshairEnum.polygonCrosshair;\n } else {\n this._crosshairComponentType = CrosshairEnum.rectCrosshair;\n }\n } else {\n if (type === 'radius') {\n this._crosshairComponentType = CrosshairEnum.circleCrosshair;\n } else if (type === 'radius-polygon') {\n this._crosshairComponentType = CrosshairEnum.polygonCrosshair;\n } else {\n this._crosshairComponentType = CrosshairEnum.lineCrosshair;\n }\n }\n return this._crosshairComponentType;\n }\n\n protected getDefaultCrosshairAttribute(): any {\n const type = this.options.crosshairType ?? 'x';\n if (type === 'radius' || type === 'radius-polygon') {\n return { center: { x: 0, y: 0 }, zIndex: -1 };\n }\n return { start: { x: 0, y: 0 }, end: { x: 0, y: 0 }, zIndex: -1 };\n }\n\n bind(): void {\n super.bind();\n\n const stage = this.view.renderer.stage();\n if (this._crosshairComponent || !stage) {\n return;\n }\n\n switch (this.getCrosshairComponentType()) {\n case CrosshairEnum.lineCrosshair:\n this._crosshairComponent = new LineCrosshair(this.getDefaultCrosshairAttribute());\n break;\n case CrosshairEnum.rectCrosshair:\n this._crosshairComponent = new RectCrosshair(this.getDefaultCrosshairAttribute());\n break;\n case CrosshairEnum.sectorCrosshair:\n this._crosshairComponent = new SectorCrosshair(this.getDefaultCrosshairAttribute());\n break;\n case CrosshairEnum.circleCrosshair:\n this._crosshairComponent = new CircleCrosshair(this.getDefaultCrosshairAttribute());\n break;\n case CrosshairEnum.polygonCrosshair:\n this._crosshairComponent = new PolygonCrosshair(this.getDefaultCrosshairAttribute());\n break;\n case CrosshairEnum.ringCrosshair:\n this._crosshairComponent = new SectorCrosshair(this.getDefaultCrosshairAttribute());\n break;\n }\n (stage.defaultLayer as any).appendChild(this._crosshairComponent);\n }\n\n unbind(): void {\n super.unbind();\n\n if (this._crosshairComponent) {\n this._crosshairComponent.release();\n this._crosshairComponent = null;\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { DataFilterOptions, IView } from '../types';
|
|
2
|
+
import { Filter } from './filter';
|
|
3
|
+
export declare class DatazoomFilter extends Filter {
|
|
4
|
+
static type: string;
|
|
5
|
+
type: string;
|
|
6
|
+
static defaultOptions: Omit<DataFilterOptions, 'target'>;
|
|
7
|
+
options: DataFilterOptions;
|
|
8
|
+
constructor(view: IView, options?: DataFilterOptions);
|
|
9
|
+
protected getEvents(): {
|
|
10
|
+
type: string;
|
|
11
|
+
handler: (event?: import("../types").InteractionEvent) => void;
|
|
12
|
+
}[];
|
|
13
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: !0
|
|
5
|
+
}), exports.DatazoomFilter = void 0;
|
|
6
|
+
|
|
7
|
+
const graph_1 = require("../graph"), vutils_1 = require("@visactor/vutils"), filter_1 = require("./filter"), scale_1 = require("../util/scale");
|
|
8
|
+
|
|
9
|
+
class DatazoomFilter extends filter_1.Filter {
|
|
10
|
+
constructor(view, options) {
|
|
11
|
+
super(view, options), this.type = DatazoomFilter.type, this.options = Object.assign({}, DatazoomFilter.defaultOptions, options),
|
|
12
|
+
this._marks = view.getMarksBySelector(this.options.source).filter((mark => mark.markType === graph_1.GrammarMarkType.component && "datazoom" === mark.componentType)),
|
|
13
|
+
this._data = (0, vutils_1.isString)(this.options.target.data) ? view.getDataById(this.options.target.data) : this.options.target.data;
|
|
14
|
+
}
|
|
15
|
+
getEvents() {
|
|
16
|
+
if (!this._marks || 0 === this._marks.length) return [];
|
|
17
|
+
const datazoom = this._marks[0];
|
|
18
|
+
if (!this._data || !datazoom) return [];
|
|
19
|
+
const filter = this.options.target.filter, transform = this.options.target.transform, dataFilter = (0,
|
|
20
|
+
vutils_1.isString)(filter) ? (datum, filterValue) => {
|
|
21
|
+
if ((0, vutils_1.isNil)(filterValue.start) || (0, vutils_1.isNil)(filterValue.end)) return !0;
|
|
22
|
+
const scale = datazoom.getDatazoomMainScale(), datumRatio = (0, scale_1.getScaleRangeRatio)(scale, datum[filter]);
|
|
23
|
+
return filterValue.startRatio <= datumRatio && filterValue.endRatio >= datumRatio;
|
|
24
|
+
} : filter;
|
|
25
|
+
return this._filterData(this._data, datazoom, graph_1.DataFilterRank.datazoom, (event => {
|
|
26
|
+
const startRatio = event.detail.start, endRatio = event.detail.end;
|
|
27
|
+
return {
|
|
28
|
+
startRatio: startRatio,
|
|
29
|
+
endRatio: endRatio,
|
|
30
|
+
start: datazoom.invertDatazoomRatio(startRatio),
|
|
31
|
+
end: datazoom.invertDatazoomRatio(endRatio)
|
|
32
|
+
};
|
|
33
|
+
}), dataFilter, transform), [ {
|
|
34
|
+
type: "change",
|
|
35
|
+
handler: this.handleFilter
|
|
36
|
+
} ];
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
exports.DatazoomFilter = DatazoomFilter, DatazoomFilter.type = "datazoom-filter",
|
|
41
|
+
DatazoomFilter.defaultOptions = {};
|
|
42
|
+
//# sourceMappingURL=datazoom-filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/interactions/datazoom-filter.ts"],"names":[],"mappings":"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","file":"datazoom-filter.js","sourcesContent":["import type { DataFilterOptions, DatazoomFilterValue, IComponent, IDatazoom, IView } from '../types';\nimport { DataFilterRank, GrammarMarkType } from '../graph';\nimport { isNil, isString } from '@visactor/vutils';\nimport { Filter } from './filter';\nimport { getScaleRangeRatio } from '../util/scale';\n\nexport class DatazoomFilter extends Filter {\n static type: string = 'datazoom-filter';\n type: string = DatazoomFilter.type;\n\n static defaultOptions: Omit<DataFilterOptions, 'target'> = {};\n options: DataFilterOptions;\n\n constructor(view: IView, options?: DataFilterOptions) {\n super(view, options);\n this.options = Object.assign({}, DatazoomFilter.defaultOptions, options);\n\n this._marks = view\n .getMarksBySelector(this.options.source)\n .filter(mark => mark.markType === GrammarMarkType.component && (mark as IComponent).componentType === 'datazoom');\n this._data = isString(this.options.target.data)\n ? view.getDataById(this.options.target.data)\n : this.options.target.data;\n }\n\n protected getEvents() {\n if (!this._marks || this._marks.length === 0) {\n return [];\n }\n\n const datazoom = this._marks[0] as IDatazoom;\n\n if (!this._data || !datazoom) {\n return [];\n }\n\n const filter = this.options.target.filter;\n const transform = this.options.target.transform;\n\n const getFilterValue = (event: any): DatazoomFilterValue => {\n const startRatio = event.detail.start;\n const endRatio = event.detail.end;\n return {\n startRatio,\n endRatio,\n start: datazoom.invertDatazoomRatio(startRatio),\n end: datazoom.invertDatazoomRatio(endRatio)\n };\n };\n const dataFilter = isString(filter)\n ? (datum: any, filterValue: DatazoomFilterValue) => {\n if (isNil(filterValue.start) || isNil(filterValue.end)) {\n return true;\n }\n const scale = datazoom.getDatazoomMainScale();\n const datumRatio = getScaleRangeRatio(scale, datum[filter]);\n\n return filterValue.startRatio <= datumRatio && filterValue.endRatio >= datumRatio;\n }\n : filter;\n\n this._filterData(this._data, datazoom, DataFilterRank.datazoom, getFilterValue, dataFilter, transform);\n\n return [\n {\n type: 'change',\n handler: this.handleFilter\n }\n ];\n }\n}\n"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { DimensionTooltipOptions, IGroupMark, IMark, IView } from '../types';
|
|
2
|
+
import { BaseTooltip } from './base-tooltip';
|
|
3
|
+
export declare class DimensionTooltip extends BaseTooltip<DimensionTooltipOptions> {
|
|
4
|
+
static type: string;
|
|
5
|
+
type: string;
|
|
6
|
+
static defaultOptions: Omit<DimensionTooltipOptions, 'target'>;
|
|
7
|
+
protected _avoidMarks: IMark[];
|
|
8
|
+
protected _lastDatum: any;
|
|
9
|
+
protected _tooltipDataFilter: ((datum: any, filterValue: any[]) => boolean) | null;
|
|
10
|
+
protected _container: IGroupMark;
|
|
11
|
+
constructor(view: IView, options?: DimensionTooltipOptions);
|
|
12
|
+
protected getEvents(): {
|
|
13
|
+
type: import("../types").EventType;
|
|
14
|
+
handler: (...args: any[]) => void;
|
|
15
|
+
}[];
|
|
16
|
+
protected handleTooltipShow: (...args: any[]) => void;
|
|
17
|
+
protected handleTooltipHide: (event: any) => void;
|
|
18
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: !0
|
|
5
|
+
}), exports.DimensionTooltip = void 0;
|
|
6
|
+
|
|
7
|
+
const vutils_1 = require("@visactor/vutils"), base_tooltip_1 = require("./base-tooltip"), base_tooltip_2 = require("./base-tooltip"), constants_1 = require("../graph/constants"), util_1 = require("../parse/util"), isEqualTooltipDatum = (current, previous) => {
|
|
8
|
+
const currentDatum = (0, vutils_1.array)(current), previousDatum = (0, vutils_1.array)(previous);
|
|
9
|
+
return currentDatum.length === previousDatum.length && (currentDatum.every((datum => previousDatum.includes(datum))) && previousDatum.every((datum => currentDatum.includes(datum))));
|
|
10
|
+
}, computeTooltipFilterValue = (point, scale, type, groupSize, tooltipCenter) => {
|
|
11
|
+
if ("x" === type) return scale.invert(point.x);
|
|
12
|
+
if ("y" === type) return scale.invert(point.y);
|
|
13
|
+
if ("radius" === type) {
|
|
14
|
+
const center = null != tooltipCenter ? tooltipCenter : {
|
|
15
|
+
x: groupSize.width / 2,
|
|
16
|
+
y: groupSize.height / 2
|
|
17
|
+
}, radius = Math.sqrt((center.x - point.x) ** 2 + (center.y - point.y) ** 2);
|
|
18
|
+
return scale.invert(radius);
|
|
19
|
+
}
|
|
20
|
+
if ("angle" === type) {
|
|
21
|
+
const center = null != tooltipCenter ? tooltipCenter : {
|
|
22
|
+
x: groupSize.width / 2,
|
|
23
|
+
y: groupSize.height / 2
|
|
24
|
+
}, angle = (0, vutils_1.getAngleByPoint)(center, point);
|
|
25
|
+
return scale.invert(angle < 0 ? angle + 2 * Math.PI : angle);
|
|
26
|
+
}
|
|
27
|
+
return scale.invert(point.x);
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
class DimensionTooltip extends base_tooltip_1.BaseTooltip {
|
|
31
|
+
constructor(view, options) {
|
|
32
|
+
var _a, _b, _c;
|
|
33
|
+
super(view, options), this.type = DimensionTooltip.type, this._avoidMarks = [],
|
|
34
|
+
this._tooltipDataFilter = null, this.handleTooltipShow = (0, vutils_1.throttle)((event => {
|
|
35
|
+
var _a, _b, _c;
|
|
36
|
+
const scale = ((0, vutils_1.isString)(this.options.scale) ? this.view.getScaleById(this.options.scale) : this.options.scale).getScale(), groupGraphicItem = this._container.getGroupGraphicItem(), point = {
|
|
37
|
+
x: 0,
|
|
38
|
+
y: 0
|
|
39
|
+
};
|
|
40
|
+
groupGraphicItem.globalTransMatrix.transformPoint(event.canvas, point);
|
|
41
|
+
const groupSize = {
|
|
42
|
+
width: groupGraphicItem.attribute.width,
|
|
43
|
+
height: groupGraphicItem.attribute.height
|
|
44
|
+
};
|
|
45
|
+
if (point.x < 0 || point.x > groupGraphicItem.attribute.width || point.y < 0 || point.y > groupGraphicItem.attribute.height) return void this._tooltipComponent.hideAll();
|
|
46
|
+
const eventTargetMark = null === (_b = null === (_a = event.target) || void 0 === _a ? void 0 : _a[constants_1.BridgeElementKey]) || void 0 === _b ? void 0 : _b.mark;
|
|
47
|
+
if (this._avoidMarks.includes(eventTargetMark)) return void this._tooltipComponent.hideAll();
|
|
48
|
+
const target = null === (_c = this.options.target) || void 0 === _c ? void 0 : _c.data, lastDataGrammar = target ? (0,
|
|
49
|
+
vutils_1.isString)(target) ? this.view.getDataById(target) : target : null, data = lastDataGrammar ? lastDataGrammar.getValue() : [], filterValue = computeTooltipFilterValue(point, scale, this.options.tooltipType, groupSize, this.options.center), tooltipDatum = this._tooltipDataFilter ? data.filter((datum => this._tooltipDataFilter(datum, filterValue))) : [];
|
|
50
|
+
if (this._tooltipComponent.showAll(), isEqualTooltipDatum(tooltipDatum, this._lastDatum)) return void this._tooltipComponent.setAttributes({
|
|
51
|
+
pointerX: point.x,
|
|
52
|
+
pointerY: point.y
|
|
53
|
+
});
|
|
54
|
+
this._lastDatum = tooltipDatum;
|
|
55
|
+
const boundsStart = {
|
|
56
|
+
x: 0,
|
|
57
|
+
y: 0
|
|
58
|
+
};
|
|
59
|
+
groupGraphicItem.globalTransMatrix.transformPoint({
|
|
60
|
+
x: 0,
|
|
61
|
+
y: 0
|
|
62
|
+
}, boundsStart);
|
|
63
|
+
const boundsEnd = {
|
|
64
|
+
x: 0,
|
|
65
|
+
y: 0
|
|
66
|
+
};
|
|
67
|
+
groupGraphicItem.globalTransMatrix.transformPoint({
|
|
68
|
+
x: this.view.getSignalById("width").getValue(),
|
|
69
|
+
y: this.view.getSignalById("height").getValue()
|
|
70
|
+
}, boundsEnd);
|
|
71
|
+
const bounds = (new vutils_1.AABBBounds).set(boundsStart.x, boundsStart.y, boundsEnd.x, boundsEnd.y), {title: title, content: content} = this._computeTitleContent(tooltipDatum), theme = this.view.getCurrentTheme(), addition = (0,
|
|
72
|
+
util_1.invokeFunctionType)(this.options.attributes, this.parameters(), {}), attributes = (0,
|
|
73
|
+
base_tooltip_2.generateTooltipAttributes)(point, title, content, bounds, theme, addition);
|
|
74
|
+
this._tooltipComponent.setAttributes(attributes);
|
|
75
|
+
}), 10), this.handleTooltipHide = event => {
|
|
76
|
+
this._tooltipComponent.hideAll();
|
|
77
|
+
}, this.options = Object.assign({}, DimensionTooltip.defaultOptions, options), this._marks = view.getMarksBySelector(this.options.selector),
|
|
78
|
+
this._avoidMarks = null !== (_a = view.getMarksBySelector(this.options.avoidMark)) && void 0 !== _a ? _a : [],
|
|
79
|
+
this._container = null !== (_c = null === (_b = view.getMarksBySelector(this.options.container)) || void 0 === _b ? void 0 : _b[0]) && void 0 !== _c ? _c : view.rootMark;
|
|
80
|
+
}
|
|
81
|
+
getEvents() {
|
|
82
|
+
const filter = this.options.target.filter;
|
|
83
|
+
return this._tooltipDataFilter = (0, vutils_1.isString)(filter) ? (datum, filterValue) => filterValue === datum[filter] : filter,
|
|
84
|
+
[ {
|
|
85
|
+
type: this.options.trigger,
|
|
86
|
+
handler: this.handleTooltipShow
|
|
87
|
+
}, {
|
|
88
|
+
type: this.options.resetTrigger,
|
|
89
|
+
handler: this.handleTooltipHide
|
|
90
|
+
} ];
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
exports.DimensionTooltip = DimensionTooltip, DimensionTooltip.type = "dimension-tooltip",
|
|
95
|
+
DimensionTooltip.defaultOptions = {
|
|
96
|
+
trigger: "pointermove",
|
|
97
|
+
resetTrigger: "pointerleave"
|
|
98
|
+
};
|
|
99
|
+
//# sourceMappingURL=dimension-tooltip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/interactions/dimension-tooltip.ts"],"names":[],"mappings":"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","file":"dimension-tooltip.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { AABBBounds, array, getAngleByPoint, isString, throttle } from '@visactor/vutils';\nimport type { DimensionTooltipOptions, IGroupMark, IMark, IView, TooltipType } from '../types';\nimport { BaseTooltip } from './base-tooltip';\n// eslint-disable-next-line no-duplicate-imports\nimport { generateTooltipAttributes } from './base-tooltip';\nimport { BridgeElementKey } from '../graph/constants';\nimport type { IBaseScale } from '@visactor/vscale';\nimport { invokeFunctionType } from '../parse/util';\n\nconst isEqualTooltipDatum = (current: any[], previous: any[]) => {\n const currentDatum = array(current);\n const previousDatum = array(previous);\n if (currentDatum.length !== previousDatum.length) {\n return false;\n }\n return (\n currentDatum.every(datum => previousDatum.includes(datum)) &&\n previousDatum.every(datum => currentDatum.includes(datum))\n );\n};\n\nconst computeTooltipFilterValue = (\n point: IPointLike,\n scale: IBaseScale,\n type: TooltipType,\n groupSize: { width: number; height: number },\n tooltipCenter?: IPointLike\n) => {\n if (type === 'x') {\n return scale.invert(point.x);\n }\n if (type === 'y') {\n return scale.invert(point.y);\n }\n if (type === 'radius') {\n const center = tooltipCenter ?? { x: groupSize.width / 2, y: groupSize.height / 2 };\n const radius = Math.sqrt((center.x - point.x) ** 2 + (center.y - point.y) ** 2);\n return scale.invert(radius);\n }\n if (type === 'angle') {\n const center = tooltipCenter ?? { x: groupSize.width / 2, y: groupSize.height / 2 };\n const angle = getAngleByPoint(center, point);\n return scale.invert(angle < 0 ? angle + Math.PI * 2 : angle);\n }\n return scale.invert(point.x);\n};\n\nexport class DimensionTooltip extends BaseTooltip<DimensionTooltipOptions> {\n static type: string = 'dimension-tooltip';\n type: string = DimensionTooltip.type;\n\n static defaultOptions: Omit<DimensionTooltipOptions, 'target'> = {\n trigger: 'pointermove',\n resetTrigger: 'pointerleave'\n };\n protected _avoidMarks: IMark[] = [];\n protected _lastDatum: any;\n protected _tooltipDataFilter: ((datum: any, filterValue: any[]) => boolean) | null = null;\n protected _container: IGroupMark;\n\n constructor(view: IView, options?: DimensionTooltipOptions) {\n super(view, options);\n this.options = Object.assign({}, DimensionTooltip.defaultOptions, options);\n this._marks = view.getMarksBySelector(this.options.selector);\n this._avoidMarks = view.getMarksBySelector(this.options.avoidMark) ?? [];\n this._container = (view.getMarksBySelector(this.options.container)?.[0] as IGroupMark) ?? view.rootMark;\n }\n\n protected getEvents() {\n const filter = this.options.target.filter;\n\n this._tooltipDataFilter = isString(filter)\n ? (datum: any, filterValue: any[]) => filterValue === datum[filter]\n : filter;\n\n return [\n { type: this.options.trigger, handler: this.handleTooltipShow },\n { type: this.options.resetTrigger, handler: this.handleTooltipHide }\n ];\n }\n\n protected handleTooltipShow = throttle((event: any) => {\n const scaleGrammar = isString(this.options.scale) ? this.view.getScaleById(this.options.scale) : this.options.scale;\n const scale = scaleGrammar.getScale();\n const groupGraphicItem = this._container.getGroupGraphicItem();\n // FIXME: waiting for vRender to add transformed position to event\n const point = { x: 0, y: 0 };\n groupGraphicItem.globalTransMatrix.transformPoint(event.canvas, point);\n const groupSize = { width: groupGraphicItem.attribute.width, height: groupGraphicItem.attribute.height };\n\n // if pointer is not within the area of group, hide tooltip\n if (\n point.x < 0 ||\n point.x > groupGraphicItem.attribute.width ||\n point.y < 0 ||\n point.y > groupGraphicItem.attribute.height\n ) {\n this._tooltipComponent.hideAll();\n return;\n }\n // if pointer is hovered on the avoided marks, hide tooltip\n const eventTargetMark = event.target?.[BridgeElementKey]?.mark;\n if (this._avoidMarks.includes(eventTargetMark)) {\n this._tooltipComponent.hideAll();\n return;\n }\n\n const target = this.options.target?.data;\n const lastDataGrammar = !target ? null : isString(target) ? this.view.getDataById(target) : target;\n const data = lastDataGrammar ? lastDataGrammar.getValue() : [];\n\n const filterValue = computeTooltipFilterValue(\n point,\n scale,\n this.options.tooltipType,\n groupSize,\n this.options.center\n );\n const tooltipDatum = this._tooltipDataFilter\n ? data.filter(datum => this._tooltipDataFilter(datum, filterValue))\n : [];\n\n this._tooltipComponent.showAll();\n if (isEqualTooltipDatum(tooltipDatum, this._lastDatum)) {\n // only update pointer when element is not changed\n this._tooltipComponent.setAttributes({ pointerX: point.x, pointerY: point.y } as any);\n return;\n }\n this._lastDatum = tooltipDatum;\n\n // compute tooltip bounds\n const boundsStart = { x: 0, y: 0 };\n groupGraphicItem.globalTransMatrix.transformPoint({ x: 0, y: 0 }, boundsStart);\n const boundsEnd = { x: 0, y: 0 };\n groupGraphicItem.globalTransMatrix.transformPoint(\n {\n x: this.view.getSignalById('width').getValue() as number,\n y: this.view.getSignalById('height').getValue() as number\n },\n boundsEnd\n );\n const bounds = new AABBBounds().set(boundsStart.x, boundsStart.y, boundsEnd.x, boundsEnd.y);\n const { title, content } = this._computeTitleContent(tooltipDatum);\n const theme = this.view.getCurrentTheme();\n const addition = invokeFunctionType(this.options.attributes, this.parameters(), {}) as any;\n const attributes = generateTooltipAttributes(point, title, content, bounds, theme, addition);\n this._tooltipComponent.setAttributes(attributes);\n }, 10);\n\n protected handleTooltipHide = (event: any) => {\n this._tooltipComponent.hideAll();\n };\n}\n"]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { IPolygon } from '@visactor/vrender-core';
|
|
2
|
+
import type { DrillDownOptions, IView, InteractionEvent } from '../types';
|
|
3
|
+
import { BrushBase } from './brush-base';
|
|
4
|
+
import { type IBounds } from '@visactor/vutils';
|
|
5
|
+
import type { FilterMixin } from './filter';
|
|
6
|
+
export interface DrillDown extends Pick<FilterMixin, '_data' | '_filterValue' | '_dataFilter' | 'handleFilter' | '_filterData'>, BrushBase<DrillDownOptions> {
|
|
7
|
+
}
|
|
8
|
+
export declare class DrillDown extends BrushBase<DrillDownOptions> {
|
|
9
|
+
static type: string;
|
|
10
|
+
type: string;
|
|
11
|
+
static defaultOptions: Omit<DrillDownOptions, 'target'>;
|
|
12
|
+
constructor(view: IView, option?: DrillDownOptions);
|
|
13
|
+
protected getEvents(): {
|
|
14
|
+
type: string;
|
|
15
|
+
handler: import("../types").InteractionEventHandler;
|
|
16
|
+
}[];
|
|
17
|
+
handleBrushUpdate: (options: {
|
|
18
|
+
operateType: string;
|
|
19
|
+
operateMask: IPolygon;
|
|
20
|
+
operatedMaskAABBBounds: {
|
|
21
|
+
[name: string]: IBounds;
|
|
22
|
+
};
|
|
23
|
+
}) => void;
|
|
24
|
+
handleTrigger: (event: InteractionEvent) => void;
|
|
25
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: !0
|
|
5
|
+
}), exports.DrillDown = void 0;
|
|
6
|
+
|
|
7
|
+
const brush_base_1 = require("./brush-base"), vutils_1 = require("@visactor/vutils"), graph_1 = require("../graph");
|
|
8
|
+
|
|
9
|
+
class DrillDown extends brush_base_1.BrushBase {
|
|
10
|
+
constructor(view, option) {
|
|
11
|
+
super(view, Object.assign({}, DrillDown.defaultOptions, option)), this.type = DrillDown.type,
|
|
12
|
+
this.handleBrushUpdate = options => {
|
|
13
|
+
const elements = [];
|
|
14
|
+
let filterValue = [];
|
|
15
|
+
this._marks.forEach((mark => {
|
|
16
|
+
mark.elements.forEach((el => {
|
|
17
|
+
this.isBrushContainGraphicItem(options.operateMask, el.getGraphicItem()) && (elements.push(el),
|
|
18
|
+
filterValue = filterValue.concat((0, vutils_1.array)(el.getDatum())));
|
|
19
|
+
}));
|
|
20
|
+
})), this._data && (filterValue = Array.from(new Set(filterValue)), this._filterValue && filterValue.length === this._filterValue.length && !filterValue.some((datum => !this._filterValue.includes(datum))) || (this._filterValue = filterValue,
|
|
21
|
+
this.handleFilter())), this.dispatchEvent(options, elements);
|
|
22
|
+
}, this.handleTrigger = event => {
|
|
23
|
+
const element = event.element;
|
|
24
|
+
if (element && this._marks && this._marks.includes(element.mark)) {
|
|
25
|
+
const filterValue = (0, vutils_1.array)(element.getDatum());
|
|
26
|
+
this._filterValue && filterValue.length === this._filterValue.length && !filterValue.some((datum => !this._filterValue.includes(datum))) || (this._filterValue = filterValue,
|
|
27
|
+
this.handleFilter());
|
|
28
|
+
}
|
|
29
|
+
}, this._data = (0, vutils_1.isString)(this.options.target.data) ? view.getDataById(this.options.target.data) : this.options.target.data;
|
|
30
|
+
}
|
|
31
|
+
getEvents() {
|
|
32
|
+
if (!this._data) return [];
|
|
33
|
+
const transform = this.options.target.transform;
|
|
34
|
+
return this._filterData(this._data, null, graph_1.DataFilterRank.drillDown, null, void 0, ((data, filterValue) => {
|
|
35
|
+
const nextData = filterValue || data;
|
|
36
|
+
return transform ? transform(data, filterValue) : nextData;
|
|
37
|
+
})), this.options.brush ? super.getEvents() : [ {
|
|
38
|
+
type: this.options.trigger,
|
|
39
|
+
handler: this.handleTrigger
|
|
40
|
+
} ];
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
exports.DrillDown = DrillDown, DrillDown.type = "drill-down", DrillDown.defaultOptions = {
|
|
45
|
+
brush: !1,
|
|
46
|
+
trigger: "click"
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=drill-down.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/interactions/drill-down.ts"],"names":[],"mappings":"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","file":"drill-down.js","sourcesContent":["import type { IPolygon } from '@visactor/vrender-core';\nimport type { DrillDownOptions, IElement, IGlyphElement, IView, InteractionEvent } from '../types';\nimport { BrushBase } from './brush-base';\nimport { isString, type IBounds, array } from '@visactor/vutils';\nimport { DataFilterRank } from '../graph';\nimport type { FilterMixin } from './filter';\n\nexport interface DrillDown\n extends Pick<FilterMixin, '_data' | '_filterValue' | '_dataFilter' | 'handleFilter' | '_filterData'>,\n BrushBase<DrillDownOptions> {}\n\nexport class DrillDown extends BrushBase<DrillDownOptions> {\n static type: string = 'drill-down';\n type: string = DrillDown.type;\n\n static defaultOptions: Omit<DrillDownOptions, 'target'> = {\n brush: false,\n trigger: 'click'\n };\n\n constructor(view: IView, option?: DrillDownOptions) {\n super(view, Object.assign({}, DrillDown.defaultOptions, option));\n this._data = isString(this.options.target.data)\n ? view.getDataById(this.options.target.data)\n : this.options.target.data;\n }\n\n protected getEvents() {\n if (!this._data) {\n return [];\n }\n\n const transform = this.options.target.transform;\n const dataTransform = (data: any[], filterValue: any) => {\n const nextData = !filterValue ? data : filterValue;\n return transform ? transform(data, filterValue) : nextData;\n };\n\n this._filterData(this._data, null, DataFilterRank.drillDown, null, undefined, dataTransform);\n\n if (this.options.brush) {\n return super.getEvents();\n }\n return [\n {\n type: this.options.trigger,\n handler: this.handleTrigger\n }\n ];\n }\n\n handleBrushUpdate = (options: {\n operateType: string;\n operateMask: IPolygon;\n operatedMaskAABBBounds: { [name: string]: IBounds };\n }) => {\n const elements: (IElement | IGlyphElement)[] = [];\n\n let filterValue: any[] = [];\n\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n const isActive = this.isBrushContainGraphicItem(options.operateMask, el.getGraphicItem());\n\n if (isActive) {\n elements.push(el);\n filterValue = filterValue.concat(array(el.getDatum()));\n }\n });\n });\n\n if (this._data) {\n // remove repeated datum\n filterValue = Array.from(new Set(filterValue));\n\n // shallow compare\n if (\n !this._filterValue ||\n filterValue.length !== this._filterValue.length ||\n filterValue.some(datum => !this._filterValue.includes(datum))\n ) {\n this._filterValue = filterValue;\n this.handleFilter();\n }\n }\n\n this.dispatchEvent(options, elements);\n };\n\n handleTrigger = (event: InteractionEvent) => {\n const element = event.element;\n if (element && this._marks && this._marks.includes(element.mark)) {\n const filterValue = array(element.getDatum());\n // shallow compare\n if (\n !this._filterValue ||\n filterValue.length !== this._filterValue.length ||\n filterValue.some(datum => !this._filterValue.includes(datum))\n ) {\n this._filterValue = filterValue;\n this.handleFilter();\n }\n }\n };\n}\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ElementActiveByLegendOptions, IElement, IGlyphElement, IMark, IView, InteractionEvent } from '../types';
|
|
2
|
+
import { BaseInteraction } from './base';
|
|
3
|
+
import { LegendEvent } from '@visactor/vrender-components';
|
|
4
|
+
export declare class ElementActiveByLegend extends BaseInteraction<ElementActiveByLegendOptions> {
|
|
5
|
+
static type: string;
|
|
6
|
+
type: string;
|
|
7
|
+
static defaultOptions: ElementActiveByLegendOptions;
|
|
8
|
+
options: ElementActiveByLegendOptions;
|
|
9
|
+
protected _marks?: IMark[];
|
|
10
|
+
constructor(view: IView, options?: ElementActiveByLegendOptions);
|
|
11
|
+
protected getEvents(): {
|
|
12
|
+
type: LegendEvent;
|
|
13
|
+
handler: (e: InteractionEvent, element: IGlyphElement<any> | IElement) => void;
|
|
14
|
+
}[];
|
|
15
|
+
handleStart: (e: InteractionEvent, element: IElement | IGlyphElement) => void;
|
|
16
|
+
handleReset: (e: InteractionEvent) => void;
|
|
17
|
+
}
|