@visactor/vchart 1.3.1 → 1.4.0-alpha.2
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.js +15097 -11432
- package/build/index.min.js +2 -2
- package/build/tsconfig.tsbuildinfo +1 -1
- package/cjs/chart/base-chart.d.ts +5 -0
- package/cjs/chart/base-chart.js +43 -24
- package/cjs/chart/base-chart.js.map +1 -1
- package/cjs/chart/common/common.d.ts +2 -0
- package/cjs/chart/common/common.js +15 -1
- package/cjs/chart/common/common.js.map +1 -1
- package/cjs/chart/interface/chart.d.ts +5 -0
- package/cjs/chart/interface/chart.js.map +1 -1
- package/cjs/chart/rose/rose.js.map +1 -1
- package/cjs/compile/compiler.d.ts +2 -2
- package/cjs/compile/compiler.js +32 -13
- 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/mark/compilable-mark.d.ts +9 -4
- package/cjs/compile/mark/compilable-mark.js +20 -6
- package/cjs/compile/mark/compilable-mark.js.map +1 -1
- package/cjs/compile/mark/interface.d.ts +4 -2
- package/cjs/compile/mark/interface.js.map +1 -1
- package/cjs/compile/signal/state-manager.d.ts +1 -1
- package/cjs/compile/signal/state-manager.js +1 -1
- package/cjs/compile/signal/state-manager.js.map +1 -1
- package/cjs/component/axis/base-axis.d.ts +14 -13
- package/cjs/component/axis/base-axis.js +46 -37
- package/cjs/component/axis/base-axis.js.map +1 -1
- package/cjs/component/axis/cartesian/axis.js +64 -32
- package/cjs/component/axis/cartesian/axis.js.map +1 -1
- package/cjs/component/axis/cartesian/interface/spec.js.map +1 -1
- package/cjs/component/axis/cartesian/time-axis.js.map +1 -1
- package/cjs/component/axis/interface.d.ts +1 -0
- package/cjs/component/axis/interface.js.map +1 -1
- package/cjs/component/axis/mixin/linear-axis-mixin.js +1 -1
- package/cjs/component/axis/mixin/linear-axis-mixin.js.map +1 -1
- package/cjs/component/axis/polar/axis.d.ts +2 -1
- package/cjs/component/axis/polar/axis.js +69 -51
- package/cjs/component/axis/polar/axis.js.map +1 -1
- package/cjs/component/base/base-component.js +2 -2
- package/cjs/component/base/base-component.js.map +1 -1
- package/cjs/component/crosshair/base.d.ts +1 -1
- package/cjs/component/crosshair/base.js +4 -2
- package/cjs/component/crosshair/base.js.map +1 -1
- package/cjs/component/crosshair/cartesian.d.ts +1 -1
- package/cjs/component/crosshair/cartesian.js +2 -2
- package/cjs/component/crosshair/cartesian.js.map +1 -1
- package/cjs/component/crosshair/interface/spec.d.ts +1 -0
- package/cjs/component/crosshair/interface/spec.js.map +1 -1
- package/cjs/component/crosshair/polar.d.ts +1 -1
- package/cjs/component/crosshair/polar.js +2 -2
- package/cjs/component/crosshair/polar.js.map +1 -1
- package/cjs/component/label/label.d.ts +12 -6
- package/cjs/component/label/label.js +73 -58
- package/cjs/component/label/label.js.map +1 -1
- package/cjs/component/label/totalLabel.js +4 -3
- package/cjs/component/label/totalLabel.js.map +1 -1
- package/cjs/component/label/util.d.ts +44 -6
- package/cjs/component/label/util.js +123 -7
- package/cjs/component/label/util.js.map +1 -1
- package/cjs/component/legend/base-legend.d.ts +1 -1
- package/cjs/component/legend/util.d.ts +1 -1
- package/cjs/component/tooltip/handler/base.d.ts +2 -2
- package/cjs/component/tooltip/handler/base.js +15 -14
- package/cjs/component/tooltip/handler/base.js.map +1 -1
- package/cjs/component/tooltip/handler/dom/dom-tooltip-handler.js.map +1 -1
- package/cjs/component/tooltip/handler/dom/model/interface.d.ts +3 -3
- package/cjs/component/tooltip/handler/dom/model/interface.js.map +1 -1
- package/cjs/component/tooltip/handler/dom/util.d.ts +1 -1
- package/cjs/component/tooltip/handler/dom/util.js.map +1 -1
- package/cjs/component/tooltip/handler/utils/attribute.d.ts +1 -1
- package/cjs/component/tooltip/handler/utils/attribute.js.map +1 -1
- package/cjs/component/tooltip/tooltip.d.ts +1 -1
- package/cjs/component/tooltip/tooltip.js +11 -12
- package/cjs/component/tooltip/tooltip.js.map +1 -1
- package/cjs/constant/event.d.ts +2 -1
- package/cjs/constant/event.js +1 -1
- package/cjs/constant/event.js.map +1 -1
- package/cjs/constant/index.d.ts +1 -1
- package/cjs/constant/index.js +1 -1
- package/cjs/constant/index.js.map +1 -1
- package/cjs/core/index.d.ts +1 -1
- package/cjs/core/index.js +1 -1
- package/cjs/core/index.js.map +1 -1
- package/cjs/core/interface.d.ts +8 -0
- package/cjs/core/interface.js.map +1 -1
- package/cjs/core/vchart.d.ts +12 -2
- package/cjs/core/vchart.js +51 -17
- package/cjs/core/vchart.js.map +1 -1
- package/cjs/data/transforms/dimension-data.js +6 -4
- package/cjs/data/transforms/dimension-data.js.map +1 -1
- package/cjs/data/transforms/dimension-statistics.d.ts +0 -29
- package/cjs/data/transforms/dimension-statistics.js +31 -73
- package/cjs/data/transforms/dimension-statistics.js.map +1 -1
- package/cjs/data/transforms/waterfall.js +4 -3
- package/cjs/data/transforms/waterfall.js.map +1 -1
- package/cjs/event/event-dispatcher.d.ts +2 -0
- package/cjs/event/event-dispatcher.js +13 -2
- package/cjs/event/event-dispatcher.js.map +1 -1
- package/cjs/event/events/dimension/dimension-hover.js +1 -1
- package/cjs/event/events/dimension/dimension-hover.js.map +1 -1
- package/cjs/mark/base/base-mark.js +4 -4
- package/cjs/mark/base/base-mark.js.map +1 -1
- package/cjs/mark/interface/type.d.ts +2 -1
- package/cjs/mark/interface/type.js +1 -1
- package/cjs/mark/interface/type.js.map +1 -1
- package/cjs/mark/label.d.ts +26 -0
- package/cjs/mark/label.js +34 -0
- package/cjs/mark/label.js.map +1 -0
- package/cjs/model/base-model.d.ts +1 -1
- package/cjs/model/interface.d.ts +1 -1
- package/cjs/model/interface.js.map +1 -1
- package/cjs/plugin/components/axis-sync-plugin/tick-align-transform.js +3 -4
- package/cjs/plugin/components/axis-sync-plugin/tick-align-transform.js.map +1 -1
- package/cjs/series/area/area.js +1 -1
- package/cjs/series/area/area.js.map +1 -1
- package/cjs/series/base/base-series.d.ts +5 -6
- package/cjs/series/base/base-series.js +16 -10
- package/cjs/series/base/base-series.js.map +1 -1
- package/cjs/series/base/group.d.ts +2 -1
- package/cjs/series/base/group.js.map +1 -1
- package/cjs/series/funnel/funnel-3d.d.ts +2 -0
- package/cjs/series/funnel/funnel-3d.js +15 -21
- package/cjs/series/funnel/funnel-3d.js.map +1 -1
- package/cjs/series/funnel/funnel.d.ts +4 -2
- package/cjs/series/funnel/funnel.js +55 -53
- package/cjs/series/funnel/funnel.js.map +1 -1
- package/cjs/series/gauge/gauge.js +2 -2
- package/cjs/series/gauge/gauge.js.map +1 -1
- package/cjs/series/interface/series.d.ts +4 -5
- package/cjs/series/interface/series.js.map +1 -1
- package/cjs/series/line/line.js +1 -1
- package/cjs/series/line/line.js.map +1 -1
- package/cjs/series/pie/pie-3d.js +2 -2
- package/cjs/series/pie/pie-3d.js.map +1 -1
- package/cjs/series/pie/pie.js +3 -3
- package/cjs/series/pie/pie.js.map +1 -1
- package/cjs/series/polar/progress-like/progress-like.js +5 -6
- package/cjs/series/polar/progress-like/progress-like.js.map +1 -1
- package/cjs/series/radar/radar.js +4 -4
- package/cjs/series/radar/radar.js.map +1 -1
- package/cjs/series/sunburst/sunburst.d.ts +1 -1
- package/cjs/series/waterfall/waterfall.d.ts +6 -2
- package/cjs/series/waterfall/waterfall.js +47 -46
- package/cjs/series/waterfall/waterfall.js.map +1 -1
- package/cjs/theme/builtin/common/series/waterfall.js +1 -0
- package/cjs/theme/builtin/common/series/waterfall.js.map +1 -1
- package/cjs/theme/theme-manager.d.ts +1 -1
- package/cjs/theme/theme-manager.js +2 -2
- package/cjs/theme/theme-manager.js.map +1 -1
- package/cjs/typings/group.d.ts +8 -0
- package/cjs/{data/transforms/tick-data/interface.js → typings/group.js} +1 -1
- package/cjs/typings/group.js.map +1 -0
- package/cjs/typings/index.d.ts +1 -0
- package/cjs/typings/index.js +1 -1
- package/cjs/typings/index.js.map +1 -1
- package/cjs/typings/visual.d.ts +3 -3
- package/cjs/typings/visual.js.map +1 -1
- package/cjs/util/data.js.map +1 -1
- package/cjs/util/env.js +1 -1
- package/cjs/util/env.js.map +1 -1
- package/cjs/util/math.d.ts +5 -19
- package/cjs/util/math.js +22 -120
- package/cjs/util/math.js.map +1 -1
- package/cjs/util/spec/common.d.ts +2 -0
- package/cjs/util/spec/common.js +8 -3
- package/cjs/util/spec/common.js.map +1 -1
- package/cjs/util/spec/merge-spec.d.ts +4 -0
- package/cjs/util/spec/merge-spec.js +12 -2
- package/cjs/util/spec/merge-spec.js.map +1 -1
- package/cjs/util/style.js +1 -1
- package/cjs/util/style.js.map +1 -1
- package/cjs/util/text.d.ts +4 -3
- package/cjs/util/text.js +5 -8
- package/cjs/util/text.js.map +1 -1
- package/cjs/vchart-all.js +1 -1
- package/cjs/vchart-all.js.map +1 -1
- package/esm/chart/base-chart.d.ts +5 -0
- package/esm/chart/base-chart.js +44 -24
- package/esm/chart/base-chart.js.map +1 -1
- package/esm/chart/common/common.d.ts +2 -0
- package/esm/chart/common/common.js +16 -0
- package/esm/chart/common/common.js.map +1 -1
- package/esm/chart/interface/chart.d.ts +5 -0
- package/esm/chart/interface/chart.js.map +1 -1
- package/esm/chart/rose/rose.js.map +1 -1
- package/esm/compile/compiler.d.ts +2 -2
- package/esm/compile/compiler.js +31 -14
- 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/mark/compilable-mark.d.ts +9 -4
- package/esm/compile/mark/compilable-mark.js +20 -6
- package/esm/compile/mark/compilable-mark.js.map +1 -1
- package/esm/compile/mark/interface.d.ts +4 -2
- package/esm/compile/mark/interface.js.map +1 -1
- package/esm/compile/signal/state-manager.d.ts +1 -1
- package/esm/compile/signal/state-manager.js +1 -1
- package/esm/compile/signal/state-manager.js.map +1 -1
- package/esm/component/axis/base-axis.d.ts +14 -13
- package/esm/component/axis/base-axis.js +43 -34
- package/esm/component/axis/base-axis.js.map +1 -1
- package/esm/component/axis/cartesian/axis.js +62 -28
- package/esm/component/axis/cartesian/axis.js.map +1 -1
- package/esm/component/axis/cartesian/interface/spec.js.map +1 -1
- package/esm/component/axis/cartesian/time-axis.js.map +1 -1
- package/esm/component/axis/interface.d.ts +1 -0
- package/esm/component/axis/interface.js.map +1 -1
- package/esm/component/axis/mixin/linear-axis-mixin.js +1 -1
- package/esm/component/axis/mixin/linear-axis-mixin.js.map +1 -1
- package/esm/component/axis/polar/axis.d.ts +2 -1
- package/esm/component/axis/polar/axis.js +70 -53
- package/esm/component/axis/polar/axis.js.map +1 -1
- package/esm/component/base/base-component.js +2 -2
- package/esm/component/base/base-component.js.map +1 -1
- package/esm/component/crosshair/base.d.ts +1 -1
- package/esm/component/crosshair/base.js +4 -2
- package/esm/component/crosshair/base.js.map +1 -1
- package/esm/component/crosshair/cartesian.d.ts +1 -1
- package/esm/component/crosshair/cartesian.js +2 -2
- package/esm/component/crosshair/cartesian.js.map +1 -1
- package/esm/component/crosshair/interface/spec.d.ts +1 -0
- package/esm/component/crosshair/interface/spec.js.map +1 -1
- package/esm/component/crosshair/polar.d.ts +1 -1
- package/esm/component/crosshair/polar.js +2 -2
- package/esm/component/crosshair/polar.js.map +1 -1
- package/esm/component/label/label.d.ts +12 -6
- package/esm/component/label/label.js +77 -58
- package/esm/component/label/label.js.map +1 -1
- package/esm/component/label/totalLabel.js +4 -3
- package/esm/component/label/totalLabel.js.map +1 -1
- package/esm/component/label/util.d.ts +44 -6
- package/esm/component/label/util.js +121 -5
- package/esm/component/label/util.js.map +1 -1
- package/esm/component/legend/base-legend.d.ts +1 -1
- package/esm/component/legend/util.d.ts +1 -1
- package/esm/component/tooltip/handler/base.d.ts +2 -2
- package/esm/component/tooltip/handler/base.js +15 -14
- package/esm/component/tooltip/handler/base.js.map +1 -1
- package/esm/component/tooltip/handler/dom/dom-tooltip-handler.js.map +1 -1
- package/esm/component/tooltip/handler/dom/model/interface.d.ts +3 -3
- package/esm/component/tooltip/handler/dom/model/interface.js.map +1 -1
- package/esm/component/tooltip/handler/dom/util.d.ts +1 -1
- package/esm/component/tooltip/handler/dom/util.js.map +1 -1
- package/esm/component/tooltip/handler/utils/attribute.d.ts +1 -1
- package/esm/component/tooltip/handler/utils/attribute.js.map +1 -1
- package/esm/component/tooltip/tooltip.d.ts +1 -1
- package/esm/component/tooltip/tooltip.js +11 -12
- package/esm/component/tooltip/tooltip.js.map +1 -1
- package/esm/constant/event.d.ts +2 -1
- package/esm/constant/event.js +1 -1
- package/esm/constant/event.js.map +1 -1
- package/esm/constant/index.d.ts +1 -1
- package/esm/constant/index.js +1 -1
- package/esm/constant/index.js.map +1 -1
- package/esm/core/index.d.ts +1 -1
- package/esm/core/index.js +1 -1
- package/esm/core/index.js.map +1 -1
- package/esm/core/interface.d.ts +8 -0
- package/esm/core/interface.js.map +1 -1
- package/esm/core/vchart.d.ts +12 -2
- package/esm/core/vchart.js +49 -18
- package/esm/core/vchart.js.map +1 -1
- package/esm/data/transforms/dimension-data.js +6 -4
- package/esm/data/transforms/dimension-data.js.map +1 -1
- package/esm/data/transforms/dimension-statistics.d.ts +0 -29
- package/esm/data/transforms/dimension-statistics.js +28 -69
- package/esm/data/transforms/dimension-statistics.js.map +1 -1
- package/esm/data/transforms/waterfall.js +4 -4
- package/esm/data/transforms/waterfall.js.map +1 -1
- package/esm/event/event-dispatcher.d.ts +2 -0
- package/esm/event/event-dispatcher.js +13 -2
- package/esm/event/event-dispatcher.js.map +1 -1
- package/esm/event/events/dimension/dimension-hover.js +1 -1
- package/esm/event/events/dimension/dimension-hover.js.map +1 -1
- package/esm/mark/base/base-mark.js +5 -5
- package/esm/mark/base/base-mark.js.map +1 -1
- package/esm/mark/interface/type.d.ts +2 -1
- package/esm/mark/interface/type.js +1 -1
- package/esm/mark/interface/type.js.map +1 -1
- package/esm/mark/label.d.ts +26 -0
- package/esm/mark/label.js +30 -0
- package/esm/mark/label.js.map +1 -0
- package/esm/model/base-model.d.ts +1 -1
- package/esm/model/interface.d.ts +1 -1
- package/esm/model/interface.js.map +1 -1
- package/esm/plugin/components/axis-sync-plugin/tick-align-transform.js +3 -4
- package/esm/plugin/components/axis-sync-plugin/tick-align-transform.js.map +1 -1
- package/esm/series/area/area.js +1 -1
- package/esm/series/area/area.js.map +1 -1
- package/esm/series/base/base-series.d.ts +5 -6
- package/esm/series/base/base-series.js +16 -11
- package/esm/series/base/base-series.js.map +1 -1
- package/esm/series/base/group.d.ts +2 -1
- package/esm/series/base/group.js.map +1 -1
- package/esm/series/funnel/funnel-3d.d.ts +2 -0
- package/esm/series/funnel/funnel-3d.js +15 -21
- package/esm/series/funnel/funnel-3d.js.map +1 -1
- package/esm/series/funnel/funnel.d.ts +4 -2
- package/esm/series/funnel/funnel.js +56 -53
- package/esm/series/funnel/funnel.js.map +1 -1
- package/esm/series/gauge/gauge.js +4 -2
- package/esm/series/gauge/gauge.js.map +1 -1
- package/esm/series/interface/series.d.ts +4 -5
- package/esm/series/interface/series.js.map +1 -1
- package/esm/series/line/line.js +1 -1
- package/esm/series/line/line.js.map +1 -1
- package/esm/series/pie/pie-3d.js +4 -2
- package/esm/series/pie/pie-3d.js.map +1 -1
- package/esm/series/pie/pie.js +4 -4
- package/esm/series/pie/pie.js.map +1 -1
- package/esm/series/polar/progress-like/progress-like.js +7 -6
- package/esm/series/polar/progress-like/progress-like.js.map +1 -1
- package/esm/series/radar/radar.js +6 -6
- package/esm/series/radar/radar.js.map +1 -1
- package/esm/series/sunburst/sunburst.d.ts +1 -1
- package/esm/series/waterfall/waterfall.d.ts +6 -2
- package/esm/series/waterfall/waterfall.js +49 -45
- package/esm/series/waterfall/waterfall.js.map +1 -1
- package/esm/theme/builtin/common/series/waterfall.js +1 -0
- package/esm/theme/builtin/common/series/waterfall.js.map +1 -1
- package/esm/theme/theme-manager.d.ts +1 -1
- package/esm/theme/theme-manager.js +3 -1
- package/esm/theme/theme-manager.js.map +1 -1
- package/esm/typings/group.d.ts +8 -0
- package/esm/typings/group.js +2 -0
- package/esm/typings/group.js.map +1 -0
- package/esm/typings/index.d.ts +1 -0
- package/esm/typings/index.js +2 -0
- package/esm/typings/index.js.map +1 -1
- package/esm/typings/visual.d.ts +3 -3
- package/esm/typings/visual.js.map +1 -1
- package/esm/util/data.js.map +1 -1
- package/esm/util/env.js +1 -1
- package/esm/util/env.js.map +1 -1
- package/esm/util/math.d.ts +5 -19
- package/esm/util/math.js +5 -107
- package/esm/util/math.js.map +1 -1
- package/esm/util/spec/common.d.ts +2 -0
- package/esm/util/spec/common.js +8 -0
- package/esm/util/spec/common.js.map +1 -1
- package/esm/util/spec/merge-spec.d.ts +4 -0
- package/esm/util/spec/merge-spec.js +10 -1
- package/esm/util/spec/merge-spec.js.map +1 -1
- package/esm/util/style.js +1 -1
- package/esm/util/style.js.map +1 -1
- package/esm/util/text.d.ts +4 -3
- package/esm/util/text.js +6 -12
- package/esm/util/text.js.map +1 -1
- package/esm/vchart-all.js +1 -1
- package/esm/vchart-all.js.map +1 -1
- package/package.json +14 -13
- package/cjs/component/label/bar.d.ts +0 -9
- package/cjs/component/label/bar.js +0 -47
- package/cjs/component/label/bar.js.map +0 -1
- package/cjs/component/label/pie.d.ts +0 -5
- package/cjs/component/label/pie.js +0 -21
- package/cjs/component/label/pie.js.map +0 -1
- package/cjs/component/label/symbol.d.ts +0 -9
- package/cjs/component/label/symbol.js +0 -26
- package/cjs/component/label/symbol.js.map +0 -1
- package/cjs/data/transforms/tick-data/config.d.ts +0 -1
- package/cjs/data/transforms/tick-data/config.js +0 -6
- package/cjs/data/transforms/tick-data/config.js.map +0 -1
- package/cjs/data/transforms/tick-data/continuous.d.ts +0 -3
- package/cjs/data/transforms/tick-data/continuous.js +0 -44
- package/cjs/data/transforms/tick-data/continuous.js.map +0 -1
- package/cjs/data/transforms/tick-data/discrete/linear.d.ts +0 -3
- package/cjs/data/transforms/tick-data/discrete/linear.js +0 -90
- package/cjs/data/transforms/tick-data/discrete/linear.js.map +0 -1
- package/cjs/data/transforms/tick-data/discrete/polar-angle.d.ts +0 -3
- package/cjs/data/transforms/tick-data/discrete/polar-angle.js +0 -46
- package/cjs/data/transforms/tick-data/discrete/polar-angle.js.map +0 -1
- package/cjs/data/transforms/tick-data/index.d.ts +0 -4
- package/cjs/data/transforms/tick-data/index.js +0 -36
- package/cjs/data/transforms/tick-data/index.js.map +0 -1
- package/cjs/data/transforms/tick-data/interface.d.ts +0 -31
- package/cjs/data/transforms/tick-data/interface.js.map +0 -1
- package/cjs/data/transforms/tick-data/util.d.ts +0 -15
- package/cjs/data/transforms/tick-data/util.js +0 -80
- package/cjs/data/transforms/tick-data/util.js.map +0 -1
- package/esm/component/label/bar.d.ts +0 -9
- package/esm/component/label/bar.js +0 -39
- package/esm/component/label/bar.js.map +0 -1
- package/esm/component/label/pie.d.ts +0 -5
- package/esm/component/label/pie.js +0 -13
- package/esm/component/label/pie.js.map +0 -1
- package/esm/component/label/symbol.d.ts +0 -9
- package/esm/component/label/symbol.js +0 -20
- package/esm/component/label/symbol.js.map +0 -1
- package/esm/data/transforms/tick-data/config.d.ts +0 -1
- package/esm/data/transforms/tick-data/config.js +0 -2
- package/esm/data/transforms/tick-data/config.js.map +0 -1
- package/esm/data/transforms/tick-data/continuous.d.ts +0 -3
- package/esm/data/transforms/tick-data/continuous.js +0 -43
- package/esm/data/transforms/tick-data/continuous.js.map +0 -1
- package/esm/data/transforms/tick-data/discrete/linear.d.ts +0 -3
- package/esm/data/transforms/tick-data/discrete/linear.js +0 -81
- package/esm/data/transforms/tick-data/discrete/linear.js.map +0 -1
- package/esm/data/transforms/tick-data/discrete/polar-angle.d.ts +0 -3
- package/esm/data/transforms/tick-data/discrete/polar-angle.js +0 -41
- package/esm/data/transforms/tick-data/discrete/polar-angle.js.map +0 -1
- package/esm/data/transforms/tick-data/index.d.ts +0 -4
- package/esm/data/transforms/tick-data/index.js +0 -21
- package/esm/data/transforms/tick-data/index.js.map +0 -1
- package/esm/data/transforms/tick-data/interface.d.ts +0 -31
- package/esm/data/transforms/tick-data/interface.js +0 -2
- package/esm/data/transforms/tick-data/interface.js.map +0 -1
- package/esm/data/transforms/tick-data/util.d.ts +0 -15
- package/esm/data/transforms/tick-data/util.js +0 -70
- package/esm/data/transforms/tick-data/util.js.map +0 -1
|
@@ -6,11 +6,17 @@ import { MarkTypeEnum } from "../../mark/interface";
|
|
|
6
6
|
|
|
7
7
|
import { eachSeries, mergeSpec } from "../../util";
|
|
8
8
|
|
|
9
|
-
import {
|
|
9
|
+
import { labelRuleMap, textAttribute } from "./util";
|
|
10
10
|
|
|
11
11
|
import { BaseLabelComponent } from "./base-label";
|
|
12
12
|
|
|
13
|
-
import { pickWithout } from "@visactor/vutils";
|
|
13
|
+
import { isArray, pickWithout } from "@visactor/vutils";
|
|
14
|
+
|
|
15
|
+
import { VChart } from "../../core";
|
|
16
|
+
|
|
17
|
+
import { LabelMark } from "../../mark/label";
|
|
18
|
+
|
|
19
|
+
VChart.useMark([ LabelMark ]);
|
|
14
20
|
|
|
15
21
|
export class Label extends BaseLabelComponent {
|
|
16
22
|
constructor(spec, options) {
|
|
@@ -22,7 +28,7 @@ export class Label extends BaseLabelComponent {
|
|
|
22
28
|
for (let i = 0; i < regions.length; i++) {
|
|
23
29
|
regions[i].getSeries().map((s => s.getMarksWithoutRoot())).flat().some((mark => {
|
|
24
30
|
var _a;
|
|
25
|
-
return
|
|
31
|
+
return null === (_a = mark.getLabelSpec()) || void 0 === _a ? void 0 : _a.some((labelSpec => labelSpec.visible));
|
|
26
32
|
})) && labelComponents.push(new Label(spec, Object.assign(Object.assign({}, options), {
|
|
27
33
|
specIndex: i,
|
|
28
34
|
specKey: "label"
|
|
@@ -31,7 +37,8 @@ export class Label extends BaseLabelComponent {
|
|
|
31
37
|
return labelComponents;
|
|
32
38
|
}
|
|
33
39
|
init(option) {
|
|
34
|
-
super.init(option), this.initEvent(), this._initTextMark(), this._initLabelComponent()
|
|
40
|
+
super.init(option), this.initEvent(), this._initTextMark(), this._initLabelComponent(),
|
|
41
|
+
this._initTextMarkStyle();
|
|
35
42
|
}
|
|
36
43
|
initEvent() {
|
|
37
44
|
this.event.on(ChartEvent.dataZoomChange, (() => {
|
|
@@ -59,31 +66,32 @@ export class Label extends BaseLabelComponent {
|
|
|
59
66
|
}));
|
|
60
67
|
}
|
|
61
68
|
_initTextMark() {
|
|
62
|
-
this.
|
|
69
|
+
this._labelInfoMap || (this._labelInfoMap = new Map), this._labelComponentMap || (this._labelComponentMap = new Map),
|
|
63
70
|
eachSeries(this._regions, (s => {
|
|
64
|
-
var _a
|
|
71
|
+
var _a;
|
|
65
72
|
const marks = s.getMarks(), region = s.getRegion();
|
|
66
|
-
this.
|
|
73
|
+
this._labelInfoMap.get(region) || this._labelInfoMap.set(region, []);
|
|
67
74
|
for (let i = 0; i < marks.length; i++) {
|
|
68
75
|
const mark = marks[i];
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
76
|
+
(null === (_a = mark.getLabelSpec()) || void 0 === _a ? void 0 : _a.length) > 0 && mark.getLabelSpec().forEach(((labelSpec, index) => {
|
|
77
|
+
if (labelSpec.visible) {
|
|
78
|
+
const info = this._labelInfoMap.get(region), labelMark = this._createMark({
|
|
79
|
+
type: MarkTypeEnum.label,
|
|
80
|
+
name: `${mark.name}-label-${index}`
|
|
81
|
+
});
|
|
82
|
+
labelMark.setTarget(mark), info.push({
|
|
83
|
+
labelMark: labelMark,
|
|
84
|
+
baseMark: mark,
|
|
85
|
+
series: s,
|
|
86
|
+
labelSpec: labelSpec
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}));
|
|
82
90
|
}
|
|
83
91
|
}));
|
|
84
92
|
}
|
|
85
93
|
_initLabelComponent() {
|
|
86
|
-
this.
|
|
94
|
+
this._labelInfoMap.forEach(((regionLabelInfo, region) => {
|
|
87
95
|
if ("region" === this._layoutRule) {
|
|
88
96
|
const component = this._createMark({
|
|
89
97
|
type: MarkTypeEnum.component,
|
|
@@ -92,63 +100,74 @@ export class Label extends BaseLabelComponent {
|
|
|
92
100
|
componentType: "label",
|
|
93
101
|
support3d: this._spec.support3d
|
|
94
102
|
});
|
|
95
|
-
component && (this._marks.addMark(component), this._labelComponentMap.set(component,
|
|
96
|
-
region: region,
|
|
97
|
-
labelInfo: regionLabelInfo
|
|
98
|
-
}));
|
|
103
|
+
component && (this._marks.addMark(component), this._labelComponentMap.set(component, regionLabelInfo));
|
|
99
104
|
} else regionLabelInfo.forEach((labelInfo => {
|
|
100
105
|
const component = this._createMark({
|
|
101
106
|
type: MarkTypeEnum.component,
|
|
102
107
|
name: `${labelInfo.labelMark.name}-component`
|
|
103
108
|
}, {
|
|
104
109
|
componentType: "label",
|
|
105
|
-
support3d:
|
|
110
|
+
support3d: labelInfo.baseMark.getSupport3d()
|
|
106
111
|
});
|
|
107
|
-
component && (this._marks.addMark(component), this._labelComponentMap.set(component,
|
|
108
|
-
|
|
109
|
-
labelInfo: [ labelInfo ]
|
|
110
|
-
}));
|
|
112
|
+
component && (this._marks.addMark(component), this._labelComponentMap.set(component, labelInfo),
|
|
113
|
+
labelInfo.labelMark.setComponent(component));
|
|
111
114
|
}));
|
|
112
115
|
}));
|
|
113
116
|
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
component.target(baseMarks.map((mark => mark.getProduct()))).configure({
|
|
118
|
-
interactive: !1
|
|
119
|
-
}).depend(dependCmp.map((cmp => cmp.getMarks()[0].getProduct()))).labelStyle((mark => {
|
|
120
|
-
var _a, _b, _c, _d;
|
|
121
|
-
const markId = mark.context.markId, baseMark = this._option.getChart().getMarkById(markId);
|
|
122
|
-
if (baseMark) {
|
|
123
|
-
const configFunc = null !== (_a = markLabelConfigFunc[baseMark.type]) && void 0 !== _a ? _a : markLabelConfigFunc.symbol, labelSpec = null !== (_b = baseMark.getLabelSpec()) && void 0 !== _b ? _b : {}, interactive = this._interactiveConfig(labelSpec), passiveLabelSpec = pickWithout(labelSpec, [ "position", "style", "state" ]), centerOffset = null !== (_d = null === (_c = this._spec) || void 0 === _c ? void 0 : _c.centerOffset) && void 0 !== _d ? _d : 0;
|
|
124
|
-
return mergeSpec({
|
|
125
|
-
textStyle: Object.assign({
|
|
126
|
-
pickable: !0 === labelSpec.interactive
|
|
127
|
-
}, labelSpec.style),
|
|
128
|
-
overlap: {
|
|
129
|
-
avoidMarks: this._option.getAllComponents().filter((cmp => "totalLabel" === cmp.type)).map((cmp => cmp.getMarks()[0].getProductId()))
|
|
130
|
-
}
|
|
131
|
-
}, configFunc(labelInfo[baseMarks.findIndex((mark => mark === baseMark))]), Object.assign(Object.assign(Object.assign({}, passiveLabelSpec), interactive), {
|
|
132
|
-
centerOffset: centerOffset,
|
|
133
|
-
pickable: !1
|
|
134
|
-
}));
|
|
135
|
-
}
|
|
136
|
-
})).encode(((datum, element) => {
|
|
117
|
+
_initTextMarkStyle() {
|
|
118
|
+
this._labelInfoMap.forEach((labelInfos => {
|
|
119
|
+
labelInfos.forEach((info => {
|
|
137
120
|
var _a;
|
|
138
|
-
const
|
|
139
|
-
|
|
140
|
-
}))
|
|
121
|
+
const {labelMark: labelMark, labelSpec: labelSpec, series: series} = info;
|
|
122
|
+
this.initMarkStyleWithSpec(labelMark, labelSpec), null === (_a = series.initLabelMarkStyle) || void 0 === _a || _a.call(series, labelMark);
|
|
123
|
+
}));
|
|
124
|
+
}));
|
|
125
|
+
}
|
|
126
|
+
updateLayoutAttribute() {
|
|
127
|
+
super.updateLayoutAttribute(), this._labelComponentMap.forEach(((labelInfo, labelComponent) => {
|
|
128
|
+
isArray(labelInfo) ? this._updateMultiLabelAttribute(labelInfo, labelComponent) : this._updateSingleLabelAttribute(labelInfo, labelComponent);
|
|
141
129
|
}));
|
|
142
130
|
}
|
|
131
|
+
_updateMultiLabelAttribute(labelInfo, labelComponent) {
|
|
132
|
+
this._updateLabelComponentAttribute(labelComponent.getProduct(), labelInfo.map((({baseMark: baseMark}) => baseMark.getProduct())), labelInfo[0]);
|
|
133
|
+
}
|
|
134
|
+
_updateSingleLabelAttribute(labelInfo, labelComponent) {
|
|
135
|
+
const {baseMark: baseMark} = labelInfo;
|
|
136
|
+
this._updateLabelComponentAttribute(labelComponent.getProduct(), baseMark.getProduct(), labelInfo);
|
|
137
|
+
}
|
|
138
|
+
_updateLabelComponentAttribute(component, target, labelInfo) {
|
|
139
|
+
const {baseMark: baseMark, labelSpec: labelSpec, series: series, labelMark: labelMark} = labelInfo, dependCmp = this._option.getAllComponents().filter((cmp => "totalLabel" === cmp.type));
|
|
140
|
+
component.target(target).configure({
|
|
141
|
+
interactive: !1
|
|
142
|
+
}).depend(dependCmp.map((cmp => cmp.getMarks()[0].getProduct()))).labelStyle((() => {
|
|
143
|
+
var _a, _b, _c;
|
|
144
|
+
const rule = labelMark.getRule() || baseMark.type, configFunc = null !== (_a = labelRuleMap[rule]) && void 0 !== _a ? _a : labelRuleMap.point, interactive = this._interactiveConfig(labelSpec), passiveLabelSpec = pickWithout(labelSpec, [ "position", "style", "state" ]), centerOffset = null !== (_c = null === (_b = this._spec) || void 0 === _b ? void 0 : _b.centerOffset) && void 0 !== _c ? _c : 0;
|
|
145
|
+
return mergeSpec({
|
|
146
|
+
textStyle: Object.assign({
|
|
147
|
+
pickable: !0 === labelSpec.interactive
|
|
148
|
+
}, labelSpec.style),
|
|
149
|
+
overlap: {
|
|
150
|
+
avoidMarks: this._option.getAllComponents().filter((cmp => "totalLabel" === cmp.type)).map((cmp => cmp.getMarks()[0].getProductId()))
|
|
151
|
+
}
|
|
152
|
+
}, configFunc(labelInfo), Object.assign(Object.assign(Object.assign({}, passiveLabelSpec), interactive), {
|
|
153
|
+
centerOffset: centerOffset
|
|
154
|
+
}));
|
|
155
|
+
})).encode((datum => labelMark.skipEncode ? {
|
|
156
|
+
data: datum
|
|
157
|
+
} : textAttribute(labelInfo, datum, labelSpec.formatMethod))).size((() => series.getRegion().getLayoutRect()));
|
|
158
|
+
}
|
|
143
159
|
compileMarks() {
|
|
144
160
|
this.getMarks().forEach((m => {
|
|
145
161
|
var _a;
|
|
146
|
-
const
|
|
162
|
+
const labelInfo = this._labelComponentMap.get(m);
|
|
163
|
+
let group;
|
|
164
|
+
group = isArray(labelInfo) ? labelInfo[0].series.getRegion().getGroupMark().getProduct() : labelInfo.series.getRegion().getGroupMark().getProduct(),
|
|
147
165
|
m.compile({
|
|
148
166
|
group: group
|
|
149
167
|
}), null === (_a = m.getProduct()) || void 0 === _a || _a.configure({
|
|
150
168
|
context: {
|
|
151
|
-
model: this
|
|
169
|
+
model: this,
|
|
170
|
+
labelInfo: labelInfo
|
|
152
171
|
}
|
|
153
172
|
});
|
|
154
173
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/component/label/label.ts"],"names":[],"mappings":"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","file":"label.js","sourcesContent":["import type { IComponentOption } from '../interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../interface';\nimport type { IRegion } from '../../region/interface';\nimport type { IModelInitOption } from '../../model/interface';\nimport type { LayoutItem } from '../../model/layout-item';\nimport { ChartEvent, LayoutZIndex, VGRAMMAR_HOOK_EVENT } from '../../constant';\nimport { MarkTypeEnum, type IMark } from '../../mark/interface';\nimport type { ITextMark } from '../../mark/text';\nimport { eachSeries, mergeSpec } from '../../util';\nimport type { ISeries } from '../../series/interface';\nimport type { IGroupMark, IView } from '@visactor/vgrammar';\nimport { markLabelConfigFunc, textAttribute } from './util';\nimport type { IComponentMark } from '../../mark/component';\nimport { BaseLabelComponent } from './base-label';\nimport type { LooseFunction } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { pickWithout } from '@visactor/vutils';\nimport type { IGroup, IText } from '@visactor/vrender';\nimport type { LabelItem } from '@visactor/vrender-components';\nimport type { ILabelSpec } from './interface';\n\nexport interface ILabelInfo {\n baseMark: IMark;\n labelMark: ITextMark;\n series: ISeries;\n}\n\nexport interface ILabelComponentContext {\n region: IRegion;\n labelInfo: ILabelInfo[];\n}\n\nexport class Label<T extends ILabelSpec = ILabelSpec> extends BaseLabelComponent<T> {\n static type = ComponentTypeEnum.label;\n type = ComponentTypeEnum.label;\n name: string = ComponentTypeEnum.label;\n\n layoutType: LayoutItem['layoutType'] = 'absolute';\n layoutZIndex: LayoutItem['layoutZIndex'] = LayoutZIndex.Label;\n\n protected _labelInfo: Map<IRegion, ILabelInfo[]>;\n\n protected _labelComponentMap: Map<IComponentMark, ILabelComponentContext>;\n\n protected _layoutRule: 'series' | 'region';\n\n constructor(spec: T, options: IComponentOption) {\n super(spec, options);\n this._layoutRule = spec.labelLayout || 'series';\n }\n\n static createComponent(spec: any, options: IComponentOption) {\n const regions = options.getAllRegions();\n const labelComponents = [];\n for (let i = 0; i < regions.length; i++) {\n const marks = regions[i]\n .getSeries()\n .map(s => s.getMarksWithoutRoot())\n .flat();\n const labelVisible = marks.some(mark => mark.getLabelSpec()?.visible === true);\n if (labelVisible) {\n labelComponents.push(new Label(spec, { ...options, specIndex: i, specKey: 'label' }));\n continue;\n }\n }\n return labelComponents;\n }\n\n init(option: IModelInitOption): void {\n super.init(option);\n this.initEvent();\n this._initTextMark();\n this._initLabelComponent();\n }\n\n initEvent() {\n this.event.on(ChartEvent.dataZoomChange, () => {\n this._labelComponentMap.forEach((info, component) => {\n const graphicItem = component.getProduct().getGroupGraphicItem();\n if (graphicItem) {\n graphicItem.disableAnimation();\n }\n });\n this.event.on(VGRAMMAR_HOOK_EVENT.AFTER_MARK_RENDER_END, enableAnimation);\n });\n const enableAnimation = () => {\n this._labelComponentMap.forEach((info, component) => {\n const graphicItem = component.getProduct().getGroupGraphicItem();\n if (graphicItem) {\n graphicItem.enableAnimation();\n }\n });\n this.event.off(VGRAMMAR_HOOK_EVENT.AFTER_MARK_RENDER_END, enableAnimation);\n };\n\n this.event.on('afterElementEncode', eventParams => {\n const mark = eventParams.item;\n\n if (this._option.getChart().getLayoutTag() === false && mark.context?.model === this) {\n this._delegateLabelEvent(mark.getGroupGraphicItem());\n }\n });\n }\n\n protected _delegateLabelEvent(component: IGroup) {\n const textNodes = component\n ?.findAll(node => node.type === 'text', true)\n // label 组件的底层实现是有 text 图元复用的,这里为了避免重复的事件监听\n .filter(text => !(text as any).__vchart_event) as IText[];\n if (textNodes && textNodes.length > 0) {\n textNodes.forEach(text => {\n text.__vchart_event = true;\n text.addEventListener('*', ((event: any, type: string) =>\n this._delegateEvent(component, event, type, text, (text.attribute as LabelItem).data)) as LooseFunction);\n });\n }\n }\n\n protected _initTextMark() {\n if (!this._labelInfo) {\n this._labelInfo = new Map();\n }\n\n if (!this._labelComponentMap) {\n this._labelComponentMap = new Map();\n }\n eachSeries(this._regions, (s: ISeries) => {\n const marks = s.getMarks();\n const region = s.getRegion();\n\n if (!this._labelInfo.get(region)) {\n this._labelInfo.set(region, []);\n }\n for (let i = 0; i < marks.length; i++) {\n const mark = marks[i];\n if (mark.getLabelSpec()?.visible) {\n const info = this._labelInfo.get(region);\n const labelMark = this._createMark({ type: MarkTypeEnum.text, name: `${mark.name}-label` });\n this.initMarkStyleWithSpec(labelMark, mark.getLabelSpec());\n s.initLabelMarkStyle?.(labelMark);\n const labelInfo = { labelMark, baseMark: mark, series: s };\n info.push(labelInfo);\n }\n }\n });\n }\n\n protected _initLabelComponent() {\n this._labelInfo.forEach((regionLabelInfo, region) => {\n if (this._layoutRule === 'region') {\n const component = this._createMark(\n { type: MarkTypeEnum.component, name: `${region.getGroupMark().name}-label-component` },\n {\n componentType: 'label',\n support3d: this._spec.support3d\n }\n );\n if (component) {\n this._marks.addMark(component);\n this._labelComponentMap.set(component, { region, labelInfo: regionLabelInfo });\n }\n } else {\n regionLabelInfo.forEach(labelInfo => {\n const component = this._createMark(\n { type: MarkTypeEnum.component, name: `${labelInfo.labelMark.name}-component` },\n {\n componentType: 'label',\n support3d: this._spec.support3d\n }\n );\n if (component) {\n this._marks.addMark(component);\n this._labelComponentMap.set(component, { region, labelInfo: [labelInfo] });\n }\n });\n }\n });\n }\n\n updateLayoutAttribute(): void {\n super.updateLayoutAttribute();\n this._labelComponentMap.forEach(({ region, labelInfo }, labelComponent) => {\n const baseMarks = labelInfo.map(info => info.baseMark);\n const component = labelComponent.getProduct() as ReturnType<IView['label']>;\n const dependCmp = this._option.getAllComponents().filter(cmp => cmp.type === 'totalLabel');\n\n component\n .target(baseMarks.map(mark => mark.getProduct()))\n .configure({ interactive: false })\n .depend(dependCmp.map(cmp => cmp.getMarks()[0].getProduct()))\n .labelStyle(mark => {\n const markId = mark.context.markId;\n const baseMark = this._option.getChart().getMarkById(markId);\n if (baseMark) {\n const configFunc = markLabelConfigFunc[baseMark.type] ?? markLabelConfigFunc.symbol;\n const labelSpec = baseMark.getLabelSpec() ?? {};\n const interactive = this._interactiveConfig(labelSpec);\n const passiveLabelSpec = pickWithout(labelSpec, ['position', 'style', 'state']);\n /** arc label When setting the centerOffset of the spec, the label also needs to be offset accordingly, and the centerOffset is not in the labelSpec */\n const centerOffset = this._spec?.centerOffset ?? 0;\n\n return mergeSpec(\n {\n textStyle: { pickable: labelSpec.interactive === true, ...labelSpec.style },\n overlap: {\n avoidMarks: this._option\n .getAllComponents()\n .filter(cmp => cmp.type === 'totalLabel')\n .map(cmp => cmp.getMarks()[0].getProductId())\n }\n },\n configFunc(labelInfo[baseMarks.findIndex(mark => mark === baseMark)]),\n {\n ...passiveLabelSpec,\n ...interactive,\n centerOffset,\n pickable: false\n }\n );\n }\n })\n .encode((datum, element) => {\n const markId = element.mark.context.markId;\n const baseMark = this._option.getChart().getMarkById(markId);\n return textAttribute(\n labelInfo[baseMarks.findIndex(mark => mark === baseMark)],\n datum,\n baseMark.getLabelSpec()?.formatMethod\n );\n })\n .size(() => region.getLayoutRect());\n });\n }\n\n compileMarks() {\n this.getMarks().forEach(m => {\n const group = this._labelComponentMap.get(m).region.getGroupMark().getProduct() as IGroupMark;\n m.compile({ group });\n m.getProduct()?.configure({\n context: {\n model: this\n }\n });\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/component/label/label.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAIjD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGnD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAErD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAIxD,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,SAAS,EAAmB,MAAM,kBAAkB,CAAC;AAe9D,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAE5B,MAAM,OAAO,KAAyC,SAAQ,kBAAqB;IAcjF,YAAY,IAAO,EAAE,OAAyB;QAC5C,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAbvB,SAAI,GAAG,iBAAiB,CAAC,KAAK,CAAC;QAC/B,SAAI,GAAW,iBAAiB,CAAC,KAAK,CAAC;QAEvC,eAAU,GAA6B,UAAU,CAAC;QAClD,iBAAY,GAA+B,YAAY,CAAC,KAAK,CAAC;QAU5D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,QAAQ,CAAC;IAClD,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,IAAS,EAAE,OAAyB;QACzD,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;QACxC,MAAM,eAAe,GAAG,EAAE,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACvC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC;iBACrB,SAAS,EAAE;iBACX,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC;iBACjC,IAAI,EAAE,CAAC;YACV,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;;gBACrC,OAAO,MAAA,IAAI,CAAC,YAAY,EAAE,0CAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACnE,CAAC,CAAC,CAAC;YACH,IAAI,YAAY,EAAE;gBAChB,eAAe,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,kCAAO,OAAO,KAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,IAAG,CAAC,CAAC;gBACtF,SAAS;aACV;SACF;QACD,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,IAAI,CAAC,MAAwB;QAC3B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAED,SAAS;QACP,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,EAAE,GAAG,EAAE;YAC5C,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;gBAClD,MAAM,WAAW,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,mBAAmB,EAAE,CAAC;gBACjE,IAAI,WAAW,EAAE;oBACf,WAAW,CAAC,gBAAgB,EAAE,CAAC;iBAChC;YACH,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAAC,qBAAqB,EAAE,eAAe,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;QACH,MAAM,eAAe,GAAG,GAAG,EAAE;YAC3B,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;gBAClD,MAAM,WAAW,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,mBAAmB,EAAE,CAAC;gBACjE,IAAI,WAAW,EAAE;oBACf,WAAW,CAAC,eAAe,EAAE,CAAC;iBAC/B;YACH,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,qBAAqB,EAAE,eAAe,CAAC,CAAC;QAC7E,CAAC,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,oBAAoB,EAAE,WAAW,CAAC,EAAE;;YAChD,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;YAE9B,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,YAAY,EAAE,KAAK,KAAK,IAAI,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,KAAK,MAAK,IAAI,EAAE;gBACpF,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;aACtD;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAES,mBAAmB,CAAC,SAAiB;QAC7C,MAAM,SAAS,GAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CACvB,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,IAAI,EAE3C,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAE,IAAY,CAAC,cAAc,CAAY,CAAC;QAC5D,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YACrC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACvB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC3B,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAC,KAAU,EAAE,IAAY,EAAE,EAAE,CACvD,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAG,IAAI,CAAC,SAAuB,CAAC,IAAI,CAAC,CAAkB,CAAC,CAAC;YAC7G,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAES,aAAa;QACrB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;SAChC;QAED,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC5B,IAAI,CAAC,kBAAkB,GAAG,IAAI,GAAG,EAAE,CAAC;SACrC;QACD,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAU,EAAE,EAAE;;YACvC,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;YAE7B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;gBACnC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;aACpC;YACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACrC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACtB,IAAI,CAAA,MAAA,IAAI,CAAC,YAAY,EAAE,0CAAE,MAAM,IAAG,CAAC,EAAE;oBACnC,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;wBAC/C,IAAI,SAAS,CAAC,OAAO,EAAE;4BACrB,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;4BAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC;gCACjC,IAAI,EAAE,YAAY,CAAC,KAAK;gCACxB,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,UAAU,KAAK,EAAE;6BACpC,CAAe,CAAC;4BACjB,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;4BAC1B,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;yBAChE;oBACH,CAAC,CAAC,CAAC;iBACJ;aACF;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAES,mBAAmB;QAC3B,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE;YACrD,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ,EAAE;gBACjC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAChC,EAAE,IAAI,EAAE,YAAY,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC,IAAI,kBAAkB,EAAE,EACvF;oBACE,aAAa,EAAE,OAAO;oBACtB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;iBAChC,CACF,CAAC;gBACF,IAAI,SAAS,EAAE;oBACb,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBAC/B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;iBACzD;aACF;iBAAM;gBACL,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;oBAClC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAChC,EAAE,IAAI,EAAE,YAAY,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,YAAY,EAAE,EAC/E;wBACE,aAAa,EAAE,OAAO;wBACtB,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE;qBAC7C,CACF,CAAC;oBACF,IAAI,SAAS,EAAE;wBACb,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;wBAC/B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;wBAClD,SAAS,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;qBAC7C;gBACH,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAES,kBAAkB;QAC1B,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YACtC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;;gBACxB,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;gBAC9C,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;gBACjD,MAAA,MAAM,CAAC,kBAAkB,uDAAG,SAAS,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,qBAAqB;QACnB,KAAK,CAAC,qBAAqB,EAAE,CAAC;QAC9B,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,cAAc,EAAE,EAAE;YAC5D,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;gBACtB,IAAI,CAAC,0BAA0B,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;aAC5D;iBAAM;gBACL,IAAI,CAAC,2BAA2B,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;aAC7D;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAES,0BAA0B,CAAC,SAAuB,EAAE,cAA8B;QAC1F,IAAI,CAAC,8BAA8B,CACjC,cAAc,CAAC,UAAU,EAAY,EACrC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,EACtD,SAAS,CAAC,CAAC,CAAC,CACb,CAAC;IACJ,CAAC;IAES,2BAA2B,CAAC,SAAqB,EAAE,cAA8B;QACzF,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;QAC/B,IAAI,CAAC,8BAA8B,CAAC,cAAc,CAAC,UAAU,EAAY,EAAE,QAAQ,CAAC,UAAU,EAAE,EAAE,SAAS,CAAC,CAAC;IAC/G,CAAC;IAES,8BAA8B,CAAC,SAAiB,EAAE,MAAuB,EAAE,SAAqB;QACxG,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;QAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;QAC3F,SAAS;aACN,MAAM,CAAC,MAAM,CAAC;aACd,SAAS,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;aACjC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;aAC5D,UAAU,CAAC,GAAG,EAAE;;YACf,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC;YAClD,MAAM,UAAU,GAAG,MAAA,YAAY,CAAC,IAAI,CAAC,mCAAI,YAAY,CAAC,KAAK,CAAC;YAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;YACvD,MAAM,gBAAgB,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YAEhF,MAAM,YAAY,GAAG,MAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,YAAY,mCAAI,CAAC,CAAC;YACnD,OAAO,SAAS,CACd;gBACE,SAAS,kBAAI,QAAQ,EAAE,SAAS,CAAC,WAAW,KAAK,IAAI,IAAK,SAAS,CAAC,KAAK,CAAE;gBAC3E,OAAO,EAAE;oBACP,UAAU,EAAE,IAAI,CAAC,OAAO;yBACrB,gBAAgB,EAAE;yBAClB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC;yBACxC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC;iBAChD;aACF,EACD,UAAU,CAAC,SAAS,CAAC,gDAEhB,gBAAgB,GAChB,WAAW,KACd,YAAY,IAEf,CAAC;QACJ,CAAC,CAAC;aACD,MAAM,CAAC,KAAK,CAAC,EAAE;YACd,OAAO,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;QAC1G,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,YAAY;QACV,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;;YAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACjD,IAAI,KAAK,CAAC;YACV,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;gBACtB,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,YAAY,EAAE,CAAC,UAAU,EAAgB,CAAC;aACnF;iBAAM;gBACL,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,YAAY,EAAE,CAAC,UAAU,EAAgB,CAAC;aAChF;YACD,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YACrB,MAAA,CAAC,CAAC,UAAU,EAAE,0CAAE,SAAS,CAAC;gBACxB,OAAO,EAAE;oBACP,KAAK,EAAE,IAAI;oBACX,SAAS;iBACV;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;;AApPM,UAAI,GAAG,iBAAiB,CAAC,KAAK,CAAC","file":"label.js","sourcesContent":["import type { IComponentOption } from '../interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../interface';\nimport type { IRegion } from '../../region/interface';\nimport type { IModelInitOption } from '../../model/interface';\nimport type { LayoutItem } from '../../model/layout-item';\nimport { ChartEvent, LayoutZIndex, VGRAMMAR_HOOK_EVENT } from '../../constant';\nimport { MarkTypeEnum } from '../../mark/interface';\nimport { eachSeries, mergeSpec } from '../../util';\nimport type { ISeries } from '../../series/interface';\nimport type { IGroupMark, ILabel, IMark } from '@visactor/vgrammar';\nimport { labelRuleMap, textAttribute } from './util';\nimport type { IComponentMark } from '../../mark/component';\nimport { BaseLabelComponent } from './base-label';\nimport type { LooseFunction } from '@visactor/vutils';\nimport { isArray, pickWithout } from '@visactor/vutils';\nimport type { IGroup, IText } from '@visactor/vrender';\nimport type { LabelItem } from '@visactor/vrender-components';\nimport type { ILabelSpec } from './interface';\nimport { VChart } from '../../core';\nimport { LabelMark, type ILabelMark } from '../../mark/label';\nimport type { ICompilableMark } from '../../compile/mark';\n\nexport interface ILabelInfo {\n baseMark: ICompilableMark;\n labelMark: ILabelMark;\n series: ISeries;\n labelSpec: ILabelSpec;\n}\n\nexport interface ILabelComponentContext {\n region: IRegion;\n labelInfo: ILabelInfo[];\n}\n\nVChart.useMark([LabelMark]);\n\nexport class Label<T extends ILabelSpec = ILabelSpec> extends BaseLabelComponent<T> {\n static type = ComponentTypeEnum.label;\n type = ComponentTypeEnum.label;\n name: string = ComponentTypeEnum.label;\n\n layoutType: LayoutItem['layoutType'] = 'absolute';\n layoutZIndex: LayoutItem['layoutZIndex'] = LayoutZIndex.Label;\n\n protected _labelInfoMap: Map<IRegion, ILabelInfo[]>;\n\n protected _labelComponentMap: Map<IComponentMark, ILabelInfo | ILabelInfo[]>;\n\n protected _layoutRule: 'series' | 'region';\n\n constructor(spec: T, options: IComponentOption) {\n super(spec, options);\n this._layoutRule = spec.labelLayout || 'series';\n }\n\n static createComponent(spec: any, options: IComponentOption) {\n const regions = options.getAllRegions();\n const labelComponents = [];\n for (let i = 0; i < regions.length; i++) {\n const marks = regions[i]\n .getSeries()\n .map(s => s.getMarksWithoutRoot())\n .flat();\n const labelVisible = marks.some(mark => {\n return mark.getLabelSpec()?.some(labelSpec => labelSpec.visible);\n });\n if (labelVisible) {\n labelComponents.push(new Label(spec, { ...options, specIndex: i, specKey: 'label' }));\n continue;\n }\n }\n return labelComponents;\n }\n\n init(option: IModelInitOption): void {\n super.init(option);\n this.initEvent();\n this._initTextMark();\n this._initLabelComponent();\n this._initTextMarkStyle();\n }\n\n initEvent() {\n this.event.on(ChartEvent.dataZoomChange, () => {\n this._labelComponentMap.forEach((info, component) => {\n const graphicItem = component.getProduct().getGroupGraphicItem();\n if (graphicItem) {\n graphicItem.disableAnimation();\n }\n });\n this.event.on(VGRAMMAR_HOOK_EVENT.AFTER_MARK_RENDER_END, enableAnimation);\n });\n const enableAnimation = () => {\n this._labelComponentMap.forEach((info, component) => {\n const graphicItem = component.getProduct().getGroupGraphicItem();\n if (graphicItem) {\n graphicItem.enableAnimation();\n }\n });\n this.event.off(VGRAMMAR_HOOK_EVENT.AFTER_MARK_RENDER_END, enableAnimation);\n };\n\n this.event.on('afterElementEncode', eventParams => {\n const mark = eventParams.item;\n\n if (this._option.getChart().getLayoutTag() === false && mark.context?.model === this) {\n this._delegateLabelEvent(mark.getGroupGraphicItem());\n }\n });\n }\n\n protected _delegateLabelEvent(component: IGroup) {\n const textNodes = component\n ?.findAll(node => node.type === 'text', true)\n // label 组件的底层实现是有 text 图元复用的,这里为了避免重复的事件监听\n .filter(text => !(text as any).__vchart_event) as IText[];\n if (textNodes && textNodes.length > 0) {\n textNodes.forEach(text => {\n text.__vchart_event = true;\n text.addEventListener('*', ((event: any, type: string) =>\n this._delegateEvent(component, event, type, text, (text.attribute as LabelItem).data)) as LooseFunction);\n });\n }\n }\n\n protected _initTextMark() {\n if (!this._labelInfoMap) {\n this._labelInfoMap = new Map();\n }\n\n if (!this._labelComponentMap) {\n this._labelComponentMap = new Map();\n }\n eachSeries(this._regions, (s: ISeries) => {\n const marks = s.getMarks();\n const region = s.getRegion();\n\n if (!this._labelInfoMap.get(region)) {\n this._labelInfoMap.set(region, []);\n }\n for (let i = 0; i < marks.length; i++) {\n const mark = marks[i];\n if (mark.getLabelSpec()?.length > 0) {\n mark.getLabelSpec().forEach((labelSpec, index) => {\n if (labelSpec.visible) {\n const info = this._labelInfoMap.get(region);\n const labelMark = this._createMark({\n type: MarkTypeEnum.label,\n name: `${mark.name}-label-${index}`\n }) as ILabelMark;\n labelMark.setTarget(mark);\n info.push({ labelMark, baseMark: mark, series: s, labelSpec });\n }\n });\n }\n }\n });\n }\n\n protected _initLabelComponent() {\n this._labelInfoMap.forEach((regionLabelInfo, region) => {\n if (this._layoutRule === 'region') {\n const component = this._createMark(\n { type: MarkTypeEnum.component, name: `${region.getGroupMark().name}-label-component` },\n {\n componentType: 'label',\n support3d: this._spec.support3d\n }\n );\n if (component) {\n this._marks.addMark(component);\n this._labelComponentMap.set(component, regionLabelInfo);\n }\n } else {\n regionLabelInfo.forEach(labelInfo => {\n const component = this._createMark(\n { type: MarkTypeEnum.component, name: `${labelInfo.labelMark.name}-component` },\n {\n componentType: 'label',\n support3d: labelInfo.baseMark.getSupport3d()\n }\n );\n if (component) {\n this._marks.addMark(component);\n this._labelComponentMap.set(component, labelInfo);\n labelInfo.labelMark.setComponent(component);\n }\n });\n }\n });\n }\n\n protected _initTextMarkStyle() {\n this._labelInfoMap.forEach(labelInfos => {\n labelInfos.forEach(info => {\n const { labelMark, labelSpec, series } = info;\n this.initMarkStyleWithSpec(labelMark, labelSpec);\n series.initLabelMarkStyle?.(labelMark);\n });\n });\n }\n\n updateLayoutAttribute(): void {\n super.updateLayoutAttribute();\n this._labelComponentMap.forEach((labelInfo, labelComponent) => {\n if (isArray(labelInfo)) {\n this._updateMultiLabelAttribute(labelInfo, labelComponent);\n } else {\n this._updateSingleLabelAttribute(labelInfo, labelComponent);\n }\n });\n }\n\n protected _updateMultiLabelAttribute(labelInfo: ILabelInfo[], labelComponent: IComponentMark) {\n this._updateLabelComponentAttribute(\n labelComponent.getProduct() as ILabel,\n labelInfo.map(({ baseMark }) => baseMark.getProduct()),\n labelInfo[0]\n );\n }\n\n protected _updateSingleLabelAttribute(labelInfo: ILabelInfo, labelComponent: IComponentMark) {\n const { baseMark } = labelInfo;\n this._updateLabelComponentAttribute(labelComponent.getProduct() as ILabel, baseMark.getProduct(), labelInfo);\n }\n\n protected _updateLabelComponentAttribute(component: ILabel, target: IMark | IMark[], labelInfo: ILabelInfo) {\n const { baseMark, labelSpec, series, labelMark } = labelInfo;\n const dependCmp = this._option.getAllComponents().filter(cmp => cmp.type === 'totalLabel');\n component\n .target(target)\n .configure({ interactive: false })\n .depend(dependCmp.map(cmp => cmp.getMarks()[0].getProduct()))\n .labelStyle(() => {\n const rule = labelMark.getRule() || baseMark.type;\n const configFunc = labelRuleMap[rule] ?? labelRuleMap.point;\n const interactive = this._interactiveConfig(labelSpec);\n const passiveLabelSpec = pickWithout(labelSpec, ['position', 'style', 'state']);\n /** arc label When setting the centerOffset of the spec, the label also needs to be offset accordingly, and the centerOffset is not in the labelSpec */\n const centerOffset = this._spec?.centerOffset ?? 0;\n return mergeSpec(\n {\n textStyle: { pickable: labelSpec.interactive === true, ...labelSpec.style },\n overlap: {\n avoidMarks: this._option\n .getAllComponents()\n .filter(cmp => cmp.type === 'totalLabel')\n .map(cmp => cmp.getMarks()[0].getProductId())\n }\n },\n configFunc(labelInfo),\n {\n ...passiveLabelSpec,\n ...interactive,\n centerOffset\n }\n );\n })\n .encode(datum => {\n return labelMark.skipEncode ? { data: datum } : textAttribute(labelInfo, datum, labelSpec.formatMethod);\n })\n .size(() => series.getRegion().getLayoutRect());\n }\n\n compileMarks() {\n this.getMarks().forEach(m => {\n const labelInfo = this._labelComponentMap.get(m);\n let group;\n if (isArray(labelInfo)) {\n group = labelInfo[0].series.getRegion().getGroupMark().getProduct() as IGroupMark;\n } else {\n group = labelInfo.series.getRegion().getGroupMark().getProduct() as IGroupMark;\n }\n m.compile({ group });\n m.getProduct()?.configure({\n context: {\n model: this,\n labelInfo\n }\n });\n });\n }\n}\n"]}
|
|
@@ -38,7 +38,7 @@ export class TotalLabel extends BaseLabelComponent {
|
|
|
38
38
|
var _a;
|
|
39
39
|
if (null === (_a = this.series.getSpec().totalLabel) || void 0 === _a ? void 0 : _a.visible) {
|
|
40
40
|
const mark = this.series.getMarksInType([ MarkTypeEnum.rect, MarkTypeEnum.symbol ])[0], textMark = this._createMark({
|
|
41
|
-
type: MarkTypeEnum.
|
|
41
|
+
type: MarkTypeEnum.label,
|
|
42
42
|
name: `${mark.name}-total-label`
|
|
43
43
|
});
|
|
44
44
|
this._baseMark = mark, this._textMark = textMark, this._initTextMarkStyle();
|
|
@@ -78,10 +78,11 @@ export class TotalLabel extends BaseLabelComponent {
|
|
|
78
78
|
dataFilter: data => data.filter((d => d.data[STACK_FIELD_TOTAL_TOP]))
|
|
79
79
|
}, interactive));
|
|
80
80
|
}
|
|
81
|
-
})).encode((
|
|
81
|
+
})).encode((datum => textAttribute({
|
|
82
82
|
baseMark: this._baseMark,
|
|
83
83
|
labelMark: this._textMark,
|
|
84
|
-
series: this.series
|
|
84
|
+
series: this.series,
|
|
85
|
+
labelSpec: this.series.getSpec().totalLabel
|
|
85
86
|
}, datum, this._spec.formatMethod))).size((() => this._regions[0].getLayoutRect()));
|
|
86
87
|
}));
|
|
87
88
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/component/label/totalLabel.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/component/label/totalLabel.ts"],"names":[],"mappings":"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","file":"totalLabel.js","sourcesContent":["import type { ILabelMark } from './../../mark/label';\nimport type { IComponentOption } from '../interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../interface';\nimport type { LayoutItem } from '../../model/layout-item';\nimport { AttributeLevel, LayoutZIndex, STACK_FIELD_TOTAL, STACK_FIELD_TOTAL_TOP } from '../../constant';\nimport type { MarkType } from '../../mark/interface';\nimport { MarkTypeEnum, type IMark } from '../../mark/interface';\nimport { getSeries, mergeSpec } from '../../util';\nimport type { ICartesianSeries, ISeries } from '../../series/interface';\nimport type { IGroupMark, IView } from '@visactor/vgrammar';\nimport { textAttribute } from './util';\nimport { BaseLabelComponent } from './base-label';\nimport type { ITotalLabelSpec, ITotalLabelTheme } from './interface';\nimport type { IModelInitOption } from '../../model/interface';\nimport type { Datum } from '../../typings';\n\nexport class TotalLabel extends BaseLabelComponent {\n static type = ComponentTypeEnum.totalLabel;\n type = ComponentTypeEnum.totalLabel;\n name: string = ComponentTypeEnum.totalLabel;\n\n layoutType: LayoutItem['layoutType'] = 'absolute';\n layoutZIndex: LayoutItem['layoutZIndex'] = LayoutZIndex.Label;\n\n private _textMark?: ILabelMark;\n private _baseMark?: IMark;\n\n series: ISeries;\n\n protected declare _theme: ITotalLabelTheme;\n\n static createComponent(spec: ITotalLabelSpec, options: IComponentOption) {\n const regions = options.getAllRegions();\n const labelComponents: TotalLabel[] = [];\n for (let i = 0; i < regions.length; i++) {\n const series = getSeries(regions);\n series.forEach(s => {\n if (s.getSpec()?.totalLabel?.visible) {\n const cmp = new TotalLabel(s.getSpec().totalLabel, { ...options, specIndex: i, specKey: 'totalLabel' });\n cmp.series = s;\n labelComponents.push(cmp);\n }\n });\n }\n return labelComponents;\n }\n\n init(option: IModelInitOption): void {\n super.init(option);\n this._initTextMark();\n this._initLabelComponent();\n }\n\n protected _initTextMark() {\n if (this.series.getSpec().totalLabel?.visible) {\n const mark = this.series.getMarksInType([MarkTypeEnum.rect, MarkTypeEnum.symbol])[0];\n const textMark = this._createMark({ type: MarkTypeEnum.label, name: `${mark.name}-total-label` }) as ILabelMark;\n this._baseMark = mark;\n this._textMark = textMark;\n this._initTextMarkStyle();\n }\n }\n\n _initTextMarkStyle() {\n super.initMarkStyleWithSpec(this._textMark, this._spec);\n this.setMarkStyle(\n this._textMark,\n {\n text: (datum: Datum) => {\n return datum[STACK_FIELD_TOTAL];\n }\n },\n 'normal',\n AttributeLevel.Default\n );\n }\n\n protected _initLabelComponent() {\n const component = this._createMark(\n { type: MarkTypeEnum.component, name: `${this.series.name}-total-label-component` },\n {\n componentType: 'label',\n support3d: this._spec.support3d\n }\n );\n if (component) {\n this._marks.addMark(component);\n }\n }\n\n updateLayoutAttribute(): void {\n super.updateLayoutAttribute();\n this._marks.forEach((componentMark, index) => {\n const component = componentMark.getProduct() as ReturnType<IView['label']>;\n component\n .target(this._baseMark.getProduct())\n .configure({ interactive: false })\n .labelStyle(() => {\n if (this._baseMark) {\n const { offset, animation, overlap } = this._spec;\n const interactive = this._interactiveConfig(this._spec);\n return mergeSpec(\n {\n textStyle: { pickable: this._spec.interactive === true },\n position: totalLabelPosition(this.series, this._baseMark.type)\n },\n {\n offset,\n animation,\n overlap,\n dataFilter: (data: any) => {\n return data.filter((d: any) => d.data[STACK_FIELD_TOTAL_TOP]);\n },\n ...interactive\n }\n );\n }\n })\n .encode(datum => {\n return textAttribute(\n {\n baseMark: this._baseMark,\n labelMark: this._textMark,\n series: this.series,\n labelSpec: this.series.getSpec().totalLabel\n },\n datum,\n this._spec.formatMethod\n );\n })\n .size(() => this._regions[0].getLayoutRect());\n });\n }\n\n compileMarks() {\n this.getMarks().forEach(m => {\n const group = this._regions[0].getGroupMark().getProduct() as IGroupMark;\n m.compile({ group });\n m.getProduct()?.configure({\n context: {\n model: this\n }\n });\n });\n }\n}\n\nexport function totalLabelPosition(series: ISeries, type: MarkType) {\n let position;\n switch (type) {\n case 'rect':\n position = (series as ICartesianSeries).direction === 'horizontal' ? 'right' : 'top';\n break;\n case 'symbol':\n default:\n position = 'top';\n }\n return position;\n}\n"]}
|
|
@@ -1,11 +1,49 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type Datum } from '../../typings';
|
|
2
2
|
import type { ILabelInfo } from './label';
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
import { pieLabel } from './pie';
|
|
6
|
-
export declare const markLabelConfigFunc: {
|
|
3
|
+
import type { LabelItem, Strategy } from '@visactor/vrender-components';
|
|
4
|
+
export declare const labelRuleMap: {
|
|
7
5
|
rect: typeof barLabel;
|
|
8
6
|
symbol: typeof symbolLabel;
|
|
9
7
|
arc: typeof pieLabel;
|
|
8
|
+
point: typeof pointLabel;
|
|
9
|
+
stackLabel: typeof stackLabel;
|
|
10
|
+
};
|
|
11
|
+
export declare enum LabelRule {
|
|
12
|
+
rect = "rect",
|
|
13
|
+
symbol = "symbol",
|
|
14
|
+
arc = "arc",
|
|
15
|
+
point = "point",
|
|
16
|
+
stackLabel = "stackLabel"
|
|
17
|
+
}
|
|
18
|
+
export declare function textAttribute(labelInfo: ILabelInfo, datum: Datum, formatMethod?: (text: string | string[], datum?: any) => string | string[]): any;
|
|
19
|
+
export declare function symbolLabel(labelInfo: ILabelInfo): {
|
|
20
|
+
position: string;
|
|
21
|
+
overlap: boolean | {
|
|
22
|
+
strategy: Strategy[];
|
|
23
|
+
avoidBaseMark: boolean;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
export declare function barLabel(labelInfo: ILabelInfo): {
|
|
27
|
+
position: string | ((data: any) => string);
|
|
28
|
+
overlap: boolean | {
|
|
29
|
+
strategy: Strategy[];
|
|
30
|
+
};
|
|
31
|
+
smartInvert: boolean;
|
|
32
|
+
};
|
|
33
|
+
export declare function pointLabel(labelInfo: ILabelInfo): {
|
|
34
|
+
position: string;
|
|
35
|
+
overlap: boolean | {
|
|
36
|
+
avoidBaseMark: boolean;
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
export declare function pieLabel(labelInfo: ILabelInfo): {
|
|
40
|
+
position: import("@visactor/vrender-components").Functional<string>;
|
|
41
|
+
smartInvert: boolean | import("@visactor/vrender-components").SmartInvertAttrs;
|
|
42
|
+
};
|
|
43
|
+
export declare function stackLabel(labelInfo: ILabelInfo): {
|
|
44
|
+
customLayoutFunc: (labels: LabelItem[]) => import("@visactor/vrender").IText[];
|
|
45
|
+
dataFilter: (labels: LabelItem[]) => LabelItem[];
|
|
46
|
+
overlap: {
|
|
47
|
+
strategy: any;
|
|
48
|
+
};
|
|
10
49
|
};
|
|
11
|
-
export declare function textAttribute(labelInfo: ILabelInfo, datum: Datum, formatMethod: (text: string | string[], datum?: any) => string | string[]): any;
|
|
@@ -1,15 +1,24 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Direction } from "../../typings";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { isString } from "@visactor/vutils";
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { createText } from "@visactor/vrender";
|
|
6
6
|
|
|
7
|
-
export const
|
|
7
|
+
export const labelRuleMap = {
|
|
8
8
|
rect: barLabel,
|
|
9
9
|
symbol: symbolLabel,
|
|
10
|
-
arc: pieLabel
|
|
10
|
+
arc: pieLabel,
|
|
11
|
+
point: pointLabel,
|
|
12
|
+
stackLabel: stackLabel
|
|
11
13
|
};
|
|
12
14
|
|
|
15
|
+
export var LabelRule;
|
|
16
|
+
|
|
17
|
+
!function(LabelRule) {
|
|
18
|
+
LabelRule.rect = "rect", LabelRule.symbol = "symbol", LabelRule.arc = "arc", LabelRule.point = "point",
|
|
19
|
+
LabelRule.stackLabel = "stackLabel";
|
|
20
|
+
}(LabelRule || (LabelRule = {}));
|
|
21
|
+
|
|
13
22
|
export function textAttribute(labelInfo, datum, formatMethod) {
|
|
14
23
|
const {labelMark: labelMark, series: series} = labelInfo, textAttribute = {
|
|
15
24
|
text: datum[series.getMeasureField()[0]],
|
|
@@ -21,4 +30,111 @@ export function textAttribute(labelInfo, datum, formatMethod) {
|
|
|
21
30
|
}
|
|
22
31
|
return textAttribute;
|
|
23
32
|
}
|
|
33
|
+
|
|
34
|
+
export function symbolLabel(labelInfo) {
|
|
35
|
+
var _a, _b, _c;
|
|
36
|
+
const {series: series, labelSpec: labelSpec} = labelInfo, defaultPosition = "horizontal" === series.direction ? "right" : "top", position = null !== (_a = labelSpec.position) && void 0 !== _a ? _a : defaultPosition;
|
|
37
|
+
let overlap;
|
|
38
|
+
return overlap = !1 !== labelSpec.overlap && {
|
|
39
|
+
strategy: null !== (_c = null === (_b = labelSpec.overlap) || void 0 === _b ? void 0 : _b.strategy) && void 0 !== _c ? _c : symbolLabelOverlapStrategy(),
|
|
40
|
+
avoidBaseMark: "center" !== position
|
|
41
|
+
}, {
|
|
42
|
+
position: position,
|
|
43
|
+
overlap: overlap
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function symbolLabelOverlapStrategy() {
|
|
48
|
+
return [ {
|
|
49
|
+
type: "position",
|
|
50
|
+
position: [ "top", "bottom", "right", "left", "top-right", "top-left", "bottom-left", "bottom-right" ]
|
|
51
|
+
} ];
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export function barLabel(labelInfo) {
|
|
55
|
+
var _a, _b, _c, _d, _e, _f;
|
|
56
|
+
const {series: series, labelSpec: labelSpec = {}} = labelInfo, labelPosition = null !== (_a = labelSpec.position) && void 0 !== _a ? _a : "outside", direction = null !== (_b = series.direction) && void 0 !== _b ? _b : "vertical", isInverse = "horizontal" === series.direction ? null === (_c = series.getXAxisHelper()) || void 0 === _c ? void 0 : _c.isInverse() : null === (_d = series.getYAxisHelper()) || void 0 === _d ? void 0 : _d.isInverse();
|
|
57
|
+
let overlap, position = labelPosition;
|
|
58
|
+
"inside" !== position && (position = data => {
|
|
59
|
+
const {data: datum} = data, dataField = series.getMeasureField()[0];
|
|
60
|
+
if ("outside" === labelPosition) {
|
|
61
|
+
const positionMap = {
|
|
62
|
+
vertical: [ "top", "bottom" ],
|
|
63
|
+
horizontal: [ "right", "left" ]
|
|
64
|
+
}, index = (null == datum ? void 0 : datum[dataField]) >= 0 && isInverse || (null == datum ? void 0 : datum[dataField]) < 0 && !isInverse ? 1 : 0;
|
|
65
|
+
return positionMap[direction][index];
|
|
66
|
+
}
|
|
67
|
+
return "inside-bottom" === labelPosition ? "horizontal" === series.direction ? "inside-left" : "inside-bottom" : "inside-top" === labelPosition ? "horizontal" === series.direction ? "inside-right" : "inside-top" : labelPosition;
|
|
68
|
+
}), overlap = !1 !== labelSpec.overlap && {
|
|
69
|
+
strategy: null !== (_f = null === (_e = labelSpec.overlap) || void 0 === _e ? void 0 : _e.strategy) && void 0 !== _f ? _f : barLabelOverlapStrategy(series)
|
|
70
|
+
};
|
|
71
|
+
let smartInvert = !1;
|
|
72
|
+
return isString(labelPosition) && labelPosition.includes("inside") && (smartInvert = !0),
|
|
73
|
+
{
|
|
74
|
+
position: position,
|
|
75
|
+
overlap: overlap,
|
|
76
|
+
smartInvert: smartInvert
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
function barLabelOverlapStrategy(series) {
|
|
81
|
+
return [ {
|
|
82
|
+
type: "position",
|
|
83
|
+
position: data => {
|
|
84
|
+
var _a, _b;
|
|
85
|
+
const {data: datum} = data, dataField = series.getMeasureField()[0];
|
|
86
|
+
return ("horizontal" === series.direction ? null === (_a = series.getXAxisHelper()) || void 0 === _a ? void 0 : _a.isInverse() : null === (_b = series.getYAxisHelper()) || void 0 === _b ? void 0 : _b.isInverse()) ? (null == datum ? void 0 : datum[dataField]) >= 0 ? "horizontal" === series.direction ? [ "left", "inside-left" ] : [ "bottom", "inside-bottom" ] : "horizontal" === series.direction ? [ "right", "inside-right" ] : [ "top", "inside-top" ] : (null == datum ? void 0 : datum[dataField]) >= 0 ? "horizontal" === series.direction ? [ "right", "inside-right" ] : [ "top", "inside-top" ] : "horizontal" === series.direction ? [ "left", "inside-left" ] : [ "bottom", "inside-bottom" ];
|
|
87
|
+
}
|
|
88
|
+
} ];
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export function pointLabel(labelInfo) {
|
|
92
|
+
const {labelSpec: labelSpec} = labelInfo;
|
|
93
|
+
let overlap;
|
|
94
|
+
return overlap = !1 !== labelSpec.overlap && {
|
|
95
|
+
avoidBaseMark: !1
|
|
96
|
+
}, {
|
|
97
|
+
position: "center",
|
|
98
|
+
overlap: overlap
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export function pieLabel(labelInfo) {
|
|
103
|
+
var _a;
|
|
104
|
+
const {labelSpec: labelSpec} = labelInfo, labelPosition = null !== (_a = labelSpec.position) && void 0 !== _a ? _a : "outside", position = labelPosition;
|
|
105
|
+
let smartInvert;
|
|
106
|
+
return smartInvert = labelSpec.smartInvert ? labelSpec.smartInvert : isString(labelPosition) && labelPosition.includes("inside"),
|
|
107
|
+
{
|
|
108
|
+
position: position,
|
|
109
|
+
smartInvert: smartInvert
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
export function stackLabel(labelInfo) {
|
|
114
|
+
const series = labelInfo.series, labelSpec = labelInfo.labelSpec || {}, totalData = series.getTotalData();
|
|
115
|
+
return {
|
|
116
|
+
customLayoutFunc: labels => labels.map((label => {
|
|
117
|
+
const pos = labelSpec.position || "withChange", offset = labelSpec.offset || 0, datum = label.data, attribute = textAttribute(labelInfo, datum, labelSpec.formatMethod);
|
|
118
|
+
return attribute.x = (datum => series.direction === Direction.vertical ? series.totalPositionX(datum, "index", .5) : "middle" === pos ? .5 * (series.totalPositionX(datum, "end") + series.totalPositionY(datum, "start")) : "max" === pos ? series.totalPositionX(datum, datum.end >= datum.start ? "end" : "start") + offset : "min" === pos ? series.totalPositionX(datum, datum.end >= datum.start ? "start" : "end") - offset : series.totalPositionX(datum, "end") + (datum.end >= datum.start ? offset : -offset))(datum),
|
|
119
|
+
attribute.y = (datum => series.direction === Direction.vertical ? "middle" === pos ? .5 * (series.totalPositionY(datum, "end") + series.totalPositionY(datum, "start")) : "max" === pos ? series.totalPositionY(datum, datum.end >= datum.start ? "end" : "start") - offset : "min" === pos ? series.totalPositionY(datum, datum.end >= datum.start ? "start" : "end") + offset : series.totalPositionY(datum, "end") + (datum.end >= datum.start ? -offset : offset) : series.totalPositionY(datum, "index", .5))(datum),
|
|
120
|
+
series.direction === Direction.vertical ? attribute.textBaseline = "middle" === pos ? pos : "withChange" === pos && datum.end - datum.start >= 0 || "max" === pos ? "bottom" : "top" : attribute.textAlign = "middle" === pos ? "center" : "withChange" === pos && datum.end - datum.start >= 0 || "max" === pos ? "left" : "right",
|
|
121
|
+
createText(Object.assign(Object.assign({}, attribute), {
|
|
122
|
+
id: label.id
|
|
123
|
+
}));
|
|
124
|
+
})),
|
|
125
|
+
dataFilter: labels => {
|
|
126
|
+
const result = [];
|
|
127
|
+
return totalData.forEach((total => {
|
|
128
|
+
const label = labels.find((labelItem => {
|
|
129
|
+
var _a;
|
|
130
|
+
return total.index === (null === (_a = labelItem.data) || void 0 === _a ? void 0 : _a[series.getDimensionField()[0]]);
|
|
131
|
+
}));
|
|
132
|
+
label && (label.data = total, result.push(label));
|
|
133
|
+
})), result;
|
|
134
|
+
},
|
|
135
|
+
overlap: {
|
|
136
|
+
strategy: []
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
}
|
|
24
140
|
//# sourceMappingURL=util.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/component/label/util.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,IAAI,EAAE,QAAQ;IACd,MAAM,EAAE,WAAW;IACnB,GAAG,EAAE,QAAQ;CACd,CAAC;AAEF,MAAM,UAAU,aAAa,CAC3B,SAAqB,EACrB,KAAY,EACZ,YAAyE;IAEzE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACxC,MAAM,KAAK,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1C,MAAM,aAAa,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAS,CAAC;IAEjE,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC5D,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE;QAC5B,MAAM,IAAI,GAAG,SAAS,CAAC,YAAY,CAAC,GAAU,EAAE,KAAK,CAAC,CAAC;QACvD,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QAC1B,IAAI,GAAG,KAAK,MAAM,IAAI,YAAY,EAAE;YAClC,aAAa,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;SAC9D;KACF;IACD,OAAO,aAAa,CAAC;AACvB,CAAC","file":"util.js","sourcesContent":["import type { Datum } from '../../typings';\nimport type { ILabelInfo } from './label';\nimport { barLabel } from './bar';\nimport { symbolLabel } from './symbol';\nimport { pieLabel } from './pie';\n\nexport const markLabelConfigFunc = {\n rect: barLabel,\n symbol: symbolLabel,\n arc: pieLabel\n};\n\nexport function textAttribute(\n labelInfo: ILabelInfo,\n datum: Datum,\n formatMethod: (text: string | string[], datum?: any) => string | string[]\n) {\n const { labelMark, series } = labelInfo;\n const field = series.getMeasureField()[0];\n const textAttribute = { text: datum[field], data: datum } as any;\n\n const attributes = Object.keys(labelMark.stateStyle.normal);\n for (const key of attributes) {\n const attr = labelMark.getAttribute(key as any, datum);\n textAttribute[key] = attr;\n if (key === 'text' && formatMethod) {\n textAttribute[key] = formatMethod(textAttribute[key], datum);\n }\n }\n return textAttribute;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/component/label/util.ts"],"names":[],"mappings":"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","file":"util.js","sourcesContent":["import type { WaterfallSeries } from './../../series/waterfall/waterfall';\nimport { Direction, type Datum } from '../../typings';\nimport type { ILabelInfo } from './label';\nimport type { BaseLabelAttrs, LabelItem, Strategy } from '@visactor/vrender-components';\nimport type { ICartesianSeries } from '../../series/interface';\nimport { isString } from '@visactor/vutils';\nimport { createText } from '@visactor/vrender';\nimport type { IWaterfallSeriesSpec } from '../../series/waterfall/interface';\n\nexport const labelRuleMap = {\n rect: barLabel,\n symbol: symbolLabel,\n arc: pieLabel,\n point: pointLabel,\n\n stackLabel: stackLabel\n};\n\nexport enum LabelRule {\n rect = 'rect',\n symbol = 'symbol',\n arc = 'arc',\n point = 'point',\n stackLabel = 'stackLabel'\n}\n\nexport function textAttribute(\n labelInfo: ILabelInfo,\n datum: Datum,\n formatMethod?: (text: string | string[], datum?: any) => string | string[]\n) {\n const { labelMark, series } = labelInfo;\n const field = series.getMeasureField()[0];\n const textAttribute = { text: datum[field], data: datum } as any;\n\n const attributes = Object.keys(labelMark.stateStyle.normal);\n for (const key of attributes) {\n const attr = labelMark.getAttribute(key as any, datum);\n textAttribute[key] = attr;\n if (key === 'text' && formatMethod) {\n textAttribute[key] = formatMethod(textAttribute[key], datum);\n }\n }\n return textAttribute;\n}\n\n/**\n * symbol 图元标签规则。\n */\nexport function symbolLabel(labelInfo: ILabelInfo) {\n const { series, labelSpec } = labelInfo;\n\n // encode position config\n const defaultPosition = (series as ICartesianSeries).direction === 'horizontal' ? 'right' : 'top';\n const position = labelSpec.position ?? defaultPosition;\n\n // encode overlap config\n let overlap;\n if (labelSpec.overlap === false) {\n overlap = false;\n } else {\n overlap = {\n strategy: labelSpec.overlap?.strategy ?? symbolLabelOverlapStrategy(),\n avoidBaseMark: position !== 'center'\n };\n }\n\n return { position, overlap };\n}\n\nfunction symbolLabelOverlapStrategy() {\n const strategy: Strategy[] = [\n {\n type: 'position',\n position: ['top', 'bottom', 'right', 'left', 'top-right', 'top-left', 'bottom-left', 'bottom-right']\n }\n ];\n\n return strategy;\n}\n\n/**\n *\n */\nexport function barLabel(labelInfo: ILabelInfo) {\n const { series, labelSpec = {} } = labelInfo;\n\n // encode position config\n const labelPosition = labelSpec.position ?? 'outside';\n const direction = (series as ICartesianSeries).direction ?? 'vertical';\n const isInverse =\n (series as ICartesianSeries).direction === 'horizontal'\n ? (series as ICartesianSeries).getXAxisHelper()?.isInverse()\n : (series as ICartesianSeries).getYAxisHelper()?.isInverse();\n\n let position = labelPosition as BaseLabelAttrs['position'];\n\n if (position !== 'inside') {\n position = (data: Datum) => {\n const { data: datum } = data;\n const dataField = series.getMeasureField()[0];\n if (labelPosition === 'outside') {\n const positionMap = { vertical: ['top', 'bottom'], horizontal: ['right', 'left'] };\n const index = (datum?.[dataField] >= 0 && isInverse) || (datum?.[dataField] < 0 && !isInverse) ? 1 : 0;\n return positionMap[direction][index];\n }\n if (labelPosition === 'inside-bottom') {\n return (series as ICartesianSeries).direction === 'horizontal' ? 'inside-left' : 'inside-bottom';\n }\n if (labelPosition === 'inside-top') {\n return (series as ICartesianSeries).direction === 'horizontal' ? 'inside-right' : 'inside-top';\n }\n return labelPosition;\n };\n }\n // encode overlap config\n let overlap;\n if (labelSpec.overlap === false) {\n overlap = false;\n } else {\n overlap = {\n strategy: labelSpec.overlap?.strategy ?? barLabelOverlapStrategy(series as ICartesianSeries)\n };\n }\n\n // encode smartInvert\n let smartInvert = false;\n if (isString(labelPosition) && labelPosition.includes('inside')) {\n smartInvert = true;\n }\n\n return { position, overlap, smartInvert };\n}\n\nfunction barLabelOverlapStrategy(series: ICartesianSeries) {\n const strategy: Strategy[] = [\n {\n type: 'position',\n position: (data: any) => {\n const { data: datum } = data;\n const dataField = series.getMeasureField()[0];\n const isInverse =\n (series as ICartesianSeries).direction === 'horizontal'\n ? (series as ICartesianSeries).getXAxisHelper()?.isInverse()\n : (series as ICartesianSeries).getYAxisHelper()?.isInverse();\n if (isInverse) {\n if (datum?.[dataField] >= 0) {\n return series.direction === 'horizontal' ? ['left', 'inside-left'] : ['bottom', 'inside-bottom'];\n }\n return series.direction === 'horizontal' ? ['right', 'inside-right'] : ['top', 'inside-top'];\n }\n if (datum?.[dataField] >= 0) {\n return series.direction === 'horizontal' ? ['right', 'inside-right'] : ['top', 'inside-top'];\n }\n return series.direction === 'horizontal' ? ['left', 'inside-left'] : ['bottom', 'inside-bottom'];\n }\n }\n ];\n\n return strategy;\n}\n\n/**\n * 无关图元,指定x/y坐标的标签配置规则\n */\nexport function pointLabel(labelInfo: ILabelInfo) {\n const { labelSpec } = labelInfo;\n\n // encode overlap config\n let overlap;\n if (labelSpec.overlap === false) {\n overlap = false;\n } else {\n overlap = {\n avoidBaseMark: false\n };\n }\n\n return { position: 'center', overlap };\n}\n\n/**\n * pie 图元标签配置规则\n */\n\nexport function pieLabel(labelInfo: ILabelInfo) {\n const { labelSpec } = labelInfo;\n // encode position config\n const labelPosition = labelSpec.position ?? 'outside';\n const position = labelPosition as BaseLabelAttrs['position'];\n\n // encode smartInvert\n let smartInvert;\n if (labelSpec.smartInvert) {\n smartInvert = labelSpec.smartInvert;\n } else {\n smartInvert = isString(labelPosition) && labelPosition.includes('inside');\n }\n\n return { position, smartInvert };\n}\n\n/**\n * 瀑布图堆积标签配置规则\n */\n\nexport function stackLabel(labelInfo: ILabelInfo) {\n const series = labelInfo.series as WaterfallSeries;\n const labelSpec = labelInfo.labelSpec || ({} as IWaterfallSeriesSpec['stackLabel']);\n const totalData = series.getTotalData();\n return {\n customLayoutFunc: (labels: LabelItem[]) => {\n return labels.map(label => {\n const pos = labelSpec.position || 'withChange';\n const offset = labelSpec.offset || 0;\n\n const datum = label.data;\n const attribute = textAttribute(labelInfo, datum, labelSpec.formatMethod);\n const x = (datum: any) => {\n if (series.direction === Direction.vertical) {\n return series.totalPositionX(datum, 'index', 0.5);\n }\n if (pos === 'middle') {\n return (series.totalPositionX(datum, 'end') + series.totalPositionY(datum, 'start')) * 0.5;\n } else if (pos === 'max') {\n return series.totalPositionX(datum, datum.end >= datum.start ? 'end' : 'start') + offset;\n } else if (pos === 'min') {\n return series.totalPositionX(datum, datum.end >= datum.start ? 'start' : 'end') - offset;\n }\n return series.totalPositionX(datum, 'end') + (datum.end >= datum.start ? offset : -offset);\n };\n const y = (datum: any) => {\n if (series.direction === Direction.vertical) {\n if (pos === 'middle') {\n return (series.totalPositionY(datum, 'end') + series.totalPositionY(datum, 'start')) * 0.5;\n } else if (pos === 'max') {\n return series.totalPositionY(datum, datum.end >= datum.start ? 'end' : 'start') - offset;\n } else if (pos === 'min') {\n return series.totalPositionY(datum, datum.end >= datum.start ? 'start' : 'end') + offset;\n }\n return series.totalPositionY(datum, 'end') + (datum.end >= datum.start ? -offset : offset);\n }\n return series.totalPositionY(datum, 'index', 0.5);\n };\n attribute.x = x(datum);\n attribute.y = y(datum);\n if (series.direction === Direction.vertical) {\n attribute.textBaseline =\n pos === 'middle'\n ? pos\n : (pos === 'withChange' && datum.end - datum.start >= 0) || pos === 'max'\n ? 'bottom'\n : 'top';\n } else {\n attribute.textAlign =\n pos === 'middle'\n ? 'center'\n : (pos === 'withChange' && datum.end - datum.start >= 0) || pos === 'max'\n ? 'left'\n : 'right';\n }\n return createText({ ...attribute, id: label.id });\n });\n },\n dataFilter: (labels: LabelItem[]) => {\n const result: LabelItem[] = [];\n totalData.forEach((total: any) => {\n const label = labels.find(labelItem => {\n return total.index === labelItem.data?.[series.getDimensionField()[0]];\n });\n if (label) {\n label.data = total;\n result.push(label);\n }\n });\n return result;\n },\n overlap: {\n strategy: [] as any\n }\n };\n}\n"]}
|
|
@@ -16,7 +16,7 @@ export declare abstract class BaseLegend<T extends ILegendCommonSpec> extends Ba
|
|
|
16
16
|
protected _visible: boolean;
|
|
17
17
|
get visible(): boolean;
|
|
18
18
|
protected _position: 'start' | 'middle' | 'end';
|
|
19
|
-
get position(): "
|
|
19
|
+
get position(): "start" | "end" | "middle";
|
|
20
20
|
get layoutOrient(): IOrientType;
|
|
21
21
|
set layoutOrient(v: IOrientType);
|
|
22
22
|
protected _legendData: CompilableData;
|