@visactor/vgrammar-core 0.13.6 → 0.13.7-alpha.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/cjs/component/axis.d.ts +2 -0
- package/cjs/component/axis.js +15 -1
- package/cjs/component/axis.js.map +1 -1
- package/cjs/component/grid.d.ts +2 -0
- package/cjs/component/grid.js +15 -1
- package/cjs/component/grid.js.map +1 -1
- package/cjs/component/index.d.ts +2 -2
- package/cjs/component/index.js +21 -1
- package/cjs/component/index.js.map +1 -1
- package/cjs/component/label.js +36 -20
- package/cjs/component/label.js.map +1 -1
- package/cjs/component/player.js.map +1 -1
- package/cjs/core/factory.d.ts +8 -1
- package/cjs/core/factory.js +9 -2
- package/cjs/core/factory.js.map +1 -1
- package/cjs/glyph/boxplot.js +5 -5
- package/cjs/glyph/boxplot.js.map +1 -1
- package/cjs/glyph/link-path.js +2 -2
- package/cjs/glyph/link-path.js.map +1 -1
- package/cjs/glyph/ripple.js +3 -2
- package/cjs/glyph/ripple.js.map +1 -1
- package/cjs/glyph/tree-path.js +2 -2
- package/cjs/glyph/tree-path.js.map +1 -1
- package/cjs/glyph/violin.js +4 -4
- package/cjs/glyph/violin.js.map +1 -1
- package/cjs/glyph/wave.js +3 -2
- package/cjs/glyph/wave.js.map +1 -1
- package/cjs/graph/animation/animate.js +9 -4
- package/cjs/graph/animation/animate.js.map +1 -1
- package/cjs/graph/animation/animation/fade.js +5 -5
- package/cjs/graph/animation/animation/fade.js.map +1 -1
- package/cjs/graph/animation/animation/grow-cartesian.js +14 -14
- package/cjs/graph/animation/animation/grow-cartesian.js.map +1 -1
- package/cjs/graph/animation/animation/grow-interval.js +9 -9
- package/cjs/graph/animation/animation/grow-interval.js.map +1 -1
- package/cjs/graph/animation/animation/grow-points.js +9 -9
- package/cjs/graph/animation/animation/grow-points.js.map +1 -1
- package/cjs/graph/animation/animation/grow-polar.js +24 -24
- package/cjs/graph/animation/animation/grow-polar.js.map +1 -1
- package/cjs/graph/animation/animation/move.js +6 -6
- package/cjs/graph/animation/animation/move.js.map +1 -1
- package/cjs/graph/animation/animation/rotate.js +5 -5
- package/cjs/graph/animation/animation/rotate.js.map +1 -1
- package/cjs/graph/animation/animation/scale.js +5 -5
- package/cjs/graph/animation/animation/scale.js.map +1 -1
- package/cjs/graph/animation/animation/update.js +2 -2
- package/cjs/graph/animation/animation/update.js.map +1 -1
- package/cjs/graph/animation/animator.d.ts +1 -1
- package/cjs/graph/animation/animator.js +6 -1
- package/cjs/graph/animation/animator.js.map +1 -1
- package/cjs/graph/animation/morph.d.ts +2 -12
- package/cjs/graph/animation/morph.js +76 -163
- package/cjs/graph/animation/morph.js.map +1 -1
- package/cjs/graph/attributes/line.d.ts +1 -0
- package/cjs/graph/attributes/line.js +17 -5
- package/cjs/graph/attributes/line.js.map +1 -1
- package/cjs/graph/attributes/transform.js +7 -3
- package/cjs/graph/attributes/transform.js.map +1 -1
- package/cjs/graph/canvas-renderer.d.ts +1 -1
- package/cjs/graph/canvas-renderer.js +10 -5
- package/cjs/graph/canvas-renderer.js.map +1 -1
- package/cjs/graph/constants.d.ts +1 -0
- package/cjs/graph/constants.js +2 -2
- package/cjs/graph/constants.js.map +1 -1
- package/cjs/graph/element.d.ts +3 -0
- package/cjs/graph/element.js +40 -19
- package/cjs/graph/element.js.map +1 -1
- package/cjs/graph/glyph-element.js +11 -9
- package/cjs/graph/glyph-element.js.map +1 -1
- package/cjs/graph/layout/layout.d.ts +1 -0
- package/cjs/graph/layout/layout.js +8 -2
- package/cjs/graph/layout/layout.js.map +1 -1
- package/cjs/graph/mark/graphic.js +14 -8
- package/cjs/graph/mark/graphic.js.map +1 -1
- package/cjs/graph/util/events-extend.d.ts +1 -2
- package/cjs/graph/util/events-extend.js +14 -3
- package/cjs/graph/util/events-extend.js.map +1 -1
- package/cjs/graph/util/point.js +10 -26
- package/cjs/graph/util/point.js.map +1 -1
- package/cjs/graph/view-diff.d.ts +8 -0
- package/cjs/graph/view-diff.js +93 -0
- package/cjs/graph/view-diff.js.map +1 -0
- package/cjs/index.d.ts +8 -1
- package/cjs/index.js +66 -2
- package/cjs/index.js.map +1 -1
- package/cjs/interactions/base.js.map +1 -1
- package/cjs/interactions/brush-base.js +1 -2
- package/cjs/interactions/brush-filter.js +2 -1
- package/cjs/interactions/element-active-by-legend.d.ts +2 -1
- package/cjs/interactions/element-active-by-legend.js +5 -2
- package/cjs/interactions/element-active-by-legend.js.map +1 -1
- package/cjs/interactions/element-active.d.ts +3 -2
- package/cjs/interactions/element-active.js +4 -2
- package/cjs/interactions/element-active.js.map +1 -1
- package/cjs/interactions/element-highlight-by-graphic-name.d.ts +14 -0
- package/cjs/interactions/element-highlight-by-graphic-name.js +55 -0
- package/cjs/interactions/element-highlight-by-graphic-name.js.map +1 -0
- package/cjs/interactions/element-highlight-by-group.d.ts +2 -2
- package/cjs/interactions/element-highlight-by-group.js +4 -3
- package/cjs/interactions/element-highlight-by-group.js.map +1 -1
- package/cjs/interactions/element-highlight-by-key.d.ts +2 -2
- package/cjs/interactions/element-highlight-by-key.js +3 -17
- package/cjs/interactions/element-highlight-by-key.js.map +1 -1
- package/cjs/interactions/element-highlight-by-legend.d.ts +2 -1
- package/cjs/interactions/element-highlight-by-legend.js +6 -3
- package/cjs/interactions/element-highlight-by-legend.js.map +1 -1
- package/cjs/interactions/element-highlight-by-name.d.ts +2 -1
- package/cjs/interactions/element-highlight-by-name.js +5 -2
- package/cjs/interactions/element-highlight-by-name.js.map +1 -1
- package/cjs/interactions/element-highlight.d.ts +1 -1
- package/cjs/interactions/element-highlight.js +9 -6
- package/cjs/interactions/element-highlight.js.map +1 -1
- package/cjs/interactions/element-select-by-graphic-name.d.ts +7 -0
- package/cjs/interactions/element-select-by-graphic-name.js +26 -0
- package/cjs/interactions/element-select-by-graphic-name.js.map +1 -0
- package/cjs/interactions/element-select.d.ts +1 -1
- package/cjs/interactions/element-select.js +9 -10
- package/cjs/interactions/element-select.js.map +1 -1
- package/cjs/interactions/index.d.ts +2 -0
- package/cjs/interactions/index.js +17 -3
- package/cjs/interactions/index.js.map +1 -1
- package/cjs/interactions/slider-filter.js +1 -1
- package/cjs/interactions/toggle-state-mixin.js +9 -7
- package/cjs/interactions/toggle-state-mixin.js.map +1 -1
- package/cjs/interactions/tooltip.js +1 -1
- package/cjs/parse/event.d.ts +0 -2
- package/cjs/parse/event.js +4 -10
- package/cjs/parse/event.js.map +1 -1
- package/cjs/parse/util.js.map +1 -1
- package/cjs/semantic-marks/text.js.map +1 -1
- package/cjs/transforms/data/pie.js +2 -2
- package/cjs/transforms/data/pie.js.map +1 -1
- package/cjs/transforms/mark/mark-overlap.js +6 -6
- package/cjs/transforms/mark/mark-overlap.js.map +1 -1
- package/cjs/transforms/util/util.d.ts +0 -2
- package/cjs/transforms/util/util.js +3 -13
- package/cjs/transforms/util/util.js.map +1 -1
- package/cjs/types/animate.d.ts +3 -1
- package/cjs/types/animate.js.map +1 -1
- package/cjs/types/element.d.ts +5 -1
- package/cjs/types/element.js.map +1 -1
- package/cjs/types/grammar.d.ts +1 -0
- package/cjs/types/grammar.js.map +1 -1
- package/cjs/types/interaction.d.ts +4 -1
- package/cjs/types/interaction.js.map +1 -1
- package/cjs/types/mark.d.ts +2 -0
- package/cjs/types/mark.js.map +1 -1
- package/cjs/types/morph.d.ts +1 -2
- package/cjs/types/morph.js.map +1 -1
- package/cjs/types/renderer.d.ts +6 -1
- package/cjs/types/renderer.js.map +1 -1
- package/cjs/types/transform.d.ts +1 -0
- package/cjs/types/transform.js.map +1 -1
- package/cjs/types/view.d.ts +4 -1
- package/cjs/types/view.js.map +1 -1
- package/cjs/view/View.d.ts +3 -6
- package/cjs/view/View.js +73 -125
- package/cjs/view/View.js.map +1 -1
- package/cjs/view/animate.js +2 -1
- package/cjs/view/animate.js.map +1 -1
- package/cjs/view/constants.d.ts +2 -0
- package/cjs/view/constants.js +3 -2
- package/cjs/view/constants.js.map +1 -1
- package/cjs/view/events.d.ts +0 -1
- package/cjs/view/events.js +3 -17
- package/cjs/view/events.js.map +1 -1
- package/cjs/view/glyph.d.ts +4 -0
- package/cjs/view/glyph.js +12 -3
- package/cjs/view/glyph.js.map +1 -1
- package/cjs/view/grammar-record.js +2 -3
- package/cjs/view/grammar-record.js.map +1 -1
- package/cjs/view/group.js +9 -6
- package/cjs/view/group.js.map +1 -1
- package/cjs/view/mark-animate-mixin.d.ts +1 -0
- package/cjs/view/mark-animate-mixin.js +29 -0
- package/cjs/view/mark-animate-mixin.js.map +1 -0
- package/cjs/view/mark.d.ts +4 -1
- package/cjs/view/mark.js +104 -68
- package/cjs/view/mark.js.map +1 -1
- package/cjs/view/view-animate-mixin.d.ts +1 -0
- package/cjs/view/view-animate-mixin.js +26 -0
- package/cjs/view/view-animate-mixin.js.map +1 -0
- package/cjs/view/view-event-mixin.d.ts +1 -0
- package/cjs/view/view-event-mixin.js +92 -0
- package/cjs/view/view-event-mixin.js.map +1 -0
- package/cjs/view/view-morph-mixin.d.ts +1 -0
- package/cjs/view/view-morph-mixin.js +32 -0
- package/cjs/view/view-morph-mixin.js.map +1 -0
- package/es/component/axis.d.ts +2 -0
- package/es/component/axis.js +10 -0
- package/es/component/axis.js.map +1 -1
- package/es/component/grid.d.ts +2 -0
- package/es/component/grid.js +10 -0
- package/es/component/grid.js.map +1 -1
- package/es/component/index.d.ts +2 -2
- package/es/component/index.js +2 -2
- package/es/component/index.js.map +1 -1
- package/es/component/label.js +35 -19
- package/es/component/label.js.map +1 -1
- package/es/component/player.js.map +1 -1
- package/es/core/factory.d.ts +8 -1
- package/es/core/factory.js +10 -2
- package/es/core/factory.js.map +1 -1
- package/es/glyph/boxplot.js +4 -2
- package/es/glyph/boxplot.js.map +1 -1
- package/es/glyph/link-path.js +4 -2
- package/es/glyph/link-path.js.map +1 -1
- package/es/glyph/ripple.js +3 -1
- package/es/glyph/ripple.js.map +1 -1
- package/es/glyph/tree-path.js +4 -2
- package/es/glyph/tree-path.js.map +1 -1
- package/es/glyph/violin.js +4 -2
- package/es/glyph/violin.js.map +1 -1
- package/es/glyph/wave.js +3 -1
- package/es/glyph/wave.js.map +1 -1
- package/es/graph/animation/animate.js +9 -4
- package/es/graph/animation/animate.js.map +1 -1
- package/es/graph/animation/animation/fade.js +5 -5
- package/es/graph/animation/animation/fade.js.map +1 -1
- package/es/graph/animation/animation/grow-cartesian.js +14 -14
- package/es/graph/animation/animation/grow-cartesian.js.map +1 -1
- package/es/graph/animation/animation/grow-interval.js +9 -9
- package/es/graph/animation/animation/grow-interval.js.map +1 -1
- package/es/graph/animation/animation/grow-points.js +9 -9
- package/es/graph/animation/animation/grow-points.js.map +1 -1
- package/es/graph/animation/animation/grow-polar.js +24 -24
- package/es/graph/animation/animation/grow-polar.js.map +1 -1
- package/es/graph/animation/animation/move.js +6 -6
- package/es/graph/animation/animation/move.js.map +1 -1
- package/es/graph/animation/animation/rotate.js +4 -4
- package/es/graph/animation/animation/rotate.js.map +1 -1
- package/es/graph/animation/animation/scale.js +5 -5
- package/es/graph/animation/animation/scale.js.map +1 -1
- package/es/graph/animation/animation/update.js +1 -3
- package/es/graph/animation/animation/update.js.map +1 -1
- package/es/graph/animation/animator.d.ts +1 -1
- package/es/graph/animation/animator.js +6 -1
- package/es/graph/animation/animator.js.map +1 -1
- package/es/graph/animation/morph.d.ts +2 -12
- package/es/graph/animation/morph.js +72 -159
- package/es/graph/animation/morph.js.map +1 -1
- package/es/graph/attributes/line.d.ts +1 -0
- package/es/graph/attributes/line.js +14 -3
- package/es/graph/attributes/line.js.map +1 -1
- package/es/graph/attributes/transform.js +7 -3
- package/es/graph/attributes/transform.js.map +1 -1
- package/es/graph/canvas-renderer.d.ts +1 -1
- package/es/graph/canvas-renderer.js +11 -6
- package/es/graph/canvas-renderer.js.map +1 -1
- package/es/graph/constants.d.ts +1 -0
- package/es/graph/constants.js +2 -0
- package/es/graph/constants.js.map +1 -1
- package/es/graph/element.d.ts +3 -0
- package/es/graph/element.js +39 -21
- package/es/graph/element.js.map +1 -1
- package/es/graph/glyph-element.js +10 -11
- package/es/graph/glyph-element.js.map +1 -1
- package/es/graph/layout/layout.d.ts +1 -0
- package/es/graph/layout/layout.js +6 -0
- package/es/graph/layout/layout.js.map +1 -1
- package/es/graph/mark/graphic.js +13 -7
- package/es/graph/mark/graphic.js.map +1 -1
- package/es/graph/util/events-extend.d.ts +1 -2
- package/es/graph/util/events-extend.js +16 -3
- package/es/graph/util/events-extend.js.map +1 -1
- package/es/graph/util/point.js +10 -26
- package/es/graph/util/point.js.map +1 -1
- package/es/graph/view-diff.d.ts +8 -0
- package/es/graph/view-diff.js +89 -0
- package/es/graph/view-diff.js.map +1 -0
- package/es/index.d.ts +8 -1
- package/es/index.js +29 -1
- package/es/index.js.map +1 -1
- package/es/interactions/base.js.map +1 -1
- package/es/interactions/brush-filter.js +2 -1
- package/es/interactions/element-active-by-legend.d.ts +2 -1
- package/es/interactions/element-active-by-legend.js +5 -2
- package/es/interactions/element-active-by-legend.js.map +1 -1
- package/es/interactions/element-active.d.ts +3 -2
- package/es/interactions/element-active.js +5 -4
- package/es/interactions/element-active.js.map +1 -1
- package/es/interactions/element-highlight-by-graphic-name.d.ts +14 -0
- package/es/interactions/element-highlight-by-graphic-name.js +51 -0
- package/es/interactions/element-highlight-by-graphic-name.js.map +1 -0
- package/es/interactions/element-highlight-by-group.d.ts +2 -2
- package/es/interactions/element-highlight-by-group.js +4 -3
- package/es/interactions/element-highlight-by-group.js.map +1 -1
- package/es/interactions/element-highlight-by-key.d.ts +2 -2
- package/es/interactions/element-highlight-by-key.js +3 -17
- package/es/interactions/element-highlight-by-key.js.map +1 -1
- package/es/interactions/element-highlight-by-legend.d.ts +2 -1
- package/es/interactions/element-highlight-by-legend.js +6 -3
- package/es/interactions/element-highlight-by-legend.js.map +1 -1
- package/es/interactions/element-highlight-by-name.d.ts +2 -1
- package/es/interactions/element-highlight-by-name.js +5 -2
- package/es/interactions/element-highlight-by-name.js.map +1 -1
- package/es/interactions/element-highlight.d.ts +1 -1
- package/es/interactions/element-highlight.js +9 -6
- package/es/interactions/element-highlight.js.map +1 -1
- package/es/interactions/element-select-by-graphic-name.d.ts +7 -0
- package/es/interactions/element-select-by-graphic-name.js +20 -0
- package/es/interactions/element-select-by-graphic-name.js.map +1 -0
- package/es/interactions/element-select.d.ts +1 -1
- package/es/interactions/element-select.js +9 -9
- package/es/interactions/element-select.js.map +1 -1
- package/es/interactions/filter.js +1 -1
- package/es/interactions/fish-eye.js +1 -1
- package/es/interactions/index.d.ts +2 -0
- package/es/interactions/index.js +14 -1
- package/es/interactions/index.js.map +1 -1
- package/es/interactions/legend-filter.js +1 -1
- package/es/interactions/player-filter.js +1 -1
- package/es/interactions/roll-up.js +1 -1
- package/es/interactions/scrollbar-filter.js +1 -1
- package/es/interactions/slider-filter.js +1 -1
- package/es/interactions/toggle-state-mixin.js +9 -7
- package/es/interactions/toggle-state-mixin.js.map +1 -1
- package/es/interactions/tooltip.js +1 -1
- package/es/parse/coordinate.js +1 -1
- package/es/parse/event.d.ts +0 -2
- package/es/parse/event.js +4 -8
- package/es/parse/event.js.map +1 -1
- package/es/parse/mark.js +1 -1
- package/es/parse/option.js +1 -2
- package/es/parse/scale.js +1 -1
- package/es/parse/transform.js +1 -1
- package/es/parse/util.js +1 -1
- package/es/parse/util.js.map +1 -1
- package/es/parse/view.js +1 -1
- package/es/semantic-marks/text.js.map +1 -1
- package/es/transforms/data/pie.js +1 -1
- package/es/transforms/data/pie.js.map +1 -1
- package/es/transforms/mark/mark-overlap.js +6 -6
- package/es/transforms/mark/mark-overlap.js.map +1 -1
- package/es/transforms/util/util.d.ts +0 -2
- package/es/transforms/util/util.js +0 -10
- package/es/transforms/util/util.js.map +1 -1
- package/es/types/animate.d.ts +3 -1
- package/es/types/animate.js.map +1 -1
- package/es/types/element.d.ts +5 -1
- package/es/types/element.js.map +1 -1
- package/es/types/grammar.d.ts +1 -0
- package/es/types/grammar.js.map +1 -1
- package/es/types/interaction.d.ts +4 -1
- package/es/types/interaction.js.map +1 -1
- package/es/types/mark.d.ts +2 -0
- package/es/types/mark.js.map +1 -1
- package/es/types/morph.d.ts +1 -2
- package/es/types/morph.js.map +1 -1
- package/es/types/renderer.d.ts +6 -1
- package/es/types/renderer.js.map +1 -1
- package/es/types/transform.d.ts +1 -0
- package/es/types/transform.js.map +1 -1
- package/es/types/view.d.ts +4 -1
- package/es/types/view.js.map +1 -1
- package/es/view/View.d.ts +3 -6
- package/es/view/View.js +63 -124
- package/es/view/View.js.map +1 -1
- package/es/view/animate.js +2 -1
- package/es/view/animate.js.map +1 -1
- package/es/view/constants.d.ts +2 -0
- package/es/view/constants.js +4 -0
- package/es/view/constants.js.map +1 -1
- package/es/view/events.d.ts +0 -1
- package/es/view/events.js +1 -15
- package/es/view/events.js.map +1 -1
- package/es/view/glyph.d.ts +4 -0
- package/es/view/glyph.js +11 -0
- package/es/view/glyph.js.map +1 -1
- package/es/view/grammar-record.js +2 -3
- package/es/view/grammar-record.js.map +1 -1
- package/es/view/group.js +8 -7
- package/es/view/group.js.map +1 -1
- package/es/view/mark-animate-mixin.d.ts +1 -0
- package/es/view/mark-animate-mixin.js +25 -0
- package/es/view/mark-animate-mixin.js.map +1 -0
- package/es/view/mark.d.ts +4 -1
- package/es/view/mark.js +102 -70
- package/es/view/mark.js.map +1 -1
- package/es/view/view-animate-mixin.d.ts +1 -0
- package/es/view/view-animate-mixin.js +16 -0
- package/es/view/view-animate-mixin.js.map +1 -0
- package/es/view/view-event-mixin.d.ts +1 -0
- package/es/view/view-event-mixin.js +90 -0
- package/es/view/view-event-mixin.js.map +1 -0
- package/es/view/view-morph-mixin.d.ts +1 -0
- package/es/view/view-morph-mixin.js +22 -0
- package/es/view/view-morph-mixin.js.map +1 -0
- package/package.json +12 -12
- package/cjs/graph/util/element.d.ts +0 -2
- package/cjs/graph/util/element.js +0 -10
- package/cjs/graph/util/element.js.map +0 -1
- package/es/graph/util/element.d.ts +0 -2
- package/es/graph/util/element.js +0 -8
- package/es/graph/util/element.js.map +0 -1
package/es/glyph/boxplot.js
CHANGED
|
@@ -6,6 +6,8 @@ import { registerGlyphGraphic, registerRectGraphic, registerRuleGraphic } from "
|
|
|
6
6
|
|
|
7
7
|
import { isHorizontal } from "@visactor/vgrammar-util";
|
|
8
8
|
|
|
9
|
+
import { registerGlyphMark } from "../view/glyph";
|
|
10
|
+
|
|
9
11
|
const scaleIn = computeCenter => (element, options, animationParameters) => {
|
|
10
12
|
var _a, _b, _c;
|
|
11
13
|
const direction = null !== (_c = null !== (_a = element.getGraphicAttribute("direction", !1)) && void 0 !== _a ? _a : null === (_b = element.mark.getGlyphConfig()) || void 0 === _b ? void 0 : _b.direction) && void 0 !== _c ? _c : "vertical", center = computeCenter(element, direction, options);
|
|
@@ -245,7 +247,7 @@ export function registerBoxplotGlyph() {
|
|
|
245
247
|
visible: !1
|
|
246
248
|
}
|
|
247
249
|
}))), Factory.registerAnimationType("boxplotScaleIn", boxplotScaleIn), Factory.registerAnimationType("boxplotScaleOut", boxplotScaleOut),
|
|
248
|
-
registerGlyphGraphic(), registerRectGraphic(), registerRuleGraphic();
|
|
250
|
+
registerGlyphMark(), registerGlyphGraphic(), registerRectGraphic(), registerRuleGraphic();
|
|
249
251
|
}
|
|
250
252
|
|
|
251
253
|
const computeBarBoxplotCenter = (glyphElement, direction, options) => {
|
|
@@ -411,6 +413,6 @@ export function registerBarBoxplotGlyph() {
|
|
|
411
413
|
visible: !1
|
|
412
414
|
}
|
|
413
415
|
}))), Factory.registerAnimationType("barBoxplotScaleIn", barBoxplotScaleIn), Factory.registerAnimationType("barBoxplotScaleOut", barBoxplotScaleOut),
|
|
414
|
-
registerGlyphGraphic(), registerRectGraphic(), registerRuleGraphic();
|
|
416
|
+
registerGlyphMark(), registerGlyphGraphic(), registerRectGraphic(), registerRuleGraphic();
|
|
415
417
|
}
|
|
416
418
|
//# sourceMappingURL=boxplot.js.map
|
package/es/glyph/boxplot.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/glyph/boxplot.ts"],"names":[],"mappings":"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","file":"boxplot.js","sourcesContent":["import { isValidNumber } from '@visactor/vutils';\nimport type {\n BarBoxPlotEncoderSpec,\n BoxPlotEncoderSpec,\n IAnimationParameters,\n IGlyphElement,\n TypeAnimation\n} from '../types';\nimport { Factory } from '../core/factory';\nimport { registerGlyphGraphic, registerRectGraphic, registerRuleGraphic } from '../graph/mark/graphic';\nimport { isHorizontal } from '@visactor/vgrammar-util';\n\nexport interface IBoxplotScaleAnimationOptions {\n center?: number;\n}\n\nconst scaleIn = (\n computeCenter: (\n element: IGlyphElement,\n direction: 'vertical' | 'horizontal',\n options: IBoxplotScaleAnimationOptions\n ) => number\n): TypeAnimation<IGlyphElement> => {\n return (\n element: IGlyphElement,\n options: IBoxplotScaleAnimationOptions,\n animationParameters: IAnimationParameters\n ) => {\n const direction =\n element.getGraphicAttribute('direction', false) ?? element.mark.getGlyphConfig()?.direction ?? 'vertical';\n const center = computeCenter(element, direction, options);\n if (!isValidNumber(center)) {\n return {};\n }\n const x = element.getGraphicAttribute('x', false);\n const y = element.getGraphicAttribute('y', false);\n const min = element.getGraphicAttribute('min', false);\n const max = element.getGraphicAttribute('max', false);\n const q1 = element.getGraphicAttribute('q1', false);\n const q3 = element.getGraphicAttribute('q3', false);\n const median = element.getGraphicAttribute('median', false);\n const animateAttributes: any = { from: { x, y }, to: { x, y } };\n if (isValidNumber(min)) {\n animateAttributes.from.min = center;\n animateAttributes.to.min = min;\n }\n if (isValidNumber(max)) {\n animateAttributes.from.max = center;\n animateAttributes.to.max = max;\n }\n if (isValidNumber(q1)) {\n animateAttributes.from.q1 = center;\n animateAttributes.to.q1 = q1;\n }\n if (isValidNumber(q3)) {\n animateAttributes.from.q3 = center;\n animateAttributes.to.q3 = q3;\n }\n if (isValidNumber(median)) {\n animateAttributes.from.median = center;\n animateAttributes.to.median = median;\n }\n return animateAttributes;\n };\n};\n\nconst scaleOut = (\n computeCenter: (\n element: IGlyphElement,\n direction: 'vertical' | 'horizontal',\n options: IBoxplotScaleAnimationOptions\n ) => number\n): TypeAnimation<IGlyphElement> => {\n return (\n element: IGlyphElement,\n options: IBoxplotScaleAnimationOptions,\n animationParameters: IAnimationParameters\n ) => {\n const direction =\n element.getGraphicAttribute('direction', false) ?? element.mark.getGlyphConfig()?.direction ?? 'vertical';\n const center = computeCenter(element, direction, options);\n if (!isValidNumber(center)) {\n return {};\n }\n const x = element.getGraphicAttribute('x', true);\n const y = element.getGraphicAttribute('y', true);\n const min = element.getGraphicAttribute('min', true);\n const max = element.getGraphicAttribute('max', true);\n const q1 = element.getGraphicAttribute('q1', true);\n const q3 = element.getGraphicAttribute('q3', true);\n const median = element.getGraphicAttribute('median', true);\n const animateAttributes: any = { from: { x, y }, to: { x, y } };\n if (isValidNumber(min)) {\n animateAttributes.to.min = center;\n animateAttributes.from.min = min;\n }\n if (isValidNumber(max)) {\n animateAttributes.to.max = center;\n animateAttributes.from.max = max;\n }\n if (isValidNumber(q1)) {\n animateAttributes.to.q1 = center;\n animateAttributes.from.q1 = q1;\n }\n if (isValidNumber(q3)) {\n animateAttributes.to.q3 = center;\n animateAttributes.from.q3 = q3;\n }\n if (isValidNumber(median)) {\n animateAttributes.to.median = center;\n animateAttributes.from.median = median;\n }\n return animateAttributes;\n };\n};\n\nconst computeBoxplotCenter = (\n glyphElement: IGlyphElement,\n direction: 'vertical' | 'horizontal',\n options: IBoxplotScaleAnimationOptions\n) => {\n if (options && isValidNumber(options.center)) {\n return options.center;\n }\n let median: number;\n let max: number;\n let min: number;\n let q1: number;\n let q3: number;\n if (isHorizontal(direction)) {\n median = glyphElement.getGraphicAttribute('points', false, 'median')?.[0]?.x;\n max = glyphElement.getGraphicAttribute('points', false, 'max')?.[0]?.x;\n min = glyphElement.getGraphicAttribute('points', false, 'min')?.[0]?.x;\n\n const boxWidth = glyphElement.getGraphicAttribute('width', false, 'box');\n const boxX = glyphElement.getGraphicAttribute('x', false, 'box');\n q1 = boxX;\n q3 = boxX + boxWidth;\n } else {\n median = glyphElement.getGraphicAttribute('points', false, 'median')?.[0]?.y;\n max = glyphElement.getGraphicAttribute('points', false, 'max')?.[0]?.y;\n min = glyphElement.getGraphicAttribute('points', false, 'min')?.[0]?.y;\n\n const boxHeight = glyphElement.getGraphicAttribute('height', false, 'box');\n const boxY = glyphElement.getGraphicAttribute('y', false, 'box');\n q1 = boxY;\n q3 = boxY + boxHeight;\n }\n\n if (isValidNumber(median)) {\n return median;\n }\n if (isValidNumber(q1) && isValidNumber(q3)) {\n return (q1 + q3) / 2;\n }\n if (isValidNumber(max) && isValidNumber(min)) {\n return (max + min) / 2;\n }\n if (isValidNumber(min)) {\n return min;\n }\n if (isValidNumber(max)) {\n return max;\n }\n return NaN;\n};\n\nconst encodeBoxplotSize = (encodeValues: any, datum: any, element: IGlyphElement, config: any) => {\n const attributes = {\n shaft: {},\n box: {},\n max: {},\n min: {},\n median: {}\n };\n\n const x = encodeValues.x ?? element.getGraphicAttribute('x', false);\n const y = encodeValues.y ?? element.getGraphicAttribute('y', false);\n const width = encodeValues.width ?? element.getGraphicAttribute('width', false);\n const height = encodeValues.height ?? element.getGraphicAttribute('height', false);\n const boxWidth = encodeValues.boxWidth ?? element.getGraphicAttribute('boxWidth', false);\n const boxHeight = encodeValues.boxHeight ?? element.getGraphicAttribute('boxHeight', false);\n const ruleWidth = encodeValues.ruleWidth ?? element.getGraphicAttribute('ruleWidth', false);\n const ruleHeight = encodeValues.ruleHeight ?? element.getGraphicAttribute('ruleHeight', false);\n\n if (config && isHorizontal(config.direction)) {\n if (isValidNumber(boxHeight)) {\n Object.assign(attributes.box, { y: y - boxHeight / 2, y1: y + boxHeight / 2 });\n Object.assign(attributes.median, { y: y - boxHeight / 2, y1: y + boxHeight / 2 });\n } else {\n // median rule always has the same length with box rect\n Object.assign(attributes.box, { y: y - height / 2, y1: y + height / 2 });\n Object.assign(attributes.median, { y: y - height / 2, y1: y + height / 2 });\n }\n if (isValidNumber(ruleHeight)) {\n Object.assign(attributes.max, { y: y - ruleHeight / 2, y1: y + ruleHeight / 2 });\n Object.assign(attributes.min, { y: y - ruleHeight / 2, y1: y + ruleHeight / 2 });\n } else {\n Object.assign(attributes.max, { y: y - height / 2, y1: y + height / 2 });\n Object.assign(attributes.min, { y: y - height / 2, y1: y + height / 2 });\n }\n } else {\n if (isValidNumber(boxWidth)) {\n Object.assign(attributes.box, { x: x - boxWidth / 2, x1: x + boxWidth / 2 });\n Object.assign(attributes.median, { x: x - boxWidth / 2, x1: x + boxWidth / 2 });\n } else {\n Object.assign(attributes.box, { x: x - width / 2, x1: x + width / 2 });\n Object.assign(attributes.median, { x: x - width / 2, x1: x + width / 2 });\n }\n if (isValidNumber(ruleWidth)) {\n Object.assign(attributes.max, { x: x - ruleWidth / 2, x1: x + ruleWidth / 2 });\n Object.assign(attributes.min, { x: x - ruleWidth / 2, x1: x + ruleWidth / 2 });\n } else {\n Object.assign(attributes.max, { x: x - width / 2, x1: x + width / 2 });\n Object.assign(attributes.min, { x: x - width / 2, x1: x + width / 2 });\n }\n }\n return attributes;\n};\n\nexport const boxplotScaleIn = scaleIn(computeBoxplotCenter);\nexport const boxplotScaleOut = scaleOut(computeBoxplotCenter);\n\nexport function registerBoxplotGlyph() {\n Factory.registerGlyph<BoxPlotEncoderSpec, { direction?: 'horizontal' | 'vertical' }>('boxplot', {\n shaft: 'rule',\n box: 'rect',\n max: 'rule',\n min: 'rule',\n median: 'rule'\n })\n .registerProgressiveChannels([\n 'x',\n 'y',\n 'q1',\n 'q3',\n 'min',\n 'max',\n 'median',\n 'angle',\n 'width',\n 'height',\n 'boxWidth',\n 'boxHeight',\n 'ruleWidth',\n 'ruleHeight'\n ])\n .registerFunctionEncoder(encodeBoxplotSize)\n .registerChannelEncoder('x', (channel, encodeValue, encodeValues, datum, element, config) => {\n if (config && isHorizontal(config.direction)) {\n return null;\n }\n return {\n shaft: { x: encodeValue, x1: encodeValue }\n };\n })\n .registerChannelEncoder('y', (channel, encodeValue, encodeValues, datum, element, config) => {\n if (!config || !isHorizontal(config.direction)) {\n return null;\n }\n return {\n shaft: { y: encodeValue, y1: encodeValue }\n };\n })\n .registerChannelEncoder('q1', (channel, encodeValue, encodeValues, datum, element, config) => {\n return config && isHorizontal(config.direction) ? { box: { x: encodeValue } } : { box: { y: encodeValue } };\n })\n .registerChannelEncoder('q3', (channel, encodeValue, encodeValues, datum, element, config) => {\n return config && isHorizontal(config.direction) ? { box: { x1: encodeValue } } : { box: { y1: encodeValue } };\n })\n .registerChannelEncoder('min', (channel, encodeValue, encodeValues, datum, element, config) => {\n return config && isHorizontal(config.direction)\n ? {\n shaft: { x: encodeValue },\n min: { x: encodeValue, x1: encodeValue, visible: true }\n }\n : {\n shaft: { y: encodeValue },\n min: { y: encodeValue, y1: encodeValue, visible: true }\n };\n })\n .registerChannelEncoder('max', (channel, encodeValue, encodeValues, datum, element, config) => {\n return config && isHorizontal(config.direction)\n ? {\n shaft: { x1: encodeValue },\n max: { x: encodeValue, x1: encodeValue, visible: true }\n }\n : {\n shaft: { y1: encodeValue },\n max: { y: encodeValue, y1: encodeValue, visible: true }\n };\n })\n .registerChannelEncoder('median', (channel, encodeValue, encodeValues, datum, element, config) => {\n return config && isHorizontal(config.direction)\n ? {\n median: { x: encodeValue, x1: encodeValue, visible: true }\n }\n : {\n median: { y: encodeValue, y1: encodeValue, visible: true }\n };\n })\n .registerChannelEncoder('angle', (channel, encodeValue, encodeValues, datum, element, config) => {\n const defaultAnchor =\n config && isHorizontal(config.direction)\n ? [(encodeValues.min + encodeValues.max) / 2, encodeValues.y]\n : [encodeValues.x, (encodeValues.min + encodeValues.max) / 2];\n const anchor = encodeValues.anchor ?? defaultAnchor;\n return {\n shaft: { angle: encodeValue, anchor },\n box: { angle: encodeValue, anchor },\n max: { angle: encodeValue, anchor },\n min: { angle: encodeValue, anchor },\n median: { angle: encodeValue, anchor }\n };\n })\n .registerDefaultEncoder(() => {\n return {\n max: { visible: false },\n min: { visible: false },\n median: { visible: false }\n };\n });\n\n Factory.registerAnimationType('boxplotScaleIn', boxplotScaleIn);\n Factory.registerAnimationType('boxplotScaleOut', boxplotScaleOut);\n registerGlyphGraphic();\n registerRectGraphic();\n registerRuleGraphic();\n}\n\nconst computeBarBoxplotCenter = (\n glyphElement: IGlyphElement,\n direction: 'vertical' | 'horizontal',\n options: IBoxplotScaleAnimationOptions\n) => {\n if (isValidNumber(options?.center)) {\n return options.center;\n }\n let median: number;\n let max: number;\n let min: number;\n let q1: number;\n let q3: number;\n if (isHorizontal(direction)) {\n median = glyphElement.getGraphicAttribute('points', false, 'median')?.[0]?.x;\n\n const minMaxBoxWidth = glyphElement.getGraphicAttribute('width', false, 'minMaxBox');\n const minMaxBoxBoxX = glyphElement.getGraphicAttribute('x', false, 'minMaxBox');\n min = minMaxBoxBoxX;\n max = minMaxBoxBoxX + minMaxBoxWidth;\n\n const q1q3BoxWidth = glyphElement.getGraphicAttribute('width', false, 'q1q3Box');\n const q1q3BoxX = glyphElement.getGraphicAttribute('x', false, 'q1q3Box');\n q1 = q1q3BoxX;\n q3 = q1q3BoxX + q1q3BoxWidth;\n } else {\n median = glyphElement.getGraphicAttribute('points', false, 'median')?.[0]?.y;\n\n const minMaxBoxHeight = glyphElement.getGraphicAttribute('height', false, 'minMaxBox');\n const minMaxBoxBoxY = glyphElement.getGraphicAttribute('y', false, 'minMaxBox');\n min = minMaxBoxBoxY;\n max = minMaxBoxBoxY + minMaxBoxHeight;\n\n const q1q3BoxHeight = glyphElement.getGraphicAttribute('height', false, 'q1q3Box');\n const q1q3BoxY = glyphElement.getGraphicAttribute('y', false, 'q1q3Box');\n q1 = q1q3BoxY;\n q3 = q1q3BoxY + q1q3BoxHeight;\n }\n\n if (isValidNumber(median)) {\n return median;\n }\n if (isValidNumber(q1) && isValidNumber(q3)) {\n return (q1 + q3) / 2;\n }\n if (isValidNumber(max) && isValidNumber(min)) {\n return (max + min) / 2;\n }\n if (isValidNumber(min)) {\n return min;\n }\n if (isValidNumber(max)) {\n return max;\n }\n return NaN;\n};\n\nconst encodeBarBoxplotSize = (encodeValues: any, datum: any, element: IGlyphElement, config: any) => {\n const attributes = {\n minMaxBox: {},\n q1q3Box: {},\n median: {}\n };\n\n const x = encodeValues.x ?? element.getGraphicAttribute('x', false);\n const y = encodeValues.y ?? element.getGraphicAttribute('y', false);\n const width = encodeValues.width ?? element.getGraphicAttribute('width', false);\n const minMaxWidth = encodeValues.minMaxWidth ?? element.getGraphicAttribute('minMaxWidth', false);\n const q1q3Width = encodeValues.q1q3Width ?? element.getGraphicAttribute('q1q3Width', false);\n const height = encodeValues.height ?? element.getGraphicAttribute('height', false);\n const minMaxHeight = encodeValues.minMaxHeight ?? element.getGraphicAttribute('minMaxHeight', false);\n const q1q3Height = encodeValues.q1q3Height ?? element.getGraphicAttribute('q1q3Height', false);\n\n if (config && isHorizontal(config.direction)) {\n if (isValidNumber(minMaxHeight)) {\n Object.assign(attributes.minMaxBox, { y: y - minMaxHeight / 2, y1: y + minMaxHeight / 2 });\n } else {\n Object.assign(attributes.minMaxBox, { y: y - height / 2, y1: y + height / 2 });\n }\n if (isValidNumber(q1q3Height)) {\n Object.assign(attributes.q1q3Box, { y: y - q1q3Height / 2, y1: y + q1q3Height / 2 });\n Object.assign(attributes.median, { y: y - q1q3Height / 2, y1: y + q1q3Height / 2 });\n } else {\n // median rule always has the same length with q1q3box rect\n Object.assign(attributes.q1q3Box, { y: y - height / 2, y1: y + height / 2 });\n Object.assign(attributes.median, { y: y - height / 2, y1: y + height / 2 });\n }\n } else {\n if (isValidNumber(minMaxWidth)) {\n Object.assign(attributes.minMaxBox, { x: x - minMaxWidth / 2, x1: x + minMaxWidth / 2 });\n } else {\n Object.assign(attributes.minMaxBox, { x: x - width / 2, x1: x + width / 2 });\n }\n if (isValidNumber(q1q3Width)) {\n Object.assign(attributes.q1q3Box, { x: x - q1q3Width / 2, x1: x + q1q3Width / 2 });\n Object.assign(attributes.median, { x: x - q1q3Width / 2, x1: x + q1q3Width / 2 });\n } else {\n // median rule always has the same length with q1q3box rect\n Object.assign(attributes.q1q3Box, { x: x - width / 2, x1: x + width / 2 });\n Object.assign(attributes.median, { x: x - width / 2, x1: x + width / 2 });\n }\n }\n return attributes;\n};\n\nexport const barBoxplotScaleIn = scaleIn(computeBarBoxplotCenter);\nexport const barBoxplotScaleOut = scaleOut(computeBarBoxplotCenter);\n\nexport function registerBarBoxplotGlyph() {\n Factory.registerGlyph<BarBoxPlotEncoderSpec, { direction?: 'horizontal' | 'vertical' }>('barBoxplot', {\n minMaxBox: 'rect',\n q1q3Box: 'rect',\n median: 'rule'\n })\n .registerProgressiveChannels([\n 'x',\n 'y',\n 'q1',\n 'q3',\n 'min',\n 'max',\n 'median',\n 'angle',\n 'width',\n 'height',\n 'minMaxWidth',\n 'q1q3Width',\n 'minMaxHeight',\n 'q1q3Height'\n ])\n .registerFunctionEncoder(encodeBarBoxplotSize)\n .registerChannelEncoder('q1', (channel, encodeValue, encodeValues, datum, element, config) => {\n return config && isHorizontal(config.direction)\n ? { q1q3Box: { x: encodeValue } }\n : { q1q3Box: { y: encodeValue } };\n })\n .registerChannelEncoder('q3', (channel, encodeValue, encodeValues, datum, element, config) => {\n return config && isHorizontal(config.direction)\n ? { q1q3Box: { x1: encodeValue } }\n : { q1q3Box: { y1: encodeValue } };\n })\n .registerChannelEncoder('min', (channel, encodeValue, encodeValues, datum, element, config) => {\n return config && isHorizontal(config.direction)\n ? { minMaxBox: { x: encodeValue } }\n : { minMaxBox: { y: encodeValue } };\n })\n .registerChannelEncoder('max', (channel, encodeValue, encodeValues, datum, element, config) => {\n return config && isHorizontal(config.direction)\n ? { minMaxBox: { x1: encodeValue } }\n : { minMaxBox: { y1: encodeValue } };\n })\n .registerChannelEncoder('median', (channel, encodeValue, encodeValues, datum, element, config) => {\n return config && isHorizontal(config.direction)\n ? { median: { x: encodeValue, x1: encodeValue, visible: true } }\n : { median: { y: encodeValue, y1: encodeValue, visible: true } };\n })\n .registerChannelEncoder('angle', (channel, encodeValue, encodeValues, datum, element, config) => {\n const anchor = encodeValues.anchor ?? [encodeValues.x, (encodeValues.min + encodeValues.max) / 2];\n return {\n minMaxBox: { angle: encodeValue, anchor },\n q1q3Box: { angle: encodeValue, anchor },\n median: { angle: encodeValue, anchor }\n };\n })\n .registerChannelEncoder('lineWidth', (channel, encodeValue, encodeValues, datum, element, config) => {\n return {\n minMaxBox: { lineWidth: 0 },\n q1q3Box: { lineWidth: 0 }\n };\n })\n .registerChannelEncoder('minMaxFillOpacity', (channel, encodeValue, encodeValues, datum, element, config) => {\n return {\n minMaxBox: { fillOpacity: encodeValue }\n };\n })\n .registerChannelEncoder('stroke', (channel, encodeValue, encodeValues, datum, element, config) => {\n return {\n minMaxBox: { stroke: false },\n q1q3Box: { stroke: false }\n };\n })\n .registerDefaultEncoder(() => {\n return {\n minMaxBox: { lineWidth: 0 },\n q1q3Box: { lineWidth: 0 },\n median: { visible: false }\n };\n });\n\n Factory.registerAnimationType('barBoxplotScaleIn', barBoxplotScaleIn);\n Factory.registerAnimationType('barBoxplotScaleOut', barBoxplotScaleOut);\n registerGlyphGraphic();\n registerRectGraphic();\n registerRuleGraphic();\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/glyph/boxplot.ts"],"names":[],"mappings":"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","file":"boxplot.js","sourcesContent":["import { isValidNumber } from '@visactor/vutils';\nimport type {\n BarBoxPlotEncoderSpec,\n BoxPlotEncoderSpec,\n IAnimationParameters,\n IGlyphElement,\n TypeAnimation\n} from '../types';\nimport { Factory } from '../core/factory';\nimport { registerGlyphGraphic, registerRectGraphic, registerRuleGraphic } from '../graph/mark/graphic';\nimport { isHorizontal } from '@visactor/vgrammar-util';\nimport { registerGlyphMark } from '../view/glyph';\n\nexport interface IBoxplotScaleAnimationOptions {\n center?: number;\n}\n\nconst scaleIn = (\n computeCenter: (\n element: IGlyphElement,\n direction: 'vertical' | 'horizontal',\n options: IBoxplotScaleAnimationOptions\n ) => number\n): TypeAnimation<IGlyphElement> => {\n return (\n element: IGlyphElement,\n options: IBoxplotScaleAnimationOptions,\n animationParameters: IAnimationParameters\n ) => {\n const direction =\n element.getGraphicAttribute('direction', false) ?? element.mark.getGlyphConfig()?.direction ?? 'vertical';\n const center = computeCenter(element, direction, options);\n if (!isValidNumber(center)) {\n return {};\n }\n const x = element.getGraphicAttribute('x', false);\n const y = element.getGraphicAttribute('y', false);\n const min = element.getGraphicAttribute('min', false);\n const max = element.getGraphicAttribute('max', false);\n const q1 = element.getGraphicAttribute('q1', false);\n const q3 = element.getGraphicAttribute('q3', false);\n const median = element.getGraphicAttribute('median', false);\n const animateAttributes: any = { from: { x, y }, to: { x, y } };\n if (isValidNumber(min)) {\n animateAttributes.from.min = center;\n animateAttributes.to.min = min;\n }\n if (isValidNumber(max)) {\n animateAttributes.from.max = center;\n animateAttributes.to.max = max;\n }\n if (isValidNumber(q1)) {\n animateAttributes.from.q1 = center;\n animateAttributes.to.q1 = q1;\n }\n if (isValidNumber(q3)) {\n animateAttributes.from.q3 = center;\n animateAttributes.to.q3 = q3;\n }\n if (isValidNumber(median)) {\n animateAttributes.from.median = center;\n animateAttributes.to.median = median;\n }\n return animateAttributes;\n };\n};\n\nconst scaleOut = (\n computeCenter: (\n element: IGlyphElement,\n direction: 'vertical' | 'horizontal',\n options: IBoxplotScaleAnimationOptions\n ) => number\n): TypeAnimation<IGlyphElement> => {\n return (\n element: IGlyphElement,\n options: IBoxplotScaleAnimationOptions,\n animationParameters: IAnimationParameters\n ) => {\n const direction =\n element.getGraphicAttribute('direction', false) ?? element.mark.getGlyphConfig()?.direction ?? 'vertical';\n const center = computeCenter(element, direction, options);\n if (!isValidNumber(center)) {\n return {};\n }\n const x = element.getGraphicAttribute('x', true);\n const y = element.getGraphicAttribute('y', true);\n const min = element.getGraphicAttribute('min', true);\n const max = element.getGraphicAttribute('max', true);\n const q1 = element.getGraphicAttribute('q1', true);\n const q3 = element.getGraphicAttribute('q3', true);\n const median = element.getGraphicAttribute('median', true);\n const animateAttributes: any = { from: { x, y }, to: { x, y } };\n if (isValidNumber(min)) {\n animateAttributes.to.min = center;\n animateAttributes.from.min = min;\n }\n if (isValidNumber(max)) {\n animateAttributes.to.max = center;\n animateAttributes.from.max = max;\n }\n if (isValidNumber(q1)) {\n animateAttributes.to.q1 = center;\n animateAttributes.from.q1 = q1;\n }\n if (isValidNumber(q3)) {\n animateAttributes.to.q3 = center;\n animateAttributes.from.q3 = q3;\n }\n if (isValidNumber(median)) {\n animateAttributes.to.median = center;\n animateAttributes.from.median = median;\n }\n return animateAttributes;\n };\n};\n\nconst computeBoxplotCenter = (\n glyphElement: IGlyphElement,\n direction: 'vertical' | 'horizontal',\n options: IBoxplotScaleAnimationOptions\n) => {\n if (options && isValidNumber(options.center)) {\n return options.center;\n }\n let median: number;\n let max: number;\n let min: number;\n let q1: number;\n let q3: number;\n if (isHorizontal(direction)) {\n median = glyphElement.getGraphicAttribute('points', false, 'median')?.[0]?.x;\n max = glyphElement.getGraphicAttribute('points', false, 'max')?.[0]?.x;\n min = glyphElement.getGraphicAttribute('points', false, 'min')?.[0]?.x;\n\n const boxWidth = glyphElement.getGraphicAttribute('width', false, 'box');\n const boxX = glyphElement.getGraphicAttribute('x', false, 'box');\n q1 = boxX;\n q3 = boxX + boxWidth;\n } else {\n median = glyphElement.getGraphicAttribute('points', false, 'median')?.[0]?.y;\n max = glyphElement.getGraphicAttribute('points', false, 'max')?.[0]?.y;\n min = glyphElement.getGraphicAttribute('points', false, 'min')?.[0]?.y;\n\n const boxHeight = glyphElement.getGraphicAttribute('height', false, 'box');\n const boxY = glyphElement.getGraphicAttribute('y', false, 'box');\n q1 = boxY;\n q3 = boxY + boxHeight;\n }\n\n if (isValidNumber(median)) {\n return median;\n }\n if (isValidNumber(q1) && isValidNumber(q3)) {\n return (q1 + q3) / 2;\n }\n if (isValidNumber(max) && isValidNumber(min)) {\n return (max + min) / 2;\n }\n if (isValidNumber(min)) {\n return min;\n }\n if (isValidNumber(max)) {\n return max;\n }\n return NaN;\n};\n\nconst encodeBoxplotSize = (encodeValues: any, datum: any, element: IGlyphElement, config: any) => {\n const attributes = {\n shaft: {},\n box: {},\n max: {},\n min: {},\n median: {}\n };\n\n const x = encodeValues.x ?? element.getGraphicAttribute('x', false);\n const y = encodeValues.y ?? element.getGraphicAttribute('y', false);\n const width = encodeValues.width ?? element.getGraphicAttribute('width', false);\n const height = encodeValues.height ?? element.getGraphicAttribute('height', false);\n const boxWidth = encodeValues.boxWidth ?? element.getGraphicAttribute('boxWidth', false);\n const boxHeight = encodeValues.boxHeight ?? element.getGraphicAttribute('boxHeight', false);\n const ruleWidth = encodeValues.ruleWidth ?? element.getGraphicAttribute('ruleWidth', false);\n const ruleHeight = encodeValues.ruleHeight ?? element.getGraphicAttribute('ruleHeight', false);\n\n if (config && isHorizontal(config.direction)) {\n if (isValidNumber(boxHeight)) {\n Object.assign(attributes.box, { y: y - boxHeight / 2, y1: y + boxHeight / 2 });\n Object.assign(attributes.median, { y: y - boxHeight / 2, y1: y + boxHeight / 2 });\n } else {\n // median rule always has the same length with box rect\n Object.assign(attributes.box, { y: y - height / 2, y1: y + height / 2 });\n Object.assign(attributes.median, { y: y - height / 2, y1: y + height / 2 });\n }\n if (isValidNumber(ruleHeight)) {\n Object.assign(attributes.max, { y: y - ruleHeight / 2, y1: y + ruleHeight / 2 });\n Object.assign(attributes.min, { y: y - ruleHeight / 2, y1: y + ruleHeight / 2 });\n } else {\n Object.assign(attributes.max, { y: y - height / 2, y1: y + height / 2 });\n Object.assign(attributes.min, { y: y - height / 2, y1: y + height / 2 });\n }\n } else {\n if (isValidNumber(boxWidth)) {\n Object.assign(attributes.box, { x: x - boxWidth / 2, x1: x + boxWidth / 2 });\n Object.assign(attributes.median, { x: x - boxWidth / 2, x1: x + boxWidth / 2 });\n } else {\n Object.assign(attributes.box, { x: x - width / 2, x1: x + width / 2 });\n Object.assign(attributes.median, { x: x - width / 2, x1: x + width / 2 });\n }\n if (isValidNumber(ruleWidth)) {\n Object.assign(attributes.max, { x: x - ruleWidth / 2, x1: x + ruleWidth / 2 });\n Object.assign(attributes.min, { x: x - ruleWidth / 2, x1: x + ruleWidth / 2 });\n } else {\n Object.assign(attributes.max, { x: x - width / 2, x1: x + width / 2 });\n Object.assign(attributes.min, { x: x - width / 2, x1: x + width / 2 });\n }\n }\n return attributes;\n};\n\nexport const boxplotScaleIn = scaleIn(computeBoxplotCenter);\nexport const boxplotScaleOut = scaleOut(computeBoxplotCenter);\n\nexport function registerBoxplotGlyph() {\n Factory.registerGlyph<BoxPlotEncoderSpec, { direction?: 'horizontal' | 'vertical' }>('boxplot', {\n shaft: 'rule',\n box: 'rect',\n max: 'rule',\n min: 'rule',\n median: 'rule'\n })\n .registerProgressiveChannels([\n 'x',\n 'y',\n 'q1',\n 'q3',\n 'min',\n 'max',\n 'median',\n 'angle',\n 'width',\n 'height',\n 'boxWidth',\n 'boxHeight',\n 'ruleWidth',\n 'ruleHeight'\n ])\n .registerFunctionEncoder(encodeBoxplotSize)\n .registerChannelEncoder('x', (channel, encodeValue, encodeValues, datum, element, config) => {\n if (config && isHorizontal(config.direction)) {\n return null;\n }\n return {\n shaft: { x: encodeValue, x1: encodeValue }\n };\n })\n .registerChannelEncoder('y', (channel, encodeValue, encodeValues, datum, element, config) => {\n if (!config || !isHorizontal(config.direction)) {\n return null;\n }\n return {\n shaft: { y: encodeValue, y1: encodeValue }\n };\n })\n .registerChannelEncoder('q1', (channel, encodeValue, encodeValues, datum, element, config) => {\n return config && isHorizontal(config.direction) ? { box: { x: encodeValue } } : { box: { y: encodeValue } };\n })\n .registerChannelEncoder('q3', (channel, encodeValue, encodeValues, datum, element, config) => {\n return config && isHorizontal(config.direction) ? { box: { x1: encodeValue } } : { box: { y1: encodeValue } };\n })\n .registerChannelEncoder('min', (channel, encodeValue, encodeValues, datum, element, config) => {\n return config && isHorizontal(config.direction)\n ? {\n shaft: { x: encodeValue },\n min: { x: encodeValue, x1: encodeValue, visible: true }\n }\n : {\n shaft: { y: encodeValue },\n min: { y: encodeValue, y1: encodeValue, visible: true }\n };\n })\n .registerChannelEncoder('max', (channel, encodeValue, encodeValues, datum, element, config) => {\n return config && isHorizontal(config.direction)\n ? {\n shaft: { x1: encodeValue },\n max: { x: encodeValue, x1: encodeValue, visible: true }\n }\n : {\n shaft: { y1: encodeValue },\n max: { y: encodeValue, y1: encodeValue, visible: true }\n };\n })\n .registerChannelEncoder('median', (channel, encodeValue, encodeValues, datum, element, config) => {\n return config && isHorizontal(config.direction)\n ? {\n median: { x: encodeValue, x1: encodeValue, visible: true }\n }\n : {\n median: { y: encodeValue, y1: encodeValue, visible: true }\n };\n })\n .registerChannelEncoder('angle', (channel, encodeValue, encodeValues, datum, element, config) => {\n const defaultAnchor =\n config && isHorizontal(config.direction)\n ? [(encodeValues.min + encodeValues.max) / 2, encodeValues.y]\n : [encodeValues.x, (encodeValues.min + encodeValues.max) / 2];\n const anchor = encodeValues.anchor ?? defaultAnchor;\n return {\n shaft: { angle: encodeValue, anchor },\n box: { angle: encodeValue, anchor },\n max: { angle: encodeValue, anchor },\n min: { angle: encodeValue, anchor },\n median: { angle: encodeValue, anchor }\n };\n })\n .registerDefaultEncoder(() => {\n return {\n max: { visible: false },\n min: { visible: false },\n median: { visible: false }\n };\n });\n\n Factory.registerAnimationType('boxplotScaleIn', boxplotScaleIn);\n Factory.registerAnimationType('boxplotScaleOut', boxplotScaleOut);\n registerGlyphMark();\n registerGlyphGraphic();\n registerRectGraphic();\n registerRuleGraphic();\n}\n\nconst computeBarBoxplotCenter = (\n glyphElement: IGlyphElement,\n direction: 'vertical' | 'horizontal',\n options: IBoxplotScaleAnimationOptions\n) => {\n if (isValidNumber(options?.center)) {\n return options.center;\n }\n let median: number;\n let max: number;\n let min: number;\n let q1: number;\n let q3: number;\n if (isHorizontal(direction)) {\n median = glyphElement.getGraphicAttribute('points', false, 'median')?.[0]?.x;\n\n const minMaxBoxWidth = glyphElement.getGraphicAttribute('width', false, 'minMaxBox');\n const minMaxBoxBoxX = glyphElement.getGraphicAttribute('x', false, 'minMaxBox');\n min = minMaxBoxBoxX;\n max = minMaxBoxBoxX + minMaxBoxWidth;\n\n const q1q3BoxWidth = glyphElement.getGraphicAttribute('width', false, 'q1q3Box');\n const q1q3BoxX = glyphElement.getGraphicAttribute('x', false, 'q1q3Box');\n q1 = q1q3BoxX;\n q3 = q1q3BoxX + q1q3BoxWidth;\n } else {\n median = glyphElement.getGraphicAttribute('points', false, 'median')?.[0]?.y;\n\n const minMaxBoxHeight = glyphElement.getGraphicAttribute('height', false, 'minMaxBox');\n const minMaxBoxBoxY = glyphElement.getGraphicAttribute('y', false, 'minMaxBox');\n min = minMaxBoxBoxY;\n max = minMaxBoxBoxY + minMaxBoxHeight;\n\n const q1q3BoxHeight = glyphElement.getGraphicAttribute('height', false, 'q1q3Box');\n const q1q3BoxY = glyphElement.getGraphicAttribute('y', false, 'q1q3Box');\n q1 = q1q3BoxY;\n q3 = q1q3BoxY + q1q3BoxHeight;\n }\n\n if (isValidNumber(median)) {\n return median;\n }\n if (isValidNumber(q1) && isValidNumber(q3)) {\n return (q1 + q3) / 2;\n }\n if (isValidNumber(max) && isValidNumber(min)) {\n return (max + min) / 2;\n }\n if (isValidNumber(min)) {\n return min;\n }\n if (isValidNumber(max)) {\n return max;\n }\n return NaN;\n};\n\nconst encodeBarBoxplotSize = (encodeValues: any, datum: any, element: IGlyphElement, config: any) => {\n const attributes = {\n minMaxBox: {},\n q1q3Box: {},\n median: {}\n };\n\n const x = encodeValues.x ?? element.getGraphicAttribute('x', false);\n const y = encodeValues.y ?? element.getGraphicAttribute('y', false);\n const width = encodeValues.width ?? element.getGraphicAttribute('width', false);\n const minMaxWidth = encodeValues.minMaxWidth ?? element.getGraphicAttribute('minMaxWidth', false);\n const q1q3Width = encodeValues.q1q3Width ?? element.getGraphicAttribute('q1q3Width', false);\n const height = encodeValues.height ?? element.getGraphicAttribute('height', false);\n const minMaxHeight = encodeValues.minMaxHeight ?? element.getGraphicAttribute('minMaxHeight', false);\n const q1q3Height = encodeValues.q1q3Height ?? element.getGraphicAttribute('q1q3Height', false);\n\n if (config && isHorizontal(config.direction)) {\n if (isValidNumber(minMaxHeight)) {\n Object.assign(attributes.minMaxBox, { y: y - minMaxHeight / 2, y1: y + minMaxHeight / 2 });\n } else {\n Object.assign(attributes.minMaxBox, { y: y - height / 2, y1: y + height / 2 });\n }\n if (isValidNumber(q1q3Height)) {\n Object.assign(attributes.q1q3Box, { y: y - q1q3Height / 2, y1: y + q1q3Height / 2 });\n Object.assign(attributes.median, { y: y - q1q3Height / 2, y1: y + q1q3Height / 2 });\n } else {\n // median rule always has the same length with q1q3box rect\n Object.assign(attributes.q1q3Box, { y: y - height / 2, y1: y + height / 2 });\n Object.assign(attributes.median, { y: y - height / 2, y1: y + height / 2 });\n }\n } else {\n if (isValidNumber(minMaxWidth)) {\n Object.assign(attributes.minMaxBox, { x: x - minMaxWidth / 2, x1: x + minMaxWidth / 2 });\n } else {\n Object.assign(attributes.minMaxBox, { x: x - width / 2, x1: x + width / 2 });\n }\n if (isValidNumber(q1q3Width)) {\n Object.assign(attributes.q1q3Box, { x: x - q1q3Width / 2, x1: x + q1q3Width / 2 });\n Object.assign(attributes.median, { x: x - q1q3Width / 2, x1: x + q1q3Width / 2 });\n } else {\n // median rule always has the same length with q1q3box rect\n Object.assign(attributes.q1q3Box, { x: x - width / 2, x1: x + width / 2 });\n Object.assign(attributes.median, { x: x - width / 2, x1: x + width / 2 });\n }\n }\n return attributes;\n};\n\nexport const barBoxplotScaleIn = scaleIn(computeBarBoxplotCenter);\nexport const barBoxplotScaleOut = scaleOut(computeBarBoxplotCenter);\n\nexport function registerBarBoxplotGlyph() {\n Factory.registerGlyph<BarBoxPlotEncoderSpec, { direction?: 'horizontal' | 'vertical' }>('barBoxplot', {\n minMaxBox: 'rect',\n q1q3Box: 'rect',\n median: 'rule'\n })\n .registerProgressiveChannels([\n 'x',\n 'y',\n 'q1',\n 'q3',\n 'min',\n 'max',\n 'median',\n 'angle',\n 'width',\n 'height',\n 'minMaxWidth',\n 'q1q3Width',\n 'minMaxHeight',\n 'q1q3Height'\n ])\n .registerFunctionEncoder(encodeBarBoxplotSize)\n .registerChannelEncoder('q1', (channel, encodeValue, encodeValues, datum, element, config) => {\n return config && isHorizontal(config.direction)\n ? { q1q3Box: { x: encodeValue } }\n : { q1q3Box: { y: encodeValue } };\n })\n .registerChannelEncoder('q3', (channel, encodeValue, encodeValues, datum, element, config) => {\n return config && isHorizontal(config.direction)\n ? { q1q3Box: { x1: encodeValue } }\n : { q1q3Box: { y1: encodeValue } };\n })\n .registerChannelEncoder('min', (channel, encodeValue, encodeValues, datum, element, config) => {\n return config && isHorizontal(config.direction)\n ? { minMaxBox: { x: encodeValue } }\n : { minMaxBox: { y: encodeValue } };\n })\n .registerChannelEncoder('max', (channel, encodeValue, encodeValues, datum, element, config) => {\n return config && isHorizontal(config.direction)\n ? { minMaxBox: { x1: encodeValue } }\n : { minMaxBox: { y1: encodeValue } };\n })\n .registerChannelEncoder('median', (channel, encodeValue, encodeValues, datum, element, config) => {\n return config && isHorizontal(config.direction)\n ? { median: { x: encodeValue, x1: encodeValue, visible: true } }\n : { median: { y: encodeValue, y1: encodeValue, visible: true } };\n })\n .registerChannelEncoder('angle', (channel, encodeValue, encodeValues, datum, element, config) => {\n const anchor = encodeValues.anchor ?? [encodeValues.x, (encodeValues.min + encodeValues.max) / 2];\n return {\n minMaxBox: { angle: encodeValue, anchor },\n q1q3Box: { angle: encodeValue, anchor },\n median: { angle: encodeValue, anchor }\n };\n })\n .registerChannelEncoder('lineWidth', (channel, encodeValue, encodeValues, datum, element, config) => {\n return {\n minMaxBox: { lineWidth: 0 },\n q1q3Box: { lineWidth: 0 }\n };\n })\n .registerChannelEncoder('minMaxFillOpacity', (channel, encodeValue, encodeValues, datum, element, config) => {\n return {\n minMaxBox: { fillOpacity: encodeValue }\n };\n })\n .registerChannelEncoder('stroke', (channel, encodeValue, encodeValues, datum, element, config) => {\n return {\n minMaxBox: { stroke: false },\n q1q3Box: { stroke: false }\n };\n })\n .registerDefaultEncoder(() => {\n return {\n minMaxBox: { lineWidth: 0 },\n q1q3Box: { lineWidth: 0 },\n median: { visible: false }\n };\n });\n\n Factory.registerAnimationType('barBoxplotScaleIn', barBoxplotScaleIn);\n Factory.registerAnimationType('barBoxplotScaleOut', barBoxplotScaleOut);\n registerGlyphMark();\n registerGlyphGraphic();\n registerRectGraphic();\n registerRuleGraphic();\n}\n"]}
|
package/es/glyph/link-path.js
CHANGED
|
@@ -4,6 +4,8 @@ import { isNil } from "@visactor/vutils";
|
|
|
4
4
|
|
|
5
5
|
import { registerGlyphGraphic, registerPathGraphic } from "../graph/mark/graphic";
|
|
6
6
|
|
|
7
|
+
import { registerGlyphMark } from "../view/glyph";
|
|
8
|
+
|
|
7
9
|
export const getHorizontalPath = (options, ratio) => {
|
|
8
10
|
var _a;
|
|
9
11
|
const curvature = null !== (_a = options.curvature) && void 0 !== _a ? _a : .5, thickness = "number" == typeof ratio ? options.thickness * ratio : options.thickness;
|
|
@@ -129,6 +131,6 @@ export const registerLinkPathGlyph = () => {
|
|
|
129
131
|
zIndex: 1
|
|
130
132
|
}
|
|
131
133
|
}))), Factory.registerAnimationType("linkPathGrowIn", linkPathGrowIn), Factory.registerAnimationType("linkPathGrowOut", linkPathGrowOut),
|
|
132
|
-
Factory.registerAnimationType("linkPathUpdate", linkPathUpdate),
|
|
133
|
-
registerPathGraphic();
|
|
134
|
+
Factory.registerAnimationType("linkPathUpdate", linkPathUpdate), registerGlyphMark(),
|
|
135
|
+
registerGlyphGraphic(), registerPathGraphic();
|
|
134
136
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/glyph/link-path.ts"],"names":[],"mappings":"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","file":"link-path.js","sourcesContent":["import type { IAnimationParameters, LinkPathEncoderSpec, TypeAnimation } from '../types';\nimport type { IElement } from '../types/element';\nimport { Factory } from '../core/factory';\nimport { isNil } from '@visactor/vutils';\nimport { registerGlyphGraphic, registerPathGraphic } from '../graph/mark/graphic';\n\nexport interface LinkPathConfig {\n direction?: 'horizontal' | 'vertical' | 'LR' | 'RL' | 'TB' | 'BL' | 'radial';\n}\n\n// const isValidThickness = (thickness: number) => isValidNumber(thickness) && thickness > 1;\n// const hasValidThickness = (options: LinkPathEncodeValues) => isValidThickness(options.thickness);\n\nexport const getHorizontalPath = (options: LinkPathEncoderSpec, ratio?: number) => {\n const curvature = options.curvature ?? 0.5;\n const hasThickness = true;\n const thickness = typeof ratio === 'number' ? options.thickness * ratio : options.thickness;\n\n let x0 = options.x0;\n let x1 = options.x1;\n let y00 = options.y0;\n let y10 = options.y1;\n let cpx0 = x0 + curvature * (x1 - x0);\n let cpx1 = x1 + curvature * (x0 - x1);\n let formatter = (v: number) => v;\n\n if (options.round !== false) {\n x0 = Math.round(x0);\n x1 = Math.round(x1);\n y00 = Math.round(y00);\n y10 = Math.round(y10);\n cpx0 = Math.round(cpx0);\n cpx1 = Math.round(cpx1);\n formatter = Math.round;\n }\n const topPath =\n options.pathType === 'line'\n ? `M${x0},${y00}L${x1},${y10}`\n : options.pathType === 'polyline'\n ? `M${x0},${y00}L${cpx0},${y00}L${cpx0},${y10}L${x1},${y10}`\n : `M${x0},${y00}C${cpx0},${y00},${cpx1},${y10},${x1},${y10}`;\n\n if (!hasThickness) {\n // simplified to a single path\n return topPath;\n }\n\n if (options.align === 'center') {\n y00 = formatter(options.y0 - thickness / 2);\n y10 = formatter(options.y1 - thickness / 2);\n } else if (options.align === 'end') {\n y00 = formatter(options.y0 + options.thickness / 2 - thickness);\n y10 = formatter(options.y1 + options.thickness / 2 - thickness);\n } else {\n y00 = formatter(options.y0 - options.thickness / 2);\n y10 = formatter(options.y1 - options.thickness / 2);\n }\n\n const y01 = formatter(y00 + thickness);\n const y11 = formatter(y10 + thickness);\n\n const hasLength = Math.abs(x1 - x0) > 1e-6;\n const endArrowPath =\n options.endArrow && hasLength\n ? `L${x1},${formatter(y10 - thickness / 2)}L${formatter(x1 + thickness)},${formatter(\n (y10 + y11) / 2\n )}L${x1},${formatter(y11 + thickness / 2)}`\n : '';\n const startArrowPath =\n options.startArrow && hasLength\n ? `L${x0},${formatter(y01 + thickness / 2)}L${formatter(x0 - thickness)},${formatter(\n (y00 + y01) / 2\n )}L${x0},${formatter(y00 - thickness / 2)}`\n : '';\n\n if (options.pathType === 'line') {\n return `M${x0},${y00}L${x1},${y10}${endArrowPath}L${x1},${y11}L${x0},${y01}${startArrowPath}Z`;\n } else if (options.pathType === 'polyline') {\n return `M${x0},${y00}L${cpx0},${y00}L${cpx0},${y10}L${x1},${y10}\n ${endArrowPath}L${x1},${y11}L${cpx0},${y11}L${cpx0},${y01}L${x0},${y01}${startArrowPath}Z`;\n }\n\n return `M${x0},${y00}C${cpx0},${y00},${cpx1},${y10},${x1},${y10}\n ${endArrowPath}L${x1},${y11}C${cpx1},${y11},${cpx0},${y01},${x0},${y01}${startArrowPath}Z`;\n};\n\nexport const getVerticalPath = (options: LinkPathEncoderSpec, ratio?: number) => {\n const curvature = options.curvature ?? 0.5;\n const hasThickness = true;\n const thickness = typeof ratio === 'number' ? options.thickness * ratio : options.thickness;\n let y0 = options.y0;\n let y1 = options.y1;\n let x00 = options.x0;\n let x10 = options.x1;\n let cpy0 = y0 + curvature * (y1 - y0);\n let cpy1 = y1 + curvature * (y0 - y1);\n let formatter = (v: number) => v;\n\n if (options.round !== false) {\n formatter = Math.round;\n y0 = Math.round(y0);\n y1 = Math.round(y1);\n x00 = Math.round(x00);\n x10 = Math.round(x10);\n cpy0 = Math.round(cpy0);\n cpy1 = Math.round(cpy1);\n }\n const leftpath =\n options.pathType === 'line'\n ? `M${x00},${y0}L${x10},${y1}`\n : options.pathType === 'polyline'\n ? `M${x00},${y0}L${x00},${cpy0}L${x10},${cpy0}L${x10},${y1}`\n : `M${x00},${y0}C${x00},${cpy0},${x10},${cpy1},${x10},${y1}`;\n if (!hasThickness) {\n // simplified to a single path\n return leftpath;\n }\n\n if (options.align === 'center') {\n x00 = formatter(options.x0 - thickness / 2);\n x10 = formatter(options.x1 - thickness / 2);\n } else if (options.align === 'end') {\n x00 = formatter(options.x0 + options.thickness / 2 - thickness);\n x10 = formatter(options.x1 + options.thickness / 2 - thickness);\n } else {\n x00 = formatter(options.x0 - options.thickness / 2);\n x10 = formatter(options.x1 - options.thickness / 2);\n }\n\n const x01 = formatter(x00 + thickness);\n const x11 = formatter(x10 + thickness);\n\n const hasLength = Math.abs(y1 - y0) > 1e-6;\n const endArrowPath =\n options.endArrow && hasLength\n ? `L${formatter(x10 - thickness / 2)},${y1}L${formatter((x10 + x11) / 2)},${formatter(\n y1 + thickness\n )}L${formatter(x11 + thickness / 2)},${y1}`\n : '';\n const startArrowPath =\n options.startArrow && hasLength\n ? `L${formatter(x01 + thickness / 2)},${y0}L${formatter((x01 + x00) / 2)},${formatter(\n y0 - thickness\n )}L${formatter(x00 - thickness / 2)},${y0}`\n : '';\n\n if (options.pathType === 'line') {\n return `M${x00},${y0}L${x10},${y1}${endArrowPath}L${x11},${y1}L${x01},${y0}${startArrowPath}Z`;\n } else if (options.pathType === 'polyline') {\n return `M${x00},${y0}L${x00},${cpy0}L${x10},${cpy0}L${x10},${y1}\n ${endArrowPath}L${x11},${y1}L${x11},${cpy0}L${x01},${cpy0}L${x01},${y0}${startArrowPath}Z`;\n }\n\n return `M${x00},${y0}C${x00},${cpy0},${x10},${cpy1},${x10},${y1}\n ${endArrowPath}L${x11},${y1}C${x11},${cpy1},${x01},${cpy0},${x01},${y0}${startArrowPath}Z`;\n};\n\nconst encoder = (encodeValues: LinkPathEncoderSpec, datum: any, element: IElement, config: LinkPathConfig) => {\n const direction = encodeValues.direction ?? config?.direction;\n const parsePath = ['vertical', 'TB', 'BT'].includes(direction) ? getVerticalPath : getHorizontalPath;\n const isRatioShow = typeof encodeValues.ratio === 'number' && encodeValues.ratio >= 0 && encodeValues.ratio <= 1;\n\n const encodeChannels = Object.keys(encodeValues);\n // parse path when all required channels are included\n if (['x0', 'y0', 'x1', 'y1'].every(channel => encodeChannels.includes(channel))) {\n return {\n back: {\n path: isRatioShow ? parsePath(encodeValues, 1) : ''\n },\n front: {\n path: parsePath(encodeValues, isRatioShow ? encodeValues.ratio : 1)\n }\n };\n }\n\n return {};\n};\n\nconst linkPathGrowIn: TypeAnimation<IElement> = (\n element: IElement,\n options: any,\n animationParameters: IAnimationParameters\n) => {\n const linkValues: LinkPathEncoderSpec = {\n x0: element.getGraphicAttribute('x0', false),\n x1: element.getGraphicAttribute('x1', false),\n y0: element.getGraphicAttribute('y0', false),\n y1: element.getGraphicAttribute('y1', false),\n thickness: element.getGraphicAttribute('thickness', false),\n round: element.getGraphicAttribute('round', false),\n align: element.getGraphicAttribute('align', false),\n pathType: element.getGraphicAttribute('pathType', false),\n endArrow: element.getGraphicAttribute('endArrow', false),\n startArrow: element.getGraphicAttribute('startArrow', false)\n };\n // FIXME: undefined channel animation will cause vRender warning\n Object.keys(linkValues).forEach(key => {\n if (isNil(linkValues[key])) {\n delete linkValues[key];\n }\n });\n return {\n from: Object.assign({}, linkValues, { x1: linkValues.x0, y1: linkValues.y0 }),\n to: linkValues\n };\n};\n\nconst linkPathGrowOut: TypeAnimation<IElement> = (\n element: IElement,\n options: any,\n animationParameters: IAnimationParameters\n) => {\n const linkValues: LinkPathEncoderSpec = {\n x0: element.getGraphicAttribute('x0', true),\n x1: element.getGraphicAttribute('x1', true),\n y0: element.getGraphicAttribute('y0', true),\n y1: element.getGraphicAttribute('y1', true),\n thickness: element.getGraphicAttribute('thickness', true),\n round: element.getGraphicAttribute('round', true),\n align: element.getGraphicAttribute('align', true),\n pathType: element.getGraphicAttribute('pathType', true),\n endArrow: element.getGraphicAttribute('endArrow', true),\n startArrow: element.getGraphicAttribute('startArrow', true)\n };\n // FIXME: undefined channel animation will cause vRender warning\n Object.keys(linkValues).forEach(key => {\n if (isNil(linkValues[key])) {\n delete linkValues[key];\n }\n });\n return {\n from: linkValues,\n to: Object.assign({}, linkValues, { x1: linkValues.x0, y1: linkValues.y0 })\n };\n};\n\nconst linkPathUpdate: TypeAnimation<IElement> = (\n element: IElement,\n options: any,\n animationParameters: IAnimationParameters\n) => {\n const bassLinkValues = {\n thickness: element.getGraphicAttribute('thickness', false),\n round: element.getGraphicAttribute('round', false),\n align: element.getGraphicAttribute('align', false),\n pathType: element.getGraphicAttribute('pathType', false),\n endArrow: element.getGraphicAttribute('endArrow', false),\n startArrow: element.getGraphicAttribute('startArrow', false)\n };\n // FIXME: undefined channel animation will cause vRender warning\n Object.keys(bassLinkValues).forEach(key => {\n if (isNil(bassLinkValues[key])) {\n delete bassLinkValues[key];\n }\n });\n const prevLinkValues: LinkPathEncoderSpec = Object.assign(\n {\n x0: element.getGraphicAttribute('x0', true),\n x1: element.getGraphicAttribute('x1', true),\n y0: element.getGraphicAttribute('y0', true),\n y1: element.getGraphicAttribute('y1', true),\n ...bassLinkValues\n },\n bassLinkValues\n );\n const nextLinkValues: LinkPathEncoderSpec = Object.assign(\n {\n x0: element.getGraphicAttribute('x0', false),\n x1: element.getGraphicAttribute('x1', false),\n y0: element.getGraphicAttribute('y0', false),\n y1: element.getGraphicAttribute('y1', false)\n },\n bassLinkValues\n );\n\n return {\n from: prevLinkValues,\n to: nextLinkValues\n };\n};\n\nexport const registerLinkPathGlyph = () => {\n Factory.registerGlyph<LinkPathEncoderSpec, LinkPathConfig>('linkPath', {\n back: 'path',\n front: 'path'\n })\n .registerFunctionEncoder(encoder)\n .registerChannelEncoder('backgroundStyle', (channel, encodeValue) => {\n return {\n back: encodeValue\n };\n })\n .registerDefaultEncoder(() => {\n return {\n back: { zIndex: 0 },\n front: { zIndex: 1 }\n };\n });\n\n Factory.registerAnimationType('linkPathGrowIn', linkPathGrowIn);\n Factory.registerAnimationType('linkPathGrowOut', linkPathGrowOut);\n Factory.registerAnimationType('linkPathUpdate', linkPathUpdate);\n registerGlyphGraphic();\n registerPathGraphic();\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/glyph/link-path.ts"],"names":[],"mappings":"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","file":"link-path.js","sourcesContent":["import type { IAnimationParameters, LinkPathEncoderSpec, TypeAnimation } from '../types';\nimport type { IElement } from '../types/element';\nimport { Factory } from '../core/factory';\nimport { isNil } from '@visactor/vutils';\nimport { registerGlyphGraphic, registerPathGraphic } from '../graph/mark/graphic';\nimport { registerGlyphMark } from '../view/glyph';\n\nexport interface LinkPathConfig {\n direction?: 'horizontal' | 'vertical' | 'LR' | 'RL' | 'TB' | 'BL' | 'radial';\n}\n\n// const isValidThickness = (thickness: number) => isValidNumber(thickness) && thickness > 1;\n// const hasValidThickness = (options: LinkPathEncodeValues) => isValidThickness(options.thickness);\n\nexport const getHorizontalPath = (options: LinkPathEncoderSpec, ratio?: number) => {\n const curvature = options.curvature ?? 0.5;\n const hasThickness = true;\n const thickness = typeof ratio === 'number' ? options.thickness * ratio : options.thickness;\n\n let x0 = options.x0;\n let x1 = options.x1;\n let y00 = options.y0;\n let y10 = options.y1;\n let cpx0 = x0 + curvature * (x1 - x0);\n let cpx1 = x1 + curvature * (x0 - x1);\n let formatter = (v: number) => v;\n\n if (options.round !== false) {\n x0 = Math.round(x0);\n x1 = Math.round(x1);\n y00 = Math.round(y00);\n y10 = Math.round(y10);\n cpx0 = Math.round(cpx0);\n cpx1 = Math.round(cpx1);\n formatter = Math.round;\n }\n const topPath =\n options.pathType === 'line'\n ? `M${x0},${y00}L${x1},${y10}`\n : options.pathType === 'polyline'\n ? `M${x0},${y00}L${cpx0},${y00}L${cpx0},${y10}L${x1},${y10}`\n : `M${x0},${y00}C${cpx0},${y00},${cpx1},${y10},${x1},${y10}`;\n\n if (!hasThickness) {\n // simplified to a single path\n return topPath;\n }\n\n if (options.align === 'center') {\n y00 = formatter(options.y0 - thickness / 2);\n y10 = formatter(options.y1 - thickness / 2);\n } else if (options.align === 'end') {\n y00 = formatter(options.y0 + options.thickness / 2 - thickness);\n y10 = formatter(options.y1 + options.thickness / 2 - thickness);\n } else {\n y00 = formatter(options.y0 - options.thickness / 2);\n y10 = formatter(options.y1 - options.thickness / 2);\n }\n\n const y01 = formatter(y00 + thickness);\n const y11 = formatter(y10 + thickness);\n\n const hasLength = Math.abs(x1 - x0) > 1e-6;\n const endArrowPath =\n options.endArrow && hasLength\n ? `L${x1},${formatter(y10 - thickness / 2)}L${formatter(x1 + thickness)},${formatter(\n (y10 + y11) / 2\n )}L${x1},${formatter(y11 + thickness / 2)}`\n : '';\n const startArrowPath =\n options.startArrow && hasLength\n ? `L${x0},${formatter(y01 + thickness / 2)}L${formatter(x0 - thickness)},${formatter(\n (y00 + y01) / 2\n )}L${x0},${formatter(y00 - thickness / 2)}`\n : '';\n\n if (options.pathType === 'line') {\n return `M${x0},${y00}L${x1},${y10}${endArrowPath}L${x1},${y11}L${x0},${y01}${startArrowPath}Z`;\n } else if (options.pathType === 'polyline') {\n return `M${x0},${y00}L${cpx0},${y00}L${cpx0},${y10}L${x1},${y10}\n ${endArrowPath}L${x1},${y11}L${cpx0},${y11}L${cpx0},${y01}L${x0},${y01}${startArrowPath}Z`;\n }\n\n return `M${x0},${y00}C${cpx0},${y00},${cpx1},${y10},${x1},${y10}\n ${endArrowPath}L${x1},${y11}C${cpx1},${y11},${cpx0},${y01},${x0},${y01}${startArrowPath}Z`;\n};\n\nexport const getVerticalPath = (options: LinkPathEncoderSpec, ratio?: number) => {\n const curvature = options.curvature ?? 0.5;\n const hasThickness = true;\n const thickness = typeof ratio === 'number' ? options.thickness * ratio : options.thickness;\n let y0 = options.y0;\n let y1 = options.y1;\n let x00 = options.x0;\n let x10 = options.x1;\n let cpy0 = y0 + curvature * (y1 - y0);\n let cpy1 = y1 + curvature * (y0 - y1);\n let formatter = (v: number) => v;\n\n if (options.round !== false) {\n formatter = Math.round;\n y0 = Math.round(y0);\n y1 = Math.round(y1);\n x00 = Math.round(x00);\n x10 = Math.round(x10);\n cpy0 = Math.round(cpy0);\n cpy1 = Math.round(cpy1);\n }\n const leftpath =\n options.pathType === 'line'\n ? `M${x00},${y0}L${x10},${y1}`\n : options.pathType === 'polyline'\n ? `M${x00},${y0}L${x00},${cpy0}L${x10},${cpy0}L${x10},${y1}`\n : `M${x00},${y0}C${x00},${cpy0},${x10},${cpy1},${x10},${y1}`;\n if (!hasThickness) {\n // simplified to a single path\n return leftpath;\n }\n\n if (options.align === 'center') {\n x00 = formatter(options.x0 - thickness / 2);\n x10 = formatter(options.x1 - thickness / 2);\n } else if (options.align === 'end') {\n x00 = formatter(options.x0 + options.thickness / 2 - thickness);\n x10 = formatter(options.x1 + options.thickness / 2 - thickness);\n } else {\n x00 = formatter(options.x0 - options.thickness / 2);\n x10 = formatter(options.x1 - options.thickness / 2);\n }\n\n const x01 = formatter(x00 + thickness);\n const x11 = formatter(x10 + thickness);\n\n const hasLength = Math.abs(y1 - y0) > 1e-6;\n const endArrowPath =\n options.endArrow && hasLength\n ? `L${formatter(x10 - thickness / 2)},${y1}L${formatter((x10 + x11) / 2)},${formatter(\n y1 + thickness\n )}L${formatter(x11 + thickness / 2)},${y1}`\n : '';\n const startArrowPath =\n options.startArrow && hasLength\n ? `L${formatter(x01 + thickness / 2)},${y0}L${formatter((x01 + x00) / 2)},${formatter(\n y0 - thickness\n )}L${formatter(x00 - thickness / 2)},${y0}`\n : '';\n\n if (options.pathType === 'line') {\n return `M${x00},${y0}L${x10},${y1}${endArrowPath}L${x11},${y1}L${x01},${y0}${startArrowPath}Z`;\n } else if (options.pathType === 'polyline') {\n return `M${x00},${y0}L${x00},${cpy0}L${x10},${cpy0}L${x10},${y1}\n ${endArrowPath}L${x11},${y1}L${x11},${cpy0}L${x01},${cpy0}L${x01},${y0}${startArrowPath}Z`;\n }\n\n return `M${x00},${y0}C${x00},${cpy0},${x10},${cpy1},${x10},${y1}\n ${endArrowPath}L${x11},${y1}C${x11},${cpy1},${x01},${cpy0},${x01},${y0}${startArrowPath}Z`;\n};\n\nconst encoder = (encodeValues: LinkPathEncoderSpec, datum: any, element: IElement, config: LinkPathConfig) => {\n const direction = encodeValues.direction ?? config?.direction;\n const parsePath = ['vertical', 'TB', 'BT'].includes(direction) ? getVerticalPath : getHorizontalPath;\n const isRatioShow = typeof encodeValues.ratio === 'number' && encodeValues.ratio >= 0 && encodeValues.ratio <= 1;\n\n const encodeChannels = Object.keys(encodeValues);\n // parse path when all required channels are included\n if (['x0', 'y0', 'x1', 'y1'].every(channel => encodeChannels.includes(channel))) {\n return {\n back: {\n path: isRatioShow ? parsePath(encodeValues, 1) : ''\n },\n front: {\n path: parsePath(encodeValues, isRatioShow ? encodeValues.ratio : 1)\n }\n };\n }\n\n return {};\n};\n\nconst linkPathGrowIn: TypeAnimation<IElement> = (\n element: IElement,\n options: any,\n animationParameters: IAnimationParameters\n) => {\n const linkValues: LinkPathEncoderSpec = {\n x0: element.getGraphicAttribute('x0', false),\n x1: element.getGraphicAttribute('x1', false),\n y0: element.getGraphicAttribute('y0', false),\n y1: element.getGraphicAttribute('y1', false),\n thickness: element.getGraphicAttribute('thickness', false),\n round: element.getGraphicAttribute('round', false),\n align: element.getGraphicAttribute('align', false),\n pathType: element.getGraphicAttribute('pathType', false),\n endArrow: element.getGraphicAttribute('endArrow', false),\n startArrow: element.getGraphicAttribute('startArrow', false)\n };\n // FIXME: undefined channel animation will cause vRender warning\n Object.keys(linkValues).forEach(key => {\n if (isNil(linkValues[key])) {\n delete linkValues[key];\n }\n });\n return {\n from: Object.assign({}, linkValues, { x1: linkValues.x0, y1: linkValues.y0 }),\n to: linkValues\n };\n};\n\nconst linkPathGrowOut: TypeAnimation<IElement> = (\n element: IElement,\n options: any,\n animationParameters: IAnimationParameters\n) => {\n const linkValues: LinkPathEncoderSpec = {\n x0: element.getGraphicAttribute('x0', true),\n x1: element.getGraphicAttribute('x1', true),\n y0: element.getGraphicAttribute('y0', true),\n y1: element.getGraphicAttribute('y1', true),\n thickness: element.getGraphicAttribute('thickness', true),\n round: element.getGraphicAttribute('round', true),\n align: element.getGraphicAttribute('align', true),\n pathType: element.getGraphicAttribute('pathType', true),\n endArrow: element.getGraphicAttribute('endArrow', true),\n startArrow: element.getGraphicAttribute('startArrow', true)\n };\n // FIXME: undefined channel animation will cause vRender warning\n Object.keys(linkValues).forEach(key => {\n if (isNil(linkValues[key])) {\n delete linkValues[key];\n }\n });\n return {\n from: linkValues,\n to: Object.assign({}, linkValues, { x1: linkValues.x0, y1: linkValues.y0 })\n };\n};\n\nconst linkPathUpdate: TypeAnimation<IElement> = (\n element: IElement,\n options: any,\n animationParameters: IAnimationParameters\n) => {\n const bassLinkValues = {\n thickness: element.getGraphicAttribute('thickness', false),\n round: element.getGraphicAttribute('round', false),\n align: element.getGraphicAttribute('align', false),\n pathType: element.getGraphicAttribute('pathType', false),\n endArrow: element.getGraphicAttribute('endArrow', false),\n startArrow: element.getGraphicAttribute('startArrow', false)\n };\n // FIXME: undefined channel animation will cause vRender warning\n Object.keys(bassLinkValues).forEach(key => {\n if (isNil(bassLinkValues[key])) {\n delete bassLinkValues[key];\n }\n });\n const prevLinkValues: LinkPathEncoderSpec = Object.assign(\n {\n x0: element.getGraphicAttribute('x0', true),\n x1: element.getGraphicAttribute('x1', true),\n y0: element.getGraphicAttribute('y0', true),\n y1: element.getGraphicAttribute('y1', true),\n ...bassLinkValues\n },\n bassLinkValues\n );\n const nextLinkValues: LinkPathEncoderSpec = Object.assign(\n {\n x0: element.getGraphicAttribute('x0', false),\n x1: element.getGraphicAttribute('x1', false),\n y0: element.getGraphicAttribute('y0', false),\n y1: element.getGraphicAttribute('y1', false)\n },\n bassLinkValues\n );\n\n return {\n from: prevLinkValues,\n to: nextLinkValues\n };\n};\n\nexport const registerLinkPathGlyph = () => {\n Factory.registerGlyph<LinkPathEncoderSpec, LinkPathConfig>('linkPath', {\n back: 'path',\n front: 'path'\n })\n .registerFunctionEncoder(encoder)\n .registerChannelEncoder('backgroundStyle', (channel, encodeValue) => {\n return {\n back: encodeValue\n };\n })\n .registerDefaultEncoder(() => {\n return {\n back: { zIndex: 0 },\n front: { zIndex: 1 }\n };\n });\n\n Factory.registerAnimationType('linkPathGrowIn', linkPathGrowIn);\n Factory.registerAnimationType('linkPathGrowOut', linkPathGrowOut);\n Factory.registerAnimationType('linkPathUpdate', linkPathUpdate);\n registerGlyphMark();\n registerGlyphGraphic();\n registerPathGraphic();\n};\n"]}
|
package/es/glyph/ripple.js
CHANGED
|
@@ -2,6 +2,8 @@ import { Factory } from "../core/factory";
|
|
|
2
2
|
|
|
3
3
|
import { registerGlyphGraphic, registerSymbolGraphic } from "../graph/mark/graphic";
|
|
4
4
|
|
|
5
|
+
import { registerGlyphMark } from "../view/glyph";
|
|
6
|
+
|
|
5
7
|
export const registerRippleGlyph = () => {
|
|
6
8
|
Factory.registerGlyph("ripplePoint", {
|
|
7
9
|
symbol: "symbol",
|
|
@@ -35,6 +37,6 @@ export const registerRippleGlyph = () => {
|
|
|
35
37
|
ripple2: {
|
|
36
38
|
fillOpacity: .25
|
|
37
39
|
}
|
|
38
|
-
}))), registerGlyphGraphic(), registerSymbolGraphic();
|
|
40
|
+
}))), registerGlyphMark(), registerGlyphGraphic(), registerSymbolGraphic();
|
|
39
41
|
};
|
|
40
42
|
//# sourceMappingURL=ripple.js.map
|
package/es/glyph/ripple.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/glyph/ripple.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"sources":["../src/glyph/ripple.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,EAAE;IACtC,OAAO,CAAC,aAAa,CAAyB,aAAa,EAAE;QAC3D,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,QAAQ;QACjB,OAAO,EAAE,QAAQ;QACjB,OAAO,EAAE,QAAQ;KAClB,CAAC;SACC,uBAAuB,CAAC,CAAC,YAAoC,EAAE,KAAU,EAAE,OAAiB,EAAE,MAAW,EAAE,EAAE;;QAE5G,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,MAAA,YAAY,CAAC,IAAI,mCAAI,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACtE,MAAM,UAAU,GAAG,IAAI,GAAG,GAAG,CAAC;QAC9B,OAAO;YACL,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,GAAG,UAAU,GAAG,MAAM,EAAE,WAAW,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,EAAE;YAChF,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,GAAG,UAAU,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,WAAW,EAAE,GAAG,GAAG,MAAM,GAAG,IAAI,EAAE;YACrF,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,GAAG,UAAU,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,WAAW,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,EAAE;SACvF,CAAC;IACJ,CAAC,CAAC;SACD,sBAAsB,CAAC,GAAG,EAAE;QAC3B,OAAO;YACL,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;YAC9B,OAAO,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE;YAC7B,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;SAC/B,CAAC;IACJ,CAAC,CAAC,CAAC;IACL,iBAAiB,EAAE,CAAC;IACpB,oBAAoB,EAAE,CAAC;IACvB,qBAAqB,EAAE,CAAC;AAC1B,CAAC,CAAC","file":"ripple.js","sourcesContent":["import type { IElement, RipplePointEncoderSpec } from '../types';\nimport { Factory } from '../core/factory';\nimport { registerGlyphGraphic, registerSymbolGraphic } from '../graph/mark/graphic';\nimport { registerGlyphMark } from '../view/glyph';\n\nexport const registerRippleGlyph = () => {\n Factory.registerGlyph<RipplePointEncoderSpec>('ripplePoint', {\n symbol: 'symbol',\n ripple0: 'symbol',\n ripple1: 'symbol',\n ripple2: 'symbol'\n })\n .registerFunctionEncoder((encodeValues: RipplePointEncoderSpec, datum: any, element: IElement, config: any) => {\n // ripple value should be between 0 and 1\n const ripple = Math.max(0, Math.min(encodeValues.ripple, 1));\n const size = encodeValues.size ?? element.getGraphicAttribute('size');\n const rippleSize = size * 0.5;\n return {\n ripple0: { size: size + rippleSize * ripple, fillOpacity: 0.75 - ripple * 0.25 },\n ripple1: { size: size + rippleSize * (1 + ripple), fillOpacity: 0.5 - ripple * 0.25 },\n ripple2: { size: size + rippleSize * (2 + ripple), fillOpacity: 0.25 - ripple * 0.25 }\n };\n })\n .registerDefaultEncoder(() => {\n return {\n ripple0: { fillOpacity: 0.75 },\n ripple1: { fillOpacity: 0.5 },\n ripple2: { fillOpacity: 0.25 }\n };\n });\n registerGlyphMark();\n registerGlyphGraphic();\n registerSymbolGraphic();\n};\n"]}
|
package/es/glyph/tree-path.js
CHANGED
|
@@ -4,6 +4,8 @@ import { isNil } from "@visactor/vutils";
|
|
|
4
4
|
|
|
5
5
|
import { registerGlyphGraphic, registerPathGraphic } from "../graph/mark/graphic";
|
|
6
6
|
|
|
7
|
+
import { registerGlyphMark } from "../view/glyph";
|
|
8
|
+
|
|
7
9
|
export const getHorizontalPath = options => {
|
|
8
10
|
var _a, _b;
|
|
9
11
|
const curvature = null !== (_a = options.curvature) && void 0 !== _a ? _a : .5;
|
|
@@ -143,7 +145,7 @@ export const registerTreePathGlyph = () => {
|
|
|
143
145
|
zIndex: 2
|
|
144
146
|
}
|
|
145
147
|
}))), Factory.registerAnimationType("treePathGrowIn", treePathGrowIn), Factory.registerAnimationType("treePathGrowOut", treePathGrowOut),
|
|
146
|
-
Factory.registerAnimationType("treePathUpdate", treePathUpdate),
|
|
147
|
-
registerPathGraphic();
|
|
148
|
+
Factory.registerAnimationType("treePathUpdate", treePathUpdate), registerGlyphMark(),
|
|
149
|
+
registerGlyphGraphic(), registerPathGraphic();
|
|
148
150
|
};
|
|
149
151
|
//# sourceMappingURL=tree-path.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/glyph/tree-path.ts"],"names":[],"mappings":"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","file":"tree-path.js","sourcesContent":["import type { IAnimationParameters, TypeAnimation, TreePathEncoderSpec } from '../types';\nimport type { IElement } from '../types/element';\nimport { Factory } from '../core/factory';\nimport { isNil } from '@visactor/vutils';\nimport { registerGlyphGraphic, registerPathGraphic } from '../graph/mark/graphic';\n\nexport interface TreePathConfig {\n direction?: 'horizontal' | 'vertical' | 'LR' | 'RL' | 'TB' | 'BL' | 'radial';\n}\n\nexport const getHorizontalPath = (options: TreePathEncoderSpec) => {\n const curvature = options.curvature ?? 0.5;\n let x0 = options.x0;\n let x1 = options.x1;\n let y0 = options.y0;\n let y1 = options.y1;\n let cpx0 = x0 + curvature * (x1 - x0);\n let cpx1 = x1 + curvature * (x0 - x1);\n let formatter = (v: number) => v;\n\n if (options.round !== false) {\n x0 = Math.round(x0);\n x1 = Math.round(x1);\n y0 = Math.round(y0);\n y1 = Math.round(y1);\n cpx0 = Math.round(cpx0);\n cpx1 = Math.round(cpx1);\n formatter = Math.round;\n }\n const mainPath =\n options.pathType === 'line'\n ? `M${x0},${y0}L${x1},${y1}`\n : options.pathType === 'polyline'\n ? `M${x0},${y0}L${cpx0},${y0}L${cpx0},${y1}L${x1},${y1}`\n : `M${x0},${y0}C${cpx0},${y0},${cpx1},${y1},${x1},${y1}`;\n\n if (options.startArrow || options.endArrow) {\n const delta = x1 - x0;\n const hasLength = Math.abs(delta) > 1e-6;\n\n if (hasLength) {\n const arrowSize = options.arrowSize ?? 3;\n const sign = delta > 0 ? 1 : -1;\n\n const endArrowPath = options.endArrow\n ? `M${formatter(x1 - sign * arrowSize)},${formatter(y1 - arrowSize)}L${x1},${y1}L${formatter(\n x1 - sign * arrowSize\n )},${formatter(y1 + arrowSize)}`\n : '';\n const startArrowPath = options.startArrow\n ? `M${formatter(x0 + sign * arrowSize)},${formatter(y0 - arrowSize)}L${x0},${y0}L${formatter(\n x0 + sign * arrowSize\n )},${formatter(y0 + arrowSize)}`\n : '';\n\n return [startArrowPath, mainPath, endArrowPath];\n }\n }\n\n return ['', mainPath, ''];\n};\n\nexport const getVerticalPath = (options: TreePathEncoderSpec) => {\n const curvature = options.curvature ?? 0.5;\n let y0 = options.y0;\n let y1 = options.y1;\n let x0 = options.x0;\n let x1 = options.x1;\n let cpy0 = y0 + curvature * (y1 - y0);\n let cpy1 = y1 + curvature * (y0 - y1);\n let formatter = (v: number) => v;\n\n if (options.round !== false) {\n formatter = Math.round;\n y0 = Math.round(y0);\n y1 = Math.round(y1);\n x0 = Math.round(x0);\n x1 = Math.round(x1);\n cpy0 = Math.round(cpy0);\n cpy1 = Math.round(cpy1);\n }\n const mainPath =\n options.pathType === 'line'\n ? `M${x0},${y0}L${x1},${y1}`\n : options.pathType === 'polyline'\n ? `M${x0},${y0}L${x0},${cpy0}L${x1},${cpy0}L${x1},${y1}`\n : `M${x0},${y0}C${x0},${cpy0},${x1},${cpy1},${x1},${y1}`;\n\n if (options.startArrow || options.endArrow) {\n const delta = y1 - y0;\n const hasLength = Math.abs(delta) > 1e-6;\n\n if (hasLength) {\n const arrowSize = options.arrowSize ?? 3;\n const sign = delta > 0 ? 1 : -1;\n\n const endArrowPath = options.endArrow\n ? `M${formatter(x1 - arrowSize)},${formatter(y1 - sign * arrowSize)}L${x1},${formatter(y1)}L${formatter(\n x1 + arrowSize\n )},${formatter(y1 - sign * arrowSize)}`\n : '';\n const startArrowPath = options.startArrow\n ? `M${formatter(x0 + arrowSize)},${formatter(y0 + sign * arrowSize)}L${x0},${formatter(y0)}L${formatter(\n x0 + arrowSize\n )},${formatter(y0 + sign * arrowSize)}`\n : '';\n\n return [startArrowPath, mainPath, endArrowPath];\n }\n }\n\n return ['', mainPath, ''];\n};\n\nconst encoder = (encodeValues: TreePathEncoderSpec, datum: any, element: IElement, config: TreePathConfig) => {\n const direction = encodeValues.direction ?? config?.direction;\n const parsePath = ['vertical', 'TB', 'BT'].includes(direction) ? getVerticalPath : getHorizontalPath;\n\n const encodeChannels = Object.keys(encodeValues);\n // parse path when all required channels are included\n if (['x0', 'y0', 'x1', 'y1'].every(channel => encodeChannels.includes(channel))) {\n const [startArrowPath, mainPath, endArrowPath] = parsePath(encodeValues);\n\n return {\n main: {\n path: mainPath\n },\n startArrow: {\n path: startArrowPath\n },\n endArrow: {\n path: endArrowPath\n }\n };\n }\n\n return {};\n};\n\nconst treePathGrowIn: TypeAnimation<IElement> = (\n element: IElement,\n options: any,\n animationParameters: IAnimationParameters\n) => {\n const linkValues: TreePathEncoderSpec = {\n x0: element.getGraphicAttribute('x0', false),\n x1: element.getGraphicAttribute('x1', false),\n y0: element.getGraphicAttribute('y0', false),\n y1: element.getGraphicAttribute('y1', false),\n round: element.getGraphicAttribute('round', false),\n align: element.getGraphicAttribute('align', false),\n pathType: element.getGraphicAttribute('pathType', false),\n endArrow: element.getGraphicAttribute('endArrow', false),\n startArrow: element.getGraphicAttribute('startArrow', false)\n };\n // FIXME: undefined channel animation will cause vRender warning\n Object.keys(linkValues).forEach(key => {\n if (isNil(linkValues[key])) {\n delete linkValues[key];\n }\n });\n return {\n from: Object.assign({}, linkValues, { x1: linkValues.x0, y1: linkValues.y0 }),\n to: linkValues\n };\n};\n\nconst treePathGrowOut: TypeAnimation<IElement> = (\n element: IElement,\n options: any,\n animationParameters: IAnimationParameters\n) => {\n const linkValues: TreePathEncoderSpec = {\n x0: element.getGraphicAttribute('x0', true),\n x1: element.getGraphicAttribute('x1', true),\n y0: element.getGraphicAttribute('y0', true),\n y1: element.getGraphicAttribute('y1', true),\n round: element.getGraphicAttribute('round', true),\n align: element.getGraphicAttribute('align', true),\n pathType: element.getGraphicAttribute('pathType', true),\n endArrow: element.getGraphicAttribute('endArrow', true),\n startArrow: element.getGraphicAttribute('startArrow', true)\n };\n // FIXME: undefined channel animation will cause vRender warning\n Object.keys(linkValues).forEach(key => {\n if (isNil(linkValues[key])) {\n delete linkValues[key];\n }\n });\n return {\n from: linkValues,\n to: Object.assign({}, linkValues, { x1: linkValues.x0, y1: linkValues.y0 })\n };\n};\n\nconst treePathUpdate: TypeAnimation<IElement> = (\n element: IElement,\n options: any,\n animationParameters: IAnimationParameters\n) => {\n const bassLinkValues = {\n thickness: element.getGraphicAttribute('thickness', false),\n round: element.getGraphicAttribute('round', false),\n align: element.getGraphicAttribute('align', false),\n pathType: element.getGraphicAttribute('pathType', false),\n endArrow: element.getGraphicAttribute('endArrow', false),\n startArrow: element.getGraphicAttribute('startArrow', false)\n };\n // FIXME: undefined channel animation will cause vRender warning\n Object.keys(bassLinkValues).forEach(key => {\n if (isNil(bassLinkValues[key])) {\n delete bassLinkValues[key];\n }\n });\n const prevLinkValues: TreePathEncoderSpec = Object.assign(\n {\n x0: element.getGraphicAttribute('x0', true),\n x1: element.getGraphicAttribute('x1', true),\n y0: element.getGraphicAttribute('y0', true),\n y1: element.getGraphicAttribute('y1', true),\n ...bassLinkValues\n },\n bassLinkValues\n );\n const nextLinkValues: TreePathEncoderSpec = Object.assign(\n {\n x0: element.getGraphicAttribute('x0', false),\n x1: element.getGraphicAttribute('x1', false),\n y0: element.getGraphicAttribute('y0', false),\n y1: element.getGraphicAttribute('y1', false)\n },\n bassLinkValues\n );\n\n return {\n from: prevLinkValues,\n to: nextLinkValues\n };\n};\n\nexport const registerTreePathGlyph = () => {\n Factory.registerGlyph<TreePathEncoderSpec, TreePathConfig>('treePath', {\n main: 'path',\n startArrow: 'path',\n endArrow: 'path'\n })\n .registerFunctionEncoder(encoder)\n .registerChannelEncoder('startArrowStyle', (channel, encodeValue) => {\n return {\n startArrow: encodeValue\n };\n })\n .registerChannelEncoder('endArrowStyle', (channel, encodeValue) => {\n return {\n endArrow: encodeValue\n };\n })\n .registerDefaultEncoder(() => {\n return {\n startArrow: { zIndex: 1 },\n endArrow: { zIndex: 2 }\n };\n });\n Factory.registerAnimationType('treePathGrowIn', treePathGrowIn);\n Factory.registerAnimationType('treePathGrowOut', treePathGrowOut);\n Factory.registerAnimationType('treePathUpdate', treePathUpdate);\n registerGlyphGraphic();\n registerPathGraphic();\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/glyph/tree-path.ts"],"names":[],"mappings":"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","file":"tree-path.js","sourcesContent":["import type { IAnimationParameters, TypeAnimation, TreePathEncoderSpec } from '../types';\nimport type { IElement } from '../types/element';\nimport { Factory } from '../core/factory';\nimport { isNil } from '@visactor/vutils';\nimport { registerGlyphGraphic, registerPathGraphic } from '../graph/mark/graphic';\nimport { registerGlyphMark } from '../view/glyph';\n\nexport interface TreePathConfig {\n direction?: 'horizontal' | 'vertical' | 'LR' | 'RL' | 'TB' | 'BL' | 'radial';\n}\n\nexport const getHorizontalPath = (options: TreePathEncoderSpec) => {\n const curvature = options.curvature ?? 0.5;\n let x0 = options.x0;\n let x1 = options.x1;\n let y0 = options.y0;\n let y1 = options.y1;\n let cpx0 = x0 + curvature * (x1 - x0);\n let cpx1 = x1 + curvature * (x0 - x1);\n let formatter = (v: number) => v;\n\n if (options.round !== false) {\n x0 = Math.round(x0);\n x1 = Math.round(x1);\n y0 = Math.round(y0);\n y1 = Math.round(y1);\n cpx0 = Math.round(cpx0);\n cpx1 = Math.round(cpx1);\n formatter = Math.round;\n }\n const mainPath =\n options.pathType === 'line'\n ? `M${x0},${y0}L${x1},${y1}`\n : options.pathType === 'polyline'\n ? `M${x0},${y0}L${cpx0},${y0}L${cpx0},${y1}L${x1},${y1}`\n : `M${x0},${y0}C${cpx0},${y0},${cpx1},${y1},${x1},${y1}`;\n\n if (options.startArrow || options.endArrow) {\n const delta = x1 - x0;\n const hasLength = Math.abs(delta) > 1e-6;\n\n if (hasLength) {\n const arrowSize = options.arrowSize ?? 3;\n const sign = delta > 0 ? 1 : -1;\n\n const endArrowPath = options.endArrow\n ? `M${formatter(x1 - sign * arrowSize)},${formatter(y1 - arrowSize)}L${x1},${y1}L${formatter(\n x1 - sign * arrowSize\n )},${formatter(y1 + arrowSize)}`\n : '';\n const startArrowPath = options.startArrow\n ? `M${formatter(x0 + sign * arrowSize)},${formatter(y0 - arrowSize)}L${x0},${y0}L${formatter(\n x0 + sign * arrowSize\n )},${formatter(y0 + arrowSize)}`\n : '';\n\n return [startArrowPath, mainPath, endArrowPath];\n }\n }\n\n return ['', mainPath, ''];\n};\n\nexport const getVerticalPath = (options: TreePathEncoderSpec) => {\n const curvature = options.curvature ?? 0.5;\n let y0 = options.y0;\n let y1 = options.y1;\n let x0 = options.x0;\n let x1 = options.x1;\n let cpy0 = y0 + curvature * (y1 - y0);\n let cpy1 = y1 + curvature * (y0 - y1);\n let formatter = (v: number) => v;\n\n if (options.round !== false) {\n formatter = Math.round;\n y0 = Math.round(y0);\n y1 = Math.round(y1);\n x0 = Math.round(x0);\n x1 = Math.round(x1);\n cpy0 = Math.round(cpy0);\n cpy1 = Math.round(cpy1);\n }\n const mainPath =\n options.pathType === 'line'\n ? `M${x0},${y0}L${x1},${y1}`\n : options.pathType === 'polyline'\n ? `M${x0},${y0}L${x0},${cpy0}L${x1},${cpy0}L${x1},${y1}`\n : `M${x0},${y0}C${x0},${cpy0},${x1},${cpy1},${x1},${y1}`;\n\n if (options.startArrow || options.endArrow) {\n const delta = y1 - y0;\n const hasLength = Math.abs(delta) > 1e-6;\n\n if (hasLength) {\n const arrowSize = options.arrowSize ?? 3;\n const sign = delta > 0 ? 1 : -1;\n\n const endArrowPath = options.endArrow\n ? `M${formatter(x1 - arrowSize)},${formatter(y1 - sign * arrowSize)}L${x1},${formatter(y1)}L${formatter(\n x1 + arrowSize\n )},${formatter(y1 - sign * arrowSize)}`\n : '';\n const startArrowPath = options.startArrow\n ? `M${formatter(x0 + arrowSize)},${formatter(y0 + sign * arrowSize)}L${x0},${formatter(y0)}L${formatter(\n x0 + arrowSize\n )},${formatter(y0 + sign * arrowSize)}`\n : '';\n\n return [startArrowPath, mainPath, endArrowPath];\n }\n }\n\n return ['', mainPath, ''];\n};\n\nconst encoder = (encodeValues: TreePathEncoderSpec, datum: any, element: IElement, config: TreePathConfig) => {\n const direction = encodeValues.direction ?? config?.direction;\n const parsePath = ['vertical', 'TB', 'BT'].includes(direction) ? getVerticalPath : getHorizontalPath;\n\n const encodeChannels = Object.keys(encodeValues);\n // parse path when all required channels are included\n if (['x0', 'y0', 'x1', 'y1'].every(channel => encodeChannels.includes(channel))) {\n const [startArrowPath, mainPath, endArrowPath] = parsePath(encodeValues);\n\n return {\n main: {\n path: mainPath\n },\n startArrow: {\n path: startArrowPath\n },\n endArrow: {\n path: endArrowPath\n }\n };\n }\n\n return {};\n};\n\nconst treePathGrowIn: TypeAnimation<IElement> = (\n element: IElement,\n options: any,\n animationParameters: IAnimationParameters\n) => {\n const linkValues: TreePathEncoderSpec = {\n x0: element.getGraphicAttribute('x0', false),\n x1: element.getGraphicAttribute('x1', false),\n y0: element.getGraphicAttribute('y0', false),\n y1: element.getGraphicAttribute('y1', false),\n round: element.getGraphicAttribute('round', false),\n align: element.getGraphicAttribute('align', false),\n pathType: element.getGraphicAttribute('pathType', false),\n endArrow: element.getGraphicAttribute('endArrow', false),\n startArrow: element.getGraphicAttribute('startArrow', false)\n };\n // FIXME: undefined channel animation will cause vRender warning\n Object.keys(linkValues).forEach(key => {\n if (isNil(linkValues[key])) {\n delete linkValues[key];\n }\n });\n return {\n from: Object.assign({}, linkValues, { x1: linkValues.x0, y1: linkValues.y0 }),\n to: linkValues\n };\n};\n\nconst treePathGrowOut: TypeAnimation<IElement> = (\n element: IElement,\n options: any,\n animationParameters: IAnimationParameters\n) => {\n const linkValues: TreePathEncoderSpec = {\n x0: element.getGraphicAttribute('x0', true),\n x1: element.getGraphicAttribute('x1', true),\n y0: element.getGraphicAttribute('y0', true),\n y1: element.getGraphicAttribute('y1', true),\n round: element.getGraphicAttribute('round', true),\n align: element.getGraphicAttribute('align', true),\n pathType: element.getGraphicAttribute('pathType', true),\n endArrow: element.getGraphicAttribute('endArrow', true),\n startArrow: element.getGraphicAttribute('startArrow', true)\n };\n // FIXME: undefined channel animation will cause vRender warning\n Object.keys(linkValues).forEach(key => {\n if (isNil(linkValues[key])) {\n delete linkValues[key];\n }\n });\n return {\n from: linkValues,\n to: Object.assign({}, linkValues, { x1: linkValues.x0, y1: linkValues.y0 })\n };\n};\n\nconst treePathUpdate: TypeAnimation<IElement> = (\n element: IElement,\n options: any,\n animationParameters: IAnimationParameters\n) => {\n const bassLinkValues = {\n thickness: element.getGraphicAttribute('thickness', false),\n round: element.getGraphicAttribute('round', false),\n align: element.getGraphicAttribute('align', false),\n pathType: element.getGraphicAttribute('pathType', false),\n endArrow: element.getGraphicAttribute('endArrow', false),\n startArrow: element.getGraphicAttribute('startArrow', false)\n };\n // FIXME: undefined channel animation will cause vRender warning\n Object.keys(bassLinkValues).forEach(key => {\n if (isNil(bassLinkValues[key])) {\n delete bassLinkValues[key];\n }\n });\n const prevLinkValues: TreePathEncoderSpec = Object.assign(\n {\n x0: element.getGraphicAttribute('x0', true),\n x1: element.getGraphicAttribute('x1', true),\n y0: element.getGraphicAttribute('y0', true),\n y1: element.getGraphicAttribute('y1', true),\n ...bassLinkValues\n },\n bassLinkValues\n );\n const nextLinkValues: TreePathEncoderSpec = Object.assign(\n {\n x0: element.getGraphicAttribute('x0', false),\n x1: element.getGraphicAttribute('x1', false),\n y0: element.getGraphicAttribute('y0', false),\n y1: element.getGraphicAttribute('y1', false)\n },\n bassLinkValues\n );\n\n return {\n from: prevLinkValues,\n to: nextLinkValues\n };\n};\n\nexport const registerTreePathGlyph = () => {\n Factory.registerGlyph<TreePathEncoderSpec, TreePathConfig>('treePath', {\n main: 'path',\n startArrow: 'path',\n endArrow: 'path'\n })\n .registerFunctionEncoder(encoder)\n .registerChannelEncoder('startArrowStyle', (channel, encodeValue) => {\n return {\n startArrow: encodeValue\n };\n })\n .registerChannelEncoder('endArrowStyle', (channel, encodeValue) => {\n return {\n endArrow: encodeValue\n };\n })\n .registerDefaultEncoder(() => {\n return {\n startArrow: { zIndex: 1 },\n endArrow: { zIndex: 2 }\n };\n });\n Factory.registerAnimationType('treePathGrowIn', treePathGrowIn);\n Factory.registerAnimationType('treePathGrowOut', treePathGrowOut);\n Factory.registerAnimationType('treePathUpdate', treePathUpdate);\n registerGlyphMark();\n registerGlyphGraphic();\n registerPathGraphic();\n};\n"]}
|
package/es/glyph/violin.js
CHANGED
|
@@ -6,6 +6,8 @@ import { registerGlyphGraphic, registerPolygonGraphic, registerRectGraphic, regi
|
|
|
6
6
|
|
|
7
7
|
import { isHorizontal } from "@visactor/vgrammar-util";
|
|
8
8
|
|
|
9
|
+
import { registerGlyphMark } from "../view/glyph";
|
|
10
|
+
|
|
9
11
|
const defaultDensitySize = 30, computeViolinPoints = (density, densitySize, scale, config) => {
|
|
10
12
|
if (!density || 0 === density.length) return [];
|
|
11
13
|
const maxDensity = density.reduce(((max, d) => Math.max(max, d[1])), 0);
|
|
@@ -162,7 +164,7 @@ export const registerViolinGlyph = () => {
|
|
|
162
164
|
fill: "#FFFFFF",
|
|
163
165
|
visible: !1
|
|
164
166
|
}
|
|
165
|
-
}))),
|
|
166
|
-
registerSymbolGraphic();
|
|
167
|
+
}))), registerGlyphMark(), registerGlyphGraphic(), registerPolygonGraphic(), registerRuleGraphic(),
|
|
168
|
+
registerRectGraphic(), registerSymbolGraphic();
|
|
167
169
|
};
|
|
168
170
|
//# sourceMappingURL=violin.js.map
|