@visactor/vchart 1.1.0-beta.1 → 1.1.0-beta.3
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/build/index.js +29012 -39002
- package/build/index.min.js +15 -3
- package/cjs/animation/config.js +1 -1
- package/cjs/animation/config.js.map +1 -1
- package/cjs/animation/utils.d.ts +2 -0
- package/cjs/animation/utils.js +20 -6
- package/cjs/animation/utils.js.map +1 -1
- package/cjs/chart/bar/bar.d.ts +1 -0
- package/cjs/chart/bar/bar.js +7 -0
- package/cjs/chart/bar/bar.js.map +1 -1
- package/cjs/chart/base-chart.d.ts +2 -1
- package/cjs/chart/base-chart.js +12 -0
- package/cjs/chart/base-chart.js.map +1 -1
- package/cjs/chart/interface/chart.d.ts +3 -3
- package/cjs/chart/interface/chart.js.map +1 -1
- package/cjs/chart/polar/rose-like.js.map +1 -1
- package/cjs/chart/radar/radar.js +10 -1
- package/cjs/chart/radar/radar.js.map +1 -1
- package/cjs/chart/rose/rose.js +11 -2
- package/cjs/chart/rose/rose.js.map +1 -1
- package/cjs/chart/word-cloud/word-cloud-3d.js +1 -2
- package/cjs/chart/word-cloud/word-cloud-3d.js.map +1 -1
- package/cjs/chart/word-cloud/word-cloud.js +1 -2
- package/cjs/chart/word-cloud/word-cloud.js.map +1 -1
- package/cjs/compile/compiler.d.ts +1 -0
- package/cjs/compile/compiler.js +12 -5
- package/cjs/compile/compiler.js.map +1 -1
- package/cjs/compile/interface/compilable-item.d.ts +1 -0
- package/cjs/compile/interface/compilable-item.js.map +1 -1
- package/cjs/component/axis/base-axis.d.ts +6 -14
- package/cjs/component/axis/base-axis.js +10 -1
- package/cjs/component/axis/base-axis.js.map +1 -1
- package/cjs/component/axis/cartesian/axis.d.ts +1 -1
- package/cjs/component/axis/cartesian/axis.js +8 -3
- package/cjs/component/axis/cartesian/axis.js.map +1 -1
- package/cjs/component/axis/cartesian/interface/spec.d.ts +9 -2
- package/cjs/component/axis/cartesian/interface/spec.js.map +1 -1
- package/cjs/component/axis/interface.d.ts +9 -0
- package/cjs/component/axis/interface.js.map +1 -1
- package/cjs/component/axis/mixin/linear-axis-mixin.d.ts +4 -0
- package/cjs/component/axis/mixin/linear-axis-mixin.js +6 -1
- package/cjs/component/axis/mixin/linear-axis-mixin.js.map +1 -1
- package/cjs/component/base/base-component.js +4 -2
- package/cjs/component/base/base-component.js.map +1 -1
- package/cjs/component/common/trigger/config.d.ts +0 -2
- package/cjs/component/common/trigger/config.js +0 -2
- package/cjs/component/common/trigger/config.js.map +1 -1
- package/cjs/component/common/trigger/desktop.js +1 -1
- package/cjs/component/common/trigger/desktop.js.map +1 -1
- package/cjs/component/crosshair/base.d.ts +13 -13
- package/cjs/component/crosshair/base.js +44 -36
- package/cjs/component/crosshair/base.js.map +1 -1
- package/cjs/component/crosshair/cartesian.d.ts +4 -4
- package/cjs/component/crosshair/cartesian.js +22 -8
- package/cjs/component/crosshair/cartesian.js.map +1 -1
- package/cjs/component/crosshair/polar.d.ts +4 -4
- package/cjs/component/crosshair/polar.js +8 -8
- package/cjs/component/crosshair/polar.js.map +1 -1
- package/cjs/component/crosshair/util.d.ts +2 -0
- package/cjs/component/crosshair/util.js +12 -1
- package/cjs/component/crosshair/util.js.map +1 -1
- package/cjs/component/data-zoom/data-zoom/interface.d.ts +13 -13
- package/cjs/component/data-zoom/data-zoom/interface.js.map +1 -1
- package/cjs/component/data-zoom/scroll-bar/interface.d.ts +2 -3
- package/cjs/component/data-zoom/scroll-bar/interface.js.map +1 -1
- package/cjs/component/geo/geo-coordinate.js +2 -2
- package/cjs/component/geo/geo-coordinate.js.map +1 -1
- package/cjs/component/index.js +1 -2
- package/cjs/component/label/bar.d.ts +4 -1
- package/cjs/component/label/bar.js +2 -2
- package/cjs/component/label/bar.js.map +1 -1
- package/cjs/component/label/label.js +5 -4
- package/cjs/component/label/label.js.map +1 -1
- package/cjs/component/label/symbol.d.ts +5 -1
- package/cjs/component/label/symbol.js +8 -11
- package/cjs/component/label/symbol.js.map +1 -1
- package/cjs/component/legend/discrete/interface.d.ts +2 -0
- package/cjs/component/legend/discrete/interface.js.map +1 -1
- package/cjs/component/legend/discrete/legend.d.ts +2 -0
- package/cjs/component/legend/discrete/legend.js +15 -2
- package/cjs/component/legend/discrete/legend.js.map +1 -1
- package/cjs/component/map-label/component.js +0 -1
- package/cjs/component/map-label/component.js.map +1 -1
- package/cjs/component/marker/base-marker.js +2 -1
- package/cjs/component/marker/base-marker.js.map +1 -1
- package/cjs/component/marker/interface.d.ts +6 -5
- package/cjs/component/marker/interface.js.map +1 -1
- package/cjs/component/marker/mark-area/interface/theme.d.ts +2 -2
- package/cjs/component/marker/mark-area/interface/theme.js.map +1 -1
- package/cjs/component/marker/mark-area/mark-area.js +10 -9
- package/cjs/component/marker/mark-area/mark-area.js.map +1 -1
- package/cjs/component/marker/mark-line/interface/theme.d.ts +2 -2
- package/cjs/component/marker/mark-line/interface/theme.js.map +1 -1
- package/cjs/component/marker/mark-line/mark-line.js +16 -15
- package/cjs/component/marker/mark-line/mark-line.js.map +1 -1
- package/cjs/component/marker/mark-point/interface/theme.d.ts +3 -3
- package/cjs/component/marker/mark-point/interface/theme.js.map +1 -1
- package/cjs/component/marker/mark-point/mark-point.js +14 -13
- package/cjs/component/marker/mark-point/mark-point.js.map +1 -1
- package/cjs/component/tooltip/handler/base.js.map +1 -1
- package/cjs/component/tooltip/handler/dom/model/content-column-model.js +1 -1
- package/cjs/component/tooltip/handler/dom/model/content-column-model.js.map +1 -1
- package/cjs/component/tooltip/handler/dom/model/style-constants.d.ts +1 -0
- package/cjs/component/tooltip/handler/dom/model/style-constants.js +3 -1
- package/cjs/component/tooltip/handler/dom/model/style-constants.js.map +1 -1
- package/cjs/component/tooltip/handler/dom/util.js +7 -7
- package/cjs/component/tooltip/handler/dom/util.js.map +1 -1
- package/cjs/component/tooltip/handler/utils/get-spec.js +22 -8
- package/cjs/component/tooltip/handler/utils/get-spec.js.map +1 -1
- package/cjs/component/tooltip/tooltip.d.ts +9 -9
- package/cjs/component/tooltip/tooltip.js +20 -20
- package/cjs/component/tooltip/tooltip.js.map +1 -1
- package/cjs/constant/box-plot.js +2 -1
- package/cjs/constant/event.d.ts +1 -0
- package/cjs/constant/event.js +4 -4
- package/cjs/constant/event.js.map +1 -1
- package/cjs/core/factory.js +1 -2
- package/cjs/core/index.d.ts +1 -1
- package/cjs/core/index.js +1 -1
- package/cjs/core/index.js.map +1 -1
- package/cjs/core/instance-manager.js +2 -1
- package/cjs/data/transforms/dimension-statistics.js +1 -0
- package/cjs/data/transforms/dimension-statistics.js.map +1 -1
- package/cjs/data/transforms/legend-data/discrete/discrete.js +5 -2
- package/cjs/data/transforms/legend-data/discrete/discrete.js.map +1 -1
- package/cjs/data/transforms/legend-data/discrete/interface.d.ts +1 -0
- package/cjs/data/transforms/legend-data/discrete/interface.js.map +1 -1
- package/cjs/event/event-dispatcher.d.ts +2 -2
- package/cjs/event/event-dispatcher.js +23 -18
- package/cjs/event/event-dispatcher.js.map +1 -1
- package/cjs/event/event.d.ts +2 -2
- package/cjs/event/event.js +4 -3
- package/cjs/event/event.js.map +1 -1
- package/cjs/event/interface.d.ts +2 -2
- package/cjs/event/interface.js.map +1 -1
- package/cjs/interaction/drill/drillable.js +3 -2
- package/cjs/interaction/drill/drillable.js.map +1 -1
- package/cjs/interaction/zoom/zoomable.d.ts +1 -1
- package/cjs/interaction/zoom/zoomable.js +23 -25
- package/cjs/interaction/zoom/zoomable.js.map +1 -1
- package/cjs/layout/base-layout.js +1 -2
- package/cjs/model/base-model.d.ts +1 -1
- package/cjs/model/base-model.js +2 -2
- package/cjs/model/base-model.js.map +1 -1
- package/cjs/plugin/components/axis-sync-plugin/axis-sync.d.ts +11 -0
- package/cjs/plugin/components/axis-sync-plugin/axis-sync.js +53 -0
- package/cjs/plugin/components/axis-sync-plugin/axis-sync.js.map +1 -0
- package/cjs/plugin/components/axis-sync-plugin/index.d.ts +1 -0
- package/cjs/plugin/components/axis-sync-plugin/index.js +21 -0
- package/cjs/plugin/components/axis-sync-plugin/index.js.map +1 -0
- package/cjs/plugin/components/axis-sync-plugin/tick-align-transform.d.ts +7 -0
- package/cjs/plugin/components/axis-sync-plugin/tick-align-transform.js +36 -0
- package/cjs/plugin/components/axis-sync-plugin/tick-align-transform.js.map +1 -0
- package/cjs/plugin/components/axis-sync-plugin/zero-align-transform.d.ts +15 -0
- package/cjs/plugin/components/axis-sync-plugin/zero-align-transform.js +123 -0
- package/cjs/plugin/components/axis-sync-plugin/zero-align-transform.js.map +1 -0
- package/cjs/plugin/components/index.d.ts +2 -0
- package/cjs/plugin/components/index.js +3 -2
- package/cjs/plugin/components/index.js.map +1 -1
- package/cjs/plugin/components/interface.d.ts +2 -0
- package/cjs/plugin/components/interface.js.map +1 -1
- package/cjs/series/base/base-series.d.ts +11 -1
- package/cjs/series/base/base-series.js +19 -13
- package/cjs/series/base/base-series.js.map +1 -1
- package/cjs/series/cartesian/cartesian.js +7 -1
- package/cjs/series/cartesian/cartesian.js.map +1 -1
- package/cjs/series/interface/series.d.ts +11 -4
- package/cjs/series/interface/series.js.map +1 -1
- package/cjs/series/line/interface.d.ts +1 -1
- package/cjs/series/line/interface.js.map +1 -1
- package/cjs/series/line/line.d.ts +2 -6
- package/cjs/series/line/line.js +6 -17
- package/cjs/series/line/line.js.map +1 -1
- package/cjs/series/progress/linear/linear.js +50 -30
- package/cjs/series/progress/linear/linear.js.map +1 -1
- package/cjs/series/scatter/interface.d.ts +1 -1
- package/cjs/series/scatter/interface.js.map +1 -1
- package/cjs/series/word-cloud/base.d.ts +2 -2
- package/cjs/series/word-cloud/base.js +42 -43
- package/cjs/series/word-cloud/base.js.map +1 -1
- package/cjs/series/word-cloud/interface.d.ts +1 -2
- package/cjs/series/word-cloud/interface.js.map +1 -1
- package/cjs/series/word-cloud/word-cloud-3d.js +37 -37
- package/cjs/series/word-cloud/word-cloud-3d.js.map +1 -1
- package/cjs/theme/buildin-theme/light/component/tooltip.js +0 -1
- package/cjs/theme/buildin-theme/light/component/tooltip.js.map +1 -1
- package/esm/animation/config.js +1 -1
- package/esm/animation/config.js.map +1 -1
- package/esm/animation/utils.d.ts +2 -0
- package/esm/animation/utils.js +18 -5
- package/esm/animation/utils.js.map +1 -1
- package/esm/chart/bar/bar.d.ts +1 -0
- package/esm/chart/bar/bar.js +7 -0
- package/esm/chart/bar/bar.js.map +1 -1
- package/esm/chart/base-chart.d.ts +2 -1
- package/esm/chart/base-chart.js +12 -0
- package/esm/chart/base-chart.js.map +1 -1
- package/esm/chart/interface/chart.d.ts +3 -3
- package/esm/chart/interface/chart.js.map +1 -1
- package/esm/chart/polar/rose-like.js.map +1 -1
- package/esm/chart/radar/radar.js +10 -2
- package/esm/chart/radar/radar.js.map +1 -1
- package/esm/chart/rose/rose.js +11 -1
- package/esm/chart/rose/rose.js.map +1 -1
- package/esm/chart/word-cloud/word-cloud-3d.js +1 -2
- package/esm/chart/word-cloud/word-cloud-3d.js.map +1 -1
- package/esm/chart/word-cloud/word-cloud.js +1 -2
- package/esm/chart/word-cloud/word-cloud.js.map +1 -1
- package/esm/compile/compiler.d.ts +1 -0
- package/esm/compile/compiler.js +13 -6
- package/esm/compile/compiler.js.map +1 -1
- package/esm/compile/interface/compilable-item.d.ts +1 -0
- package/esm/compile/interface/compilable-item.js.map +1 -1
- package/esm/component/axis/base-axis.d.ts +6 -14
- package/esm/component/axis/base-axis.js +10 -1
- package/esm/component/axis/base-axis.js.map +1 -1
- package/esm/component/axis/cartesian/axis.d.ts +1 -1
- package/esm/component/axis/cartesian/axis.js +8 -3
- package/esm/component/axis/cartesian/axis.js.map +1 -1
- package/esm/component/axis/cartesian/interface/spec.d.ts +9 -2
- package/esm/component/axis/cartesian/interface/spec.js.map +1 -1
- package/esm/component/axis/interface.d.ts +9 -0
- package/esm/component/axis/interface.js.map +1 -1
- package/esm/component/axis/mixin/linear-axis-mixin.d.ts +4 -0
- package/esm/component/axis/mixin/linear-axis-mixin.js +6 -1
- package/esm/component/axis/mixin/linear-axis-mixin.js.map +1 -1
- package/esm/component/base/base-component.js +4 -2
- package/esm/component/base/base-component.js.map +1 -1
- package/esm/component/common/trigger/config.d.ts +0 -2
- package/esm/component/common/trigger/config.js +0 -2
- package/esm/component/common/trigger/config.js.map +1 -1
- package/esm/component/common/trigger/desktop.js +1 -1
- package/esm/component/common/trigger/desktop.js.map +1 -1
- package/esm/component/crosshair/base.d.ts +13 -13
- package/esm/component/crosshair/base.js +43 -35
- package/esm/component/crosshair/base.js.map +1 -1
- package/esm/component/crosshair/cartesian.d.ts +4 -4
- package/esm/component/crosshair/cartesian.js +23 -9
- package/esm/component/crosshair/cartesian.js.map +1 -1
- package/esm/component/crosshair/polar.d.ts +4 -4
- package/esm/component/crosshair/polar.js +8 -8
- package/esm/component/crosshair/polar.js.map +1 -1
- package/esm/component/crosshair/util.d.ts +2 -0
- package/esm/component/crosshair/util.js +10 -0
- package/esm/component/crosshair/util.js.map +1 -1
- package/esm/component/data-zoom/data-zoom/interface.d.ts +13 -13
- package/esm/component/data-zoom/data-zoom/interface.js.map +1 -1
- package/esm/component/data-zoom/scroll-bar/interface.d.ts +2 -3
- package/esm/component/data-zoom/scroll-bar/interface.js.map +1 -1
- package/esm/component/geo/geo-coordinate.js +2 -2
- package/esm/component/geo/geo-coordinate.js.map +1 -1
- package/esm/component/index.js +1 -2
- package/esm/component/label/bar.d.ts +4 -1
- package/esm/component/label/bar.js +3 -3
- package/esm/component/label/bar.js.map +1 -1
- package/esm/component/label/label.js +5 -4
- package/esm/component/label/label.js.map +1 -1
- package/esm/component/label/symbol.d.ts +5 -1
- package/esm/component/label/symbol.js +5 -6
- package/esm/component/label/symbol.js.map +1 -1
- package/esm/component/legend/discrete/interface.d.ts +2 -0
- package/esm/component/legend/discrete/interface.js.map +1 -1
- package/esm/component/legend/discrete/legend.d.ts +2 -0
- package/esm/component/legend/discrete/legend.js +16 -3
- package/esm/component/legend/discrete/legend.js.map +1 -1
- package/esm/component/map-label/component.js +0 -1
- package/esm/component/map-label/component.js.map +1 -1
- package/esm/component/marker/base-marker.js +2 -1
- package/esm/component/marker/base-marker.js.map +1 -1
- package/esm/component/marker/interface.d.ts +6 -5
- package/esm/component/marker/interface.js.map +1 -1
- package/esm/component/marker/mark-area/interface/theme.d.ts +2 -2
- package/esm/component/marker/mark-area/interface/theme.js.map +1 -1
- package/esm/component/marker/mark-area/mark-area.js +10 -9
- package/esm/component/marker/mark-area/mark-area.js.map +1 -1
- package/esm/component/marker/mark-line/interface/theme.d.ts +2 -2
- package/esm/component/marker/mark-line/interface/theme.js.map +1 -1
- package/esm/component/marker/mark-line/mark-line.js +16 -15
- package/esm/component/marker/mark-line/mark-line.js.map +1 -1
- package/esm/component/marker/mark-point/interface/theme.d.ts +3 -3
- package/esm/component/marker/mark-point/interface/theme.js.map +1 -1
- package/esm/component/marker/mark-point/mark-point.js +14 -13
- package/esm/component/marker/mark-point/mark-point.js.map +1 -1
- package/esm/component/tooltip/handler/base.js.map +1 -1
- package/esm/component/tooltip/handler/dom/model/content-column-model.js +2 -2
- package/esm/component/tooltip/handler/dom/model/content-column-model.js.map +1 -1
- package/esm/component/tooltip/handler/dom/model/style-constants.d.ts +1 -0
- package/esm/component/tooltip/handler/dom/model/style-constants.js +4 -0
- package/esm/component/tooltip/handler/dom/model/style-constants.js.map +1 -1
- package/esm/component/tooltip/handler/dom/util.js +7 -7
- package/esm/component/tooltip/handler/dom/util.js.map +1 -1
- package/esm/component/tooltip/handler/utils/get-spec.js +22 -8
- package/esm/component/tooltip/handler/utils/get-spec.js.map +1 -1
- package/esm/component/tooltip/tooltip.d.ts +9 -9
- package/esm/component/tooltip/tooltip.js +20 -20
- package/esm/component/tooltip/tooltip.js.map +1 -1
- package/esm/constant/box-plot.js +2 -1
- package/esm/constant/event.d.ts +1 -0
- package/esm/constant/event.js +4 -4
- package/esm/constant/event.js.map +1 -1
- package/esm/core/factory.js +1 -2
- package/esm/core/index.d.ts +1 -1
- package/esm/core/index.js +1 -1
- package/esm/core/index.js.map +1 -1
- package/esm/core/instance-manager.js +2 -1
- package/esm/data/transforms/dimension-statistics.js +2 -1
- package/esm/data/transforms/dimension-statistics.js.map +1 -1
- package/esm/data/transforms/legend-data/discrete/discrete.js +5 -2
- package/esm/data/transforms/legend-data/discrete/discrete.js.map +1 -1
- package/esm/data/transforms/legend-data/discrete/interface.d.ts +1 -0
- package/esm/data/transforms/legend-data/discrete/interface.js.map +1 -1
- package/esm/event/event-dispatcher.d.ts +2 -2
- package/esm/event/event-dispatcher.js +23 -18
- package/esm/event/event-dispatcher.js.map +1 -1
- package/esm/event/event.d.ts +2 -2
- package/esm/event/event.js +4 -3
- package/esm/event/event.js.map +1 -1
- package/esm/event/interface.d.ts +2 -2
- package/esm/event/interface.js.map +1 -1
- package/esm/interaction/drill/drillable.js +3 -2
- package/esm/interaction/drill/drillable.js.map +1 -1
- package/esm/interaction/zoom/zoomable.d.ts +1 -1
- package/esm/interaction/zoom/zoomable.js +23 -25
- package/esm/interaction/zoom/zoomable.js.map +1 -1
- package/esm/layout/base-layout.js +1 -2
- package/esm/model/base-model.d.ts +1 -1
- package/esm/model/base-model.js +2 -2
- package/esm/model/base-model.js.map +1 -1
- package/esm/plugin/components/axis-sync-plugin/axis-sync.d.ts +11 -0
- package/esm/plugin/components/axis-sync-plugin/axis-sync.js +55 -0
- package/esm/plugin/components/axis-sync-plugin/axis-sync.js.map +1 -0
- package/esm/plugin/components/axis-sync-plugin/index.d.ts +1 -0
- package/esm/plugin/components/axis-sync-plugin/index.js +2 -0
- package/esm/plugin/components/axis-sync-plugin/index.js.map +1 -0
- package/esm/plugin/components/axis-sync-plugin/tick-align-transform.d.ts +7 -0
- package/esm/plugin/components/axis-sync-plugin/tick-align-transform.js +30 -0
- package/esm/plugin/components/axis-sync-plugin/tick-align-transform.js.map +1 -0
- package/esm/plugin/components/axis-sync-plugin/zero-align-transform.d.ts +15 -0
- package/esm/plugin/components/axis-sync-plugin/zero-align-transform.js +115 -0
- package/esm/plugin/components/axis-sync-plugin/zero-align-transform.js.map +1 -0
- package/esm/plugin/components/index.d.ts +2 -0
- package/esm/plugin/components/index.js +4 -1
- package/esm/plugin/components/index.js.map +1 -1
- package/esm/plugin/components/interface.d.ts +2 -0
- package/esm/plugin/components/interface.js.map +1 -1
- package/esm/series/base/base-series.d.ts +11 -1
- package/esm/series/base/base-series.js +19 -13
- package/esm/series/base/base-series.js.map +1 -1
- package/esm/series/cartesian/cartesian.js +7 -1
- package/esm/series/cartesian/cartesian.js.map +1 -1
- package/esm/series/interface/series.d.ts +11 -4
- package/esm/series/interface/series.js.map +1 -1
- package/esm/series/line/interface.d.ts +1 -1
- package/esm/series/line/interface.js.map +1 -1
- package/esm/series/line/line.d.ts +2 -6
- package/esm/series/line/line.js +5 -18
- package/esm/series/line/line.js.map +1 -1
- package/esm/series/progress/linear/linear.js +51 -29
- package/esm/series/progress/linear/linear.js.map +1 -1
- package/esm/series/scatter/interface.d.ts +1 -1
- package/esm/series/scatter/interface.js.map +1 -1
- package/esm/series/word-cloud/base.d.ts +2 -2
- package/esm/series/word-cloud/base.js +42 -43
- package/esm/series/word-cloud/base.js.map +1 -1
- package/esm/series/word-cloud/interface.d.ts +1 -2
- package/esm/series/word-cloud/interface.js.map +1 -1
- package/esm/series/word-cloud/word-cloud-3d.js +37 -37
- package/esm/series/word-cloud/word-cloud-3d.js.map +1 -1
- package/esm/theme/buildin-theme/light/component/tooltip.js +0 -1
- package/esm/theme/buildin-theme/light/component/tooltip.js.map +1 -1
- package/package.json +12 -12
- package/cjs/series/treemap/config.d.ts +0 -44
- package/cjs/series/treemap/config.js +0 -51
- package/cjs/series/treemap/config.js.map +0 -1
- package/esm/series/treemap/config.d.ts +0 -44
- package/esm/series/treemap/config.js +0 -49
- package/esm/series/treemap/config.js.map +0 -1
package/cjs/constant/event.js
CHANGED
|
@@ -19,10 +19,10 @@ function(ChartEvent) {
|
|
|
19
19
|
ChartEvent.rawDataStatisticsUpdate = "rawDataStatisticsUpdate", ChartEvent.viewDataFilterOver = "viewDataFilterOver",
|
|
20
20
|
ChartEvent.viewDataUpdate = "viewDataUpdate", ChartEvent.viewDataStatisticsUpdate = "viewDataStatisticsUpdate",
|
|
21
21
|
ChartEvent.markDeltaYUpdate = "markDeltaYUpdate", ChartEvent.viewDataLabelUpdate = "viewDataLabelUpdate",
|
|
22
|
-
ChartEvent.
|
|
23
|
-
ChartEvent.
|
|
24
|
-
ChartEvent.
|
|
25
|
-
ChartEvent.playerChange = "playerChange", ChartEvent.playerForward = "playerForward",
|
|
22
|
+
ChartEvent.scaleDomainUpdate = "scaleDomainUpdate", ChartEvent.scaleUpdate = "scaleUpdate",
|
|
23
|
+
ChartEvent.dataZoomChange = "dataZoomChange", ChartEvent.drill = "drill", ChartEvent.layoutStart = "layoutStart",
|
|
24
|
+
ChartEvent.layoutEnd = "layoutEnd", ChartEvent.playerPlay = "playerPlay", ChartEvent.playerPause = "playerPause",
|
|
25
|
+
ChartEvent.playerEnd = "playerEnd", ChartEvent.playerChange = "playerChange", ChartEvent.playerForward = "playerForward",
|
|
26
26
|
ChartEvent.playerBackward = "playerBackward", ChartEvent.scrollBarChange = "scrollBarChange",
|
|
27
27
|
ChartEvent.brushChange = "brushChange", ChartEvent.legendSelectedDataChange = "legendSelectedDataChange",
|
|
28
28
|
ChartEvent.legendFilter = "legendFilter", ChartEvent.legendItemClick = "legendItemClick",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/constant/event.ts"],"names":[],"mappings":";;;AAAA,+CAAuE;AAA9D,+GAAA,UAAU,OAAuB;AAE7B,QAAA,WAAW,GAAG;IACzB,aAAa;IACb,WAAW;IACX,kBAAkB;IAClB,YAAY;IACZ,aAAa;IACb,aAAa;IACb,cAAc;IACd,cAAc;IACd,YAAY;IACZ,WAAW;IACX,SAAS;IACT,gBAAgB;IAChB,WAAW;IACX,SAAS;IACT,gBAAgB;IAChB,OAAO;IACP,UAAU;IACV,WAAW;IACX,WAAW;IACX,UAAU;IACV,YAAY;IACZ,YAAY;IACZ,OAAO;IACP,YAAY;IACZ,UAAU;IACV,iBAAiB;IACjB,WAAW;IACX,aAAa;IACb,KAAK;IACL,WAAW;IACX,MAAM;IACN,WAAW;IACX,WAAW;IACX,UAAU;IACV,SAAS;IACT,MAAM;IAEN,KAAK;IACL,UAAU;IACV,QAAQ;IACR,OAAO;IACP,SAAS;IACT,UAAU;IACV,OAAO;IACP,YAAY;IACZ,UAAU;IACV,OAAO;CACR,CAAC;AAEF,IAAY,
|
|
1
|
+
{"version":3,"sources":["../src/constant/event.ts"],"names":[],"mappings":";;;AAAA,+CAAuE;AAA9D,+GAAA,UAAU,OAAuB;AAE7B,QAAA,WAAW,GAAG;IACzB,aAAa;IACb,WAAW;IACX,kBAAkB;IAClB,YAAY;IACZ,aAAa;IACb,aAAa;IACb,cAAc;IACd,cAAc;IACd,YAAY;IACZ,WAAW;IACX,SAAS;IACT,gBAAgB;IAChB,WAAW;IACX,SAAS;IACT,gBAAgB;IAChB,OAAO;IACP,UAAU;IACV,WAAW;IACX,WAAW;IACX,UAAU;IACV,YAAY;IACZ,YAAY;IACZ,OAAO;IACP,YAAY;IACZ,UAAU;IACV,iBAAiB;IACjB,WAAW;IACX,aAAa;IACb,KAAK;IACL,WAAW;IACX,MAAM;IACN,WAAW;IACX,WAAW;IACX,UAAU;IACV,SAAS;IACT,MAAM;IAEN,KAAK;IACL,UAAU;IACV,QAAQ;IACR,OAAO;IACP,SAAS;IACT,UAAU;IACV,OAAO;IACP,YAAY;IACZ,UAAU;IACV,OAAO;CACR,CAAC;AAEF,IAAY,UAgDX;AAhDD,WAAY,UAAU;IACpB,yCAA2B,CAAA;IAC3B,mCAAqB,CAAA;IAErB,uEAAyD,CAAA;IAGzD,6CAA+B,CAAA;IAC/B,+CAAiC,CAAA;IACjC,6CAA+B,CAAA;IAE/B,6CAA+B,CAAA;IAC/B,iEAAmD,CAAA;IACnD,uDAAyC,CAAA;IACzC,+CAAiC,CAAA;IACjC,mEAAqD,CAAA;IAErD,mDAAqC,CAAA;IAErC,yDAA2C,CAAA;IAG3C,qDAAuC,CAAA;IACvC,yCAA2B,CAAA;IAE3B,+CAAiC,CAAA;IAEjC,6BAAe,CAAA;IACf,yCAA2B,CAAA;IAC3B,qCAAuB,CAAA;IAGvB,uCAAyB,CAAA;IACzB,yCAA2B,CAAA;IAC3B,qCAAuB,CAAA;IACvB,2CAA6B,CAAA;IAC7B,6CAA+B,CAAA;IAC/B,+CAAiC,CAAA;IAEjC,iDAAmC,CAAA;IAEnC,yCAA2B,CAAA;IAE3B,mEAAqD,CAAA;IACrD,2CAA6B,CAAA;IAC7B,iDAAmC,CAAA;IACnC,iDAAmC,CAAA;IACnC,qDAAuC,CAAA;AACzC,CAAC,EAhDW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAgDrB;AAED,IAAY,iBAGX;AAHD,WAAY,iBAAiB;IAC3B,oCAAe,CAAA;IACf,sCAAiB,CAAA;AACnB,CAAC,EAHW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAG5B;AAED,IAAY,kBAKX;AALD,WAAY,kBAAkB;IAC5B,uCAAiB,CAAA;IACjB,qCAAe,CAAA;IACf,qCAAe,CAAA;IACf,mCAAa,CAAA;AACf,CAAC,EALW,kBAAkB,GAAlB,0BAAkB,KAAlB,0BAAkB,QAK7B","file":"event.js","sourcesContent":["export { HOOK_EVENT as VGRAMMAR_HOOK_EVENT } from '@visactor/vgrammar';\n\nexport const BASE_EVENTS = [\n 'pointerdown',\n 'pointerup',\n 'pointerupoutside',\n 'pointertap', // pointerEvent 下的 click 事件\n 'pointerover',\n 'pointermove',\n 'pointerenter',\n 'pointerleave',\n 'pointerout',\n 'mousedown',\n 'mouseup',\n 'mouseupoutside',\n 'rightdown',\n 'rightup',\n 'rightupoutside',\n 'click',\n 'dblclick',\n 'mousemove',\n 'mouseover',\n 'mouseout',\n 'mouseenter',\n 'mouseleave',\n 'wheel',\n 'touchstart',\n 'touchend',\n 'touchendoutside',\n 'touchmove',\n 'touchcancel',\n 'tap',\n 'dragstart',\n 'drag',\n 'dragenter',\n 'dragleave',\n 'dragover',\n 'dragend',\n 'drop',\n // 手势事件\n 'pan',\n 'panstart',\n 'panend',\n 'press',\n 'pressup',\n 'pressend',\n 'pinch',\n 'pinchstart',\n 'pinchend',\n 'swipe'\n];\n\nexport enum ChartEvent {\n initialized = 'initialized',\n rendered = 'rendered',\n // region\n regionSeriesDataFilterOver = 'regionSeriesDataFilterOver',\n // series start\n // series.liftCircle\n afterInitData = 'afterInitData',\n afterInitEvent = 'afterInitEvent',\n afterInitMark = 'afterInitMark',\n // series.data\n rawDataUpdate = 'rawDataUpdate',\n rawDataStatisticsUpdate = 'rawDataStatisticsUpdate',\n viewDataFilterOver = 'viewDataFilterOver',\n viewDataUpdate = 'viewDataUpdate',\n viewDataStatisticsUpdate = 'viewDataStatisticsUpdate',\n // dot series\n markDeltaYUpdate = 'markDeltaYUpdate',\n // pie series\n viewDataLabelUpdate = 'viewDataLabelUpdate',\n /** series end */\n // scale\n scaleDomainUpdate = 'scaleDomainUpdate',\n scaleUpdate = 'scaleUpdate',\n // datazoom\n dataZoomChange = 'dataZoomChange',\n // Hierarchy\n drill = 'drill',\n layoutStart = 'layoutStart',\n layoutEnd = 'layoutEnd',\n\n // player\n playerPlay = 'playerPlay',\n playerPause = 'playerPause',\n playerEnd = 'playerEnd',\n playerChange = 'playerChange',\n playerForward = 'playerForward',\n playerBackward = 'playerBackward',\n // scrollBar\n scrollBarChange = 'scrollBarChange',\n // brush\n brushChange = 'brushChange',\n // legend\n legendSelectedDataChange = 'legendSelectedDataChange',\n legendFilter = 'legendFilter',\n legendItemClick = 'legendItemClick',\n legendItemHover = 'legendItemHover',\n legendItemUnHover = 'legendItemUnHover'\n}\n\nexport enum Event_Source_Type {\n chart = 'chart',\n window = 'window'\n}\n\nexport enum Event_Bubble_Level {\n vchart = 'vchart',\n chart = 'chart',\n model = 'model',\n mark = 'mark'\n}\n"]}
|
package/cjs/core/factory.js
CHANGED
package/cjs/core/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { VChart } from './vchart';
|
|
2
2
|
import { Factory } from './factory';
|
|
3
3
|
export { VChart, Factory };
|
|
4
|
-
export declare const version = "1.1.0-beta.
|
|
4
|
+
export declare const version = "1.1.0-beta.3";
|
|
5
5
|
export type { IVChart } from './interface';
|
|
6
6
|
export * from '../event/interface';
|
|
7
7
|
export * from '../typings/spec/common';
|
package/cjs/core/index.js
CHANGED
|
@@ -40,7 +40,7 @@ Object.defineProperty(exports, "Factory", {
|
|
|
40
40
|
const region_1 = require("../region/region"), base_layout_1 = require("../layout/base-layout"), group_1 = require("../mark/group"), component_1 = require("../mark/component");
|
|
41
41
|
|
|
42
42
|
vchart_1.VChart.useMark([ component_1.ComponentMark, group_1.GroupMark ]), factory_1.Factory.registerRegion("region", region_1.Region),
|
|
43
|
-
factory_1.Factory.registerLayout("base", base_layout_1.Layout), exports.version = "1.1.0-beta.
|
|
43
|
+
factory_1.Factory.registerLayout("base", base_layout_1.Layout), exports.version = "1.1.0-beta.3",
|
|
44
44
|
__exportStar(require("../event/interface"), exports), __exportStar(require("../typings/spec/common"), exports),
|
|
45
45
|
__exportStar(require("../theme/interface"), exports);
|
|
46
46
|
//# sourceMappingURL=index.js.map
|
package/cjs/core/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAIA,qCAAkC;AAgBzB,uFAhBA,eAAM,OAgBA;AAff,uCAAoC;AAenB,wFAfR,iBAAO,OAeQ;AAdxB,6CAA0C;AAC1C,uDAA+C;AAC/C,yCAA0C;AAC1C,iDAAkD;AAGlD,eAAM,CAAC,OAAO,CAAC,CAAC,yBAAa,EAAE,iBAAS,CAAC,CAAC,CAAC;AAG3C,iBAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,eAAa,CAAC,CAAC;AAGhD,iBAAO,CAAC,cAAc,CAAC,MAAM,EAAE,oBAAa,CAAC,CAAC;AAKjC,QAAA,OAAO,GAAG,cAAc,CAAC;AAKtC,qDAAmC;AACnC,yDAAuC;AAEvC,qDAAmC","file":"index.js","sourcesContent":["/**\n * @description The core module of VChart, containing the necessary interfaces for using VChart.\n */\n\nimport { VChart } from './vchart';\nimport { Factory } from './factory';\nimport { Region } from '../region/region';\nimport { Layout } from '../layout/base-layout';\nimport { GroupMark } from '../mark/group';\nimport { ComponentMark } from '../mark/component';\n\n// register groupMark and componentMark\nVChart.useMark([ComponentMark, GroupMark]);\n\n// install region module\nFactory.registerRegion('region', Region as any);\n\n// install layout module\nFactory.registerLayout('base', Layout as any);\n\nexport { VChart, Factory };\n\n// export the version\nexport const version = \"1.1.0-beta.
|
|
1
|
+
{"version":3,"sources":["../src/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAIA,qCAAkC;AAgBzB,uFAhBA,eAAM,OAgBA;AAff,uCAAoC;AAenB,wFAfR,iBAAO,OAeQ;AAdxB,6CAA0C;AAC1C,uDAA+C;AAC/C,yCAA0C;AAC1C,iDAAkD;AAGlD,eAAM,CAAC,OAAO,CAAC,CAAC,yBAAa,EAAE,iBAAS,CAAC,CAAC,CAAC;AAG3C,iBAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,eAAa,CAAC,CAAC;AAGhD,iBAAO,CAAC,cAAc,CAAC,MAAM,EAAE,oBAAa,CAAC,CAAC;AAKjC,QAAA,OAAO,GAAG,cAAc,CAAC;AAKtC,qDAAmC;AACnC,yDAAuC;AAEvC,qDAAmC","file":"index.js","sourcesContent":["/**\n * @description The core module of VChart, containing the necessary interfaces for using VChart.\n */\n\nimport { VChart } from './vchart';\nimport { Factory } from './factory';\nimport { Region } from '../region/region';\nimport { Layout } from '../layout/base-layout';\nimport { GroupMark } from '../mark/group';\nimport { ComponentMark } from '../mark/component';\n\n// register groupMark and componentMark\nVChart.useMark([ComponentMark, GroupMark]);\n\n// install region module\nFactory.registerRegion('region', Region as any);\n\n// install layout module\nFactory.registerLayout('base', Layout as any);\n\nexport { VChart, Factory };\n\n// export the version\nexport const version = \"1.1.0-beta.3\";\n\n// export necessary types\nexport type { IVChart } from './interface';\n// the event types\nexport * from '../event/interface';\nexport * from '../typings/spec/common';\nexport type { IStateSpec, StateValueType } from '../compile/mark';\nexport * from '../theme/interface';\n"]}
|
|
@@ -53,6 +53,7 @@ const dimensionStatistics = (data, op) => {
|
|
|
53
53
|
const result = {};
|
|
54
54
|
let fields = op.fields;
|
|
55
55
|
if ((0, util_1.isFunction)(fields) && (fields = fields()), !(null == fields ? void 0 : fields.length) || !(null == data ? void 0 : data.length)) return result;
|
|
56
|
+
fields = (0, util_1.mergeFields)([], fields);
|
|
56
57
|
const dataKey = "parser" === op.target ? "parserData" : "latestData", latestData = data[0][dataKey] ? data[0][dataKey] : data || [], dataFields = null === (_b = (_a = data[0]).getFields) || void 0 === _b ? void 0 : _b.call(_a);
|
|
57
58
|
return fields.forEach((f => {
|
|
58
59
|
result[f.key] = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/data/transforms/dimension-statistics.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AAEzC,
|
|
1
|
+
{"version":3,"sources":["../src/data/transforms/dimension-statistics.ts"],"names":[],"mappings":"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","file":"dimension-statistics.js","sourcesContent":["import { isNil } from '@visactor/vutils';\nimport type { IFieldsMeta } from '../../typings/spec';\nimport { couldBeValidNumber, isFunction, mergeFields } from '../../util';\nimport type { DataView } from '@visactor/vdataset';\n\nexport const StatisticsDefault = {\n min: () => Number.MAX_VALUE,\n max: () => Number.MIN_VALUE,\n values: () => new Set(),\n //计算数组形式的data中的最大最小值\n 'array-min': () => Number.MAX_VALUE,\n 'array-max': () => Number.MIN_VALUE\n};\nexport const StatisticsValueTransform = {\n min: (v: any) => (v === StatisticsDefault.min() ? 0 : v),\n max: (v: any) => (v === StatisticsDefault.max() ? 0 : v),\n values: (v: Set<string>) => Array.from(v),\n //计算数组形式的data中的最大最小值\n 'array-min': (v: any) => (v === StatisticsDefault.min() ? 0 : v),\n 'array-max': (v: any) => (v === StatisticsDefault.max() ? 0 : v)\n};\n\nfunction StatisticsMin(last: any, value: any) {\n if (!couldBeValidNumber(value)) {\n return last;\n }\n return Math.min(last, value);\n}\nfunction StatisticsMax(last: any, value: any) {\n if (!couldBeValidNumber(value)) {\n return last;\n }\n return Math.max(last, value);\n}\n\nfunction StatisticsArrayMin(last: any, valueArr: any) {\n const filteredValueArr = (valueArr ?? []).filter((v: any) => couldBeValidNumber(v));\n if (filteredValueArr.length === 0) {\n return last;\n }\n return Math.min(last, ...filteredValueArr);\n}\n\nfunction StatisticsArrayMax(last: any, valueArr: any) {\n const filteredValueArr = (valueArr ?? []).filter((v: any) => couldBeValidNumber(v));\n if (filteredValueArr.length === 0) {\n return last;\n }\n return Math.max(last, ...filteredValueArr);\n}\n\nfunction StatisticsValues(last: Set<string>, value: any) {\n if (value === undefined) {\n return last;\n }\n if (last.has(value)) {\n return last;\n }\n last.add(value);\n return last;\n}\n\nexport const StatisticsMethod = {\n min: StatisticsMin,\n max: StatisticsMax,\n values: StatisticsValues,\n //计算数组形式的data中的最大最小值\n 'array-min': StatisticsArrayMin,\n 'array-max': StatisticsArrayMax\n};\n\nexport type StatisticOperations = Array<'max' | 'min' | 'values' | 'array-max' | 'array-min'>;\n\nexport interface IStatisticsOption {\n fields: {\n key: string;\n operations: StatisticOperations;\n customize?: { max: number; min: number } | any[];\n }[];\n // operations: Array<'max' | 'min' | 'values'>;\n target?: 'parser' | 'latest';\n}\n\n/**\n * 聚合统计主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果\n * @param data\n * @param options\n * @returns\n */\nexport const dimensionStatistics = (data: Array<DataView>, op: IStatisticsOption) => {\n const result = {};\n // const operations = op.operations;\n let fields = op.fields;\n if (isFunction(fields)) {\n fields = fields();\n }\n if (!fields?.length || !data?.length) {\n return result;\n }\n\n // merge same key\n fields = mergeFields([], fields);\n\n const dataKey = op.target === 'parser' ? 'parserData' : 'latestData';\n const latestData = data[0][dataKey] ? data[0][dataKey] : data || [];\n const dataFields = data[0].getFields?.() as Record<\n /** 字段key */\n string,\n IFieldsMeta\n >;\n fields.forEach(f => {\n // NOTE: the same key in fields has been merge already\n result[f.key] = {};\n const dataFiledInKey = dataFields?.[f.key];\n // default value\n f.operations.forEach(op => {\n // @chensij 如果指定了计算的domain结果,则忽略计算(目前该逻辑仅在dot series中维护,因为dot series期望在filter data之后x轴改变domain,y轴不改变domain)\n if (f.customize) {\n result[f.key][op] = f.customize;\n } else {\n if (dataFiledInKey && dataFiledInKey.lockStatisticsByDomain && !isNil(dataFiledInKey.domain)) {\n if (op === 'min') {\n result[f.key][op] = Math.min(...(dataFiledInKey.domain as number[]));\n return;\n }\n if (op === 'max') {\n result[f.key][op] = Math.max(...(dataFiledInKey.domain as number[]));\n return;\n }\n if (op === 'values') {\n result[f.key][op] = [...dataFiledInKey.domain];\n return;\n }\n }\n result[f.key][op] = StatisticsDefault[op]();\n\n latestData.forEach((d: any) => {\n const value = d?.[f.key];\n result[f.key][op] = StatisticsMethod[op](result[f.key][op], value);\n });\n result[f.key][op] = StatisticsValueTransform[op](result[f.key][op]);\n if (op === 'array-max') {\n result[f.key].max = result[f.key][op];\n }\n if (op === 'array-min') {\n result[f.key].min = result[f.key][op];\n }\n }\n });\n });\n return result;\n};\n"]}
|
|
@@ -5,9 +5,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
}), exports.discreteLegendFilter = exports.discreteLegendDataMake = void 0;
|
|
6
6
|
|
|
7
7
|
const vutils_1 = require("@visactor/vutils"), discreteLegendDataMake = (data, op) => {
|
|
8
|
-
const result = {}, {series: series} = op;
|
|
8
|
+
const result = {}, {series: series, seriesField: seriesField} = op;
|
|
9
9
|
return series().forEach((s => {
|
|
10
|
-
s
|
|
10
|
+
const field = seriesField(s);
|
|
11
|
+
let infoList;
|
|
12
|
+
infoList = field === s.getSeriesField() ? s.getSeriesInfoList() : s.getSeriesInfoInField(field),
|
|
13
|
+
infoList.forEach((info => {
|
|
11
14
|
result[info.key] || (result[info.key] = info);
|
|
12
15
|
}));
|
|
13
16
|
})), Object.values(result);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/data/transforms/legend-data/discrete/discrete.ts"],"names":[],"mappings":";;;AAAA,6CAA2C;AAIpC,MAAM,sBAAsB,GAAG,CAAC,IAAoB,EAAE,EAAiC,EAAE,EAAE;IAChG,MAAM,MAAM,GAER,EAAE,CAAC;IACP,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"sources":["../src/data/transforms/legend-data/discrete/discrete.ts"],"names":[],"mappings":";;;AAAA,6CAA2C;AAIpC,MAAM,sBAAsB,GAAG,CAAC,IAAoB,EAAE,EAAiC,EAAE,EAAE;IAChG,MAAM,MAAM,GAER,EAAE,CAAC;IACP,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC;IACnC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACnB,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,QAAQ,CAAC;QACb,IAAI,KAAK,KAAK,CAAC,CAAC,cAAc,EAAE,EAAE;YAChC,QAAQ,GAAG,CAAC,CAAC,iBAAiB,EAAE,CAAC;SAClC;aAAM;YACL,QAAQ,GAAG,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;SAC1C;QACD,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACtB,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBACpB,OAAO;aACR;YACD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC,CAAC;AArBW,QAAA,sBAAsB,0BAqBjC;AAEK,MAAM,oBAAoB,GAAG,CAAC,IAAgB,EAAE,EAA+B,EAAE,EAAE;IACxF,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;IACjD,MAAM,YAAY,GAAG,QAAQ,EAAE,CAAC;IAChC,MAAM,UAAU,GAAG,UAAU,EAAE,CAAC;IAChC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,EAAE;QAClD,OAAO,EAAE,CAAC;KACX;IAED,IAAI,YAAY,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE;QAC7C,OAAO,IAAI,CAAC;KACb;IAED,MAAM,cAAc,GAAG,EAAE,CAAC;IAC1B,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACvB,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAC3B,CAAC,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,KAAK,EAAE,CAAC;IAC3B,IAAI,IAAA,gBAAO,EAAC,UAAU,CAAC,EAAE;QACvB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;KACjE;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AArBW,QAAA,oBAAoB,wBAqB/B","file":"discrete.js","sourcesContent":["import { isValid } from '@visactor/vutils';\nimport type { ISeries } from '../../../../series/interface';\nimport type { IDiscreteLegendData, IDiscreteLegendDataMakeOption, IDiscreteLegendFilterOption } from './interface';\n\nexport const discreteLegendDataMake = (data: Array<ISeries>, op: IDiscreteLegendDataMakeOption) => {\n const result: {\n [key in string]: IDiscreteLegendData;\n } = {};\n const { series, seriesField } = op;\n series().forEach(s => {\n const field = seriesField(s);\n let infoList;\n if (field === s.getSeriesField()) {\n infoList = s.getSeriesInfoList();\n } else {\n infoList = s.getSeriesInfoInField(field);\n }\n infoList.forEach(info => {\n if (result[info.key]) {\n return;\n }\n result[info.key] = info;\n });\n });\n return Object.values(result);\n};\n\nexport const discreteLegendFilter = (data: Array<any>, op: IDiscreteLegendFilterOption) => {\n const { selected, field, data: legendData } = op;\n const selectedData = selected();\n const legendKeys = legendData(); // 全量的图例项\n if (selectedData.length === 0 && legendKeys.length) {\n return [];\n }\n\n if (selectedData.length === legendKeys.length) {\n return data;\n }\n\n const selectedFilter = {};\n selectedData.forEach(s => {\n selectedFilter[s] = true;\n });\n const datumField = field();\n if (isValid(datumField)) {\n data = data.filter(d => selectedFilter[d[datumField]] === true);\n }\n return data;\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/data/transforms/legend-data/discrete/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { ISeries } from '../../../../series/interface';\nimport type { StringOrNumber } from '../../../../typings';\n\nexport interface IDiscreteLegendData {\n key: string;\n style: (attribute: string) => any;\n}\n\nexport interface IDiscreteLegendDataMakeOption {\n series: () => ISeries[];\n}\n\nexport interface IDiscreteLegendFilterOption {\n selected: () => StringOrNumber[];\n field: () => string;\n data: () => StringOrNumber[];\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/data/transforms/legend-data/discrete/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { ISeries } from '../../../../series/interface';\nimport type { StringOrNumber } from '../../../../typings';\n\nexport interface IDiscreteLegendData {\n key: string;\n style: (attribute: string) => any;\n}\n\nexport interface IDiscreteLegendDataMakeOption {\n series: () => ISeries[];\n seriesField: (s: ISeries) => string;\n}\n\nexport interface IDiscreteLegendFilterOption {\n selected: () => StringOrNumber[];\n field: () => string;\n data: () => StringOrNumber[];\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { EventType, EventHandler, EventParamsDefinition, IEventDispatcher } from './interface';
|
|
1
|
+
import type { EventType, EventHandler, EventParamsDefinition, IEventDispatcher, EventBubbleLevel } from './interface';
|
|
2
2
|
import type { VChart } from '../core/vchart';
|
|
3
3
|
import type { Compiler } from '../compile/compiler';
|
|
4
4
|
export declare class EventDispatcher implements IEventDispatcher {
|
|
@@ -11,7 +11,7 @@ export declare class EventDispatcher implements IEventDispatcher {
|
|
|
11
11
|
constructor(vchart: VChart, compiler: Compiler);
|
|
12
12
|
register<Evt extends EventType>(eType: Evt, handler: EventHandler<EventParamsDefinition[Evt]>): this;
|
|
13
13
|
unregister<Evt extends EventType>(eType: Evt, handler?: EventHandler<EventParamsDefinition[Evt]>): this;
|
|
14
|
-
dispatch<Evt extends EventType>(eType: Evt, params: EventParamsDefinition[Evt]): this;
|
|
14
|
+
dispatch<Evt extends EventType>(eType: Evt, params: EventParamsDefinition[Evt], level?: EventBubbleLevel): this;
|
|
15
15
|
release(): void;
|
|
16
16
|
private _filter;
|
|
17
17
|
private _prepareParams;
|
|
@@ -55,22 +55,27 @@ class EventDispatcher {
|
|
|
55
55
|
}
|
|
56
56
|
return this;
|
|
57
57
|
}
|
|
58
|
-
dispatch(eType, params) {
|
|
58
|
+
dispatch(eType, params, level) {
|
|
59
59
|
const bubble = this.getEventBubble(params.source || event_1.Event_Source_Type.chart).get(eType);
|
|
60
60
|
if (!bubble) return this;
|
|
61
61
|
let stopBubble = !1;
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
const handlers = bubble.getHandlers(event_1.Event_Bubble_Level.model);
|
|
65
|
-
stopBubble = this._invoke(handlers, eType, params);
|
|
66
|
-
}
|
|
67
|
-
if (!stopBubble) {
|
|
68
|
-
const handlers = bubble.getHandlers(event_1.Event_Bubble_Level.chart);
|
|
69
|
-
stopBubble = this._invoke(handlers, eType, params);
|
|
70
|
-
}
|
|
71
|
-
if (!stopBubble) {
|
|
72
|
-
const handlers = bubble.getHandlers(event_1.Event_Bubble_Level.vchart);
|
|
62
|
+
if (level) {
|
|
63
|
+
const handlers = bubble.getHandlers(level);
|
|
73
64
|
stopBubble = this._invoke(handlers, eType, params);
|
|
65
|
+
} else {
|
|
66
|
+
const handlers = bubble.getHandlers(event_1.Event_Bubble_Level.mark);
|
|
67
|
+
if (stopBubble = this._invoke(handlers, eType, params), !stopBubble) {
|
|
68
|
+
const handlers = bubble.getHandlers(event_1.Event_Bubble_Level.model);
|
|
69
|
+
stopBubble = this._invoke(handlers, eType, params);
|
|
70
|
+
}
|
|
71
|
+
if (!stopBubble) {
|
|
72
|
+
const handlers = bubble.getHandlers(event_1.Event_Bubble_Level.chart);
|
|
73
|
+
stopBubble = this._invoke(handlers, eType, params);
|
|
74
|
+
}
|
|
75
|
+
if (!stopBubble) {
|
|
76
|
+
const handlers = bubble.getHandlers(event_1.Event_Bubble_Level.vchart);
|
|
77
|
+
stopBubble = this._invoke(handlers, eType, params);
|
|
78
|
+
}
|
|
74
79
|
}
|
|
75
80
|
return this;
|
|
76
81
|
}
|
|
@@ -85,17 +90,17 @@ class EventDispatcher {
|
|
|
85
90
|
this._windowBubbles.clear();
|
|
86
91
|
}
|
|
87
92
|
_filter(filter, evt, params) {
|
|
88
|
-
var _a, _b;
|
|
93
|
+
var _a, _b, _c;
|
|
89
94
|
if ((0, util_1.isFunction)(filter.filter) && !filter.filter(params)) return !1;
|
|
90
95
|
if (filter.nodeName && (0, util_1.get)(params, "node.name") !== filter.nodeName) return !1;
|
|
91
|
-
if (filter.markName &&
|
|
92
|
-
let modelType = null === (
|
|
96
|
+
if (filter.markName && (null === (_a = null == params ? void 0 : params.mark) || void 0 === _a ? void 0 : _a.name) !== filter.markName) return !1;
|
|
97
|
+
let modelType = null === (_b = params.model) || void 0 === _b ? void 0 : _b.type;
|
|
93
98
|
return componentTypeMap[modelType] && (modelType = componentTypeMap[modelType]),
|
|
94
|
-
(!filter.type || modelType === filter.type) && (!(0, util_1.isValid)(filter.userId) || (null === (
|
|
99
|
+
(!filter.type || modelType === filter.type) && (!(0, util_1.isValid)(filter.userId) || (null === (_c = params.model) || void 0 === _c ? void 0 : _c.userId) === filter.userId);
|
|
95
100
|
}
|
|
96
101
|
_prepareParams(filter, params) {
|
|
97
|
-
if (filter.markName && params.itemMap) {
|
|
98
|
-
const item = params.itemMap.get(
|
|
102
|
+
if (filter.markName && params.mark && params.itemMap) {
|
|
103
|
+
const markId = params.mark.getProductId(), item = params.itemMap.get(markId), datum = null == item ? void 0 : item.getDatum();
|
|
99
104
|
return Object.assign(Object.assign({}, params), {
|
|
100
105
|
item: item,
|
|
101
106
|
datum: datum
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/event/event-dispatcher.ts"],"names":[],"mappings":"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","file":"event-dispatcher.js","sourcesContent":["import { Bubble } from './bubble';\nimport { isValid, debounce, throttle, get, isFunction } from '../util';\nimport { BASE_EVENTS, ChartEvent, Event_Bubble_Level, Event_Source_Type, VGRAMMAR_HOOK_EVENT } from '../constant/event';\nimport type {\n EventType,\n EventQuery,\n EventHandler,\n EventParamsDefinition,\n IEventDispatcher,\n EventBubbleLevel,\n BaseEventParams,\n EventParams,\n EventFilter,\n EventSourceType\n} from './interface';\nimport type { VChart } from '../core/vchart';\nimport type { CompilerListenerParameters } from '../compile/interface';\nimport type { Compiler } from '../compile/compiler';\nimport type { StringOrNumber } from '../typings';\n\nconst componentTypeMap = {\n cartesianAxis: 'axis',\n 'cartesianAxis-band': 'axis',\n 'cartesianAxis-linear': 'axis',\n 'cartesianAxis-time': 'axis',\n polarAxis: 'axis',\n 'polarAxis-band': 'axis',\n 'polarAxis-linear': 'axis',\n discreteLegend: 'legend',\n continuousLegend: 'legend',\n colorLegend: 'legend',\n sizeLegend: 'legend'\n};\n\nexport class EventDispatcher implements IEventDispatcher {\n globalInstance: VChart;\n\n // view 事件与 window 事件视作为不同类型的事件信息,进行独立的冒泡处理\n private _viewBubbles: Map<EventType, Bubble> = new Map<EventType, Bubble>();\n private _windowBubbles: Map<EventType, Bubble> = new Map<EventType, Bubble>();\n\n private _viewListeners: Map<string, (params: CompilerListenerParameters) => void> = new Map<\n string,\n (params: CompilerListenerParameters) => void\n >();\n private _windowListeners: Map<string, (params: CompilerListenerParameters) => void> = new Map<\n string,\n (params: CompilerListenerParameters) => void\n >();\n\n private _compiler: Compiler;\n\n constructor(vchart: VChart, compiler: Compiler) {\n this.globalInstance = vchart;\n this._compiler = compiler;\n }\n\n register<Evt extends EventType>(eType: Evt, handler: EventHandler<EventParamsDefinition[Evt]>): this {\n // 解析 query 配置并生成最终 handler 内容\n this._parseQuery(handler);\n // view/window 事件做独立的处理\n const bubbles = this.getEventBubble(handler.filter?.source || Event_Source_Type.chart);\n const listeners = this.getEventListeners(handler.filter?.source || Event_Source_Type.chart);\n\n if (!bubbles.get(eType)) {\n bubbles.set(eType, new Bubble());\n }\n\n // 挂载事件监听\n const bubble = bubbles.get(eType) as Bubble;\n bubble.addHandler(handler, handler.filter?.level as EventBubbleLevel);\n if (this._isValidEvent(eType) && !listeners.has(eType)) {\n const callback = this._onDelegate.bind(this);\n this._compiler.addEventListener(handler.filter?.source as EventSourceType, eType, callback);\n listeners.set(eType, callback);\n }\n return this;\n }\n\n unregister<Evt extends EventType>(eType: Evt, handler?: EventHandler<EventParamsDefinition[Evt]>): this {\n let clean: boolean = false;\n // view/window 事件做独立的处理\n const bubbles = this.getEventBubble(handler?.filter?.source || Event_Source_Type.chart);\n const listeners = this.getEventListeners(handler?.filter?.source || Event_Source_Type.chart);\n\n if (!handler) {\n const bubble = bubbles.get(eType);\n bubble?.release();\n bubbles.delete(eType);\n clean = true;\n } else {\n const bubble = bubbles.get(eType);\n bubble?.removeHandler(handler);\n if (bubble?.getCount() === 0) {\n bubble?.release();\n bubbles.delete(eType);\n clean = true;\n }\n\n if ((handler?.wrappedCallback as any)?.cancel) {\n // 取消debounce/throttle事件,释放闭包内部的上下文对象\n (handler.wrappedCallback as any).cancel();\n }\n }\n // 某个事件下所有的监听取消之后删除语法层事件的代理\n if (clean && this._isValidEvent(eType)) {\n const callback = listeners.get(eType) as (params: CompilerListenerParameters) => void;\n this._compiler.removeEventListener(handler?.filter?.source || Event_Source_Type.chart, eType, callback);\n listeners.delete(eType);\n }\n return this;\n }\n\n dispatch<Evt extends EventType>(eType: Evt, params: EventParamsDefinition[Evt]): this {\n // 默认事件类别为 view\n const bubble = this.getEventBubble((params as BaseEventParams).source || Event_Source_Type.chart).get(\n eType\n ) as Bubble;\n // 没有任何监听事件时,bubble 不存在\n if (!bubble) {\n return this;\n }\n\n // 事件冒泡逻辑:Mark -> Model -> Chart -> VChart\n let stopBubble: boolean = false;\n // Mark 级别的事件只包含对语法层代理的基础事件\n const handlers = bubble.getHandlers(Event_Bubble_Level.mark);\n stopBubble = this._invoke(handlers, eType, params);\n\n if (!stopBubble) {\n const handlers = bubble.getHandlers(Event_Bubble_Level.model);\n stopBubble = this._invoke(handlers, eType, params);\n }\n if (!stopBubble) {\n const handlers = bubble.getHandlers(Event_Bubble_Level.chart);\n stopBubble = this._invoke(handlers, eType, params);\n }\n if (!stopBubble) {\n const handlers = bubble.getHandlers(Event_Bubble_Level.vchart);\n stopBubble = this._invoke(handlers, eType, params);\n }\n\n return this;\n }\n\n release(): void {\n for (const entry of this._viewListeners.entries()) {\n this._compiler.removeEventListener(Event_Source_Type.chart, entry[0], entry[1]);\n }\n this._viewListeners.clear();\n for (const entry of this._windowListeners.entries()) {\n this._compiler.removeEventListener(Event_Source_Type.window, entry[0], entry[1]);\n }\n this._windowListeners.clear();\n for (const bubble of this._viewBubbles.values()) {\n bubble.release();\n }\n this._viewBubbles.clear();\n for (const bubble of this._windowBubbles.values()) {\n bubble.release();\n }\n this._windowBubbles.clear();\n }\n\n /**\n * 基于转换后的事件筛选配置过滤需要调用的 handler\n */\n private _filter<Evt extends EventType>(filter: EventFilter, evt: Evt, params: EventParamsDefinition[Evt]): boolean {\n if (isFunction(filter.filter) && !filter.filter(params)) {\n return false;\n }\n\n // 事件 level 不需要筛选,在冒泡流程中已经处理了 level 的逻辑\n if (filter.nodeName && get(params, 'node.name') !== filter.nodeName) {\n return false;\n }\n\n if (filter.markName && !(params as BaseEventParams)?.itemMap.has(filter.markName)) {\n // 对于 markName 的筛选需要包含所有父级 mark 的 name\n return false;\n }\n\n let modelType = params.model?.type;\n if (componentTypeMap[modelType]) {\n modelType = componentTypeMap[modelType];\n }\n if (filter.type && modelType !== filter.type) {\n return false;\n }\n\n if (isValid(filter.userId) && params.model?.userId !== filter.userId) {\n return false;\n }\n\n return true;\n }\n\n private _prepareParams<Evt extends EventType>(\n filter: EventFilter,\n params: EventParamsDefinition[Evt]\n ): EventParamsDefinition[Evt] {\n // 如果针对于 mark 做了筛选,则事件参数转为筛选器制定的父级 mark\n if (filter.markName && (params as BaseEventParams).itemMap) {\n const item = (params as BaseEventParams).itemMap.get(filter.markName);\n const datum = item?.getDatum();\n return { ...params, item, datum };\n }\n return { ...params };\n }\n\n /**\n * 代理语法层事件的监听回调\n */\n private _onDelegate(listenerParams: CompilerListenerParameters) {\n const chart = this.globalInstance.getChart();\n const model = (isValid(listenerParams.modelId) && chart?.getModelById(listenerParams.modelId)) || undefined;\n const mark = (isValid(listenerParams.markId) && chart?.getMarkById(listenerParams.markId)) || null;\n\n // FIXME: 这里操作的应当是场景树结构,与 vgrammar 结构无关\n // 遍历取到所有父级的 mark 以支持子元素响应父元素事件\n const itemMap = new Map<string, any>();\n let targetMark: any = listenerParams.item?.mark;\n if (targetMark && isValid(targetMark.id())) {\n itemMap.set(targetMark.id(), listenerParams.item);\n }\n while (targetMark?.elements) {\n const id = targetMark.id();\n // 由于父级的 markName 可能重复,因此只取最近的父级 mark\n if (isValid(id) && !itemMap.has(id)) {\n itemMap.set(id, targetMark.elements[0]);\n }\n targetMark = targetMark.group;\n }\n\n const params: BaseEventParams = {\n event: listenerParams.event,\n item: listenerParams.item,\n datum: listenerParams.datum,\n source: listenerParams.source,\n itemMap,\n chart,\n model,\n mark: mark ?? undefined,\n node: get(listenerParams.event, 'target')\n };\n this.dispatch(listenerParams.type, params);\n }\n\n /**\n * 调用相应事件监听下的 handlers\n */\n private _invoke<Evt extends EventType>(\n handlers: EventHandler<EventParams>[],\n type: EventType,\n params: EventParamsDefinition[Evt]\n ): boolean {\n const result = handlers.map(handler => {\n const filter = handler.filter as EventFilter;\n if (!handler.query || this._filter(filter, type, params)) {\n const callback = handler.wrappedCallback || handler.callback;\n let stopBubble = callback.call(null, this._prepareParams(filter, params));\n if (handler.query?.consume) {\n stopBubble = true;\n (params as BaseEventParams).event?.stopPropagation();\n (params as BaseEventParams).event?.preventDefault();\n }\n return stopBubble;\n }\n return undefined;\n });\n // 如果某个事件回调阻止了冒泡,则阻止更高级别事件的调用过程\n return result.some(r => r === true);\n }\n\n /**\n * 依据事件 query 得到事件冒泡层级\n */\n private _getQueryLevel(query: EventQuery | null): EventBubbleLevel {\n // 事件默认监听在 vchart 层\n if (!query) {\n return Event_Bubble_Level.vchart;\n }\n if (query.level) {\n return query.level;\n }\n if (isValid(query.id)) {\n return Event_Bubble_Level.model;\n }\n\n return Event_Bubble_Level.vchart;\n }\n\n /**\n * 将用户 query 配置转换为最终事件筛选参数\n */\n private _parseQuery(handler: EventHandler<EventParams>): EventHandler<EventParams> {\n const query = handler.query;\n // 处理 query 带来的函数封装\n if (query?.throttle) {\n handler.wrappedCallback = throttle(handler.callback, query.throttle);\n } else if (query?.debounce) {\n handler.wrappedCallback = debounce(handler.callback, query.debounce);\n }\n let level = this._getQueryLevel(query);\n let type: string | null = null;\n let source: EventSourceType = Event_Source_Type.chart;\n let nodeName: string | null = null;\n let markName: string | null = null;\n let userId: StringOrNumber | null = null;\n\n if (query?.nodeName) {\n nodeName = query.nodeName;\n }\n\n if (query?.markName) {\n markName = query.markName;\n }\n\n if (query?.type && (level === Event_Bubble_Level.model || level === Event_Bubble_Level.mark)) {\n type = query.type;\n }\n if (query?.source) {\n source = query.source;\n }\n\n if (isValid(query?.id)) {\n userId = query?.id;\n level = Event_Bubble_Level.model; // 如果用户配置了 id,那么默认 level 为 model\n }\n handler.filter = {\n level,\n markName,\n type,\n source,\n nodeName,\n userId,\n filter: query?.filter ?? null\n };\n return handler;\n }\n\n private getEventBubble(source: EventSourceType) {\n switch (source) {\n case Event_Source_Type.chart:\n return this._viewBubbles;\n case Event_Source_Type.window:\n return this._windowBubbles;\n default:\n return this._viewBubbles;\n }\n }\n\n private getEventListeners(source: EventSourceType) {\n switch (source) {\n case Event_Source_Type.chart:\n return this._viewListeners;\n case Event_Source_Type.window:\n return this._windowListeners;\n default:\n return this._viewListeners;\n }\n }\n\n private _isValidEvent(eType: string) {\n return (\n BASE_EVENTS.includes(eType) ||\n (Object.values(VGRAMMAR_HOOK_EVENT) as string[]).includes(eType) ||\n (Object.values(ChartEvent) as string[]).includes(eType)\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/event/event-dispatcher.ts"],"names":[],"mappings":"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","file":"event-dispatcher.js","sourcesContent":["import { Bubble } from './bubble';\nimport { isValid, debounce, throttle, get, isFunction } from '../util';\nimport { BASE_EVENTS, ChartEvent, Event_Bubble_Level, Event_Source_Type, VGRAMMAR_HOOK_EVENT } from '../constant/event';\nimport type {\n EventType,\n EventQuery,\n EventHandler,\n EventParamsDefinition,\n IEventDispatcher,\n EventBubbleLevel,\n BaseEventParams,\n EventParams,\n EventFilter,\n EventSourceType\n} from './interface';\nimport type { VChart } from '../core/vchart';\nimport type { CompilerListenerParameters } from '../compile/interface';\nimport type { Compiler } from '../compile/compiler';\nimport type { StringOrNumber } from '../typings';\n\nconst componentTypeMap = {\n cartesianAxis: 'axis',\n 'cartesianAxis-band': 'axis',\n 'cartesianAxis-linear': 'axis',\n 'cartesianAxis-time': 'axis',\n polarAxis: 'axis',\n 'polarAxis-band': 'axis',\n 'polarAxis-linear': 'axis',\n discreteLegend: 'legend',\n continuousLegend: 'legend',\n colorLegend: 'legend',\n sizeLegend: 'legend'\n};\n\nexport class EventDispatcher implements IEventDispatcher {\n globalInstance: VChart;\n\n // view 事件与 window 事件视作为不同类型的事件信息,进行独立的冒泡处理\n private _viewBubbles: Map<EventType, Bubble> = new Map<EventType, Bubble>();\n private _windowBubbles: Map<EventType, Bubble> = new Map<EventType, Bubble>();\n\n private _viewListeners: Map<string, (params: CompilerListenerParameters) => void> = new Map<\n string,\n (params: CompilerListenerParameters) => void\n >();\n private _windowListeners: Map<string, (params: CompilerListenerParameters) => void> = new Map<\n string,\n (params: CompilerListenerParameters) => void\n >();\n\n private _compiler: Compiler;\n\n constructor(vchart: VChart, compiler: Compiler) {\n this.globalInstance = vchart;\n this._compiler = compiler;\n }\n\n register<Evt extends EventType>(eType: Evt, handler: EventHandler<EventParamsDefinition[Evt]>): this {\n // 解析 query 配置并生成最终 handler 内容\n this._parseQuery(handler);\n // view/window 事件做独立的处理\n const bubbles = this.getEventBubble(handler.filter?.source || Event_Source_Type.chart);\n const listeners = this.getEventListeners(handler.filter?.source || Event_Source_Type.chart);\n\n if (!bubbles.get(eType)) {\n bubbles.set(eType, new Bubble());\n }\n\n // 挂载事件监听\n const bubble = bubbles.get(eType) as Bubble;\n bubble.addHandler(handler, handler.filter?.level as EventBubbleLevel);\n if (this._isValidEvent(eType) && !listeners.has(eType)) {\n const callback = this._onDelegate.bind(this);\n this._compiler.addEventListener(handler.filter?.source as EventSourceType, eType, callback);\n listeners.set(eType, callback);\n }\n return this;\n }\n\n unregister<Evt extends EventType>(eType: Evt, handler?: EventHandler<EventParamsDefinition[Evt]>): this {\n let clean: boolean = false;\n // view/window 事件做独立的处理\n const bubbles = this.getEventBubble(handler?.filter?.source || Event_Source_Type.chart);\n const listeners = this.getEventListeners(handler?.filter?.source || Event_Source_Type.chart);\n\n if (!handler) {\n const bubble = bubbles.get(eType);\n bubble?.release();\n bubbles.delete(eType);\n clean = true;\n } else {\n const bubble = bubbles.get(eType);\n bubble?.removeHandler(handler);\n if (bubble?.getCount() === 0) {\n bubble?.release();\n bubbles.delete(eType);\n clean = true;\n }\n\n if ((handler?.wrappedCallback as any)?.cancel) {\n // 取消debounce/throttle事件,释放闭包内部的上下文对象\n (handler.wrappedCallback as any).cancel();\n }\n }\n // 某个事件下所有的监听取消之后删除语法层事件的代理\n if (clean && this._isValidEvent(eType)) {\n const callback = listeners.get(eType) as (params: CompilerListenerParameters) => void;\n this._compiler.removeEventListener(handler?.filter?.source || Event_Source_Type.chart, eType, callback);\n listeners.delete(eType);\n }\n return this;\n }\n\n dispatch<Evt extends EventType>(eType: Evt, params: EventParamsDefinition[Evt], level?: EventBubbleLevel): this {\n // 默认事件类别为 view\n const bubble = this.getEventBubble((params as BaseEventParams).source || Event_Source_Type.chart).get(\n eType\n ) as Bubble;\n // 没有任何监听事件时,bubble 不存在\n if (!bubble) {\n return this;\n }\n\n // 事件冒泡逻辑:Mark -> Model -> Chart -> VChart\n let stopBubble: boolean = false;\n\n if (level) {\n // 如果指定了 level,则直接处理,不进行冒泡\n const handlers = bubble.getHandlers(level);\n stopBubble = this._invoke(handlers, eType, params);\n } else {\n // Mark 级别的事件只包含对语法层代理的基础事件\n const handlers = bubble.getHandlers(Event_Bubble_Level.mark);\n stopBubble = this._invoke(handlers, eType, params);\n\n if (!stopBubble) {\n const handlers = bubble.getHandlers(Event_Bubble_Level.model);\n stopBubble = this._invoke(handlers, eType, params);\n }\n if (!stopBubble) {\n const handlers = bubble.getHandlers(Event_Bubble_Level.chart);\n stopBubble = this._invoke(handlers, eType, params);\n }\n if (!stopBubble) {\n const handlers = bubble.getHandlers(Event_Bubble_Level.vchart);\n stopBubble = this._invoke(handlers, eType, params);\n }\n }\n\n return this;\n }\n\n release(): void {\n for (const entry of this._viewListeners.entries()) {\n this._compiler.removeEventListener(Event_Source_Type.chart, entry[0], entry[1]);\n }\n this._viewListeners.clear();\n for (const entry of this._windowListeners.entries()) {\n this._compiler.removeEventListener(Event_Source_Type.window, entry[0], entry[1]);\n }\n this._windowListeners.clear();\n for (const bubble of this._viewBubbles.values()) {\n bubble.release();\n }\n this._viewBubbles.clear();\n for (const bubble of this._windowBubbles.values()) {\n bubble.release();\n }\n this._windowBubbles.clear();\n }\n\n /**\n * 基于转换后的事件筛选配置过滤需要调用的 handler\n */\n private _filter<Evt extends EventType>(filter: EventFilter, evt: Evt, params: EventParamsDefinition[Evt]): boolean {\n if (isFunction(filter.filter) && !filter.filter(params)) {\n return false;\n }\n\n // 事件 level 不需要筛选,在冒泡流程中已经处理了 level 的逻辑\n if (filter.nodeName && get(params, 'node.name') !== filter.nodeName) {\n return false;\n }\n\n if (filter.markName && (params as BaseEventParams)?.mark?.name !== filter.markName) {\n // 对于 markName 的筛选需要包含所有父级 mark 的 name\n return false;\n }\n\n let modelType = params.model?.type;\n if (componentTypeMap[modelType]) {\n modelType = componentTypeMap[modelType];\n }\n if (filter.type && modelType !== filter.type) {\n return false;\n }\n\n if (isValid(filter.userId) && params.model?.userId !== filter.userId) {\n return false;\n }\n\n return true;\n }\n\n private _prepareParams<Evt extends EventType>(\n filter: EventFilter,\n params: EventParamsDefinition[Evt]\n ): EventParamsDefinition[Evt] {\n // 如果针对于 mark 做了筛选,则事件参数转为筛选器制定的父级 mark\n if (filter.markName && params.mark && (params as BaseEventParams).itemMap) {\n const markId = params.mark.getProductId();\n const item = (params as BaseEventParams).itemMap.get(markId);\n const datum = item?.getDatum();\n return { ...params, item, datum };\n }\n return { ...params };\n }\n\n /**\n * 代理语法层事件的监听回调\n */\n private _onDelegate(listenerParams: CompilerListenerParameters) {\n const chart = this.globalInstance.getChart();\n const model = (isValid(listenerParams.modelId) && chart?.getModelById(listenerParams.modelId)) || undefined;\n const mark = (isValid(listenerParams.markId) && chart?.getMarkById(listenerParams.markId)) || null;\n\n // FIXME: 这里操作的应当是场景树结构,与 vgrammar 结构无关\n // 遍历取到所有父级的 mark 以支持子元素响应父元素事件\n const itemMap = new Map<string, any>();\n let targetMark: any = listenerParams.item?.mark;\n if (targetMark && isValid(targetMark.id())) {\n itemMap.set(targetMark.id(), listenerParams.item);\n }\n while (targetMark?.elements) {\n const id = targetMark.id();\n // 由于父级的 markName 可能重复,因此只取最近的父级 mark\n if (isValid(id) && !itemMap.has(id)) {\n itemMap.set(id, targetMark.elements[0]);\n }\n targetMark = targetMark.group;\n }\n\n const params: BaseEventParams = {\n event: listenerParams.event,\n item: listenerParams.item,\n datum: listenerParams.datum,\n source: listenerParams.source,\n itemMap,\n chart,\n model,\n mark: mark ?? undefined,\n node: get(listenerParams.event, 'target')\n };\n this.dispatch(listenerParams.type, params);\n }\n\n /**\n * 调用相应事件监听下的 handlers\n */\n private _invoke<Evt extends EventType>(\n handlers: EventHandler<EventParams>[],\n type: EventType,\n params: EventParamsDefinition[Evt]\n ): boolean {\n const result = handlers.map(handler => {\n const filter = handler.filter as EventFilter;\n if (!handler.query || this._filter(filter, type, params)) {\n const callback = handler.wrappedCallback || handler.callback;\n let stopBubble = callback.call(null, this._prepareParams(filter, params));\n if (handler.query?.consume) {\n stopBubble = true;\n (params as BaseEventParams).event?.stopPropagation();\n (params as BaseEventParams).event?.preventDefault();\n }\n return stopBubble;\n }\n return undefined;\n });\n // 如果某个事件回调阻止了冒泡,则阻止更高级别事件的调用过程\n return result.some(r => r === true);\n }\n\n /**\n * 依据事件 query 得到事件冒泡层级\n */\n private _getQueryLevel(query: EventQuery | null): EventBubbleLevel {\n // 事件默认监听在 vchart 层\n if (!query) {\n return Event_Bubble_Level.vchart;\n }\n if (query.level) {\n return query.level;\n }\n if (isValid(query.id)) {\n return Event_Bubble_Level.model;\n }\n\n return Event_Bubble_Level.vchart;\n }\n\n /**\n * 将用户 query 配置转换为最终事件筛选参数\n */\n private _parseQuery(handler: EventHandler<EventParams>): EventHandler<EventParams> {\n const query = handler.query;\n // 处理 query 带来的函数封装\n if (query?.throttle) {\n handler.wrappedCallback = throttle(handler.callback, query.throttle);\n } else if (query?.debounce) {\n handler.wrappedCallback = debounce(handler.callback, query.debounce);\n }\n let level = this._getQueryLevel(query);\n let type: string | null = null;\n let source: EventSourceType = Event_Source_Type.chart;\n let nodeName: string | null = null;\n let markName: string | null = null;\n let userId: StringOrNumber | null = null;\n\n if (query?.nodeName) {\n nodeName = query.nodeName;\n }\n\n if (query?.markName) {\n markName = query.markName;\n }\n\n if (query?.type && (level === Event_Bubble_Level.model || level === Event_Bubble_Level.mark)) {\n type = query.type;\n }\n if (query?.source) {\n source = query.source;\n }\n\n if (isValid(query?.id)) {\n userId = query?.id;\n level = Event_Bubble_Level.model; // 如果用户配置了 id,那么默认 level 为 model\n }\n handler.filter = {\n level,\n markName,\n type,\n source,\n nodeName,\n userId,\n filter: query?.filter ?? null\n };\n return handler;\n }\n\n private getEventBubble(source: EventSourceType) {\n switch (source) {\n case Event_Source_Type.chart:\n return this._viewBubbles;\n case Event_Source_Type.window:\n return this._windowBubbles;\n default:\n return this._viewBubbles;\n }\n }\n\n private getEventListeners(source: EventSourceType) {\n switch (source) {\n case Event_Source_Type.chart:\n return this._viewListeners;\n case Event_Source_Type.window:\n return this._windowListeners;\n default:\n return this._viewListeners;\n }\n }\n\n private _isValidEvent(eType: string) {\n return (\n BASE_EVENTS.includes(eType) ||\n (Object.values(VGRAMMAR_HOOK_EVENT) as string[]).includes(eType) ||\n (Object.values(ChartEvent) as string[]).includes(eType)\n );\n }\n}\n"]}
|
package/cjs/event/event.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { RenderMode } from '../typings/spec/common';
|
|
2
|
-
import type { EventType, EventQuery, EventCallback, EventParamsDefinition, IEvent, IEventDispatcher } from './interface';
|
|
2
|
+
import type { EventType, EventQuery, EventCallback, EventParamsDefinition, IEvent, IEventDispatcher, EventBubbleLevel } from './interface';
|
|
3
3
|
export declare class Event implements IEvent {
|
|
4
4
|
private _eventDispatcher;
|
|
5
5
|
private _mode;
|
|
@@ -9,6 +9,6 @@ export declare class Event implements IEvent {
|
|
|
9
9
|
on<Evt extends EventType>(eType: Evt, query: EventQuery, callback: EventCallback<EventParamsDefinition[Evt]>): this;
|
|
10
10
|
off<Evt extends EventType>(eType: Evt, callback?: EventCallback<EventParamsDefinition[Evt]>): this;
|
|
11
11
|
off<Evt extends EventType>(eType: Evt, query: EventQuery, callback: EventCallback<EventParamsDefinition[Evt]>): this;
|
|
12
|
-
emit<Evt extends EventType>(eType: Evt, params: EventParamsDefinition[Evt]): this;
|
|
12
|
+
emit<Evt extends EventType>(eType: Evt, params: EventParamsDefinition[Evt], level?: EventBubbleLevel): this;
|
|
13
13
|
release(): void;
|
|
14
14
|
}
|
package/cjs/event/event.js
CHANGED
|
@@ -50,12 +50,13 @@ class Event {
|
|
|
50
50
|
} else this._eventDispatcher.unregister(eType);
|
|
51
51
|
return this;
|
|
52
52
|
}
|
|
53
|
-
emit(eType, params) {
|
|
54
|
-
return this._eventDispatcher.dispatch(eType, params), this;
|
|
53
|
+
emit(eType, params, level) {
|
|
54
|
+
return this._eventDispatcher.dispatch(eType, params, level), this;
|
|
55
55
|
}
|
|
56
56
|
release() {
|
|
57
57
|
this._eventDispatcher.release(), this._composedEventMap.clear();
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
-
exports.Event = Event;
|
|
61
|
+
exports.Event = Event;
|
|
62
|
+
//# sourceMappingURL=event.js.map
|
package/cjs/event/event.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/event/event.ts"],"names":[],"mappings":";;;AAGA,qCAA+C;
|
|
1
|
+
{"version":3,"sources":["../src/event/event.ts"],"names":[],"mappings":"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","file":"event.js","sourcesContent":["/*eslint no-dupe-class-members: \"off\"*/\n\nimport type { RenderMode } from '../typings/spec/common';\nimport { ComposedEventMapper } from './events';\nimport type {\n EventType,\n EventQuery,\n EventCallback,\n EventParamsDefinition,\n IEvent,\n IEventDispatcher,\n IComposedEvent,\n EventParams,\n EventHandler,\n EventBubbleLevel\n} from './interface';\n\nexport class Event implements IEvent {\n private _eventDispatcher: IEventDispatcher;\n private _mode: RenderMode;\n\n private _composedEventMap: Map<EventCallback<EventParams>, { eventType: EventType; event: IComposedEvent }> =\n new Map();\n\n constructor(eventDispatcher: IEventDispatcher, mode: RenderMode) {\n this._eventDispatcher = eventDispatcher;\n this._mode = mode;\n }\n\n on<Evt extends EventType>(eType: Evt, callback: EventCallback<EventParamsDefinition[Evt]>): this;\n on<Evt extends EventType>(eType: Evt, query: EventQuery, callback: EventCallback<EventParamsDefinition[Evt]>): this;\n on<Evt extends EventType>(\n eType: Evt,\n query: EventQuery | EventCallback<EventParamsDefinition[Evt]>,\n callback?: EventCallback<EventParamsDefinition[Evt]>\n ): this {\n const handler =\n typeof query === 'function'\n ? { query: null, callback: query }\n : {\n query,\n callback: callback as EventCallback<EventParamsDefinition[Evt]>\n };\n\n if (ComposedEventMapper[eType as string]) {\n const composedEvent = new ComposedEventMapper[eType as string](\n this._eventDispatcher,\n this._mode\n ) as IComposedEvent;\n composedEvent.register(eType, handler);\n this._composedEventMap.set(callback as EventCallback<EventParamsDefinition[Evt]>, {\n eventType: eType,\n event: composedEvent\n });\n } else {\n this._eventDispatcher.register(eType, handler);\n }\n\n return this;\n }\n\n off<Evt extends EventType>(eType: Evt, callback?: EventCallback<EventParamsDefinition[Evt]>): this;\n off<Evt extends EventType>(eType: Evt, query: EventQuery, callback: EventCallback<EventParamsDefinition[Evt]>): this;\n off<Evt extends EventType>(\n eType: Evt,\n query?: EventQuery | EventCallback<EventParamsDefinition[Evt]>,\n cb?: EventCallback<EventParamsDefinition[Evt]>\n ): this {\n const callback = (cb ?? query) as EventCallback<EventParamsDefinition[Evt]>;\n if (ComposedEventMapper[eType as string]) {\n if (callback) {\n this._composedEventMap.get(callback)?.event.unregister();\n this._composedEventMap.delete(callback);\n } else {\n for (const entry of this._composedEventMap.entries()) {\n if (entry[1].eventType === eType) {\n this._composedEventMap.get(entry[0])?.event.unregister();\n this._composedEventMap.delete(entry[0]);\n }\n }\n }\n } else {\n if (callback) {\n const handler: EventHandler<EventParamsDefinition[Evt]> = {\n callback,\n query: null,\n // 卸载事件时无需处理 source 以外的参数\n filter: {\n nodeName: null,\n type: eType,\n level: null,\n source: (query as EventQuery).source,\n markName: null,\n filter: null,\n userId: null\n }\n };\n this._eventDispatcher.unregister(eType, handler);\n } else {\n this._eventDispatcher.unregister(eType);\n }\n }\n return this;\n }\n\n emit<Evt extends EventType>(eType: Evt, params: EventParamsDefinition[Evt], level?: EventBubbleLevel): this {\n this._eventDispatcher.dispatch(eType, params, level);\n return this;\n }\n\n release(): void {\n this._eventDispatcher.release();\n this._composedEventMap.clear();\n }\n}\n"]}
|
package/cjs/event/interface.d.ts
CHANGED
|
@@ -128,13 +128,13 @@ export interface IEventDispatcher {
|
|
|
128
128
|
globalInstance: VChart;
|
|
129
129
|
register: <Evt extends EventType>(eType: Evt, handler: EventHandler<EventParamsDefinition[Evt]>) => this;
|
|
130
130
|
unregister: <Evt extends EventType>(eType: Evt, handler?: EventHandler<EventParamsDefinition[Evt]>) => this;
|
|
131
|
-
dispatch: <Evt extends EventType>(eType: Evt, params?: EventParamsDefinition[Evt]) => this;
|
|
131
|
+
dispatch: <Evt extends EventType>(eType: Evt, params?: EventParamsDefinition[Evt], level?: EventBubbleLevel) => this;
|
|
132
132
|
release: () => void;
|
|
133
133
|
}
|
|
134
134
|
export interface IEvent {
|
|
135
135
|
on: (<Evt extends EventType>(eType: Evt, callback: EventCallback<EventParamsDefinition[Evt]>) => this) & (<Evt extends EventType>(eType: Evt, query: EventQuery, callback: EventCallback<EventParamsDefinition[Evt]>) => this);
|
|
136
136
|
off: (<Evt extends EventType>(eType: Evt, callback?: EventCallback<EventParamsDefinition[Evt]>) => this) & (<Evt extends EventType>(eType: Evt, query: EventQuery, callback: EventCallback<EventParamsDefinition[Evt]>) => this);
|
|
137
|
-
emit: <Evt extends EventType>(eType: Evt, params: EventParamsDefinition[Evt]) => void;
|
|
137
|
+
emit: <Evt extends EventType>(eType: Evt, params: EventParamsDefinition[Evt], level?: EventBubbleLevel) => void;
|
|
138
138
|
release: () => void;
|
|
139
139
|
}
|
|
140
140
|
export interface IComposedEvent {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/event/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { INode } from '@visactor/vrender';\nimport type { IElement } from '@visactor/vgrammar';\nimport type { IChart } from '../chart/interface';\nimport type { IModel } from '../model/interface';\nimport type { IMark, MarkType } from '../mark/interface';\nimport type { VChart } from '../core/vchart';\nimport type { DimensionEventParams } from './events/dimension/interface';\nimport type { Datum, IPoint, StringOrNumber } from '../typings';\nimport type { ChartEvent, Event_Bubble_Level, Event_Source_Type, VGRAMMAR_HOOK_EVENT } from '../constant';\nimport type { SeriesType } from '../series/interface';\n\nexport type EventType =\n | 'pointerdown'\n | 'pointerup'\n | 'pointerupoutside'\n | 'pointertap'\n | 'pointerover'\n | 'pointermove'\n | 'pointerenter'\n | 'pointerleave'\n | 'pointerout'\n | 'mousedown'\n | 'mouseup'\n | 'mouseupoutside'\n | 'rightdown'\n | 'rightup'\n | 'rightupoutside'\n | 'click'\n | 'dblclick'\n | 'mousemove'\n | 'mouseover'\n | 'mouseout'\n | 'mouseenter'\n | 'mouseleave'\n | 'wheel'\n | 'touchstart'\n | 'touchend'\n | 'touchendoutside'\n | 'touchmove'\n | 'touchcancel'\n | 'tap'\n | 'dragstart'\n | 'drag'\n | 'dragenter'\n | 'dragleave'\n | 'dragover'\n | 'dragend'\n | 'drop'\n | 'pan'\n | 'panstart'\n | 'panend'\n | 'press'\n | 'pressup'\n | 'pressend'\n | 'pinch'\n | 'pinchstart'\n | 'pinchend'\n | 'swipe'\n | keyof typeof ChartEvent\n | keyof typeof VGRAMMAR_HOOK_EVENT\n | string;\n\nexport type EventBubbleLevel = keyof typeof Event_Bubble_Level;\n\nexport type ComponentType =\n | 'axis'\n | 'dataZoom'\n | 'indicator'\n | 'legend'\n | 'mapLabel'\n | 'markLine'\n | 'tooltip'\n | 'title';\nexport type EventTargetType = MarkType | ComponentType | SeriesType;\n\nexport type EventSourceType = keyof typeof Event_Source_Type;\n\n/**\n * 事件 API 中的事件筛选配置\n */\nexport type EventQuery = {\n /**\n * 事件的冒泡层级配置,其中 model 指的是图表的内部模型,包括 region、series 以及 component\n */\n level?: EventBubbleLevel;\n /**\n * 事件来源配置。\n * - `window`: window 事件\n * - `chart`: 图表事件\n */\n source?: EventSourceType;\n\n /**\n * vrender 图形节点名称\n */\n nodeName?: string;\n /**\n * mark 图元名称\n */\n markName?: string;\n /**\n * 仅在 level 为 'mark' 或者 'model' 的场景下使用,用于筛选 mark 类型或者图表组成元素模型类型\n */\n type?: EventTargetType;\n /**\n * 用户在 spec 上配置的 id\n */\n id?: StringOrNumber;\n /**\n * 自定义过滤函数\n * @param params\n * @returns\n */\n filter?: (params: Partial<BaseEventParams>) => boolean;\n\n throttle?: number;\n debounce?: number;\n\n consume?: boolean;\n};\n\nexport type EventParams = {\n /**\n * 事件对象\n */\n event?: SuperEvent;\n /**\n * 供不同的事件用于存储期望携带的数据\n */\n value?: any;\n /**\n * 事件来源的 mark\n */\n mark?: IMark;\n /**\n * 事件来源的 model\n */\n model?: IModel;\n /**\n * 事件来源的 chart\n */\n chart?: IChart;\n /**\n * 事件拾取到的图元的数据\n */\n datum?: Datum;\n /**\n * 拾取到的图形节点\n */\n node?: INode;\n};\n\ntype SuperEvent = Event & {\n [key: string]: any;\n};\n\nexport type BaseEventParams = EventParams & {\n /**\n * 事件对象\n */\n event: SuperEvent;\n item: IElement;\n datum: Datum;\n source: EventSourceType;\n itemMap: Map<string, any>;\n};\n\nexport type EventCallback<Params extends EventParams> = (params: Params) => boolean | void;\n\n/**\n * 内部事件分发中所应用的事件筛选配置\n */\nexport type EventFilter = {\n source: EventSourceType;\n level: EventBubbleLevel;\n type: string | null;\n markName: string | null;\n nodeName: string | null;\n userId: StringOrNumber | null;\n filter: (params: Partial<BaseEventParams>) => boolean | null;\n};\n\nexport type EventHandler<Params extends EventParams> = {\n callback: EventCallback<Params>;\n query: EventQuery | null;\n // 如果有 debounce/throttle 配置则需要封装原始回调函数\n wrappedCallback?: EventCallback<Params>;\n // 转换后的事件筛选配置\n filter?: EventFilter;\n};\n\nexport type ExtendEventParam = EventParams & {\n event?: Event;\n item?: any;\n datum?: Datum;\n source?: EventSourceType;\n itemMap?: Map<string, any>;\n};\n\nexport type PanEventParam = ExtendEventParam & {\n // x/y方向上的偏移值\n delta: [number, number];\n};\n\nexport type ZoomEventParam = ExtendEventParam & {\n // 缩放值\n scale: number;\n // 缩放中心\n scaleCenter: IPoint;\n};\n\nexport type EventParamsDefinition = {\n // 基础事件回调参数\n pointerdown: BaseEventParams;\n pointerup: BaseEventParams;\n pointerupoutside: BaseEventParams;\n pointertap: BaseEventParams;\n pointerover: BaseEventParams;\n pointermove: BaseEventParams;\n pointerenter: BaseEventParams;\n pointerleave: BaseEventParams;\n pointerout: BaseEventParams;\n mousedown: BaseEventParams;\n mouseup: BaseEventParams;\n mouseupoutside: BaseEventParams;\n rightdown: BaseEventParams;\n rightup: BaseEventParams;\n rightupoutside: BaseEventParams;\n click: BaseEventParams;\n dblclick: BaseEventParams;\n mousemove: BaseEventParams;\n mouseover: BaseEventParams;\n mouseout: BaseEventParams;\n mouseenter: BaseEventParams;\n mouseleave: BaseEventParams;\n wheel: BaseEventParams;\n touchstart: BaseEventParams;\n touchend: BaseEventParams;\n touchendoutside: BaseEventParams;\n touchmove: BaseEventParams;\n touchcancel: BaseEventParams;\n\n dragstart: BaseEventParams;\n drag: BaseEventParams;\n dragenter: BaseEventParams;\n dragleave: BaseEventParams;\n dragover: BaseEventParams;\n dragend: BaseEventParams;\n drop: BaseEventParams;\n\n tap: BaseEventParams;\n pan: BaseEventParams;\n panstart: BaseEventParams;\n panend: BaseEventParams;\n press: BaseEventParams;\n pressup: BaseEventParams;\n pressend: BaseEventParams;\n pinch: BaseEventParams;\n pinchstart: BaseEventParams;\n pinchend: BaseEventParams;\n swipe: BaseEventParams;\n\n // VChart 内置的扩展组合事件\n dimension: DimensionEventParams;\n\n // 扩展事件参数\n [key: string]: ExtendEventParam;\n};\n\nexport interface IEventDispatcher {\n globalInstance: VChart;\n register: <Evt extends EventType>(eType: Evt, handler: EventHandler<EventParamsDefinition[Evt]>) => this;\n unregister: <Evt extends EventType>(eType: Evt, handler?: EventHandler<EventParamsDefinition[Evt]>) => this;\n dispatch: <Evt extends EventType>(eType: Evt, params?: EventParamsDefinition[Evt]) => this;\n release: () => void;\n}\n\nexport interface IEvent {\n on: (<Evt extends EventType>(eType: Evt, callback: EventCallback<EventParamsDefinition[Evt]>) => this) &\n (<Evt extends EventType>(\n eType: Evt,\n query: EventQuery,\n callback: EventCallback<EventParamsDefinition[Evt]>\n ) => this);\n off: (<Evt extends EventType>(eType: Evt, callback?: EventCallback<EventParamsDefinition[Evt]>) => this) &\n (<Evt extends EventType>(\n eType: Evt,\n query: EventQuery,\n callback: EventCallback<EventParamsDefinition[Evt]>\n ) => this);\n emit: <Evt extends EventType>(eType: Evt, params: EventParamsDefinition[Evt]) => void;\n release: () => void;\n}\n\nexport interface IComposedEvent {\n register: <Evt extends EventType>(eType: Evt, handler: EventHandler<EventParamsDefinition[Evt]>) => void;\n unregister: () => void;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/event/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { INode } from '@visactor/vrender';\nimport type { IElement } from '@visactor/vgrammar';\nimport type { IChart } from '../chart/interface';\nimport type { IModel } from '../model/interface';\nimport type { IMark, MarkType } from '../mark/interface';\nimport type { VChart } from '../core/vchart';\nimport type { DimensionEventParams } from './events/dimension/interface';\nimport type { Datum, IPoint, StringOrNumber } from '../typings';\nimport type { ChartEvent, Event_Bubble_Level, Event_Source_Type, VGRAMMAR_HOOK_EVENT } from '../constant';\nimport type { SeriesType } from '../series/interface';\n\nexport type EventType =\n | 'pointerdown'\n | 'pointerup'\n | 'pointerupoutside'\n | 'pointertap'\n | 'pointerover'\n | 'pointermove'\n | 'pointerenter'\n | 'pointerleave'\n | 'pointerout'\n | 'mousedown'\n | 'mouseup'\n | 'mouseupoutside'\n | 'rightdown'\n | 'rightup'\n | 'rightupoutside'\n | 'click'\n | 'dblclick'\n | 'mousemove'\n | 'mouseover'\n | 'mouseout'\n | 'mouseenter'\n | 'mouseleave'\n | 'wheel'\n | 'touchstart'\n | 'touchend'\n | 'touchendoutside'\n | 'touchmove'\n | 'touchcancel'\n | 'tap'\n | 'dragstart'\n | 'drag'\n | 'dragenter'\n | 'dragleave'\n | 'dragover'\n | 'dragend'\n | 'drop'\n | 'pan'\n | 'panstart'\n | 'panend'\n | 'press'\n | 'pressup'\n | 'pressend'\n | 'pinch'\n | 'pinchstart'\n | 'pinchend'\n | 'swipe'\n | keyof typeof ChartEvent\n | keyof typeof VGRAMMAR_HOOK_EVENT\n | string;\n\nexport type EventBubbleLevel = keyof typeof Event_Bubble_Level;\n\nexport type ComponentType =\n | 'axis'\n | 'dataZoom'\n | 'indicator'\n | 'legend'\n | 'mapLabel'\n | 'markLine'\n | 'tooltip'\n | 'title';\nexport type EventTargetType = MarkType | ComponentType | SeriesType;\n\nexport type EventSourceType = keyof typeof Event_Source_Type;\n\n/**\n * 事件 API 中的事件筛选配置\n */\nexport type EventQuery = {\n /**\n * 事件的冒泡层级配置,其中 model 指的是图表的内部模型,包括 region、series 以及 component\n */\n level?: EventBubbleLevel;\n /**\n * 事件来源配置。\n * - `window`: window 事件\n * - `chart`: 图表事件\n */\n source?: EventSourceType;\n\n /**\n * vrender 图形节点名称\n */\n nodeName?: string;\n /**\n * mark 图元名称\n */\n markName?: string;\n /**\n * 仅在 level 为 'mark' 或者 'model' 的场景下使用,用于筛选 mark 类型或者图表组成元素模型类型\n */\n type?: EventTargetType;\n /**\n * 用户在 spec 上配置的 id\n */\n id?: StringOrNumber;\n /**\n * 自定义过滤函数\n * @param params\n * @returns\n */\n filter?: (params: Partial<BaseEventParams>) => boolean;\n\n throttle?: number;\n debounce?: number;\n\n consume?: boolean;\n};\n\nexport type EventParams = {\n /**\n * 事件对象\n */\n event?: SuperEvent;\n /**\n * 供不同的事件用于存储期望携带的数据\n */\n value?: any;\n /**\n * 事件来源的 mark\n */\n mark?: IMark;\n /**\n * 事件来源的 model\n */\n model?: IModel;\n /**\n * 事件来源的 chart\n */\n chart?: IChart;\n /**\n * 事件拾取到的图元的数据\n */\n datum?: Datum;\n /**\n * 拾取到的图形节点\n */\n node?: INode;\n};\n\ntype SuperEvent = Event & {\n [key: string]: any;\n};\n\nexport type BaseEventParams = EventParams & {\n /**\n * 事件对象\n */\n event: SuperEvent;\n item: IElement;\n datum: Datum;\n source: EventSourceType;\n itemMap: Map<string, any>;\n};\n\nexport type EventCallback<Params extends EventParams> = (params: Params) => boolean | void;\n\n/**\n * 内部事件分发中所应用的事件筛选配置\n */\nexport type EventFilter = {\n source: EventSourceType;\n level: EventBubbleLevel;\n type: string | null;\n markName: string | null;\n nodeName: string | null;\n userId: StringOrNumber | null;\n filter: (params: Partial<BaseEventParams>) => boolean | null;\n};\n\nexport type EventHandler<Params extends EventParams> = {\n callback: EventCallback<Params>;\n query: EventQuery | null;\n // 如果有 debounce/throttle 配置则需要封装原始回调函数\n wrappedCallback?: EventCallback<Params>;\n // 转换后的事件筛选配置\n filter?: EventFilter;\n};\n\nexport type ExtendEventParam = EventParams & {\n event?: Event;\n item?: any;\n datum?: Datum;\n source?: EventSourceType;\n itemMap?: Map<string, any>;\n};\n\nexport type PanEventParam = ExtendEventParam & {\n // x/y方向上的偏移值\n delta: [number, number];\n};\n\nexport type ZoomEventParam = ExtendEventParam & {\n // 缩放值\n scale: number;\n // 缩放中心\n scaleCenter: IPoint;\n};\n\nexport type EventParamsDefinition = {\n // 基础事件回调参数\n pointerdown: BaseEventParams;\n pointerup: BaseEventParams;\n pointerupoutside: BaseEventParams;\n pointertap: BaseEventParams;\n pointerover: BaseEventParams;\n pointermove: BaseEventParams;\n pointerenter: BaseEventParams;\n pointerleave: BaseEventParams;\n pointerout: BaseEventParams;\n mousedown: BaseEventParams;\n mouseup: BaseEventParams;\n mouseupoutside: BaseEventParams;\n rightdown: BaseEventParams;\n rightup: BaseEventParams;\n rightupoutside: BaseEventParams;\n click: BaseEventParams;\n dblclick: BaseEventParams;\n mousemove: BaseEventParams;\n mouseover: BaseEventParams;\n mouseout: BaseEventParams;\n mouseenter: BaseEventParams;\n mouseleave: BaseEventParams;\n wheel: BaseEventParams;\n touchstart: BaseEventParams;\n touchend: BaseEventParams;\n touchendoutside: BaseEventParams;\n touchmove: BaseEventParams;\n touchcancel: BaseEventParams;\n\n dragstart: BaseEventParams;\n drag: BaseEventParams;\n dragenter: BaseEventParams;\n dragleave: BaseEventParams;\n dragover: BaseEventParams;\n dragend: BaseEventParams;\n drop: BaseEventParams;\n\n tap: BaseEventParams;\n pan: BaseEventParams;\n panstart: BaseEventParams;\n panend: BaseEventParams;\n press: BaseEventParams;\n pressup: BaseEventParams;\n pressend: BaseEventParams;\n pinch: BaseEventParams;\n pinchstart: BaseEventParams;\n pinchend: BaseEventParams;\n swipe: BaseEventParams;\n\n // VChart 内置的扩展组合事件\n dimension: DimensionEventParams;\n\n // 扩展事件参数\n [key: string]: ExtendEventParam;\n};\n\nexport interface IEventDispatcher {\n globalInstance: VChart;\n register: <Evt extends EventType>(eType: Evt, handler: EventHandler<EventParamsDefinition[Evt]>) => this;\n unregister: <Evt extends EventType>(eType: Evt, handler?: EventHandler<EventParamsDefinition[Evt]>) => this;\n dispatch: <Evt extends EventType>(eType: Evt, params?: EventParamsDefinition[Evt], level?: EventBubbleLevel) => this;\n release: () => void;\n}\n\nexport interface IEvent {\n on: (<Evt extends EventType>(eType: Evt, callback: EventCallback<EventParamsDefinition[Evt]>) => this) &\n (<Evt extends EventType>(\n eType: Evt,\n query: EventQuery,\n callback: EventCallback<EventParamsDefinition[Evt]>\n ) => this);\n off: (<Evt extends EventType>(eType: Evt, callback?: EventCallback<EventParamsDefinition[Evt]>) => this) &\n (<Evt extends EventType>(\n eType: Evt,\n query: EventQuery,\n callback: EventCallback<EventParamsDefinition[Evt]>\n ) => this);\n emit: <Evt extends EventType>(eType: Evt, params: EventParamsDefinition[Evt], level?: EventBubbleLevel) => void;\n release: () => void;\n}\n\nexport interface IComposedEvent {\n register: <Evt extends EventType>(eType: Evt, handler: EventHandler<EventParamsDefinition[Evt]>) => void;\n unregister: () => void;\n}\n"]}
|
|
@@ -8,8 +8,9 @@ const vutils_1 = require("@visactor/vutils"), drill_1 = require("../../data/tran
|
|
|
8
8
|
|
|
9
9
|
class Drillable {
|
|
10
10
|
_getTriggerEvent(type) {
|
|
11
|
+
var _a;
|
|
11
12
|
const {mode: mode} = this._drillParams;
|
|
12
|
-
return config_1.defaultTriggerEvent[mode][type];
|
|
13
|
+
return null === (_a = config_1.defaultTriggerEvent[mode]) || void 0 === _a ? void 0 : _a[type];
|
|
13
14
|
}
|
|
14
15
|
_hideTooltip() {
|
|
15
16
|
const tooltip = this.getChart().getAllComponents().find((c => c.type === interface_1.ComponentTypeEnum.tooltip));
|
|
@@ -31,7 +32,7 @@ class Drillable {
|
|
|
31
32
|
}
|
|
32
33
|
bindDrillEvent() {
|
|
33
34
|
const {event: event, getRawData: getRawData, drillField: drillField} = this._drillParams, keyField = drillField();
|
|
34
|
-
event.on(this._getTriggerEvent("start"), (e => {
|
|
35
|
+
this._getTriggerEvent("start") && event.on(this._getTriggerEvent("start"), (e => {
|
|
35
36
|
var _a, _b, _c;
|
|
36
37
|
if ((0, vutils_1.isNil)(e.datum) || (0, vutils_1.isNil)(null === (_a = e.datum) || void 0 === _a ? void 0 : _a[keyField])) return void this.drillUp();
|
|
37
38
|
this._hideTooltip();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/interaction/drill/drillable.ts"],"names":[],"mappings":";;;AACA,6CAA2D;AAI3D,uDAA0D;AAC1D,uDAAwD;AAGxD,kEAA4E;AAC5E,qCAA+C;AAC/C,6CAA4C;AAC5C,kDAAuE;AAGvE,yDAA8D;AAsC9D,MAAa,SAAS;IAIZ,gBAAgB,CAAC,IAAY
|
|
1
|
+
{"version":3,"sources":["../src/interaction/drill/drillable.ts"],"names":[],"mappings":"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","file":"drillable.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport { isArray, isEmpty, isNil } from '@visactor/vutils';\nimport type { DataSet, DataView } from '@visactor/vdataset';\n\nimport type { DrillInfo } from '../../data/transforms/drill';\nimport { drillFilter } from '../../data/transforms/drill';\nimport { DrillEnum } from '../../data/transforms/drill';\nimport type { EventType, IEvent } from '../../event/interface';\nimport type { RenderMode } from '../../typings/spec';\nimport { defaultTriggerEvent } from '../../component/common/trigger/config';\nimport { findHierarchyPath } from '../../util';\nimport { ChartEvent } from '../../constant';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport type { IModel } from '../../model/interface';\nimport type { BaseSeries } from '../../series/base/base-series';\nimport { ComponentTypeEnum } from '../../component/interface';\nimport type { Tooltip } from '../../component/tooltip';\n\ninterface DrillParams {\n event: IEvent;\n mode: RenderMode;\n drillField: () => string;\n getRawData: () => DataView;\n}\n\nexport interface IDrillable {\n /**\n * 初始化钻取设置\n */\n initDrillable: (params: DrillParams) => void;\n\n /**\n * 初始化钻取数据\n */\n initDrillableData: (dataSet: DataSet) => void;\n\n /**\n * 绑定钻取事件\n */\n bindDrillEvent: () => void;\n\n /**\n * 上卷\n */\n drillUp: () => void;\n\n /**\n * 下钻\n * @param drillPath 钻取路径\n */\n drillDown: (drillPath: string[]) => string[];\n}\n\nexport class Drillable implements IDrillable {\n private _drillParams: DrillParams;\n private _drillInfo: DrillInfo;\n\n private _getTriggerEvent(type: string): EventType {\n const { mode } = this._drillParams;\n return defaultTriggerEvent[mode]?.[type];\n }\n\n private _hideTooltip() {\n const tooltip = (this as unknown as BaseSeries<null>)\n .getChart()\n .getAllComponents()\n .find(c => c.type === ComponentTypeEnum.tooltip) as Tooltip;\n tooltip && tooltip.hideTooltip();\n }\n\n initDrillable(params: DrillParams) {\n this._drillParams = params;\n }\n\n initDrillableData(dataSet: DataSet) {\n const { getRawData } = this._drillParams;\n // 注册筛选方法\n registerDataSetInstanceTransform(dataSet, 'drillFilter', drillFilter);\n\n // 调用筛选数据, 用于上卷下钻\n getRawData().transform({\n type: 'drillFilter',\n options: {\n info: () => this._drillInfo,\n keyField: () => this._drillParams.drillField()\n }\n });\n }\n\n bindDrillEvent() {\n const { event, getRawData, drillField } = this._drillParams;\n const keyField = drillField();\n if (this._getTriggerEvent('start')) {\n event.on(this._getTriggerEvent('start'), e => {\n if (isNil(e.datum) || isNil(e.datum?.[keyField])) {\n this.drillUp();\n return;\n }\n\n // Drill交互后, 隐藏Tooltip\n this._hideTooltip();\n // 获取数据key\n const dataKey = e.datum[keyField];\n // 已钻取的路径\n const selectPath = this._drillInfo?.path ?? [];\n // 用户点击的路径\n const clickedPath = findHierarchyPath(getRawData().rawData, dataKey, keyField, 'children');\n // 已钻取过, 则一定上卷\n if (selectPath[selectPath.length - 1] === clickedPath[clickedPath.length - 1]) {\n this.drillUp();\n } else {\n this.drillDown(clickedPath);\n }\n });\n }\n }\n\n /**\n * 下钻接口\n * @param drillPath 下钻后的路径\n * @returns 当然路径\n * @description 根据传入的path, 向指定层级下钻.\n */\n drillDown(drillPath: string[] = []): string[] {\n const { getRawData, event } = this._drillParams;\n if (!isArray(drillPath) || isEmpty(drillPath)) {\n return drillPath;\n }\n\n // 根据钻取路径, 获得当前需要展示的层级\n const dataKey = drillPath[drillPath.length - 1];\n\n this._drillInfo = {\n key: dataKey,\n path: drillPath,\n type: DrillEnum.DrillDown\n };\n\n getRawData().reRunAllTransform();\n event.emit(ChartEvent.drill, {\n value: { path: drillPath, type: DrillEnum.DrillDown },\n model: this as unknown as IModel\n });\n return drillPath;\n }\n\n /**\n * 上卷接口\n * @returns 上卷后的路径\n * @description 根据path信息, 向父层级上卷.\n */\n drillUp() {\n const { getRawData, event } = this._drillParams;\n\n const path = this._drillInfo?.path ?? [];\n if (!isArray(path) || isEmpty(path)) {\n return path;\n }\n\n const dataKey = path.pop();\n\n this._drillInfo = {\n key: dataKey,\n path: path,\n type: DrillEnum.DrillUp\n };\n\n getRawData().reRunAllTransform();\n event.emit(ChartEvent.drill, {\n value: { path, type: DrillEnum.DrillUp },\n model: this as unknown as IModel\n });\n return path;\n }\n}\n"]}
|