@visactor/vchart 1.5.1-alpha.6 → 1.5.1
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 +1 -1
- package/build/index.js +1349 -417
- package/build/index.min.js +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/cjs/chart/base-chart.js +4 -1
- package/cjs/chart/base-chart.js.map +1 -1
- package/cjs/chart/common/interface.d.ts +2 -1
- package/cjs/chart/common/interface.js.map +1 -1
- package/cjs/chart/correlation/correlation.d.ts +11 -0
- package/cjs/chart/correlation/correlation.js +53 -0
- package/cjs/chart/correlation/correlation.js.map +1 -0
- package/cjs/chart/correlation/index.d.ts +2 -0
- package/cjs/chart/correlation/index.js +21 -0
- package/cjs/chart/correlation/index.js.map +1 -0
- package/cjs/chart/correlation/interface.d.ts +6 -0
- package/cjs/chart/correlation/interface.js +6 -0
- package/cjs/chart/correlation/interface.js.map +1 -0
- package/cjs/chart/index.d.ts +5 -3
- package/cjs/chart/index.js +16 -2
- package/cjs/chart/index.js.map +1 -1
- package/cjs/chart/interface/type.d.ts +2 -1
- package/cjs/chart/interface/type.js +2 -1
- package/cjs/chart/interface/type.js.map +1 -1
- package/cjs/chart/sequence/sequence.js +0 -1
- package/cjs/chart/sequence/sequence.js.map +1 -1
- package/cjs/chart/waterfall/waterfall.js.map +1 -1
- package/cjs/component/axis/base-axis.d.ts +2 -2
- package/cjs/component/axis/base-axis.js.map +1 -1
- package/cjs/component/axis/cartesian/axis.d.ts +4 -0
- package/cjs/component/axis/cartesian/axis.js +51 -9
- package/cjs/component/axis/cartesian/axis.js.map +1 -1
- package/cjs/component/axis/cartesian/interface/common.d.ts +6 -1
- package/cjs/component/axis/cartesian/interface/common.js.map +1 -1
- package/cjs/component/axis/cartesian/interface/spec.d.ts +2 -1
- package/cjs/component/axis/cartesian/interface/spec.js.map +1 -1
- package/cjs/component/axis/cartesian/interface/theme.d.ts +2 -1
- package/cjs/component/axis/cartesian/interface/theme.js.map +1 -1
- package/cjs/component/base/base-component.d.ts +1 -1
- package/cjs/component/base/base-component.js.map +1 -1
- package/cjs/component/brush/brush.d.ts +2 -2
- package/cjs/component/brush/brush.js.map +1 -1
- package/cjs/component/brush/interface.d.ts +1 -1
- package/cjs/component/brush/interface.js.map +1 -1
- package/cjs/component/common/trigger/desktop.d.ts +1 -0
- package/cjs/component/common/trigger/desktop.js +1 -0
- package/cjs/component/common/trigger/desktop.js.map +1 -1
- package/cjs/component/common/trigger/mobile.d.ts +1 -0
- package/cjs/component/common/trigger/mobile.js +1 -0
- package/cjs/component/common/trigger/mobile.js.map +1 -1
- package/cjs/component/crosshair/cartesian.d.ts +2 -2
- package/cjs/component/crosshair/cartesian.js.map +1 -1
- package/cjs/component/crosshair/polar.d.ts +2 -2
- package/cjs/component/crosshair/polar.js.map +1 -1
- package/cjs/component/custom-mark/custom-mark.d.ts +2 -2
- package/cjs/component/custom-mark/custom-mark.js.map +1 -1
- package/cjs/component/data-zoom/data-filter-base-component.d.ts +26 -9
- package/cjs/component/data-zoom/data-filter-base-component.js +92 -20
- package/cjs/component/data-zoom/data-filter-base-component.js.map +1 -1
- package/cjs/component/data-zoom/data-zoom/data-zoom.d.ts +2 -3
- package/cjs/component/data-zoom/data-zoom/data-zoom.js +16 -8
- package/cjs/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
- package/cjs/component/data-zoom/interface.d.ts +36 -2
- package/cjs/component/data-zoom/interface.js.map +1 -1
- package/cjs/component/data-zoom/scroll-bar/scroll-bar.d.ts +3 -3
- package/cjs/component/data-zoom/scroll-bar/scroll-bar.js +17 -9
- package/cjs/component/data-zoom/scroll-bar/scroll-bar.js.map +1 -1
- package/cjs/component/geo/geo-coordinate.d.ts +2 -2
- package/cjs/component/geo/geo-coordinate.js.map +1 -1
- package/cjs/component/indicator/indicator.d.ts +2 -2
- package/cjs/component/indicator/indicator.js.map +1 -1
- package/cjs/component/interface/common.d.ts +2 -2
- package/cjs/component/interface/common.js.map +1 -1
- package/cjs/component/label/base-label.d.ts +2 -2
- package/cjs/component/label/base-label.js.map +1 -1
- package/cjs/component/legend/base-legend.d.ts +2 -2
- package/cjs/component/legend/base-legend.js.map +1 -1
- package/cjs/component/legend/continuous/legend.d.ts +1 -1
- package/cjs/component/legend/discrete/legend.d.ts +1 -1
- package/cjs/component/legend/interface.d.ts +3 -0
- package/cjs/component/legend/interface.js.map +1 -1
- package/cjs/component/map-label/component.d.ts +3 -3
- package/cjs/component/map-label/component.js.map +1 -1
- package/cjs/component/marker/base-marker.d.ts +2 -2
- package/cjs/component/marker/base-marker.js.map +1 -1
- package/cjs/component/marker/mark-line/mark-line.js.map +1 -1
- package/cjs/component/marker/mark-point/mark-point.js.map +1 -1
- package/cjs/component/player/player.d.ts +2 -2
- package/cjs/component/player/player.js.map +1 -1
- package/cjs/component/title/title.d.ts +2 -2
- package/cjs/component/title/title.js.map +1 -1
- package/cjs/component/tooltip/handler/base.d.ts +1 -1
- package/cjs/component/tooltip/handler/dom/util.js.map +1 -1
- package/cjs/component/tooltip/handler/utils/common.js.map +1 -1
- package/cjs/component/tooltip/handler/utils/compose.js +2 -1
- package/cjs/component/tooltip/handler/utils/compose.js.map +1 -1
- package/cjs/component/tooltip/tooltip.d.ts +2 -2
- package/cjs/component/tooltip/tooltip.js.map +1 -1
- package/cjs/constant/correlation.d.ts +3 -0
- package/cjs/constant/correlation.js +11 -0
- package/cjs/constant/correlation.js.map +1 -0
- package/cjs/constant/index.d.ts +1 -0
- package/cjs/constant/index.js +2 -1
- package/cjs/constant/index.js.map +1 -1
- package/cjs/constant/word-cloud.js +1 -2
- package/cjs/core/factory.js +2 -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/data/transforms/correlation-center.d.ts +4 -0
- package/cjs/data/transforms/correlation-center.js +18 -0
- package/cjs/data/transforms/correlation-center.js.map +1 -0
- package/cjs/data/transforms/correlation.d.ts +17 -0
- package/cjs/data/transforms/correlation.js +58 -0
- package/cjs/data/transforms/correlation.js.map +1 -0
- package/cjs/interaction/dimension-trigger.js +1 -2
- package/cjs/interaction/interaction.js +2 -1
- package/cjs/interaction/zoom/zoomable.d.ts +20 -12
- package/cjs/interaction/zoom/zoomable.js +94 -74
- package/cjs/interaction/zoom/zoomable.js.map +1 -1
- package/cjs/layout/base-layout.d.ts +7 -1
- package/cjs/layout/base-layout.js +24 -10
- package/cjs/layout/base-layout.js.map +1 -1
- package/cjs/layout/layout3d/index.d.ts +6 -0
- package/cjs/layout/layout3d/index.js +14 -0
- package/cjs/layout/layout3d/index.js.map +1 -1
- package/cjs/mark/arc-3d.js +1 -1
- package/cjs/mark/index.d.ts +3 -2
- package/cjs/mark/index.js +10 -1
- package/cjs/mark/index.js.map +1 -1
- package/cjs/mark/interface/type.d.ts +1 -0
- package/cjs/mark/interface/type.js +1 -1
- package/cjs/mark/interface/type.js.map +1 -1
- package/cjs/mark/ripple.d.ts +12 -0
- package/cjs/mark/ripple.js +29 -0
- package/cjs/mark/ripple.js.map +1 -0
- package/cjs/model/base-model.d.ts +0 -3
- package/cjs/model/base-model.js +0 -3
- package/cjs/model/base-model.js.map +1 -1
- package/cjs/model/interface.d.ts +0 -2
- package/cjs/model/interface.js.map +1 -1
- package/cjs/series/area/area.js +4 -2
- package/cjs/series/area/area.js.map +1 -1
- package/cjs/series/bar/bar.d.ts +1 -0
- package/cjs/series/bar/bar.js +4 -3
- package/cjs/series/bar/bar.js.map +1 -1
- package/cjs/series/base/base-series.js +6 -9
- package/cjs/series/base/base-series.js.map +1 -1
- package/cjs/series/box-plot/box-plot.js +9 -9
- package/cjs/series/box-plot/box-plot.js.map +1 -1
- package/cjs/series/circle-packing/circle-packing.js +7 -6
- package/cjs/series/circle-packing/circle-packing.js.map +1 -1
- package/cjs/series/correlation/animation.d.ts +8 -0
- package/cjs/series/correlation/animation.js +22 -0
- package/cjs/series/correlation/animation.js.map +1 -0
- package/cjs/series/correlation/constant.d.ts +2 -0
- package/cjs/series/correlation/constant.js +27 -0
- package/cjs/series/correlation/constant.js.map +1 -0
- package/cjs/series/correlation/correlation.d.ts +57 -0
- package/cjs/series/correlation/correlation.js +215 -0
- package/cjs/series/correlation/correlation.js.map +1 -0
- package/cjs/series/correlation/interface.d.ts +37 -0
- package/cjs/series/correlation/interface.js +6 -0
- package/cjs/series/correlation/interface.js.map +1 -0
- package/cjs/series/dot/dot.js +2 -4
- package/cjs/series/dot/dot.js.map +1 -1
- package/cjs/series/funnel/funnel.js +4 -6
- package/cjs/series/funnel/funnel.js.map +1 -1
- package/cjs/series/gauge/gauge-pointer.d.ts +1 -0
- package/cjs/series/gauge/gauge-pointer.js +4 -2
- package/cjs/series/gauge/gauge-pointer.js.map +1 -1
- package/cjs/series/gauge/gauge.d.ts +1 -0
- package/cjs/series/gauge/gauge.js +5 -3
- package/cjs/series/gauge/gauge.js.map +1 -1
- package/cjs/series/heatmap/heatmap.js +2 -4
- package/cjs/series/heatmap/heatmap.js.map +1 -1
- package/cjs/series/index.d.ts +4 -2
- package/cjs/series/index.js +11 -2
- package/cjs/series/index.js.map +1 -1
- package/cjs/series/interface/series.d.ts +1 -1
- package/cjs/series/interface/series.js.map +1 -1
- package/cjs/series/interface/theme.d.ts +2 -0
- package/cjs/series/interface/theme.js +3 -2
- package/cjs/series/interface/theme.js.map +1 -1
- package/cjs/series/interface/type.d.ts +7 -2
- package/cjs/series/interface/type.js +4 -2
- package/cjs/series/interface/type.js.map +1 -1
- package/cjs/series/line/line.d.ts +1 -0
- package/cjs/series/line/line.js +4 -0
- package/cjs/series/line/line.js.map +1 -1
- package/cjs/series/link/link.js +6 -7
- package/cjs/series/link/link.js.map +1 -1
- package/cjs/series/map/map.js +2 -4
- package/cjs/series/map/map.js.map +1 -1
- package/cjs/series/mixin/line-mixin.js +2 -5
- package/cjs/series/mixin/line-mixin.js.map +1 -1
- package/cjs/series/pie/interface.d.ts +2 -0
- package/cjs/series/pie/interface.js.map +1 -1
- package/cjs/series/pie/pie-3d.js +6 -6
- package/cjs/series/pie/pie-3d.js.map +1 -1
- package/cjs/series/pie/pie.d.ts +2 -0
- package/cjs/series/pie/pie.js +18 -3
- package/cjs/series/pie/pie.js.map +1 -1
- package/cjs/series/progress/circular/circular.d.ts +1 -0
- package/cjs/series/progress/circular/circular.js +5 -3
- package/cjs/series/progress/circular/circular.js.map +1 -1
- package/cjs/series/progress/linear/linear.js +6 -6
- package/cjs/series/progress/linear/linear.js.map +1 -1
- package/cjs/series/radar/animation.js.map +1 -1
- package/cjs/series/radar/radar.d.ts +1 -0
- package/cjs/series/radar/radar.js +6 -2
- package/cjs/series/radar/radar.js.map +1 -1
- package/cjs/series/range-area/range-area.js +2 -3
- package/cjs/series/range-area/range-area.js.map +1 -1
- package/cjs/series/range-column/range-column.d.ts +1 -0
- package/cjs/series/range-column/range-column.js +11 -11
- package/cjs/series/range-column/range-column.js.map +1 -1
- package/cjs/series/rose/rose.d.ts +1 -0
- package/cjs/series/rose/rose.js +4 -2
- package/cjs/series/rose/rose.js.map +1 -1
- package/cjs/series/sankey/sankey.js +7 -9
- package/cjs/series/sankey/sankey.js.map +1 -1
- package/cjs/series/scatter/scatter.d.ts +1 -0
- package/cjs/series/scatter/scatter.js +4 -3
- package/cjs/series/scatter/scatter.js.map +1 -1
- package/cjs/series/sunburst/sunburst.js +4 -6
- package/cjs/series/sunburst/sunburst.js.map +1 -1
- package/cjs/series/treemap/treemap.js +10 -9
- package/cjs/series/treemap/treemap.js.map +1 -1
- package/cjs/series/word-cloud/base.d.ts +1 -0
- package/cjs/series/word-cloud/base.js +6 -3
- package/cjs/series/word-cloud/base.js.map +1 -1
- package/cjs/series/word-cloud/word-cloud-3d.js +2 -3
- package/cjs/series/word-cloud/word-cloud-3d.js.map +1 -1
- package/cjs/theme/builtin/common/component/axis/cartesian-axis.js +31 -3
- package/cjs/theme/builtin/common/component/axis/cartesian-axis.js.map +1 -1
- package/cjs/theme/builtin/common/component/indicator.js +1 -1
- package/cjs/theme/builtin/common/component/indicator.js.map +1 -1
- package/cjs/theme/builtin/common/component/legend/continuous.js +1 -1
- package/cjs/theme/builtin/common/component/legend/continuous.js.map +1 -1
- package/cjs/theme/builtin/common/component/legend/discrete-legend.js +1 -1
- package/cjs/theme/builtin/common/component/legend/discrete-legend.js.map +1 -1
- package/cjs/theme/builtin/common/component/mark-area.js +12 -10
- package/cjs/theme/builtin/common/component/mark-area.js.map +1 -1
- package/cjs/theme/builtin/common/component/mark-line.js +19 -12
- package/cjs/theme/builtin/common/component/mark-line.js.map +1 -1
- package/cjs/theme/builtin/common/component/mark-point.js +8 -2
- package/cjs/theme/builtin/common/component/mark-point.js.map +1 -1
- package/cjs/theme/builtin/common/component/poptip.js +1 -1
- package/cjs/theme/builtin/common/component/poptip.js.map +1 -1
- package/cjs/theme/builtin/common/component/title.js +1 -1
- package/cjs/theme/builtin/common/component/title.js.map +1 -1
- package/cjs/theme/builtin/common/component/tooltip.js +2 -2
- package/cjs/theme/builtin/common/component/tooltip.js.map +1 -1
- package/cjs/theme/builtin/common/component/total-label.js +1 -1
- package/cjs/theme/builtin/common/component/total-label.js.map +1 -1
- package/cjs/theme/builtin/common/series/area.js +4 -1
- package/cjs/theme/builtin/common/series/area.js.map +1 -1
- package/cjs/theme/builtin/common/series/bar.js +4 -1
- package/cjs/theme/builtin/common/series/bar.js.map +1 -1
- package/cjs/theme/builtin/common/series/circle-packing.js +4 -1
- package/cjs/theme/builtin/common/series/circle-packing.js.map +1 -1
- package/cjs/theme/builtin/common/series/correlation.d.ts +2 -0
- package/cjs/theme/builtin/common/series/correlation.js +22 -0
- package/cjs/theme/builtin/common/series/correlation.js.map +1 -0
- package/cjs/theme/builtin/common/series/funnel.js +12 -3
- package/cjs/theme/builtin/common/series/funnel.js.map +1 -1
- package/cjs/theme/builtin/common/series/index.js +3 -2
- package/cjs/theme/builtin/common/series/index.js.map +1 -1
- package/cjs/theme/builtin/common/series/line.js +4 -1
- package/cjs/theme/builtin/common/series/line.js.map +1 -1
- package/cjs/theme/builtin/common/series/map.js +4 -1
- package/cjs/theme/builtin/common/series/map.js.map +1 -1
- package/cjs/theme/builtin/common/series/pie.js +9 -1
- package/cjs/theme/builtin/common/series/pie.js.map +1 -1
- package/cjs/theme/builtin/common/series/radar.js +4 -1
- package/cjs/theme/builtin/common/series/radar.js.map +1 -1
- package/cjs/theme/builtin/common/series/rose.js +5 -1
- package/cjs/theme/builtin/common/series/rose.js.map +1 -1
- package/cjs/theme/builtin/common/series/scatter.js +4 -1
- package/cjs/theme/builtin/common/series/scatter.js.map +1 -1
- package/cjs/theme/builtin/common/series/treemap.js +4 -1
- package/cjs/theme/builtin/common/series/treemap.js.map +1 -1
- package/cjs/theme/builtin/dark/color-scheme.js +1 -1
- package/cjs/theme/builtin/dark/color-scheme.js.map +1 -1
- package/cjs/theme/builtin/light/color-scheme.js +3 -3
- package/cjs/theme/builtin/light/color-scheme.js.map +1 -1
- package/cjs/theme/color-scheme/builtin/interface.d.ts +1 -1
- package/cjs/theme/color-scheme/builtin/interface.js.map +1 -1
- package/cjs/theme/color-scheme/interface.d.ts +1 -1
- package/cjs/theme/color-scheme/interface.js.map +1 -1
- package/cjs/theme/color-scheme/util.js +3 -7
- package/cjs/theme/color-scheme/util.js.map +1 -1
- package/cjs/typings/event.d.ts +1 -0
- package/cjs/typings/event.js +6 -0
- package/cjs/typings/event.js.map +1 -0
- package/cjs/typings/spec/chart.d.ts +2 -0
- package/cjs/typings/spec/chart.js.map +1 -1
- package/cjs/typings/spec/common.d.ts +8 -6
- package/cjs/typings/spec/common.js.map +1 -1
- package/cjs/typings/tooltip/line.d.ts +1 -0
- package/cjs/typings/tooltip/line.js.map +1 -1
- package/cjs/typings/visual.d.ts +4 -0
- package/cjs/typings/visual.js.map +1 -1
- package/cjs/vchart-all.js +2 -2
- package/cjs/vchart-all.js.map +1 -1
- package/esm/chart/base-chart.js +4 -1
- package/esm/chart/base-chart.js.map +1 -1
- package/esm/chart/common/interface.d.ts +2 -1
- package/esm/chart/common/interface.js.map +1 -1
- package/esm/chart/correlation/correlation.d.ts +11 -0
- package/esm/chart/correlation/correlation.js +52 -0
- package/esm/chart/correlation/correlation.js.map +1 -0
- package/esm/chart/correlation/index.d.ts +2 -0
- package/esm/chart/correlation/index.js +4 -0
- package/esm/chart/correlation/index.js.map +1 -0
- package/esm/chart/correlation/interface.d.ts +6 -0
- package/esm/chart/correlation/interface.js +2 -0
- package/esm/chart/correlation/interface.js.map +1 -0
- package/esm/chart/index.d.ts +5 -3
- package/esm/chart/index.js +4 -2
- package/esm/chart/index.js.map +1 -1
- package/esm/chart/interface/type.d.ts +2 -1
- package/esm/chart/interface/type.js +2 -1
- package/esm/chart/interface/type.js.map +1 -1
- package/esm/chart/sequence/sequence.js +0 -1
- package/esm/chart/sequence/sequence.js.map +1 -1
- package/esm/chart/waterfall/waterfall.js.map +1 -1
- package/esm/component/axis/base-axis.d.ts +2 -2
- package/esm/component/axis/base-axis.js.map +1 -1
- package/esm/component/axis/cartesian/axis.d.ts +4 -0
- package/esm/component/axis/cartesian/axis.js +52 -8
- package/esm/component/axis/cartesian/axis.js.map +1 -1
- package/esm/component/axis/cartesian/interface/common.d.ts +6 -1
- package/esm/component/axis/cartesian/interface/common.js.map +1 -1
- package/esm/component/axis/cartesian/interface/spec.d.ts +2 -1
- package/esm/component/axis/cartesian/interface/spec.js.map +1 -1
- package/esm/component/axis/cartesian/interface/theme.d.ts +2 -1
- package/esm/component/axis/cartesian/interface/theme.js.map +1 -1
- package/esm/component/base/base-component.d.ts +1 -1
- package/esm/component/base/base-component.js.map +1 -1
- package/esm/component/brush/brush.d.ts +2 -2
- package/esm/component/brush/brush.js.map +1 -1
- package/esm/component/brush/interface.d.ts +1 -1
- package/esm/component/brush/interface.js.map +1 -1
- package/esm/component/common/trigger/desktop.d.ts +1 -0
- package/esm/component/common/trigger/desktop.js +1 -0
- package/esm/component/common/trigger/desktop.js.map +1 -1
- package/esm/component/common/trigger/mobile.d.ts +1 -0
- package/esm/component/common/trigger/mobile.js +1 -0
- package/esm/component/common/trigger/mobile.js.map +1 -1
- package/esm/component/crosshair/cartesian.d.ts +2 -2
- package/esm/component/crosshair/cartesian.js.map +1 -1
- package/esm/component/crosshair/polar.d.ts +2 -2
- package/esm/component/crosshair/polar.js.map +1 -1
- package/esm/component/custom-mark/custom-mark.d.ts +2 -2
- package/esm/component/custom-mark/custom-mark.js.map +1 -1
- package/esm/component/data-zoom/data-filter-base-component.d.ts +26 -9
- package/esm/component/data-zoom/data-filter-base-component.js +91 -20
- package/esm/component/data-zoom/data-filter-base-component.js.map +1 -1
- package/esm/component/data-zoom/data-zoom/data-zoom.d.ts +2 -3
- package/esm/component/data-zoom/data-zoom/data-zoom.js +17 -9
- package/esm/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
- package/esm/component/data-zoom/interface.d.ts +36 -2
- package/esm/component/data-zoom/interface.js.map +1 -1
- package/esm/component/data-zoom/scroll-bar/scroll-bar.d.ts +3 -3
- package/esm/component/data-zoom/scroll-bar/scroll-bar.js +18 -10
- package/esm/component/data-zoom/scroll-bar/scroll-bar.js.map +1 -1
- package/esm/component/geo/geo-coordinate.d.ts +2 -2
- package/esm/component/geo/geo-coordinate.js.map +1 -1
- package/esm/component/indicator/indicator.d.ts +2 -2
- package/esm/component/indicator/indicator.js.map +1 -1
- package/esm/component/interface/common.d.ts +2 -2
- package/esm/component/interface/common.js.map +1 -1
- package/esm/component/label/base-label.d.ts +2 -2
- package/esm/component/label/base-label.js.map +1 -1
- package/esm/component/legend/base-legend.d.ts +2 -2
- package/esm/component/legend/base-legend.js.map +1 -1
- package/esm/component/legend/continuous/legend.d.ts +1 -1
- package/esm/component/legend/discrete/legend.d.ts +1 -1
- package/esm/component/legend/interface.d.ts +3 -0
- package/esm/component/legend/interface.js.map +1 -1
- package/esm/component/map-label/component.d.ts +3 -3
- package/esm/component/map-label/component.js.map +1 -1
- package/esm/component/marker/base-marker.d.ts +2 -2
- package/esm/component/marker/base-marker.js.map +1 -1
- package/esm/component/marker/mark-line/mark-line.js.map +1 -1
- package/esm/component/marker/mark-point/mark-point.js.map +1 -1
- package/esm/component/player/player.d.ts +2 -2
- package/esm/component/player/player.js.map +1 -1
- package/esm/component/title/title.d.ts +2 -2
- package/esm/component/title/title.js.map +1 -1
- package/esm/component/tooltip/handler/base.d.ts +1 -1
- package/esm/component/tooltip/handler/dom/util.js.map +1 -1
- package/esm/component/tooltip/handler/utils/common.js.map +1 -1
- package/esm/component/tooltip/handler/utils/compose.js +2 -1
- package/esm/component/tooltip/handler/utils/compose.js.map +1 -1
- package/esm/component/tooltip/tooltip.d.ts +2 -2
- package/esm/component/tooltip/tooltip.js.map +1 -1
- package/esm/constant/correlation.d.ts +3 -0
- package/esm/constant/correlation.js +8 -0
- package/esm/constant/correlation.js.map +1 -0
- package/esm/constant/index.d.ts +1 -0
- package/esm/constant/index.js +2 -0
- package/esm/constant/index.js.map +1 -1
- package/esm/constant/word-cloud.js +1 -2
- package/esm/core/factory.js +2 -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/data/transforms/correlation-center.d.ts +4 -0
- package/esm/data/transforms/correlation-center.js +14 -0
- package/esm/data/transforms/correlation-center.js.map +1 -0
- package/esm/data/transforms/correlation.d.ts +17 -0
- package/esm/data/transforms/correlation.js +49 -0
- package/esm/data/transforms/correlation.js.map +1 -0
- package/esm/interaction/dimension-trigger.js +1 -2
- package/esm/interaction/interaction.js +2 -1
- package/esm/interaction/zoom/zoomable.d.ts +20 -12
- package/esm/interaction/zoom/zoomable.js +96 -74
- package/esm/interaction/zoom/zoomable.js.map +1 -1
- package/esm/layout/base-layout.d.ts +7 -1
- package/esm/layout/base-layout.js +24 -10
- package/esm/layout/base-layout.js.map +1 -1
- package/esm/layout/layout3d/index.d.ts +6 -0
- package/esm/layout/layout3d/index.js +14 -0
- package/esm/layout/layout3d/index.js.map +1 -1
- package/esm/mark/arc-3d.js +1 -1
- package/esm/mark/index.d.ts +3 -2
- package/esm/mark/index.js +3 -1
- package/esm/mark/index.js.map +1 -1
- package/esm/mark/interface/type.d.ts +1 -0
- package/esm/mark/interface/type.js +1 -1
- package/esm/mark/interface/type.js.map +1 -1
- package/esm/mark/ripple.d.ts +12 -0
- package/esm/mark/ripple.js +27 -0
- package/esm/mark/ripple.js.map +1 -0
- package/esm/model/base-model.d.ts +0 -3
- package/esm/model/base-model.js +0 -3
- package/esm/model/base-model.js.map +1 -1
- package/esm/model/interface.d.ts +0 -2
- package/esm/model/interface.js.map +1 -1
- package/esm/series/area/area.js +4 -3
- package/esm/series/area/area.js.map +1 -1
- package/esm/series/bar/bar.d.ts +1 -0
- package/esm/series/bar/bar.js +4 -2
- package/esm/series/bar/bar.js.map +1 -1
- package/esm/series/base/base-series.js +5 -7
- package/esm/series/base/base-series.js.map +1 -1
- package/esm/series/box-plot/box-plot.js +10 -8
- package/esm/series/box-plot/box-plot.js.map +1 -1
- package/esm/series/circle-packing/circle-packing.js +7 -6
- package/esm/series/circle-packing/circle-packing.js.map +1 -1
- package/esm/series/correlation/animation.d.ts +8 -0
- package/esm/series/correlation/animation.js +16 -0
- package/esm/series/correlation/animation.js.map +1 -0
- package/esm/series/correlation/constant.d.ts +2 -0
- package/esm/series/correlation/constant.js +25 -0
- package/esm/series/correlation/constant.js.map +1 -0
- package/esm/series/correlation/correlation.d.ts +57 -0
- package/esm/series/correlation/correlation.js +237 -0
- package/esm/series/correlation/correlation.js.map +1 -0
- package/esm/series/correlation/interface.d.ts +37 -0
- package/esm/series/correlation/interface.js +2 -0
- package/esm/series/correlation/interface.js.map +1 -0
- package/esm/series/dot/dot.js +2 -3
- package/esm/series/dot/dot.js.map +1 -1
- package/esm/series/funnel/funnel.js +4 -5
- package/esm/series/funnel/funnel.js.map +1 -1
- package/esm/series/gauge/gauge-pointer.d.ts +1 -0
- package/esm/series/gauge/gauge-pointer.js +4 -2
- package/esm/series/gauge/gauge-pointer.js.map +1 -1
- package/esm/series/gauge/gauge.d.ts +1 -0
- package/esm/series/gauge/gauge.js +5 -3
- package/esm/series/gauge/gauge.js.map +1 -1
- package/esm/series/heatmap/heatmap.js +2 -4
- package/esm/series/heatmap/heatmap.js.map +1 -1
- package/esm/series/index.d.ts +4 -2
- package/esm/series/index.js +3 -1
- package/esm/series/index.js.map +1 -1
- package/esm/series/interface/series.d.ts +1 -1
- package/esm/series/interface/series.js.map +1 -1
- package/esm/series/interface/theme.d.ts +2 -0
- package/esm/series/interface/theme.js +4 -1
- package/esm/series/interface/theme.js.map +1 -1
- package/esm/series/interface/type.d.ts +7 -2
- package/esm/series/interface/type.js +4 -2
- package/esm/series/interface/type.js.map +1 -1
- package/esm/series/line/line.d.ts +1 -0
- package/esm/series/line/line.js +4 -0
- package/esm/series/line/line.js.map +1 -1
- package/esm/series/link/link.js +6 -5
- package/esm/series/link/link.js.map +1 -1
- package/esm/series/map/map.js +2 -3
- package/esm/series/map/map.js.map +1 -1
- package/esm/series/mixin/line-mixin.js +3 -5
- package/esm/series/mixin/line-mixin.js.map +1 -1
- package/esm/series/pie/interface.d.ts +2 -0
- package/esm/series/pie/interface.js.map +1 -1
- package/esm/series/pie/pie-3d.js +6 -6
- package/esm/series/pie/pie-3d.js.map +1 -1
- package/esm/series/pie/pie.d.ts +2 -0
- package/esm/series/pie/pie.js +16 -2
- package/esm/series/pie/pie.js.map +1 -1
- package/esm/series/progress/circular/circular.d.ts +1 -0
- package/esm/series/progress/circular/circular.js +5 -2
- package/esm/series/progress/circular/circular.js.map +1 -1
- package/esm/series/progress/linear/linear.js +5 -5
- package/esm/series/progress/linear/linear.js.map +1 -1
- package/esm/series/radar/animation.js.map +1 -1
- package/esm/series/radar/radar.d.ts +1 -0
- package/esm/series/radar/radar.js +6 -2
- package/esm/series/radar/radar.js.map +1 -1
- package/esm/series/range-area/range-area.js +2 -2
- package/esm/series/range-area/range-area.js.map +1 -1
- package/esm/series/range-column/range-column.d.ts +1 -0
- package/esm/series/range-column/range-column.js +10 -11
- package/esm/series/range-column/range-column.js.map +1 -1
- package/esm/series/rose/rose.d.ts +1 -0
- package/esm/series/rose/rose.js +4 -2
- package/esm/series/rose/rose.js.map +1 -1
- package/esm/series/sankey/sankey.js +7 -9
- package/esm/series/sankey/sankey.js.map +1 -1
- package/esm/series/scatter/scatter.d.ts +1 -0
- package/esm/series/scatter/scatter.js +4 -3
- package/esm/series/scatter/scatter.js.map +1 -1
- package/esm/series/sunburst/sunburst.js +4 -6
- package/esm/series/sunburst/sunburst.js.map +1 -1
- package/esm/series/treemap/treemap.js +10 -9
- package/esm/series/treemap/treemap.js.map +1 -1
- package/esm/series/word-cloud/base.d.ts +1 -0
- package/esm/series/word-cloud/base.js +6 -3
- package/esm/series/word-cloud/base.js.map +1 -1
- package/esm/series/word-cloud/word-cloud-3d.js +2 -3
- package/esm/series/word-cloud/word-cloud-3d.js.map +1 -1
- package/esm/theme/builtin/common/component/axis/cartesian-axis.js +28 -2
- package/esm/theme/builtin/common/component/axis/cartesian-axis.js.map +1 -1
- package/esm/theme/builtin/common/component/indicator.js +1 -1
- package/esm/theme/builtin/common/component/indicator.js.map +1 -1
- package/esm/theme/builtin/common/component/legend/continuous.js +1 -1
- package/esm/theme/builtin/common/component/legend/continuous.js.map +1 -1
- package/esm/theme/builtin/common/component/legend/discrete-legend.js +1 -1
- package/esm/theme/builtin/common/component/legend/discrete-legend.js.map +1 -1
- package/esm/theme/builtin/common/component/mark-area.js +12 -10
- package/esm/theme/builtin/common/component/mark-area.js.map +1 -1
- package/esm/theme/builtin/common/component/mark-line.js +19 -12
- package/esm/theme/builtin/common/component/mark-line.js.map +1 -1
- package/esm/theme/builtin/common/component/mark-point.js +8 -2
- package/esm/theme/builtin/common/component/mark-point.js.map +1 -1
- package/esm/theme/builtin/common/component/poptip.js +1 -1
- package/esm/theme/builtin/common/component/poptip.js.map +1 -1
- package/esm/theme/builtin/common/component/title.js +1 -1
- package/esm/theme/builtin/common/component/title.js.map +1 -1
- package/esm/theme/builtin/common/component/tooltip.js +2 -2
- package/esm/theme/builtin/common/component/tooltip.js.map +1 -1
- package/esm/theme/builtin/common/component/total-label.js +1 -1
- package/esm/theme/builtin/common/component/total-label.js.map +1 -1
- package/esm/theme/builtin/common/series/area.js +4 -1
- package/esm/theme/builtin/common/series/area.js.map +1 -1
- package/esm/theme/builtin/common/series/bar.js +4 -1
- package/esm/theme/builtin/common/series/bar.js.map +1 -1
- package/esm/theme/builtin/common/series/circle-packing.js +4 -1
- package/esm/theme/builtin/common/series/circle-packing.js.map +1 -1
- package/esm/theme/builtin/common/series/correlation.d.ts +2 -0
- package/esm/theme/builtin/common/series/correlation.js +18 -0
- package/esm/theme/builtin/common/series/correlation.js.map +1 -0
- package/esm/theme/builtin/common/series/funnel.js +12 -3
- package/esm/theme/builtin/common/series/funnel.js.map +1 -1
- package/esm/theme/builtin/common/series/index.js +4 -1
- package/esm/theme/builtin/common/series/index.js.map +1 -1
- package/esm/theme/builtin/common/series/line.js +4 -1
- package/esm/theme/builtin/common/series/line.js.map +1 -1
- package/esm/theme/builtin/common/series/map.js +4 -1
- package/esm/theme/builtin/common/series/map.js.map +1 -1
- package/esm/theme/builtin/common/series/pie.js +9 -1
- package/esm/theme/builtin/common/series/pie.js.map +1 -1
- package/esm/theme/builtin/common/series/radar.js +4 -1
- package/esm/theme/builtin/common/series/radar.js.map +1 -1
- package/esm/theme/builtin/common/series/rose.js +5 -1
- package/esm/theme/builtin/common/series/rose.js.map +1 -1
- package/esm/theme/builtin/common/series/scatter.js +4 -1
- package/esm/theme/builtin/common/series/scatter.js.map +1 -1
- package/esm/theme/builtin/common/series/treemap.js +4 -1
- package/esm/theme/builtin/common/series/treemap.js.map +1 -1
- package/esm/theme/builtin/dark/color-scheme.js +1 -1
- package/esm/theme/builtin/dark/color-scheme.js.map +1 -1
- package/esm/theme/builtin/light/color-scheme.js +3 -3
- package/esm/theme/builtin/light/color-scheme.js.map +1 -1
- package/esm/theme/color-scheme/builtin/interface.d.ts +1 -1
- package/esm/theme/color-scheme/builtin/interface.js.map +1 -1
- package/esm/theme/color-scheme/interface.d.ts +1 -1
- package/esm/theme/color-scheme/interface.js.map +1 -1
- package/esm/theme/color-scheme/util.js +4 -7
- package/esm/theme/color-scheme/util.js.map +1 -1
- package/esm/typings/event.d.ts +1 -0
- package/esm/typings/event.js +2 -0
- package/esm/typings/event.js.map +1 -0
- package/esm/typings/spec/chart.d.ts +2 -0
- package/esm/typings/spec/chart.js.map +1 -1
- package/esm/typings/spec/common.d.ts +8 -6
- package/esm/typings/spec/common.js.map +1 -1
- package/esm/typings/tooltip/line.d.ts +1 -0
- package/esm/typings/tooltip/line.js.map +1 -1
- package/esm/typings/visual.d.ts +4 -0
- package/esm/typings/visual.js.map +1 -1
- package/esm/vchart-all.js +4 -2
- package/esm/vchart-all.js.map +1 -1
- package/package.json +11 -8
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { isArray } from "@visactor/vutils";
|
|
2
|
+
|
|
3
|
+
import { isNil, isNumber, degreeToRadian } from "@visactor/vutils";
|
|
4
|
+
|
|
5
|
+
import { field as getFieldAccessor, extent, toPercent } from "@visactor/vgrammar-util";
|
|
6
|
+
|
|
7
|
+
import { CORRELATION_X, CORRELATION_Y, CORRELATION_SIZE } from "../../constant";
|
|
8
|
+
|
|
9
|
+
export const correlation = (data, options) => {
|
|
10
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
|
|
11
|
+
if (!data || !(null == options ? void 0 : options.view) || !isArray(data)) return data;
|
|
12
|
+
const viewBox = options.view();
|
|
13
|
+
if (viewBox.x1 - viewBox.x0 == 0 || viewBox.y1 - viewBox.y0 == 0 || viewBox.x1 - viewBox.x0 == -1 / 0 || viewBox.x1 - viewBox.x0 == 1 / 0 || viewBox.y1 - viewBox.y0 == -1 / 0 || viewBox.y1 - viewBox.y0 == 1 / 0) return data;
|
|
14
|
+
const startAngle = degreeToRadian(null !== (_a = options.startAngle) && void 0 !== _a ? _a : -90), endAngle = degreeToRadian(null !== (_b = options.endAngle) && void 0 !== _b ? _b : 270), maxRadius = Math.max((viewBox.x1 - viewBox.x0) / 2, (viewBox.y1 - viewBox.y0) / 2), innerRadius = toPercent(null !== (_c = options.innerRadius) && void 0 !== _c ? _c : 0, maxRadius), outerRadius = toPercent(options.outerRadius, maxRadius), center = [ isNumber(null === (_d = options.center) || void 0 === _d ? void 0 : _d[0]) ? options.center[0] : viewBox.x0 + toPercent(null !== (_f = null === (_e = options.center) || void 0 === _e ? void 0 : _e[0]) && void 0 !== _f ? _f : "50%", viewBox.x1 - viewBox.x0), isNumber(null === (_g = options.center) || void 0 === _g ? void 0 : _g[1]) ? options.center[1] : viewBox.y0 + toPercent(null !== (_j = null === (_h = options.center) || void 0 === _h ? void 0 : _h[1]) && void 0 !== _j ? _j : "50%", viewBox.y1 - viewBox.y0) ], fieldAccessor = getFieldAccessor(options.field), values = data.map(fieldAccessor), [min, max] = extent(values), radiusScale = min === max ? val => (innerRadius + outerRadius) / 2 : val => innerRadius + (outerRadius - innerRadius) * (val - min) / (max - min), sizeAccessor = isNil(options.radiusField) ? fieldAccessor : getFieldAccessor(options.radiusField), defaultSize = null !== (_l = null === (_k = null == options ? void 0 : options.radiusRange) || void 0 === _k ? void 0 : _k[1]) && void 0 !== _l ? _l : 5;
|
|
15
|
+
let sizeScale = datum => defaultSize;
|
|
16
|
+
if (sizeAccessor) {
|
|
17
|
+
const [minSize, maxSize] = sizeAccessor !== fieldAccessor ? extent(data.map(sizeAccessor)) : [ min, max ], minR = null !== (_o = null === (_m = options.radiusRange) || void 0 === _m ? void 0 : _m[0]) && void 0 !== _o ? _o : 5, maxR = null !== (_q = null === (_p = options.radiusRange) || void 0 === _p ? void 0 : _p[1]) && void 0 !== _q ? _q : 5;
|
|
18
|
+
minSize !== maxSize && (sizeScale = datum => minR + (maxR - minR) * (sizeAccessor(datum) - minSize) / (maxSize - minSize));
|
|
19
|
+
}
|
|
20
|
+
const minAngle = Math.min(startAngle, endAngle), maxAngle = Math.max(startAngle, endAngle), angles = getPartialAngles(minAngle, maxAngle, data.length), res = [], searchAngle = (maxAngle - minAngle) / 60;
|
|
21
|
+
return data.forEach(((datum, index) => {
|
|
22
|
+
const radius = radiusScale(values[index]), size = sizeScale(datum);
|
|
23
|
+
let x, y, angle = angles[index];
|
|
24
|
+
for (let i = 0; i < 60 && (x = center[0] + radius * Math.cos(angle), y = center[1] + radius * Math.sin(angle),
|
|
25
|
+
hasOverlap({
|
|
26
|
+
x: x,
|
|
27
|
+
y: y,
|
|
28
|
+
size: size
|
|
29
|
+
}, res) || x - size < viewBox.x0 || x + size > viewBox.x1 || y - size < viewBox.y0 || y + size > viewBox.y1); i++) i < 59 && (angle += searchAngle,
|
|
30
|
+
angle > maxAngle ? angle = minAngle : angle < minAngle && (angle = maxAngle));
|
|
31
|
+
res.push(Object.assign({
|
|
32
|
+
[CORRELATION_X]: x,
|
|
33
|
+
[CORRELATION_Y]: y,
|
|
34
|
+
[CORRELATION_SIZE]: size
|
|
35
|
+
}, datum));
|
|
36
|
+
})), res;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
const getPartialAngles = (minAngle, maxAngle, count) => {
|
|
40
|
+
let offsetAngle = 0, stepCount = Math.max(Math.ceil(2 * (maxAngle - minAngle) / Math.PI), 2), stepAngle = (maxAngle - minAngle) / stepCount, stepIndex = 0, stepSign = 1, i = 0, j = 0;
|
|
41
|
+
const res = [];
|
|
42
|
+
let startAngle = minAngle;
|
|
43
|
+
for (;i < count; ) j < stepCount && (res.push(startAngle + (j % 2 ? Math.floor(j / 2) + Math.floor(stepCount / 2) : j / 2) * stepAngle * stepSign),
|
|
44
|
+
j++), i++, j === stepCount && (j = 0, stepIndex += 1, stepSign *= -1, 0 === offsetAngle ? offsetAngle = stepAngle / 2 : offsetAngle /= 2,
|
|
45
|
+
startAngle = -1 === stepSign ? maxAngle - offsetAngle : minAngle + offsetAngle,
|
|
46
|
+
stepIndex >= 2 && (stepAngle /= 2, stepCount *= 2));
|
|
47
|
+
return res;
|
|
48
|
+
}, hasOverlap = (item, arr) => !(!arr || !arr.length) && arr.some((entry => Math.pow(item.x - entry.x, 2) + Math.pow(item.y - entry.y, 2) < Math.pow(item.size + entry.size, 2)));
|
|
49
|
+
//# sourceMappingURL=correlation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/data/transforms/correlation.ts"],"names":[],"mappings":"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","file":"correlation.js","sourcesContent":["import { isArray } from '@visactor/vutils';\nimport { isNil, isNumber, degreeToRadian } from '@visactor/vutils';\nimport { field as getFieldAccessor, extent, toPercent } from '@visactor/vgrammar-util';\nimport { CORRELATION_X, CORRELATION_Y, CORRELATION_SIZE } from '../../constant';\n\nexport interface ICorrelationOpt {\n field: string;\n radiusField?: string;\n radiusRange?: [number, number];\n center?: [string | number, string | number];\n startAngle?: number;\n endAngle?: number;\n innerRadius?: string | number;\n outerRadius?: string | number;\n}\n\nexport interface CircularRelationItem {\n x: number;\n y: number;\n size: number;\n datum: any;\n}\n\nexport const correlation = (data: any, options: any) => {\n if (!data || !options?.view || !isArray(data)) {\n return data;\n }\n\n const viewBox = options.view();\n\n if (\n viewBox.x1 - viewBox.x0 === 0 ||\n viewBox.y1 - viewBox.y0 === 0 ||\n viewBox.x1 - viewBox.x0 === -Infinity ||\n viewBox.x1 - viewBox.x0 === Infinity ||\n viewBox.y1 - viewBox.y0 === -Infinity ||\n viewBox.y1 - viewBox.y0 === Infinity\n ) {\n return data;\n }\n\n const startAngle = degreeToRadian(options.startAngle ?? -90);\n const endAngle = degreeToRadian(options.endAngle ?? 270);\n const maxRadius = Math.max((viewBox.x1 - viewBox.x0) / 2, (viewBox.y1 - viewBox.y0) / 2);\n const innerRadius = toPercent(options.innerRadius ?? 0, maxRadius);\n const outerRadius = toPercent(options.outerRadius, maxRadius);\n\n const center = [\n isNumber(options.center?.[0])\n ? options.center[0]\n : viewBox.x0 + toPercent(options.center?.[0] ?? '50%', viewBox.x1 - viewBox.x0),\n isNumber(options.center?.[1])\n ? options.center[1]\n : viewBox.y0 + toPercent(options.center?.[1] ?? '50%', viewBox.y1 - viewBox.y0)\n ] as [number, number];\n const fieldAccessor = getFieldAccessor(options.field);\n const values = data.map(fieldAccessor);\n const [min, max] = extent(values);\n const radiusScale =\n min === max\n ? (val: number) => (innerRadius + outerRadius) / 2\n : (val: number) => innerRadius + ((outerRadius - innerRadius) * (val - min)) / (max - min);\n\n const sizeAccessor = !isNil(options.radiusField) ? getFieldAccessor(options.radiusField) : fieldAccessor;\n const defaultSize = options?.radiusRange?.[1] ?? 5;\n let sizeScale = (datum: any) => defaultSize;\n\n if (sizeAccessor) {\n const [minSize, maxSize] = sizeAccessor !== fieldAccessor ? extent(data.map(sizeAccessor)) : [min, max];\n const minR = options.radiusRange?.[0] ?? 5;\n const maxR = options.radiusRange?.[1] ?? 5;\n\n if (minSize !== maxSize) {\n sizeScale = (datum: any) => minR + ((maxR - minR) * (sizeAccessor(datum) - minSize)) / (maxSize - minSize);\n }\n }\n\n const minAngle = Math.min(startAngle, endAngle);\n const maxAngle = Math.max(startAngle, endAngle);\n const angles = getPartialAngles(minAngle, maxAngle, data.length);\n\n const res: CircularRelationItem[] = [];\n const searchStep = 60;\n const searchAngle = (maxAngle - minAngle) / searchStep;\n\n data.forEach((datum, index) => {\n const radius = radiusScale(values[index] as number);\n const size = sizeScale(datum);\n let x: number;\n let y: number;\n let angle = angles[index];\n\n for (let i = 0; i < searchStep; i++) {\n x = center[0] + radius * Math.cos(angle);\n y = center[1] + radius * Math.sin(angle);\n\n if (\n hasOverlap({ x, y, size }, res) ||\n x - size < viewBox.x0 ||\n x + size > viewBox.x1 ||\n y - size < viewBox.y0 ||\n y + size > viewBox.y1\n ) {\n if (i < searchStep - 1) {\n angle += searchAngle;\n\n if (angle > maxAngle) {\n angle = minAngle;\n } else if (angle < minAngle) {\n angle = maxAngle;\n }\n }\n continue;\n } else {\n break;\n }\n }\n\n res.push({ [CORRELATION_X]: x, [CORRELATION_Y]: y, [CORRELATION_SIZE]: size, ...datum });\n });\n return res;\n};\n\nconst getPartialAngles = (minAngle: number, maxAngle: number, count: number) => {\n let offsetAngle = 0;\n let stepCount = Math.max(Math.ceil((2 * (maxAngle - minAngle)) / Math.PI), 2);\n let stepAngle = (maxAngle - minAngle) / stepCount;\n let stepIndex = 0;\n let stepSign = 1;\n let i = 0;\n let j = 0;\n const res: number[] = [];\n let startAngle = minAngle;\n\n while (i < count) {\n if (j < stepCount) {\n res.push(startAngle + (j % 2 ? Math.floor(j / 2) + Math.floor(stepCount / 2) : j / 2) * stepAngle * stepSign);\n j++;\n }\n\n i++;\n\n if (j === stepCount) {\n j = 0;\n stepIndex += 1;\n stepSign *= -1;\n\n if (offsetAngle === 0) {\n offsetAngle = stepAngle / 2;\n } else {\n offsetAngle /= 2;\n }\n startAngle = stepSign === -1 ? maxAngle - offsetAngle : minAngle + offsetAngle;\n\n if (stepIndex >= 2) {\n stepAngle /= 2;\n stepCount *= 2;\n }\n }\n }\n\n return res;\n};\n\nconst hasOverlap = (item: Omit<CircularRelationItem, 'datum'>, arr: CircularRelationItem[]) => {\n if (!arr || !arr.length) {\n return false;\n }\n\n return arr.some(entry => {\n return Math.pow(item.x - entry.x, 2) + Math.pow(item.y - entry.y, 2) < Math.pow(item.size + entry.size, 2);\n });\n};\n"]}
|
|
@@ -2,6 +2,12 @@ import type { BaseEventParams, ExtendEventParam, IEvent } from '../../event/inte
|
|
|
2
2
|
import type { IRegion } from '../../region/interface';
|
|
3
3
|
import type { RenderMode } from '../../typings/spec';
|
|
4
4
|
import type { ISeries } from '../../series/interface';
|
|
5
|
+
import type { IDelayType } from '../../typings/event';
|
|
6
|
+
export interface ITriggerOption {
|
|
7
|
+
delayType: IDelayType;
|
|
8
|
+
delayTime: number;
|
|
9
|
+
realTime: boolean;
|
|
10
|
+
}
|
|
5
11
|
export interface IZoomEventOptions {
|
|
6
12
|
shouldZoom?: boolean;
|
|
7
13
|
zoomCallback?: (params: {
|
|
@@ -26,7 +32,7 @@ export interface IZoomable {
|
|
|
26
32
|
zoomDelta: number;
|
|
27
33
|
zoomX: number;
|
|
28
34
|
zoomY: number;
|
|
29
|
-
}, e: BaseEventParams['event']) => void) => void;
|
|
35
|
+
}, e: BaseEventParams['event']) => void, option?: ITriggerOption) => void;
|
|
30
36
|
initScrollEventOfSeries: (s: ISeries, callback?: (params: {
|
|
31
37
|
scrollX: number;
|
|
32
38
|
scrollY: number;
|
|
@@ -34,9 +40,9 @@ export interface IZoomable {
|
|
|
34
40
|
initScrollEventOfRegions: (regions: IRegion[], filter?: (s: ISeries) => boolean, callback?: (params: {
|
|
35
41
|
scrollX: number;
|
|
36
42
|
scrollY: number;
|
|
37
|
-
}, e: BaseEventParams['event']) => void) => void;
|
|
38
|
-
initDragEventOfSeries: (s: ISeries, callback?: (delta: [number, number], e: BaseEventParams['event']) => void) => any;
|
|
39
|
-
initDragEventOfRegions: (regions: IRegion[], filter?: (s: ISeries) => boolean, callback?: (delta: [number, number], e: BaseEventParams['event']) => void) => void;
|
|
43
|
+
}, e: BaseEventParams['event']) => void, option?: ITriggerOption) => void;
|
|
44
|
+
initDragEventOfSeries: (s: ISeries, callback?: (delta: [number, number], e: BaseEventParams['event']) => void, option?: ITriggerOption) => any;
|
|
45
|
+
initDragEventOfRegions: (regions: IRegion[], filter?: (s: ISeries) => boolean, callback?: (delta: [number, number], e: BaseEventParams['event']) => void, option?: ITriggerOption) => void;
|
|
40
46
|
}
|
|
41
47
|
export declare class Zoomable implements IZoomable {
|
|
42
48
|
private _clickEnable;
|
|
@@ -45,28 +51,30 @@ export declare class Zoomable implements IZoomable {
|
|
|
45
51
|
private _renderMode;
|
|
46
52
|
initZoomable(evt: IEvent, mode?: RenderMode): void;
|
|
47
53
|
private _getTriggerEvent;
|
|
54
|
+
private _zoomEventDispatch;
|
|
48
55
|
private _bindZoomEventAsRegion;
|
|
49
56
|
initZoomEventOfSeries(s: ISeries, callback?: (params: {
|
|
50
57
|
zoomDelta: number;
|
|
51
58
|
zoomX: number;
|
|
52
59
|
zoomY: number;
|
|
53
|
-
}, e: BaseEventParams['event']) => void): void;
|
|
60
|
+
}, e: BaseEventParams['event']) => void, option?: ITriggerOption): void;
|
|
54
61
|
initZoomEventOfRegions(regions: IRegion[], filter?: (s: ISeries) => boolean, callback?: (params: {
|
|
55
62
|
zoomDelta: number;
|
|
56
63
|
zoomX: number;
|
|
57
64
|
zoomY: number;
|
|
58
|
-
}, e: BaseEventParams['event']) => void): void;
|
|
65
|
+
}, e: BaseEventParams['event']) => void, option?: ITriggerOption): void;
|
|
66
|
+
private _scrollEventDispatch;
|
|
67
|
+
private _bindScrollEventAsRegion;
|
|
59
68
|
initScrollEventOfSeries(s: ISeries, callback?: (params: {
|
|
60
69
|
scrollX: number;
|
|
61
70
|
scrollY: number;
|
|
62
|
-
}, e: BaseEventParams['event']) => void): void;
|
|
71
|
+
}, e: BaseEventParams['event']) => void, option?: ITriggerOption): void;
|
|
63
72
|
initScrollEventOfRegions(regions: IRegion[], filter?: (s: ISeries) => boolean, callback?: (params: {
|
|
64
73
|
scrollX: number;
|
|
65
74
|
scrollY: number;
|
|
66
|
-
}, e: BaseEventParams['event']) => void): void;
|
|
67
|
-
private _bindScrollEventAsRegion;
|
|
75
|
+
}, e: BaseEventParams['event']) => void, option?: ITriggerOption): void;
|
|
68
76
|
private _bindDragEventAsRegion;
|
|
69
|
-
initDragEventOfSeries(s: ISeries, callback?: (delta: [number, number], e: BaseEventParams['event']) => void): void;
|
|
70
|
-
initDragEventOfRegions(regions: IRegion[], filter?: (s: ISeries) => boolean, callback?: (delta: [number, number], e: BaseEventParams['event']) => void): void;
|
|
71
|
-
protected _handleDrag(params: ExtendEventParam, callback?: (delta: [number, number], e: BaseEventParams['event']) => void): void;
|
|
77
|
+
initDragEventOfSeries(s: ISeries, callback?: (delta: [number, number], e: BaseEventParams['event']) => void, option?: ITriggerOption): void;
|
|
78
|
+
initDragEventOfRegions(regions: IRegion[], filter?: (s: ISeries) => boolean, callback?: (delta: [number, number], e: BaseEventParams['event']) => void, option?: ITriggerOption): void;
|
|
79
|
+
protected _handleDrag(params: ExtendEventParam, callback?: (delta: [number, number], e: BaseEventParams['event']) => void, option?: ITriggerOption): void;
|
|
72
80
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isNil } from "@visactor/vutils";
|
|
1
|
+
import { debounce, isNil, throttle } from "@visactor/vutils";
|
|
2
2
|
|
|
3
3
|
import { RenderModeEnum } from "../../typings/spec";
|
|
4
4
|
|
|
@@ -8,6 +8,11 @@ import { isPointInRect } from "../../util";
|
|
|
8
8
|
|
|
9
9
|
import { Event_Bubble_Level, Event_Source_Type } from "../../constant";
|
|
10
10
|
|
|
11
|
+
const delayMap = {
|
|
12
|
+
debounce: debounce,
|
|
13
|
+
throttle: throttle
|
|
14
|
+
};
|
|
15
|
+
|
|
11
16
|
export class Zoomable {
|
|
12
17
|
initZoomable(evt, mode = RenderModeEnum["desktop-browser"]) {
|
|
13
18
|
this._eventObj = evt, this._renderMode = mode, defaultTriggerEvent[this._renderMode] && (this._clickEnable = !0,
|
|
@@ -16,87 +21,97 @@ export class Zoomable {
|
|
|
16
21
|
_getTriggerEvent(type) {
|
|
17
22
|
return defaultTriggerEvent[this._renderMode][type];
|
|
18
23
|
}
|
|
19
|
-
|
|
24
|
+
_zoomEventDispatch(params, regionOrSeries, callback) {
|
|
25
|
+
if (!params.event) return;
|
|
26
|
+
const event = params.event.clone();
|
|
27
|
+
this._zoomableTrigger.parserZoomEvent(event);
|
|
28
|
+
const {zoomDelta: zoomDelta, zoomX: zoomX, zoomY: zoomY} = event;
|
|
29
|
+
isNil(zoomDelta) || isPointInRect({
|
|
30
|
+
x: zoomX,
|
|
31
|
+
y: zoomY
|
|
32
|
+
}, Object.assign(Object.assign({}, regionOrSeries.getLayoutRect()), regionOrSeries.getLayoutStartPoint())) && (this._clickEnable = !1,
|
|
33
|
+
callback && callback({
|
|
34
|
+
zoomDelta: zoomDelta,
|
|
35
|
+
zoomX: zoomX,
|
|
36
|
+
zoomY: zoomY
|
|
37
|
+
}, event), this._eventObj.emit("zoom", {
|
|
38
|
+
scale: event.zoomDelta,
|
|
39
|
+
scaleCenter: {
|
|
40
|
+
x: event.zoomX,
|
|
41
|
+
y: event.zoomY
|
|
42
|
+
},
|
|
43
|
+
model: this
|
|
44
|
+
}));
|
|
45
|
+
}
|
|
46
|
+
_bindZoomEventAsRegion(eventObj, regionOrSeries, callback, option) {
|
|
47
|
+
var _a, _b;
|
|
48
|
+
const delayType = null !== (_a = null == option ? void 0 : option.delayType) && void 0 !== _a ? _a : "throttle", delayTime = null !== (_b = null == option ? void 0 : option.delayTime) && void 0 !== _b ? _b : 0;
|
|
20
49
|
eventObj.on(this._getTriggerEvent("scrollEnd"), {
|
|
21
50
|
level: Event_Bubble_Level.chart,
|
|
22
51
|
consume: !1
|
|
23
|
-
}, (params => {
|
|
52
|
+
}, delayMap[delayType]((params => {
|
|
24
53
|
this._zoomableTrigger.clearZoom();
|
|
25
|
-
})), eventObj.on(this._getTriggerEvent("scroll"), {
|
|
54
|
+
}), delayTime)), eventObj.on(this._getTriggerEvent("scroll"), {
|
|
26
55
|
level: Event_Bubble_Level.chart,
|
|
27
56
|
consume: !0
|
|
28
|
-
}, (params => {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
this._zoomableTrigger.parserZoomEvent(event);
|
|
32
|
-
const {zoomDelta: zoomDelta, zoomX: zoomX, zoomY: zoomY} = event;
|
|
33
|
-
isNil(zoomDelta) || isPointInRect({
|
|
34
|
-
x: zoomX,
|
|
35
|
-
y: zoomY
|
|
36
|
-
}, Object.assign(Object.assign({}, regionOrSeries.getLayoutRect()), regionOrSeries.getLayoutStartPoint())) && (this._clickEnable = !1,
|
|
37
|
-
callback && callback({
|
|
38
|
-
zoomDelta: zoomDelta,
|
|
39
|
-
zoomX: zoomX,
|
|
40
|
-
zoomY: zoomY
|
|
41
|
-
}, event), this._eventObj.emit("zoom", {
|
|
42
|
-
scale: event.zoomDelta,
|
|
43
|
-
scaleCenter: {
|
|
44
|
-
x: event.zoomX,
|
|
45
|
-
y: event.zoomY
|
|
46
|
-
},
|
|
47
|
-
model: this
|
|
48
|
-
}));
|
|
49
|
-
}));
|
|
57
|
+
}, delayMap[delayType]((params => {
|
|
58
|
+
this._zoomEventDispatch(params, regionOrSeries, callback);
|
|
59
|
+
}), delayTime));
|
|
50
60
|
}
|
|
51
|
-
initZoomEventOfSeries(s, callback) {
|
|
52
|
-
defaultTriggerEvent[this._renderMode] && this._bindZoomEventAsRegion(s.event, s, callback);
|
|
61
|
+
initZoomEventOfSeries(s, callback, option) {
|
|
62
|
+
defaultTriggerEvent[this._renderMode] && this._bindZoomEventAsRegion(s.event, s, callback, option);
|
|
53
63
|
}
|
|
54
|
-
initZoomEventOfRegions(regions, filter, callback) {
|
|
64
|
+
initZoomEventOfRegions(regions, filter, callback, option) {
|
|
55
65
|
defaultTriggerEvent[this._renderMode] && regions.forEach((r => {
|
|
56
66
|
filter ? r.getSeries().forEach((s => {
|
|
57
|
-
filter(s) && this._bindZoomEventAsRegion(s.event, s, callback);
|
|
58
|
-
})) : this._bindZoomEventAsRegion(this._eventObj, r, callback);
|
|
67
|
+
filter(s) && this._bindZoomEventAsRegion(s.event, s, callback, option);
|
|
68
|
+
})) : this._bindZoomEventAsRegion(this._eventObj, r, callback, option);
|
|
59
69
|
}));
|
|
60
70
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
71
|
+
_scrollEventDispatch(params, regionOrSeries, callback) {
|
|
72
|
+
if (!params.event) return;
|
|
73
|
+
const {event: event} = params;
|
|
74
|
+
this._zoomableTrigger.parserScrollEvent(event);
|
|
75
|
+
const {scrollX: scrollX, scrollY: scrollY} = event;
|
|
76
|
+
isNil(scrollX) && isNil(scrollY) || isPointInRect({
|
|
77
|
+
x: event.canvasX,
|
|
78
|
+
y: event.canvasY
|
|
79
|
+
}, Object.assign(Object.assign({}, regionOrSeries.getLayoutRect()), regionOrSeries.getLayoutStartPoint())) && (this._clickEnable = !1,
|
|
80
|
+
callback && callback({
|
|
81
|
+
scrollX: scrollX,
|
|
82
|
+
scrollY: scrollY
|
|
83
|
+
}, event), this._eventObj.emit("scroll", {
|
|
84
|
+
scrollX: scrollX,
|
|
85
|
+
scrollY: scrollY,
|
|
86
|
+
model: this
|
|
69
87
|
}));
|
|
70
88
|
}
|
|
71
|
-
_bindScrollEventAsRegion(eventObj, regionOrSeries, callback) {
|
|
89
|
+
_bindScrollEventAsRegion(eventObj, regionOrSeries, callback, option) {
|
|
90
|
+
var _a, _b;
|
|
91
|
+
const delayType = null !== (_a = null == option ? void 0 : option.delayType) && void 0 !== _a ? _a : "throttle", delayTime = null !== (_b = null == option ? void 0 : option.delayTime) && void 0 !== _b ? _b : 0;
|
|
72
92
|
eventObj.on(this._getTriggerEvent("scrollEnd"), {
|
|
73
93
|
level: Event_Bubble_Level.chart,
|
|
74
94
|
consume: !1
|
|
75
|
-
}, (params => {
|
|
95
|
+
}, delayMap[delayType]((params => {
|
|
76
96
|
this._zoomableTrigger.clearScroll();
|
|
77
|
-
})), eventObj.on(this._getTriggerEvent("scroll"), {
|
|
97
|
+
}), delayTime)), eventObj.on(this._getTriggerEvent("scroll"), {
|
|
78
98
|
level: Event_Bubble_Level.chart,
|
|
79
99
|
consume: !0
|
|
80
|
-
}, (params => {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}, event), this._eventObj.emit("scroll", {
|
|
93
|
-
scrollX: scrollX,
|
|
94
|
-
scrollY: scrollY,
|
|
95
|
-
model: this
|
|
96
|
-
}));
|
|
100
|
+
}, delayMap[delayType]((params => {
|
|
101
|
+
this._scrollEventDispatch(params, regionOrSeries, callback);
|
|
102
|
+
}), delayTime));
|
|
103
|
+
}
|
|
104
|
+
initScrollEventOfSeries(s, callback, option) {
|
|
105
|
+
defaultTriggerEvent[this._renderMode] && this._bindScrollEventAsRegion(s.event, s, callback, option);
|
|
106
|
+
}
|
|
107
|
+
initScrollEventOfRegions(regions, filter, callback, option) {
|
|
108
|
+
defaultTriggerEvent[this._renderMode] && regions.forEach((r => {
|
|
109
|
+
filter ? r.getSeries().forEach((s => {
|
|
110
|
+
filter(s) && this._bindScrollEventAsRegion(s.event, s, callback, option);
|
|
111
|
+
})) : this._bindScrollEventAsRegion(this._eventObj, r, callback, option);
|
|
97
112
|
}));
|
|
98
113
|
}
|
|
99
|
-
_bindDragEventAsRegion(eventObj, regionOrSeries, callback) {
|
|
114
|
+
_bindDragEventAsRegion(eventObj, regionOrSeries, callback, option) {
|
|
100
115
|
eventObj.on(this._getTriggerEvent("start"), {
|
|
101
116
|
level: Event_Bubble_Level.chart
|
|
102
117
|
}, (params => {
|
|
@@ -105,20 +120,20 @@ export class Zoomable {
|
|
|
105
120
|
isPointInRect({
|
|
106
121
|
x: event.canvasX,
|
|
107
122
|
y: event.canvasY
|
|
108
|
-
}, Object.assign(Object.assign({}, regionOrSeries.getLayoutRect()), regionOrSeries.getLayoutStartPoint())) && this._handleDrag(params, callback);
|
|
123
|
+
}, Object.assign(Object.assign({}, regionOrSeries.getLayoutRect()), regionOrSeries.getLayoutStartPoint())) && this._handleDrag(params, callback, option);
|
|
109
124
|
})), eventObj.on("click", {
|
|
110
125
|
level: Event_Bubble_Level.chart
|
|
111
126
|
}, (() => !this._clickEnable));
|
|
112
127
|
}
|
|
113
|
-
initDragEventOfSeries(s, callback) {
|
|
128
|
+
initDragEventOfSeries(s, callback, option) {
|
|
114
129
|
defaultTriggerEvent[this._renderMode] && s.event.on(this._getTriggerEvent("start"), {
|
|
115
130
|
level: Event_Bubble_Level.model,
|
|
116
131
|
filter: ({model: model}) => (null == model ? void 0 : model.id) === s.id
|
|
117
132
|
}, (params => {
|
|
118
|
-
this._handleDrag(params, callback);
|
|
133
|
+
this._handleDrag(params, callback, option);
|
|
119
134
|
}));
|
|
120
135
|
}
|
|
121
|
-
initDragEventOfRegions(regions, filter, callback) {
|
|
136
|
+
initDragEventOfRegions(regions, filter, callback, option) {
|
|
122
137
|
defaultTriggerEvent[this._renderMode] && regions.forEach((r => {
|
|
123
138
|
filter ? r.getSeries().forEach((s => {
|
|
124
139
|
filter(s) && (s.event.on(this._getTriggerEvent("start"), {
|
|
@@ -130,31 +145,38 @@ export class Zoomable {
|
|
|
130
145
|
level: Event_Bubble_Level.model,
|
|
131
146
|
filter: ({model: model}) => (null == model ? void 0 : model.id) === s.id
|
|
132
147
|
}, (() => !this._clickEnable)));
|
|
133
|
-
})) : this._bindDragEventAsRegion(this._eventObj, r, callback);
|
|
148
|
+
})) : this._bindDragEventAsRegion(this._eventObj, r, callback, option);
|
|
134
149
|
}));
|
|
135
150
|
}
|
|
136
|
-
_handleDrag(params, callback) {
|
|
151
|
+
_handleDrag(params, callback, option) {
|
|
152
|
+
var _a, _b, _c;
|
|
137
153
|
if (this._clickEnable = !0, !this._zoomableTrigger.parserDragEvent(params.event)) return;
|
|
138
|
-
const move = this._getTriggerEvent("move"), end = this._getTriggerEvent("end"), event = params.event;
|
|
139
|
-
let
|
|
140
|
-
const mouseup = (
|
|
141
|
-
this.
|
|
154
|
+
const delayType = null !== (_a = null == option ? void 0 : option.delayType) && void 0 !== _a ? _a : "throttle", delayTime = null !== (_b = null == option ? void 0 : option.delayTime) && void 0 !== _b ? _b : 0, realTime = null === (_c = null == option ? void 0 : option.realTime) || void 0 === _c || _c, move = this._getTriggerEvent("move"), end = this._getTriggerEvent("end"), event = params.event;
|
|
155
|
+
let moveX = event.canvasX, moveY = event.canvasY, upX = event.canvasX, upY = event.canvasY;
|
|
156
|
+
const mouseup = delayMap[delayType]((params => {
|
|
157
|
+
this._clickEnable = !1;
|
|
158
|
+
const event = params.event, delta = [ event.canvasX - upX, event.canvasY - upY ];
|
|
159
|
+
upX = event.canvasX, upY = event.canvasY, !realTime && callback && callback(delta, params.event),
|
|
160
|
+
this._eventObj.emit("panend", {
|
|
161
|
+
delta: delta,
|
|
162
|
+
model: this
|
|
163
|
+
}), this._zoomableTrigger.pointerId = null, this._eventObj.off(move, {
|
|
142
164
|
level: Event_Bubble_Level.chart,
|
|
143
165
|
source: Event_Source_Type.chart
|
|
144
166
|
}, mousemove), this._eventObj.off(end, {
|
|
145
167
|
level: Event_Bubble_Level.chart,
|
|
146
168
|
source: Event_Source_Type.window
|
|
147
169
|
}, mouseup);
|
|
148
|
-
}, mousemove = params => {
|
|
170
|
+
}), delayTime), mousemove = delayMap[delayType]((params => {
|
|
149
171
|
if (!this._zoomableTrigger.parserDragEvent(params.event)) return;
|
|
150
172
|
this._clickEnable = !1;
|
|
151
|
-
const event = params.event, delta = [ event.canvasX -
|
|
152
|
-
|
|
173
|
+
const event = params.event, delta = [ event.canvasX - moveX, event.canvasY - moveY ];
|
|
174
|
+
moveX = event.canvasX, moveY = event.canvasY, realTime && callback && callback(delta, params.event),
|
|
153
175
|
this._eventObj.emit("panmove", {
|
|
154
176
|
delta: delta,
|
|
155
177
|
model: this
|
|
156
178
|
});
|
|
157
|
-
};
|
|
179
|
+
}), delayTime);
|
|
158
180
|
this._eventObj.on(move, {
|
|
159
181
|
level: Event_Bubble_Level.chart,
|
|
160
182
|
source: Event_Source_Type.chart
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/interaction/zoom/zoomable.ts"],"names":[],"mappings":"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","file":"zoomable.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport { isNil } from '@visactor/vutils';\nimport type { BaseEventParams, EventType, ExtendEventParam, IEvent } from '../../event/interface';\nimport type { IRegion } from '../../region/interface';\nimport type { RenderMode } from '../../typings/spec';\nimport { RenderModeEnum } from '../../typings/spec';\nimport { defaultTriggerEvent } from '../../component/common/trigger/config';\nimport type { IZoomTrigger } from '../../component/common/trigger/interface';\nimport { isPointInRect } from '../../util';\nimport type { ISeries } from '../../series/interface';\nimport { Event_Bubble_Level, Event_Source_Type } from '../../constant';\n\nexport interface IZoomEventOptions {\n shouldZoom?: boolean;\n zoomCallback?: (params: { zoomDelta: number; zoomX: number; zoomY: number }, e: BaseEventParams['event']) => void;\n shouldScroll?: boolean;\n scrollCallback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void;\n}\nexport interface IZoomable {\n initZoomable: (evt: IEvent, mode?: RenderMode) => void;\n initZoomEventOfSeries: (\n s: ISeries,\n callback?: (params: { zoomDelta: number; zoomX: number; zoomY: number }, e: BaseEventParams['event']) => void\n ) => any;\n initZoomEventOfRegions: (\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (params: { zoomDelta: number; zoomX: number; zoomY: number }, e: BaseEventParams['event']) => void\n ) => void;\n\n initScrollEventOfSeries: (\n s: ISeries,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void\n ) => any;\n initScrollEventOfRegions: (\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void\n ) => void;\n\n initDragEventOfSeries: (s: ISeries, callback?: (delta: [number, number], e: BaseEventParams['event']) => void) => any;\n initDragEventOfRegions: (\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void\n ) => void;\n}\n\nexport class Zoomable implements IZoomable {\n private _clickEnable: boolean;\n\n private _zoomableTrigger: IZoomTrigger;\n\n private _eventObj: IEvent;\n\n private _renderMode: RenderMode;\n\n initZoomable(evt: IEvent, mode: RenderMode = RenderModeEnum['desktop-browser']) {\n this._eventObj = evt;\n this._renderMode = mode;\n if (defaultTriggerEvent[this._renderMode]) {\n // hack 应该由事件系统做?或者事件系统有更好的方式处理这种交互冲突场景\n this._clickEnable = true;\n this._zoomableTrigger = new (this._getTriggerEvent('trigger') as any)();\n }\n }\n\n // event\n private _getTriggerEvent(type: string): EventType {\n return defaultTriggerEvent[this._renderMode][type];\n }\n\n private _bindZoomEventAsRegion(\n eventObj: IEvent,\n regionOrSeries: IRegion | ISeries,\n callback?: (params: { zoomDelta: number; zoomX: number; zoomY: number }, e: BaseEventParams['event']) => void\n ) {\n eventObj.on(this._getTriggerEvent('scrollEnd'), { level: Event_Bubble_Level.chart, consume: false }, params => {\n this._zoomableTrigger.clearZoom();\n });\n eventObj.on(this._getTriggerEvent('scroll'), { level: Event_Bubble_Level.chart, consume: true }, params => {\n if (!(params as BaseEventParams).event) {\n return;\n }\n const event = (params as BaseEventParams).event.clone();\n this._zoomableTrigger.parserZoomEvent(event);\n // FIXME: event类型目前不全\n const { zoomDelta, zoomX, zoomY } = event as any;\n if (isNil(zoomDelta)) {\n return;\n }\n if (\n !isPointInRect(\n {\n x: zoomX,\n y: zoomY\n },\n {\n ...regionOrSeries.getLayoutRect(),\n ...regionOrSeries.getLayoutStartPoint()\n }\n )\n ) {\n return;\n }\n this._clickEnable = false;\n\n if (callback) {\n // zoomDelta, zoomX, zoomY can be changed in the callback\n callback({ zoomDelta, zoomX, zoomY }, event);\n }\n\n this._eventObj.emit('zoom', {\n scale: event.zoomDelta,\n scaleCenter: { x: event.zoomX, y: event.zoomY },\n model: this\n } as unknown as ExtendEventParam);\n\n // this._eventObj.emit('scroll', {\n // scrollX: event.scrollX,\n // scrollY: event.scrollY,\n // model: this\n // } as unknown as ExtendEventParam);\n });\n }\n\n initZoomEventOfSeries(\n s: ISeries,\n callback?: (params: { zoomDelta: number; zoomX: number; zoomY: number }, e: BaseEventParams['event']) => void\n ) {\n if (defaultTriggerEvent[this._renderMode]) {\n this._bindZoomEventAsRegion(s.event, s, callback);\n }\n }\n\n initZoomEventOfRegions(\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (params: { zoomDelta: number; zoomX: number; zoomY: number }, e: BaseEventParams['event']) => void\n ) {\n if (defaultTriggerEvent[this._renderMode]) {\n regions.forEach(r => {\n if (filter) {\n r.getSeries().forEach(s => {\n if (filter(s)) {\n this._bindZoomEventAsRegion(s.event, s, callback);\n }\n });\n } else {\n this._bindZoomEventAsRegion(this._eventObj, r, callback);\n }\n });\n }\n }\n\n initScrollEventOfSeries(\n s: ISeries,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void\n ) {\n if (defaultTriggerEvent[this._renderMode]) {\n this._bindScrollEventAsRegion(s.event, s, callback);\n }\n }\n\n initScrollEventOfRegions(\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void\n ) {\n if (defaultTriggerEvent[this._renderMode]) {\n regions.forEach(r => {\n if (filter) {\n r.getSeries().forEach(s => {\n if (filter(s)) {\n this._bindScrollEventAsRegion(s.event, s, callback);\n }\n });\n } else {\n this._bindScrollEventAsRegion(this._eventObj, r, callback);\n }\n });\n }\n }\n\n private _bindScrollEventAsRegion(\n eventObj: IEvent,\n regionOrSeries: IRegion | ISeries,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void\n ) {\n eventObj.on(this._getTriggerEvent('scrollEnd'), { level: Event_Bubble_Level.chart, consume: false }, params => {\n this._zoomableTrigger.clearScroll();\n });\n eventObj.on(this._getTriggerEvent('scroll'), { level: Event_Bubble_Level.chart, consume: true }, params => {\n if (!(params as BaseEventParams).event) {\n return;\n }\n const { event } = params as BaseEventParams;\n this._zoomableTrigger.parserScrollEvent(event);\n // FIXME: event类型目前不全\n const { scrollX, scrollY } = event as any;\n if (isNil(scrollX) && isNil(scrollY)) {\n return;\n }\n if (\n !isPointInRect(\n {\n x: event.canvasX,\n y: event.canvasY\n },\n {\n ...regionOrSeries.getLayoutRect(),\n ...regionOrSeries.getLayoutStartPoint()\n }\n )\n ) {\n return;\n }\n this._clickEnable = false;\n\n if (callback) {\n callback({ scrollX, scrollY }, event);\n }\n\n this._eventObj.emit('scroll', {\n scrollX,\n scrollY,\n model: this\n } as unknown as ExtendEventParam);\n });\n }\n\n private _bindDragEventAsRegion(\n eventObj: IEvent,\n regionOrSeries: IRegion | ISeries,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void\n ) {\n eventObj.on(this._getTriggerEvent('start'), { level: Event_Bubble_Level.chart }, params => {\n if (!(params as BaseEventParams).event) {\n return;\n }\n\n const { event } = params as BaseEventParams;\n const shouldTrigger = isPointInRect(\n {\n x: event.canvasX,\n y: event.canvasY\n },\n {\n ...regionOrSeries.getLayoutRect(),\n ...regionOrSeries.getLayoutStartPoint()\n }\n );\n if (shouldTrigger) {\n this._handleDrag(params, callback);\n }\n });\n // click 事件需要在drag和zoom时被屏蔽\n // hack 应该由事件系统做?或者事件系统有更好的方式处理这种交互冲突场景\n eventObj.on('click', { level: Event_Bubble_Level.chart }, () => {\n return !this._clickEnable;\n });\n }\n\n initDragEventOfSeries(s: ISeries, callback?: (delta: [number, number], e: BaseEventParams['event']) => void) {\n if (defaultTriggerEvent[this._renderMode]) {\n s.event.on(\n this._getTriggerEvent('start'),\n { level: Event_Bubble_Level.model, filter: ({ model }) => model?.id === s.id },\n params => {\n this._handleDrag(params, callback);\n }\n );\n }\n }\n\n initDragEventOfRegions(\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void\n ) {\n if (defaultTriggerEvent[this._renderMode]) {\n regions.forEach(r => {\n if (filter) {\n r.getSeries().forEach(s => {\n if (filter(s)) {\n s.event.on(\n this._getTriggerEvent('start'),\n { level: Event_Bubble_Level.model, filter: ({ model }) => model?.id === s.id },\n params => {\n this._handleDrag(params, callback);\n }\n );\n\n // click 事件需要在drag和zoom时被屏蔽\n // hack 应该由事件系统做?或者事件系统有更好的方式处理这种交互冲突场景\n s.event.on(\n 'click',\n { level: Event_Bubble_Level.model, filter: ({ model }) => model?.id === s.id },\n () => {\n return !this._clickEnable;\n }\n );\n }\n });\n } else {\n this._bindDragEventAsRegion(this._eventObj, r, callback);\n }\n });\n }\n }\n\n protected _handleDrag(\n params: ExtendEventParam,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void\n ) {\n this._clickEnable = true;\n if (!this._zoomableTrigger.parserDragEvent(params.event)) {\n return;\n }\n const move = this._getTriggerEvent('move');\n const end = this._getTriggerEvent('end');\n const event = params.event as any;\n let x = event.canvasX;\n let y = event.canvasY;\n\n const mouseup = () => {\n this._zoomableTrigger.pointerId = null;\n this._eventObj.off(\n move,\n { level: Event_Bubble_Level.chart, source: Event_Source_Type.chart },\n mousemove as unknown as any\n );\n this._eventObj.off(end, { level: Event_Bubble_Level.chart, source: Event_Source_Type.window }, mouseup);\n };\n const mousemove = (params: BaseEventParams) => {\n if (!this._zoomableTrigger.parserDragEvent(params.event)) {\n return;\n }\n this._clickEnable = false;\n const event = params.event as any;\n const dx = event.canvasX - x;\n const dy = event.canvasY - y;\n const delta: [number, number] = [dx, dy];\n\n x = event.canvasX;\n y = event.canvasY;\n\n if (callback) {\n callback(delta, params.event);\n }\n this._eventObj.emit('panmove', {\n delta,\n model: this\n } as unknown as ExtendEventParam);\n };\n this._eventObj.on(\n move,\n { level: Event_Bubble_Level.chart, source: Event_Source_Type.chart },\n mousemove as unknown as any\n );\n this._eventObj.on(end, { level: Event_Bubble_Level.chart, source: Event_Source_Type.chart }, mouseup);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/interaction/zoom/zoomable.ts"],"names":[],"mappings":"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","file":"zoomable.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport { debounce, isNil, throttle } from '@visactor/vutils';\nimport type { BaseEventParams, EventType, ExtendEventParam, IEvent } from '../../event/interface';\nimport type { IRegion } from '../../region/interface';\nimport type { RenderMode } from '../../typings/spec';\nimport { RenderModeEnum } from '../../typings/spec';\nimport { defaultTriggerEvent } from '../../component/common/trigger/config';\nimport type { IZoomTrigger } from '../../component/common/trigger/interface';\nimport { isPointInRect } from '../../util';\nimport type { ISeries } from '../../series/interface';\nimport { Event_Bubble_Level, Event_Source_Type } from '../../constant';\nimport type { IDelayType } from '../../typings/event';\n\nconst delayMap = {\n debounce: debounce,\n throttle: throttle\n};\n\nexport interface ITriggerOption {\n delayType: IDelayType;\n delayTime: number;\n realTime: boolean;\n}\nexport interface IZoomEventOptions {\n shouldZoom?: boolean;\n zoomCallback?: (params: { zoomDelta: number; zoomX: number; zoomY: number }, e: BaseEventParams['event']) => void;\n shouldScroll?: boolean;\n scrollCallback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void;\n}\nexport interface IZoomable {\n initZoomable: (evt: IEvent, mode?: RenderMode) => void;\n initZoomEventOfSeries: (\n s: ISeries,\n callback?: (params: { zoomDelta: number; zoomX: number; zoomY: number }, e: BaseEventParams['event']) => void\n ) => any;\n initZoomEventOfRegions: (\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (params: { zoomDelta: number; zoomX: number; zoomY: number }, e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) => void;\n\n initScrollEventOfSeries: (\n s: ISeries,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void\n ) => any;\n initScrollEventOfRegions: (\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) => void;\n\n initDragEventOfSeries: (\n s: ISeries,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) => any;\n\n initDragEventOfRegions: (\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) => void;\n}\n\nexport class Zoomable implements IZoomable {\n private _clickEnable: boolean;\n\n private _zoomableTrigger: IZoomTrigger;\n\n private _eventObj: IEvent;\n\n private _renderMode: RenderMode;\n\n initZoomable(evt: IEvent, mode: RenderMode = RenderModeEnum['desktop-browser']) {\n this._eventObj = evt;\n this._renderMode = mode;\n if (defaultTriggerEvent[this._renderMode]) {\n // hack 应该由事件系统做?或者事件系统有更好的方式处理这种交互冲突场景\n this._clickEnable = true;\n this._zoomableTrigger = new (this._getTriggerEvent('trigger') as any)();\n }\n }\n\n // event\n private _getTriggerEvent(type: string): EventType {\n return defaultTriggerEvent[this._renderMode][type];\n }\n\n private _zoomEventDispatch(\n params: BaseEventParams,\n regionOrSeries: IRegion | ISeries,\n callback?: (params: { zoomDelta: number; zoomX: number; zoomY: number }, e: BaseEventParams['event']) => void\n ) {\n if (!params.event) {\n return;\n }\n const event = params.event.clone();\n this._zoomableTrigger.parserZoomEvent(event);\n // FIXME: event类型目前不全\n const { zoomDelta, zoomX, zoomY } = event as any;\n if (isNil(zoomDelta)) {\n return;\n }\n if (\n !isPointInRect(\n {\n x: zoomX,\n y: zoomY\n },\n {\n ...regionOrSeries.getLayoutRect(),\n ...regionOrSeries.getLayoutStartPoint()\n }\n )\n ) {\n return;\n }\n this._clickEnable = false;\n\n if (callback) {\n // zoomDelta, zoomX, zoomY can be changed in the callback\n callback({ zoomDelta, zoomX, zoomY }, event);\n }\n this._eventObj.emit('zoom', {\n scale: event.zoomDelta,\n scaleCenter: { x: event.zoomX, y: event.zoomY },\n model: this\n } as unknown as ExtendEventParam);\n }\n\n private _bindZoomEventAsRegion(\n eventObj: IEvent,\n regionOrSeries: IRegion | ISeries,\n callback?: (params: { zoomDelta: number; zoomX: number; zoomY: number }, e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n const delayType = option?.delayType ?? 'throttle';\n const delayTime = option?.delayTime ?? 0;\n\n // pc端没有scrollEnd事件,所以漫游模式下scroll仅支持realTime\n eventObj.on(\n this._getTriggerEvent('scrollEnd'),\n { level: Event_Bubble_Level.chart, consume: false },\n delayMap[delayType]((params: BaseEventParams) => {\n this._zoomableTrigger.clearZoom();\n }, delayTime) as any\n );\n\n eventObj.on(\n this._getTriggerEvent('scroll'),\n { level: Event_Bubble_Level.chart, consume: true },\n delayMap[delayType]((params: BaseEventParams) => {\n // if (realTime) {\n this._zoomEventDispatch(params, regionOrSeries, callback);\n // }\n }, delayTime) as any\n );\n }\n\n initZoomEventOfSeries(\n s: ISeries,\n callback?: (params: { zoomDelta: number; zoomX: number; zoomY: number }, e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n if (defaultTriggerEvent[this._renderMode]) {\n this._bindZoomEventAsRegion(s.event, s, callback, option);\n }\n }\n\n initZoomEventOfRegions(\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (params: { zoomDelta: number; zoomX: number; zoomY: number }, e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n if (defaultTriggerEvent[this._renderMode]) {\n regions.forEach(r => {\n if (filter) {\n r.getSeries().forEach(s => {\n if (filter(s)) {\n this._bindZoomEventAsRegion(s.event, s, callback, option);\n }\n });\n } else {\n this._bindZoomEventAsRegion(this._eventObj, r, callback, option);\n }\n });\n }\n }\n\n private _scrollEventDispatch(\n params: BaseEventParams,\n regionOrSeries: IRegion | ISeries,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void\n ) {\n if (!params.event) {\n return;\n }\n const { event } = params;\n this._zoomableTrigger.parserScrollEvent(event);\n // FIXME: event类型目前不全\n const { scrollX, scrollY } = event as any;\n if (isNil(scrollX) && isNil(scrollY)) {\n return;\n }\n if (\n !isPointInRect(\n {\n x: event.canvasX,\n y: event.canvasY\n },\n {\n ...regionOrSeries.getLayoutRect(),\n ...regionOrSeries.getLayoutStartPoint()\n }\n )\n ) {\n return;\n }\n this._clickEnable = false;\n\n if (callback) {\n callback({ scrollX, scrollY }, event);\n }\n this._eventObj.emit('scroll', {\n scrollX,\n scrollY,\n model: this\n } as unknown as ExtendEventParam);\n }\n\n private _bindScrollEventAsRegion(\n eventObj: IEvent,\n regionOrSeries: IRegion | ISeries,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n const delayType = option?.delayType ?? 'throttle';\n const delayTime = option?.delayTime ?? 0;\n\n // pc端没有scrollEnd事件,所以漫游模式下scroll仅支持realTime\n eventObj.on(\n this._getTriggerEvent('scrollEnd'),\n { level: Event_Bubble_Level.chart, consume: false },\n delayMap[delayType]((params: any) => {\n this._zoomableTrigger.clearScroll();\n }, delayTime)\n );\n\n eventObj.on(\n this._getTriggerEvent('scroll'),\n { level: Event_Bubble_Level.chart, consume: true },\n delayMap[delayType]((params: any) => {\n // if (realTime) {\n this._scrollEventDispatch(params, regionOrSeries, callback);\n // }\n }, delayTime)\n );\n }\n\n initScrollEventOfSeries(\n s: ISeries,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n if (defaultTriggerEvent[this._renderMode]) {\n this._bindScrollEventAsRegion(s.event, s, callback, option);\n }\n }\n\n initScrollEventOfRegions(\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n if (defaultTriggerEvent[this._renderMode]) {\n regions.forEach(r => {\n if (filter) {\n r.getSeries().forEach(s => {\n if (filter(s)) {\n this._bindScrollEventAsRegion(s.event, s, callback, option);\n }\n });\n } else {\n this._bindScrollEventAsRegion(this._eventObj, r, callback, option);\n }\n });\n }\n }\n\n private _bindDragEventAsRegion(\n eventObj: IEvent,\n regionOrSeries: IRegion | ISeries,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n eventObj.on(this._getTriggerEvent('start'), { level: Event_Bubble_Level.chart }, (params: any) => {\n if (!params.event) {\n return;\n }\n\n const { event } = params;\n const shouldTrigger = isPointInRect(\n {\n x: event.canvasX,\n y: event.canvasY\n },\n {\n ...regionOrSeries.getLayoutRect(),\n ...regionOrSeries.getLayoutStartPoint()\n }\n );\n if (shouldTrigger) {\n this._handleDrag(params, callback, option);\n }\n });\n // click 事件需要在drag和zoom时被屏蔽\n // hack 应该由事件系统做?或者事件系统有更好的方式处理这种交互冲突场景\n eventObj.on('click', { level: Event_Bubble_Level.chart }, () => {\n return !this._clickEnable;\n });\n }\n\n initDragEventOfSeries(\n s: ISeries,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n if (defaultTriggerEvent[this._renderMode]) {\n s.event.on(\n this._getTriggerEvent('start'),\n { level: Event_Bubble_Level.model, filter: ({ model }) => model?.id === s.id },\n params => {\n this._handleDrag(params, callback, option);\n }\n );\n }\n }\n\n initDragEventOfRegions(\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n if (defaultTriggerEvent[this._renderMode]) {\n regions.forEach(r => {\n if (filter) {\n r.getSeries().forEach(s => {\n if (filter(s)) {\n s.event.on(\n this._getTriggerEvent('start'),\n { level: Event_Bubble_Level.model, filter: ({ model }) => model?.id === s.id },\n params => {\n this._handleDrag(params, callback);\n }\n );\n\n // click 事件需要在drag和zoom时被屏蔽\n // hack 应该由事件系统做?或者事件系统有更好的方式处理这种交互冲突场景\n s.event.on(\n 'click',\n { level: Event_Bubble_Level.model, filter: ({ model }) => model?.id === s.id },\n () => {\n return !this._clickEnable;\n }\n );\n }\n });\n } else {\n this._bindDragEventAsRegion(this._eventObj, r, callback, option);\n }\n });\n }\n }\n\n protected _handleDrag(\n params: ExtendEventParam,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n this._clickEnable = true;\n if (!this._zoomableTrigger.parserDragEvent(params.event)) {\n return;\n }\n const delayType = option?.delayType ?? 'throttle';\n const delayTime = option?.delayTime ?? 0;\n const realTime = option?.realTime ?? true;\n const move = this._getTriggerEvent('move');\n const end = this._getTriggerEvent('end');\n const event = params.event;\n let moveX = event.canvasX;\n let moveY = event.canvasY;\n let upX = event.canvasX;\n let upY = event.canvasY;\n\n const mouseup = delayMap[delayType]((params: BaseEventParams) => {\n this._clickEnable = false;\n const event = params.event as any;\n const dx = event.canvasX - upX;\n const dy = event.canvasY - upY;\n const delta: [number, number] = [dx, dy];\n\n upX = event.canvasX;\n upY = event.canvasY;\n\n if (!realTime && callback) {\n callback(delta, params.event);\n }\n\n this._eventObj.emit('panend', {\n delta,\n model: this\n } as unknown as BaseEventParams);\n this._zoomableTrigger.pointerId = null;\n this._eventObj.off(move, { level: Event_Bubble_Level.chart, source: Event_Source_Type.chart }, mousemove as any);\n this._eventObj.off(end, { level: Event_Bubble_Level.chart, source: Event_Source_Type.window }, mouseup as any);\n }, delayTime);\n const mousemove = delayMap[delayType]((params: BaseEventParams) => {\n if (!this._zoomableTrigger.parserDragEvent(params.event)) {\n return;\n }\n this._clickEnable = false;\n const event = params.event;\n const dx = event.canvasX - moveX;\n const dy = event.canvasY - moveY;\n const delta: [number, number] = [dx, dy];\n\n moveX = event.canvasX;\n moveY = event.canvasY;\n\n if (realTime && callback) {\n callback(delta, params.event);\n }\n this._eventObj.emit('panmove', {\n delta,\n model: this\n } as unknown as ExtendEventParam);\n }, delayTime);\n\n this._eventObj.on(move, { level: Event_Bubble_Level.chart, source: Event_Source_Type.chart }, mousemove as any);\n this._eventObj.on(end, { level: Event_Bubble_Level.chart, source: Event_Source_Type.chart }, mouseup as any);\n }\n}\n"]}
|
|
@@ -25,5 +25,11 @@ export declare class Layout implements IBaseLayout {
|
|
|
25
25
|
width: number;
|
|
26
26
|
height: number;
|
|
27
27
|
};
|
|
28
|
-
protected _checkAutoIndent(items: ILayoutItem[]
|
|
28
|
+
protected _checkAutoIndent(items: ILayoutItem[], layoutTemp: {
|
|
29
|
+
top: number;
|
|
30
|
+
left: number;
|
|
31
|
+
bottom: number;
|
|
32
|
+
right: number;
|
|
33
|
+
}): IPadding;
|
|
34
|
+
private _getOutInLayout;
|
|
29
35
|
}
|
|
@@ -13,12 +13,17 @@ export class Layout {
|
|
|
13
13
|
this.bottomCurrent = chartLayoutRect.height + chartLayoutRect.y, items.sort(((a, b) => b.layoutLevel - a.layoutLevel)),
|
|
14
14
|
this.layoutNormalInlineItems(items.filter((x => "normal-inline" === x.layoutType))),
|
|
15
15
|
this.layoutNormalItems(items.filter((x => "normal" === x.layoutType)));
|
|
16
|
-
const
|
|
16
|
+
const layoutTemp = {
|
|
17
|
+
left: this.leftCurrent,
|
|
18
|
+
top: this.topCurrent,
|
|
19
|
+
right: this.rightCurrent,
|
|
20
|
+
bottom: this.bottomCurrent
|
|
21
|
+
}, regionItems = items.filter((x => "region" === x.layoutType)), relativeItems = items.filter((x => "region-relative" === x.layoutType));
|
|
17
22
|
if (this.layoutRegionItems(regionItems, relativeItems), relativeItems.some((i => i.getAutoIndent()))) {
|
|
18
|
-
const {top: top, bottom: bottom, left: left, right: right} = this._checkAutoIndent(relativeItems);
|
|
19
|
-
(top || bottom || left || right) && (this.topCurrent =
|
|
20
|
-
this.
|
|
21
|
-
this.
|
|
23
|
+
const {top: top, bottom: bottom, left: left, right: right} = this._checkAutoIndent(relativeItems, layoutTemp);
|
|
24
|
+
(top || bottom || left || right) && (this.topCurrent = layoutTemp.top + top, this.bottomCurrent = layoutTemp.bottom - bottom,
|
|
25
|
+
this.leftCurrent = layoutTemp.left + left, this.rightCurrent = layoutTemp.right - right,
|
|
26
|
+
this.layoutRegionItems(regionItems, relativeItems));
|
|
22
27
|
}
|
|
23
28
|
this.layoutAbsoluteItems(items.filter((x => "absolute" === x.layoutType)));
|
|
24
29
|
}
|
|
@@ -122,20 +127,29 @@ export class Layout {
|
|
|
122
127
|
height: this.bottomCurrent - this.topCurrent - item.layoutPaddingTop - item.layoutPaddingBottom
|
|
123
128
|
};
|
|
124
129
|
}
|
|
125
|
-
_checkAutoIndent(items) {
|
|
130
|
+
_checkAutoIndent(items, layoutTemp) {
|
|
126
131
|
const result = {
|
|
127
132
|
top: 0,
|
|
128
133
|
left: 0,
|
|
129
134
|
bottom: 0,
|
|
130
135
|
right: 0
|
|
131
|
-
}
|
|
136
|
+
};
|
|
132
137
|
return items.forEach((i => {
|
|
133
138
|
if (!i.getVisible() || !i.getAutoIndent()) return;
|
|
134
|
-
const vOrH = "left" === i.layoutOrient || "right" === i.layoutOrient,
|
|
135
|
-
vOrH ? (result.top = Math.max(result.top, outer.
|
|
136
|
-
result.right = Math.max(result.right, outer.
|
|
139
|
+
const vOrH = "left" === i.layoutOrient || "right" === i.layoutOrient, itemOuter = i.getLastComputeOutBounds(), outer = this._getOutInLayout(itemOuter, i, layoutTemp);
|
|
140
|
+
vOrH ? (result.top = Math.max(result.top, outer.top), result.bottom = Math.max(result.bottom, outer.bottom)) : (result.left = Math.max(result.left, outer.left),
|
|
141
|
+
result.right = Math.max(result.right, outer.right));
|
|
137
142
|
})), result;
|
|
138
143
|
}
|
|
144
|
+
_getOutInLayout(itemOuter, i, tempBorder) {
|
|
145
|
+
const {x: x, y: y} = i.getLayoutStartPoint(), {width: width, height: height} = i.getLayoutRect();
|
|
146
|
+
return {
|
|
147
|
+
left: tempBorder.left - (x - itemOuter.x1),
|
|
148
|
+
right: x + width + itemOuter.x2 - tempBorder.right,
|
|
149
|
+
top: tempBorder.top - (y - itemOuter.y1),
|
|
150
|
+
bottom: y + height + itemOuter.y2 - tempBorder.bottom
|
|
151
|
+
};
|
|
152
|
+
}
|
|
139
153
|
}
|
|
140
154
|
|
|
141
155
|
Layout.type = "base";
|