@visactor/vgrammar-core 0.7.0
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/README.md +160 -0
- package/README.zh-CN.md +11 -0
- package/cjs/component/axis.d.ts +26 -0
- package/cjs/component/axis.js +164 -0
- package/cjs/component/axis.js.map +1 -0
- package/cjs/component/crosshair.d.ts +50 -0
- package/cjs/component/crosshair.js +281 -0
- package/cjs/component/crosshair.js.map +1 -0
- package/cjs/component/datazoom.d.ts +19 -0
- package/cjs/component/datazoom.js +166 -0
- package/cjs/component/datazoom.js.map +1 -0
- package/cjs/component/grid.d.ts +27 -0
- package/cjs/component/grid.js +190 -0
- package/cjs/component/grid.js.map +1 -0
- package/cjs/component/index.d.ts +11 -0
- package/cjs/component/index.js +105 -0
- package/cjs/component/index.js.map +1 -0
- package/cjs/component/label.d.ts +19 -0
- package/cjs/component/label.js +121 -0
- package/cjs/component/label.js.map +1 -0
- package/cjs/component/legend.d.ts +26 -0
- package/cjs/component/legend.js +170 -0
- package/cjs/component/legend.js.map +1 -0
- package/cjs/component/player.d.ts +25 -0
- package/cjs/component/player.js +138 -0
- package/cjs/component/player.js.map +1 -0
- package/cjs/component/scale.d.ts +8 -0
- package/cjs/component/scale.js +25 -0
- package/cjs/component/scale.js.map +1 -0
- package/cjs/component/scrollbar.d.ts +23 -0
- package/cjs/component/scrollbar.js +187 -0
- package/cjs/component/scrollbar.js.map +1 -0
- package/cjs/component/slider.d.ts +19 -0
- package/cjs/component/slider.js +86 -0
- package/cjs/component/slider.js.map +1 -0
- package/cjs/component/title.d.ts +15 -0
- package/cjs/component/title.js +56 -0
- package/cjs/component/title.js.map +1 -0
- package/cjs/component/tooltip.d.ts +62 -0
- package/cjs/component/tooltip.js +305 -0
- package/cjs/component/tooltip.js.map +1 -0
- package/cjs/core/factory.d.ts +35 -0
- package/cjs/core/factory.js +73 -0
- package/cjs/core/factory.js.map +1 -0
- package/cjs/glyph/boxplot.d.ts +10 -0
- package/cjs/glyph/boxplot.js +418 -0
- package/cjs/glyph/boxplot.js.map +1 -0
- package/cjs/glyph/index.d.ts +7 -0
- package/cjs/glyph/index.js +64 -0
- package/cjs/glyph/index.js.map +1 -0
- package/cjs/glyph/link-path.d.ts +7 -0
- package/cjs/glyph/link-path.js +138 -0
- package/cjs/glyph/link-path.js.map +1 -0
- package/cjs/glyph/ripple.d.ts +1 -0
- package/cjs/glyph/ripple.js +44 -0
- package/cjs/glyph/ripple.js.map +1 -0
- package/cjs/glyph/tree-path.d.ts +7 -0
- package/cjs/glyph/tree-path.js +152 -0
- package/cjs/glyph/tree-path.js.map +1 -0
- package/cjs/glyph/violin.d.ts +1 -0
- package/cjs/glyph/violin.js +165 -0
- package/cjs/glyph/violin.js.map +1 -0
- package/cjs/glyph/wave.d.ts +1 -0
- package/cjs/glyph/wave.js +67 -0
- package/cjs/glyph/wave.js.map +1 -0
- package/cjs/graph/animation/animate.d.ts +48 -0
- package/cjs/graph/animation/animate.js +250 -0
- package/cjs/graph/animation/animate.js.map +1 -0
- package/cjs/graph/animation/animation/clip.d.ts +4 -0
- package/cjs/graph/animation/animation/clip.js +54 -0
- package/cjs/graph/animation/animation/clip.js.map +1 -0
- package/cjs/graph/animation/animation/fade.d.ts +4 -0
- package/cjs/graph/animation/animation/fade.js +42 -0
- package/cjs/graph/animation/animation/fade.js.map +1 -0
- package/cjs/graph/animation/animation/grow-cartesian.d.ts +7 -0
- package/cjs/graph/animation/animation/grow-cartesian.js +288 -0
- package/cjs/graph/animation/animation/grow-cartesian.js.map +1 -0
- package/cjs/graph/animation/animation/grow-interval.d.ts +3 -0
- package/cjs/graph/animation/animation/grow-interval.js +194 -0
- package/cjs/graph/animation/animation/grow-interval.js.map +1 -0
- package/cjs/graph/animation/animation/grow-points.d.ts +7 -0
- package/cjs/graph/animation/animation/grow-points.js +118 -0
- package/cjs/graph/animation/animation/grow-points.js.map +1 -0
- package/cjs/graph/animation/animation/grow-polar.d.ts +5 -0
- package/cjs/graph/animation/animation/grow-polar.js +164 -0
- package/cjs/graph/animation/animation/grow-polar.js.map +1 -0
- package/cjs/graph/animation/animation/index.d.ts +11 -0
- package/cjs/graph/animation/animation/index.js +191 -0
- package/cjs/graph/animation/animation/index.js.map +1 -0
- package/cjs/graph/animation/animation/move.d.ts +3 -0
- package/cjs/graph/animation/animation/move.js +90 -0
- package/cjs/graph/animation/animation/move.js.map +1 -0
- package/cjs/graph/animation/animation/rotate.d.ts +3 -0
- package/cjs/graph/animation/animation/rotate.js +42 -0
- package/cjs/graph/animation/animation/rotate.js.map +1 -0
- package/cjs/graph/animation/animation/scale.d.ts +3 -0
- package/cjs/graph/animation/animation/scale.js +84 -0
- package/cjs/graph/animation/animation/scale.js.map +1 -0
- package/cjs/graph/animation/animation/update.d.ts +6 -0
- package/cjs/graph/animation/animation/update.js +22 -0
- package/cjs/graph/animation/animation/update.js.map +1 -0
- package/cjs/graph/animation/animator.d.ts +26 -0
- package/cjs/graph/animation/animator.js +88 -0
- package/cjs/graph/animation/animator.js.map +1 -0
- package/cjs/graph/animation/arranger.d.ts +13 -0
- package/cjs/graph/animation/arranger.js +38 -0
- package/cjs/graph/animation/arranger.js.map +1 -0
- package/cjs/graph/animation/attribute.d.ts +27 -0
- package/cjs/graph/animation/attribute.js +124 -0
- package/cjs/graph/animation/attribute.js.map +1 -0
- package/cjs/graph/animation/config.d.ts +5 -0
- package/cjs/graph/animation/config.js +92 -0
- package/cjs/graph/animation/config.js.map +1 -0
- package/cjs/graph/animation/morph.d.ts +12 -0
- package/cjs/graph/animation/morph.js +174 -0
- package/cjs/graph/animation/morph.js.map +1 -0
- package/cjs/graph/attributes/common.d.ts +2 -0
- package/cjs/graph/attributes/common.js +22 -0
- package/cjs/graph/attributes/common.js.map +1 -0
- package/cjs/graph/attributes/helpers.d.ts +17 -0
- package/cjs/graph/attributes/helpers.js +86 -0
- package/cjs/graph/attributes/helpers.js.map +1 -0
- package/cjs/graph/attributes/index.d.ts +10 -0
- package/cjs/graph/attributes/index.js +257 -0
- package/cjs/graph/attributes/index.js.map +1 -0
- package/cjs/graph/canvas-renderer.d.ts +34 -0
- package/cjs/graph/canvas-renderer.js +121 -0
- package/cjs/graph/canvas-renderer.js.map +1 -0
- package/cjs/graph/constants.d.ts +23 -0
- package/cjs/graph/constants.js +21 -0
- package/cjs/graph/constants.js.map +1 -0
- package/cjs/graph/element.d.ts +66 -0
- package/cjs/graph/element.js +297 -0
- package/cjs/graph/element.js.map +1 -0
- package/cjs/graph/enums.d.ts +153 -0
- package/cjs/graph/enums.js +85 -0
- package/cjs/graph/enums.js.map +1 -0
- package/cjs/graph/glyph-element.d.ts +53 -0
- package/cjs/graph/glyph-element.js +202 -0
- package/cjs/graph/glyph-element.js.map +1 -0
- package/cjs/graph/index.d.ts +3 -0
- package/cjs/graph/index.js +44 -0
- package/cjs/graph/index.js.map +1 -0
- package/cjs/graph/layout/grid.d.ts +3 -0
- package/cjs/graph/layout/grid.js +75 -0
- package/cjs/graph/layout/grid.js.map +1 -0
- package/cjs/graph/layout/layout.d.ts +3 -0
- package/cjs/graph/layout/layout.js +33 -0
- package/cjs/graph/layout/layout.js.map +1 -0
- package/cjs/graph/layout/relative.d.ts +3 -0
- package/cjs/graph/layout/relative.js +86 -0
- package/cjs/graph/layout/relative.js.map +1 -0
- package/cjs/graph/mark/differ.d.ts +20 -0
- package/cjs/graph/mark/differ.js +110 -0
- package/cjs/graph/mark/differ.js.map +1 -0
- package/cjs/graph/mark/encode.d.ts +10 -0
- package/cjs/graph/mark/encode.js +95 -0
- package/cjs/graph/mark/encode.js.map +1 -0
- package/cjs/graph/mark/large-rects.d.ts +10 -0
- package/cjs/graph/mark/large-rects.js +31 -0
- package/cjs/graph/mark/large-rects.js.map +1 -0
- package/cjs/graph/mark/large-symbols.d.ts +11 -0
- package/cjs/graph/mark/large-symbols.js +33 -0
- package/cjs/graph/mark/large-symbols.js.map +1 -0
- package/cjs/graph/mark-tree.d.ts +2 -0
- package/cjs/graph/mark-tree.js +21 -0
- package/cjs/graph/mark-tree.js.map +1 -0
- package/cjs/graph/util/element.d.ts +2 -0
- package/cjs/graph/util/element.js +10 -0
- package/cjs/graph/util/element.js.map +1 -0
- package/cjs/graph/util/env.d.ts +2 -0
- package/cjs/graph/util/env.js +14 -0
- package/cjs/graph/util/env.js.map +1 -0
- package/cjs/graph/util/events-extend.d.ts +5 -0
- package/cjs/graph/util/events-extend.js +18 -0
- package/cjs/graph/util/events-extend.js.map +1 -0
- package/cjs/graph/util/graphic.d.ts +9 -0
- package/cjs/graph/util/graphic.js +59 -0
- package/cjs/graph/util/graphic.js.map +1 -0
- package/cjs/graph/util/point.d.ts +1 -0
- package/cjs/graph/util/point.js +75 -0
- package/cjs/graph/util/point.js.map +1 -0
- package/cjs/index.d.ts +14 -0
- package/cjs/index.js +111 -0
- package/cjs/index.js.map +1 -0
- package/cjs/parse/coordinate.d.ts +7 -0
- package/cjs/parse/coordinate.js +70 -0
- package/cjs/parse/coordinate.js.map +1 -0
- package/cjs/parse/event.d.ts +8 -0
- package/cjs/parse/event.js +33 -0
- package/cjs/parse/event.js.map +1 -0
- package/cjs/parse/mark.d.ts +4 -0
- package/cjs/parse/mark.js +25 -0
- package/cjs/parse/mark.js.map +1 -0
- package/cjs/parse/option.d.ts +3 -0
- package/cjs/parse/option.js +19 -0
- package/cjs/parse/option.js.map +1 -0
- package/cjs/parse/scale.d.ts +8 -0
- package/cjs/parse/scale.js +365 -0
- package/cjs/parse/scale.js.map +1 -0
- package/cjs/parse/transform.d.ts +5 -0
- package/cjs/parse/transform.js +103 -0
- package/cjs/parse/transform.js.map +1 -0
- package/cjs/parse/util.d.ts +13 -0
- package/cjs/parse/util.js +82 -0
- package/cjs/parse/util.js.map +1 -0
- package/cjs/parse/view.d.ts +17 -0
- package/cjs/parse/view.js +108 -0
- package/cjs/parse/view.js.map +1 -0
- package/cjs/semantic-marks/cell.d.ts +13 -0
- package/cjs/semantic-marks/cell.js +61 -0
- package/cjs/semantic-marks/cell.js.map +1 -0
- package/cjs/semantic-marks/interval.d.ts +14 -0
- package/cjs/semantic-marks/interval.js +80 -0
- package/cjs/semantic-marks/interval.js.map +1 -0
- package/cjs/semantic-marks/text.d.ts +10 -0
- package/cjs/semantic-marks/text.js +25 -0
- package/cjs/semantic-marks/text.js.map +1 -0
- package/cjs/theme/common/component.d.ts +15 -0
- package/cjs/theme/common/component.js +493 -0
- package/cjs/theme/common/component.js.map +1 -0
- package/cjs/theme/common/constants.d.ts +1 -0
- package/cjs/theme/common/constants.js +6 -0
- package/cjs/theme/common/constants.js.map +1 -0
- package/cjs/theme/common/mark.d.ts +2 -0
- package/cjs/theme/common/mark.js +15 -0
- package/cjs/theme/common/mark.js.map +1 -0
- package/cjs/theme/dark.d.ts +2 -0
- package/cjs/theme/dark.js +94 -0
- package/cjs/theme/dark.js.map +1 -0
- package/cjs/theme/default.d.ts +2 -0
- package/cjs/theme/default.js +18 -0
- package/cjs/theme/default.js.map +1 -0
- package/cjs/theme/theme-manager.d.ts +8 -0
- package/cjs/theme/theme-manager.js +26 -0
- package/cjs/theme/theme-manager.js.map +1 -0
- package/cjs/transforms/data/bin.d.ts +2 -0
- package/cjs/transforms/data/bin.js +21 -0
- package/cjs/transforms/data/bin.js.map +1 -0
- package/cjs/transforms/data/circular-relation.d.ts +2 -0
- package/cjs/transforms/data/circular-relation.js +56 -0
- package/cjs/transforms/data/circular-relation.js.map +1 -0
- package/cjs/transforms/data/contour.d.ts +2 -0
- package/cjs/transforms/data/contour.js +115 -0
- package/cjs/transforms/data/contour.js.map +1 -0
- package/cjs/transforms/data/filter.d.ts +2 -0
- package/cjs/transforms/data/filter.js +10 -0
- package/cjs/transforms/data/filter.js.map +1 -0
- package/cjs/transforms/data/fold.d.ts +2 -0
- package/cjs/transforms/data/fold.js +24 -0
- package/cjs/transforms/data/fold.js.map +1 -0
- package/cjs/transforms/data/funnel.d.ts +2 -0
- package/cjs/transforms/data/funnel.js +25 -0
- package/cjs/transforms/data/funnel.js.map +1 -0
- package/cjs/transforms/data/join.d.ts +2 -0
- package/cjs/transforms/data/join.js +33 -0
- package/cjs/transforms/data/join.js.map +1 -0
- package/cjs/transforms/data/kde.d.ts +2 -0
- package/cjs/transforms/data/kde.js +90 -0
- package/cjs/transforms/data/kde.js.map +1 -0
- package/cjs/transforms/data/map.d.ts +2 -0
- package/cjs/transforms/data/map.js +23 -0
- package/cjs/transforms/data/map.js.map +1 -0
- package/cjs/transforms/data/pick.d.ts +2 -0
- package/cjs/transforms/data/pick.js +20 -0
- package/cjs/transforms/data/pick.js.map +1 -0
- package/cjs/transforms/data/pie.d.ts +2 -0
- package/cjs/transforms/data/pie.js +24 -0
- package/cjs/transforms/data/pie.js.map +1 -0
- package/cjs/transforms/data/range.d.ts +4 -0
- package/cjs/transforms/data/range.js +15 -0
- package/cjs/transforms/data/range.js.map +1 -0
- package/cjs/transforms/data/sort.d.ts +2 -0
- package/cjs/transforms/data/sort.js +17 -0
- package/cjs/transforms/data/sort.js.map +1 -0
- package/cjs/transforms/data/stack.d.ts +2 -0
- package/cjs/transforms/data/stack.js +74 -0
- package/cjs/transforms/data/stack.js.map +1 -0
- package/cjs/transforms/data/unfold.d.ts +2 -0
- package/cjs/transforms/data/unfold.js +49 -0
- package/cjs/transforms/data/unfold.js.map +1 -0
- package/cjs/transforms/index.d.ts +23 -0
- package/cjs/transforms/index.js +213 -0
- package/cjs/transforms/index.js.map +1 -0
- package/cjs/transforms/mark/dodge.d.ts +2 -0
- package/cjs/transforms/mark/dodge.js +81 -0
- package/cjs/transforms/mark/dodge.js.map +1 -0
- package/cjs/transforms/mark/jitter.d.ts +4 -0
- package/cjs/transforms/mark/jitter.js +53 -0
- package/cjs/transforms/mark/jitter.js.map +1 -0
- package/cjs/transforms/mark/lttb-sample.d.ts +2 -0
- package/cjs/transforms/mark/lttb-sample.js +68 -0
- package/cjs/transforms/mark/lttb-sample.js.map +1 -0
- package/cjs/transforms/mark/mark-overlap.d.ts +2 -0
- package/cjs/transforms/mark/mark-overlap.js +79 -0
- package/cjs/transforms/mark/mark-overlap.js.map +1 -0
- package/cjs/transforms/mark/symmetry.d.ts +2 -0
- package/cjs/transforms/mark/symmetry.js +25 -0
- package/cjs/transforms/mark/symmetry.js.map +1 -0
- package/cjs/transforms/util/util.d.ts +5 -0
- package/cjs/transforms/util/util.js +41 -0
- package/cjs/transforms/util/util.js.map +1 -0
- package/cjs/transforms/view/identifier.d.ts +2 -0
- package/cjs/transforms/view/identifier.js +17 -0
- package/cjs/transforms/view/identifier.js.map +1 -0
- package/cjs/types/animate.d.ts +224 -0
- package/cjs/types/animate.js +6 -0
- package/cjs/types/animate.js.map +1 -0
- package/cjs/types/base.d.ts +36 -0
- package/cjs/types/base.js +6 -0
- package/cjs/types/base.js.map +1 -0
- package/cjs/types/component.d.ts +240 -0
- package/cjs/types/component.js +6 -0
- package/cjs/types/component.js.map +1 -0
- package/cjs/types/coordinate.d.ts +15 -0
- package/cjs/types/coordinate.js +6 -0
- package/cjs/types/coordinate.js.map +1 -0
- package/cjs/types/data.d.ts +55 -0
- package/cjs/types/data.js +5 -0
- package/cjs/types/data.js.map +1 -0
- package/cjs/types/dataflow.d.ts +13 -0
- package/cjs/types/dataflow.js +6 -0
- package/cjs/types/dataflow.js.map +1 -0
- package/cjs/types/element.d.ts +117 -0
- package/cjs/types/element.js +6 -0
- package/cjs/types/element.js.map +1 -0
- package/cjs/types/event.d.ts +58 -0
- package/cjs/types/event.js +6 -0
- package/cjs/types/event.js.map +1 -0
- package/cjs/types/glyph.d.ts +29 -0
- package/cjs/types/glyph.js +6 -0
- package/cjs/types/glyph.js.map +1 -0
- package/cjs/types/grammar.d.ts +184 -0
- package/cjs/types/grammar.js +6 -0
- package/cjs/types/grammar.js.map +1 -0
- package/cjs/types/hooks.d.ts +45 -0
- package/cjs/types/hooks.js +6 -0
- package/cjs/types/hooks.js.map +1 -0
- package/cjs/types/index.d.ts +22 -0
- package/cjs/types/index.js +31 -0
- package/cjs/types/index.js.map +1 -0
- package/cjs/types/layout.d.ts +5 -0
- package/cjs/types/layout.js +6 -0
- package/cjs/types/layout.js.map +1 -0
- package/cjs/types/mark.d.ts +344 -0
- package/cjs/types/mark.js +6 -0
- package/cjs/types/mark.js.map +1 -0
- package/cjs/types/morph.d.ts +29 -0
- package/cjs/types/morph.js +6 -0
- package/cjs/types/morph.js.map +1 -0
- package/cjs/types/plot.d.ts +326 -0
- package/cjs/types/plot.js +6 -0
- package/cjs/types/plot.js.map +1 -0
- package/cjs/types/projection.d.ts +61 -0
- package/cjs/types/projection.js +6 -0
- package/cjs/types/projection.js.map +1 -0
- package/cjs/types/renderer.d.ts +19 -0
- package/cjs/types/renderer.js +6 -0
- package/cjs/types/renderer.js.map +1 -0
- package/cjs/types/scale.d.ts +111 -0
- package/cjs/types/scale.js +6 -0
- package/cjs/types/scale.js.map +1 -0
- package/cjs/types/signal.d.ts +20 -0
- package/cjs/types/signal.js +6 -0
- package/cjs/types/signal.js.map +1 -0
- package/cjs/types/theme.d.ts +41 -0
- package/cjs/types/theme.js +6 -0
- package/cjs/types/theme.js.map +1 -0
- package/cjs/types/transform.d.ts +291 -0
- package/cjs/types/transform.js +6 -0
- package/cjs/types/transform.js.map +1 -0
- package/cjs/types/view.d.ts +217 -0
- package/cjs/types/view.js +6 -0
- package/cjs/types/view.js.map +1 -0
- package/cjs/util/data.d.ts +3 -0
- package/cjs/util/data.js +64 -0
- package/cjs/util/data.js.map +1 -0
- package/cjs/util/grammar-heap.d.ts +14 -0
- package/cjs/util/grammar-heap.js +66 -0
- package/cjs/util/grammar-heap.js.map +1 -0
- package/cjs/util/text.d.ts +19 -0
- package/cjs/util/text.js +32 -0
- package/cjs/util/text.js.map +1 -0
- package/cjs/util/unique-list.d.ts +12 -0
- package/cjs/util/unique-list.js +37 -0
- package/cjs/util/unique-list.js.map +1 -0
- package/cjs/view/View.d.ts +157 -0
- package/cjs/view/View.js +800 -0
- package/cjs/view/View.js.map +1 -0
- package/cjs/view/animate.d.ts +20 -0
- package/cjs/view/animate.js +106 -0
- package/cjs/view/animate.js.map +1 -0
- package/cjs/view/component.d.ts +26 -0
- package/cjs/view/component.js +64 -0
- package/cjs/view/component.js.map +1 -0
- package/cjs/view/constants.d.ts +17 -0
- package/cjs/view/constants.js +13 -0
- package/cjs/view/constants.js.map +1 -0
- package/cjs/view/coordinate.d.ts +23 -0
- package/cjs/view/coordinate.js +59 -0
- package/cjs/view/coordinate.js.map +1 -0
- package/cjs/view/data.d.ts +37 -0
- package/cjs/view/data.js +198 -0
- package/cjs/view/data.js.map +1 -0
- package/cjs/view/dataflow.d.ts +32 -0
- package/cjs/view/dataflow.js +146 -0
- package/cjs/view/dataflow.js.map +1 -0
- package/cjs/view/events.d.ts +4 -0
- package/cjs/view/events.js +34 -0
- package/cjs/view/events.js.map +1 -0
- package/cjs/view/glyph-meta.d.ts +29 -0
- package/cjs/view/glyph-meta.js +45 -0
- package/cjs/view/glyph-meta.js.map +1 -0
- package/cjs/view/glyph.d.ts +14 -0
- package/cjs/view/glyph.js +29 -0
- package/cjs/view/glyph.js.map +1 -0
- package/cjs/view/grammar-base.d.ts +46 -0
- package/cjs/view/grammar-base.js +171 -0
- package/cjs/view/grammar-base.js.map +1 -0
- package/cjs/view/grammar-record.d.ts +39 -0
- package/cjs/view/grammar-record.js +180 -0
- package/cjs/view/grammar-record.js.map +1 -0
- package/cjs/view/group.d.ts +13 -0
- package/cjs/view/group.js +39 -0
- package/cjs/view/group.js.map +1 -0
- package/cjs/view/index.d.ts +1 -0
- package/cjs/view/index.js +21 -0
- package/cjs/view/index.js.map +1 -0
- package/cjs/view/mark.d.ts +112 -0
- package/cjs/view/mark.js +600 -0
- package/cjs/view/mark.js.map +1 -0
- package/cjs/view/scale.d.ts +26 -0
- package/cjs/view/scale.js +86 -0
- package/cjs/view/scale.js.map +1 -0
- package/cjs/view/signal.d.ts +18 -0
- package/cjs/view/signal.js +56 -0
- package/cjs/view/signal.js.map +1 -0
- package/es/component/axis.d.ts +26 -0
- package/es/component/axis.js +162 -0
- package/es/component/axis.js.map +1 -0
- package/es/component/crosshair.d.ts +50 -0
- package/es/component/crosshair.js +275 -0
- package/es/component/crosshair.js.map +1 -0
- package/es/component/datazoom.d.ts +19 -0
- package/es/component/datazoom.js +161 -0
- package/es/component/datazoom.js.map +1 -0
- package/es/component/grid.d.ts +27 -0
- package/es/component/grid.js +193 -0
- package/es/component/grid.js.map +1 -0
- package/es/component/index.d.ts +11 -0
- package/es/component/index.js +22 -0
- package/es/component/index.js.map +1 -0
- package/es/component/label.d.ts +19 -0
- package/es/component/label.js +124 -0
- package/es/component/label.js.map +1 -0
- package/es/component/legend.d.ts +26 -0
- package/es/component/legend.js +169 -0
- package/es/component/legend.js.map +1 -0
- package/es/component/player.d.ts +25 -0
- package/es/component/player.js +136 -0
- package/es/component/player.js.map +1 -0
- package/es/component/scale.d.ts +8 -0
- package/es/component/scale.js +19 -0
- package/es/component/scale.js.map +1 -0
- package/es/component/scrollbar.d.ts +23 -0
- package/es/component/scrollbar.js +184 -0
- package/es/component/scrollbar.js.map +1 -0
- package/es/component/slider.d.ts +19 -0
- package/es/component/slider.js +86 -0
- package/es/component/slider.js.map +1 -0
- package/es/component/title.d.ts +15 -0
- package/es/component/title.js +58 -0
- package/es/component/title.js.map +1 -0
- package/es/component/tooltip.d.ts +62 -0
- package/es/component/tooltip.js +303 -0
- package/es/component/tooltip.js.map +1 -0
- package/es/core/factory.d.ts +35 -0
- package/es/core/factory.js +67 -0
- package/es/core/factory.js.map +1 -0
- package/es/glyph/boxplot.d.ts +10 -0
- package/es/glyph/boxplot.js +410 -0
- package/es/glyph/boxplot.js.map +1 -0
- package/es/glyph/index.d.ts +7 -0
- package/es/glyph/index.js +11 -0
- package/es/glyph/index.js.map +1 -0
- package/es/glyph/link-path.d.ts +7 -0
- package/es/glyph/link-path.js +132 -0
- package/es/glyph/link-path.js.map +1 -0
- package/es/glyph/ripple.d.ts +1 -0
- package/es/glyph/ripple.js +38 -0
- package/es/glyph/ripple.js.map +1 -0
- package/es/glyph/tree-path.d.ts +7 -0
- package/es/glyph/tree-path.js +146 -0
- package/es/glyph/tree-path.js.map +1 -0
- package/es/glyph/violin.d.ts +1 -0
- package/es/glyph/violin.js +163 -0
- package/es/glyph/violin.js.map +1 -0
- package/es/glyph/wave.d.ts +1 -0
- package/es/glyph/wave.js +61 -0
- package/es/glyph/wave.js.map +1 -0
- package/es/graph/animation/animate.d.ts +48 -0
- package/es/graph/animation/animate.js +247 -0
- package/es/graph/animation/animate.js.map +1 -0
- package/es/graph/animation/animation/clip.d.ts +4 -0
- package/es/graph/animation/animation/clip.js +44 -0
- package/es/graph/animation/animation/clip.js.map +1 -0
- package/es/graph/animation/animation/fade.d.ts +4 -0
- package/es/graph/animation/animation/fade.js +32 -0
- package/es/graph/animation/animation/fade.js.map +1 -0
- package/es/graph/animation/animation/grow-cartesian.d.ts +7 -0
- package/es/graph/animation/animation/grow-cartesian.js +272 -0
- package/es/graph/animation/animation/grow-cartesian.js.map +1 -0
- package/es/graph/animation/animation/grow-interval.d.ts +3 -0
- package/es/graph/animation/animation/grow-interval.js +184 -0
- package/es/graph/animation/animation/grow-interval.js.map +1 -0
- package/es/graph/animation/animation/grow-points.d.ts +7 -0
- package/es/graph/animation/animation/grow-points.js +107 -0
- package/es/graph/animation/animation/grow-points.js.map +1 -0
- package/es/graph/animation/animation/grow-polar.d.ts +5 -0
- package/es/graph/animation/animation/grow-polar.js +160 -0
- package/es/graph/animation/animation/grow-polar.js.map +1 -0
- package/es/graph/animation/animation/index.d.ts +11 -0
- package/es/graph/animation/animation/index.js +22 -0
- package/es/graph/animation/animation/index.js.map +1 -0
- package/es/graph/animation/animation/move.d.ts +3 -0
- package/es/graph/animation/animation/move.js +78 -0
- package/es/graph/animation/animation/move.js.map +1 -0
- package/es/graph/animation/animation/rotate.d.ts +3 -0
- package/es/graph/animation/animation/rotate.js +32 -0
- package/es/graph/animation/animation/rotate.js.map +1 -0
- package/es/graph/animation/animation/scale.d.ts +3 -0
- package/es/graph/animation/animation/scale.js +74 -0
- package/es/graph/animation/animation/scale.js.map +1 -0
- package/es/graph/animation/animation/update.d.ts +6 -0
- package/es/graph/animation/animation/update.js +20 -0
- package/es/graph/animation/animation/update.js.map +1 -0
- package/es/graph/animation/animator.d.ts +26 -0
- package/es/graph/animation/animator.js +83 -0
- package/es/graph/animation/animator.js.map +1 -0
- package/es/graph/animation/arranger.d.ts +13 -0
- package/es/graph/animation/arranger.js +29 -0
- package/es/graph/animation/arranger.js.map +1 -0
- package/es/graph/animation/attribute.d.ts +27 -0
- package/es/graph/animation/attribute.js +114 -0
- package/es/graph/animation/attribute.js.map +1 -0
- package/es/graph/animation/config.d.ts +5 -0
- package/es/graph/animation/config.js +84 -0
- package/es/graph/animation/config.js.map +1 -0
- package/es/graph/animation/morph.d.ts +12 -0
- package/es/graph/animation/morph.js +171 -0
- package/es/graph/animation/morph.js.map +1 -0
- package/es/graph/attributes/common.d.ts +2 -0
- package/es/graph/attributes/common.js +13 -0
- package/es/graph/attributes/common.js.map +1 -0
- package/es/graph/attributes/helpers.d.ts +17 -0
- package/es/graph/attributes/helpers.js +75 -0
- package/es/graph/attributes/helpers.js.map +1 -0
- package/es/graph/attributes/index.d.ts +10 -0
- package/es/graph/attributes/index.js +231 -0
- package/es/graph/attributes/index.js.map +1 -0
- package/es/graph/canvas-renderer.d.ts +34 -0
- package/es/graph/canvas-renderer.js +115 -0
- package/es/graph/canvas-renderer.js.map +1 -0
- package/es/graph/constants.d.ts +23 -0
- package/es/graph/constants.js +47 -0
- package/es/graph/constants.js.map +1 -0
- package/es/graph/element.d.ts +66 -0
- package/es/graph/element.js +292 -0
- package/es/graph/element.js.map +1 -0
- package/es/graph/enums.d.ts +153 -0
- package/es/graph/enums.js +129 -0
- package/es/graph/enums.js.map +1 -0
- package/es/graph/glyph-element.d.ts +53 -0
- package/es/graph/glyph-element.js +206 -0
- package/es/graph/glyph-element.js.map +1 -0
- package/es/graph/index.d.ts +3 -0
- package/es/graph/index.js +6 -0
- package/es/graph/index.js.map +1 -0
- package/es/graph/layout/grid.d.ts +3 -0
- package/es/graph/layout/grid.js +66 -0
- package/es/graph/layout/grid.js.map +1 -0
- package/es/graph/layout/layout.d.ts +3 -0
- package/es/graph/layout/layout.js +33 -0
- package/es/graph/layout/layout.js.map +1 -0
- package/es/graph/layout/relative.d.ts +3 -0
- package/es/graph/layout/relative.js +85 -0
- package/es/graph/layout/relative.js.map +1 -0
- package/es/graph/mark/differ.d.ts +20 -0
- package/es/graph/mark/differ.js +104 -0
- package/es/graph/mark/differ.js.map +1 -0
- package/es/graph/mark/encode.d.ts +10 -0
- package/es/graph/mark/encode.js +92 -0
- package/es/graph/mark/encode.js.map +1 -0
- package/es/graph/mark/large-rects.d.ts +10 -0
- package/es/graph/mark/large-rects.js +23 -0
- package/es/graph/mark/large-rects.js.map +1 -0
- package/es/graph/mark/large-symbols.d.ts +11 -0
- package/es/graph/mark/large-symbols.js +27 -0
- package/es/graph/mark/large-symbols.js.map +1 -0
- package/es/graph/mark-tree.d.ts +2 -0
- package/es/graph/mark-tree.js +15 -0
- package/es/graph/mark-tree.js.map +1 -0
- package/es/graph/util/element.d.ts +2 -0
- package/es/graph/util/element.js +8 -0
- package/es/graph/util/element.js.map +1 -0
- package/es/graph/util/env.d.ts +2 -0
- package/es/graph/util/env.js +6 -0
- package/es/graph/util/env.js.map +1 -0
- package/es/graph/util/events-extend.d.ts +5 -0
- package/es/graph/util/events-extend.js +12 -0
- package/es/graph/util/events-extend.js.map +1 -0
- package/es/graph/util/graphic.d.ts +9 -0
- package/es/graph/util/graphic.js +59 -0
- package/es/graph/util/graphic.js.map +1 -0
- package/es/graph/util/point.d.ts +1 -0
- package/es/graph/util/point.js +67 -0
- package/es/graph/util/point.js.map +1 -0
- package/es/index.d.ts +14 -0
- package/es/index.js +27 -0
- package/es/index.js.map +1 -0
- package/es/parse/coordinate.d.ts +7 -0
- package/es/parse/coordinate.js +65 -0
- package/es/parse/coordinate.js.map +1 -0
- package/es/parse/event.d.ts +8 -0
- package/es/parse/event.js +23 -0
- package/es/parse/event.js.map +1 -0
- package/es/parse/mark.d.ts +4 -0
- package/es/parse/mark.js +19 -0
- package/es/parse/mark.js.map +1 -0
- package/es/parse/option.d.ts +3 -0
- package/es/parse/option.js +10 -0
- package/es/parse/option.js.map +1 -0
- package/es/parse/scale.d.ts +8 -0
- package/es/parse/scale.js +347 -0
- package/es/parse/scale.js.map +1 -0
- package/es/parse/transform.d.ts +5 -0
- package/es/parse/transform.js +102 -0
- package/es/parse/transform.js.map +1 -0
- package/es/parse/util.d.ts +13 -0
- package/es/parse/util.js +65 -0
- package/es/parse/util.js.map +1 -0
- package/es/parse/view.d.ts +17 -0
- package/es/parse/view.js +98 -0
- package/es/parse/view.js.map +1 -0
- package/es/semantic-marks/cell.d.ts +13 -0
- package/es/semantic-marks/cell.js +57 -0
- package/es/semantic-marks/cell.js.map +1 -0
- package/es/semantic-marks/interval.d.ts +14 -0
- package/es/semantic-marks/interval.js +87 -0
- package/es/semantic-marks/interval.js.map +1 -0
- package/es/semantic-marks/text.d.ts +10 -0
- package/es/semantic-marks/text.js +22 -0
- package/es/semantic-marks/text.js.map +1 -0
- package/es/theme/common/component.d.ts +15 -0
- package/es/theme/common/component.js +510 -0
- package/es/theme/common/component.js.map +1 -0
- package/es/theme/common/constants.d.ts +1 -0
- package/es/theme/common/constants.js +2 -0
- package/es/theme/common/constants.js.map +1 -0
- package/es/theme/common/mark.d.ts +2 -0
- package/es/theme/common/mark.js +11 -0
- package/es/theme/common/mark.js.map +1 -0
- package/es/theme/dark.d.ts +2 -0
- package/es/theme/dark.js +96 -0
- package/es/theme/dark.js.map +1 -0
- package/es/theme/default.d.ts +2 -0
- package/es/theme/default.js +16 -0
- package/es/theme/default.js.map +1 -0
- package/es/theme/theme-manager.d.ts +8 -0
- package/es/theme/theme-manager.js +22 -0
- package/es/theme/theme-manager.js.map +1 -0
- package/es/transforms/data/bin.d.ts +2 -0
- package/es/transforms/data/bin.js +16 -0
- package/es/transforms/data/bin.js.map +1 -0
- package/es/transforms/data/circular-relation.d.ts +2 -0
- package/es/transforms/data/circular-relation.js +44 -0
- package/es/transforms/data/circular-relation.js.map +1 -0
- package/es/transforms/data/contour.d.ts +2 -0
- package/es/transforms/data/contour.js +111 -0
- package/es/transforms/data/contour.js.map +1 -0
- package/es/transforms/data/filter.d.ts +2 -0
- package/es/transforms/data/filter.js +2 -0
- package/es/transforms/data/filter.js.map +1 -0
- package/es/transforms/data/fold.d.ts +2 -0
- package/es/transforms/data/fold.js +16 -0
- package/es/transforms/data/fold.js.map +1 -0
- package/es/transforms/data/funnel.d.ts +2 -0
- package/es/transforms/data/funnel.js +17 -0
- package/es/transforms/data/funnel.js.map +1 -0
- package/es/transforms/data/join.d.ts +2 -0
- package/es/transforms/data/join.js +26 -0
- package/es/transforms/data/join.js.map +1 -0
- package/es/transforms/data/kde.d.ts +2 -0
- package/es/transforms/data/kde.js +80 -0
- package/es/transforms/data/kde.js.map +1 -0
- package/es/transforms/data/map.d.ts +2 -0
- package/es/transforms/data/map.js +16 -0
- package/es/transforms/data/map.js.map +1 -0
- package/es/transforms/data/pick.d.ts +2 -0
- package/es/transforms/data/pick.js +15 -0
- package/es/transforms/data/pick.js.map +1 -0
- package/es/transforms/data/pie.d.ts +2 -0
- package/es/transforms/data/pie.js +18 -0
- package/es/transforms/data/pie.js.map +1 -0
- package/es/transforms/data/range.d.ts +4 -0
- package/es/transforms/data/range.js +9 -0
- package/es/transforms/data/range.js.map +1 -0
- package/es/transforms/data/sort.d.ts +2 -0
- package/es/transforms/data/sort.js +13 -0
- package/es/transforms/data/sort.js.map +1 -0
- package/es/transforms/data/stack.d.ts +2 -0
- package/es/transforms/data/stack.js +72 -0
- package/es/transforms/data/stack.js.map +1 -0
- package/es/transforms/data/unfold.d.ts +2 -0
- package/es/transforms/data/unfold.js +45 -0
- package/es/transforms/data/unfold.js.map +1 -0
- package/es/transforms/index.d.ts +23 -0
- package/es/transforms/index.js +205 -0
- package/es/transforms/index.js.map +1 -0
- package/es/transforms/mark/dodge.d.ts +2 -0
- package/es/transforms/mark/dodge.js +74 -0
- package/es/transforms/mark/dodge.js.map +1 -0
- package/es/transforms/mark/jitter.d.ts +4 -0
- package/es/transforms/mark/jitter.js +48 -0
- package/es/transforms/mark/jitter.js.map +1 -0
- package/es/transforms/mark/lttb-sample.d.ts +2 -0
- package/es/transforms/mark/lttb-sample.js +60 -0
- package/es/transforms/mark/lttb-sample.js.map +1 -0
- package/es/transforms/mark/mark-overlap.d.ts +2 -0
- package/es/transforms/mark/mark-overlap.js +71 -0
- package/es/transforms/mark/mark-overlap.js.map +1 -0
- package/es/transforms/mark/symmetry.d.ts +2 -0
- package/es/transforms/mark/symmetry.js +20 -0
- package/es/transforms/mark/symmetry.js.map +1 -0
- package/es/transforms/util/util.d.ts +5 -0
- package/es/transforms/util/util.js +33 -0
- package/es/transforms/util/util.js.map +1 -0
- package/es/transforms/view/identifier.d.ts +2 -0
- package/es/transforms/view/identifier.js +13 -0
- package/es/transforms/view/identifier.js.map +1 -0
- package/es/types/animate.d.ts +224 -0
- package/es/types/animate.js +2 -0
- package/es/types/animate.js.map +1 -0
- package/es/types/base.d.ts +36 -0
- package/es/types/base.js +2 -0
- package/es/types/base.js.map +1 -0
- package/es/types/component.d.ts +240 -0
- package/es/types/component.js +2 -0
- package/es/types/component.js.map +1 -0
- package/es/types/coordinate.d.ts +15 -0
- package/es/types/coordinate.js +2 -0
- package/es/types/coordinate.js.map +1 -0
- package/es/types/data.d.ts +55 -0
- package/es/types/data.js +1 -0
- package/es/types/data.js.map +1 -0
- package/es/types/dataflow.d.ts +13 -0
- package/es/types/dataflow.js +2 -0
- package/es/types/dataflow.js.map +1 -0
- package/es/types/element.d.ts +117 -0
- package/es/types/element.js +2 -0
- package/es/types/element.js.map +1 -0
- package/es/types/event.d.ts +58 -0
- package/es/types/event.js +2 -0
- package/es/types/event.js.map +1 -0
- package/es/types/glyph.d.ts +29 -0
- package/es/types/glyph.js +2 -0
- package/es/types/glyph.js.map +1 -0
- package/es/types/grammar.d.ts +184 -0
- package/es/types/grammar.js +2 -0
- package/es/types/grammar.js.map +1 -0
- package/es/types/hooks.d.ts +45 -0
- package/es/types/hooks.js +2 -0
- package/es/types/hooks.js.map +1 -0
- package/es/types/index.d.ts +22 -0
- package/es/types/index.js +44 -0
- package/es/types/index.js.map +1 -0
- package/es/types/layout.d.ts +5 -0
- package/es/types/layout.js +2 -0
- package/es/types/layout.js.map +1 -0
- package/es/types/mark.d.ts +344 -0
- package/es/types/mark.js +2 -0
- package/es/types/mark.js.map +1 -0
- package/es/types/morph.d.ts +29 -0
- package/es/types/morph.js +2 -0
- package/es/types/morph.js.map +1 -0
- package/es/types/plot.d.ts +326 -0
- package/es/types/plot.js +2 -0
- package/es/types/plot.js.map +1 -0
- package/es/types/projection.d.ts +61 -0
- package/es/types/projection.js +2 -0
- package/es/types/projection.js.map +1 -0
- package/es/types/renderer.d.ts +19 -0
- package/es/types/renderer.js +2 -0
- package/es/types/renderer.js.map +1 -0
- package/es/types/scale.d.ts +111 -0
- package/es/types/scale.js +2 -0
- package/es/types/scale.js.map +1 -0
- package/es/types/signal.d.ts +20 -0
- package/es/types/signal.js +2 -0
- package/es/types/signal.js.map +1 -0
- package/es/types/theme.d.ts +41 -0
- package/es/types/theme.js +2 -0
- package/es/types/theme.js.map +1 -0
- package/es/types/transform.d.ts +291 -0
- package/es/types/transform.js +2 -0
- package/es/types/transform.js.map +1 -0
- package/es/types/view.d.ts +217 -0
- package/es/types/view.js +2 -0
- package/es/types/view.js.map +1 -0
- package/es/util/data.d.ts +3 -0
- package/es/util/data.js +60 -0
- package/es/util/data.js.map +1 -0
- package/es/util/grammar-heap.d.ts +14 -0
- package/es/util/grammar-heap.js +58 -0
- package/es/util/grammar-heap.js.map +1 -0
- package/es/util/text.d.ts +19 -0
- package/es/util/text.js +25 -0
- package/es/util/text.js.map +1 -0
- package/es/util/unique-list.d.ts +12 -0
- package/es/util/unique-list.js +29 -0
- package/es/util/unique-list.js.map +1 -0
- package/es/view/View.d.ts +157 -0
- package/es/view/View.js +836 -0
- package/es/view/View.js.map +1 -0
- package/es/view/animate.d.ts +20 -0
- package/es/view/animate.js +98 -0
- package/es/view/animate.js.map +1 -0
- package/es/view/component.d.ts +26 -0
- package/es/view/component.js +64 -0
- package/es/view/component.js.map +1 -0
- package/es/view/constants.d.ts +17 -0
- package/es/view/constants.js +32 -0
- package/es/view/constants.js.map +1 -0
- package/es/view/coordinate.d.ts +23 -0
- package/es/view/coordinate.js +52 -0
- package/es/view/coordinate.js.map +1 -0
- package/es/view/data.d.ts +37 -0
- package/es/view/data.js +195 -0
- package/es/view/data.js.map +1 -0
- package/es/view/dataflow.d.ts +32 -0
- package/es/view/dataflow.js +141 -0
- package/es/view/dataflow.js.map +1 -0
- package/es/view/events.d.ts +4 -0
- package/es/view/events.js +26 -0
- package/es/view/events.js.map +1 -0
- package/es/view/glyph-meta.d.ts +29 -0
- package/es/view/glyph-meta.js +37 -0
- package/es/view/glyph-meta.js.map +1 -0
- package/es/view/glyph.d.ts +14 -0
- package/es/view/glyph.js +27 -0
- package/es/view/glyph.js.map +1 -0
- package/es/view/grammar-base.d.ts +46 -0
- package/es/view/grammar-base.js +165 -0
- package/es/view/grammar-base.js.map +1 -0
- package/es/view/grammar-record.d.ts +39 -0
- package/es/view/grammar-record.js +170 -0
- package/es/view/grammar-record.js.map +1 -0
- package/es/view/group.d.ts +13 -0
- package/es/view/group.js +39 -0
- package/es/view/group.js.map +1 -0
- package/es/view/index.d.ts +1 -0
- package/es/view/index.js +2 -0
- package/es/view/index.js.map +1 -0
- package/es/view/mark.d.ts +112 -0
- package/es/view/mark.js +604 -0
- package/es/view/mark.js.map +1 -0
- package/es/view/scale.d.ts +26 -0
- package/es/view/scale.js +82 -0
- package/es/view/scale.js.map +1 -0
- package/es/view/signal.d.ts +18 -0
- package/es/view/signal.js +52 -0
- package/es/view/signal.js.map +1 -0
- package/package.json +67 -0
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: !0
|
|
5
|
+
}), exports.registerCrosshair = exports.Crosshair = exports.generatePolygonCrosshairAttributes = exports.generateCircleCrosshairAttributes = exports.generateSectorCrosshairAttributes = exports.generateRingCrosshairAttributes = exports.generateRectCrosshairAttributes = exports.generateLineCrosshairAttributes = void 0;
|
|
6
|
+
|
|
7
|
+
const vutils_1 = require("@visactor/vutils"), vrender_components_1 = require("@visactor/vrender-components"), vscale_1 = require("@visactor/vscale"), graph_1 = require("../graph"), scale_1 = require("./scale"), encode_1 = require("../graph/mark/encode"), factory_1 = require("../core/factory"), computeCrosshairStartEnd = (point, scale, type, groupSize, config, offset = 0) => {
|
|
8
|
+
var _a, _b;
|
|
9
|
+
const start = {
|
|
10
|
+
x: 0,
|
|
11
|
+
y: 0
|
|
12
|
+
}, end = {
|
|
13
|
+
x: 0,
|
|
14
|
+
y: 0
|
|
15
|
+
}, radius = "angle" === type ? null !== (_a = null == config ? void 0 : config.radius) && void 0 !== _a ? _a : Math.min(groupSize.width, groupSize.height) / 2 : null, center = "angle" === type ? null !== (_b = null == config ? void 0 : config.center) && void 0 !== _b ? _b : {
|
|
16
|
+
x: groupSize.width / 2,
|
|
17
|
+
y: groupSize.height / 2
|
|
18
|
+
} : null;
|
|
19
|
+
let current = 0;
|
|
20
|
+
if ((0, vscale_1.isDiscrete)(scale.type)) {
|
|
21
|
+
if ("x" === type) current = scale.scale(scale.invert(point.x)); else if ("y" === type) current = scale.scale(scale.invert(point.y)); else if ("angle" === type) {
|
|
22
|
+
const angle = (0, vutils_1.clampRadian)((0, vutils_1.getAngleByPoint)(center, point) + 2 * Math.PI);
|
|
23
|
+
current = scale.scale(scale.invert(angle));
|
|
24
|
+
}
|
|
25
|
+
} else (0, vscale_1.isContinuous)(scale.type) && ("x" === type ? current = point.x : "y" === type ? current = point.y : "angle" === type && (current = (0,
|
|
26
|
+
vutils_1.getAngleByPoint)(center, point)));
|
|
27
|
+
switch (current += offset, type) {
|
|
28
|
+
case "x":
|
|
29
|
+
start.x = current, start.y = 0, end.x = current, end.y = groupSize.height;
|
|
30
|
+
break;
|
|
31
|
+
|
|
32
|
+
case "y":
|
|
33
|
+
start.x = 0, start.y = current, end.x = groupSize.width, end.y = current;
|
|
34
|
+
break;
|
|
35
|
+
|
|
36
|
+
case "angle":
|
|
37
|
+
start.x = center.x, start.y = center.y, end.x = center.x + radius * Math.cos(current),
|
|
38
|
+
end.y = center.y + radius * Math.sin(current);
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
start: start,
|
|
42
|
+
end: end
|
|
43
|
+
};
|
|
44
|
+
}, computeRadiusOfTangential = (point, scale, type, groupSize, config, addition) => {
|
|
45
|
+
var _a, _b, _c;
|
|
46
|
+
const center = null !== (_b = null !== (_a = null == addition ? void 0 : addition.center) && void 0 !== _a ? _a : null == config ? void 0 : config.center) && void 0 !== _b ? _b : {
|
|
47
|
+
x: groupSize.width / 2,
|
|
48
|
+
y: groupSize.height / 2
|
|
49
|
+
};
|
|
50
|
+
let currentRadius = 0;
|
|
51
|
+
if ((0, vscale_1.isDiscrete)(scale.type)) {
|
|
52
|
+
const offset = "band" === scale.type ? scale.bandwidth() / 2 : 0, radius = Math.sqrt((point.x - center.x) ** 2 + (point.y - center.y) ** 2);
|
|
53
|
+
currentRadius = scale.scale(scale.invert(radius)) + offset;
|
|
54
|
+
} else if ((0, vscale_1.isContinuous)(scale.type)) {
|
|
55
|
+
const maxRadius = null !== (_c = null == config ? void 0 : config.radius) && void 0 !== _c ? _c : Math.min(groupSize.width, groupSize.height) / 2;
|
|
56
|
+
currentRadius = Math.min(maxRadius, Math.sqrt((point.x - center.x) ** 2 + (point.y - center.y) ** 2));
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
radius: currentRadius,
|
|
60
|
+
center: center
|
|
61
|
+
};
|
|
62
|
+
}, generateLineCrosshairAttributes = (point, scale, type, groupSize, config, theme, addition) => {
|
|
63
|
+
var _a, _b, _c;
|
|
64
|
+
const crosshairTheme = null === (_a = null == theme ? void 0 : theme.components) || void 0 === _a ? void 0 : _a.lineCrosshair, offset = "band" === scale.type ? scale.bandwidth() / 2 : 0, points = computeCrosshairStartEnd(point, scale, type, groupSize, {
|
|
65
|
+
radius: null !== (_b = null == addition ? void 0 : addition.radius) && void 0 !== _b ? _b : null == config ? void 0 : config.radius,
|
|
66
|
+
center: null !== (_c = null == addition ? void 0 : addition.center) && void 0 !== _c ? _c : null == config ? void 0 : config.center
|
|
67
|
+
}, offset);
|
|
68
|
+
return (0, vutils_1.merge)({}, crosshairTheme, points, null != addition ? addition : {});
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
exports.generateLineCrosshairAttributes = generateLineCrosshairAttributes;
|
|
72
|
+
|
|
73
|
+
const generateRectCrosshairAttributes = (point, scale, type, groupSize, config, theme, addition) => {
|
|
74
|
+
var _a, _b, _c;
|
|
75
|
+
const crosshairTheme = null === (_a = null == theme ? void 0 : theme.components) || void 0 === _a ? void 0 : _a.rectCrosshair, defaultSize = "band" === scale.type || "point" === scale.type ? scale.step() : void 0, customRectStyle = null == addition ? void 0 : addition.rectStyle, size = null != defaultSize ? defaultSize : "y" === type ? null !== (_b = null == customRectStyle ? void 0 : customRectStyle.width) && void 0 !== _b ? _b : crosshairTheme.rectStyle.width : null !== (_c = null == customRectStyle ? void 0 : customRectStyle.height) && void 0 !== _c ? _c : crosshairTheme.rectStyle.height, points = computeCrosshairStartEnd(point, scale, type, groupSize, config, "band" === scale.type ? 0 : -size / 2), rectStyle = {};
|
|
76
|
+
"x" === type ? rectStyle.width = size : rectStyle.height = size;
|
|
77
|
+
const attribute = (0, vutils_1.merge)({}, crosshairTheme, {
|
|
78
|
+
start: points.start,
|
|
79
|
+
end: points.end,
|
|
80
|
+
rectStyle: rectStyle
|
|
81
|
+
}, null != addition ? addition : {});
|
|
82
|
+
return "x" === type ? attribute.rectStyle.height = attribute.end.y - attribute.start.y : attribute.rectStyle.width = attribute.end.x - attribute.start.x,
|
|
83
|
+
attribute;
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
exports.generateRectCrosshairAttributes = generateRectCrosshairAttributes;
|
|
87
|
+
|
|
88
|
+
const generateRingCrosshairAttributes = (point, scale, type, groupSize, config, theme, addition) => {
|
|
89
|
+
var _a;
|
|
90
|
+
const crosshairTheme = null === (_a = null == theme ? void 0 : theme.components) || void 0 === _a ? void 0 : _a.circleCrosshair, {center: center, radius: radius} = computeRadiusOfTangential(point, scale, 0, groupSize, config, addition), startAngle = crosshairTheme.startAngle, endAngle = crosshairTheme.endAngle, deltaRadius = "band" === scale.type || "point" === scale.type ? scale.step() : 0;
|
|
91
|
+
return (0, vutils_1.merge)({}, crosshairTheme, {
|
|
92
|
+
center: center,
|
|
93
|
+
innerRadius: radius - deltaRadius / 2,
|
|
94
|
+
radius: radius + deltaRadius / 2,
|
|
95
|
+
startAngle: startAngle,
|
|
96
|
+
endAngle: endAngle
|
|
97
|
+
}, null != addition ? addition : {});
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
exports.generateRingCrosshairAttributes = generateRingCrosshairAttributes;
|
|
101
|
+
|
|
102
|
+
const generateSectorCrosshairAttributes = (point, scale, type, groupSize, config, theme, addition) => {
|
|
103
|
+
var _a, _b, _c, _d, _e;
|
|
104
|
+
const crosshairTheme = null === (_a = null == theme ? void 0 : theme.components) || void 0 === _a ? void 0 : _a.sectorCrosshair, radius = null !== (_c = null !== (_b = null == addition ? void 0 : addition.radius) && void 0 !== _b ? _b : null == config ? void 0 : config.radius) && void 0 !== _c ? _c : Math.min(groupSize.width, groupSize.height) / 2, center = null !== (_e = null !== (_d = null == addition ? void 0 : addition.center) && void 0 !== _d ? _d : null == config ? void 0 : config.center) && void 0 !== _e ? _e : {
|
|
105
|
+
x: groupSize.width / 2,
|
|
106
|
+
y: groupSize.height / 2
|
|
107
|
+
}, defaultAngle = crosshairTheme.endAngle - crosshairTheme.startAngle, angle = "band" === scale.type || "point" === scale.type ? scale.step() : defaultAngle;
|
|
108
|
+
let currentAngle = 0;
|
|
109
|
+
if ((0, vscale_1.isDiscrete)(scale.type)) {
|
|
110
|
+
const angle = (0, vutils_1.clampRadian)((0, vutils_1.getAngleByPoint)(center, point) + 2 * Math.PI);
|
|
111
|
+
currentAngle = scale.scale(scale.invert(angle)) + ("band" === scale.type ? scale.bandwidth() / 2 : 0);
|
|
112
|
+
} else (0, vscale_1.isContinuous)(scale.type) && (currentAngle = (0, vutils_1.getAngleByPoint)(center, point));
|
|
113
|
+
const startAngle = currentAngle - angle / 2, endAngle = currentAngle + angle / 2;
|
|
114
|
+
return (0, vutils_1.merge)({}, crosshairTheme, {
|
|
115
|
+
center: center,
|
|
116
|
+
radius: radius,
|
|
117
|
+
startAngle: startAngle,
|
|
118
|
+
endAngle: endAngle
|
|
119
|
+
}, null != addition ? addition : {});
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
exports.generateSectorCrosshairAttributes = generateSectorCrosshairAttributes;
|
|
123
|
+
|
|
124
|
+
const generateCircleCrosshairAttributes = (point, scale, type, groupSize, config, theme, addition) => {
|
|
125
|
+
var _a;
|
|
126
|
+
const crosshairTheme = null === (_a = null == theme ? void 0 : theme.components) || void 0 === _a ? void 0 : _a.circleCrosshair, {center: center, radius: radius} = computeRadiusOfTangential(point, scale, 0, groupSize, config, addition), startAngle = crosshairTheme.startAngle, endAngle = crosshairTheme.endAngle;
|
|
127
|
+
return (0, vutils_1.merge)({}, crosshairTheme, {
|
|
128
|
+
center: center,
|
|
129
|
+
radius: radius,
|
|
130
|
+
startAngle: startAngle,
|
|
131
|
+
endAngle: endAngle
|
|
132
|
+
}, null != addition ? addition : {});
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
exports.generateCircleCrosshairAttributes = generateCircleCrosshairAttributes;
|
|
136
|
+
|
|
137
|
+
const generatePolygonCrosshairAttributes = (point, scale, type, groupSize, config, theme, addition) => {
|
|
138
|
+
var _a;
|
|
139
|
+
const crosshairTheme = null === (_a = null == theme ? void 0 : theme.components) || void 0 === _a ? void 0 : _a.circleCrosshair, {center: center, radius: radius} = computeRadiusOfTangential(point, scale, 0, groupSize, config, addition), startAngle = crosshairTheme.startAngle, endAngle = crosshairTheme.endAngle;
|
|
140
|
+
return (0, vutils_1.merge)({}, crosshairTheme, {
|
|
141
|
+
center: center,
|
|
142
|
+
radius: radius,
|
|
143
|
+
startAngle: startAngle,
|
|
144
|
+
endAngle: endAngle
|
|
145
|
+
}, null != addition ? addition : {});
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
exports.generatePolygonCrosshairAttributes = generatePolygonCrosshairAttributes;
|
|
149
|
+
|
|
150
|
+
class Crosshair extends scale_1.ScaleComponent {
|
|
151
|
+
constructor(view, group) {
|
|
152
|
+
super(view, graph_1.ComponentEnum.crosshair, group), this._onCrosshairShow = event => {
|
|
153
|
+
var _a, _b, _c, _d;
|
|
154
|
+
if (!(null === (_b = null === (_a = this.elements[0]) || void 0 === _a ? void 0 : _a.getGraphicItem) || void 0 === _b ? void 0 : _b.call(_a))) return;
|
|
155
|
+
const groupGraphicItem = this.group.getGroupGraphicItem(), point = {
|
|
156
|
+
x: 0,
|
|
157
|
+
y: 0
|
|
158
|
+
};
|
|
159
|
+
if (groupGraphicItem.globalTransMatrix.transformPoint(event.canvas, point), point.x < 0 || point.x > groupGraphicItem.attribute.width || point.y < 0 || point.y > groupGraphicItem.attribute.height) return;
|
|
160
|
+
const crosshair = this.elements[0].getGraphicItem(), crosshairType = null !== (_c = this.spec.crosshairType) && void 0 !== _c ? _c : "x", groupSize = {
|
|
161
|
+
width: groupGraphicItem.attribute.width,
|
|
162
|
+
height: groupGraphicItem.attribute.height
|
|
163
|
+
}, scale = ((0, vutils_1.isString)(this.spec.scale) ? this.view.getScaleById(this.spec.scale) : this.spec.scale).getScale(), config = this.spec.componentConfig, theme = this.view.getCurrentTheme(), addition = null !== (_d = this._additionalEncodeResult) && void 0 !== _d ? _d : {};
|
|
164
|
+
let attributes = {};
|
|
165
|
+
switch (this._getCrosshairComponentType()) {
|
|
166
|
+
case graph_1.CrosshairEnum.lineCrosshair:
|
|
167
|
+
attributes = (0, exports.generateLineCrosshairAttributes)(point, scale, crosshairType, groupSize, config, theme, addition);
|
|
168
|
+
break;
|
|
169
|
+
|
|
170
|
+
case graph_1.CrosshairEnum.rectCrosshair:
|
|
171
|
+
attributes = (0, exports.generateRectCrosshairAttributes)(point, scale, crosshairType, groupSize, config, theme, addition);
|
|
172
|
+
break;
|
|
173
|
+
|
|
174
|
+
case graph_1.CrosshairEnum.sectorCrosshair:
|
|
175
|
+
attributes = (0, exports.generateSectorCrosshairAttributes)(point, scale, crosshairType, groupSize, config, theme, addition);
|
|
176
|
+
break;
|
|
177
|
+
|
|
178
|
+
case graph_1.CrosshairEnum.circleCrosshair:
|
|
179
|
+
attributes = (0, exports.generateCircleCrosshairAttributes)(point, scale, crosshairType, groupSize, config, theme, addition);
|
|
180
|
+
break;
|
|
181
|
+
|
|
182
|
+
case graph_1.CrosshairEnum.polygonCrosshair:
|
|
183
|
+
attributes = (0, exports.generatePolygonCrosshairAttributes)(point, scale, crosshairType, groupSize, config, theme, addition);
|
|
184
|
+
break;
|
|
185
|
+
|
|
186
|
+
case graph_1.CrosshairEnum.ringCrosshair:
|
|
187
|
+
attributes = (0, exports.generateRingCrosshairAttributes)(point, scale, crosshairType, groupSize, config, theme, addition);
|
|
188
|
+
}
|
|
189
|
+
crosshair.showAll(), crosshair.setAttributes(attributes);
|
|
190
|
+
}, this._onCrosshairHide = event => {
|
|
191
|
+
this.elements[0].getGraphicItem().hideAll();
|
|
192
|
+
}, this.spec.componentType = graph_1.ComponentEnum.crosshair, this.spec.crosshairShape = "line",
|
|
193
|
+
this.spec.crosshairType = "x";
|
|
194
|
+
}
|
|
195
|
+
parseAddition(spec) {
|
|
196
|
+
return super.parseAddition(spec), this.crosshairType(spec.crosshairType), this.crosshairShape(spec.crosshairShape),
|
|
197
|
+
this;
|
|
198
|
+
}
|
|
199
|
+
crosshairType(crosshairType) {
|
|
200
|
+
return this.spec.crosshairType = crosshairType, this._crosshairComponentType = null,
|
|
201
|
+
this._prepareRejoin(), this.commit(), this;
|
|
202
|
+
}
|
|
203
|
+
crosshairShape(crosshairShape) {
|
|
204
|
+
return this.spec.crosshairShape = crosshairShape, this._crosshairComponentType = null,
|
|
205
|
+
this._prepareRejoin(), this.commit(), this;
|
|
206
|
+
}
|
|
207
|
+
addGraphicItem(attrs, groupKey) {
|
|
208
|
+
const initialAttributes = Object.assign(this._getDefaultCrosshairAttribute(), attrs), graphicItem = factory_1.Factory.createGraphicComponent(this._getCrosshairComponentType(), initialAttributes);
|
|
209
|
+
return super.addGraphicItem(initialAttributes, groupKey, graphicItem);
|
|
210
|
+
}
|
|
211
|
+
release() {
|
|
212
|
+
var _a, _b, _c, _d;
|
|
213
|
+
null === (_b = null === (_a = this._lastGroup) || void 0 === _a ? void 0 : _a.off) || void 0 === _b || _b.call(_a, "pointermove", this._onCrosshairShow),
|
|
214
|
+
null === (_d = null === (_c = this._lastGroup) || void 0 === _c ? void 0 : _c.off) || void 0 === _d || _d.call(_c, "pointerleave", this._onCrosshairHide),
|
|
215
|
+
super.release();
|
|
216
|
+
}
|
|
217
|
+
init(stage, parameters) {
|
|
218
|
+
var _a, _b, _c, _d, _e, _f;
|
|
219
|
+
super.init(stage, parameters);
|
|
220
|
+
const groupGraphicItem = this.group ? this.group.getGroupGraphicItem() : stage.defaultLayer;
|
|
221
|
+
this._lastGroup !== groupGraphicItem && (null === (_b = null === (_a = this._lastGroup) || void 0 === _a ? void 0 : _a.off) || void 0 === _b || _b.call(_a, "pointermove", this._onCrosshairShow),
|
|
222
|
+
null === (_d = null === (_c = this._lastGroup) || void 0 === _c ? void 0 : _c.off) || void 0 === _d || _d.call(_c, "pointerleave", this._onCrosshairHide)),
|
|
223
|
+
null === (_e = null == groupGraphicItem ? void 0 : groupGraphicItem.on) || void 0 === _e || _e.call(groupGraphicItem, "pointermove", this._onCrosshairShow),
|
|
224
|
+
null === (_f = null == groupGraphicItem ? void 0 : groupGraphicItem.on) || void 0 === _f || _f.call(groupGraphicItem, "pointerleave", this._onCrosshairHide),
|
|
225
|
+
this._lastGroup = groupGraphicItem;
|
|
226
|
+
}
|
|
227
|
+
_updateComponentEncoders() {
|
|
228
|
+
const encoders = Object.assign({
|
|
229
|
+
update: {}
|
|
230
|
+
}, this.spec.encode), componentEncoders = Object.keys(encoders).reduce(((res, state) => {
|
|
231
|
+
const encoder = encoders[state];
|
|
232
|
+
return encoder && (res[state] = {
|
|
233
|
+
callback: (datum, element, parameters) => {
|
|
234
|
+
this._additionalEncodeResult = (0, encode_1.invokeEncoder)(encoder, datum, element, parameters);
|
|
235
|
+
}
|
|
236
|
+
}), res;
|
|
237
|
+
}), {});
|
|
238
|
+
this._encoders = componentEncoders;
|
|
239
|
+
}
|
|
240
|
+
_getCrosshairComponentType() {
|
|
241
|
+
var _a, _b;
|
|
242
|
+
if (this._crosshairComponentType) return this._crosshairComponentType;
|
|
243
|
+
const shape = null !== (_a = this.spec.crosshairShape) && void 0 !== _a ? _a : "line", type = null !== (_b = this.spec.crosshairType) && void 0 !== _b ? _b : "x";
|
|
244
|
+
return this._crosshairComponentType = "rect" === shape ? "angle" === type ? graph_1.CrosshairEnum.sectorCrosshair : "radius" === type ? graph_1.CrosshairEnum.ringCrosshair : "radius-polygon" === type ? graph_1.CrosshairEnum.polygonCrosshair : graph_1.CrosshairEnum.rectCrosshair : "radius" === type ? graph_1.CrosshairEnum.circleCrosshair : "radius-polygon" === type ? graph_1.CrosshairEnum.polygonCrosshair : graph_1.CrosshairEnum.lineCrosshair,
|
|
245
|
+
this._crosshairComponentType;
|
|
246
|
+
}
|
|
247
|
+
_getDefaultCrosshairAttribute() {
|
|
248
|
+
var _a;
|
|
249
|
+
const type = null !== (_a = this.spec.crosshairType) && void 0 !== _a ? _a : "x";
|
|
250
|
+
return "radius" === type || "radius-polygon" === type ? {
|
|
251
|
+
center: {
|
|
252
|
+
x: 0,
|
|
253
|
+
y: 0
|
|
254
|
+
}
|
|
255
|
+
} : {
|
|
256
|
+
start: {
|
|
257
|
+
x: 0,
|
|
258
|
+
y: 0
|
|
259
|
+
},
|
|
260
|
+
end: {
|
|
261
|
+
x: 0,
|
|
262
|
+
y: 0
|
|
263
|
+
}
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
exports.Crosshair = Crosshair, Crosshair.componentType = graph_1.ComponentEnum.crosshair;
|
|
269
|
+
|
|
270
|
+
const registerCrosshair = () => {
|
|
271
|
+
factory_1.Factory.registerGraphicComponent(graph_1.CrosshairEnum.lineCrosshair, (attrs => new vrender_components_1.LineCrosshair(attrs))),
|
|
272
|
+
factory_1.Factory.registerGraphicComponent(graph_1.CrosshairEnum.rectCrosshair, (attrs => new vrender_components_1.RectCrosshair(attrs))),
|
|
273
|
+
factory_1.Factory.registerGraphicComponent(graph_1.CrosshairEnum.sectorCrosshair, (attrs => new vrender_components_1.SectorCrosshair(attrs))),
|
|
274
|
+
factory_1.Factory.registerGraphicComponent(graph_1.CrosshairEnum.circleCrosshair, (attrs => new vrender_components_1.CircleCrosshair(attrs))),
|
|
275
|
+
factory_1.Factory.registerGraphicComponent(graph_1.CrosshairEnum.polygonCrosshair, (attrs => new vrender_components_1.PolygonCrosshair(attrs))),
|
|
276
|
+
factory_1.Factory.registerGraphicComponent(graph_1.CrosshairEnum.ringCrosshair, (attrs => new vrender_components_1.SectorCrosshair(attrs))),
|
|
277
|
+
factory_1.Factory.registerComponent(graph_1.ComponentEnum.crosshair, Crosshair);
|
|
278
|
+
};
|
|
279
|
+
|
|
280
|
+
exports.registerCrosshair = registerCrosshair;
|
|
281
|
+
//# sourceMappingURL=crosshair.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/component/crosshair.ts"],"names":[],"mappings":"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","file":"crosshair.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { clampRadian, getAngleByPoint, isString, merge } from '@visactor/vutils';\nimport type { IGraphic, IGroup, IRectGraphicAttribute } from '@visactor/vrender';\nimport type {\n CircleCrosshairAttrs,\n LineCrosshairAttrs,\n PolygonCrosshairAttrs,\n RectCrosshairAttrs,\n SectorCrosshairAttrs\n} from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport {\n CircleCrosshair,\n LineCrosshair,\n PolygonCrosshair,\n RectCrosshair,\n SectorCrosshair\n} from '@visactor/vrender-components';\nimport type { IBandLikeScale, IBaseScale } from '@visactor/vscale';\n// eslint-disable-next-line no-duplicate-imports\nimport { isContinuous, isDiscrete } from '@visactor/vscale';\nimport { ComponentEnum, CrosshairEnum } from '../graph';\nimport type { CrosshairType, CrosshairSpec, CrosshairShape, ICrosshair } from '../types/component';\nimport type {\n BaseSignleEncodeSpec,\n IElement,\n IGroupMark,\n ITheme,\n IView,\n RecursivePartial,\n StateEncodeSpec\n} from '../types';\nimport { ScaleComponent } from './scale';\nimport { invokeEncoder } from '../graph/mark/encode';\nimport { Factory } from '../core/factory';\n\nconst computeCrosshairStartEnd = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: CrosshairSpec['componentConfig'],\n offset: number = 0\n) => {\n const start = { x: 0, y: 0 };\n const end = { x: 0, y: 0 };\n const radius = type === 'angle' ? config?.radius ?? Math.min(groupSize.width, groupSize.height) / 2 : null;\n const center = type === 'angle' ? config?.center ?? { x: groupSize.width / 2, y: groupSize.height / 2 } : null;\n\n let current = 0;\n if (isDiscrete(scale.type)) {\n if (type === 'x') {\n current = scale.scale(scale.invert(point.x));\n } else if (type === 'y') {\n current = scale.scale(scale.invert(point.y));\n } else if (type === 'angle') {\n const angle = clampRadian(getAngleByPoint(center, point) + Math.PI * 2);\n current = scale.scale(scale.invert(angle));\n }\n } else if (isContinuous(scale.type)) {\n if (type === 'x') {\n current = point.x;\n } else if (type === 'y') {\n current = point.y;\n } else if (type === 'angle') {\n current = getAngleByPoint(center, point);\n }\n }\n current += offset;\n switch (type) {\n case 'x':\n start.x = current;\n start.y = 0;\n end.x = current;\n end.y = groupSize.height;\n break;\n case 'y':\n start.x = 0;\n start.y = current;\n end.x = groupSize.width;\n end.y = current;\n break;\n case 'angle':\n start.x = center.x;\n start.y = center.y;\n end.x = center.x + radius * Math.cos(current);\n end.y = center.y + radius * Math.sin(current);\n break;\n }\n return { start, end };\n};\n\nconst computeRadiusOfTangential = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: CrosshairSpec['componentConfig'],\n addition?:\n | RecursivePartial<PolygonCrosshairAttrs>\n | RecursivePartial<CircleCrosshairAttrs>\n | RecursivePartial<SectorCrosshairAttrs>\n) => {\n const center = addition?.center ?? config?.center ?? { x: groupSize.width / 2, y: groupSize.height / 2 };\n let currentRadius = 0;\n\n if (isDiscrete(scale.type)) {\n const offset = scale.type === 'band' ? (scale as IBandLikeScale).bandwidth() / 2 : 0;\n const radius = Math.sqrt((point.x - center.x) ** 2 + (point.y - center.y) ** 2);\n currentRadius = scale.scale(scale.invert(radius)) + offset;\n } else if (isContinuous(scale.type)) {\n const maxRadius = config?.radius ?? Math.min(groupSize.width, groupSize.height) / 2;\n currentRadius = Math.min(maxRadius, Math.sqrt((point.x - center.x) ** 2 + (point.y - center.y) ** 2));\n }\n\n return { radius: currentRadius, center };\n};\n\nexport const generateLineCrosshairAttributes = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: CrosshairSpec['componentConfig'],\n theme?: ITheme,\n addition?: RecursivePartial<LineCrosshairAttrs> & CrosshairSpec['componentConfig']\n): LineCrosshairAttrs => {\n const crosshairTheme = theme?.components?.lineCrosshair;\n const offset = scale.type === 'band' ? (scale as IBandLikeScale).bandwidth() / 2 : 0;\n const points = computeCrosshairStartEnd(\n point,\n scale,\n type,\n groupSize,\n {\n radius: addition?.radius ?? config?.radius,\n center: addition?.center ?? config?.center\n },\n offset\n );\n return merge({}, crosshairTheme, points, addition ?? {});\n};\n\nexport const generateRectCrosshairAttributes = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: CrosshairSpec['componentConfig'],\n theme?: ITheme,\n addition?: RecursivePartial<RectCrosshairAttrs>\n): RectCrosshairAttrs => {\n const crosshairTheme = theme?.components?.rectCrosshair;\n const defaultSize = scale.type === 'band' || scale.type === 'point' ? (scale as IBandLikeScale).step() : undefined;\n const customRectStyle = addition?.rectStyle;\n const size =\n defaultSize ??\n (type === 'y'\n ? customRectStyle?.width ?? crosshairTheme.rectStyle.width\n : customRectStyle?.height ?? crosshairTheme.rectStyle.height);\n const points = computeCrosshairStartEnd(point, scale, type, groupSize, config, scale.type === 'band' ? 0 : -size / 2);\n const rectStyle: Partial<IRectGraphicAttribute> = {};\n if (type === 'x') {\n rectStyle.width = size;\n } else {\n rectStyle.height = size;\n }\n const attribute = merge(\n {},\n crosshairTheme,\n {\n start: points.start,\n end: points.end,\n rectStyle\n },\n addition ?? {}\n );\n if (type === 'x') {\n attribute.rectStyle.height = attribute.end.y - attribute.start.y;\n } else {\n attribute.rectStyle.width = attribute.end.x - attribute.start.x;\n }\n return attribute;\n};\n\nexport const generateRingCrosshairAttributes = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: CrosshairSpec['componentConfig'],\n theme?: ITheme,\n addition?: RecursivePartial<SectorCrosshairAttrs>\n): SectorCrosshairAttrs => {\n const crosshairTheme = theme?.components?.circleCrosshair;\n const { center, radius } = computeRadiusOfTangential(point, scale, type, groupSize, config, addition);\n\n const startAngle = crosshairTheme.startAngle;\n const endAngle = crosshairTheme.endAngle;\n const deltaRadius = scale.type === 'band' || scale.type === 'point' ? (scale as IBandLikeScale).step() : 0;\n\n return merge(\n {},\n crosshairTheme,\n { center, innerRadius: radius - deltaRadius / 2, radius: radius + deltaRadius / 2, startAngle, endAngle },\n addition ?? {}\n );\n};\n\nexport const generateSectorCrosshairAttributes = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: CrosshairSpec['componentConfig'],\n theme?: ITheme,\n addition?: RecursivePartial<SectorCrosshairAttrs>\n): SectorCrosshairAttrs => {\n const crosshairTheme = theme?.components?.sectorCrosshair;\n const radius = addition?.radius ?? config?.radius ?? Math.min(groupSize.width, groupSize.height) / 2;\n const center = (addition?.center ??\n config?.center ?? { x: groupSize.width / 2, y: groupSize.height / 2 }) as IPointLike;\n const defaultAngle = crosshairTheme.endAngle - crosshairTheme.startAngle;\n const angle = scale.type === 'band' || scale.type === 'point' ? (scale as IBandLikeScale).step() : defaultAngle;\n let currentAngle = 0;\n if (isDiscrete(scale.type)) {\n const angle = clampRadian(getAngleByPoint(center, point) + Math.PI * 2);\n currentAngle =\n scale.scale(scale.invert(angle)) + (scale.type === 'band' ? (scale as IBandLikeScale).bandwidth() / 2 : 0);\n } else if (isContinuous(scale.type)) {\n currentAngle = getAngleByPoint(center, point);\n }\n const startAngle = currentAngle - angle / 2;\n const endAngle = currentAngle + angle / 2;\n return merge({}, crosshairTheme, { center, radius, startAngle, endAngle }, addition ?? {});\n};\n\nexport const generateCircleCrosshairAttributes = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: CrosshairSpec['componentConfig'],\n theme?: ITheme,\n addition?: RecursivePartial<CircleCrosshairAttrs>\n): CircleCrosshairAttrs => {\n const crosshairTheme = theme?.components?.circleCrosshair;\n const { center, radius } = computeRadiusOfTangential(point, scale, type, groupSize, config, addition);\n\n const startAngle = crosshairTheme.startAngle;\n const endAngle = crosshairTheme.endAngle;\n\n return merge({}, crosshairTheme, { center, radius: radius, startAngle, endAngle }, addition ?? {});\n};\n\nexport const generatePolygonCrosshairAttributes = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: CrosshairSpec['componentConfig'],\n theme?: ITheme,\n addition?: RecursivePartial<PolygonCrosshairAttrs>\n): PolygonCrosshairAttrs => {\n const crosshairTheme = theme?.components?.circleCrosshair;\n const { center, radius } = computeRadiusOfTangential(point, scale, type, groupSize, config, addition);\n\n const startAngle = crosshairTheme.startAngle;\n const endAngle = crosshairTheme.endAngle;\n return merge({}, crosshairTheme, { center, radius: radius, startAngle, endAngle }, addition ?? {});\n};\n\nexport class Crosshair extends ScaleComponent implements ICrosshair {\n static readonly componentType: string = ComponentEnum.crosshair;\n protected declare spec: CrosshairSpec;\n\n private _crosshairComponentType?: keyof typeof CrosshairEnum;\n private _additionalEncodeResult: any;\n private _lastGroup: IGroup;\n\n constructor(view: IView, group?: IGroupMark) {\n super(view, ComponentEnum.crosshair, group);\n this.spec.componentType = ComponentEnum.crosshair;\n this.spec.crosshairShape = 'line';\n this.spec.crosshairType = 'x';\n }\n\n protected parseAddition(spec: CrosshairSpec) {\n super.parseAddition(spec);\n this.crosshairType(spec.crosshairType);\n this.crosshairShape(spec.crosshairShape);\n return this;\n }\n\n crosshairType(crosshairType?: CrosshairType) {\n this.spec.crosshairType = crosshairType;\n this._crosshairComponentType = null;\n this._prepareRejoin();\n this.commit();\n return this;\n }\n\n crosshairShape(crosshairShape?: CrosshairShape) {\n this.spec.crosshairShape = crosshairShape;\n this._crosshairComponentType = null;\n this._prepareRejoin();\n this.commit();\n return this;\n }\n\n addGraphicItem(attrs: any, groupKey?: string) {\n const initialAttributes = Object.assign(this._getDefaultCrosshairAttribute(), attrs);\n const graphicItem = Factory.createGraphicComponent(this._getCrosshairComponentType(), initialAttributes);\n return super.addGraphicItem(initialAttributes, groupKey, graphicItem);\n }\n\n release() {\n (this._lastGroup as any)?.off?.('pointermove', this._onCrosshairShow);\n (this._lastGroup as any)?.off?.('pointerleave', this._onCrosshairHide);\n super.release();\n }\n\n protected init(stage: any, parameters: any) {\n super.init(stage, parameters);\n\n const groupGraphicItem = this.group ? this.group.getGroupGraphicItem() : stage.defaultLayer;\n if (this._lastGroup !== groupGraphicItem) {\n // FIXME: waiting for vRender to fix\n (this._lastGroup as any)?.off?.('pointermove', this._onCrosshairShow);\n (this._lastGroup as any)?.off?.('pointerleave', this._onCrosshairHide);\n }\n groupGraphicItem?.on?.('pointermove', this._onCrosshairShow);\n groupGraphicItem?.on?.('pointerleave', this._onCrosshairHide);\n this._lastGroup = groupGraphicItem;\n }\n\n protected _updateComponentEncoders() {\n const encoders = Object.assign({ update: {} }, this.spec.encode);\n const componentEncoders: StateEncodeSpec = Object.keys(encoders).reduce((res, state) => {\n const encoder = encoders[state];\n if (encoder) {\n res[state] = {\n callback: (datum: any, element: IElement, parameters: any) => {\n this._additionalEncodeResult = invokeEncoder(encoder as BaseSignleEncodeSpec, datum, element, parameters);\n }\n };\n }\n return res;\n }, {});\n this._encoders = componentEncoders;\n }\n\n private _onCrosshairShow = (event: any) => {\n if (!this.elements[0]?.getGraphicItem?.()) {\n return;\n }\n const groupGraphicItem = this.group.getGroupGraphicItem();\n // FIXME: waiting for vRender to add transformed position to event\n const point = { x: 0, y: 0 };\n groupGraphicItem.globalTransMatrix.transformPoint(event.canvas, point);\n\n if (\n point.x < 0 ||\n point.x > groupGraphicItem.attribute.width ||\n point.y < 0 ||\n point.y > groupGraphicItem.attribute.height\n ) {\n return;\n }\n\n const crosshair = this.elements[0].getGraphicItem() as IGroup;\n const crosshairType = this.spec.crosshairType ?? 'x';\n const groupSize = { width: groupGraphicItem.attribute.width, height: groupGraphicItem.attribute.height };\n const scaleGrammar = isString(this.spec.scale) ? this.view.getScaleById(this.spec.scale) : this.spec.scale;\n const scale = scaleGrammar.getScale();\n const config = this.spec.componentConfig;\n const theme = this.view.getCurrentTheme();\n const addition = this._additionalEncodeResult ?? {};\n\n let attributes = {};\n switch (this._getCrosshairComponentType()) {\n case CrosshairEnum.lineCrosshair:\n attributes = generateLineCrosshairAttributes(point, scale, crosshairType, groupSize, config, theme, addition);\n break;\n case CrosshairEnum.rectCrosshair:\n attributes = generateRectCrosshairAttributes(point, scale, crosshairType, groupSize, config, theme, addition);\n break;\n case CrosshairEnum.sectorCrosshair:\n attributes = generateSectorCrosshairAttributes(point, scale, crosshairType, groupSize, config, theme, addition);\n break;\n case CrosshairEnum.circleCrosshair:\n attributes = generateCircleCrosshairAttributes(point, scale, crosshairType, groupSize, config, theme, addition);\n break;\n case CrosshairEnum.polygonCrosshair:\n attributes = generatePolygonCrosshairAttributes(\n point,\n scale,\n crosshairType,\n groupSize,\n config,\n theme,\n addition\n );\n break;\n case CrosshairEnum.ringCrosshair:\n attributes = generateRingCrosshairAttributes(point, scale, crosshairType, groupSize, config, theme, addition);\n break;\n }\n crosshair.showAll();\n crosshair.setAttributes(attributes);\n };\n\n private _onCrosshairHide = (event: any) => {\n const crosshair = this.elements[0].getGraphicItem() as IGroup;\n crosshair.hideAll();\n };\n\n private _getCrosshairComponentType() {\n if (this._crosshairComponentType) {\n return this._crosshairComponentType;\n }\n const shape = this.spec.crosshairShape ?? 'line';\n const type = this.spec.crosshairType ?? 'x';\n if (shape === 'rect') {\n if (type === 'angle') {\n this._crosshairComponentType = CrosshairEnum.sectorCrosshair;\n } else if (type === 'radius') {\n this._crosshairComponentType = CrosshairEnum.ringCrosshair;\n } else if (type === 'radius-polygon') {\n this._crosshairComponentType = CrosshairEnum.polygonCrosshair;\n } else {\n this._crosshairComponentType = CrosshairEnum.rectCrosshair;\n }\n } else {\n if (type === 'radius') {\n this._crosshairComponentType = CrosshairEnum.circleCrosshair;\n } else if (type === 'radius-polygon') {\n this._crosshairComponentType = CrosshairEnum.polygonCrosshair;\n } else {\n this._crosshairComponentType = CrosshairEnum.lineCrosshair;\n }\n }\n return this._crosshairComponentType;\n }\n\n private _getDefaultCrosshairAttribute() {\n const type = this.spec.crosshairType ?? 'x';\n if (type === 'radius' || type === 'radius-polygon') {\n return { center: { x: 0, y: 0 } };\n }\n return { start: { x: 0, y: 0 }, end: { x: 0, y: 0 } };\n }\n}\n\nexport const registerCrosshair = () => {\n Factory.registerGraphicComponent(\n CrosshairEnum.lineCrosshair,\n (attrs: LineCrosshairAttrs) => new LineCrosshair(attrs) as unknown as IGraphic\n );\n Factory.registerGraphicComponent(\n CrosshairEnum.rectCrosshair,\n (attrs: RectCrosshairAttrs) => new RectCrosshair(attrs) as unknown as IGraphic\n );\n Factory.registerGraphicComponent(\n CrosshairEnum.sectorCrosshair,\n (attrs: SectorCrosshairAttrs) => new SectorCrosshair(attrs) as unknown as IGraphic\n );\n Factory.registerGraphicComponent(\n CrosshairEnum.circleCrosshair,\n (attrs: CircleCrosshairAttrs) => new CircleCrosshair(attrs) as unknown as IGraphic\n );\n Factory.registerGraphicComponent(\n CrosshairEnum.polygonCrosshair,\n (attrs: PolygonCrosshairAttrs) => new PolygonCrosshair(attrs) as unknown as IGraphic\n );\n Factory.registerGraphicComponent(\n CrosshairEnum.ringCrosshair,\n (attrs: SectorCrosshairAttrs) => new SectorCrosshair(attrs) as unknown as IGraphic\n );\n\n Factory.registerComponent(ComponentEnum.crosshair, Crosshair);\n};\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { DataZoomAttributes } from '@visactor/vrender-components';
|
|
2
|
+
import type { ChannelEncodeType, IData, IGroupMark, ITheme, IView, Nil, RecursivePartial, ScaleEncodeType } from '../types';
|
|
3
|
+
import type { DatazoomFilterValue, DatazoomSpec, IDatazoom } from '../types/component';
|
|
4
|
+
import { Component } from '../view/component';
|
|
5
|
+
export declare const generateDatazoomAttributes: (data: any[], theme?: ITheme, addition?: RecursivePartial<DataZoomAttributes>) => DataZoomAttributes;
|
|
6
|
+
export declare class Datazoom extends Component implements IDatazoom {
|
|
7
|
+
static readonly componentType: string;
|
|
8
|
+
protected spec: DatazoomSpec;
|
|
9
|
+
constructor(view: IView, group?: IGroupMark);
|
|
10
|
+
protected parseAddition(spec: DatazoomSpec): this;
|
|
11
|
+
preview(data: IData | string | Nil, x: ScaleEncodeType | Nil, y: ScaleEncodeType | Nil, x1?: ChannelEncodeType | Nil, y1?: ChannelEncodeType | Nil): this;
|
|
12
|
+
target(data: IData | string | Nil, filter: string | ((datum: any, value: DatazoomFilterValue) => boolean) | Nil): this;
|
|
13
|
+
setStartEndValue(start?: number, end?: number): this;
|
|
14
|
+
addGraphicItem(attrs: any, groupKey?: string): any;
|
|
15
|
+
protected _updateComponentEncoders(): void;
|
|
16
|
+
private _invertDatazoomRatio;
|
|
17
|
+
private _getDatazoomMainScale;
|
|
18
|
+
}
|
|
19
|
+
export declare const registerDataZoom: () => void;
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: !0
|
|
5
|
+
}), exports.registerDataZoom = exports.Datazoom = exports.generateDatazoomAttributes = void 0;
|
|
6
|
+
|
|
7
|
+
const vrender_components_1 = require("@visactor/vrender-components"), vutils_1 = require("@visactor/vutils"), graph_1 = require("../graph"), encode_1 = require("../graph/mark/encode"), component_1 = require("../view/component"), mark_1 = require("../parse/mark"), factory_1 = require("../core/factory"), generateDatazoomAttributes = (data, theme, addition) => {
|
|
8
|
+
var _a;
|
|
9
|
+
const datazoomTheme = null === (_a = null == theme ? void 0 : theme.components) || void 0 === _a ? void 0 : _a.datazoom;
|
|
10
|
+
return data ? (0, vutils_1.merge)({}, datazoomTheme, {
|
|
11
|
+
previewData: data
|
|
12
|
+
}, null != addition ? addition : {}) : (0, vutils_1.merge)({}, datazoomTheme, null != addition ? addition : {});
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
exports.generateDatazoomAttributes = generateDatazoomAttributes;
|
|
16
|
+
|
|
17
|
+
class Datazoom extends component_1.Component {
|
|
18
|
+
constructor(view, group) {
|
|
19
|
+
super(view, graph_1.ComponentEnum.datazoom, group), this.spec.componentType = graph_1.ComponentEnum.datazoom;
|
|
20
|
+
}
|
|
21
|
+
parseAddition(spec) {
|
|
22
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
23
|
+
return super.parseAddition(spec), this.preview(null === (_a = spec.preview) || void 0 === _a ? void 0 : _a.data, null === (_b = spec.preview) || void 0 === _b ? void 0 : _b.x, null === (_c = spec.preview) || void 0 === _c ? void 0 : _c.y, null === (_d = spec.preview) || void 0 === _d ? void 0 : _d.x1, null === (_e = spec.preview) || void 0 === _e ? void 0 : _e.y1),
|
|
24
|
+
this.target(null === (_f = spec.target) || void 0 === _f ? void 0 : _f.data, null === (_g = spec.target) || void 0 === _g ? void 0 : _g.filter),
|
|
25
|
+
this._updateComponentEncoders(), this;
|
|
26
|
+
}
|
|
27
|
+
preview(data, x, y, x1, y1) {
|
|
28
|
+
if (!(0, vutils_1.isNil)(this.spec.preview)) {
|
|
29
|
+
const lastData = this.spec.preview.data, lastDataGrammar = (0, vutils_1.isString)(lastData) ? this.view.getDataById(lastData) : lastData;
|
|
30
|
+
this.detach(lastDataGrammar), this.detach((0, mark_1.parseEncodeType)(this.spec.preview.x, this.view)),
|
|
31
|
+
this.detach((0, mark_1.parseEncodeType)(this.spec.preview.y, this.view)), this.detach((0,
|
|
32
|
+
mark_1.parseEncodeType)(this.spec.preview.x1, this.view)), this.detach((0, mark_1.parseEncodeType)(this.spec.preview.y1, this.view));
|
|
33
|
+
}
|
|
34
|
+
if (this.spec.preview = void 0, data) {
|
|
35
|
+
this.spec.preview = {
|
|
36
|
+
data: data,
|
|
37
|
+
x: x,
|
|
38
|
+
y: y,
|
|
39
|
+
x1: x1,
|
|
40
|
+
y1: y1
|
|
41
|
+
};
|
|
42
|
+
const dataGrammar = (0, vutils_1.isString)(data) ? this.view.getDataById(data) : data;
|
|
43
|
+
this.attach(dataGrammar), this.attach((0, mark_1.parseEncodeType)(x, this.view)),
|
|
44
|
+
this.attach((0, mark_1.parseEncodeType)(y, this.view)), this.attach((0, mark_1.parseEncodeType)(x1, this.view)),
|
|
45
|
+
this.attach((0, mark_1.parseEncodeType)(y1, this.view));
|
|
46
|
+
}
|
|
47
|
+
return this._updateComponentEncoders(), this.commit(), this;
|
|
48
|
+
}
|
|
49
|
+
target(data, filter) {
|
|
50
|
+
var _a, _b, _c;
|
|
51
|
+
const lastData = null === (_a = this.spec.target) || void 0 === _a ? void 0 : _a.data, lastDataGrammar = (0,
|
|
52
|
+
vutils_1.isString)(lastData) ? this.view.getDataById(lastData) : lastData, datazoom = null === (_c = null === (_b = this.elements[0]) || void 0 === _b ? void 0 : _b.getGraphicItem) || void 0 === _c ? void 0 : _c.call(_b);
|
|
53
|
+
lastDataGrammar && datazoom && datazoom.setUpdateStateCallback(null), this.spec.target = void 0;
|
|
54
|
+
const dataGrammar = (0, vutils_1.isString)(data) ? this.view.getDataById(data) : data, dataFilter = (0,
|
|
55
|
+
vutils_1.isString)(filter) ? (datum, filterValue) => {
|
|
56
|
+
if ((0, vutils_1.isNil)(filterValue.start) || (0, vutils_1.isNil)(filterValue.end)) return !0;
|
|
57
|
+
const scale = this._getDatazoomMainScale(), range = scale.range(), datumRatio = (scale.scale(datum[filter]) - range[0]) / (range[range.length - 1] - range[0]);
|
|
58
|
+
return filterValue.startRatio <= datumRatio && filterValue.endRatio >= datumRatio;
|
|
59
|
+
} : filter;
|
|
60
|
+
return this._filterData(lastDataGrammar, dataGrammar, graph_1.ComponentDataRank.datazoom, (event => {
|
|
61
|
+
const startRatio = event.start, endRatio = event.end;
|
|
62
|
+
return {
|
|
63
|
+
startRatio: startRatio,
|
|
64
|
+
endRatio: endRatio,
|
|
65
|
+
start: this._invertDatazoomRatio(startRatio),
|
|
66
|
+
end: this._invertDatazoomRatio(endRatio)
|
|
67
|
+
};
|
|
68
|
+
}), dataFilter), dataGrammar && datazoom && (datazoom.setUpdateStateCallback(((start, end) => {
|
|
69
|
+
this._filterCallback({
|
|
70
|
+
start: start,
|
|
71
|
+
end: end
|
|
72
|
+
}, this.elements[0]);
|
|
73
|
+
})), this.spec.target = {
|
|
74
|
+
data: dataGrammar,
|
|
75
|
+
filter: filter
|
|
76
|
+
}), this;
|
|
77
|
+
}
|
|
78
|
+
setStartEndValue(start, end) {
|
|
79
|
+
var _a, _b, _c;
|
|
80
|
+
const datazoom = null === (_b = null === (_a = this.elements[0]) || void 0 === _a ? void 0 : _a.getGraphicItem) || void 0 === _b ? void 0 : _b.call(_a);
|
|
81
|
+
return null === (_c = null == datazoom ? void 0 : datazoom.setStartAndEnd) || void 0 === _c || _c.call(datazoom, start, end),
|
|
82
|
+
this;
|
|
83
|
+
}
|
|
84
|
+
addGraphicItem(attrs, groupKey) {
|
|
85
|
+
var _a;
|
|
86
|
+
const theme = this.view.getCurrentTheme(), initialAttributes = Object.assign({}, null === (_a = null == theme ? void 0 : theme.components) || void 0 === _a ? void 0 : _a.datazoom, attrs), graphicItem = factory_1.Factory.createGraphicComponent(this.componentType, initialAttributes), datazoom = graphicItem;
|
|
87
|
+
return this._filterCallback && datazoom.setUpdateStateCallback(((start, end) => {
|
|
88
|
+
this._filterCallback({
|
|
89
|
+
start: start,
|
|
90
|
+
end: end
|
|
91
|
+
}, this.elements[0]);
|
|
92
|
+
})), datazoom.setStatePointToData((state => {
|
|
93
|
+
var _a;
|
|
94
|
+
return this.spec.preview && null !== (_a = this._invertDatazoomRatio(state)) && void 0 !== _a ? _a : state;
|
|
95
|
+
})), datazoom.setPreviewCallbackX((datum => {
|
|
96
|
+
var _a, _b;
|
|
97
|
+
if ((null === (_a = this.spec.preview) || void 0 === _a ? void 0 : _a.x) && (null === (_b = this.spec.preview) || void 0 === _b ? void 0 : _b.data)) return (0,
|
|
98
|
+
encode_1.invokeEncoder)({
|
|
99
|
+
x: this.spec.preview.x
|
|
100
|
+
}, datum, this.elements[0], this.parameters()).x;
|
|
101
|
+
})), datazoom.setPreviewCallbackY((datum => {
|
|
102
|
+
var _a, _b;
|
|
103
|
+
if ((null === (_a = this.spec.preview) || void 0 === _a ? void 0 : _a.y) && (null === (_b = this.spec.preview) || void 0 === _b ? void 0 : _b.data)) return (0,
|
|
104
|
+
encode_1.invokeEncoder)({
|
|
105
|
+
y: this.spec.preview.y
|
|
106
|
+
}, datum, this.elements[0], this.parameters()).y;
|
|
107
|
+
})), datazoom.setPreviewCallbackX1((datum => {
|
|
108
|
+
var _a, _b;
|
|
109
|
+
if ((null === (_a = this.spec.preview) || void 0 === _a ? void 0 : _a.x1) && (null === (_b = this.spec.preview) || void 0 === _b ? void 0 : _b.data)) return (0,
|
|
110
|
+
encode_1.invokeEncoder)({
|
|
111
|
+
x1: this.spec.preview.x1
|
|
112
|
+
}, datum, this.elements[0], this.parameters()).x1;
|
|
113
|
+
})), datazoom.setPreviewCallbackY1((datum => {
|
|
114
|
+
var _a, _b;
|
|
115
|
+
if ((null === (_a = this.spec.preview) || void 0 === _a ? void 0 : _a.y1) && (null === (_b = this.spec.preview) || void 0 === _b ? void 0 : _b.data)) return (0,
|
|
116
|
+
encode_1.invokeEncoder)({
|
|
117
|
+
y1: this.spec.preview.y1
|
|
118
|
+
}, datum, this.elements[0], this.parameters()).y1;
|
|
119
|
+
})), super.addGraphicItem(initialAttributes, groupKey, graphicItem);
|
|
120
|
+
}
|
|
121
|
+
_updateComponentEncoders() {
|
|
122
|
+
var _a;
|
|
123
|
+
const data = null === (_a = this.spec.preview) || void 0 === _a ? void 0 : _a.data, dataGrammar = (0,
|
|
124
|
+
vutils_1.isString)(data) ? this.view.getDataById(data) : data, encoders = Object.assign({
|
|
125
|
+
update: {}
|
|
126
|
+
}, this.spec.encode), componentEncoders = Object.keys(encoders).reduce(((res, state) => {
|
|
127
|
+
const encoder = encoders[state];
|
|
128
|
+
return encoder && (res[state] = {
|
|
129
|
+
callback: (datum, element, parameters) => {
|
|
130
|
+
var _a;
|
|
131
|
+
const theme = this.view.getCurrentTheme(), addition = (0, encode_1.invokeEncoder)(encoder, datum, element, parameters);
|
|
132
|
+
return (0, exports.generateDatazoomAttributes)(null === (_a = null == dataGrammar ? void 0 : dataGrammar.getValue) || void 0 === _a ? void 0 : _a.call(dataGrammar), theme, addition);
|
|
133
|
+
}
|
|
134
|
+
}), res;
|
|
135
|
+
}), {});
|
|
136
|
+
this._encoders = componentEncoders;
|
|
137
|
+
}
|
|
138
|
+
_invertDatazoomRatio(ratio) {
|
|
139
|
+
const scale = this._getDatazoomMainScale();
|
|
140
|
+
if (scale) {
|
|
141
|
+
const range = scale.range(), scaledValue = (range[range.length - 1] - range[0]) * ratio + range[0];
|
|
142
|
+
return scale.invert(scaledValue);
|
|
143
|
+
}
|
|
144
|
+
return null;
|
|
145
|
+
}
|
|
146
|
+
_getDatazoomMainScale() {
|
|
147
|
+
var _a, _b, _c, _d;
|
|
148
|
+
const datazoom = null === (_b = null === (_a = this.elements[0]) || void 0 === _a ? void 0 : _a.getGraphicItem) || void 0 === _b ? void 0 : _b.call(_a);
|
|
149
|
+
if (datazoom && this.spec.preview) {
|
|
150
|
+
const scale = "top" === datazoom.attribute.orient || "bottom" === datazoom.attribute.orient ? null === (_c = this.spec.preview.x) || void 0 === _c ? void 0 : _c.scale : null === (_d = this.spec.preview.y) || void 0 === _d ? void 0 : _d.scale, scaleGrammar = (0,
|
|
151
|
+
vutils_1.isString)(scale) ? this.view.getScaleById(scale) : scale;
|
|
152
|
+
return null == scaleGrammar ? void 0 : scaleGrammar.getScale();
|
|
153
|
+
}
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
exports.Datazoom = Datazoom, Datazoom.componentType = graph_1.ComponentEnum.datazoom;
|
|
159
|
+
|
|
160
|
+
const registerDataZoom = () => {
|
|
161
|
+
factory_1.Factory.registerGraphicComponent(graph_1.ComponentEnum.datazoom, (attrs => new vrender_components_1.DataZoom(attrs))),
|
|
162
|
+
factory_1.Factory.registerComponent(graph_1.ComponentEnum.datazoom, Datazoom);
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
exports.registerDataZoom = registerDataZoom;
|
|
166
|
+
//# sourceMappingURL=datazoom.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/component/datazoom.ts"],"names":[],"mappings":"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","file":"datazoom.js","sourcesContent":["import type { IGraphic } from '@visactor/vrender';\nimport type { DataZoomAttributes } from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport { DataZoom as DatazoomComponent } from '@visactor/vrender-components';\nimport { isNil, isString, merge } from '@visactor/vutils';\nimport { ComponentDataRank, ComponentEnum } from '../graph';\nimport type {\n BaseSignleEncodeSpec,\n ChannelEncodeType,\n IData,\n IElement,\n IGroupMark,\n ITheme,\n IView,\n Nil,\n RecursivePartial,\n ScaleEncodeType,\n StateEncodeSpec\n} from '../types';\nimport type { DatazoomFilterValue, DatazoomSpec, IDatazoom } from '../types/component';\nimport { invokeEncoder } from '../graph/mark/encode';\nimport { Component } from '../view/component';\nimport { parseEncodeType } from '../parse/mark';\nimport { Factory } from '../core/factory';\n\nexport const generateDatazoomAttributes = (\n data: any[],\n theme?: ITheme,\n addition?: RecursivePartial<DataZoomAttributes>\n): DataZoomAttributes => {\n const datazoomTheme = theme?.components?.datazoom;\n if (!data) {\n return merge({}, datazoomTheme, addition ?? {});\n }\n\n return merge({}, datazoomTheme, { previewData: data }, addition ?? {});\n};\n\nexport class Datazoom extends Component implements IDatazoom {\n static readonly componentType: string = ComponentEnum.datazoom;\n protected declare spec: DatazoomSpec;\n\n constructor(view: IView, group?: IGroupMark) {\n super(view, ComponentEnum.datazoom, group);\n this.spec.componentType = ComponentEnum.datazoom;\n }\n\n protected parseAddition(spec: DatazoomSpec) {\n super.parseAddition(spec);\n this.preview(spec.preview?.data, spec.preview?.x, spec.preview?.y, spec.preview?.x1, spec.preview?.y1);\n this.target(spec.target?.data, spec.target?.filter);\n this._updateComponentEncoders();\n return this;\n }\n\n preview(\n data: IData | string | Nil,\n x: ScaleEncodeType | Nil,\n y: ScaleEncodeType | Nil,\n x1?: ChannelEncodeType | Nil,\n y1?: ChannelEncodeType | Nil\n ) {\n if (!isNil(this.spec.preview)) {\n const lastData = this.spec.preview.data;\n const lastDataGrammar = isString(lastData) ? this.view.getDataById(lastData) : lastData;\n this.detach(lastDataGrammar);\n this.detach(parseEncodeType(this.spec.preview.x, this.view));\n this.detach(parseEncodeType(this.spec.preview.y, this.view));\n this.detach(parseEncodeType(this.spec.preview.x1, this.view));\n this.detach(parseEncodeType(this.spec.preview.y1, this.view));\n }\n this.spec.preview = undefined;\n if (data) {\n this.spec.preview = { data, x, y, x1, y1 };\n const dataGrammar = isString(data) ? this.view.getDataById(data) : data;\n this.attach(dataGrammar);\n this.attach(parseEncodeType(x, this.view));\n this.attach(parseEncodeType(y, this.view));\n this.attach(parseEncodeType(x1, this.view));\n this.attach(parseEncodeType(y1, this.view));\n }\n this._updateComponentEncoders();\n this.commit();\n return this;\n }\n\n target(data: IData | string | Nil, filter: string | ((datum: any, value: DatazoomFilterValue) => boolean) | Nil) {\n const lastData = this.spec.target?.data;\n const lastDataGrammar = isString(lastData) ? this.view.getDataById(lastData) : lastData;\n // FIXME: datazoom should emit change event\n const datazoom = this.elements[0]?.getGraphicItem?.() as unknown as DatazoomComponent;\n if (lastDataGrammar && datazoom) {\n datazoom.setUpdateStateCallback(null);\n }\n this.spec.target = undefined;\n const dataGrammar = isString(data) ? this.view.getDataById(data) : data;\n const getFilterValue = (event: any): DatazoomFilterValue => {\n const startRatio = event.start;\n const endRatio = event.end;\n return {\n startRatio,\n endRatio,\n start: this._invertDatazoomRatio(startRatio),\n end: this._invertDatazoomRatio(endRatio)\n };\n };\n const dataFilter = isString(filter)\n ? (datum: any, filterValue: DatazoomFilterValue) => {\n if (isNil(filterValue.start) || isNil(filterValue.end)) {\n return true;\n }\n const scale = this._getDatazoomMainScale();\n const range = scale.range();\n const datumRatio = (scale.scale(datum[filter]) - range[0]) / (range[range.length - 1] - range[0]);\n return filterValue.startRatio <= datumRatio && filterValue.endRatio >= datumRatio;\n }\n : filter;\n this._filterData(lastDataGrammar, dataGrammar, ComponentDataRank.datazoom, getFilterValue, dataFilter);\n if (dataGrammar && datazoom) {\n datazoom.setUpdateStateCallback((start: number, end: number) => {\n this._filterCallback({ start, end }, this.elements[0]);\n });\n this.spec.target = { data: dataGrammar, filter };\n }\n return this;\n }\n\n setStartEndValue(start?: number, end?: number) {\n const datazoom = this.elements[0]?.getGraphicItem?.() as unknown as DatazoomComponent;\n datazoom?.setStartAndEnd?.(start, end);\n return this;\n }\n\n addGraphicItem(attrs: any, groupKey?: string) {\n const theme = this.view.getCurrentTheme();\n const initialAttributes = Object.assign({}, theme?.components?.datazoom, attrs);\n const graphicItem = Factory.createGraphicComponent(this.componentType, initialAttributes);\n const datazoom = graphicItem as unknown as DatazoomComponent;\n // FIXME: remove this logic when datazoom provides update event.\n if (this._filterCallback) {\n datazoom.setUpdateStateCallback((start: number, end: number) => {\n this._filterCallback({ start, end }, this.elements[0]);\n });\n }\n datazoom.setStatePointToData(state => {\n if (this.spec.preview) {\n return this._invertDatazoomRatio(state) ?? state;\n }\n return state;\n });\n\n datazoom.setPreviewCallbackX((datum: any) => {\n if (this.spec.preview?.x && this.spec.preview?.data) {\n return invokeEncoder({ x: this.spec.preview.x }, datum, this.elements[0], this.parameters()).x;\n }\n\n return undefined;\n });\n datazoom.setPreviewCallbackY((datum: any) => {\n if (this.spec.preview?.y && this.spec.preview?.data) {\n return invokeEncoder({ y: this.spec.preview.y }, datum, this.elements[0], this.parameters()).y;\n }\n\n return undefined;\n });\n\n datazoom.setPreviewCallbackX1((datum: any) => {\n if (this.spec.preview?.x1 && this.spec.preview?.data) {\n return invokeEncoder({ x1: this.spec.preview.x1 }, datum, this.elements[0], this.parameters()).x1;\n }\n\n return undefined;\n });\n datazoom.setPreviewCallbackY1((datum: any) => {\n if (this.spec.preview?.y1 && this.spec.preview?.data) {\n return invokeEncoder({ y1: this.spec.preview.y1 }, datum, this.elements[0], this.parameters()).y1;\n }\n\n return undefined;\n });\n return super.addGraphicItem(initialAttributes, groupKey, graphicItem);\n }\n\n protected _updateComponentEncoders() {\n const data = this.spec.preview?.data;\n const dataGrammar = isString(data) ? this.view.getDataById(data) : data;\n const encoders = Object.assign({ update: {} }, this.spec.encode);\n const componentEncoders: StateEncodeSpec = Object.keys(encoders).reduce((res, state) => {\n const encoder = encoders[state];\n if (encoder) {\n res[state] = {\n callback: (datum: any, element: IElement, parameters: any) => {\n const theme = this.view.getCurrentTheme();\n const addition = invokeEncoder(encoder as BaseSignleEncodeSpec, datum, element, parameters);\n return generateDatazoomAttributes(dataGrammar?.getValue?.(), theme, addition);\n }\n };\n }\n return res;\n }, {});\n this._encoders = componentEncoders;\n }\n\n private _invertDatazoomRatio(ratio: number): any {\n const scale = this._getDatazoomMainScale();\n if (scale) {\n const range = scale.range();\n const scaledValue = (range[range.length - 1] - range[0]) * ratio + range[0];\n return scale.invert(scaledValue);\n }\n return null;\n }\n\n private _getDatazoomMainScale() {\n const datazoom = this.elements[0]?.getGraphicItem?.() as unknown as DatazoomComponent;\n if (datazoom && this.spec.preview) {\n const isHorizontal = datazoom.attribute.orient === 'top' || datazoom.attribute.orient === 'bottom';\n const scale = isHorizontal ? this.spec.preview.x?.scale : this.spec.preview.y?.scale;\n const scaleGrammar = isString(scale) ? this.view.getScaleById(scale) : scale;\n return scaleGrammar?.getScale();\n }\n return null;\n }\n}\n\nexport const registerDataZoom = () => {\n Factory.registerGraphicComponent(\n ComponentEnum.datazoom,\n (attrs: DataZoomAttributes) => new DatazoomComponent(attrs) as unknown as IGraphic\n );\n\n Factory.registerComponent(ComponentEnum.datazoom, Datazoom);\n};\n"]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { CircleAxisGridAttributes, LineAxisGridAttributes } from '@visactor/vrender-components';
|
|
2
|
+
import type { IBaseScale } from '@visactor/vscale';
|
|
3
|
+
import type { IGroupMark, IScale, ITheme, IView, MarkFunctionType, Nil, RecursivePartial } from '../types';
|
|
4
|
+
import type { GridShape, GridSpec, AxisType, IAxis, IGrid } from '../types/component';
|
|
5
|
+
import { ScaleComponent } from './scale';
|
|
6
|
+
export declare const generateLineAxisGridAttributes: (scale: IBaseScale, theme?: ITheme, addition?: RecursivePartial<LineAxisGridAttributes>, tickCount?: number) => LineAxisGridAttributes;
|
|
7
|
+
export declare const generateCircleAxisGridAttributes: (scale: IBaseScale, theme?: ITheme, addition?: RecursivePartial<CircleAxisGridAttributes>, tickCount?: number) => CircleAxisGridAttributes;
|
|
8
|
+
export declare class Grid extends ScaleComponent implements IGrid {
|
|
9
|
+
static readonly componentType: string;
|
|
10
|
+
protected spec: GridSpec;
|
|
11
|
+
protected mode?: '2d' | '3d';
|
|
12
|
+
private _gridComponentType;
|
|
13
|
+
private _targetAxis;
|
|
14
|
+
constructor(view: IView, group?: IGroupMark, mode?: '2d' | '3d');
|
|
15
|
+
protected parseAddition(spec: GridSpec): this;
|
|
16
|
+
scale(scale?: IScale | string | Nil): this;
|
|
17
|
+
gridType(gridType: AxisType | Nil): this;
|
|
18
|
+
gridShape(gridShape: GridShape | Nil): this;
|
|
19
|
+
target(axis: IAxis | string | Nil): this;
|
|
20
|
+
tickCount(tickCount: MarkFunctionType<number> | Nil): this;
|
|
21
|
+
inside(inside: MarkFunctionType<boolean> | Nil): this;
|
|
22
|
+
baseValue(baseValue: MarkFunctionType<number> | Nil): this;
|
|
23
|
+
addGraphicItem(attrs: any, groupKey?: string): any;
|
|
24
|
+
protected _updateComponentEncoders(): void;
|
|
25
|
+
private _getGridComponentType;
|
|
26
|
+
}
|
|
27
|
+
export declare const registerGrid: () => void;
|