@visactor/vchart 1.10.0-alpha.8 → 1.10.0-alpha.9
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 +517 -281
- package/build/index.min.js +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/cjs/chart/base/base-chart-transformer.js +6 -8
- package/cjs/chart/base/base-chart-transformer.js.map +1 -1
- package/cjs/chart/base/base-chart.js +3 -5
- package/cjs/chart/base/base-chart.js.map +1 -1
- package/cjs/chart/base/util.d.ts +2 -2
- package/cjs/chart/base/util.js.map +1 -1
- package/cjs/chart/interface/chart.js.map +1 -1
- package/cjs/chart/interface/common.d.ts +1 -5
- package/cjs/chart/interface/common.js.map +1 -1
- package/cjs/chart/map/map-transformer.js.map +1 -1
- package/cjs/chart/sequence/interface.d.ts +2 -2
- package/cjs/chart/sequence/interface.js.map +1 -1
- package/cjs/chart/sequence/sequence-transformer.js.map +1 -1
- package/cjs/compile/compilable-base.js +1 -1
- package/cjs/compile/compilable-base.js.map +1 -1
- package/cjs/compile/compiler.d.ts +1 -0
- package/cjs/compile/compiler.js +11 -9
- package/cjs/compile/compiler.js.map +1 -1
- package/cjs/component/axis/base-axis.js +2 -2
- package/cjs/component/axis/base-axis.js.map +1 -1
- package/cjs/component/axis/polar/axis.js.map +1 -1
- package/cjs/component/base/base-component.js +1 -1
- package/cjs/component/base/base-component.js.map +1 -1
- package/cjs/component/brush/brush.d.ts +8 -0
- package/cjs/component/brush/brush.js +64 -11
- package/cjs/component/brush/brush.js.map +1 -1
- package/cjs/component/brush/interface.d.ts +4 -0
- package/cjs/component/brush/interface.js.map +1 -1
- package/cjs/component/crosshair/base.js +1 -1
- package/cjs/component/crosshair/base.js.map +1 -1
- package/cjs/component/crosshair/cartesian.js +8 -4
- package/cjs/component/crosshair/cartesian.js.map +1 -1
- package/cjs/component/crosshair/polar.js +4 -2
- package/cjs/component/crosshair/polar.js.map +1 -1
- package/cjs/component/crosshair/utils/cartesian.d.ts +2 -0
- package/cjs/component/crosshair/utils/cartesian.js +4 -0
- package/cjs/component/crosshair/utils/cartesian.js.map +1 -1
- package/cjs/component/custom-mark/custom-mark.d.ts +1 -0
- package/cjs/component/custom-mark/custom-mark.js +12 -1
- package/cjs/component/custom-mark/custom-mark.js.map +1 -1
- package/cjs/component/data-zoom/data-filter-base-component.d.ts +2 -2
- package/cjs/component/data-zoom/data-filter-base-component.js +12 -10
- package/cjs/component/data-zoom/data-filter-base-component.js.map +1 -1
- package/cjs/component/data-zoom/data-zoom/data-zoom.d.ts +1 -0
- package/cjs/component/data-zoom/data-zoom/data-zoom.js +12 -9
- package/cjs/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
- package/cjs/component/data-zoom/data-zoom/interface.d.ts +1 -0
- package/cjs/component/data-zoom/data-zoom/interface.js.map +1 -1
- package/cjs/component/data-zoom/interface.d.ts +2 -0
- package/cjs/component/data-zoom/interface.js.map +1 -1
- package/cjs/component/data-zoom/scroll-bar/scroll-bar.js +2 -1
- package/cjs/component/data-zoom/scroll-bar/scroll-bar.js.map +1 -1
- package/cjs/component/data-zoom/util.js +5 -1
- package/cjs/component/data-zoom/util.js.map +1 -1
- package/cjs/component/geo/geo-coordinate.js.map +1 -1
- package/cjs/component/indicator/indicator.js.map +1 -1
- package/cjs/component/label/base-label.d.ts +2 -1
- package/cjs/component/label/base-label.js +3 -0
- package/cjs/component/label/base-label.js.map +1 -1
- package/cjs/component/label/label.d.ts +1 -2
- package/cjs/component/label/label.js +7 -10
- package/cjs/component/label/label.js.map +1 -1
- package/cjs/component/label/total-label.d.ts +1 -0
- package/cjs/component/label/total-label.js +9 -1
- package/cjs/component/label/total-label.js.map +1 -1
- package/cjs/component/tooltip/constant.d.ts +5 -0
- package/cjs/component/tooltip/constant.js +13 -0
- package/cjs/component/tooltip/constant.js.map +1 -0
- package/cjs/component/tooltip/index.d.ts +1 -0
- package/cjs/component/tooltip/index.js +1 -1
- package/cjs/component/tooltip/index.js.map +1 -1
- package/cjs/component/tooltip/interface/spec.d.ts +4 -3
- package/cjs/component/tooltip/interface/spec.js.map +1 -1
- package/cjs/component/tooltip/tooltip-transformer.d.ts +2 -0
- package/cjs/component/tooltip/tooltip-transformer.js +14 -1
- package/cjs/component/tooltip/tooltip-transformer.js.map +1 -1
- package/cjs/component/tooltip/tooltip.d.ts +3 -3
- package/cjs/component/tooltip/tooltip.js +28 -48
- package/cjs/component/tooltip/tooltip.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/vchart.d.ts +4 -1
- package/cjs/core/vchart.js +47 -49
- package/cjs/core/vchart.js.map +1 -1
- package/cjs/event/event-dispatcher.d.ts +1 -0
- package/cjs/event/event-dispatcher.js +4 -1
- package/cjs/event/event-dispatcher.js.map +1 -1
- package/cjs/event/event.js +1 -1
- package/cjs/event/event.js.map +1 -1
- package/cjs/event/interface.d.ts +2 -1
- package/cjs/event/interface.js.map +1 -1
- package/cjs/interaction/index.d.ts +1 -0
- package/cjs/interaction/index.js +50 -0
- package/cjs/interaction/index.js.map +1 -0
- package/cjs/interaction/interface.js +1 -1
- package/cjs/interaction/zoom/zoomable.js +4 -6
- package/cjs/interaction/zoom/zoomable.js.map +1 -1
- package/cjs/model/interface.d.ts +3 -8
- package/cjs/model/interface.js.map +1 -1
- package/cjs/plugin/base/base-plugin-service.d.ts +2 -2
- package/cjs/plugin/base/base-plugin-service.js +5 -5
- package/cjs/plugin/base/base-plugin-service.js.map +1 -1
- package/cjs/plugin/base/base-plugin.d.ts +1 -0
- package/cjs/plugin/base/base-plugin.js +3 -0
- package/cjs/plugin/base/base-plugin.js.map +1 -1
- package/cjs/plugin/base/interface.d.ts +3 -3
- package/cjs/plugin/base/interface.js.map +1 -1
- package/cjs/plugin/chart/formatter/formatter.d.ts +2 -2
- package/cjs/plugin/chart/formatter/formatter.js +5 -7
- package/cjs/plugin/chart/formatter/formatter.js.map +1 -1
- package/cjs/plugin/chart/media-query/media-query.d.ts +1 -1
- package/cjs/plugin/chart/media-query/media-query.js +4 -4
- package/cjs/plugin/chart/media-query/media-query.js.map +1 -1
- package/cjs/plugin/chart/plugin-service.d.ts +1 -0
- package/cjs/plugin/chart/plugin-service.js +3 -0
- package/cjs/plugin/chart/plugin-service.js.map +1 -1
- package/cjs/plugin/components/plugin-service.d.ts +1 -0
- package/cjs/plugin/components/plugin-service.js +3 -0
- package/cjs/plugin/components/plugin-service.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.js +3 -3
- package/cjs/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/constants.d.ts +0 -5
- package/cjs/plugin/components/tooltip-handler/constants.js +4 -9
- package/cjs/plugin/components/tooltip-handler/constants.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js +3 -3
- package/cjs/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/utils/position.d.ts +1 -0
- package/cjs/region/interface.d.ts +2 -1
- package/cjs/region/interface.js.map +1 -1
- package/cjs/region/region.js +1 -1
- package/cjs/region/region.js.map +1 -1
- package/cjs/series/area/area-transformer.d.ts +1 -0
- package/cjs/series/area/area-transformer.js +3 -0
- package/cjs/series/area/area-transformer.js.map +1 -1
- package/cjs/series/area/area.d.ts +0 -1
- package/cjs/series/area/area.js +1 -1
- package/cjs/series/area/area.js.map +1 -1
- package/cjs/series/bar/bar-transformer.d.ts +1 -0
- package/cjs/series/bar/bar-transformer.js +3 -0
- package/cjs/series/bar/bar-transformer.js.map +1 -1
- package/cjs/series/bar/bar.d.ts +0 -1
- package/cjs/series/bar/bar.js +2 -2
- package/cjs/series/bar/bar.js.map +1 -1
- package/cjs/series/base/base-series-transformer.d.ts +5 -3
- package/cjs/series/base/base-series-transformer.js +9 -2
- package/cjs/series/base/base-series-transformer.js.map +1 -1
- package/cjs/series/base/base-series.d.ts +0 -4
- package/cjs/series/base/base-series.js +12 -17
- package/cjs/series/base/base-series.js.map +1 -1
- package/cjs/series/cartesian/cartesian.js +3 -3
- package/cjs/series/cartesian/cartesian.js.map +1 -1
- package/cjs/series/funnel/funnel.js +2 -1
- package/cjs/series/funnel/funnel.js.map +1 -1
- package/cjs/series/gauge/gauge-pointer-transformer.d.ts +5 -0
- package/cjs/series/gauge/gauge-pointer-transformer.js +16 -0
- package/cjs/series/gauge/gauge-pointer-transformer.js.map +1 -0
- package/cjs/series/gauge/gauge-pointer.d.ts +3 -1
- package/cjs/series/gauge/gauge-pointer.js +4 -4
- package/cjs/series/gauge/gauge-pointer.js.map +1 -1
- package/cjs/series/gauge/gauge-transformer.d.ts +1 -0
- package/cjs/series/gauge/gauge-transformer.js +3 -0
- package/cjs/series/gauge/gauge-transformer.js.map +1 -1
- package/cjs/series/gauge/gauge.d.ts +0 -1
- package/cjs/series/gauge/gauge.js +1 -1
- package/cjs/series/gauge/gauge.js.map +1 -1
- package/cjs/series/interface/common.d.ts +6 -2
- package/cjs/series/interface/common.js.map +1 -1
- package/cjs/series/map/geo-source.d.ts +1 -1
- package/cjs/series/map/geo-source.js.map +1 -1
- package/cjs/series/polar/progress-like/progress-like.d.ts +0 -1
- package/cjs/series/polar/progress-like/progress-like.js +5 -5
- package/cjs/series/polar/progress-like/progress-like.js.map +1 -1
- package/cjs/series/polar/rose-like/rose-like.js +1 -1
- package/cjs/series/polar/rose-like/rose-like.js.map +1 -1
- package/cjs/series/progress/circular/circular-transformer.d.ts +5 -0
- package/cjs/series/progress/circular/circular-transformer.js +16 -0
- package/cjs/series/progress/circular/circular-transformer.js.map +1 -0
- package/cjs/series/progress/circular/circular.d.ts +3 -0
- package/cjs/series/progress/circular/circular.js +6 -6
- package/cjs/series/progress/circular/circular.js.map +1 -1
- package/cjs/series/radar/radar.js +2 -2
- package/cjs/series/radar/radar.js.map +1 -1
- package/cjs/series/range-column/range-column-transformer.d.ts +1 -0
- package/cjs/series/range-column/range-column-transformer.js +3 -0
- package/cjs/series/range-column/range-column-transformer.js.map +1 -1
- package/cjs/series/range-column/range-column.d.ts +0 -1
- package/cjs/series/range-column/range-column.js +1 -2
- package/cjs/series/range-column/range-column.js.map +1 -1
- package/cjs/series/rose/rose-transformer.d.ts +1 -0
- package/cjs/series/rose/rose-transformer.js +3 -0
- package/cjs/series/rose/rose-transformer.js.map +1 -1
- package/cjs/series/rose/rose.d.ts +0 -1
- package/cjs/series/rose/rose.js +2 -2
- package/cjs/series/rose/rose.js.map +1 -1
- package/cjs/series/waterfall/waterfall-transformer.d.ts +1 -0
- package/cjs/series/waterfall/waterfall-transformer.js +3 -0
- package/cjs/series/waterfall/waterfall-transformer.js.map +1 -1
- package/cjs/series/waterfall/waterfall.d.ts +0 -1
- package/cjs/series/waterfall/waterfall.js +1 -1
- package/cjs/series/waterfall/waterfall.js.map +1 -1
- package/cjs/typings/spec/common.d.ts +2 -2
- package/cjs/typings/spec/common.js.map +1 -1
- package/cjs/typings/spec/index.d.ts +1 -1
- package/cjs/typings/spec/index.js.map +1 -1
- package/cjs/vchart-all.js +2 -2
- package/cjs/vchart-all.js.map +1 -1
- package/cjs/vchart-simple.js +2 -2
- package/cjs/vchart-simple.js.map +1 -1
- package/esm/chart/base/base-chart-transformer.js +6 -8
- package/esm/chart/base/base-chart-transformer.js.map +1 -1
- package/esm/chart/base/base-chart.js +3 -5
- package/esm/chart/base/base-chart.js.map +1 -1
- package/esm/chart/base/util.d.ts +2 -2
- package/esm/chart/base/util.js.map +1 -1
- package/esm/chart/interface/chart.js.map +1 -1
- package/esm/chart/interface/common.d.ts +1 -5
- package/esm/chart/interface/common.js.map +1 -1
- package/esm/chart/map/map-transformer.js.map +1 -1
- package/esm/chart/sequence/interface.d.ts +2 -2
- package/esm/chart/sequence/interface.js.map +1 -1
- package/esm/chart/sequence/sequence-transformer.js.map +1 -1
- package/esm/compile/compilable-base.js +1 -1
- package/esm/compile/compilable-base.js.map +1 -1
- package/esm/compile/compiler.d.ts +1 -0
- package/esm/compile/compiler.js +11 -9
- package/esm/compile/compiler.js.map +1 -1
- package/esm/component/axis/base-axis.js +2 -2
- package/esm/component/axis/base-axis.js.map +1 -1
- package/esm/component/axis/polar/axis.js.map +1 -1
- package/esm/component/base/base-component.js +1 -1
- package/esm/component/base/base-component.js.map +1 -1
- package/esm/component/brush/brush.d.ts +8 -0
- package/esm/component/brush/brush.js +64 -11
- package/esm/component/brush/brush.js.map +1 -1
- package/esm/component/brush/interface.d.ts +4 -0
- package/esm/component/brush/interface.js.map +1 -1
- package/esm/component/crosshair/base.js +1 -1
- package/esm/component/crosshair/base.js.map +1 -1
- package/esm/component/crosshair/cartesian.js +8 -4
- package/esm/component/crosshair/cartesian.js.map +1 -1
- package/esm/component/crosshair/polar.js +4 -2
- package/esm/component/crosshair/polar.js.map +1 -1
- package/esm/component/crosshair/utils/cartesian.d.ts +2 -0
- package/esm/component/crosshair/utils/cartesian.js +4 -0
- package/esm/component/crosshair/utils/cartesian.js.map +1 -1
- package/esm/component/custom-mark/custom-mark.d.ts +1 -0
- package/esm/component/custom-mark/custom-mark.js +13 -0
- package/esm/component/custom-mark/custom-mark.js.map +1 -1
- package/esm/component/data-zoom/data-filter-base-component.d.ts +2 -2
- package/esm/component/data-zoom/data-filter-base-component.js +12 -10
- package/esm/component/data-zoom/data-filter-base-component.js.map +1 -1
- package/esm/component/data-zoom/data-zoom/data-zoom.d.ts +1 -0
- package/esm/component/data-zoom/data-zoom/data-zoom.js +13 -10
- package/esm/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
- package/esm/component/data-zoom/data-zoom/interface.d.ts +1 -0
- package/esm/component/data-zoom/data-zoom/interface.js.map +1 -1
- package/esm/component/data-zoom/interface.d.ts +2 -0
- package/esm/component/data-zoom/interface.js.map +1 -1
- package/esm/component/data-zoom/scroll-bar/scroll-bar.js +3 -2
- package/esm/component/data-zoom/scroll-bar/scroll-bar.js.map +1 -1
- package/esm/component/data-zoom/util.js +5 -1
- package/esm/component/data-zoom/util.js.map +1 -1
- package/esm/component/geo/geo-coordinate.js.map +1 -1
- package/esm/component/indicator/indicator.js.map +1 -1
- package/esm/component/label/base-label.d.ts +2 -1
- package/esm/component/label/base-label.js +3 -0
- package/esm/component/label/base-label.js.map +1 -1
- package/esm/component/label/label.d.ts +1 -2
- package/esm/component/label/label.js +8 -9
- package/esm/component/label/label.js.map +1 -1
- package/esm/component/label/total-label.d.ts +1 -0
- package/esm/component/label/total-label.js +10 -0
- package/esm/component/label/total-label.js.map +1 -1
- package/esm/component/tooltip/constant.d.ts +5 -0
- package/esm/component/tooltip/constant.js +8 -0
- package/esm/component/tooltip/constant.js.map +1 -0
- package/esm/component/tooltip/index.d.ts +1 -0
- package/esm/component/tooltip/index.js +2 -0
- package/esm/component/tooltip/index.js.map +1 -1
- package/esm/component/tooltip/interface/spec.d.ts +4 -3
- package/esm/component/tooltip/interface/spec.js.map +1 -1
- package/esm/component/tooltip/tooltip-transformer.d.ts +2 -0
- package/esm/component/tooltip/tooltip-transformer.js +16 -1
- package/esm/component/tooltip/tooltip-transformer.js.map +1 -1
- package/esm/component/tooltip/tooltip.d.ts +3 -3
- package/esm/component/tooltip/tooltip.js +29 -45
- package/esm/component/tooltip/tooltip.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/vchart.d.ts +4 -1
- package/esm/core/vchart.js +50 -49
- package/esm/core/vchart.js.map +1 -1
- package/esm/event/event-dispatcher.d.ts +1 -0
- package/esm/event/event-dispatcher.js +4 -1
- package/esm/event/event-dispatcher.js.map +1 -1
- package/esm/event/event.js +1 -1
- package/esm/event/event.js.map +1 -1
- package/esm/event/interface.d.ts +2 -1
- package/esm/event/interface.js.map +1 -1
- package/esm/interaction/index.d.ts +1 -0
- package/esm/interaction/index.js +2 -0
- package/esm/interaction/index.js.map +1 -0
- package/esm/interaction/interface.js +1 -1
- package/esm/interaction/zoom/zoomable.js +4 -6
- package/esm/interaction/zoom/zoomable.js.map +1 -1
- package/esm/model/interface.d.ts +3 -8
- package/esm/model/interface.js.map +1 -1
- package/esm/plugin/base/base-plugin-service.d.ts +2 -2
- package/esm/plugin/base/base-plugin-service.js +5 -5
- package/esm/plugin/base/base-plugin-service.js.map +1 -1
- package/esm/plugin/base/base-plugin.d.ts +1 -0
- package/esm/plugin/base/base-plugin.js +3 -0
- package/esm/plugin/base/base-plugin.js.map +1 -1
- package/esm/plugin/base/interface.d.ts +3 -3
- package/esm/plugin/base/interface.js.map +1 -1
- package/esm/plugin/chart/formatter/formatter.d.ts +2 -2
- package/esm/plugin/chart/formatter/formatter.js +5 -7
- package/esm/plugin/chart/formatter/formatter.js.map +1 -1
- package/esm/plugin/chart/media-query/media-query.d.ts +1 -1
- package/esm/plugin/chart/media-query/media-query.js +4 -4
- package/esm/plugin/chart/media-query/media-query.js.map +1 -1
- package/esm/plugin/chart/plugin-service.d.ts +1 -0
- package/esm/plugin/chart/plugin-service.js +3 -0
- package/esm/plugin/chart/plugin-service.js.map +1 -1
- package/esm/plugin/components/plugin-service.d.ts +1 -0
- package/esm/plugin/components/plugin-service.js +3 -0
- package/esm/plugin/components/plugin-service.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.js +2 -2
- package/esm/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/constants.d.ts +0 -5
- package/esm/plugin/components/tooltip-handler/constants.js +0 -8
- package/esm/plugin/components/tooltip-handler/constants.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js +3 -1
- package/esm/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/utils/position.d.ts +1 -0
- package/esm/region/interface.d.ts +2 -1
- package/esm/region/interface.js.map +1 -1
- package/esm/region/region.js +1 -1
- package/esm/region/region.js.map +1 -1
- package/esm/series/area/area-transformer.d.ts +1 -0
- package/esm/series/area/area-transformer.js +3 -0
- package/esm/series/area/area-transformer.js.map +1 -1
- package/esm/series/area/area.d.ts +0 -1
- package/esm/series/area/area.js +1 -1
- package/esm/series/area/area.js.map +1 -1
- package/esm/series/bar/bar-transformer.d.ts +1 -0
- package/esm/series/bar/bar-transformer.js +3 -0
- package/esm/series/bar/bar-transformer.js.map +1 -1
- package/esm/series/bar/bar.d.ts +0 -1
- package/esm/series/bar/bar.js +2 -2
- package/esm/series/bar/bar.js.map +1 -1
- package/esm/series/base/base-series-transformer.d.ts +5 -3
- package/esm/series/base/base-series-transformer.js +10 -3
- package/esm/series/base/base-series-transformer.js.map +1 -1
- package/esm/series/base/base-series.d.ts +0 -4
- package/esm/series/base/base-series.js +11 -15
- package/esm/series/base/base-series.js.map +1 -1
- package/esm/series/cartesian/cartesian.js +3 -2
- package/esm/series/cartesian/cartesian.js.map +1 -1
- package/esm/series/funnel/funnel.js +2 -1
- package/esm/series/funnel/funnel.js.map +1 -1
- package/esm/series/gauge/gauge-pointer-transformer.d.ts +5 -0
- package/esm/series/gauge/gauge-pointer-transformer.js +8 -0
- package/esm/series/gauge/gauge-pointer-transformer.js.map +1 -0
- package/esm/series/gauge/gauge-pointer.d.ts +3 -1
- package/esm/series/gauge/gauge-pointer.js +6 -3
- package/esm/series/gauge/gauge-pointer.js.map +1 -1
- package/esm/series/gauge/gauge-transformer.d.ts +1 -0
- package/esm/series/gauge/gauge-transformer.js +3 -0
- package/esm/series/gauge/gauge-transformer.js.map +1 -1
- package/esm/series/gauge/gauge.d.ts +0 -1
- package/esm/series/gauge/gauge.js +1 -1
- package/esm/series/gauge/gauge.js.map +1 -1
- package/esm/series/interface/common.d.ts +6 -2
- package/esm/series/interface/common.js.map +1 -1
- package/esm/series/map/geo-source.d.ts +1 -1
- package/esm/series/map/geo-source.js.map +1 -1
- package/esm/series/polar/progress-like/progress-like.d.ts +0 -1
- package/esm/series/polar/progress-like/progress-like.js +5 -5
- package/esm/series/polar/progress-like/progress-like.js.map +1 -1
- package/esm/series/polar/rose-like/rose-like.js +1 -1
- package/esm/series/polar/rose-like/rose-like.js.map +1 -1
- package/esm/series/progress/circular/circular-transformer.d.ts +5 -0
- package/esm/series/progress/circular/circular-transformer.js +8 -0
- package/esm/series/progress/circular/circular-transformer.js.map +1 -0
- package/esm/series/progress/circular/circular.d.ts +3 -0
- package/esm/series/progress/circular/circular.js +8 -5
- package/esm/series/progress/circular/circular.js.map +1 -1
- package/esm/series/radar/radar.js +2 -2
- package/esm/series/radar/radar.js.map +1 -1
- package/esm/series/range-column/range-column-transformer.d.ts +1 -0
- package/esm/series/range-column/range-column-transformer.js +3 -0
- package/esm/series/range-column/range-column-transformer.js.map +1 -1
- package/esm/series/range-column/range-column.d.ts +0 -1
- package/esm/series/range-column/range-column.js +1 -2
- package/esm/series/range-column/range-column.js.map +1 -1
- package/esm/series/rose/rose-transformer.d.ts +1 -0
- package/esm/series/rose/rose-transformer.js +3 -0
- package/esm/series/rose/rose-transformer.js.map +1 -1
- package/esm/series/rose/rose.d.ts +0 -1
- package/esm/series/rose/rose.js +2 -2
- package/esm/series/rose/rose.js.map +1 -1
- package/esm/series/waterfall/waterfall-transformer.d.ts +1 -0
- package/esm/series/waterfall/waterfall-transformer.js +3 -0
- package/esm/series/waterfall/waterfall-transformer.js.map +1 -1
- package/esm/series/waterfall/waterfall.d.ts +0 -1
- package/esm/series/waterfall/waterfall.js +1 -1
- package/esm/series/waterfall/waterfall.js.map +1 -1
- package/esm/typings/spec/common.d.ts +2 -2
- package/esm/typings/spec/common.js.map +1 -1
- package/esm/typings/spec/index.d.ts +1 -1
- package/esm/typings/spec/index.js.map +1 -1
- package/esm/vchart-all.js +2 -2
- package/esm/vchart-all.js.map +1 -1
- package/esm/vchart-simple.js +1 -3
- package/esm/vchart-simple.js.map +1 -1
- package/package.json +12 -12
|
@@ -4,7 +4,7 @@ export interface IBasePlugin<T = any> {
|
|
|
4
4
|
name: string;
|
|
5
5
|
onAdd: (service: T) => void;
|
|
6
6
|
init?: () => void;
|
|
7
|
-
|
|
7
|
+
release?: (service: T) => void;
|
|
8
8
|
onInit?: (service: T, ...params: any) => MaybePromise<void>;
|
|
9
9
|
onDidCompile?: (service: T, ...params: any) => MaybePromise<void>;
|
|
10
10
|
}
|
|
@@ -15,8 +15,8 @@ export interface IBasePluginService<T = any> {
|
|
|
15
15
|
activate: (plugins: T[]) => void;
|
|
16
16
|
get: (id: UniqueId) => T | undefined;
|
|
17
17
|
getAll: () => T[];
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
release: (pluginsId: UniqueId) => void;
|
|
19
|
+
releaseAll: () => void;
|
|
20
20
|
}
|
|
21
21
|
export type UniqueId = number;
|
|
22
22
|
export type MaybePromise<T> = T | PromiseLike<T>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/plugin/base/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["export interface IBasePlugin<T = any> {\n readonly type: string;\n id: UniqueId;\n name: string;\n onAdd: (service: T) => void;\n init?: () => void;\n
|
|
1
|
+
{"version":3,"sources":["../src/plugin/base/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["export interface IBasePlugin<T = any> {\n readonly type: string;\n id: UniqueId;\n name: string;\n onAdd: (service: T) => void;\n init?: () => void;\n release?: (service: T) => void;\n onInit?: (service: T, ...params: any) => MaybePromise<void>;\n onDidCompile?: (service: T, ...params: any) => MaybePromise<void>;\n}\n\nexport interface IBasePluginService<T = any> {\n id: UniqueId;\n load: (plugins: T[]) => void;\n add: (plugins: T[]) => T[] | null;\n activate: (plugins: T[]) => void;\n get: (id: UniqueId) => T | undefined;\n getAll: () => T[];\n release: (pluginsId: UniqueId) => void;\n releaseAll: () => void;\n}\n\nexport type UniqueId = number;\nexport type MaybePromise<T> = T | PromiseLike<T>;\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BasePlugin } from '../../base/base-plugin';
|
|
2
|
-
import { IChartPlugin, IChartPluginService } from '../interface';
|
|
2
|
+
import type { IChartPlugin, IChartPluginService } from '../interface';
|
|
3
3
|
export declare class FormatterPlugin extends BasePlugin implements IChartPlugin {
|
|
4
4
|
static readonly pluginType: 'chart';
|
|
5
5
|
static readonly specKey = "formatter";
|
|
@@ -23,6 +23,6 @@ export declare class FormatterPlugin extends BasePlugin implements IChartPlugin
|
|
|
23
23
|
protected _format(text: string | number | string[] | number[], datum: any, formatter: string | string[]): string | number | (string | number)[];
|
|
24
24
|
protected _formatSingleLine(text: string | number, datum: any, formatter: string): string | number;
|
|
25
25
|
protected _formatSingleText(text: string | number, formatter: string): string | number;
|
|
26
|
-
|
|
26
|
+
release(): void;
|
|
27
27
|
}
|
|
28
28
|
export declare const registerFormatPlugin: () => void;
|
|
@@ -37,14 +37,12 @@ export class FormatterPlugin extends BasePlugin {
|
|
|
37
37
|
if (this._isNumericFormatterCache && (this._isNumericFormatterCache.get(formatter) ? isTemplate = this._isNumericFormatterCache.get(formatter) : (isTemplate = bracketReg.test(formatter),
|
|
38
38
|
this._isNumericFormatterCache.set(formatter, isTemplate))), isTemplate) {
|
|
39
39
|
return formatter.replace(bracketGReg, ((match, key) => {
|
|
40
|
-
if (semicolonReg.test(key)) {
|
|
41
|
-
const parts = key.split(":"), value = datum[parts.shift()], valueFormatter = parts.join(":");
|
|
42
|
-
return this._formatSingleText(value, valueFormatter);
|
|
43
|
-
}
|
|
44
|
-
{
|
|
40
|
+
if (!semicolonReg.test(key)) {
|
|
45
41
|
const value = datum[key.trim()];
|
|
46
42
|
return void 0 !== value ? value : match;
|
|
47
43
|
}
|
|
44
|
+
const parts = key.split(":"), value = datum[parts.shift()], valueFormatter = parts.join(":");
|
|
45
|
+
return this._formatSingleText(value, valueFormatter);
|
|
48
46
|
}));
|
|
49
47
|
}
|
|
50
48
|
return this._formatSingleText(text, formatter);
|
|
@@ -57,8 +55,8 @@ export class FormatterPlugin extends BasePlugin {
|
|
|
57
55
|
}
|
|
58
56
|
return formatter.includes("%") && this._timeFormatter ? this._timeFormatter(formatter, text) : text;
|
|
59
57
|
}
|
|
60
|
-
|
|
61
|
-
this._format = null, this._timeFormatter = null, this._numericFormatter = null,
|
|
58
|
+
release() {
|
|
59
|
+
super.release(), this._format = null, this._timeFormatter = null, this._numericFormatter = null,
|
|
62
60
|
this._numericSpecifier = null, this._numericFormatterCache = null, this._isNumericFormatterCache = null;
|
|
63
61
|
}
|
|
64
62
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/plugin/chart/formatter/formatter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEjG,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAE7D,MAAM,UAAU,GAAG,aAAa,CAAC;AACjC,MAAM,WAAW,GAAG,cAAc,CAAC;AAEnC,MAAM,YAAY,GAAG,GAAG,CAAC;AAEzB,MAAM,OAAO,eAAgB,SAAQ,UAAU;IA8B7C;QACE,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAzBrB,SAAI,GAAW,iBAAiB,CAAC;QAEzB,oBAAe,GAAG;YACjC,GAAG,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC,aAAa;YACzC,KAAK,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC,UAAU;SACzC,CAAC;QASQ,eAAU,GAAG,IAAI,CAAC,OAAO,CAAC;QAE5B,mBAAc,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;QAC5C,sBAAiB,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC;QAGpD,sBAAiB,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC;QACvD,2BAAsB,GAAG,IAAI,GAAG,EAAe,CAAC;QAChD,6BAAwB,GAAG,IAAI,GAAG,EAAmB,CAAC;IAI9D,CAAC;IAED,MAAM,CAAC,OAA4B,EAAE,SAAc;;QACjD,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC;QACnC,IAAI,CAAC,cAAc,EAAE;YACnB,OAAO;SACR;QACD,IAAI,CAAC,KAAK,GAAG,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAG,eAAe,CAAC,OAAO,CAAC,mCAAI,EAAE,CAAC;QACxD,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAElF,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE;YAC/B,IAAI,CAAC,UAAU,GAAG,eAAe,CAAC;SACnC;aAAM;YACL,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE;gBAC7B,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;aACrC;iBAAM,IAAI,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE;gBACrD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;aACtD;YAED,IAAI,gBAAgB,EAAE;gBACpB,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;gBAC1C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;gBAC9B,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;aACpC;SACF;QACD,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC7C,CAAC;IAES,OAAO,CAAC,IAA2C,EAAE,KAAU,EAAE,SAA4B;QACrG,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE;YACjB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACvB,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBACxD,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC;SACJ;QAED,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;YACtB,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;SACnE;aAAM;YACL,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;SACvD;IACH,CAAC;IAES,iBAAiB,CAAC,IAAqB,EAAE,KAAU,EAAE,SAAiB;QAC9E,IAAI,UAAU,CAAC;QACf,IAAI,IAAI,CAAC,wBAAwB,EAAE;YACjC,IAAI,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;gBAChD,UAAU,GAAG,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;aAC3D;iBAAM;gBACL,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACxC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;aAC1D;SACF;QACD,IAAI,UAAU,EAAE;YACd,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;gBAC3D,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC5C,IAAI,CAAC,YAAY,EAAE;oBACjB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;oBAChC,OAAO,OAAO,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;iBACrD;qBAAM;oBACL,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;oBACnC,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACvC,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;iBACtD;YACH,CAAC,CAAC,CAAC;YACH,OAAO,MAAM,CAAC;SACf;aAAM;YACL,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;SAChD;IACH,CAAC;IAES,iBAAiB,CAAC,IAAqB,EAAE,SAAiB;QAClE,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrD,IAAI,SAAS,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAEvC,IAAI,aAAa,CAAC;YAClB,IAAI,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBACzD,IAAI,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;oBAC9C,aAAa,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;iBAC5D;qBAAM;oBACL,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAQ,CAAC;oBACzD,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;iBAC3D;gBACD,OAAO,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;aACpC;YACD,OAAO,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;SACxD;aAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE;YACzD,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;SAC7C;aAAM;YACL,OAAO,IAAI,CAAC;SACb;IACH,CAAC;IAED,OAAO;QACL,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;QACnC,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;IACvC,CAAC;;AArIe,0BAAU,GAAY,OAAO,CAAC;AAE9B,uBAAO,GAAG,WAAW,CAAC;AAEtB,oBAAI,GAAW,iBAAiB,CAAC;AAoInD,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,EAAE;IACvC,mBAAmB,CAAC,eAAe,CAAC,CAAC;AACvC,CAAC,CAAC","file":"formatter.js","sourcesContent":["import { isFunction, isArray, TimeUtil, NumberUtil, numberSpecifierReg } from '@visactor/vutils';\n\nimport { BasePlugin } from '../../base/base-plugin';\n\nimport { IChartPlugin, IChartPluginService } from '../interface';\nimport { Factory, registerChartPlugin } from '../../../core';\n\nconst bracketReg = /\\{([^}]+)\\}/;\nconst bracketGReg = /\\{([^}]+)\\}/g;\n\nconst semicolonReg = /:/;\n\nexport class FormatterPlugin extends BasePlugin implements IChartPlugin {\n static readonly pluginType: 'chart' = 'chart';\n\n static readonly specKey = 'formatter';\n\n static readonly type: string = 'formatterPlugin';\n readonly type: string = 'formatterPlugin';\n\n private readonly _timeModeFormat = {\n utc: TimeUtil.getInstance().timeUTCFormat,\n local: TimeUtil.getInstance().timeFormat\n };\n\n protected _spec: {\n timeMode: 'utc' | 'local';\n customFormatter: (specifier: string, text: string | number | string[] | number[], datum: any) => string | string[];\n numericFormatter: (specifier: string, text: string | number | string[] | number[]) => string;\n timeFormatter: (specifier: string, text: string | number | string[] | number[]) => string;\n };\n\n protected _formatter = this._format;\n\n private _timeFormatter = this._timeModeFormat.local;\n private _numericFormatter = NumberUtil.getInstance().format;\n\n // used for optimize performance,avoiding repeatedly parsing same format template string,\n private _numericSpecifier = NumberUtil.getInstance().formatter;\n private _numericFormatterCache = new Map<string, any>();\n private _isNumericFormatterCache = new Map<string, boolean>();\n\n constructor() {\n super(FormatterPlugin.type);\n }\n\n onInit(service: IChartPluginService, chartSpec: any) {\n const { globalInstance } = service;\n if (!globalInstance) {\n return;\n }\n this._spec = chartSpec?.[FormatterPlugin.specKey] ?? {};\n const { timeMode, customFormatter, numericFormatter, timeFormatter } = this._spec;\n\n if (isFunction(customFormatter)) {\n this._formatter = customFormatter;\n } else {\n this._formatter = this._format.bind(this);\n if (isFunction(timeFormatter)) {\n this._timeFormatter = timeFormatter;\n } else if (timeMode && this._timeModeFormat[timeMode]) {\n this._timeFormatter = this._timeModeFormat[timeMode];\n }\n\n if (numericFormatter) {\n this._numericFormatter = numericFormatter;\n this._numericSpecifier = null;\n this._numericFormatterCache = null;\n }\n }\n Factory.registerFormatter(this._formatter);\n }\n\n protected _format(text: string | number | string[] | number[], datum: any, formatter: string | string[]) {\n if (isArray(text)) {\n return text.map((t, i) => {\n const f = isArray(formatter) ? formatter[i] : formatter;\n return f ? this._formatSingleLine(t, datum, f) : t;\n });\n }\n\n if (isArray(formatter)) {\n return formatter.map(f => this._formatSingleLine(text, datum, f));\n } else {\n return this._formatSingleLine(text, datum, formatter);\n }\n }\n\n protected _formatSingleLine(text: string | number, datum: any, formatter: string) {\n let isTemplate;\n if (this._isNumericFormatterCache) {\n if (this._isNumericFormatterCache.get(formatter)) {\n isTemplate = this._isNumericFormatterCache.get(formatter);\n } else {\n isTemplate = bracketReg.test(formatter);\n this._isNumericFormatterCache.set(formatter, isTemplate);\n }\n }\n if (isTemplate) {\n const result = formatter.replace(bracketGReg, (match, key) => {\n const hasFormatter = semicolonReg.test(key);\n if (!hasFormatter) {\n const value = datum[key.trim()];\n return typeof value !== 'undefined' ? value : match;\n } else {\n const parts = key.split(':');\n const value = datum[parts.shift()];\n const valueFormatter = parts.join(':');\n return this._formatSingleText(value, valueFormatter);\n }\n });\n return result;\n } else {\n return this._formatSingleText(text, formatter);\n }\n }\n\n protected _formatSingleText(text: string | number, formatter: string): string | number {\n const isNumeric = numberSpecifierReg.test(formatter);\n if (isNumeric && this._numericFormatter) {\n // 内置的 formatter 逻辑,可以进行缓存性能优化\n let numericFormat;\n if (this._numericFormatterCache && this._numericSpecifier) {\n if (this._numericFormatterCache.get(formatter)) {\n numericFormat = this._numericFormatterCache.get(formatter);\n } else {\n numericFormat = this._numericSpecifier(formatter) as any;\n this._numericFormatterCache.set(formatter, numericFormat);\n }\n return numericFormat(Number(text));\n }\n return this._numericFormatter(formatter, Number(text));\n } else if (formatter.includes('%') && this._timeFormatter) {\n return this._timeFormatter(formatter, text);\n } else {\n return text;\n }\n }\n\n dispose() {\n this._format = null;\n this._timeFormatter = null;\n this._numericFormatter = null;\n this._numericSpecifier = null;\n this._numericFormatterCache = null;\n this._isNumericFormatterCache = null;\n }\n}\n\nexport const registerFormatPlugin = () => {\n registerChartPlugin(FormatterPlugin);\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/plugin/chart/formatter/formatter.ts"],"names":[],"mappings":"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","file":"formatter.js","sourcesContent":["import { isFunction, isArray, TimeUtil, NumberUtil, numberSpecifierReg } from '@visactor/vutils';\n\nimport { BasePlugin } from '../../base/base-plugin';\n\nimport type { IChartPlugin, IChartPluginService } from '../interface';\nimport { Factory, registerChartPlugin } from '../../../core';\n\nconst bracketReg = /\\{([^}]+)\\}/;\nconst bracketGReg = /\\{([^}]+)\\}/g;\n\nconst semicolonReg = /:/;\n\nexport class FormatterPlugin extends BasePlugin implements IChartPlugin {\n static readonly pluginType: 'chart' = 'chart';\n\n static readonly specKey = 'formatter';\n\n static readonly type: string = 'formatterPlugin';\n readonly type: string = 'formatterPlugin';\n\n private readonly _timeModeFormat = {\n utc: TimeUtil.getInstance().timeUTCFormat,\n local: TimeUtil.getInstance().timeFormat\n };\n\n protected _spec: {\n timeMode: 'utc' | 'local';\n customFormatter: (specifier: string, text: string | number | string[] | number[], datum: any) => string | string[];\n numericFormatter: (specifier: string, text: string | number | string[] | number[]) => string;\n timeFormatter: (specifier: string, text: string | number | string[] | number[]) => string;\n };\n\n protected _formatter = this._format;\n\n private _timeFormatter = this._timeModeFormat.local;\n private _numericFormatter = NumberUtil.getInstance().format;\n\n // used for optimize performance,avoiding repeatedly parsing same format template string,\n private _numericSpecifier = NumberUtil.getInstance().formatter;\n private _numericFormatterCache = new Map<string, any>();\n private _isNumericFormatterCache = new Map<string, boolean>();\n\n constructor() {\n super(FormatterPlugin.type);\n }\n\n onInit(service: IChartPluginService, chartSpec: any) {\n const { globalInstance } = service;\n if (!globalInstance) {\n return;\n }\n this._spec = chartSpec?.[FormatterPlugin.specKey] ?? {};\n const { timeMode, customFormatter, numericFormatter, timeFormatter } = this._spec;\n\n if (isFunction(customFormatter)) {\n this._formatter = customFormatter;\n } else {\n this._formatter = this._format.bind(this);\n if (isFunction(timeFormatter)) {\n this._timeFormatter = timeFormatter;\n } else if (timeMode && this._timeModeFormat[timeMode]) {\n this._timeFormatter = this._timeModeFormat[timeMode];\n }\n\n if (numericFormatter) {\n this._numericFormatter = numericFormatter;\n this._numericSpecifier = null;\n this._numericFormatterCache = null;\n }\n }\n Factory.registerFormatter(this._formatter);\n }\n\n protected _format(text: string | number | string[] | number[], datum: any, formatter: string | string[]) {\n if (isArray(text)) {\n return text.map((t, i) => {\n const f = isArray(formatter) ? formatter[i] : formatter;\n return f ? this._formatSingleLine(t, datum, f) : t;\n });\n }\n\n if (isArray(formatter)) {\n return formatter.map(f => this._formatSingleLine(text, datum, f));\n }\n return this._formatSingleLine(text, datum, formatter);\n }\n\n protected _formatSingleLine(text: string | number, datum: any, formatter: string) {\n let isTemplate;\n if (this._isNumericFormatterCache) {\n if (this._isNumericFormatterCache.get(formatter)) {\n isTemplate = this._isNumericFormatterCache.get(formatter);\n } else {\n isTemplate = bracketReg.test(formatter);\n this._isNumericFormatterCache.set(formatter, isTemplate);\n }\n }\n if (isTemplate) {\n const result = formatter.replace(bracketGReg, (match, key) => {\n const hasFormatter = semicolonReg.test(key);\n if (!hasFormatter) {\n const value = datum[key.trim()];\n return typeof value !== 'undefined' ? value : match;\n }\n const parts = key.split(':');\n const value = datum[parts.shift()];\n const valueFormatter = parts.join(':');\n return this._formatSingleText(value, valueFormatter);\n });\n return result;\n }\n return this._formatSingleText(text, formatter);\n }\n\n protected _formatSingleText(text: string | number, formatter: string): string | number {\n const isNumeric = numberSpecifierReg.test(formatter);\n if (isNumeric && this._numericFormatter) {\n // 内置的 formatter 逻辑,可以进行缓存性能优化\n let numericFormat;\n if (this._numericFormatterCache && this._numericSpecifier) {\n if (this._numericFormatterCache.get(formatter)) {\n numericFormat = this._numericFormatterCache.get(formatter);\n } else {\n numericFormat = this._numericSpecifier(formatter) as any;\n this._numericFormatterCache.set(formatter, numericFormat);\n }\n return numericFormat(Number(text));\n }\n return this._numericFormatter(formatter, Number(text));\n } else if (formatter.includes('%') && this._timeFormatter) {\n return this._timeFormatter(formatter, text);\n }\n return text;\n }\n\n release() {\n super.release();\n this._format = null;\n this._timeFormatter = null;\n this._numericFormatter = null;\n this._numericSpecifier = null;\n this._numericFormatterCache = null;\n this._isNumericFormatterCache = null;\n }\n}\n\nexport const registerFormatPlugin = () => {\n registerChartPlugin(FormatterPlugin);\n};\n"]}
|
|
@@ -25,6 +25,6 @@ export declare class MediaQuery extends BasePlugin implements IChartPlugin {
|
|
|
25
25
|
protected _check(item: IMediaQueryItem): IMediaQueryCheckResult;
|
|
26
26
|
protected _apply(item: IMediaQueryItem, chartSpec: any, chartSpecInfo: IChartSpecInfo): IMediaQueryActionResult;
|
|
27
27
|
protected _reInit(compile?: boolean, render?: boolean): void;
|
|
28
|
-
|
|
28
|
+
release(): void;
|
|
29
29
|
}
|
|
30
30
|
export declare const registerMediaQuery: () => void;
|
|
@@ -48,7 +48,7 @@ export class MediaQuery extends BasePlugin {
|
|
|
48
48
|
case "updateSpecAndRecompile":
|
|
49
49
|
resetMediaQuery = !1, checkMediaQuery = !1;
|
|
50
50
|
}
|
|
51
|
-
if (resetMediaQuery && this.
|
|
51
|
+
if (resetMediaQuery && this.release(), this._initialized || this.onInit(service, chartSpec),
|
|
52
52
|
resetMediaQuery || checkMediaQuery) {
|
|
53
53
|
const {width: width, height: height} = this._option.globalInstance.getCurrentSize();
|
|
54
54
|
this._changeSize(width, height, !1, !1);
|
|
@@ -108,9 +108,9 @@ export class MediaQuery extends BasePlugin {
|
|
|
108
108
|
chartSpec = result.chartSpec, hasChanged || (hasChanged = result.hasChanged);
|
|
109
109
|
})), hasChanged && this._option.updateSpec(chartSpec, compile, render);
|
|
110
110
|
}
|
|
111
|
-
|
|
112
|
-
this._initialized = !1, this._spec = [], this._option = void 0,
|
|
113
|
-
this.currentActiveItems.clear();
|
|
111
|
+
release() {
|
|
112
|
+
super.release(), this._initialized = !1, this._spec = [], this._option = void 0,
|
|
113
|
+
this._currentMediaInfo = {}, this.currentActiveItems.clear();
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
116
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/plugin/chart/media-query/media-query.ts"],"names":[],"mappings":"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","file":"media-query.js","sourcesContent":["import type {\n IMediaInfo,\n IMediaQueryCheckResult,\n IMediaQuerySpec,\n IMediaQueryOption,\n IMediaQueryItem,\n IMediaQueryActionResult\n} from './interface';\nimport { checkMediaQuery } from './util';\nimport { executeMediaQueryAction } from './util/action';\nimport type { IChartPlugin, IChartPluginService } from '../interface';\nimport { array, cloneDeepSpec } from '../../../util';\nimport type { VChartRenderActionSource } from '../../../core/interface';\nimport { BasePlugin } from '../../base/base-plugin';\nimport { registerChartPlugin } from '../register';\nimport type { IChartSpecInfo } from '../../../chart/interface';\n\nexport class MediaQuery extends BasePlugin implements IChartPlugin {\n static readonly pluginType: 'chart' = 'chart';\n static readonly specKey = 'media';\n static readonly type: string = 'MediaQueryPlugin';\n readonly type: string = 'MediaQueryPlugin';\n\n protected _spec: IMediaQuerySpec;\n protected _option: IMediaQueryOption;\n\n /** 不带任何媒体查询的图表 spec */\n protected _baseChartSpec: any;\n /** 不带任何媒体查询的图表 spec info */\n protected _baseChartSpecInfo: IChartSpecInfo;\n\n /** 当前媒体信息 */\n protected _currentMediaInfo: Partial<IMediaInfo> = {};\n\n /** 当前正在生效的媒体查询 */\n readonly currentActiveItems = new Set<IMediaQueryItem>();\n\n /** 媒体查询是否已经初始化 */\n protected _initialized: boolean = false;\n\n constructor() {\n super(MediaQuery.type);\n }\n\n onInit(service: IChartPluginService, chartSpec: any) {\n if (!chartSpec?.[MediaQuery.specKey]) {\n return;\n }\n\n const { globalInstance } = service;\n this._option = {\n globalInstance: service.globalInstance,\n updateSpec: (spec: any, compile?: boolean, render?: boolean) => {\n if (render) {\n globalInstance.updateSpecSync(spec);\n } else if (compile) {\n globalInstance.updateSpecAndRecompile(spec, false, {\n transformSpec: true\n });\n } else {\n globalInstance.setRuntimeSpec(spec);\n }\n }\n };\n this._spec = chartSpec[MediaQuery.specKey];\n this._initialized = true;\n }\n\n onBeforeResize(service: IChartPluginService, width: number, height: number) {\n if (!this._initialized) {\n return;\n }\n\n this._changeSize(width, height, true, false);\n }\n\n onAfterChartSpecTransform(service: IChartPluginService, chartSpec: any, actionSource: VChartRenderActionSource) {\n if (!this._initialized) {\n return;\n }\n\n if (actionSource === 'setCurrentTheme') {\n // 重新执行已生效的所有媒体查询\n this._reInit(false, false);\n }\n }\n\n onBeforeInitChart(service: IChartPluginService, chartSpec: any, actionSource: VChartRenderActionSource) {\n if (!this._initialized) {\n return;\n }\n\n let resetMediaQuery: boolean;\n let checkMediaQuery: boolean;\n\n switch (actionSource) {\n case 'render':\n case 'updateModelSpec':\n resetMediaQuery = false;\n checkMediaQuery = true;\n break;\n case 'updateSpec':\n case 'setCurrentTheme':\n resetMediaQuery = true;\n checkMediaQuery = false;\n break;\n case 'updateSpecAndRecompile':\n resetMediaQuery = false;\n checkMediaQuery = false;\n break;\n }\n\n if (resetMediaQuery) {\n this.dispose();\n }\n if (!this._initialized) {\n // 初始化媒体查询\n this.onInit(service, chartSpec);\n }\n if (resetMediaQuery || checkMediaQuery) {\n // 触发媒体查询\n const { width, height } = this._option.globalInstance.getCurrentSize();\n this._changeSize(width, height, false, false);\n }\n }\n\n /** 更新图表宽高信息,执行所有相关媒体查询,返回是否命中某个查询 */\n protected _changeSize(width: number, height: number, compile?: boolean, render?: boolean): boolean {\n if (this._currentMediaInfo.width === width && this._currentMediaInfo.height === height) {\n return false;\n }\n this._currentMediaInfo.width = width;\n this._currentMediaInfo.height = height;\n // 由于目前媒体查询只和图表宽高有关,这里执行所有媒体查询\n return this._applyQueries(compile, render);\n }\n\n /** 执行所有媒体查询,返回是否命中某个查询 */\n protected _applyQueries(compile?: boolean, render?: boolean): boolean {\n // 检查所有查询的查询条件\n const changeToActive: IMediaQueryItem[] = []; // 将会生效的查询\n const changeToInactive: IMediaQueryItem[] = []; // 将会失效的查询\n this._spec.forEach(item => {\n const { hasChanged, isActive } = this._check(item);\n if (hasChanged) {\n if (isActive) {\n changeToActive.push(item);\n } else {\n changeToInactive.push(item);\n }\n }\n });\n\n if (!changeToActive.length && !changeToInactive.length) {\n return false;\n }\n if (!this._baseChartSpec) {\n this._baseChartSpec = cloneDeepSpec(this._option.globalInstance.getSpec(), ['data', MediaQuery.specKey]);\n this._baseChartSpecInfo = this._option.globalInstance.getSpecInfo();\n }\n let chartSpec: any;\n let chartSpecInfo: any;\n let hasChanged = false;\n\n // 处理将会失效的查询:重新执行一遍当前生效的查询\n if (changeToInactive.length > 0) {\n chartSpec = cloneDeepSpec(this._baseChartSpec, ['data', MediaQuery.specKey]);\n chartSpecInfo = this._baseChartSpecInfo;\n Array.from(this.currentActiveItems).forEach(item => {\n if (changeToInactive.includes(item)) {\n this.currentActiveItems.delete(item);\n return;\n }\n const result = this._apply(item, chartSpec, chartSpecInfo);\n chartSpec = result.chartSpec;\n });\n hasChanged = true;\n } else {\n chartSpec = this._option.globalInstance.getSpec();\n chartSpecInfo = this._option.globalInstance.getSpecInfo();\n }\n\n // 处理将会生效的查询\n changeToActive.forEach(item => {\n this.currentActiveItems.add(item);\n const result = this._apply(item, chartSpec, chartSpecInfo);\n chartSpec = result.chartSpec;\n hasChanged ||= result.hasChanged;\n });\n\n if (hasChanged) {\n this._option.updateSpec(chartSpec, compile, render);\n }\n return true;\n }\n\n /** 检查媒体查询的条件是否满足 */\n protected _check(item: IMediaQueryItem): IMediaQueryCheckResult {\n const { globalInstance } = this._option;\n const isActive = checkMediaQuery(item.query, this._currentMediaInfo as IMediaInfo, globalInstance);\n return {\n isActive,\n hasChanged: isActive !== this.currentActiveItems.has(item)\n };\n }\n\n /** 执行一条媒体查询 */\n protected _apply(item: IMediaQueryItem, chartSpec: any, chartSpecInfo: IChartSpecInfo): IMediaQueryActionResult {\n const { query, action } = item;\n let hasChanged = false;\n // 执行\n array(action).forEach(actionItem => {\n const result = executeMediaQueryAction(actionItem, query, chartSpec, chartSpecInfo);\n chartSpec = result.chartSpec;\n hasChanged ||= result.hasChanged;\n });\n return { chartSpec, hasChanged };\n }\n\n /** 重新初始化,并重新执行一遍当前生效的媒体查询 */\n protected _reInit(compile?: boolean, render?: boolean) {\n let chartSpec = this._option.globalInstance.getSpec();\n this._baseChartSpec = cloneDeepSpec(chartSpec, ['data', MediaQuery.specKey]);\n this._baseChartSpecInfo = this._option.globalInstance.getSpecInfo();\n\n let hasChanged = false;\n this.currentActiveItems.forEach(item => {\n const result = this._apply(item, chartSpec, this._baseChartSpecInfo);\n chartSpec = result.chartSpec;\n hasChanged ||= result.hasChanged;\n });\n\n if (hasChanged) {\n this._option.updateSpec(chartSpec, compile, render);\n }\n }\n\n dispose() {\n this._initialized = false;\n this._spec = [];\n this._option = undefined;\n this._currentMediaInfo = {};\n this.currentActiveItems.clear();\n }\n}\n\nexport const registerMediaQuery = () => {\n registerChartPlugin(MediaQuery);\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/plugin/chart/media-query/media-query.ts"],"names":[],"mappings":"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","file":"media-query.js","sourcesContent":["import type {\n IMediaInfo,\n IMediaQueryCheckResult,\n IMediaQuerySpec,\n IMediaQueryOption,\n IMediaQueryItem,\n IMediaQueryActionResult\n} from './interface';\nimport { checkMediaQuery } from './util';\nimport { executeMediaQueryAction } from './util/action';\nimport type { IChartPlugin, IChartPluginService } from '../interface';\nimport { array, cloneDeepSpec } from '../../../util';\nimport type { VChartRenderActionSource } from '../../../core/interface';\nimport { BasePlugin } from '../../base/base-plugin';\nimport { registerChartPlugin } from '../register';\nimport type { IChartSpecInfo } from '../../../chart/interface';\n\nexport class MediaQuery extends BasePlugin implements IChartPlugin {\n static readonly pluginType: 'chart' = 'chart';\n static readonly specKey = 'media';\n static readonly type: string = 'MediaQueryPlugin';\n readonly type: string = 'MediaQueryPlugin';\n\n protected _spec: IMediaQuerySpec;\n protected _option: IMediaQueryOption;\n\n /** 不带任何媒体查询的图表 spec */\n protected _baseChartSpec: any;\n /** 不带任何媒体查询的图表 spec info */\n protected _baseChartSpecInfo: IChartSpecInfo;\n\n /** 当前媒体信息 */\n protected _currentMediaInfo: Partial<IMediaInfo> = {};\n\n /** 当前正在生效的媒体查询 */\n readonly currentActiveItems = new Set<IMediaQueryItem>();\n\n /** 媒体查询是否已经初始化 */\n protected _initialized: boolean = false;\n\n constructor() {\n super(MediaQuery.type);\n }\n\n onInit(service: IChartPluginService, chartSpec: any) {\n if (!chartSpec?.[MediaQuery.specKey]) {\n return;\n }\n\n const { globalInstance } = service;\n this._option = {\n globalInstance: service.globalInstance,\n updateSpec: (spec: any, compile?: boolean, render?: boolean) => {\n if (render) {\n globalInstance.updateSpecSync(spec);\n } else if (compile) {\n globalInstance.updateSpecAndRecompile(spec, false, {\n transformSpec: true\n });\n } else {\n globalInstance.setRuntimeSpec(spec);\n }\n }\n };\n this._spec = chartSpec[MediaQuery.specKey];\n this._initialized = true;\n }\n\n onBeforeResize(service: IChartPluginService, width: number, height: number) {\n if (!this._initialized) {\n return;\n }\n\n this._changeSize(width, height, true, false);\n }\n\n onAfterChartSpecTransform(service: IChartPluginService, chartSpec: any, actionSource: VChartRenderActionSource) {\n if (!this._initialized) {\n return;\n }\n\n if (actionSource === 'setCurrentTheme') {\n // 重新执行已生效的所有媒体查询\n this._reInit(false, false);\n }\n }\n\n onBeforeInitChart(service: IChartPluginService, chartSpec: any, actionSource: VChartRenderActionSource) {\n if (!this._initialized) {\n return;\n }\n\n let resetMediaQuery: boolean;\n let checkMediaQuery: boolean;\n\n switch (actionSource) {\n case 'render':\n case 'updateModelSpec':\n resetMediaQuery = false;\n checkMediaQuery = true;\n break;\n case 'updateSpec':\n case 'setCurrentTheme':\n resetMediaQuery = true;\n checkMediaQuery = false;\n break;\n case 'updateSpecAndRecompile':\n resetMediaQuery = false;\n checkMediaQuery = false;\n break;\n }\n\n if (resetMediaQuery) {\n this.release();\n }\n if (!this._initialized) {\n // 初始化媒体查询\n this.onInit(service, chartSpec);\n }\n if (resetMediaQuery || checkMediaQuery) {\n // 触发媒体查询\n const { width, height } = this._option.globalInstance.getCurrentSize();\n this._changeSize(width, height, false, false);\n }\n }\n\n /** 更新图表宽高信息,执行所有相关媒体查询,返回是否命中某个查询 */\n protected _changeSize(width: number, height: number, compile?: boolean, render?: boolean): boolean {\n if (this._currentMediaInfo.width === width && this._currentMediaInfo.height === height) {\n return false;\n }\n this._currentMediaInfo.width = width;\n this._currentMediaInfo.height = height;\n // 由于目前媒体查询只和图表宽高有关,这里执行所有媒体查询\n return this._applyQueries(compile, render);\n }\n\n /** 执行所有媒体查询,返回是否命中某个查询 */\n protected _applyQueries(compile?: boolean, render?: boolean): boolean {\n // 检查所有查询的查询条件\n const changeToActive: IMediaQueryItem[] = []; // 将会生效的查询\n const changeToInactive: IMediaQueryItem[] = []; // 将会失效的查询\n this._spec.forEach(item => {\n const { hasChanged, isActive } = this._check(item);\n if (hasChanged) {\n if (isActive) {\n changeToActive.push(item);\n } else {\n changeToInactive.push(item);\n }\n }\n });\n\n if (!changeToActive.length && !changeToInactive.length) {\n return false;\n }\n if (!this._baseChartSpec) {\n this._baseChartSpec = cloneDeepSpec(this._option.globalInstance.getSpec(), ['data', MediaQuery.specKey]);\n this._baseChartSpecInfo = this._option.globalInstance.getSpecInfo();\n }\n let chartSpec: any;\n let chartSpecInfo: any;\n let hasChanged = false;\n\n // 处理将会失效的查询:重新执行一遍当前生效的查询\n if (changeToInactive.length > 0) {\n chartSpec = cloneDeepSpec(this._baseChartSpec, ['data', MediaQuery.specKey]);\n chartSpecInfo = this._baseChartSpecInfo;\n Array.from(this.currentActiveItems).forEach(item => {\n if (changeToInactive.includes(item)) {\n this.currentActiveItems.delete(item);\n return;\n }\n const result = this._apply(item, chartSpec, chartSpecInfo);\n chartSpec = result.chartSpec;\n });\n hasChanged = true;\n } else {\n chartSpec = this._option.globalInstance.getSpec();\n chartSpecInfo = this._option.globalInstance.getSpecInfo();\n }\n\n // 处理将会生效的查询\n changeToActive.forEach(item => {\n this.currentActiveItems.add(item);\n const result = this._apply(item, chartSpec, chartSpecInfo);\n chartSpec = result.chartSpec;\n hasChanged ||= result.hasChanged;\n });\n\n if (hasChanged) {\n this._option.updateSpec(chartSpec, compile, render);\n }\n return true;\n }\n\n /** 检查媒体查询的条件是否满足 */\n protected _check(item: IMediaQueryItem): IMediaQueryCheckResult {\n const { globalInstance } = this._option;\n const isActive = checkMediaQuery(item.query, this._currentMediaInfo as IMediaInfo, globalInstance);\n return {\n isActive,\n hasChanged: isActive !== this.currentActiveItems.has(item)\n };\n }\n\n /** 执行一条媒体查询 */\n protected _apply(item: IMediaQueryItem, chartSpec: any, chartSpecInfo: IChartSpecInfo): IMediaQueryActionResult {\n const { query, action } = item;\n let hasChanged = false;\n // 执行\n array(action).forEach(actionItem => {\n const result = executeMediaQueryAction(actionItem, query, chartSpec, chartSpecInfo);\n chartSpec = result.chartSpec;\n hasChanged ||= result.hasChanged;\n });\n return { chartSpec, hasChanged };\n }\n\n /** 重新初始化,并重新执行一遍当前生效的媒体查询 */\n protected _reInit(compile?: boolean, render?: boolean) {\n let chartSpec = this._option.globalInstance.getSpec();\n this._baseChartSpec = cloneDeepSpec(chartSpec, ['data', MediaQuery.specKey]);\n this._baseChartSpecInfo = this._option.globalInstance.getSpecInfo();\n\n let hasChanged = false;\n this.currentActiveItems.forEach(item => {\n const result = this._apply(item, chartSpec, this._baseChartSpecInfo);\n chartSpec = result.chartSpec;\n hasChanged ||= result.hasChanged;\n });\n\n if (hasChanged) {\n this._option.updateSpec(chartSpec, compile, render);\n }\n }\n\n release() {\n super.release();\n this._initialized = false;\n this._spec = [];\n this._option = undefined;\n this._currentMediaInfo = {};\n this.currentActiveItems.clear();\n }\n}\n\nexport const registerMediaQuery = () => {\n registerChartPlugin(MediaQuery);\n};\n"]}
|
|
@@ -9,4 +9,5 @@ export declare class ChartPluginService<T extends IChartPlugin = IChartPlugin> e
|
|
|
9
9
|
onBeforeResize(width: number, height: number): void;
|
|
10
10
|
onAfterChartSpecTransform(chartSpec: any, actionSource: VChartRenderActionSource): void;
|
|
11
11
|
onBeforeInitChart(chartSpec: any, actionSource: VChartRenderActionSource): void;
|
|
12
|
+
releaseAll(): void;
|
|
12
13
|
}
|
|
@@ -24,5 +24,8 @@ export class ChartPluginService extends BasePluginService {
|
|
|
24
24
|
plugin.onBeforeInitChart && plugin.onBeforeInitChart(this, chartSpec, actionSource);
|
|
25
25
|
}));
|
|
26
26
|
}
|
|
27
|
+
releaseAll() {
|
|
28
|
+
super.releaseAll(), this.globalInstance = null;
|
|
29
|
+
}
|
|
27
30
|
}
|
|
28
31
|
//# sourceMappingURL=plugin-service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/plugin/chart/plugin-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAGhE,MAAM,OAAO,kBACX,SAAQ,iBAAoB;IAK5B,YAAY,cAAuB;QACjC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,SAAc;QACnB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC7B,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,cAAc,CAAC,KAAa,EAAE,MAAc;QAC1C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC7B,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,yBAAyB,CAAC,SAAc,EAAE,YAAsC;QAC9E,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC7B,MAAM,CAAC,yBAAyB,IAAI,MAAM,CAAC,yBAAyB,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;QACtG,CAAC,CAAC,CAAC;IACL,CAAC;IAED,iBAAiB,CAAC,SAAc,EAAE,YAAsC;QACtE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC7B,MAAM,CAAC,iBAAiB,IAAI,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;IACL,CAAC;CACF","file":"plugin-service.js","sourcesContent":["import type { IChartPlugin, IChartPluginService } from './interface';\nimport type { IVChart } from '../../core';\nimport { BasePluginService } from '../base/base-plugin-service';\nimport type { VChartRenderActionSource } from '../../core/interface';\n\nexport class ChartPluginService<T extends IChartPlugin = IChartPlugin>\n extends BasePluginService<T>\n implements IChartPluginService<T>\n{\n globalInstance: IVChart;\n\n constructor(globalInstance: IVChart) {\n super();\n this.globalInstance = globalInstance;\n }\n\n onInit(chartSpec: any) {\n this._plugins.forEach(plugin => {\n plugin.onInit && plugin.onInit(this, chartSpec);\n });\n }\n\n onBeforeResize(width: number, height: number) {\n this._plugins.forEach(plugin => {\n plugin.onBeforeResize && plugin.onBeforeResize(this, width, height);\n });\n }\n\n onAfterChartSpecTransform(chartSpec: any, actionSource: VChartRenderActionSource) {\n this._plugins.forEach(plugin => {\n plugin.onAfterChartSpecTransform && plugin.onAfterChartSpecTransform(this, chartSpec, actionSource);\n });\n }\n\n onBeforeInitChart(chartSpec: any, actionSource: VChartRenderActionSource) {\n this._plugins.forEach(plugin => {\n plugin.onBeforeInitChart && plugin.onBeforeInitChart(this, chartSpec, actionSource);\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/plugin/chart/plugin-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAGhE,MAAM,OAAO,kBACX,SAAQ,iBAAoB;IAK5B,YAAY,cAAuB;QACjC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,SAAc;QACnB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC7B,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,cAAc,CAAC,KAAa,EAAE,MAAc;QAC1C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC7B,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,yBAAyB,CAAC,SAAc,EAAE,YAAsC;QAC9E,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC7B,MAAM,CAAC,yBAAyB,IAAI,MAAM,CAAC,yBAAyB,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;QACtG,CAAC,CAAC,CAAC;IACL,CAAC;IAED,iBAAiB,CAAC,SAAc,EAAE,YAAsC;QACtE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC7B,MAAM,CAAC,iBAAiB,IAAI,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;IACL,CAAC;IAED,UAAU;QACR,KAAK,CAAC,UAAU,EAAE,CAAC;QACnB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IAC7B,CAAC;CACF","file":"plugin-service.js","sourcesContent":["import type { IChartPlugin, IChartPluginService } from './interface';\nimport type { IVChart } from '../../core';\nimport { BasePluginService } from '../base/base-plugin-service';\nimport type { VChartRenderActionSource } from '../../core/interface';\n\nexport class ChartPluginService<T extends IChartPlugin = IChartPlugin>\n extends BasePluginService<T>\n implements IChartPluginService<T>\n{\n globalInstance: IVChart;\n\n constructor(globalInstance: IVChart) {\n super();\n this.globalInstance = globalInstance;\n }\n\n onInit(chartSpec: any) {\n this._plugins.forEach(plugin => {\n plugin.onInit && plugin.onInit(this, chartSpec);\n });\n }\n\n onBeforeResize(width: number, height: number) {\n this._plugins.forEach(plugin => {\n plugin.onBeforeResize && plugin.onBeforeResize(this, width, height);\n });\n }\n\n onAfterChartSpecTransform(chartSpec: any, actionSource: VChartRenderActionSource) {\n this._plugins.forEach(plugin => {\n plugin.onAfterChartSpecTransform && plugin.onAfterChartSpecTransform(this, chartSpec, actionSource);\n });\n }\n\n onBeforeInitChart(chartSpec: any, actionSource: VChartRenderActionSource) {\n this._plugins.forEach(plugin => {\n plugin.onBeforeInitChart && plugin.onBeforeInitChart(this, chartSpec, actionSource);\n });\n }\n\n releaseAll(): void {\n super.releaseAll();\n this.globalInstance = null;\n }\n}\n"]}
|
|
@@ -4,4 +4,5 @@ import { BasePluginService } from '../base/base-plugin-service';
|
|
|
4
4
|
export declare class ComponentPluginService<T extends IComponentPlugin = IComponentPlugin> extends BasePluginService<T> implements IComponentPluginService<T> {
|
|
5
5
|
component: IComponent;
|
|
6
6
|
constructor(component: IComponent);
|
|
7
|
+
releaseAll(): void;
|
|
7
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/plugin/components/plugin-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,MAAM,OAAO,sBACX,SAAQ,iBAAoB;IAK5B,YAAY,SAAqB;QAC/B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF","file":"plugin-service.js","sourcesContent":["import type { IComponentPlugin, IComponentPluginService } from './interface';\nimport type { IComponent } from '../../component/interface';\nimport { BasePluginService } from '../base/base-plugin-service';\n\nexport class ComponentPluginService<T extends IComponentPlugin = IComponentPlugin>\n extends BasePluginService<T>\n implements IComponentPluginService<T>\n{\n component: IComponent;\n\n constructor(component: IComponent) {\n super();\n this.component = component;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/plugin/components/plugin-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,MAAM,OAAO,sBACX,SAAQ,iBAAoB;IAK5B,YAAY,SAAqB;QAC/B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,UAAU;QACR,KAAK,CAAC,UAAU,EAAE,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;CACF","file":"plugin-service.js","sourcesContent":["import type { IComponentPlugin, IComponentPluginService } from './interface';\nimport type { IComponent } from '../../component/interface';\nimport { BasePluginService } from '../base/base-plugin-service';\n\nexport class ComponentPluginService<T extends IComponentPlugin = IComponentPlugin>\n extends BasePluginService<T>\n implements IComponentPluginService<T>\n{\n component: IComponent;\n\n constructor(component: IComponent) {\n super();\n this.component = component;\n }\n\n releaseAll(): void {\n super.releaseAll();\n this.component = null;\n }\n}\n"]}
|
|
@@ -4,10 +4,10 @@ import { Tooltip as TooltipComponent } from "@visactor/vrender-components";
|
|
|
4
4
|
|
|
5
5
|
import { isValid } from "@visactor/vutils";
|
|
6
6
|
|
|
7
|
-
import { TooltipHandlerType } from "../constants";
|
|
8
|
-
|
|
9
7
|
import { registerComponentPlugin } from "../../register";
|
|
10
8
|
|
|
9
|
+
import { TooltipHandlerType } from "../../../../component/tooltip/constant";
|
|
10
|
+
|
|
11
11
|
export class CanvasTooltipHandler extends BaseTooltipHandler {
|
|
12
12
|
constructor() {
|
|
13
13
|
super(CanvasTooltipHandler.type), this.type = TooltipHandlerType.canvas;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"sources":["../src/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.ts"],"names":[],"mappings":"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","file":"canvas-tooltip-handler.js","sourcesContent":["import type { ILayer, INode, Stage } from '@visactor/vrender-core';\nimport type { ITooltipActual } from '../../../../typings/tooltip';\nimport { BaseTooltipHandler } from '../base';\nimport { Tooltip as TooltipComponent } from '@visactor/vrender-components';\nimport { isValid } from '@visactor/vutils';\nimport type { TooltipHandlerParams } from '../../../../component/tooltip';\nimport type { IComponentPluginService } from '../../interface';\nimport { registerComponentPlugin } from '../../register';\nimport { TooltipHandlerType } from '../../../../component/tooltip/constant';\n\n/**\n * The tooltip handler class.\n */\nexport class CanvasTooltipHandler extends BaseTooltipHandler {\n static readonly type = TooltipHandlerType.canvas;\n readonly type = TooltipHandlerType.canvas;\n\n private _layer: ILayer;\n protected _el?: HTMLCanvasElement;\n protected _tooltipCanvasId?: string;\n protected _tooltipComponent: TooltipComponent;\n\n constructor() {\n super(CanvasTooltipHandler.type);\n }\n\n onAdd(service: IComponentPluginService<any>): void {\n super.onAdd(service);\n this._tooltipCanvasId = (this._chartOption.modeParams as any)?.tooltipCanvasId;\n }\n\n private _initTooltipComponent(stage: Stage) {\n const layer = this._getLayer(stage);\n this._tooltipComponent = new TooltipComponent({\n autoCalculatePosition: false,\n autoMeasure: false\n });\n layer.add(this._tooltipComponent as unknown as INode);\n }\n\n private _getLayer(stage: Stage) {\n if (this._layer) {\n return this._layer;\n }\n\n this._layer = stage.createLayer(this._tooltipCanvasId);\n\n // 需要关闭 layer 对应的 canvas 的事件\n const layerCanvas = this._layer.layerHandler.canvas.nativeCanvas as HTMLCanvasElement;\n // TODO:待 vrender 支持\n if (layerCanvas && layerCanvas.style) {\n layerCanvas.style.touchAction = 'none';\n layerCanvas.style.pointerEvents = 'none';\n }\n\n return this._layer;\n }\n\n protected _removeTooltip() {\n if (this._layer) {\n this._layer.removeAllChild();\n // this._layer.render();\n }\n this._attributes = null;\n }\n\n protected _updateTooltip(visible: boolean, params: TooltipHandlerParams, actualTooltip: ITooltipActual) {\n this._visible = visible;\n\n const stage = this._compiler.getStage();\n if (!stage) {\n return;\n }\n\n if (!visible) {\n if (this._tooltipComponent && this._tooltipComponent.attribute.visible) {\n this._tooltipComponent.hideAll();\n this._tooltipComponent.setAttributes({\n visibleAll: false\n });\n }\n return;\n }\n\n if (!this._tooltipComponent) {\n this._initTooltipComponent(stage);\n }\n\n const pos = actualTooltip?.position;\n if (!params.changePositionOnly) {\n this._tooltipComponent.setAttributes({\n ...this._attributes,\n ...pos\n });\n } else if (isValid(pos)) {\n this._tooltipComponent.setAttributes(pos);\n }\n\n if (!this._tooltipComponent.attribute.visible) {\n this._tooltipComponent.showAll();\n this._tooltipComponent.setAttributes({\n visibleAll: true\n });\n }\n }\n\n isTooltipShown() {\n return this._tooltipComponent?.attribute.visibleAll;\n }\n\n release() {\n super.release();\n this._layer?.release();\n }\n}\n\nexport const registerCanvasTooltipHandler = () => {\n registerComponentPlugin(CanvasTooltipHandler);\n};\n"]}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { ITooltipLineActual } from '../../../typings';
|
|
2
2
|
import { escapeHTML } from './utils/common';
|
|
3
|
-
export declare const TOOLTIP_EL_CLASS_NAME = "vchart-tooltip-element";
|
|
4
3
|
export declare const TOOLTIP_CONTAINER_EL_CLASS_NAME = "vchart-tooltip-container";
|
|
5
4
|
export declare const TOOLTIP_MAX_LINE_COUNT = 20;
|
|
6
5
|
export declare const TOOLTIP_EMPTY_STRING = "";
|
|
@@ -11,7 +10,3 @@ export declare const DEFAULT_OPTIONS: {
|
|
|
11
10
|
sanitize: typeof escapeHTML;
|
|
12
11
|
};
|
|
13
12
|
export type Options = typeof DEFAULT_OPTIONS;
|
|
14
|
-
export declare class TooltipHandlerType {
|
|
15
|
-
static dom: string;
|
|
16
|
-
static canvas: string;
|
|
17
|
-
}
|
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
import { PREFIX } from "../../../constant";
|
|
2
|
-
|
|
3
1
|
import { escapeHTML } from "./utils/common";
|
|
4
2
|
|
|
5
|
-
export const TOOLTIP_EL_CLASS_NAME = "vchart-tooltip-element";
|
|
6
|
-
|
|
7
3
|
export const TOOLTIP_CONTAINER_EL_CLASS_NAME = "vchart-tooltip-container";
|
|
8
4
|
|
|
9
5
|
export const TOOLTIP_MAX_LINE_COUNT = 20;
|
|
@@ -20,8 +16,4 @@ export const DEFAULT_OPTIONS = {
|
|
|
20
16
|
offsetY: 10,
|
|
21
17
|
sanitize: escapeHTML
|
|
22
18
|
};
|
|
23
|
-
|
|
24
|
-
export class TooltipHandlerType {}
|
|
25
|
-
|
|
26
|
-
TooltipHandlerType.dom = `${PREFIX}_TOOLTIP_HANDLER_DOM`, TooltipHandlerType.canvas = `${PREFIX}_TOOLTIP_HANDLER_CANVAS`;
|
|
27
19
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/plugin/components/tooltip-handler/constants.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/plugin/components/tooltip-handler/constants.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,MAAM,CAAC,MAAM,+BAA+B,GAAG,0BAA0B,CAAC;AAC1E,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AACzC,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEvC,MAAM,CAAC,MAAM,mBAAmB,GAAG;IAEjC,GAAG,EAAE,IAAI;IACT,KAAK,EAAE,KAAK;CACS,CAAC;AAExB,MAAM,CAAC,MAAM,eAAe,GAAG;IAI7B,OAAO,EAAE,EAAE;IAKX,OAAO,EAAE,EAAE;IAOX,QAAQ,EAAE,UAAU;CACrB,CAAC","file":"constants.js","sourcesContent":["import type { ITooltipLineActual } from '../../../typings';\nimport { escapeHTML } from './utils/common';\n\nexport const TOOLTIP_CONTAINER_EL_CLASS_NAME = 'vchart-tooltip-container';\nexport const TOOLTIP_MAX_LINE_COUNT = 20;\nexport const TOOLTIP_EMPTY_STRING = '';\n\nexport const TOOLTIP_OTHERS_LINE = {\n // TODO: i18n\n key: '其他',\n value: '...'\n} as ITooltipLineActual;\n\nexport const DEFAULT_OPTIONS = {\n /**\n * X offset.\n */\n offsetX: 10,\n\n /**\n * Y offset.\n */\n offsetY: 10,\n\n /**\n * HTML sanitizer function that removes dangerous HTML to prevent XSS.\n *\n * This should be a function from string to string. You may replace it with a formatter such as a markdown formatter.\n */\n sanitize: escapeHTML\n};\n\n// FIXME: 命名规范\nexport type Options = typeof DEFAULT_OPTIONS;\n"]}
|
|
@@ -4,7 +4,7 @@ import { getDomStyles } from "./utils";
|
|
|
4
4
|
|
|
5
5
|
import { TooltipModel } from "./model/tooltip-model";
|
|
6
6
|
|
|
7
|
-
import { TOOLTIP_CONTAINER_EL_CLASS_NAME
|
|
7
|
+
import { TOOLTIP_CONTAINER_EL_CLASS_NAME } from "../constants";
|
|
8
8
|
|
|
9
9
|
import { hasParentElement, isNil } from "@visactor/vutils";
|
|
10
10
|
|
|
@@ -14,6 +14,8 @@ import { registerComponentPlugin } from "../../register";
|
|
|
14
14
|
|
|
15
15
|
import { DEFAULT_TOOLTIP_Z_INDEX } from "./constant";
|
|
16
16
|
|
|
17
|
+
import { TooltipHandlerType } from "../../../../component/tooltip/constant";
|
|
18
|
+
|
|
17
19
|
export class DomTooltipHandler extends BaseTooltipHandler {
|
|
18
20
|
getVisibility() {
|
|
19
21
|
var _a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/plugin/components/tooltip-handler/dom/dom-tooltip-handler.ts"],"names":[],"mappings":"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","file":"dom-tooltip-handler.js","sourcesContent":["import type { ITooltipActual, ITooltipPositionActual } from '../../../../typings/tooltip';\nimport { BaseTooltipHandler } from '../base';\nimport { getDomStyles } from './utils';\nimport type { IDomTooltipStyle } from './interface';\nimport { TooltipModel } from './model/tooltip-model';\nimport { TOOLTIP_CONTAINER_EL_CLASS_NAME, TooltipHandlerType } from '../constants';\nimport { hasParentElement, isNil, type Maybe } from '@visactor/vutils';\nimport { domDocument } from '../../../../util/env';\nimport type { ITooltipSpec, TooltipHandlerParams } from '../../../../component/tooltip';\nimport type { IComponentPluginService } from '../../interface';\nimport { registerComponentPlugin } from '../../register';\nimport { DEFAULT_TOOLTIP_Z_INDEX } from './constant';\nimport type { ILayoutPoint } from '../../../../typings';\n\n/**\n * The tooltip handler class.\n */\nexport class DomTooltipHandler extends BaseTooltipHandler {\n static readonly type = TooltipHandlerType.dom;\n readonly type = TooltipHandlerType.dom;\n\n protected _tooltipContainer = domDocument?.body;\n protected _domStyle: IDomTooltipStyle;\n protected _tooltipActual?: ITooltipActual;\n protected declare _container: Maybe<HTMLDivElement>;\n\n /** 自定义 tooltip 的位置缓存 */\n protected _cacheCustomTooltipPosition: ILayoutPoint;\n\n protected model: TooltipModel;\n\n getVisibility() {\n return !!this.model?.getVisibility();\n }\n\n setVisibility(_value: boolean) {\n // 这里做个节流\n if (_value !== this.getVisibility()) {\n this.model?.setVisibility(_value);\n }\n }\n\n constructor() {\n super(DomTooltipHandler.type);\n }\n\n onAdd(service: IComponentPluginService<any>): void {\n super.onAdd(service);\n this._initStyle();\n this.initEl();\n }\n\n initEl() {\n const tooltipSpec = this._component.getSpec();\n const parentElement = tooltipSpec.parentElement as HTMLElement | HTMLCanvasElement;\n if (domDocument && parentElement) {\n for (let i = 0; i < parentElement.children.length; i++) {\n if (parentElement.children[i].classList.contains(TOOLTIP_CONTAINER_EL_CLASS_NAME)) {\n this._container = parentElement.children[i] as HTMLDivElement;\n break;\n }\n }\n if (!this._container) {\n this._container = domDocument.createElement('div');\n this._container.style.position = 'relative';\n this._container.style.zIndex = DEFAULT_TOOLTIP_Z_INDEX;\n this._container.classList.add(TOOLTIP_CONTAINER_EL_CLASS_NAME);\n parentElement.appendChild(this._container);\n }\n this.model = new TooltipModel(\n {\n valueToHtml: this._option.sanitize,\n getTooltipStyle: () => this._domStyle,\n getTooltipActual: () => this._tooltipActual,\n getTooltipAttributes: () => this._attributes,\n getContainer: () => this._container\n },\n [tooltipSpec.className],\n this.name\n );\n }\n }\n\n protected _removeTooltip() {\n this.model?.release();\n this._container = null;\n }\n\n protected _updateTooltip(visible: boolean, params: TooltipHandlerParams, actualTooltip: ITooltipActual) {\n if (!visible || !this.model) {\n this.setVisibility(visible);\n this._cacheCustomTooltipPosition = undefined;\n } else {\n if (!params.changePositionOnly) {\n this._tooltipActual = actualTooltip;\n this._initStyle();\n\n const firstInit = !this.model.product;\n this.model.initAll();\n if (firstInit) {\n this._initEvent(this.model.product);\n }\n this.model.setStyle();\n this.model.setContent();\n }\n this.setVisibility(visible);\n\n // 位置\n const el = this.model.product;\n if (el) {\n const { x = 0, y = 0 } = actualTooltip.position ?? {};\n if (this._cacheViewSpec?.updateElement) {\n // 此处先设定一次位置,防止页面暂时出现滚动条(优先设置上次的位置)\n this._updatePosition(this._cacheCustomTooltipPosition ?? { x, y });\n // 更新 tooltip dom\n this._cacheViewSpec.updateElement(el, actualTooltip, params);\n // 重新计算 tooltip 位置\n const position = this._getActualTooltipPosition(actualTooltip, params, {\n width: el.offsetWidth,\n height: el.offsetHeight\n });\n // 更新位置\n this._updatePosition(position);\n // 更新缓存\n this._cacheCustomTooltipPosition = position;\n } else {\n this._updatePosition({ x, y });\n }\n }\n }\n }\n\n protected _initStyle() {\n this._domStyle = getDomStyles(this._attributes);\n }\n\n protected _getParentElement(spec: ITooltipSpec): HTMLElement {\n return this._container ?? super._getParentElement(spec);\n }\n\n isTooltipShown() {\n return this.getVisibility();\n }\n\n reInit() {\n super.reInit();\n this._initStyle();\n }\n\n protected _updatePosition({ x, y }: ITooltipPositionActual) {\n const el = this.model.product;\n if (el) {\n // translate3d 性能较好:https://stackoverflow.com/questions/22111256/translate3d-vs-translate-performance\n el.style.transform = `translate3d(${x}px, ${y}px, 0)`;\n }\n }\n\n protected _initEvent(el: HTMLElement) {\n el.addEventListener('pointerleave', event => {\n const { renderMode, enterable } = this._cacheViewSpec;\n const relatedTarget = event.relatedTarget as HTMLElement;\n if (renderMode === 'html' && enterable) {\n if (\n // 判断用户鼠标是否从 tooltip 内部直接滑入非图表区域\n isNil(relatedTarget) ||\n (relatedTarget !== this._compiler.getCanvas() &&\n !hasParentElement(relatedTarget, this.getTooltipContainer() as HTMLElement))\n ) {\n this._component.hideTooltip();\n }\n }\n });\n }\n}\n\nexport const registerDomTooltipHandler = () => {\n registerComponentPlugin(DomTooltipHandler);\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/plugin/components/tooltip-handler/dom/dom-tooltip-handler.ts"],"names":[],"mappings":"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","file":"dom-tooltip-handler.js","sourcesContent":["import type { ITooltipActual, ITooltipPositionActual } from '../../../../typings/tooltip';\nimport { BaseTooltipHandler } from '../base';\nimport { getDomStyles } from './utils';\nimport type { IDomTooltipStyle } from './interface';\nimport { TooltipModel } from './model/tooltip-model';\nimport { TOOLTIP_CONTAINER_EL_CLASS_NAME } from '../constants';\nimport { hasParentElement, isNil, type Maybe } from '@visactor/vutils';\nimport { domDocument } from '../../../../util/env';\nimport type { ITooltipSpec, TooltipHandlerParams } from '../../../../component/tooltip';\nimport type { IComponentPluginService } from '../../interface';\nimport { registerComponentPlugin } from '../../register';\nimport { DEFAULT_TOOLTIP_Z_INDEX } from './constant';\nimport type { ILayoutPoint } from '../../../../typings';\nimport { TooltipHandlerType } from '../../../../component/tooltip/constant';\n\n/**\n * The tooltip handler class.\n */\nexport class DomTooltipHandler extends BaseTooltipHandler {\n static readonly type = TooltipHandlerType.dom;\n readonly type = TooltipHandlerType.dom;\n\n protected _tooltipContainer = domDocument?.body;\n protected _domStyle: IDomTooltipStyle;\n protected _tooltipActual?: ITooltipActual;\n protected declare _container: Maybe<HTMLDivElement>;\n\n /** 自定义 tooltip 的位置缓存 */\n protected _cacheCustomTooltipPosition: ILayoutPoint;\n\n protected model: TooltipModel;\n\n getVisibility() {\n return !!this.model?.getVisibility();\n }\n\n setVisibility(_value: boolean) {\n // 这里做个节流\n if (_value !== this.getVisibility()) {\n this.model?.setVisibility(_value);\n }\n }\n\n constructor() {\n super(DomTooltipHandler.type);\n }\n\n onAdd(service: IComponentPluginService<any>): void {\n super.onAdd(service);\n this._initStyle();\n this.initEl();\n }\n\n initEl() {\n const tooltipSpec = this._component.getSpec();\n const parentElement = tooltipSpec.parentElement as HTMLElement | HTMLCanvasElement;\n if (domDocument && parentElement) {\n for (let i = 0; i < parentElement.children.length; i++) {\n if (parentElement.children[i].classList.contains(TOOLTIP_CONTAINER_EL_CLASS_NAME)) {\n this._container = parentElement.children[i] as HTMLDivElement;\n break;\n }\n }\n if (!this._container) {\n this._container = domDocument.createElement('div');\n this._container.style.position = 'relative';\n this._container.style.zIndex = DEFAULT_TOOLTIP_Z_INDEX;\n this._container.classList.add(TOOLTIP_CONTAINER_EL_CLASS_NAME);\n parentElement.appendChild(this._container);\n }\n this.model = new TooltipModel(\n {\n valueToHtml: this._option.sanitize,\n getTooltipStyle: () => this._domStyle,\n getTooltipActual: () => this._tooltipActual,\n getTooltipAttributes: () => this._attributes,\n getContainer: () => this._container\n },\n [tooltipSpec.className],\n this.name\n );\n }\n }\n\n protected _removeTooltip() {\n this.model?.release();\n this._container = null;\n }\n\n protected _updateTooltip(visible: boolean, params: TooltipHandlerParams, actualTooltip: ITooltipActual) {\n if (!visible || !this.model) {\n this.setVisibility(visible);\n this._cacheCustomTooltipPosition = undefined;\n } else {\n if (!params.changePositionOnly) {\n this._tooltipActual = actualTooltip;\n this._initStyle();\n\n const firstInit = !this.model.product;\n this.model.initAll();\n if (firstInit) {\n this._initEvent(this.model.product);\n }\n this.model.setStyle();\n this.model.setContent();\n }\n this.setVisibility(visible);\n\n // 位置\n const el = this.model.product;\n if (el) {\n const { x = 0, y = 0 } = actualTooltip.position ?? {};\n if (this._cacheViewSpec?.updateElement) {\n // 此处先设定一次位置,防止页面暂时出现滚动条(优先设置上次的位置)\n this._updatePosition(this._cacheCustomTooltipPosition ?? { x, y });\n // 更新 tooltip dom\n this._cacheViewSpec.updateElement(el, actualTooltip, params);\n // 重新计算 tooltip 位置\n const position = this._getActualTooltipPosition(actualTooltip, params, {\n width: el.offsetWidth,\n height: el.offsetHeight\n });\n // 更新位置\n this._updatePosition(position);\n // 更新缓存\n this._cacheCustomTooltipPosition = position;\n } else {\n this._updatePosition({ x, y });\n }\n }\n }\n }\n\n protected _initStyle() {\n this._domStyle = getDomStyles(this._attributes);\n }\n\n protected _getParentElement(spec: ITooltipSpec): HTMLElement {\n return this._container ?? super._getParentElement(spec);\n }\n\n isTooltipShown() {\n return this.getVisibility();\n }\n\n reInit() {\n super.reInit();\n this._initStyle();\n }\n\n protected _updatePosition({ x, y }: ITooltipPositionActual) {\n const el = this.model.product;\n if (el) {\n // translate3d 性能较好:https://stackoverflow.com/questions/22111256/translate3d-vs-translate-performance\n el.style.transform = `translate3d(${x}px, ${y}px, 0)`;\n }\n }\n\n protected _initEvent(el: HTMLElement) {\n el.addEventListener('pointerleave', event => {\n const { renderMode, enterable } = this._cacheViewSpec;\n const relatedTarget = event.relatedTarget as HTMLElement;\n if (renderMode === 'html' && enterable) {\n if (\n // 判断用户鼠标是否从 tooltip 内部直接滑入非图表区域\n isNil(relatedTarget) ||\n (relatedTarget !== this._compiler.getCanvas() &&\n !hasParentElement(relatedTarget, this.getTooltipContainer() as HTMLElement))\n ) {\n this._component.hideTooltip();\n }\n }\n });\n }\n}\n\nexport const registerDomTooltipHandler = () => {\n registerComponentPlugin(DomTooltipHandler);\n};\n"]}
|
|
@@ -9,6 +9,7 @@ export declare const positionType: Record<TooltipFixedPosition, [TooltipHorizont
|
|
|
9
9
|
export declare const getHorizontalPositionType: (position: TooltipFixedPosition, defaultCase?: TooltipHorizontalPositionType) => TooltipHorizontalPositionType;
|
|
10
10
|
export declare const getVerticalPositionType: (position: TooltipFixedPosition, defaultCase?: TooltipVerticalPositionType) => TooltipVerticalPositionType;
|
|
11
11
|
export declare const getCartesianCrosshairRect: (dimensionInfo: IDimensionInfo[], series: ICartesianSeries, layoutStartPoint: ILayoutPoint) => {
|
|
12
|
+
visible: boolean;
|
|
12
13
|
start: {
|
|
13
14
|
x: number;
|
|
14
15
|
y: number;
|
|
@@ -60,7 +60,8 @@ export interface IGeoRegionSpec extends IRegionSpec {
|
|
|
60
60
|
max?: number;
|
|
61
61
|
};
|
|
62
62
|
}
|
|
63
|
-
export
|
|
63
|
+
export type RegionSpec = IRegionSpec | IGeoRegionSpec;
|
|
64
|
+
export interface IRegionSpecInfo<T extends RegionSpec = IRegionSpec> extends IModelSpecInfo {
|
|
64
65
|
type: 'region';
|
|
65
66
|
spec: T;
|
|
66
67
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/region/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { IMark } from '../mark/interface';\nimport type { ILayoutModel, IModelConstructor, IModelOption, IModelSpecInfo } from '../model/interface';\nimport type { ISeries, SeriesType } from '../series/interface';\nimport type { CoordinateType } from '../typings/coordinate';\nimport type { IInteraction } from '../interaction/interface';\nimport type { IProjectionSpec } from '../component/geo/interface';\nimport type { ConvertToMarkStyleSpec, IRectMarkSpec } from '../typings/visual';\nimport type { IAnimate } from '../animation/interface';\nimport type { IGroupMark } from '../mark/group';\nimport type { StringOrNumber } from '../typings';\nimport type { ILayoutItemSpec } from '../layout/interface';\n\nexport interface IRegion extends ILayoutModel {\n animate?: IAnimate;\n interaction: IInteraction;\n\n //stack\n getStackInverse: () => boolean;\n\n getMaxWidth: () => number | undefined;\n setMaxWidth: (value: number) => void;\n getMaxHeight: () => number | undefined;\n setMaxHeight: (value: number) => void;\n\n // 系列\n addSeries: (series: ISeries) => void;\n removeSeries: (series: ISeries) => void;\n\n getSeries: (opt?: ISeriesFilter) => ISeries[];\n getSeriesInName: (name: string) => ISeries;\n getSeriesInUserId: (userId: string) => ISeries;\n getSeriesInId: (id: number) => ISeries;\n getSeriesInType: (type: SeriesType) => ISeries[];\n getSeriesInCoordinateType: (type: CoordinateType) => ISeries[];\n getSeriesInDataName: (dataName: string) => ISeries[];\n\n getMarks: () => IMark[];\n getGroupMark: () => IGroupMark;\n getInteractionMark: () => IGroupMark;\n\n getSpecInfo: () => IRegionSpecInfo;\n}\n\nexport type ISeriesFilter = {\n name?: string;\n userId?: StringOrNumber | StringOrNumber[];\n specIndex?: number | number[];\n id?: number;\n type?: string;\n coordinateType?: CoordinateType;\n dataName?: string;\n};\n\nexport interface IRegionConstructor extends IModelConstructor {\n new (spec: IRegionSpec, ctx: IModelOption): IRegion;\n}\n\nexport interface IRegionSpec extends ILayoutItemSpec {\n id?: StringOrNumber;\n coordinate?: CoordinateType;\n style?: ConvertToMarkStyleSpec<IRectMarkSpec>;\n /**\n * 堆积时是否逆序\n * @default false\n * @since 1.4.0\n */\n stackInverse?: boolean;\n}\n\nexport interface IGeoRegionSpec extends IRegionSpec {\n coordinate?: 'geo';\n /**\n * 是否可以拖拽\n * @default false\n */\n roam?: boolean;\n /**\n * 数据中的经度字段名\n */\n longitudeField?: string;\n /**\n * 数据中的纬度字段名\n */\n latitudeField?: string;\n /**\n * 地理映射配置\n */\n projection?: Partial<Omit<IProjectionSpec, 'name'>>;\n /**\n * 缩放最大最小倍数限制\n */\n zoomLimit?: {\n min?: number;\n max?: number;\n };\n}\n\nexport interface IRegionSpecInfo<T extends
|
|
1
|
+
{"version":3,"sources":["../src/region/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { IMark } from '../mark/interface';\nimport type { ILayoutModel, IModelConstructor, IModelOption, IModelSpecInfo } from '../model/interface';\nimport type { ISeries, SeriesType } from '../series/interface';\nimport type { CoordinateType } from '../typings/coordinate';\nimport type { IInteraction } from '../interaction/interface';\nimport type { IProjectionSpec } from '../component/geo/interface';\nimport type { ConvertToMarkStyleSpec, IRectMarkSpec } from '../typings/visual';\nimport type { IAnimate } from '../animation/interface';\nimport type { IGroupMark } from '../mark/group';\nimport type { StringOrNumber } from '../typings';\nimport type { ILayoutItemSpec } from '../layout/interface';\n\nexport interface IRegion extends ILayoutModel {\n animate?: IAnimate;\n interaction: IInteraction;\n\n //stack\n getStackInverse: () => boolean;\n\n getMaxWidth: () => number | undefined;\n setMaxWidth: (value: number) => void;\n getMaxHeight: () => number | undefined;\n setMaxHeight: (value: number) => void;\n\n // 系列\n addSeries: (series: ISeries) => void;\n removeSeries: (series: ISeries) => void;\n\n getSeries: (opt?: ISeriesFilter) => ISeries[];\n getSeriesInName: (name: string) => ISeries;\n getSeriesInUserId: (userId: string) => ISeries;\n getSeriesInId: (id: number) => ISeries;\n getSeriesInType: (type: SeriesType) => ISeries[];\n getSeriesInCoordinateType: (type: CoordinateType) => ISeries[];\n getSeriesInDataName: (dataName: string) => ISeries[];\n\n getMarks: () => IMark[];\n getGroupMark: () => IGroupMark;\n getInteractionMark: () => IGroupMark;\n\n getSpecInfo: () => IRegionSpecInfo;\n}\n\nexport type ISeriesFilter = {\n name?: string;\n userId?: StringOrNumber | StringOrNumber[];\n specIndex?: number | number[];\n id?: number;\n type?: string;\n coordinateType?: CoordinateType;\n dataName?: string;\n};\n\nexport interface IRegionConstructor extends IModelConstructor {\n new (spec: IRegionSpec, ctx: IModelOption): IRegion;\n}\n\nexport interface IRegionSpec extends ILayoutItemSpec {\n id?: StringOrNumber;\n coordinate?: CoordinateType;\n style?: ConvertToMarkStyleSpec<IRectMarkSpec>;\n /**\n * 堆积时是否逆序\n * @default false\n * @since 1.4.0\n */\n stackInverse?: boolean;\n}\n\nexport interface IGeoRegionSpec extends IRegionSpec {\n coordinate?: 'geo';\n /**\n * 是否可以拖拽\n * @default false\n */\n roam?: boolean;\n /**\n * 数据中的经度字段名\n */\n longitudeField?: string;\n /**\n * 数据中的纬度字段名\n */\n latitudeField?: string;\n /**\n * 地理映射配置\n */\n projection?: Partial<Omit<IProjectionSpec, 'name'>>;\n /**\n * 缩放最大最小倍数限制\n */\n zoomLimit?: {\n min?: number;\n max?: number;\n };\n}\n\nexport type RegionSpec = IRegionSpec | IGeoRegionSpec;\n\nexport interface IRegionSpecInfo<T extends RegionSpec = IRegionSpec> extends IModelSpecInfo {\n /** model 具体类型 */\n type: 'region';\n /** model spec */\n spec: T;\n}\n"]}
|
package/esm/region/region.js
CHANGED
|
@@ -73,7 +73,7 @@ export class Region extends LayoutModel {
|
|
|
73
73
|
const clip = null !== (_a = this._spec.clip) && void 0 !== _a ? _a : this._getClipDefaultValue();
|
|
74
74
|
this._groupMark = this._createGroupMark("regionGroup", this.userId, this.layoutZIndex),
|
|
75
75
|
this._interactionMark = this._createGroupMark("regionInteractionGroup", this.userId + "_interaction", LayoutZIndex.Interaction),
|
|
76
|
-
this._spec.style
|
|
76
|
+
isEmpty(this._spec.style) || (this._backgroundMark = this._createMark({
|
|
77
77
|
type: "rect",
|
|
78
78
|
name: "regionBackground"
|
|
79
79
|
}), clip && (this._foregroundMark = this._createMark({
|