@visactor/vchart 2.1.0-alpha.18 → 2.1.0-alpha.19
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/es5/index.js +3 -3
- package/build/index.es.js +60472 -64304
- package/build/index.js +60474 -64306
- package/build/index.min.js +2 -2
- package/build/tsconfig.tsbuildinfo +1 -1
- package/cjs/animation/callback-disappear.d.ts +1 -1
- package/cjs/animation/callback-disappear.js +2 -2
- package/cjs/animation/callback-disappear.js.map +1 -1
- package/cjs/animation/config.js +34 -34
- package/cjs/animation/config.js.map +1 -1
- package/cjs/animation/index.js +1 -2
- package/cjs/chart/base/base-chart-transformer.d.ts +0 -3
- package/cjs/chart/base/base-chart-transformer.js +3 -23
- package/cjs/chart/base/base-chart-transformer.js.map +1 -1
- package/cjs/chart/base/base-chart.d.ts +9 -27
- package/cjs/chart/base/base-chart.js +28 -209
- package/cjs/chart/base/base-chart.js.map +1 -1
- package/cjs/chart/gauge/gauge-transformer.js +2 -3
- package/cjs/chart/gauge/gauge-transformer.js.map +1 -1
- package/cjs/chart/interface/chart.d.ts +0 -1
- package/cjs/chart/interface/chart.js.map +1 -1
- package/cjs/chart/pie/base/pie-transformer.js +2 -2
- package/cjs/chart/pie/base/pie-transformer.js.map +1 -1
- package/cjs/chart/polar/polar-transformer.js +1 -1
- package/cjs/chart/polar/polar-transformer.js.map +1 -1
- package/cjs/chart/polar/progress-like/progress-like-transformer.js +1 -1
- package/cjs/chart/polar/progress-like/progress-like-transformer.js.map +1 -1
- package/cjs/chart/progress/circular/circular-progress-transformer.js +1 -2
- package/cjs/chart/progress/circular/circular-progress-transformer.js.map +1 -1
- package/cjs/chart/progress/linear/linear-progress-transformer.js +1 -1
- package/cjs/chart/progress/linear/linear-progress-transformer.js.map +1 -1
- package/cjs/chart/radar/radar-transformer.js +2 -3
- package/cjs/chart/radar/radar-transformer.js.map +1 -1
- package/cjs/chart/range-area/range-area-transformer.js +2 -2
- package/cjs/chart/range-area/range-area-transformer.js.map +1 -1
- package/cjs/chart/rose/rose-transformer.js +1 -2
- package/cjs/chart/rose/rose-transformer.js.map +1 -1
- package/cjs/chart/util.d.ts +1 -4
- package/cjs/chart/util.js +4 -40
- package/cjs/chart/util.js.map +1 -1
- package/cjs/chart/waterfall/waterfall-transformer.js +1 -2
- package/cjs/chart/waterfall/waterfall-transformer.js.map +1 -1
- package/cjs/compile/compiler.d.ts +0 -2
- package/cjs/compile/compiler.js +48 -68
- package/cjs/compile/compiler.js.map +1 -1
- package/cjs/compile/data/compilable-data.d.ts +1 -1
- package/cjs/compile/data/compilable-data.js +1 -1
- package/cjs/compile/data/compilable-data.js.map +1 -1
- package/cjs/compile/grammar-item.d.ts +1 -1
- package/cjs/compile/grammar-item.js.map +1 -1
- package/cjs/compile/interface/compilable-item.d.ts +1 -1
- package/cjs/compile/interface/compilable-item.js.map +1 -1
- package/cjs/compile/interface/compiler.d.ts +1 -2
- package/cjs/compile/interface/compiler.js.map +1 -1
- package/cjs/compile/morph.js +6 -5
- package/cjs/compile/morph.js.map +1 -1
- package/cjs/component/axis/base-axis.d.ts +8 -3
- package/cjs/component/axis/base-axis.js +7 -27
- package/cjs/component/axis/base-axis.js.map +1 -1
- package/cjs/component/axis/cartesian/band-axis.d.ts +7 -1
- package/cjs/component/axis/cartesian/band-axis.js +4 -4
- package/cjs/component/axis/cartesian/band-axis.js.map +1 -1
- package/cjs/component/axis/cartesian/linear-axis.d.ts +1 -1
- package/cjs/component/axis/cartesian/linear-axis.js +4 -4
- package/cjs/component/axis/cartesian/linear-axis.js.map +1 -1
- package/cjs/component/axis/mixin/linear-axis-mixin.js +10 -7
- package/cjs/component/axis/mixin/linear-axis-mixin.js.map +1 -1
- package/cjs/component/axis/polar/band-axis.d.ts +0 -2
- package/cjs/component/axis/polar/band-axis.js +0 -3
- package/cjs/component/axis/polar/band-axis.js.map +1 -1
- package/cjs/component/axis/polar/linear-axis.js +0 -3
- package/cjs/component/axis/polar/linear-axis.js.map +1 -1
- package/cjs/component/base/base-component.d.ts +7 -7
- package/cjs/component/base/base-component.js +6 -41
- package/cjs/component/base/base-component.js.map +1 -1
- package/cjs/component/brush/brush.d.ts +7 -3
- package/cjs/component/brush/brush.js +16 -34
- package/cjs/component/brush/brush.js.map +1 -1
- package/cjs/component/crosshair/base.d.ts +8 -5
- package/cjs/component/crosshair/base.js +5 -33
- package/cjs/component/crosshair/base.js.map +1 -1
- package/cjs/component/crosshair/cartesian.js +3 -3
- package/cjs/component/crosshair/cartesian.js.map +1 -1
- package/cjs/component/custom-mark/custom-mark.d.ts +7 -4
- package/cjs/component/custom-mark/custom-mark.js +3 -27
- package/cjs/component/custom-mark/custom-mark.js.map +1 -1
- package/cjs/component/data-zoom/data-filter-base-component.d.ts +7 -3
- package/cjs/component/data-zoom/data-filter-base-component.js +2 -15
- package/cjs/component/data-zoom/data-filter-base-component.js.map +1 -1
- package/cjs/component/data-zoom/data-zoom/data-zoom.d.ts +0 -1
- package/cjs/component/data-zoom/data-zoom/data-zoom.js +1 -19
- package/cjs/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
- package/cjs/component/data-zoom/scroll-bar/scroll-bar.d.ts +0 -1
- package/cjs/component/data-zoom/scroll-bar/scroll-bar.js +1 -12
- package/cjs/component/data-zoom/scroll-bar/scroll-bar.js.map +1 -1
- package/cjs/component/geo/geo-coordinate.d.ts +7 -1
- package/cjs/component/indicator/indicator.d.ts +0 -1
- package/cjs/component/indicator/indicator.js +2 -11
- package/cjs/component/indicator/indicator.js.map +1 -1
- package/cjs/component/indicator/util.d.ts +3 -4
- package/cjs/component/indicator/util.js +1 -1
- package/cjs/component/indicator/util.js.map +1 -1
- package/cjs/component/label/base-label.d.ts +7 -1
- package/cjs/component/label/base-label.js +2 -6
- package/cjs/component/label/base-label.js.map +1 -1
- package/cjs/component/label/label.js +3 -3
- package/cjs/component/label/label.js.map +1 -1
- package/cjs/component/legend/base-legend.d.ts +7 -2
- package/cjs/component/legend/base-legend.js +3 -20
- package/cjs/component/legend/base-legend.js.map +1 -1
- package/cjs/component/legend/discrete/legend.d.ts +1 -1
- package/cjs/component/legend/discrete/legend.js +7 -7
- package/cjs/component/legend/discrete/legend.js.map +1 -1
- package/cjs/component/marker/base-marker.d.ts +7 -14
- package/cjs/component/marker/base-marker.js +12 -112
- package/cjs/component/marker/base-marker.js.map +1 -1
- package/cjs/component/marker/mark-area/cartesian-mark-area.js +3 -3
- package/cjs/component/marker/mark-area/cartesian-mark-area.js.map +1 -1
- package/cjs/component/marker/mark-area/polar-mark-area.js +2 -2
- package/cjs/component/marker/mark-area/polar-mark-area.js.map +1 -1
- package/cjs/component/marker/mark-line/base-mark-line.js +4 -2
- package/cjs/component/marker/mark-line/base-mark-line.js.map +1 -1
- package/cjs/component/marker/mark-line/cartesian-mark-line.js +2 -2
- package/cjs/component/marker/mark-line/cartesian-mark-line.js.map +1 -1
- package/cjs/component/marker/mark-line/polar-mark-line.js +2 -2
- package/cjs/component/marker/mark-line/polar-mark-line.js.map +1 -1
- package/cjs/component/marker/mark-point/base-mark-point.js +11 -26
- package/cjs/component/marker/mark-point/base-mark-point.js.map +1 -1
- package/cjs/component/marker/mark-point/cartesian-mark-point.js +2 -2
- package/cjs/component/marker/mark-point/cartesian-mark-point.js.map +1 -1
- package/cjs/component/marker/mark-point/polar-mark-point.js +1 -1
- package/cjs/component/marker/mark-point/polar-mark-point.js.map +1 -1
- package/cjs/component/marker/utils.d.ts +4 -4
- package/cjs/component/marker/utils.js +23 -27
- package/cjs/component/marker/utils.js.map +1 -1
- package/cjs/component/player/player.d.ts +0 -1
- package/cjs/component/player/player.js +0 -10
- package/cjs/component/player/player.js.map +1 -1
- package/cjs/component/title/title.d.ts +7 -1
- package/cjs/component/title/title.js +2 -6
- package/cjs/component/title/title.js.map +1 -1
- package/cjs/component/tooltip/tooltip.d.ts +0 -1
- package/cjs/component/tooltip/tooltip.js +0 -8
- package/cjs/component/tooltip/tooltip.js.map +1 -1
- package/cjs/component/util.js +1 -2
- package/cjs/constant/correlation.js +2 -1
- package/cjs/constant/marker.js +1 -1
- package/cjs/constant/polar.js +1 -1
- package/cjs/constant/scatter.js +1 -1
- package/cjs/constant/scroll-bar.js +1 -2
- package/cjs/constant/sunburst.js +1 -1
- package/cjs/constant/waterfall.js +1 -1
- package/cjs/constant/word-cloud.js +1 -1
- package/cjs/core/expression-function.js +2 -1
- package/cjs/core/index.d.ts +1 -2
- package/cjs/core/index.js +4 -8
- package/cjs/core/index.js.map +1 -1
- package/cjs/core/interface.js +1 -1
- package/cjs/core/util.js +1 -1
- package/cjs/core/vchart.d.ts +1 -5
- package/cjs/core/vchart.js +21 -38
- package/cjs/core/vchart.js.map +1 -1
- package/cjs/data/transforms/box-plot.d.ts +1 -4
- package/cjs/data/transforms/box-plot.js +3 -3
- package/cjs/data/transforms/box-plot.js.map +1 -1
- package/cjs/data/transforms/correlation-center.d.ts +4 -11
- package/cjs/data/transforms/correlation-center.js +2 -3
- package/cjs/data/transforms/correlation-center.js.map +1 -1
- package/cjs/data/transforms/correlation.d.ts +15 -18
- package/cjs/data/transforms/correlation.js +17 -22
- package/cjs/data/transforms/correlation.js.map +1 -1
- package/cjs/data/transforms/funnel.d.ts +8 -10
- package/cjs/data/transforms/funnel.js +3 -4
- package/cjs/data/transforms/funnel.js.map +1 -1
- package/cjs/data/transforms/lookup.d.ts +3 -3
- package/cjs/data/transforms/lookup.js +7 -12
- package/cjs/data/transforms/lookup.js.map +1 -1
- package/cjs/data/transforms/map.d.ts +2 -8
- package/cjs/data/transforms/map.js +6 -9
- package/cjs/data/transforms/map.js.map +1 -1
- package/cjs/data/transforms/sankey.d.ts +4 -12
- package/cjs/data/transforms/sankey.js +13 -18
- package/cjs/data/transforms/sankey.js.map +1 -1
- package/cjs/data/transforms/stack-split.d.ts +1 -2
- package/cjs/data/transforms/stack-split.js +1 -1
- package/cjs/data/transforms/stack-split.js.map +1 -1
- package/cjs/data/transforms/treemap.d.ts +3 -5
- package/cjs/data/transforms/treemap.js +6 -7
- package/cjs/data/transforms/treemap.js.map +1 -1
- package/cjs/data/transforms/venn.d.ts +2 -4
- package/cjs/data/transforms/venn.js +4 -4
- package/cjs/data/transforms/venn.js.map +1 -1
- package/cjs/data/transforms/waterfall.d.ts +2 -4
- package/cjs/data/transforms/waterfall.js +7 -7
- package/cjs/data/transforms/waterfall.js.map +1 -1
- package/cjs/env/env.js +11 -11
- package/cjs/env/env.js.map +1 -1
- package/cjs/env/index.js +1 -1
- package/cjs/event/event.d.ts +0 -4
- package/cjs/event/event.js +7 -26
- package/cjs/event/event.js.map +1 -1
- package/cjs/interaction/interaction.js +8 -11
- package/cjs/interaction/interaction.js.map +1 -1
- package/cjs/interaction/triggers/element-active-by-legend.js +2 -3
- package/cjs/interaction/triggers/element-active-by-legend.js.map +1 -1
- package/cjs/interaction/triggers/element-active.js +3 -4
- package/cjs/interaction/triggers/element-active.js.map +1 -1
- package/cjs/interaction/triggers/element-highlight-by-group.js +2 -3
- package/cjs/interaction/triggers/element-highlight-by-group.js.map +1 -1
- package/cjs/interaction/triggers/element-highlight-by-legend.js +2 -2
- package/cjs/interaction/triggers/element-highlight-by-legend.js.map +1 -1
- package/cjs/interaction/triggers/element-highlight-by-name.js +2 -2
- package/cjs/interaction/triggers/element-highlight-by-name.js.map +1 -1
- package/cjs/interaction/triggers/element-highlight.js +2 -2
- package/cjs/interaction/triggers/element-highlight.js.map +1 -1
- package/cjs/interaction/triggers/element-select.js +3 -3
- package/cjs/interaction/triggers/element-select.js.map +1 -1
- package/cjs/mark/arc.js +4 -4
- package/cjs/mark/arc.js.map +1 -1
- package/cjs/mark/area.js +5 -4
- package/cjs/mark/area.js.map +1 -1
- package/cjs/mark/base/base-mark.d.ts +2 -12
- package/cjs/mark/base/base-mark.js +29 -98
- package/cjs/mark/base/base-mark.js.map +1 -1
- package/cjs/mark/component.d.ts +0 -9
- package/cjs/mark/component.js +3 -51
- package/cjs/mark/component.js.map +1 -1
- package/cjs/mark/glyph.js +1 -1
- package/cjs/mark/glyph.js.map +1 -1
- package/cjs/mark/group.js +6 -6
- package/cjs/mark/group.js.map +1 -1
- package/cjs/mark/interface/common.js.map +1 -1
- package/cjs/mark/interface/mark.d.ts +0 -2
- package/cjs/mark/interface/mark.js.map +1 -1
- package/cjs/mark/line.js +5 -4
- package/cjs/mark/line.js.map +1 -1
- package/cjs/mark/rect.js +3 -3
- package/cjs/mark/rect.js.map +1 -1
- package/cjs/mark/symbol.js +3 -3
- package/cjs/mark/symbol.js.map +1 -1
- package/cjs/mark/text.js +4 -4
- package/cjs/mark/text.js.map +1 -1
- package/cjs/mark/utils/glyph.js +2 -3
- package/cjs/mark/utils/glyph.js.map +1 -1
- package/cjs/model/base-model.d.ts +15 -3
- package/cjs/model/base-model.js.map +1 -1
- package/cjs/model/interface.d.ts +0 -13
- package/cjs/model/interface.js.map +1 -1
- package/cjs/plugin/components/axis-sync/tick-align-transform.js +2 -2
- package/cjs/plugin/components/axis-sync/tick-align-transform.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/canvas-tooltip-handler.d.ts +2 -2
- package/cjs/plugin/components/tooltip-handler/canvas-tooltip-handler.js +2 -2
- package/cjs/plugin/components/tooltip-handler/canvas-tooltip-handler.js.map +1 -1
- package/cjs/plugin/other.js +5 -5
- package/cjs/plugin/other.js.map +1 -1
- package/cjs/region/region.d.ts +7 -1
- package/cjs/scale/color-ordinal-scale.d.ts +0 -1
- package/cjs/scale/color-ordinal-scale.js +0 -3
- package/cjs/scale/color-ordinal-scale.js.map +1 -1
- package/cjs/scale/global-scale.js +2 -9
- package/cjs/scale/global-scale.js.map +1 -1
- package/cjs/series/area/area.d.ts +0 -2
- package/cjs/series/area/area.js +0 -6
- package/cjs/series/area/area.js.map +1 -1
- package/cjs/series/bar/bar.d.ts +0 -3
- package/cjs/series/bar/bar.js +4 -30
- package/cjs/series/bar/bar.js.map +1 -1
- package/cjs/series/base/base-series.d.ts +7 -11
- package/cjs/series/base/base-series.js +23 -93
- package/cjs/series/base/base-series.js.map +1 -1
- package/cjs/series/base/constant.d.ts +0 -3
- package/cjs/series/base/constant.js +1 -9
- package/cjs/series/base/constant.js.map +1 -1
- package/cjs/series/box-plot/box-plot.d.ts +0 -2
- package/cjs/series/box-plot/box-plot.js +4 -16
- package/cjs/series/box-plot/box-plot.js.map +1 -1
- package/cjs/series/correlation/correlation.js +11 -13
- package/cjs/series/correlation/correlation.js.map +1 -1
- package/cjs/series/dot/dot.d.ts +0 -12
- package/cjs/series/dot/dot.js +1 -16
- package/cjs/series/dot/dot.js.map +1 -1
- package/cjs/series/funnel/funnel.js +8 -5
- package/cjs/series/funnel/funnel.js.map +1 -1
- package/cjs/series/heatmap/heatmap.d.ts +0 -2
- package/cjs/series/heatmap/heatmap.js +0 -10
- package/cjs/series/heatmap/heatmap.js.map +1 -1
- package/cjs/series/line/line.d.ts +0 -2
- package/cjs/series/line/line.js +3 -9
- package/cjs/series/line/line.js.map +1 -1
- package/cjs/series/map/map.js +3 -3
- package/cjs/series/map/map.js.map +1 -1
- package/cjs/series/mixin/line-mixin.d.ts +0 -1
- package/cjs/series/mixin/line-mixin.js +1 -6
- package/cjs/series/mixin/line-mixin.js.map +1 -1
- package/cjs/series/pie/pie.d.ts +7 -3
- package/cjs/series/pie/pie.js +1 -16
- package/cjs/series/pie/pie.js.map +1 -1
- package/cjs/series/polar/progress-like/progress-like.d.ts +0 -2
- package/cjs/series/polar/progress-like/progress-like.js +1 -16
- package/cjs/series/polar/progress-like/progress-like.js.map +1 -1
- package/cjs/series/polar/rose-like/rose-like.d.ts +0 -2
- package/cjs/series/polar/rose-like/rose-like.js +1 -15
- package/cjs/series/polar/rose-like/rose-like.js.map +1 -1
- package/cjs/series/progress/circular/circular.d.ts +0 -2
- package/cjs/series/progress/circular/circular.js +1 -10
- package/cjs/series/progress/circular/circular.js.map +1 -1
- package/cjs/series/progress/linear/linear.d.ts +0 -2
- package/cjs/series/progress/linear/linear.js +1 -19
- package/cjs/series/progress/linear/linear.js.map +1 -1
- package/cjs/series/sankey/sankey.js +57 -67
- package/cjs/series/sankey/sankey.js.map +1 -1
- package/cjs/series/scatter/scatter.d.ts +0 -2
- package/cjs/series/scatter/scatter.js +1 -9
- package/cjs/series/scatter/scatter.js.map +1 -1
- package/cjs/series/treemap/treemap.js +20 -23
- package/cjs/series/treemap/treemap.js.map +1 -1
- package/cjs/series/venn/venn.js +2 -2
- package/cjs/series/venn/venn.js.map +1 -1
- package/cjs/series/waterfall/waterfall.d.ts +0 -2
- package/cjs/series/waterfall/waterfall.js +20 -36
- package/cjs/series/waterfall/waterfall.js.map +1 -1
- package/cjs/series/word-cloud/animation.js +0 -3
- package/cjs/series/word-cloud/animation.js.map +1 -1
- package/cjs/theme/builtin/common/series/word-cloud.js +6 -2
- package/cjs/theme/builtin/common/series/word-cloud.js.map +1 -1
- package/cjs/util/mark.js +3 -7
- package/cjs/util/mark.js.map +1 -1
- package/cjs/util/math.d.ts +1 -1
- package/cjs/util/math.js +2 -2
- package/cjs/util/math.js.map +1 -1
- package/cjs/util/text.js +2 -2
- package/cjs/util/text.js.map +1 -1
- package/esm/animation/callback-disappear.d.ts +1 -1
- package/esm/animation/callback-disappear.js +1 -1
- package/esm/animation/callback-disappear.js.map +1 -1
- package/esm/animation/config.js +1 -33
- package/esm/animation/config.js.map +1 -1
- package/esm/animation/index.js +1 -2
- package/esm/chart/base/base-chart-transformer.d.ts +0 -3
- package/esm/chart/base/base-chart-transformer.js +2 -24
- package/esm/chart/base/base-chart-transformer.js.map +1 -1
- package/esm/chart/base/base-chart.d.ts +9 -27
- package/esm/chart/base/base-chart.js +27 -202
- package/esm/chart/base/base-chart.js.map +1 -1
- package/esm/chart/gauge/gauge-transformer.js +2 -3
- package/esm/chart/gauge/gauge-transformer.js.map +1 -1
- package/esm/chart/interface/chart.d.ts +0 -1
- package/esm/chart/interface/chart.js.map +1 -1
- package/esm/chart/pie/base/pie-transformer.js +2 -2
- package/esm/chart/pie/base/pie-transformer.js.map +1 -1
- package/esm/chart/polar/polar-transformer.js +1 -1
- package/esm/chart/polar/polar-transformer.js.map +1 -1
- package/esm/chart/polar/progress-like/progress-like-transformer.js +1 -1
- package/esm/chart/polar/progress-like/progress-like-transformer.js.map +1 -1
- package/esm/chart/progress/circular/circular-progress-transformer.js +1 -2
- package/esm/chart/progress/circular/circular-progress-transformer.js.map +1 -1
- package/esm/chart/progress/linear/linear-progress-transformer.js +1 -1
- package/esm/chart/progress/linear/linear-progress-transformer.js.map +1 -1
- package/esm/chart/radar/radar-transformer.js +2 -3
- package/esm/chart/radar/radar-transformer.js.map +1 -1
- package/esm/chart/range-area/range-area-transformer.js +2 -2
- package/esm/chart/range-area/range-area-transformer.js.map +1 -1
- package/esm/chart/rose/rose-transformer.js +1 -2
- package/esm/chart/rose/rose-transformer.js.map +1 -1
- package/esm/chart/util.d.ts +1 -4
- package/esm/chart/util.js +1 -34
- package/esm/chart/util.js.map +1 -1
- package/esm/chart/waterfall/waterfall-transformer.js +1 -2
- package/esm/chart/waterfall/waterfall-transformer.js.map +1 -1
- package/esm/compile/compiler.d.ts +0 -2
- package/esm/compile/compiler.js +47 -69
- package/esm/compile/compiler.js.map +1 -1
- package/esm/compile/data/compilable-data.d.ts +1 -1
- package/esm/compile/data/compilable-data.js +1 -1
- package/esm/compile/data/compilable-data.js.map +1 -1
- package/esm/compile/grammar-item.d.ts +1 -1
- package/esm/compile/grammar-item.js.map +1 -1
- package/esm/compile/interface/compilable-item.d.ts +1 -1
- package/esm/compile/interface/compilable-item.js.map +1 -1
- package/esm/compile/interface/compiler.d.ts +1 -2
- package/esm/compile/interface/compiler.js.map +1 -1
- package/esm/compile/morph.js +3 -2
- package/esm/compile/morph.js.map +1 -1
- package/esm/component/axis/base-axis.d.ts +8 -3
- package/esm/component/axis/base-axis.js +6 -27
- package/esm/component/axis/base-axis.js.map +1 -1
- package/esm/component/axis/cartesian/band-axis.d.ts +7 -1
- package/esm/component/axis/cartesian/band-axis.js +2 -4
- package/esm/component/axis/cartesian/band-axis.js.map +1 -1
- package/esm/component/axis/cartesian/linear-axis.d.ts +1 -1
- package/esm/component/axis/cartesian/linear-axis.js +1 -5
- package/esm/component/axis/cartesian/linear-axis.js.map +1 -1
- package/esm/component/axis/mixin/linear-axis-mixin.js +10 -7
- package/esm/component/axis/mixin/linear-axis-mixin.js.map +1 -1
- package/esm/component/axis/polar/band-axis.d.ts +0 -2
- package/esm/component/axis/polar/band-axis.js +0 -3
- package/esm/component/axis/polar/band-axis.js.map +1 -1
- package/esm/component/axis/polar/linear-axis.js +0 -3
- package/esm/component/axis/polar/linear-axis.js.map +1 -1
- package/esm/component/base/base-component.d.ts +7 -7
- package/esm/component/base/base-component.js +5 -41
- package/esm/component/base/base-component.js.map +1 -1
- package/esm/component/brush/brush.d.ts +7 -3
- package/esm/component/brush/brush.js +11 -29
- package/esm/component/brush/brush.js.map +1 -1
- package/esm/component/crosshair/base.d.ts +8 -5
- package/esm/component/crosshair/base.js +3 -27
- package/esm/component/crosshair/base.js.map +1 -1
- package/esm/component/crosshair/cartesian.js +1 -3
- package/esm/component/crosshair/cartesian.js.map +1 -1
- package/esm/component/custom-mark/custom-mark.d.ts +7 -4
- package/esm/component/custom-mark/custom-mark.js +2 -27
- package/esm/component/custom-mark/custom-mark.js.map +1 -1
- package/esm/component/data-zoom/data-filter-base-component.d.ts +7 -3
- package/esm/component/data-zoom/data-filter-base-component.js +2 -14
- package/esm/component/data-zoom/data-filter-base-component.js.map +1 -1
- package/esm/component/data-zoom/data-zoom/data-zoom.d.ts +0 -1
- package/esm/component/data-zoom/data-zoom/data-zoom.js +0 -20
- package/esm/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
- package/esm/component/data-zoom/scroll-bar/scroll-bar.d.ts +0 -1
- package/esm/component/data-zoom/scroll-bar/scroll-bar.js +1 -12
- package/esm/component/data-zoom/scroll-bar/scroll-bar.js.map +1 -1
- package/esm/component/geo/geo-coordinate.d.ts +7 -1
- package/esm/component/indicator/indicator.d.ts +0 -1
- package/esm/component/indicator/indicator.js +2 -11
- package/esm/component/indicator/indicator.js.map +1 -1
- package/esm/component/indicator/util.d.ts +3 -4
- package/esm/component/indicator/util.js +2 -2
- package/esm/component/indicator/util.js.map +1 -1
- package/esm/component/label/base-label.d.ts +7 -1
- package/esm/component/label/base-label.js +1 -5
- package/esm/component/label/base-label.js.map +1 -1
- package/esm/component/label/label.js +2 -2
- package/esm/component/label/label.js.map +1 -1
- package/esm/component/legend/base-legend.d.ts +7 -2
- package/esm/component/legend/base-legend.js +2 -20
- package/esm/component/legend/base-legend.js.map +1 -1
- package/esm/component/legend/discrete/legend.d.ts +1 -1
- package/esm/component/legend/discrete/legend.js +2 -2
- package/esm/component/legend/discrete/legend.js.map +1 -1
- package/esm/component/marker/base-marker.d.ts +7 -14
- package/esm/component/marker/base-marker.js +11 -113
- package/esm/component/marker/base-marker.js.map +1 -1
- package/esm/component/marker/mark-area/cartesian-mark-area.js +3 -3
- package/esm/component/marker/mark-area/cartesian-mark-area.js.map +1 -1
- package/esm/component/marker/mark-area/polar-mark-area.js +2 -2
- package/esm/component/marker/mark-area/polar-mark-area.js.map +1 -1
- package/esm/component/marker/mark-line/base-mark-line.js +4 -2
- package/esm/component/marker/mark-line/base-mark-line.js.map +1 -1
- package/esm/component/marker/mark-line/cartesian-mark-line.js +2 -2
- package/esm/component/marker/mark-line/cartesian-mark-line.js.map +1 -1
- package/esm/component/marker/mark-line/polar-mark-line.js +2 -2
- package/esm/component/marker/mark-line/polar-mark-line.js.map +1 -1
- package/esm/component/marker/mark-point/base-mark-point.js +11 -24
- package/esm/component/marker/mark-point/base-mark-point.js.map +1 -1
- package/esm/component/marker/mark-point/cartesian-mark-point.js +1 -1
- package/esm/component/marker/mark-point/cartesian-mark-point.js.map +1 -1
- package/esm/component/marker/mark-point/polar-mark-point.js +1 -1
- package/esm/component/marker/mark-point/polar-mark-point.js.map +1 -1
- package/esm/component/marker/utils.d.ts +4 -4
- package/esm/component/marker/utils.js +23 -27
- package/esm/component/marker/utils.js.map +1 -1
- package/esm/component/player/player.d.ts +0 -1
- package/esm/component/player/player.js +0 -10
- package/esm/component/player/player.js.map +1 -1
- package/esm/component/title/title.d.ts +7 -1
- package/esm/component/title/title.js +2 -6
- package/esm/component/title/title.js.map +1 -1
- package/esm/component/tooltip/tooltip.d.ts +0 -1
- package/esm/component/tooltip/tooltip.js +1 -9
- package/esm/component/tooltip/tooltip.js.map +1 -1
- package/esm/component/util.js +1 -2
- package/esm/constant/correlation.js +2 -1
- package/esm/constant/marker.js +1 -1
- package/esm/constant/polar.js +1 -1
- package/esm/constant/scatter.js +1 -1
- package/esm/constant/scroll-bar.js +1 -2
- package/esm/constant/sunburst.js +1 -1
- package/esm/constant/waterfall.js +1 -1
- package/esm/constant/word-cloud.js +1 -1
- package/esm/core/expression-function.js +2 -1
- package/esm/core/index.d.ts +1 -2
- package/esm/core/index.js +1 -3
- package/esm/core/index.js.map +1 -1
- package/esm/core/interface.js +1 -1
- package/esm/core/util.js +1 -1
- package/esm/core/vchart.d.ts +1 -5
- package/esm/core/vchart.js +21 -39
- package/esm/core/vchart.js.map +1 -1
- package/esm/data/transforms/box-plot.d.ts +1 -4
- package/esm/data/transforms/box-plot.js +4 -4
- package/esm/data/transforms/box-plot.js.map +1 -1
- package/esm/data/transforms/correlation-center.d.ts +4 -11
- package/esm/data/transforms/correlation-center.js +2 -4
- package/esm/data/transforms/correlation-center.js.map +1 -1
- package/esm/data/transforms/correlation.d.ts +15 -18
- package/esm/data/transforms/correlation.js +8 -13
- package/esm/data/transforms/correlation.js.map +1 -1
- package/esm/data/transforms/funnel.d.ts +8 -10
- package/esm/data/transforms/funnel.js +3 -5
- package/esm/data/transforms/funnel.js.map +1 -1
- package/esm/data/transforms/lookup.d.ts +3 -3
- package/esm/data/transforms/lookup.js +6 -12
- package/esm/data/transforms/lookup.js.map +1 -1
- package/esm/data/transforms/map.d.ts +2 -8
- package/esm/data/transforms/map.js +6 -11
- package/esm/data/transforms/map.js.map +1 -1
- package/esm/data/transforms/sankey.d.ts +4 -12
- package/esm/data/transforms/sankey.js +14 -19
- package/esm/data/transforms/sankey.js.map +1 -1
- package/esm/data/transforms/stack-split.d.ts +1 -2
- package/esm/data/transforms/stack-split.js +2 -2
- package/esm/data/transforms/stack-split.js.map +1 -1
- package/esm/data/transforms/treemap.d.ts +3 -5
- package/esm/data/transforms/treemap.js +5 -8
- package/esm/data/transforms/treemap.js.map +1 -1
- package/esm/data/transforms/venn.d.ts +2 -4
- package/esm/data/transforms/venn.js +3 -5
- package/esm/data/transforms/venn.js.map +1 -1
- package/esm/data/transforms/waterfall.d.ts +2 -4
- package/esm/data/transforms/waterfall.js +8 -7
- package/esm/data/transforms/waterfall.js.map +1 -1
- package/esm/env/env.js +2 -2
- package/esm/env/env.js.map +1 -1
- package/esm/env/index.js +1 -1
- package/esm/event/event.d.ts +0 -4
- package/esm/event/event.js +7 -26
- package/esm/event/event.js.map +1 -1
- package/esm/interaction/interaction.js +8 -10
- package/esm/interaction/interaction.js.map +1 -1
- package/esm/interaction/triggers/element-active-by-legend.js +1 -3
- package/esm/interaction/triggers/element-active-by-legend.js.map +1 -1
- package/esm/interaction/triggers/element-active.js +2 -4
- package/esm/interaction/triggers/element-active.js.map +1 -1
- package/esm/interaction/triggers/element-highlight-by-group.js +1 -4
- package/esm/interaction/triggers/element-highlight-by-group.js.map +1 -1
- package/esm/interaction/triggers/element-highlight-by-legend.js +1 -3
- package/esm/interaction/triggers/element-highlight-by-legend.js.map +1 -1
- package/esm/interaction/triggers/element-highlight-by-name.js +1 -3
- package/esm/interaction/triggers/element-highlight-by-name.js.map +1 -1
- package/esm/interaction/triggers/element-highlight.js +1 -3
- package/esm/interaction/triggers/element-highlight.js.map +1 -1
- package/esm/interaction/triggers/element-select.js +2 -4
- package/esm/interaction/triggers/element-select.js.map +1 -1
- package/esm/mark/arc.js +2 -4
- package/esm/mark/arc.js.map +1 -1
- package/esm/mark/area.js +2 -6
- package/esm/mark/area.js.map +1 -1
- package/esm/mark/base/base-mark.d.ts +2 -12
- package/esm/mark/base/base-mark.js +28 -99
- package/esm/mark/base/base-mark.js.map +1 -1
- package/esm/mark/component.d.ts +0 -9
- package/esm/mark/component.js +2 -51
- package/esm/mark/component.js.map +1 -1
- package/esm/mark/glyph.js +1 -1
- package/esm/mark/glyph.js.map +1 -1
- package/esm/mark/group.js +5 -6
- package/esm/mark/group.js.map +1 -1
- package/esm/mark/interface/common.js.map +1 -1
- package/esm/mark/interface/mark.d.ts +0 -2
- package/esm/mark/interface/mark.js.map +1 -1
- package/esm/mark/line.js +2 -6
- package/esm/mark/line.js.map +1 -1
- package/esm/mark/rect.js +2 -4
- package/esm/mark/rect.js.map +1 -1
- package/esm/mark/symbol.js +2 -4
- package/esm/mark/symbol.js.map +1 -1
- package/esm/mark/text.js +1 -5
- package/esm/mark/text.js.map +1 -1
- package/esm/mark/utils/glyph.js +1 -3
- package/esm/mark/utils/glyph.js.map +1 -1
- package/esm/model/base-model.d.ts +15 -3
- package/esm/model/base-model.js.map +1 -1
- package/esm/model/interface.d.ts +0 -13
- package/esm/model/interface.js.map +1 -1
- package/esm/plugin/components/axis-sync/tick-align-transform.js +1 -1
- package/esm/plugin/components/axis-sync/tick-align-transform.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/canvas-tooltip-handler.d.ts +2 -2
- package/esm/plugin/components/tooltip-handler/canvas-tooltip-handler.js +1 -1
- package/esm/plugin/components/tooltip-handler/canvas-tooltip-handler.js.map +1 -1
- package/esm/plugin/other.js +2 -2
- package/esm/plugin/other.js.map +1 -1
- package/esm/region/region.d.ts +7 -1
- package/esm/scale/color-ordinal-scale.d.ts +0 -1
- package/esm/scale/color-ordinal-scale.js +0 -3
- package/esm/scale/color-ordinal-scale.js.map +1 -1
- package/esm/scale/global-scale.js +1 -9
- package/esm/scale/global-scale.js.map +1 -1
- package/esm/series/area/area.d.ts +0 -2
- package/esm/series/area/area.js +1 -7
- package/esm/series/area/area.js.map +1 -1
- package/esm/series/bar/bar.d.ts +0 -3
- package/esm/series/bar/bar.js +4 -30
- package/esm/series/bar/bar.js.map +1 -1
- package/esm/series/base/base-series.d.ts +7 -11
- package/esm/series/base/base-series.js +21 -89
- package/esm/series/base/base-series.js.map +1 -1
- package/esm/series/base/constant.d.ts +0 -3
- package/esm/series/base/constant.js +0 -10
- package/esm/series/base/constant.js.map +1 -1
- package/esm/series/box-plot/box-plot.d.ts +0 -2
- package/esm/series/box-plot/box-plot.js +4 -15
- package/esm/series/box-plot/box-plot.js.map +1 -1
- package/esm/series/correlation/correlation.js +11 -13
- package/esm/series/correlation/correlation.js.map +1 -1
- package/esm/series/dot/dot.d.ts +0 -12
- package/esm/series/dot/dot.js +0 -17
- package/esm/series/dot/dot.js.map +1 -1
- package/esm/series/funnel/funnel.js +8 -5
- package/esm/series/funnel/funnel.js.map +1 -1
- package/esm/series/heatmap/heatmap.d.ts +0 -2
- package/esm/series/heatmap/heatmap.js +0 -10
- package/esm/series/heatmap/heatmap.js.map +1 -1
- package/esm/series/line/line.d.ts +0 -2
- package/esm/series/line/line.js +2 -10
- package/esm/series/line/line.js.map +1 -1
- package/esm/series/map/map.js +3 -3
- package/esm/series/map/map.js.map +1 -1
- package/esm/series/mixin/line-mixin.d.ts +0 -1
- package/esm/series/mixin/line-mixin.js +0 -5
- package/esm/series/mixin/line-mixin.js.map +1 -1
- package/esm/series/pie/pie.d.ts +7 -3
- package/esm/series/pie/pie.js +0 -17
- package/esm/series/pie/pie.js.map +1 -1
- package/esm/series/polar/progress-like/progress-like.d.ts +0 -2
- package/esm/series/polar/progress-like/progress-like.js +0 -17
- package/esm/series/polar/progress-like/progress-like.js.map +1 -1
- package/esm/series/polar/rose-like/rose-like.d.ts +0 -2
- package/esm/series/polar/rose-like/rose-like.js +0 -16
- package/esm/series/polar/rose-like/rose-like.js.map +1 -1
- package/esm/series/progress/circular/circular.d.ts +0 -2
- package/esm/series/progress/circular/circular.js +0 -11
- package/esm/series/progress/circular/circular.js.map +1 -1
- package/esm/series/progress/linear/linear.d.ts +0 -2
- package/esm/series/progress/linear/linear.js +0 -20
- package/esm/series/progress/linear/linear.js.map +1 -1
- package/esm/series/sankey/sankey.js +54 -60
- package/esm/series/sankey/sankey.js.map +1 -1
- package/esm/series/scatter/scatter.d.ts +0 -2
- package/esm/series/scatter/scatter.js +0 -10
- package/esm/series/scatter/scatter.js.map +1 -1
- package/esm/series/treemap/treemap.js +20 -23
- package/esm/series/treemap/treemap.js.map +1 -1
- package/esm/series/venn/venn.js +2 -2
- package/esm/series/venn/venn.js.map +1 -1
- package/esm/series/waterfall/waterfall.d.ts +0 -2
- package/esm/series/waterfall/waterfall.js +20 -36
- package/esm/series/waterfall/waterfall.js.map +1 -1
- package/esm/series/word-cloud/animation.js +0 -3
- package/esm/series/word-cloud/animation.js.map +1 -1
- package/esm/theme/builtin/common/series/word-cloud.js +6 -2
- package/esm/theme/builtin/common/series/word-cloud.js.map +1 -1
- package/esm/util/mark.js +2 -8
- package/esm/util/mark.js.map +1 -1
- package/esm/util/math.d.ts +1 -1
- package/esm/util/math.js +1 -1
- package/esm/util/math.js.map +1 -1
- package/esm/util/text.js +1 -1
- package/esm/util/text.js.map +1 -1
- package/package.json +8 -11
- package/cjs/compile/stage-app.d.ts +0 -17
- package/cjs/compile/stage-app.js +0 -82
- package/cjs/compile/stage-app.js.map +0 -1
- package/cjs/component/base/release-vrender-component.d.ts +0 -10
- package/cjs/component/base/release-vrender-component.js +0 -37
- package/cjs/component/base/release-vrender-component.js.map +0 -1
- package/cjs/data/data-view-utils.d.ts +0 -5
- package/cjs/data/data-view-utils.js +0 -58
- package/cjs/data/data-view-utils.js.map +0 -1
- package/cjs/util/graphic-state.d.ts +0 -4
- package/cjs/util/graphic-state.js +0 -40
- package/cjs/util/graphic-state.js.map +0 -1
- package/cjs/vchart-line.d.ts +0 -4
- package/cjs/vchart-line.js +0 -35
- package/cjs/vchart-line.js.map +0 -1
- package/esm/compile/stage-app.d.ts +0 -17
- package/esm/compile/stage-app.js +0 -77
- package/esm/compile/stage-app.js.map +0 -1
- package/esm/component/base/release-vrender-component.d.ts +0 -10
- package/esm/component/base/release-vrender-component.js +0 -24
- package/esm/component/base/release-vrender-component.js.map +0 -1
- package/esm/data/data-view-utils.d.ts +0 -5
- package/esm/data/data-view-utils.js +0 -46
- package/esm/data/data-view-utils.js.map +0 -1
- package/esm/util/graphic-state.d.ts +0 -4
- package/esm/util/graphic-state.js +0 -30
- package/esm/util/graphic-state.js.map +0 -1
- package/esm/vchart-line.d.ts +0 -4
- package/esm/vchart-line.js +0 -28
- package/esm/vchart-line.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/data/transforms/stack-split.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"sources":["../src/data/transforms/stack-split.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAQzC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAqB,EAAE,EAAgB,EAAE,EAAE;IACpE,MAAM,MAAM,GAAqB;QAC/B,KAAK,EAAE,EAAE;KACV,CAAC;IACF,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IACtB,IAAI,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,CAAA,EAAE;QACnB,OAAO,MAAM,CAAC;KACf;IACD,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IACzC,IAAI,IAAI,GAAyB,MAAM,CAAC;IACxC,IAAI,QAA8B,CAAC;IACnC,IAAI,IAA0B,CAAC;IAC/B,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;QAChB,EAAE,CAAC,UAAU;YACX,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAQ,EAAE,EAAE;gBACjC,IAAI,GAAG,MAAM,CAAC;gBACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACtC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;oBACpB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBAChB,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE;wBACb,MAAM;qBACP;oBACD,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;oBACpB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;wBACnB,IAAI,CAAC,KAAK,cAAc,EAAE;4BACxB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;yBACjC;6BAAM;4BACL,QAAQ,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;4BACzB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;yBAC3B;qBACF;oBACD,IAAI,CAAC,KAAK,cAAc,EAAE;wBACxB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAyB,CAAC;wBAC9C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;qBACrB;yBAAM;wBACL,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAyB,CAAC;qBAC/C;iBACF;YACH,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC","file":"stack-split.js","sourcesContent":["import type { ISeriesStackData, ISeriesStackDataLeaf, ISeriesStackDataNode } from '../../series/interface';\nimport { isNil } from '@visactor/vutils';\nimport type { DataView } from '@visactor/vdataset';\nimport type { Datum } from '../../typings';\n\nexport interface IStackOption {\n fields: string[];\n}\n\nexport const stackSplit = (data: Array<DataView>, op: IStackOption) => {\n const result: ISeriesStackData = {\n nodes: {}\n };\n const { fields } = op;\n if (!fields?.length) {\n return result;\n }\n const lastFieldIndex = fields.length - 1;\n let temp: ISeriesStackDataNode = result;\n let nextNode: ISeriesStackDataNode;\n let leaf: ISeriesStackDataLeaf;\n data.forEach(dv => {\n dv.latestData &&\n dv.latestData.forEach((d: Datum) => {\n temp = result;\n for (let i = 0; i < fields.length; i++) {\n const f = fields[i];\n const fV = d[f];\n if (isNil(fV)) {\n break;\n }\n temp.groupField = f;\n if (!temp.nodes[fV]) {\n if (i === lastFieldIndex) {\n temp.nodes[fV] = { values: [] };\n } else {\n nextNode = { nodes: {} };\n temp.nodes[fV] = nextNode;\n }\n }\n if (i === lastFieldIndex) {\n leaf = temp.nodes[fV] as ISeriesStackDataLeaf;\n leaf.values.push(d);\n } else {\n temp = temp.nodes[fV] as ISeriesStackDataNode;\n }\n }\n });\n });\n return result;\n};\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import type { TreemapNodeElement, TreemapOptions } from '@visactor/vlayouts';
|
|
2
|
+
export declare const treemapLayout: (data: Array<any>, op: TreemapOptions & {
|
|
3
3
|
getViewBox: () => {
|
|
4
4
|
x0: number;
|
|
5
5
|
x1: number;
|
|
@@ -7,6 +7,4 @@ interface ITreemapLayoutOptions extends TreemapOptions {
|
|
|
7
7
|
y1: number;
|
|
8
8
|
};
|
|
9
9
|
nameField: string;
|
|
10
|
-
}
|
|
11
|
-
export declare const treemapLayout: (data: Array<Record<string, unknown>>, op: ITreemapLayoutOptions | (() => ITreemapLayoutOptions)) => TreemapNodeElement[];
|
|
12
|
-
export {};
|
|
10
|
+
}) => TreemapNodeElement[];
|
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
import { flattenNodes, TreemapLayout } from "@visactor/vlayouts";
|
|
2
2
|
|
|
3
|
-
import { isFunction } from "@visactor/vutils";
|
|
4
|
-
|
|
5
3
|
import { DEFAULT_HIERARCHY_ROOT } from "../../constant/hierarchy";
|
|
6
4
|
|
|
7
5
|
export const treemapLayout = (data, op) => {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const res = new TreemapLayout(options).layout(data, viewBox), nodes = [];
|
|
6
|
+
if (op.getViewBox()) {
|
|
7
|
+
const res = new TreemapLayout(op).layout(data, op.getViewBox()), nodes = [];
|
|
11
8
|
return flattenNodes(res, nodes, {
|
|
12
|
-
maxDepth: null ==
|
|
13
|
-
}), nodes.forEach((datum => {
|
|
9
|
+
maxDepth: null == op ? void 0 : op.maxDepth
|
|
10
|
+
}), nodes.forEach(((datum, i) => {
|
|
14
11
|
datum && [ DEFAULT_HIERARCHY_ROOT, "name" ].forEach((key => {
|
|
15
|
-
datum[key] = datum.datum[datum.depth][
|
|
12
|
+
datum[key] = datum.datum[datum.depth][op.nameField];
|
|
16
13
|
}));
|
|
17
14
|
})), nodes;
|
|
18
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/data/transforms/treemap.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/data/transforms/treemap.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,IAAgB,EAChB,EAQC,EACD,EAAE;IACF,MAAM,OAAO,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;IAEhC,IAAI,OAAO,EAAE;QACX,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,EAAE,CAAC,CAAC;QACrC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;QAEjD,MAAM,KAAK,GAAyB,EAAE,CAAC;QACvC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,QAAQ,EAAE,CAAC,CAAC;QAErD,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YACzB,IAAI,KAAK,EAAE;gBACT,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;oBAC5C,KAAa,CAAC,GAAG,CAAC,GAAI,KAAa,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;gBACxE,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC;KACd;IAED,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC","file":"treemap.js","sourcesContent":["import type { TreemapNodeElement, TreemapOptions } from '@visactor/vlayouts';\nimport { flattenNodes, TreemapLayout } from '@visactor/vlayouts';\nimport { DEFAULT_HIERARCHY_ROOT } from '../../constant/hierarchy';\n\nexport const treemapLayout = (\n data: Array<any>,\n op: TreemapOptions & {\n getViewBox: () => {\n x0: number;\n x1: number;\n y0: number;\n y1: number;\n };\n nameField: string;\n }\n) => {\n const viewBox = op.getViewBox();\n\n if (viewBox) {\n const layout = new TreemapLayout(op);\n const res = layout.layout(data, op.getViewBox());\n\n const nodes: TreemapNodeElement[] = [];\n flattenNodes(res, nodes, { maxDepth: op?.maxDepth });\n\n nodes.forEach((datum, i) => {\n if (datum) {\n [DEFAULT_HIERARCHY_ROOT, 'name'].forEach(key => {\n (datum as any)[key] = (datum as any).datum[datum.depth][op.nameField];\n });\n }\n });\n\n return nodes;\n }\n\n return [];\n};\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
export declare const vennLayout: (data: Array<any>, op: {
|
|
2
2
|
setField: string;
|
|
3
3
|
valueField: string;
|
|
4
4
|
getViewBox: () => {
|
|
@@ -7,6 +7,4 @@ interface IVennLayoutOptions {
|
|
|
7
7
|
y0: number;
|
|
8
8
|
y1: number;
|
|
9
9
|
};
|
|
10
|
-
}
|
|
11
|
-
export declare const vennLayout: (data: Array<Record<string, unknown>>, op: IVennLayoutOptions | (() => IVennLayoutOptions)) => (import("@visactor/vlayouts").IVennCircleDatum<any> | import("@visactor/vlayouts").IVennOverlapDatum<any>)[];
|
|
12
|
-
export {};
|
|
10
|
+
}) => (import("@visactor/vlayouts").IVennCircleDatum<any> | import("@visactor/vlayouts").IVennOverlapDatum<any>)[];
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import { vennTransform } from "@visactor/vlayouts";
|
|
2
2
|
|
|
3
|
-
import { isFunction } from "@visactor/vutils";
|
|
4
|
-
|
|
5
3
|
export const vennLayout = (data, op) => {
|
|
6
|
-
const
|
|
4
|
+
const viewBox = op.getViewBox();
|
|
7
5
|
return viewBox && (null == data ? void 0 : data.length) ? vennTransform(Object.assign({
|
|
8
|
-
setField:
|
|
9
|
-
valueField:
|
|
6
|
+
setField: op.setField,
|
|
7
|
+
valueField: op.valueField
|
|
10
8
|
}, viewBox), data) : [];
|
|
11
9
|
};
|
|
12
10
|
//# sourceMappingURL=venn.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/data/transforms/venn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"sources":["../src/data/transforms/venn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,IAAgB,EAChB,EASC,EACD,EAAE;IACF,MAAM,OAAO,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;IAEhC,IAAI,OAAO,KAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAA,EAAE;QAC3B,OAAO,aAAa,iBAEhB,QAAQ,EAAE,EAAE,CAAC,QAAQ,EACrB,UAAU,EAAE,EAAE,CAAC,UAAU,IACtB,OAAO,GAEZ,IAAI,CACL,CAAC;KACH;IAED,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC","file":"venn.js","sourcesContent":["import { vennTransform } from '@visactor/vlayouts';\n\nexport const vennLayout = (\n data: Array<any>,\n op: {\n setField: string;\n valueField: string;\n getViewBox: () => {\n x0: number;\n x1: number;\n y0: number;\n y1: number;\n };\n }\n) => {\n const viewBox = op.getViewBox();\n\n if (viewBox && data?.length) {\n return vennTransform(\n {\n setField: op.setField,\n valueField: op.valueField,\n ...viewBox\n },\n data\n );\n }\n\n return [];\n};\n"]}
|
|
@@ -17,8 +17,7 @@ export interface IWaterfallOpt {
|
|
|
17
17
|
stackInverse: boolean;
|
|
18
18
|
groupData: () => DataView;
|
|
19
19
|
}
|
|
20
|
-
export
|
|
21
|
-
export declare const waterfall: (lastData: Array<Datum>, op: WaterfallOption) => Datum[];
|
|
20
|
+
export declare const waterfall: (lastData: Array<Datum>, op: IWaterfallOpt) => Datum[];
|
|
22
21
|
export interface IWaterfallFillEndOpt {
|
|
23
22
|
indexField: string;
|
|
24
23
|
valueField: string;
|
|
@@ -26,5 +25,4 @@ export interface IWaterfallFillEndOpt {
|
|
|
26
25
|
total: IWaterfallSeriesSpec['total'];
|
|
27
26
|
calculationMode: IWaterfallSeriesSpec['calculationMode'];
|
|
28
27
|
}
|
|
29
|
-
export
|
|
30
|
-
export declare const waterfallFillTotal: (data: Array<Datum>, op: WaterfallFillEndOption) => Datum[];
|
|
28
|
+
export declare const waterfallFillTotal: (data: Array<Datum>, op: IWaterfallFillEndOpt) => Datum[];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isNil, precisionAdd, precisionSub } from "@visactor/vutils";
|
|
2
2
|
|
|
3
3
|
import { WaterfallDefaultSeriesField } from "../../constant/waterfall";
|
|
4
4
|
|
|
@@ -8,7 +8,7 @@ import { STACK_FIELD_TOTAL_TOP } from "../../constant/data";
|
|
|
8
8
|
|
|
9
9
|
export const waterfall = (lastData, op) => {
|
|
10
10
|
if (!lastData || 0 === lastData.length) return lastData;
|
|
11
|
-
const
|
|
11
|
+
const {indexField: indexField, total: totalSpec, groupData: groupData, calculationMode: calculationMode} = op, totalData = [], {dimensionValues: dimensionValues, dimensionData: dimensionData} = groupData().latestData;
|
|
12
12
|
let indexValues = Array.from(dimensionValues[indexField]);
|
|
13
13
|
"decrease" === calculationMode && (indexValues = indexValues.reverse());
|
|
14
14
|
let temp = {
|
|
@@ -28,7 +28,7 @@ export const waterfall = (lastData, op) => {
|
|
|
28
28
|
isTotal: !1,
|
|
29
29
|
positive: temp.end,
|
|
30
30
|
negative: temp.end
|
|
31
|
-
}, indexData = !0 ===
|
|
31
|
+
}, indexData = !0 === op.stackInverse ? dimensionData[key].reverse() : dimensionData[key];
|
|
32
32
|
if (null == indexData || indexData.forEach(((d, i) => {
|
|
33
33
|
i === indexData.length - 1 ? d[STACK_FIELD_TOTAL_TOP] = !0 : delete d[STACK_FIELD_TOTAL_TOP];
|
|
34
34
|
})), indexData.length > 1) {
|
|
@@ -40,10 +40,10 @@ export const waterfall = (lastData, op) => {
|
|
|
40
40
|
} else if (index === indexValues.length - 1) return !0;
|
|
41
41
|
return !1;
|
|
42
42
|
};
|
|
43
|
-
if (indexData.some((d => isTotalCheck(d)))) return temp = computeTotalWithMultipleData(indexData, key, total, totalData, temp, indexValues, index,
|
|
43
|
+
if (indexData.some((d => isTotalCheck(d)))) return temp = computeTotalWithMultipleData(indexData, key, total, totalData, temp, indexValues, index, op, isTotalCheck),
|
|
44
44
|
void totalData.push(total);
|
|
45
45
|
}
|
|
46
|
-
temp = computeNormalData(indexData, key, total, totalData, temp, indexValues, index,
|
|
46
|
+
temp = computeNormalData(indexData, key, total, totalData, temp, indexValues, index, op),
|
|
47
47
|
totalData.push(total);
|
|
48
48
|
})), totalData;
|
|
49
49
|
};
|
|
@@ -156,10 +156,11 @@ function getTotalInField(d, total, totalSpec) {
|
|
|
156
156
|
|
|
157
157
|
export const waterfallFillTotal = (data, op) => {
|
|
158
158
|
if (!data) return data;
|
|
159
|
-
const {indexField: indexField, valueField: valueField, total: total, seriesField: seriesField, calculationMode: calculationMode} =
|
|
159
|
+
const {indexField: indexField, valueField: valueField, total: total, seriesField: seriesField, calculationMode: calculationMode} = op, totalData = {
|
|
160
160
|
[indexField]: (null == total ? void 0 : total.text) || "total",
|
|
161
161
|
[valueField]: data.reduce(((pre, cur) => precisionAdd(pre, +cur[valueField])), 0)
|
|
162
162
|
};
|
|
163
|
-
return seriesField && (totalData[seriesField] = "total"), "decrease" === calculationMode ?
|
|
163
|
+
return seriesField && (totalData[seriesField] = "total"), "decrease" === calculationMode ? data.unshift(totalData) : data.push(totalData),
|
|
164
|
+
data;
|
|
164
165
|
};
|
|
165
166
|
//# sourceMappingURL=waterfall.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/data/transforms/waterfall.ts"],"names":[],"mappings":"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","file":"waterfall.js","sourcesContent":["import { isFunction, isNil, precisionAdd, precisionSub } from '@visactor/vutils';\n\nimport type { DataView } from '@visactor/vdataset';\nimport type {\n IWaterfallSeriesSpec,\n IWaterfallTotalCustom,\n IWaterfallTotalField\n} from '../../series/waterfall/interface';\nimport type { Datum } from '../../typings';\nimport { WaterfallDefaultSeriesField } from '../../constant/waterfall';\nimport { warn } from '../../util/debug';\nimport { STACK_FIELD_TOTAL_TOP } from '../../constant/data';\n\ntype TotalInfo = {\n start: number;\n end: number;\n lastIndex: string;\n lastEnd: number;\n index: string;\n isTotal: boolean;\n positive: number;\n negative: number;\n};\n\nexport interface IWaterfallOpt {\n indexField: string;\n valueField: string;\n seriesField?: string;\n startAs: string;\n endAs: string;\n total: IWaterfallSeriesSpec['total'];\n calculationMode: 'increase' | 'decrease';\n\n seriesFieldName: {\n total: string;\n increase: string;\n decrease: string;\n };\n stackInverse: boolean;\n groupData: () => DataView;\n}\n\nexport type WaterfallOption = IWaterfallOpt | (() => IWaterfallOpt);\n\nexport const waterfall = (lastData: Array<Datum>, op: WaterfallOption) => {\n if (!lastData || lastData.length === 0) {\n return lastData;\n }\n const options = isFunction(op) ? op() : op;\n const { indexField, total: totalSpec, groupData, calculationMode } = options;\n const totalData: {\n start: number;\n end: number;\n lastIndex: string;\n lastEnd: number;\n index: string;\n isTotal: boolean;\n positive: number;\n negative: number;\n }[] = [];\n const { dimensionValues, dimensionData } = groupData().latestData as {\n dimensionValues: { [key in string]: Set<string> };\n dimensionData: { [key in string]: Datum[] };\n };\n let indexValues = Array.from(dimensionValues[indexField]);\n if (calculationMode === 'decrease') {\n indexValues = indexValues.reverse();\n }\n // 上一次的计算结果\n let temp: { start: number; end: number; lastIndex: string; positive: number; negative: number } = {\n start: 0,\n end: 0,\n positive: 0,\n negative: 0,\n lastIndex: null\n };\n indexValues.forEach((key, index) => {\n const total = {\n start: temp.end,\n end: temp.end,\n lastIndex: temp.lastIndex,\n lastEnd: temp.end,\n index: key,\n isTotal: false,\n positive: temp.end,\n negative: temp.end\n };\n\n const indexData = options.stackInverse === true ? dimensionData[key].reverse() : dimensionData[key];\n indexData?.forEach((d, i) => {\n if (i === indexData.length - 1) {\n d[STACK_FIELD_TOTAL_TOP] = true;\n } else {\n delete d[STACK_FIELD_TOTAL_TOP];\n }\n });\n // 1.9.5 新增能力\n // 当前 key 对应的数据中有一个总计数据,并且还有其他的分组数据时。总计的计算逻辑需要将总计值拆分\n if (indexData.length > 1) {\n const isTotalCheck = (d: Datum) => {\n if (!totalSpec || totalSpec.type === 'end') {\n if (index === indexValues.length - 1) {\n return true;\n }\n } else if (totalSpec.type === 'field' || totalSpec.type === 'custom') {\n const tag = d[totalSpec.tagField];\n return !!tag;\n }\n return false;\n };\n const isTotalTag = indexData.some(d => isTotalCheck(d));\n if (isTotalTag) {\n temp = computeTotalWithMultipleData(\n indexData,\n key,\n total,\n totalData,\n temp,\n indexValues,\n index,\n options,\n isTotalCheck\n );\n totalData.push(total);\n return;\n }\n }\n temp = computeNormalData(indexData, key, total, totalData, temp, indexValues, index, options);\n totalData.push(total);\n });\n return totalData;\n};\n\nfunction computeTotalWithMultipleData(\n indexData: Datum[],\n key: string,\n total: TotalInfo,\n totalData: TotalInfo[],\n temp: { start: number; end: number; lastIndex: string; positive: number; negative: number },\n indexValues: string[],\n index: number,\n op: IWaterfallOpt,\n isTotalCheck: (d: Datum) => boolean\n) {\n total.isTotal = true;\n const { valueField, startAs, endAs, total: totalSpec } = op;\n // 先将数据分为总计数据与常规数据\n const _normalTemp: Datum[] = [];\n const _totalTemp: Datum[] = [];\n // 将总计数据与常规数据进行分离\n indexData.forEach((d, index) => {\n if (isTotalCheck(d)) {\n // 总计数据后续要重新按照顺序计算 start end 信息,所以需要记录下当前的 index\n _totalTemp.push({ ...d, [`_vchart_waterfall_waterfall_temp`]: index });\n } else {\n _normalTemp.push(d);\n }\n });\n // 1. 不可能全都不是总计数据\n // 2. 如果全都是总计数据,让它们都是同一个值\n if (_totalTemp.length === indexData.length) {\n const result = computeNormalData([indexData[0]], key, total, totalData, temp, indexValues, index, op);\n _totalTemp.forEach(d => {\n d[startAs] = indexData[0][startAs];\n d[endAs] = indexData[0][endAs];\n d[valueField] = indexData[0][valueField];\n });\n return result;\n }\n\n // 3. 其他常规情况\n // 先获取当前的起始值/结束值应当是多少\n // 按照第一个总计数据的配置来决定\n const totalConfigData = _totalTemp[0];\n // 获取配置中的总计结果\n // eslint-disable-next-line prefer-const\n let { start, end } = getTotalStartEnd(totalConfigData, total, totalData, temp, totalSpec);\n total.start = start;\n total.end = end;\n let positive = start;\n let navigate = start;\n // 当前剩余的总计值\n let valueTemp = end - start;\n const tempTotalValue = _normalTemp.reduce((pre, cur) => precisionSub(pre, +cur[valueField]), valueTemp);\n // 模拟一组临时总计数据,用来堆叠\n _totalTemp.forEach(d => {\n const tempTotalData = {\n [startAs]: start,\n [endAs]: end,\n [valueField]: tempTotalValue\n };\n // 将临时总计插入 `_vchart_waterfall_waterfall_temp_${index}` 中\n _normalTemp.splice(d._vchart_waterfall_waterfall_temp, 0, tempTotalData);\n });\n // 将全部数据进行堆叠\n _normalTemp.forEach(d => {\n const value = +d[valueField];\n if (value >= 0) {\n d[startAs] = +positive;\n positive = precisionAdd(positive, value);\n } else {\n d[startAs] = +navigate;\n navigate = precisionAdd(navigate, value);\n }\n d[endAs] = precisionAdd(d[startAs], value);\n start = precisionAdd(start, value);\n valueTemp = precisionSub(valueTemp, value);\n });\n // 设置数据中的总计数据\n _totalTemp.forEach(_d => {\n const index = _d._vchart_waterfall_waterfall_temp;\n // 数据的堆积计算结果\n _d = _normalTemp[index];\n // 原始数据\n const d = indexData[index];\n d[startAs] = _d[startAs];\n d[endAs] = _d[endAs];\n d[valueField] = _d[valueField];\n });\n return { ...total, lastIndex: key };\n}\n\nfunction computeNormalData(\n indexData: Datum[],\n key: string,\n total: TotalInfo,\n totalData: TotalInfo[],\n temp: { start: number; end: number; lastIndex: string; positive: number; negative: number },\n indexValues: string[],\n index: number,\n op: IWaterfallOpt\n) {\n const { valueField, startAs, endAs, total: totalSpec, seriesField, seriesFieldName } = op;\n indexData.forEach(d => {\n let isTotalTag = false;\n if (!totalSpec || totalSpec.type === 'end') {\n if (index === indexValues.length - 1) {\n total.start = 0;\n d[startAs] = total.start;\n d[endAs] = total.end;\n isTotalTag = true;\n }\n } else if (totalSpec.type === 'field' || totalSpec.type === 'custom') {\n const tag = d[totalSpec.tagField];\n if (tag) {\n isTotalTag = true;\n const { start, end } = getTotalStartEnd(d, total, totalData, temp, totalSpec);\n d[startAs] = start;\n d[endAs] = end;\n d[valueField] = end - start;\n total.start = start;\n total.end = end;\n }\n }\n if (!isTotalTag) {\n const value = +d[valueField];\n // 区分正负值\n if (value >= 0) {\n d[startAs] = +total.positive;\n total.positive = precisionAdd(total.positive, value);\n } else {\n d[startAs] = +total.negative;\n total.negative = precisionAdd(total.negative, value);\n }\n d[endAs] = precisionAdd(d[startAs], value);\n total.end = precisionAdd(total.end, value);\n }\n total.isTotal = isTotalTag;\n\n if (isNil(seriesField) || seriesField === WaterfallDefaultSeriesField) {\n if (isTotalTag) {\n d[WaterfallDefaultSeriesField] = seriesFieldName.total;\n } else {\n d[WaterfallDefaultSeriesField] = +d[valueField] >= 0 ? seriesFieldName.increase : seriesFieldName.decrease;\n }\n }\n });\n return { ...total, lastIndex: key };\n}\n\nfunction getTotalStartEnd(\n d: Datum,\n total: TotalInfo,\n totalData: TotalInfo[],\n temp: { start: number; end: number; lastIndex: string; positive: number; negative: number },\n totalSpec: IWaterfallOpt['total']\n) {\n if (!totalSpec || totalSpec.type === 'end') {\n return getTotalInEndType(total);\n } else if (totalSpec.type === 'field' || totalSpec.type === 'custom') {\n if (totalSpec.type === 'custom') {\n return getTotalInCustomType(d, temp, totalSpec);\n }\n // 如果有设置count, valueField 和 startField 无效\n if (totalSpec.collectCountField && !isNil(d[totalSpec.collectCountField])) {\n return getTotalInCollectField(d, totalData, total, totalSpec);\n }\n return getTotalInField(d, total, totalSpec);\n }\n return { start: 0, end: 0 };\n}\n\nfunction getTotalInEndType(total: TotalInfo) {\n return { start: 0, end: total.end };\n}\n\nfunction getTotalInCustomType(\n d: Datum,\n temp: { start: number; end: number; lastIndex: string; positive: number; negative: number },\n totalSpec: IWaterfallOpt['total']\n) {\n return (<IWaterfallTotalCustom>totalSpec).product(d, temp);\n}\n\nfunction getTotalInCollectField(d: Datum, totalData: TotalInfo[], total: TotalInfo, totalSpec: IWaterfallTotalField) {\n let start = 0;\n let end = total.end;\n const startIndex = totalData.length - +d[totalSpec.collectCountField];\n const endIndex = totalData.length - 1;\n if (startIndex < 0) {\n warn('total.collectCountField error');\n } else {\n start = totalData[startIndex].start;\n }\n if (endIndex < 0) {\n warn('total.collectCountField error');\n } else {\n end = totalData[endIndex].end;\n }\n return { start, end };\n}\n\nfunction getTotalInField(d: Datum, total: TotalInfo, totalSpec: IWaterfallTotalField) {\n let start = 0;\n let end = total.end;\n if (totalSpec.startField && !isNil(d[totalSpec.startField])) {\n start = +d[totalSpec.startField];\n }\n if (totalSpec.valueField && !isNil(d[totalSpec.valueField])) {\n end = precisionAdd(start, +d[totalSpec.valueField]);\n }\n return { start, end };\n}\n\nexport interface IWaterfallFillEndOpt {\n indexField: string;\n valueField: string;\n seriesField?: string;\n total: IWaterfallSeriesSpec['total'];\n calculationMode: IWaterfallSeriesSpec['calculationMode'];\n}\n\nexport type WaterfallFillEndOption = IWaterfallFillEndOpt | (() => IWaterfallFillEndOpt);\n\nexport const waterfallFillTotal = (data: Array<Datum>, op: WaterfallFillEndOption) => {\n if (!data) {\n return data;\n }\n const { indexField, valueField, total, seriesField, calculationMode } = isFunction(op) ? op() : op;\n const totalData = {\n [indexField]: total?.text || 'total',\n [valueField]: data.reduce((pre, cur) => precisionAdd(pre, +cur[valueField]), 0)\n };\n if (seriesField) {\n totalData[seriesField] = 'total';\n }\n if (calculationMode === 'decrease') {\n return [totalData, ...data];\n }\n return [...data, totalData];\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/data/transforms/waterfall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AASrE,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AA+B5D,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,QAAsB,EAAE,EAAiB,EAAE,EAAE;IACrE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;QACtC,OAAO,QAAQ,CAAC;KACjB;IACD,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC;IACxE,MAAM,SAAS,GAST,EAAE,CAAC;IACT,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE,GAAG,SAAS,EAAE,CAAC,UAGtD,CAAC;IACF,IAAI,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;IAC1D,IAAI,eAAe,KAAK,UAAU,EAAE;QAClC,WAAW,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC;KACrC;IAED,IAAI,IAAI,GAA0F;QAChG,KAAK,EAAE,CAAC;QACR,GAAG,EAAE,CAAC;QACN,QAAQ,EAAE,CAAC;QACX,QAAQ,EAAE,CAAC;QACX,SAAS,EAAE,IAAI;KAChB,CAAC;IACF,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QACjC,MAAM,KAAK,GAAG;YACZ,KAAK,EAAE,IAAI,CAAC,GAAG;YACf,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,IAAI,CAAC,GAAG;YACjB,KAAK,EAAE,GAAG;YACV,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,IAAI,CAAC,GAAG;YAClB,QAAQ,EAAE,IAAI,CAAC,GAAG;SACnB,CAAC;QAEF,MAAM,SAAS,GAAG,EAAE,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC/F,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC1B,IAAI,CAAC,KAAK,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC9B,CAAC,CAAC,qBAAqB,CAAC,GAAG,IAAI,CAAC;aACjC;iBAAM;gBACL,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC;aACjC;QACH,CAAC,CAAC,CAAC;QAGH,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YACxB,MAAM,YAAY,GAAG,CAAC,CAAQ,EAAE,EAAE;gBAChC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,KAAK,EAAE;oBAC1C,IAAI,KAAK,KAAK,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;wBACpC,OAAO,IAAI,CAAC;qBACb;iBACF;qBAAM,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE;oBACpE,MAAM,GAAG,GAAG,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;oBAClC,OAAO,CAAC,CAAC,GAAG,CAAC;iBACd;gBACD,OAAO,KAAK,CAAC;YACf,CAAC,CAAC;YACF,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;YACxD,IAAI,UAAU,EAAE;gBACd,IAAI,GAAG,4BAA4B,CACjC,SAAS,EACT,GAAG,EACH,KAAK,EACL,SAAS,EACT,IAAI,EACJ,WAAW,EACX,KAAK,EACL,EAAE,EACF,YAAY,CACb,CAAC;gBACF,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACtB,OAAO;aACR;SACF;QACD,IAAI,GAAG,iBAAiB,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACzF,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IACH,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,SAAS,4BAA4B,CACnC,SAAkB,EAClB,GAAW,EACX,KAAgB,EAChB,SAAsB,EACtB,IAA2F,EAC3F,WAAqB,EACrB,KAAa,EACb,EAAiB,EACjB,YAAmC;IAEnC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;IAE5D,MAAM,WAAW,GAAY,EAAE,CAAC;IAChC,MAAM,UAAU,GAAY,EAAE,CAAC;IAE/B,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;QAC7B,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE;YAEnB,UAAU,CAAC,IAAI,iCAAM,CAAC,KAAE,CAAC,kCAAkC,CAAC,EAAE,KAAK,IAAG,CAAC;SACxE;aAAM;YACL,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACrB;IACH,CAAC,CAAC,CAAC;IAGH,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,EAAE;QAC1C,MAAM,MAAM,GAAG,iBAAiB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACtG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACrB,CAAC,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACnC,CAAC,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;KACf;IAKD,MAAM,eAAe,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAGtC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,gBAAgB,CAAC,eAAe,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IAC1F,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;IACpB,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;IAChB,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,IAAI,SAAS,GAAG,GAAG,GAAG,KAAK,CAAC;IAC5B,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAExG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACrB,MAAM,aAAa,GAAG;YACpB,CAAC,OAAO,CAAC,EAAE,KAAK;YAChB,CAAC,KAAK,CAAC,EAAE,GAAG;YACZ,CAAC,UAAU,CAAC,EAAE,cAAc;SAC7B,CAAC;QAEF,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,gCAAgC,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACtB,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QAC7B,IAAI,KAAK,IAAI,CAAC,EAAE;YACd,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;YACvB,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;SAC1C;aAAM;YACL,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;YACvB,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;SAC1C;QACD,CAAC,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;QAC3C,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACnC,SAAS,GAAG,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;QACtB,MAAM,KAAK,GAAG,EAAE,CAAC,gCAAgC,CAAC;QAElD,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QAExB,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IACH,uCAAY,KAAK,KAAE,SAAS,EAAE,GAAG,IAAG;AACtC,CAAC;AAED,SAAS,iBAAiB,CACxB,SAAkB,EAClB,GAAW,EACX,KAAgB,EAChB,SAAsB,EACtB,IAA2F,EAC3F,WAAqB,EACrB,KAAa,EACb,EAAiB;IAEjB,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC;IAC1F,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACpB,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,KAAK,EAAE;YAC1C,IAAI,KAAK,KAAK,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;gBACpC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;gBAChB,CAAC,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;gBACzB,CAAC,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC;gBACrB,UAAU,GAAG,IAAI,CAAC;aACnB;SACF;aAAM,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE;YACpE,MAAM,GAAG,GAAG,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAClC,IAAI,GAAG,EAAE;gBACP,UAAU,GAAG,IAAI,CAAC;gBAClB,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;gBAC9E,CAAC,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;gBACnB,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;gBACf,CAAC,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC;gBAC5B,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;gBACpB,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;aACjB;SACF;QACD,IAAI,CAAC,UAAU,EAAE;YACf,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YAE7B,IAAI,KAAK,IAAI,CAAC,EAAE;gBACd,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;gBAC7B,KAAK,CAAC,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;aACtD;iBAAM;gBACL,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;gBAC7B,KAAK,CAAC,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;aACtD;YACD,CAAC,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;YAC3C,KAAK,CAAC,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;SAC5C;QACD,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC;QAE3B,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,WAAW,KAAK,2BAA2B,EAAE;YACrE,IAAI,UAAU,EAAE;gBACd,CAAC,CAAC,2BAA2B,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC;aACxD;iBAAM;gBACL,CAAC,CAAC,2BAA2B,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC;aAC5G;SACF;IACH,CAAC,CAAC,CAAC;IACH,uCAAY,KAAK,KAAE,SAAS,EAAE,GAAG,IAAG;AACtC,CAAC;AAED,SAAS,gBAAgB,CACvB,CAAQ,EACR,KAAgB,EAChB,SAAsB,EACtB,IAA2F,EAC3F,SAAiC;IAEjC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,KAAK,EAAE;QAC1C,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;KACjC;SAAM,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE;QACpE,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE;YAC/B,OAAO,oBAAoB,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;SACjD;QAED,IAAI,SAAS,CAAC,iBAAiB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,EAAE;YACzE,OAAO,sBAAsB,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;SAC/D;QACD,OAAO,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;KAC7C;IACD,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;AAC9B,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAgB;IACzC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;AACtC,CAAC;AAED,SAAS,oBAAoB,CAC3B,CAAQ,EACR,IAA2F,EAC3F,SAAiC;IAEjC,OAA+B,SAAU,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,sBAAsB,CAAC,CAAQ,EAAE,SAAsB,EAAE,KAAgB,EAAE,SAA+B;IACjH,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;IACpB,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACtE,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;IACtC,IAAI,UAAU,GAAG,CAAC,EAAE;QAClB,IAAI,CAAC,+BAA+B,CAAC,CAAC;KACvC;SAAM;QACL,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC;KACrC;IACD,IAAI,QAAQ,GAAG,CAAC,EAAE;QAChB,IAAI,CAAC,+BAA+B,CAAC,CAAC;KACvC;SAAM;QACL,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC;KAC/B;IACD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,eAAe,CAAC,CAAQ,EAAE,KAAgB,EAAE,SAA+B;IAClF,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;IACpB,IAAI,SAAS,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE;QAC3D,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;KAClC;IACD,IAAI,SAAS,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE;QAC3D,GAAG,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;KACrD;IACD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACxB,CAAC;AAUD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAkB,EAAE,EAAwB,EAAE,EAAE;IACjF,IAAI,CAAC,IAAI,EAAE;QACT,OAAO,IAAI,CAAC;KACb;IACD,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC;IAC3E,MAAM,SAAS,GAAG;QAChB,CAAC,UAAU,CAAC,EAAE,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,KAAI,OAAO;QACpC,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;KAChF,CAAC;IACF,IAAI,WAAW,EAAE;QACf,SAAS,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC;KAClC;IACD,IAAI,eAAe,KAAK,UAAU,EAAE;QAClC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;KACzB;SAAM;QACL,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACtB;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC","file":"waterfall.js","sourcesContent":["import { isNil, precisionAdd, precisionSub } from '@visactor/vutils';\n\nimport type { DataView } from '@visactor/vdataset';\nimport type {\n IWaterfallSeriesSpec,\n IWaterfallTotalCustom,\n IWaterfallTotalField\n} from '../../series/waterfall/interface';\nimport type { Datum } from '../../typings';\nimport { WaterfallDefaultSeriesField } from '../../constant/waterfall';\nimport { warn } from '../../util/debug';\nimport { STACK_FIELD_TOTAL_TOP } from '../../constant/data';\n\ntype TotalInfo = {\n start: number;\n end: number;\n lastIndex: string;\n lastEnd: number;\n index: string;\n isTotal: boolean;\n positive: number;\n negative: number;\n};\n\nexport interface IWaterfallOpt {\n indexField: string;\n valueField: string;\n seriesField?: string;\n startAs: string;\n endAs: string;\n total: IWaterfallSeriesSpec['total'];\n calculationMode: 'increase' | 'decrease';\n\n seriesFieldName: {\n total: string;\n increase: string;\n decrease: string;\n };\n stackInverse: boolean;\n groupData: () => DataView;\n}\n\nexport const waterfall = (lastData: Array<Datum>, op: IWaterfallOpt) => {\n if (!lastData || lastData.length === 0) {\n return lastData;\n }\n const { indexField, total: totalSpec, groupData, calculationMode } = op;\n const totalData: {\n start: number;\n end: number;\n lastIndex: string;\n lastEnd: number;\n index: string;\n isTotal: boolean;\n positive: number;\n negative: number;\n }[] = [];\n const { dimensionValues, dimensionData } = groupData().latestData as {\n dimensionValues: { [key in string]: Set<string> };\n dimensionData: { [key in string]: Datum[] };\n };\n let indexValues = Array.from(dimensionValues[indexField]);\n if (calculationMode === 'decrease') {\n indexValues = indexValues.reverse();\n }\n // 上一次的计算结果\n let temp: { start: number; end: number; lastIndex: string; positive: number; negative: number } = {\n start: 0,\n end: 0,\n positive: 0,\n negative: 0,\n lastIndex: null\n };\n indexValues.forEach((key, index) => {\n const total = {\n start: temp.end,\n end: temp.end,\n lastIndex: temp.lastIndex,\n lastEnd: temp.end,\n index: key,\n isTotal: false,\n positive: temp.end,\n negative: temp.end\n };\n\n const indexData = op.stackInverse === true ? dimensionData[key].reverse() : dimensionData[key];\n indexData?.forEach((d, i) => {\n if (i === indexData.length - 1) {\n d[STACK_FIELD_TOTAL_TOP] = true;\n } else {\n delete d[STACK_FIELD_TOTAL_TOP];\n }\n });\n // 1.9.5 新增能力\n // 当前 key 对应的数据中有一个总计数据,并且还有其他的分组数据时。总计的计算逻辑需要将总计值拆分\n if (indexData.length > 1) {\n const isTotalCheck = (d: Datum) => {\n if (!totalSpec || totalSpec.type === 'end') {\n if (index === indexValues.length - 1) {\n return true;\n }\n } else if (totalSpec.type === 'field' || totalSpec.type === 'custom') {\n const tag = d[totalSpec.tagField];\n return !!tag;\n }\n return false;\n };\n const isTotalTag = indexData.some(d => isTotalCheck(d));\n if (isTotalTag) {\n temp = computeTotalWithMultipleData(\n indexData,\n key,\n total,\n totalData,\n temp,\n indexValues,\n index,\n op,\n isTotalCheck\n );\n totalData.push(total);\n return;\n }\n }\n temp = computeNormalData(indexData, key, total, totalData, temp, indexValues, index, op);\n totalData.push(total);\n });\n return totalData;\n};\n\nfunction computeTotalWithMultipleData(\n indexData: Datum[],\n key: string,\n total: TotalInfo,\n totalData: TotalInfo[],\n temp: { start: number; end: number; lastIndex: string; positive: number; negative: number },\n indexValues: string[],\n index: number,\n op: IWaterfallOpt,\n isTotalCheck: (d: Datum) => boolean\n) {\n total.isTotal = true;\n const { valueField, startAs, endAs, total: totalSpec } = op;\n // 先将数据分为总计数据与常规数据\n const _normalTemp: Datum[] = [];\n const _totalTemp: Datum[] = [];\n // 将总计数据与常规数据进行分离\n indexData.forEach((d, index) => {\n if (isTotalCheck(d)) {\n // 总计数据后续要重新按照顺序计算 start end 信息,所以需要记录下当前的 index\n _totalTemp.push({ ...d, [`_vchart_waterfall_waterfall_temp`]: index });\n } else {\n _normalTemp.push(d);\n }\n });\n // 1. 不可能全都不是总计数据\n // 2. 如果全都是总计数据,让它们都是同一个值\n if (_totalTemp.length === indexData.length) {\n const result = computeNormalData([indexData[0]], key, total, totalData, temp, indexValues, index, op);\n _totalTemp.forEach(d => {\n d[startAs] = indexData[0][startAs];\n d[endAs] = indexData[0][endAs];\n d[valueField] = indexData[0][valueField];\n });\n return result;\n }\n\n // 3. 其他常规情况\n // 先获取当前的起始值/结束值应当是多少\n // 按照第一个总计数据的配置来决定\n const totalConfigData = _totalTemp[0];\n // 获取配置中的总计结果\n // eslint-disable-next-line prefer-const\n let { start, end } = getTotalStartEnd(totalConfigData, total, totalData, temp, totalSpec);\n total.start = start;\n total.end = end;\n let positive = start;\n let navigate = start;\n // 当前剩余的总计值\n let valueTemp = end - start;\n const tempTotalValue = _normalTemp.reduce((pre, cur) => precisionSub(pre, +cur[valueField]), valueTemp);\n // 模拟一组临时总计数据,用来堆叠\n _totalTemp.forEach(d => {\n const tempTotalData = {\n [startAs]: start,\n [endAs]: end,\n [valueField]: tempTotalValue\n };\n // 将临时总计插入 `_vchart_waterfall_waterfall_temp_${index}` 中\n _normalTemp.splice(d._vchart_waterfall_waterfall_temp, 0, tempTotalData);\n });\n // 将全部数据进行堆叠\n _normalTemp.forEach(d => {\n const value = +d[valueField];\n if (value >= 0) {\n d[startAs] = +positive;\n positive = precisionAdd(positive, value);\n } else {\n d[startAs] = +navigate;\n navigate = precisionAdd(navigate, value);\n }\n d[endAs] = precisionAdd(d[startAs], value);\n start = precisionAdd(start, value);\n valueTemp = precisionSub(valueTemp, value);\n });\n // 设置数据中的总计数据\n _totalTemp.forEach(_d => {\n const index = _d._vchart_waterfall_waterfall_temp;\n // 数据的堆积计算结果\n _d = _normalTemp[index];\n // 原始数据\n const d = indexData[index];\n d[startAs] = _d[startAs];\n d[endAs] = _d[endAs];\n d[valueField] = _d[valueField];\n });\n return { ...total, lastIndex: key };\n}\n\nfunction computeNormalData(\n indexData: Datum[],\n key: string,\n total: TotalInfo,\n totalData: TotalInfo[],\n temp: { start: number; end: number; lastIndex: string; positive: number; negative: number },\n indexValues: string[],\n index: number,\n op: IWaterfallOpt\n) {\n const { valueField, startAs, endAs, total: totalSpec, seriesField, seriesFieldName } = op;\n indexData.forEach(d => {\n let isTotalTag = false;\n if (!totalSpec || totalSpec.type === 'end') {\n if (index === indexValues.length - 1) {\n total.start = 0;\n d[startAs] = total.start;\n d[endAs] = total.end;\n isTotalTag = true;\n }\n } else if (totalSpec.type === 'field' || totalSpec.type === 'custom') {\n const tag = d[totalSpec.tagField];\n if (tag) {\n isTotalTag = true;\n const { start, end } = getTotalStartEnd(d, total, totalData, temp, totalSpec);\n d[startAs] = start;\n d[endAs] = end;\n d[valueField] = end - start;\n total.start = start;\n total.end = end;\n }\n }\n if (!isTotalTag) {\n const value = +d[valueField];\n // 区分正负值\n if (value >= 0) {\n d[startAs] = +total.positive;\n total.positive = precisionAdd(total.positive, value);\n } else {\n d[startAs] = +total.negative;\n total.negative = precisionAdd(total.negative, value);\n }\n d[endAs] = precisionAdd(d[startAs], value);\n total.end = precisionAdd(total.end, value);\n }\n total.isTotal = isTotalTag;\n\n if (isNil(seriesField) || seriesField === WaterfallDefaultSeriesField) {\n if (isTotalTag) {\n d[WaterfallDefaultSeriesField] = seriesFieldName.total;\n } else {\n d[WaterfallDefaultSeriesField] = +d[valueField] >= 0 ? seriesFieldName.increase : seriesFieldName.decrease;\n }\n }\n });\n return { ...total, lastIndex: key };\n}\n\nfunction getTotalStartEnd(\n d: Datum,\n total: TotalInfo,\n totalData: TotalInfo[],\n temp: { start: number; end: number; lastIndex: string; positive: number; negative: number },\n totalSpec: IWaterfallOpt['total']\n) {\n if (!totalSpec || totalSpec.type === 'end') {\n return getTotalInEndType(total);\n } else if (totalSpec.type === 'field' || totalSpec.type === 'custom') {\n if (totalSpec.type === 'custom') {\n return getTotalInCustomType(d, temp, totalSpec);\n }\n // 如果有设置count, valueField 和 startField 无效\n if (totalSpec.collectCountField && !isNil(d[totalSpec.collectCountField])) {\n return getTotalInCollectField(d, totalData, total, totalSpec);\n }\n return getTotalInField(d, total, totalSpec);\n }\n return { start: 0, end: 0 };\n}\n\nfunction getTotalInEndType(total: TotalInfo) {\n return { start: 0, end: total.end };\n}\n\nfunction getTotalInCustomType(\n d: Datum,\n temp: { start: number; end: number; lastIndex: string; positive: number; negative: number },\n totalSpec: IWaterfallOpt['total']\n) {\n return (<IWaterfallTotalCustom>totalSpec).product(d, temp);\n}\n\nfunction getTotalInCollectField(d: Datum, totalData: TotalInfo[], total: TotalInfo, totalSpec: IWaterfallTotalField) {\n let start = 0;\n let end = total.end;\n const startIndex = totalData.length - +d[totalSpec.collectCountField];\n const endIndex = totalData.length - 1;\n if (startIndex < 0) {\n warn('total.collectCountField error');\n } else {\n start = totalData[startIndex].start;\n }\n if (endIndex < 0) {\n warn('total.collectCountField error');\n } else {\n end = totalData[endIndex].end;\n }\n return { start, end };\n}\n\nfunction getTotalInField(d: Datum, total: TotalInfo, totalSpec: IWaterfallTotalField) {\n let start = 0;\n let end = total.end;\n if (totalSpec.startField && !isNil(d[totalSpec.startField])) {\n start = +d[totalSpec.startField];\n }\n if (totalSpec.valueField && !isNil(d[totalSpec.valueField])) {\n end = precisionAdd(start, +d[totalSpec.valueField]);\n }\n return { start, end };\n}\n\nexport interface IWaterfallFillEndOpt {\n indexField: string;\n valueField: string;\n seriesField?: string;\n total: IWaterfallSeriesSpec['total'];\n calculationMode: IWaterfallSeriesSpec['calculationMode'];\n}\n\nexport const waterfallFillTotal = (data: Array<Datum>, op: IWaterfallFillEndOpt) => {\n if (!data) {\n return data;\n }\n const { indexField, valueField, total, seriesField, calculationMode } = op;\n const totalData = {\n [indexField]: total?.text || 'total',\n [valueField]: data.reduce((pre, cur) => precisionAdd(pre, +cur[valueField]), 0)\n };\n if (seriesField) {\n totalData[seriesField] = 'total';\n }\n if (calculationMode === 'decrease') {\n data.unshift(totalData);\n } else {\n data.push(totalData);\n }\n return data;\n};\n"]}
|
package/esm/env/env.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { initAllEnv, loadBrowserEnv, loadFeishuEnv, loadLynxEnv, loadNodeEnv, loadTaroEnv, loadWxEnv, loadTTEnv, loadHarmonyEnv } from "@visactor/vrender-kits
|
|
1
|
+
import { initAllEnv, loadBrowserEnv, loadFeishuEnv, loadLynxEnv, loadNodeEnv, loadTaroEnv, loadWxEnv, loadTTEnv, loadHarmonyEnv } from "@visactor/vrender-kits";
|
|
2
2
|
|
|
3
3
|
import { container } from "@visactor/vrender-core";
|
|
4
4
|
|
|
@@ -37,4 +37,4 @@ export const registerTTEnv = () => {
|
|
|
37
37
|
export const registerHarmonyEnv = () => {
|
|
38
38
|
loadHarmonyEnv(container);
|
|
39
39
|
};
|
|
40
|
-
//# sourceMappingURL=env.js.map
|
|
40
|
+
//# sourceMappingURL=env.js.map
|
package/esm/env/env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/env/env.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,cAAc,EACd,aAAa,EACb,WAAW,EACX,WAAW,EACX,WAAW,EACX,SAAS,EACT,SAAS,EACT,cAAc,EACf,MAAM,
|
|
1
|
+
{"version":3,"sources":["../src/env/env.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,cAAc,EACd,aAAa,EACb,WAAW,EACX,WAAW,EACX,WAAW,EACX,SAAS,EACT,SAAS,EACT,cAAc,EACf,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAKnD,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE;IACjC,UAAU,EAAE,CAAC;AACf,CAAC,CAAC;AAKF,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,EAAE;IACrC,cAAc,CAAC,SAAS,CAAC,CAAC;AAC5B,CAAC,CAAC;AAKF,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,EAAE;IAElC,aAAa,CAAC,SAAS,CAAC,CAAC;AAC3B,CAAC,CAAC;AAKF,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,EAAE;IAClC,WAAW,CAAC,SAAS,CAAC,CAAC;AACzB,CAAC,CAAC;AAKF,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,EAAE;IAClC,WAAW,CAAC,SAAS,CAAC,CAAC;AACzB,CAAC,CAAC;AAKF,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,EAAE;IAClC,WAAW,CAAC,SAAS,CAAC,CAAC;AACzB,CAAC,CAAC;AAKF,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,EAAE;IAChC,SAAS,CAAC,SAAS,CAAC,CAAC;AACvB,CAAC,CAAC;AAIF,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,EAAE;IAChC,SAAS,CAAC,SAAS,CAAC,CAAC;AACvB,CAAC,CAAC;AAIF,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,EAAE;IACrC,cAAc,CAAC,SAAS,CAAC,CAAC;AAC5B,CAAC,CAAC","file":"env.js","sourcesContent":["import {\n initAllEnv,\n loadBrowserEnv,\n loadFeishuEnv,\n loadLynxEnv,\n loadNodeEnv,\n loadTaroEnv,\n loadWxEnv,\n loadTTEnv,\n loadHarmonyEnv\n} from '@visactor/vrender-kits';\nimport { container } from '@visactor/vrender-core';\n\n/**\n * 加载所有环境兼容代码\n */\nexport const registerAllEnv = () => {\n initAllEnv();\n};\n\n/**\n * 加载浏览器环境代码\n */\nexport const registerBrowserEnv = () => {\n loadBrowserEnv(container);\n};\n\n/**\n * 加载飞书(飞书小程序/block/tt)环境代码\n */\nexport const registerLarkEnv = () => {\n // TODO: 后续统一为 loadLarkEnv\n loadFeishuEnv(container);\n};\n\n/**\n * 加载 Lynx 环境代码\n */\nexport const registerLynxEnv = () => {\n loadLynxEnv(container);\n};\n\n/**\n * 加载 Node 环境代码\n */\nexport const registerNodeEnv = () => {\n loadNodeEnv(container);\n};\n\n/**\n * 加载 Taro 环境代码\n */\nexport const registerTaroEnv = () => {\n loadTaroEnv(container);\n};\n\n/**\n * 加载微信小程序环境代码\n */\nexport const registerWXEnv = () => {\n loadWxEnv(container);\n};\n/**\n * 加载TT小程序环境代码\n */\nexport const registerTTEnv = () => {\n loadTTEnv(container);\n};\n/**\n * 加载Harmony环境代码\n */\nexport const registerHarmonyEnv = () => {\n loadHarmonyEnv(container);\n};\n"]}
|
package/esm/env/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export * from "./env";
|
|
2
|
-
//# sourceMappingURL=index.js.map
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
package/esm/event/event.d.ts
CHANGED
|
@@ -4,7 +4,6 @@ export declare class Event implements IEvent {
|
|
|
4
4
|
private _eventDispatcher;
|
|
5
5
|
private _mode;
|
|
6
6
|
private _composedEventMap;
|
|
7
|
-
private _eventHandlerMap;
|
|
8
7
|
getComposedEventMap(): Map<EventCallback<EventParams>, {
|
|
9
8
|
eventType: string;
|
|
10
9
|
event: IComposedEvent;
|
|
@@ -21,7 +20,4 @@ export declare class Event implements IEvent {
|
|
|
21
20
|
}): this;
|
|
22
21
|
allow<Evt extends EventType>(eType: Evt): this;
|
|
23
22
|
release(): void;
|
|
24
|
-
private _addEventHandler;
|
|
25
|
-
private _getEventHandler;
|
|
26
|
-
private _removeEventHandler;
|
|
27
23
|
}
|
package/esm/event/event.js
CHANGED
|
@@ -5,8 +5,7 @@ export class Event {
|
|
|
5
5
|
return this._composedEventMap;
|
|
6
6
|
}
|
|
7
7
|
constructor(eventDispatcher, mode) {
|
|
8
|
-
this._composedEventMap = new Map, this.
|
|
9
|
-
this._mode = mode;
|
|
8
|
+
this._composedEventMap = new Map, this._eventDispatcher = eventDispatcher, this._mode = mode;
|
|
10
9
|
}
|
|
11
10
|
on(eType, query, callback) {
|
|
12
11
|
const handler = "function" == typeof query ? {
|
|
@@ -22,16 +21,16 @@ export class Event {
|
|
|
22
21
|
eventType: eType,
|
|
23
22
|
event: composedEvent
|
|
24
23
|
});
|
|
25
|
-
} else this._eventDispatcher.register(eType, handler)
|
|
24
|
+
} else this._eventDispatcher.register(eType, handler);
|
|
26
25
|
return this;
|
|
27
26
|
}
|
|
28
27
|
off(eType, query, cb) {
|
|
29
|
-
var _a, _b
|
|
28
|
+
var _a, _b;
|
|
30
29
|
const callback = null != cb ? cb : query;
|
|
31
30
|
if (Factory.getComposedEvent(eType)) if (callback) null === (_a = this._composedEventMap.get(callback)) || void 0 === _a || _a.event.unregister(),
|
|
32
31
|
this._composedEventMap.delete(callback); else for (const entry of this._composedEventMap.entries()) entry[1].eventType === eType && (null === (_b = this._composedEventMap.get(entry[0])) || void 0 === _b || _b.event.unregister(),
|
|
33
32
|
this._composedEventMap.delete(entry[0])); else if (callback) {
|
|
34
|
-
const handler =
|
|
33
|
+
const handler = {
|
|
35
34
|
callback: callback,
|
|
36
35
|
query: null,
|
|
37
36
|
filter: {
|
|
@@ -44,8 +43,8 @@ export class Event {
|
|
|
44
43
|
userId: null
|
|
45
44
|
}
|
|
46
45
|
};
|
|
47
|
-
this._eventDispatcher.unregister(eType, handler)
|
|
48
|
-
} else this._eventDispatcher.unregister(eType)
|
|
46
|
+
this._eventDispatcher.unregister(eType, handler);
|
|
47
|
+
} else this._eventDispatcher.unregister(eType);
|
|
49
48
|
return this;
|
|
50
49
|
}
|
|
51
50
|
emit(eType, params, level) {
|
|
@@ -58,25 +57,7 @@ export class Event {
|
|
|
58
57
|
return this._eventDispatcher.allow(eType), this;
|
|
59
58
|
}
|
|
60
59
|
release() {
|
|
61
|
-
this.
|
|
62
|
-
handlers.forEach((handler => {
|
|
63
|
-
this._eventDispatcher.unregister(eventType, handler);
|
|
64
|
-
}));
|
|
65
|
-
})), this._eventHandlerMap.clear(), this._composedEventMap.forEach((entry => {
|
|
66
|
-
entry.event.unregister();
|
|
67
|
-
})), this._composedEventMap.clear();
|
|
68
|
-
}
|
|
69
|
-
_addEventHandler(eventType, handler) {
|
|
70
|
-
handler.callback && (this._eventHandlerMap.has(eventType) || this._eventHandlerMap.set(eventType, new Map),
|
|
71
|
-
this._eventHandlerMap.get(eventType).set(handler.callback, handler));
|
|
72
|
-
}
|
|
73
|
-
_getEventHandler(eventType, callback) {
|
|
74
|
-
var _a;
|
|
75
|
-
return null === (_a = this._eventHandlerMap.get(eventType)) || void 0 === _a ? void 0 : _a.get(callback);
|
|
76
|
-
}
|
|
77
|
-
_removeEventHandler(eventType, callback) {
|
|
78
|
-
const handlerMap = this._eventHandlerMap.get(eventType);
|
|
79
|
-
handlerMap && (handlerMap.delete(callback), handlerMap.size || this._eventHandlerMap.delete(eventType));
|
|
60
|
+
this._eventDispatcher.clear(), this._composedEventMap.clear();
|
|
80
61
|
}
|
|
81
62
|
}
|
|
82
63
|
//# sourceMappingURL=event.js.map
|
package/esm/event/event.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/event/event.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAe1C,MAAM,OAAO,KAAK;
|
|
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 { Factory } from '../core/factory';\nimport type { RenderMode } from '../typings/spec/common';\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 getComposedEventMap() {\n return this._composedEventMap;\n }\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 const ComposedEventCtor = Factory.getComposedEvent(eType);\n if (ComposedEventCtor) {\n const composedEvent = new ComposedEventCtor(this._eventDispatcher, this._mode) as IComposedEvent;\n composedEvent.register(eType, handler);\n this._composedEventMap.set(handler.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 const ComposedEventCtor = Factory.getComposedEvent(eType);\n\n if (!!ComposedEventCtor) {\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 prevent<Evt extends EventType>(\n eType: Evt,\n except?: {\n handler: EventCallback<EventParamsDefinition[Evt]>;\n level: EventBubbleLevel;\n }\n ): this {\n this._eventDispatcher.prevent(eType, except);\n return this;\n }\n\n allow<Evt extends EventType>(eType: Evt) {\n this._eventDispatcher.allow(eType);\n return this;\n }\n\n release(): void {\n this._eventDispatcher.clear();\n this._composedEventMap.clear();\n }\n}\n"]}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { addGraphicState, removeGraphicState } from "../util/graphic-state";
|
|
2
|
-
|
|
3
1
|
export class Interaction {
|
|
4
2
|
constructor() {
|
|
5
3
|
this._stateGraphicsByTrigger = new Map, this._disableTriggerEvent = !1, this._triggerMapByState = new Map;
|
|
@@ -34,13 +32,13 @@ export class Interaction {
|
|
|
34
32
|
var _a;
|
|
35
33
|
if (reverseState && markIdByState[reverseState] && markIdByState[reverseState].includes(g.context.markId)) {
|
|
36
34
|
const m = null === (_a = g.parent) || void 0 === _a ? void 0 : _a.mark, hasAnimation = m.hasAnimationByState && m.hasAnimationByState("state");
|
|
37
|
-
|
|
35
|
+
g.addState(reverseState, !0, hasAnimation);
|
|
38
36
|
}
|
|
39
37
|
})), newStatedGraphics.forEach((g => {
|
|
40
38
|
var _a;
|
|
41
39
|
if (reverseState && markIdByState[reverseState] && markIdByState[reverseState].includes(g.context.markId)) {
|
|
42
40
|
const m = null === (_a = g.parent) || void 0 === _a ? void 0 : _a.mark, hasAnimation = m.hasAnimationByState && m.hasAnimationByState("state");
|
|
43
|
-
|
|
41
|
+
g.removeState(reverseState, hasAnimation);
|
|
44
42
|
}
|
|
45
43
|
}));
|
|
46
44
|
}
|
|
@@ -50,13 +48,13 @@ export class Interaction {
|
|
|
50
48
|
var _a;
|
|
51
49
|
if (state && markIdByState[state] && markIdByState[state].includes(g.context.markId)) {
|
|
52
50
|
const m = null === (_a = g.parent) || void 0 === _a ? void 0 : _a.mark, hasAnimation = m.hasAnimationByState && m.hasAnimationByState("state");
|
|
53
|
-
|
|
51
|
+
g.removeState(state, hasAnimation);
|
|
54
52
|
}
|
|
55
53
|
})), newStatedGraphics.forEach((g => {
|
|
56
54
|
var _a;
|
|
57
55
|
if (state && markIdByState[state] && markIdByState[state].includes(g.context.markId)) {
|
|
58
56
|
const m = null === (_a = g.parent) || void 0 === _a ? void 0 : _a.mark, hasAnimation = m.hasAnimationByState && m.hasAnimationByState("state");
|
|
59
|
-
|
|
57
|
+
g.addState(state, !0, hasAnimation);
|
|
60
58
|
}
|
|
61
59
|
}));
|
|
62
60
|
}
|
|
@@ -68,7 +66,7 @@ export class Interaction {
|
|
|
68
66
|
if (!hasReverse && !hasState) return;
|
|
69
67
|
const hasAnimation = m.hasAnimationByState && m.hasAnimationByState("state");
|
|
70
68
|
null === (_a = m.getGraphics()) || void 0 === _a || _a.forEach((g => {
|
|
71
|
-
statedGraphics && statedGraphics.includes(g) ? hasState &&
|
|
69
|
+
statedGraphics && statedGraphics.includes(g) ? hasState && g.addState(state, !0, hasAnimation) : hasReverse && g.addState(reverseState, !0, hasAnimation);
|
|
72
70
|
}));
|
|
73
71
|
}));
|
|
74
72
|
}
|
|
@@ -80,7 +78,7 @@ export class Interaction {
|
|
|
80
78
|
if (!hasState) return;
|
|
81
79
|
const hasAnimation = mark.hasAnimationByState && mark.hasAnimationByState("state");
|
|
82
80
|
null === (_a = mark.getGraphics()) || void 0 === _a || _a.forEach((g => {
|
|
83
|
-
statedGraphics && statedGraphics.includes(g) && hasState &&
|
|
81
|
+
statedGraphics && statedGraphics.includes(g) && hasState && g.addState(state, !0, hasAnimation);
|
|
84
82
|
}));
|
|
85
83
|
}));
|
|
86
84
|
}
|
|
@@ -93,9 +91,9 @@ export class Interaction {
|
|
|
93
91
|
if (mark) {
|
|
94
92
|
const graphics = mark.getGraphics(), hasAnimation = mark.hasAnimationByState && mark.hasAnimationByState("state");
|
|
95
93
|
graphics && graphics.length && (reverseState && markIdByState[reverseState] && markIdByState[reverseState].includes(mark.id) && graphics.forEach((g => {
|
|
96
|
-
|
|
94
|
+
g.removeState(reverseState, hasAnimation);
|
|
97
95
|
})), state && markIdByState[state] && markIdByState[state].includes(mark.id) && graphics.forEach((g => {
|
|
98
|
-
statedGraphics.includes(g) &&
|
|
96
|
+
statedGraphics.includes(g) && g.removeState(state, hasAnimation);
|
|
99
97
|
})));
|
|
100
98
|
}
|
|
101
99
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/interaction/interaction.ts"],"names":[],"mappings":"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","file":"interaction.js","sourcesContent":["import type { StateValue } from '../compile/mark';\nimport type { IMarkGraphic } from '../mark/interface';\nimport type { IInteraction } from './interface/common';\nimport type { ITrigger } from './interface/trigger';\nimport { addGraphicState, removeGraphicState } from '../util/graphic-state';\n\nexport class Interaction implements IInteraction {\n private _stateGraphicsByTrigger: Map<ITrigger, IMarkGraphic[]> = new Map();\n\n private _disableTriggerEvent: boolean = false;\n\n setDisableActiveEffect(disable: boolean) {\n this._disableTriggerEvent = disable;\n }\n\n private _triggerMapByState: Map<StateValue, ITrigger[]> = new Map();\n addTrigger(trigger: ITrigger) {\n if (trigger) {\n const startState = trigger.getStartState();\n const resetState = trigger.getResetState();\n\n [startState, resetState].forEach(state => {\n if (state) {\n const stateTrigger = this._triggerMapByState.get(state);\n\n if (stateTrigger) {\n !stateTrigger.includes(trigger) && stateTrigger.push(trigger);\n } else {\n this._triggerMapByState.set(state, [trigger]);\n }\n }\n });\n }\n }\n\n setStatedGraphics(trigger: ITrigger, graphics: IMarkGraphic[]) {\n this._stateGraphicsByTrigger.set(trigger, graphics);\n }\n\n getStatedGraphics(trigger: ITrigger) {\n return this._stateGraphicsByTrigger.get(trigger);\n }\n\n updateStates(\n trigger: ITrigger,\n newStatedGraphics: IMarkGraphic[],\n prevStatedGraphics?: IMarkGraphic[],\n state?: string,\n reverseState?: string\n ) {\n if (this._disableTriggerEvent) {\n return [];\n }\n\n if (!newStatedGraphics || !newStatedGraphics.length) {\n return [];\n }\n if (state && reverseState) {\n if (prevStatedGraphics && prevStatedGraphics.length) {\n // toggle\n this.toggleReverseStateOfGraphics(trigger, newStatedGraphics, prevStatedGraphics, reverseState);\n this.toggleStateOfGraphics(trigger, newStatedGraphics, prevStatedGraphics, state);\n } else {\n // update all the elements\n this.addBothStateOfGraphics(trigger, newStatedGraphics, state, reverseState);\n }\n } else if (state) {\n if (prevStatedGraphics && prevStatedGraphics.length) {\n this.toggleStateOfGraphics(trigger, newStatedGraphics, prevStatedGraphics, state);\n } else {\n this.addStateOfGraphics(trigger, newStatedGraphics, state);\n }\n }\n\n return newStatedGraphics;\n }\n\n protected toggleReverseStateOfGraphics(\n trigger: ITrigger,\n newStatedGraphics: IMarkGraphic[],\n prevStatedGraphics: IMarkGraphic[],\n reverseState: string\n ) {\n const markIdByState = trigger.getMarkIdByState();\n\n prevStatedGraphics.forEach(g => {\n const hasReverse =\n reverseState && markIdByState[reverseState] && markIdByState[reverseState].includes(g.context.markId);\n\n if (hasReverse) {\n const m = g.parent?.mark;\n const hasAnimation = (m as any).hasAnimationByState && (m as any).hasAnimationByState('state');\n addGraphicState(g, reverseState, true, hasAnimation);\n }\n });\n\n newStatedGraphics.forEach(g => {\n const hasReverse =\n reverseState && markIdByState[reverseState] && markIdByState[reverseState].includes(g.context.markId);\n\n if (hasReverse) {\n const m = g.parent?.mark;\n const hasAnimation = (m as any).hasAnimationByState && (m as any).hasAnimationByState('state');\n removeGraphicState(g, reverseState, hasAnimation);\n }\n });\n }\n\n protected toggleStateOfGraphics(\n trigger: ITrigger,\n newStatedGraphics: IMarkGraphic[],\n prevStatedGraphics: IMarkGraphic[],\n state: string\n ) {\n const markIdByState = trigger.getMarkIdByState();\n\n prevStatedGraphics.forEach(g => {\n const hasState = state && markIdByState[state] && markIdByState[state].includes(g.context.markId);\n\n if (hasState) {\n const m = g.parent?.mark;\n const hasAnimation = (m as any).hasAnimationByState && (m as any).hasAnimationByState('state');\n removeGraphicState(g, state, hasAnimation);\n }\n });\n\n newStatedGraphics.forEach(g => {\n const hasState = state && markIdByState[state] && markIdByState[state].includes(g.context.markId);\n if (hasState) {\n const m = g.parent?.mark;\n const hasAnimation = (m as any).hasAnimationByState && (m as any).hasAnimationByState('state');\n addGraphicState(g, state, true, hasAnimation);\n }\n });\n }\n\n protected addBothStateOfGraphics(\n trigger: ITrigger,\n statedGraphics: IMarkGraphic[],\n state: string,\n reverseState: string\n ) {\n const marks = trigger.getMarks();\n const markIdByState = trigger.getMarkIdByState();\n\n marks.forEach(m => {\n const hasReverse = reverseState && markIdByState[reverseState] && markIdByState[reverseState].includes(m.id);\n const hasState = state && markIdByState[state] && markIdByState[state].includes(m.id);\n\n if (!hasReverse && !hasState) {\n return;\n }\n\n const hasAnimation = (m as any).hasAnimationByState && (m as any).hasAnimationByState('state');\n m.getGraphics()?.forEach(g => {\n const isStated = statedGraphics && statedGraphics.includes(g);\n if (isStated) {\n if (hasState) {\n addGraphicState(g, state, true, hasAnimation);\n }\n } else {\n if (hasReverse) {\n addGraphicState(g, reverseState, true, hasAnimation);\n }\n }\n });\n });\n }\n\n protected addStateOfGraphics(trigger: ITrigger, statedGraphics: IMarkGraphic[], state: string) {\n const marks = trigger.getMarks();\n const markIdByState = trigger.getMarkIdByState();\n\n marks.forEach(mark => {\n const hasState = state && markIdByState[state] && markIdByState[state].includes(mark.id);\n\n if (!hasState) {\n return;\n }\n\n const hasAnimation = (mark as any).hasAnimationByState && (mark as any).hasAnimationByState('state');\n\n mark.getGraphics()?.forEach(g => {\n const isStated = statedGraphics && statedGraphics.includes(g);\n\n if (isStated) {\n if (hasState) {\n addGraphicState(g, state, true, hasAnimation);\n }\n }\n });\n });\n }\n\n clearAllStatesOfTrigger(trigger: ITrigger, state?: string, reverseState?: string) {\n if (this._disableTriggerEvent) {\n return;\n }\n\n const statedGraphics = this.getStatedGraphics(trigger);\n\n if (!statedGraphics || !statedGraphics.length) {\n return;\n }\n const marks = trigger.getMarks();\n const markIdByState = trigger.getMarkIdByState();\n\n marks.forEach(mark => {\n if (mark) {\n const graphics = mark.getGraphics();\n const hasAnimation = (mark as any).hasAnimationByState && (mark as any).hasAnimationByState('state');\n if (graphics && graphics.length) {\n if (reverseState && markIdByState[reverseState] && markIdByState[reverseState].includes(mark.id)) {\n graphics.forEach(g => {\n removeGraphicState(g, reverseState, hasAnimation);\n });\n }\n\n if (state && markIdByState[state] && markIdByState[state].includes(mark.id)) {\n graphics.forEach(g => {\n if (statedGraphics.includes(g)) {\n removeGraphicState(g, state, hasAnimation);\n }\n });\n }\n }\n }\n });\n }\n\n clearAllStates() {\n if (this._disableTriggerEvent) {\n return;\n }\n\n this._triggerMapByState.forEach((triggers, state) => {\n triggers.forEach(trigger => {\n this.clearAllStatesOfTrigger(trigger, state, trigger.getResetState());\n });\n });\n }\n\n clearByState(stateValue: string) {\n if (this._disableTriggerEvent) {\n return;\n }\n\n const triggers = this._triggerMapByState.get(stateValue);\n\n if (triggers && triggers.length) {\n triggers.forEach(t => {\n this.clearAllStatesOfTrigger(t, stateValue, t.getResetState());\n\n // 更新缓存\n this.setStatedGraphics(t, []);\n });\n }\n }\n\n updateStateOfGraphics(stateValue: string, markGraphics: IMarkGraphic[]) {\n if (this._disableTriggerEvent) {\n return;\n }\n const triggers = this._triggerMapByState.get(stateValue);\n\n if (triggers && triggers.length) {\n triggers.forEach(t => {\n const newStatedGraphics = markGraphics.filter(mg => {\n return t.getMarks().some(m => {\n const graphics = m && m.getGraphics();\n\n return graphics && graphics.includes(mg);\n });\n });\n\n this.updateStates(t, newStatedGraphics, this.getStatedGraphics(t), t.getStartState(), t.getResetState());\n\n this.setStatedGraphics(t, newStatedGraphics);\n });\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/interaction/interaction.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,WAAW;IAAxB;QACU,4BAAuB,GAAkC,IAAI,GAAG,EAAE,CAAC;QAEnE,yBAAoB,GAAY,KAAK,CAAC;QAMtC,uBAAkB,GAAgC,IAAI,GAAG,EAAE,CAAC;IA0QtE,CAAC;IA9QC,sBAAsB,CAAC,OAAgB;QACrC,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC;IACtC,CAAC;IAGD,UAAU,CAAC,OAAiB;QAC1B,IAAI,OAAO,EAAE;YACX,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;YAC3C,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;YAE3C,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACvC,IAAI,KAAK,EAAE;oBACT,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBAExD,IAAI,YAAY,EAAE;wBAChB,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;qBAC/D;yBAAM;wBACL,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;qBAC/C;iBACF;YACH,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAED,iBAAiB,CAAC,OAAiB,EAAE,QAAwB;QAC3D,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED,iBAAiB,CAAC,OAAiB;QACjC,OAAO,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC;IAED,YAAY,CACV,OAAiB,EACjB,iBAAiC,EACjC,kBAAmC,EACnC,KAAc,EACd,YAAqB;QAErB,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,OAAO,EAAE,CAAC;SACX;QAED,IAAI,CAAC,iBAAiB,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE;YACnD,OAAO,EAAE,CAAC;SACX;QACD,IAAI,KAAK,IAAI,YAAY,EAAE;YACzB,IAAI,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,EAAE;gBAEnD,IAAI,CAAC,4BAA4B,CAAC,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,YAAY,CAAC,CAAC;gBAChG,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC;aACnF;iBAAM;gBAEL,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;aAC9E;SACF;aAAM,IAAI,KAAK,EAAE;YAChB,IAAI,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,EAAE;gBACnD,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC;aACnF;iBAAM;gBACL,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC;aAC5D;SACF;QAED,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAES,4BAA4B,CACpC,OAAiB,EACjB,iBAAiC,EACjC,kBAAkC,EAClC,YAAoB;QAEpB,MAAM,aAAa,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAEjD,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;;YAC7B,MAAM,UAAU,GACd,YAAY,IAAI,aAAa,CAAC,YAAY,CAAC,IAAI,aAAa,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAExG,IAAI,UAAU,EAAE;gBACd,MAAM,CAAC,GAAG,MAAA,CAAC,CAAC,MAAM,0CAAE,IAAI,CAAC;gBACzB,MAAM,YAAY,GAAI,CAAS,CAAC,mBAAmB,IAAK,CAAS,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;gBAC/F,CAAC,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;aAC9C;QACH,CAAC,CAAC,CAAC;QAEH,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;;YAC5B,MAAM,UAAU,GACd,YAAY,IAAI,aAAa,CAAC,YAAY,CAAC,IAAI,aAAa,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAExG,IAAI,UAAU,EAAE;gBACd,MAAM,CAAC,GAAG,MAAA,CAAC,CAAC,MAAM,0CAAE,IAAI,CAAC;gBACzB,MAAM,YAAY,GAAI,CAAS,CAAC,mBAAmB,IAAK,CAAS,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;gBAC/F,CAAC,CAAC,WAAW,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;aAC3C;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAES,qBAAqB,CAC7B,OAAiB,EACjB,iBAAiC,EACjC,kBAAkC,EAClC,KAAa;QAEb,MAAM,aAAa,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAEjD,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;;YAC7B,MAAM,QAAQ,GAAG,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAElG,IAAI,QAAQ,EAAE;gBACZ,MAAM,CAAC,GAAG,MAAA,CAAC,CAAC,MAAM,0CAAE,IAAI,CAAC;gBACzB,MAAM,YAAY,GAAI,CAAS,CAAC,mBAAmB,IAAK,CAAS,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;gBAC/F,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;aACpC;QACH,CAAC,CAAC,CAAC;QAEH,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;;YAC5B,MAAM,QAAQ,GAAG,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAClG,IAAI,QAAQ,EAAE;gBACZ,MAAM,CAAC,GAAG,MAAA,CAAC,CAAC,MAAM,0CAAE,IAAI,CAAC;gBACzB,MAAM,YAAY,GAAI,CAAS,CAAC,mBAAmB,IAAK,CAAS,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;gBAC/F,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;aACvC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAES,sBAAsB,CAC9B,OAAiB,EACjB,cAA8B,EAC9B,KAAa,EACb,YAAoB;QAEpB,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QACjC,MAAM,aAAa,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAEjD,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;;YAChB,MAAM,UAAU,GAAG,YAAY,IAAI,aAAa,CAAC,YAAY,CAAC,IAAI,aAAa,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC7G,MAAM,QAAQ,GAAG,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAEtF,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ,EAAE;gBAC5B,OAAO;aACR;YAED,MAAM,YAAY,GAAI,CAAS,CAAC,mBAAmB,IAAK,CAAS,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAC/F,MAAA,CAAC,CAAC,WAAW,EAAE,0CAAE,OAAO,CAAC,CAAC,CAAC,EAAE;gBAC3B,MAAM,QAAQ,GAAG,cAAc,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC9D,IAAI,QAAQ,EAAE;oBACZ,IAAI,QAAQ,EAAE;wBACZ,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;qBACvC;iBACF;qBAAM;oBACL,IAAI,UAAU,EAAE;wBACd,CAAC,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;qBAC9C;iBACF;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAES,kBAAkB,CAAC,OAAiB,EAAE,cAA8B,EAAE,KAAa;QAC3F,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QACjC,MAAM,aAAa,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAEjD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;;YACnB,MAAM,QAAQ,GAAG,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEzF,IAAI,CAAC,QAAQ,EAAE;gBACb,OAAO;aACR;YAED,MAAM,YAAY,GAAI,IAAY,CAAC,mBAAmB,IAAK,IAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAErG,MAAA,IAAI,CAAC,WAAW,EAAE,0CAAE,OAAO,CAAC,CAAC,CAAC,EAAE;gBAC9B,MAAM,QAAQ,GAAG,cAAc,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAE9D,IAAI,QAAQ,EAAE;oBACZ,IAAI,QAAQ,EAAE;wBACZ,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;qBACvC;iBACF;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,uBAAuB,CAAC,OAAiB,EAAE,KAAc,EAAE,YAAqB;QAC9E,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,OAAO;SACR;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAEvD,IAAI,CAAC,cAAc,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;YAC7C,OAAO;SACR;QACD,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QACjC,MAAM,aAAa,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAEjD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACnB,IAAI,IAAI,EAAE;gBACR,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;gBACpC,MAAM,YAAY,GAAI,IAAY,CAAC,mBAAmB,IAAK,IAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;gBACrG,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,EAAE;oBAC/B,IAAI,YAAY,IAAI,aAAa,CAAC,YAAY,CAAC,IAAI,aAAa,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;wBAChG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;4BACnB,CAAC,CAAC,WAAW,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;wBAC5C,CAAC,CAAC,CAAC;qBACJ;oBAED,IAAI,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;wBAC3E,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;4BACnB,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;gCAC9B,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;6BACpC;wBACH,CAAC,CAAC,CAAC;qBACJ;iBACF;aACF;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,OAAO;SACR;QAED,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;YAClD,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBACzB,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;YACxE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,YAAY,CAAC,UAAkB;QAC7B,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,OAAO;SACR;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAEzD,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,EAAE;YAC/B,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACnB,IAAI,CAAC,uBAAuB,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC;gBAG/D,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAChC,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAED,qBAAqB,CAAC,UAAkB,EAAE,YAA4B;QACpE,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,OAAO;SACR;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAEzD,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,EAAE;YAC/B,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACnB,MAAM,iBAAiB,GAAG,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;oBACjD,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;wBAC3B,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;wBAEtC,OAAO,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;oBAC3C,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC;gBAEzG,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;CACF","file":"interaction.js","sourcesContent":["import type { StateValue } from '../compile/mark';\nimport type { IMarkGraphic } from '../mark/interface';\nimport type { IInteraction } from './interface/common';\nimport type { ITrigger } from './interface/trigger';\n\nexport class Interaction implements IInteraction {\n private _stateGraphicsByTrigger: Map<ITrigger, IMarkGraphic[]> = new Map();\n\n private _disableTriggerEvent: boolean = false;\n\n setDisableActiveEffect(disable: boolean) {\n this._disableTriggerEvent = disable;\n }\n\n private _triggerMapByState: Map<StateValue, ITrigger[]> = new Map();\n addTrigger(trigger: ITrigger) {\n if (trigger) {\n const startState = trigger.getStartState();\n const resetState = trigger.getResetState();\n\n [startState, resetState].forEach(state => {\n if (state) {\n const stateTrigger = this._triggerMapByState.get(state);\n\n if (stateTrigger) {\n !stateTrigger.includes(trigger) && stateTrigger.push(trigger);\n } else {\n this._triggerMapByState.set(state, [trigger]);\n }\n }\n });\n }\n }\n\n setStatedGraphics(trigger: ITrigger, graphics: IMarkGraphic[]) {\n this._stateGraphicsByTrigger.set(trigger, graphics);\n }\n\n getStatedGraphics(trigger: ITrigger) {\n return this._stateGraphicsByTrigger.get(trigger);\n }\n\n updateStates(\n trigger: ITrigger,\n newStatedGraphics: IMarkGraphic[],\n prevStatedGraphics?: IMarkGraphic[],\n state?: string,\n reverseState?: string\n ) {\n if (this._disableTriggerEvent) {\n return [];\n }\n\n if (!newStatedGraphics || !newStatedGraphics.length) {\n return [];\n }\n if (state && reverseState) {\n if (prevStatedGraphics && prevStatedGraphics.length) {\n // toggle\n this.toggleReverseStateOfGraphics(trigger, newStatedGraphics, prevStatedGraphics, reverseState);\n this.toggleStateOfGraphics(trigger, newStatedGraphics, prevStatedGraphics, state);\n } else {\n // update all the elements\n this.addBothStateOfGraphics(trigger, newStatedGraphics, state, reverseState);\n }\n } else if (state) {\n if (prevStatedGraphics && prevStatedGraphics.length) {\n this.toggleStateOfGraphics(trigger, newStatedGraphics, prevStatedGraphics, state);\n } else {\n this.addStateOfGraphics(trigger, newStatedGraphics, state);\n }\n }\n\n return newStatedGraphics;\n }\n\n protected toggleReverseStateOfGraphics(\n trigger: ITrigger,\n newStatedGraphics: IMarkGraphic[],\n prevStatedGraphics: IMarkGraphic[],\n reverseState: string\n ) {\n const markIdByState = trigger.getMarkIdByState();\n\n prevStatedGraphics.forEach(g => {\n const hasReverse =\n reverseState && markIdByState[reverseState] && markIdByState[reverseState].includes(g.context.markId);\n\n if (hasReverse) {\n const m = g.parent?.mark;\n const hasAnimation = (m as any).hasAnimationByState && (m as any).hasAnimationByState('state');\n g.addState(reverseState, true, hasAnimation);\n }\n });\n\n newStatedGraphics.forEach(g => {\n const hasReverse =\n reverseState && markIdByState[reverseState] && markIdByState[reverseState].includes(g.context.markId);\n\n if (hasReverse) {\n const m = g.parent?.mark;\n const hasAnimation = (m as any).hasAnimationByState && (m as any).hasAnimationByState('state');\n g.removeState(reverseState, hasAnimation);\n }\n });\n }\n\n protected toggleStateOfGraphics(\n trigger: ITrigger,\n newStatedGraphics: IMarkGraphic[],\n prevStatedGraphics: IMarkGraphic[],\n state: string\n ) {\n const markIdByState = trigger.getMarkIdByState();\n\n prevStatedGraphics.forEach(g => {\n const hasState = state && markIdByState[state] && markIdByState[state].includes(g.context.markId);\n\n if (hasState) {\n const m = g.parent?.mark;\n const hasAnimation = (m as any).hasAnimationByState && (m as any).hasAnimationByState('state');\n g.removeState(state, hasAnimation);\n }\n });\n\n newStatedGraphics.forEach(g => {\n const hasState = state && markIdByState[state] && markIdByState[state].includes(g.context.markId);\n if (hasState) {\n const m = g.parent?.mark;\n const hasAnimation = (m as any).hasAnimationByState && (m as any).hasAnimationByState('state');\n g.addState(state, true, hasAnimation);\n }\n });\n }\n\n protected addBothStateOfGraphics(\n trigger: ITrigger,\n statedGraphics: IMarkGraphic[],\n state: string,\n reverseState: string\n ) {\n const marks = trigger.getMarks();\n const markIdByState = trigger.getMarkIdByState();\n\n marks.forEach(m => {\n const hasReverse = reverseState && markIdByState[reverseState] && markIdByState[reverseState].includes(m.id);\n const hasState = state && markIdByState[state] && markIdByState[state].includes(m.id);\n\n if (!hasReverse && !hasState) {\n return;\n }\n\n const hasAnimation = (m as any).hasAnimationByState && (m as any).hasAnimationByState('state');\n m.getGraphics()?.forEach(g => {\n const isStated = statedGraphics && statedGraphics.includes(g);\n if (isStated) {\n if (hasState) {\n g.addState(state, true, hasAnimation);\n }\n } else {\n if (hasReverse) {\n g.addState(reverseState, true, hasAnimation);\n }\n }\n });\n });\n }\n\n protected addStateOfGraphics(trigger: ITrigger, statedGraphics: IMarkGraphic[], state: string) {\n const marks = trigger.getMarks();\n const markIdByState = trigger.getMarkIdByState();\n\n marks.forEach(mark => {\n const hasState = state && markIdByState[state] && markIdByState[state].includes(mark.id);\n\n if (!hasState) {\n return;\n }\n\n const hasAnimation = (mark as any).hasAnimationByState && (mark as any).hasAnimationByState('state');\n\n mark.getGraphics()?.forEach(g => {\n const isStated = statedGraphics && statedGraphics.includes(g);\n\n if (isStated) {\n if (hasState) {\n g.addState(state, true, hasAnimation);\n }\n }\n });\n });\n }\n\n clearAllStatesOfTrigger(trigger: ITrigger, state?: string, reverseState?: string) {\n if (this._disableTriggerEvent) {\n return;\n }\n\n const statedGraphics = this.getStatedGraphics(trigger);\n\n if (!statedGraphics || !statedGraphics.length) {\n return;\n }\n const marks = trigger.getMarks();\n const markIdByState = trigger.getMarkIdByState();\n\n marks.forEach(mark => {\n if (mark) {\n const graphics = mark.getGraphics();\n const hasAnimation = (mark as any).hasAnimationByState && (mark as any).hasAnimationByState('state');\n if (graphics && graphics.length) {\n if (reverseState && markIdByState[reverseState] && markIdByState[reverseState].includes(mark.id)) {\n graphics.forEach(g => {\n g.removeState(reverseState, hasAnimation);\n });\n }\n\n if (state && markIdByState[state] && markIdByState[state].includes(mark.id)) {\n graphics.forEach(g => {\n if (statedGraphics.includes(g)) {\n g.removeState(state, hasAnimation);\n }\n });\n }\n }\n }\n });\n }\n\n clearAllStates() {\n if (this._disableTriggerEvent) {\n return;\n }\n\n this._triggerMapByState.forEach((triggers, state) => {\n triggers.forEach(trigger => {\n this.clearAllStatesOfTrigger(trigger, state, trigger.getResetState());\n });\n });\n }\n\n clearByState(stateValue: string) {\n if (this._disableTriggerEvent) {\n return;\n }\n\n const triggers = this._triggerMapByState.get(stateValue);\n\n if (triggers && triggers.length) {\n triggers.forEach(t => {\n this.clearAllStatesOfTrigger(t, stateValue, t.getResetState());\n\n // 更新缓存\n this.setStatedGraphics(t, []);\n });\n }\n }\n\n updateStateOfGraphics(stateValue: string, markGraphics: IMarkGraphic[]) {\n if (this._disableTriggerEvent) {\n return;\n }\n const triggers = this._triggerMapByState.get(stateValue);\n\n if (triggers && triggers.length) {\n triggers.forEach(t => {\n const newStatedGraphics = markGraphics.filter(mg => {\n return t.getMarks().some(m => {\n const graphics = m && m.getGraphics();\n\n return graphics && graphics.includes(mg);\n });\n });\n\n this.updateStates(t, newStatedGraphics, this.getStatedGraphics(t), t.getStartState(), t.getResetState());\n\n this.setStatedGraphics(t, newStatedGraphics);\n });\n }\n }\n}\n"]}
|