@visactor/vgrammar-core 0.14.0-alpha.1 → 0.14.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/component/axis.d.ts +0 -2
- package/cjs/component/axis.js +1 -15
- package/cjs/component/axis.js.map +1 -1
- package/cjs/component/grid.d.ts +0 -2
- package/cjs/component/grid.js +1 -15
- package/cjs/component/grid.js.map +1 -1
- package/cjs/component/index.d.ts +2 -2
- package/cjs/component/index.js +1 -21
- package/cjs/component/index.js.map +1 -1
- package/cjs/core/factory.d.ts +1 -8
- package/cjs/core/factory.js +1 -8
- 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 +2 -3
- 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 +2 -3
- package/cjs/glyph/wave.js.map +1 -1
- package/cjs/graph/animation/animation/fade.js +4 -4
- 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.js +6 -1
- package/cjs/graph/animation/animator.js.map +1 -1
- package/cjs/graph/animation/morph.d.ts +12 -2
- package/cjs/graph/animation/morph.js +163 -76
- package/cjs/graph/animation/morph.js.map +1 -1
- package/cjs/graph/attributes/line.js.map +1 -1
- package/cjs/graph/canvas-renderer.d.ts +1 -1
- package/cjs/graph/canvas-renderer.js +4 -4
- package/cjs/graph/canvas-renderer.js.map +1 -1
- package/cjs/graph/element.d.ts +2 -1
- package/cjs/graph/element.js +20 -19
- package/cjs/graph/element.js.map +1 -1
- package/cjs/graph/glyph-element.js +3 -4
- package/cjs/graph/glyph-element.js.map +1 -1
- package/cjs/graph/layout/layout.d.ts +0 -1
- package/cjs/graph/layout/layout.js +2 -8
- package/cjs/graph/layout/layout.js.map +1 -1
- package/cjs/graph/mark/graphic.js +8 -14
- package/cjs/graph/mark/graphic.js.map +1 -1
- package/cjs/graph/util/element.d.ts +2 -0
- package/cjs/graph/util/element.js +10 -0
- package/cjs/graph/util/element.js.map +1 -0
- package/cjs/graph/util/point.js +26 -10
- package/cjs/graph/util/point.js.map +1 -1
- package/cjs/index.d.ts +1 -8
- package/cjs/index.js +2 -66
- package/cjs/index.js.map +1 -1
- package/cjs/interactions/brush-base.js +2 -1
- package/cjs/interactions/brush-filter.js +1 -2
- package/cjs/interactions/fish-eye.js +2 -1
- package/cjs/interactions/index.js +1 -2
- package/cjs/interactions/tooltip.js +1 -1
- package/cjs/parse/event.d.ts +2 -0
- package/cjs/parse/event.js +10 -4
- package/cjs/parse/event.js.map +1 -1
- package/cjs/parse/util.js.map +1 -1
- package/cjs/types/animate.d.ts +1 -0
- 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/morph.d.ts +2 -1
- package/cjs/types/morph.js.map +1 -1
- package/cjs/types/renderer.d.ts +1 -6
- package/cjs/types/renderer.js.map +1 -1
- package/cjs/view/View.d.ts +6 -3
- package/cjs/view/View.js +105 -52
- package/cjs/view/View.js.map +1 -1
- package/cjs/view/animate.js +1 -2
- package/cjs/view/animate.js.map +1 -1
- package/cjs/view/constants.d.ts +0 -2
- package/cjs/view/constants.js +2 -3
- package/cjs/view/constants.js.map +1 -1
- package/cjs/view/events.d.ts +1 -0
- package/cjs/view/events.js +17 -3
- package/cjs/view/events.js.map +1 -1
- package/cjs/view/glyph.d.ts +0 -4
- package/cjs/view/glyph.js +3 -12
- 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 +3 -3
- package/cjs/view/group.js.map +1 -1
- package/cjs/view/mark.d.ts +0 -2
- package/cjs/view/mark.js +28 -31
- package/cjs/view/mark.js.map +1 -1
- package/es/component/axis.d.ts +0 -2
- package/es/component/axis.js +0 -10
- package/es/component/axis.js.map +1 -1
- package/es/component/grid.d.ts +0 -2
- package/es/component/grid.js +0 -10
- 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/core/factory.d.ts +1 -8
- package/es/core/factory.js +1 -8
- package/es/core/factory.js.map +1 -1
- package/es/glyph/boxplot.js +2 -4
- package/es/glyph/boxplot.js.map +1 -1
- package/es/glyph/link-path.js +2 -4
- package/es/glyph/link-path.js.map +1 -1
- package/es/glyph/ripple.js +1 -3
- package/es/glyph/ripple.js.map +1 -1
- package/es/glyph/tree-path.js +2 -4
- package/es/glyph/tree-path.js.map +1 -1
- package/es/glyph/violin.js +2 -4
- package/es/glyph/violin.js.map +1 -1
- package/es/glyph/wave.js +1 -3
- package/es/glyph/wave.js.map +1 -1
- package/es/graph/animation/animation/fade.js +4 -4
- 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 +3 -1
- package/es/graph/animation/animation/update.js.map +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 +12 -2
- package/es/graph/animation/morph.js +159 -72
- package/es/graph/animation/morph.js.map +1 -1
- package/es/graph/attributes/line.js.map +1 -1
- package/es/graph/canvas-renderer.d.ts +1 -1
- package/es/graph/canvas-renderer.js +5 -5
- package/es/graph/canvas-renderer.js.map +1 -1
- package/es/graph/element.d.ts +2 -1
- package/es/graph/element.js +20 -17
- package/es/graph/element.js.map +1 -1
- package/es/graph/glyph-element.js +5 -3
- package/es/graph/glyph-element.js.map +1 -1
- package/es/graph/layout/layout.d.ts +0 -1
- package/es/graph/layout/layout.js +0 -6
- package/es/graph/layout/layout.js.map +1 -1
- package/es/graph/mark/graphic.js +7 -13
- package/es/graph/mark/graphic.js.map +1 -1
- package/es/graph/util/element.d.ts +2 -0
- package/es/graph/util/element.js +8 -0
- package/es/graph/util/element.js.map +1 -0
- package/es/graph/util/point.js +26 -10
- package/es/graph/util/point.js.map +1 -1
- package/es/index.d.ts +1 -8
- package/es/index.js +1 -29
- package/es/index.js.map +1 -1
- package/es/interactions/element-active.js +2 -1
- package/es/interactions/element-highlight-by-group.js +1 -2
- package/es/interactions/fish-eye.js +1 -1
- package/es/parse/event.d.ts +2 -0
- package/es/parse/event.js +7 -3
- package/es/parse/event.js.map +1 -1
- package/es/parse/option.js +2 -1
- package/es/parse/scale.js +1 -2
- package/es/parse/util.js.map +1 -1
- package/es/types/animate.d.ts +1 -0
- 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/morph.d.ts +2 -1
- package/es/types/morph.js.map +1 -1
- package/es/types/renderer.d.ts +1 -6
- package/es/types/renderer.js.map +1 -1
- package/es/view/View.d.ts +6 -3
- package/es/view/View.js +114 -53
- package/es/view/View.js.map +1 -1
- package/es/view/animate.js +1 -2
- package/es/view/animate.js.map +1 -1
- package/es/view/constants.d.ts +0 -2
- package/es/view/constants.js +0 -4
- package/es/view/constants.js.map +1 -1
- package/es/view/events.d.ts +1 -0
- package/es/view/events.js +15 -1
- package/es/view/events.js.map +1 -1
- package/es/view/glyph.d.ts +0 -4
- package/es/view/glyph.js +0 -11
- 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 +4 -2
- package/es/view/group.js.map +1 -1
- package/es/view/mark.d.ts +0 -2
- package/es/view/mark.js +30 -32
- package/es/view/mark.js.map +1 -1
- package/package.json +12 -12
- package/cjs/graph/view-diff.d.ts +0 -8
- package/cjs/graph/view-diff.js +0 -93
- package/cjs/graph/view-diff.js.map +0 -1
- package/cjs/view/mark-animate-mixin.d.ts +0 -1
- package/cjs/view/mark-animate-mixin.js +0 -29
- package/cjs/view/mark-animate-mixin.js.map +0 -1
- package/cjs/view/view-animate-mixin.d.ts +0 -1
- package/cjs/view/view-animate-mixin.js +0 -26
- package/cjs/view/view-animate-mixin.js.map +0 -1
- package/cjs/view/view-event-mixin.d.ts +0 -1
- package/cjs/view/view-event-mixin.js +0 -92
- package/cjs/view/view-event-mixin.js.map +0 -1
- package/cjs/view/view-morph-mixin.d.ts +0 -1
- package/cjs/view/view-morph-mixin.js +0 -32
- package/cjs/view/view-morph-mixin.js.map +0 -1
- package/es/graph/view-diff.d.ts +0 -8
- package/es/graph/view-diff.js +0 -89
- package/es/graph/view-diff.js.map +0 -1
- package/es/view/mark-animate-mixin.d.ts +0 -1
- package/es/view/mark-animate-mixin.js +0 -25
- package/es/view/mark-animate-mixin.js.map +0 -1
- package/es/view/view-animate-mixin.d.ts +0 -1
- package/es/view/view-animate-mixin.js +0 -16
- package/es/view/view-animate-mixin.js.map +0 -1
- package/es/view/view-event-mixin.d.ts +0 -1
- package/es/view/view-event-mixin.js +0 -90
- package/es/view/view-event-mixin.js.map +0 -1
- package/es/view/view-morph-mixin.d.ts +0 -1
- package/es/view/view-morph-mixin.js +0 -22
- package/es/view/view-morph-mixin.js.map +0 -1
package/es/component/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { registerAxis
|
|
1
|
+
export { registerAxis } from "./axis";
|
|
2
2
|
|
|
3
3
|
export { registerLegend } from "./legend";
|
|
4
4
|
|
|
@@ -12,7 +12,7 @@ export { registerPlayer } from "./player";
|
|
|
12
12
|
|
|
13
13
|
export { registerTitle } from "./title";
|
|
14
14
|
|
|
15
|
-
export { registerGrid
|
|
15
|
+
export { registerGrid } from "./grid";
|
|
16
16
|
|
|
17
17
|
export { registerScrollbar } from "./scrollbar";
|
|
18
18
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/component/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"sources":["../src/component/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC","file":"index.js","sourcesContent":["export { registerAxis } from './axis';\nexport { registerLegend } from './legend';\nexport { registerSlider } from './slider';\nexport { registerLabel } from './label';\nexport { registerDataZoom } from './datazoom';\nexport { registerPlayer } from './player';\nexport { registerTitle } from './title';\nexport { registerGrid } from './grid';\nexport { registerScrollbar } from './scrollbar';\n"]}
|
package/es/core/factory.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { IGraphic, IGraphicAttribute } from '@visactor/vrender-core';
|
|
2
|
-
import type { GlyphChannelEncoder, GlyphDefaultEncoder, IComponentConstructor, IElement, IGlyphElement, IGlyphMeta, IGrammarBaseConstructor, IGroupMark, IInteractionConstructor,
|
|
2
|
+
import type { GlyphChannelEncoder, GlyphDefaultEncoder, IComponentConstructor, IElement, IGlyphElement, IGlyphMeta, IGrammarBaseConstructor, IGroupMark, IInteractionConstructor, IMark, IMarkConstructor, IPlotMarkConstructor, ISemanticMark, ITransform, IView, MarkType, TypeAnimation } from '../types';
|
|
3
3
|
import type { ComponentOptions } from '@visactor/vrender-components';
|
|
4
4
|
export declare class Factory {
|
|
5
5
|
private static _plotMarks;
|
|
@@ -12,14 +12,11 @@ export declare class Factory {
|
|
|
12
12
|
private static _animations;
|
|
13
13
|
private static _interactions;
|
|
14
14
|
private static _graphics;
|
|
15
|
-
private static defaultLayout;
|
|
16
|
-
private static _stageEventPlugins;
|
|
17
15
|
static registerPlotMarks(key: string, mark: IPlotMarkConstructor): void;
|
|
18
16
|
static createPlotMark(type: string, id?: string): ISemanticMark<any, any> | null;
|
|
19
17
|
static registerMark(key: string, mark: IMarkConstructor): void;
|
|
20
18
|
static createMark(type: string, view: IView, group?: IGroupMark): IMark | null;
|
|
21
19
|
static hasMark(type: string): boolean;
|
|
22
|
-
static getMark(type: string): IMarkConstructor;
|
|
23
20
|
static registerComponent(key: string, component: IComponentConstructor): void;
|
|
24
21
|
static createComponent(componentType: string, view: IView, group?: IGroupMark, mode?: '2d' | '3d'): import("../types").IComponent;
|
|
25
22
|
static hasComponent(componentType: string): boolean;
|
|
@@ -48,8 +45,4 @@ export declare class Factory {
|
|
|
48
45
|
static registerGraphic: (graphicType: string, creator: (attributes: IGraphicAttribute) => IGraphic) => void;
|
|
49
46
|
static getGraphicType: (graphicType: string) => (attributes: IGraphicAttribute) => IGraphic;
|
|
50
47
|
static createGraphic: (graphicType: string, attributes?: IGraphicAttribute) => IGraphic<Partial<IGraphicAttribute>>;
|
|
51
|
-
static registerDefaultLayout: (layout: (marks: IMark[], options: ILayoutOptions, view: IView) => void) => void;
|
|
52
|
-
static getDefaultLayout: () => (marks: IMark[], options: ILayoutOptions, view: IView) => void;
|
|
53
|
-
static registerStageEventPlugin: (type: string, Plugin: IStageEventPlugin<any>) => void;
|
|
54
|
-
static getStageEventPlugin: (type: string) => IStageEventPlugin<any>;
|
|
55
48
|
}
|
package/es/core/factory.js
CHANGED
|
@@ -18,9 +18,6 @@ export class Factory {
|
|
|
18
18
|
static hasMark(type) {
|
|
19
19
|
return !!Factory._marks[type];
|
|
20
20
|
}
|
|
21
|
-
static getMark(type) {
|
|
22
|
-
return Factory._marks[type];
|
|
23
|
-
}
|
|
24
21
|
static registerComponent(key, component) {
|
|
25
22
|
Factory._components[key] = component;
|
|
26
23
|
}
|
|
@@ -91,9 +88,5 @@ Factory.registerInteraction = (interactionType, interaction) => {
|
|
|
91
88
|
}, Factory.getGraphicType = graphicType => Factory._graphics[graphicType], Factory.createGraphic = (graphicType, attributes) => {
|
|
92
89
|
const creator = Factory._graphics[graphicType];
|
|
93
90
|
return creator ? creator(attributes) : null;
|
|
94
|
-
}
|
|
95
|
-
Factory.defaultLayout = layout;
|
|
96
|
-
}, Factory.getDefaultLayout = () => Factory.defaultLayout, Factory.registerStageEventPlugin = (type, Plugin) => {
|
|
97
|
-
Factory._stageEventPlugins[type] = Plugin;
|
|
98
|
-
}, Factory.getStageEventPlugin = type => Factory._stageEventPlugins[type];
|
|
91
|
+
};
|
|
99
92
|
//# sourceMappingURL=factory.js.map
|
package/es/core/factory.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/factory.ts"],"names":[],"mappings":"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","file":"factory.js","sourcesContent":["import type { IGraphic, IGraphicAttribute } from '@visactor/vrender-core';\nimport type {\n GlyphChannelEncoder,\n GlyphDefaultEncoder,\n IComponentConstructor,\n IElement,\n IGlyphElement,\n IGlyphMeta,\n IGrammarBaseConstructor,\n IGroupMark,\n IInteractionConstructor,\n ILayoutOptions,\n IMark,\n IMarkConstructor,\n IPlotMarkConstructor,\n ISemanticMark,\n IStageEventPlugin,\n ITransform,\n IView,\n MarkType,\n TypeAnimation\n} from '../types';\nimport { GlyphMeta } from '../view/glyph-meta';\nimport type { ComponentOptions } from '@visactor/vrender-components';\n\nexport class Factory {\n private static _plotMarks: Record<string, IPlotMarkConstructor> = {};\n private static _marks: Record<string, IMarkConstructor> = {};\n private static _components: Record<string, IComponentConstructor> = {};\n private static _graphicComponents: Record<string, (attrs: any, options?: ComponentOptions) => IGraphic> = {};\n private static _transforms: Record<string, ITransform> = {};\n private static _grammars: Record<string, { grammarClass: IGrammarBaseConstructor; specKey: string }> = {};\n private static _glyphs: Record<string, IGlyphMeta<any, any>> = {};\n private static _animations: Record<string, TypeAnimation<IGlyphElement> | TypeAnimation<IElement>> = {};\n private static _interactions: Record<string, IInteractionConstructor> = {};\n private static _graphics: Record<string, (attributes: IGraphicAttribute) => IGraphic> = {};\n private static defaultLayout: (marks: IMark[], options: ILayoutOptions, view: IView) => void;\n private static _stageEventPlugins: Record<string, IStageEventPlugin<any>>;\n\n static registerPlotMarks(key: string, mark: IPlotMarkConstructor) {\n Factory._plotMarks[key] = mark;\n }\n\n static createPlotMark(type: string, id?: string): ISemanticMark<any, any> | null {\n if (!Factory._plotMarks[type]) {\n return null;\n }\n const MarkConstructor = Factory._plotMarks[type];\n return new MarkConstructor(id);\n }\n\n static registerMark(key: string, mark: IMarkConstructor) {\n Factory._marks[key] = mark;\n }\n\n static createMark(type: string, view: IView, group?: IGroupMark): IMark | null {\n if (!Factory._marks[type]) {\n return null;\n }\n const MarkConstructor = Factory._marks[type];\n return new MarkConstructor(view, type, group);\n }\n\n static hasMark(type: string) {\n return !!Factory._marks[type];\n }\n\n static getMark(type: string) {\n return Factory._marks[type];\n }\n\n static registerComponent(key: string, component: IComponentConstructor) {\n Factory._components[key] = component;\n }\n\n static createComponent(componentType: string, view: IView, group?: IGroupMark, mode?: '2d' | '3d') {\n const Ctor = Factory._components[componentType];\n if (!Ctor) {\n return null;\n }\n\n return new Ctor(view, group, mode);\n }\n\n static hasComponent(componentType: string) {\n return !!Factory._components[componentType];\n }\n\n static registerGraphicComponent(key: string, creator: (attrs: any, options?: ComponentOptions) => IGraphic) {\n Factory._graphicComponents[key] = creator;\n }\n\n static createGraphicComponent(componentType: string, attrs: any, options?: ComponentOptions) {\n const compCreator = Factory._graphicComponents[componentType];\n\n if (!compCreator) {\n return null;\n }\n\n return compCreator(attrs, options);\n }\n\n static registerTransform(type: string, transform: Omit<ITransform, 'type'>, isBuiltIn?: boolean) {\n Factory._transforms[type] = Object.assign(transform, { type, isBuiltIn: !!isBuiltIn });\n }\n\n static getTransform(type: string) {\n return Factory._transforms[type];\n }\n\n static unregisterRuntimeTransforms() {\n Object.keys(Factory._transforms).forEach(type => {\n if (Factory._transforms[type] && !Factory._transforms[type].isBuiltIn) {\n Factory._transforms[type] = null;\n }\n });\n }\n\n static registerGrammar(type: string, grammarClass: IGrammarBaseConstructor, specKey?: string) {\n Factory._grammars[type] = {\n grammarClass: grammarClass,\n specKey: specKey ?? type\n };\n }\n\n static createGrammar(type: string, view: IView, grammarType: string) {\n const Ctor = Factory._grammars[type]?.grammarClass;\n\n if (!Ctor) {\n return null;\n }\n\n return new Ctor(view, grammarType);\n }\n\n static getGrammars() {\n return this._grammars;\n }\n\n static registerGlyph = <EncodeValuesType = any, GlyphConfigType = any>(\n glyphType: string,\n marks: { [markName: string]: MarkType },\n encoders?: { [markName: string]: GlyphChannelEncoder<any, EncodeValuesType, GlyphConfigType> },\n defaultEncoder?: GlyphDefaultEncoder,\n progressiveChannels?: string | string[]\n ): IGlyphMeta<EncodeValuesType, GlyphConfigType> => {\n Factory._glyphs[glyphType] = new GlyphMeta<EncodeValuesType, GlyphConfigType>(\n marks,\n encoders,\n defaultEncoder,\n progressiveChannels\n );\n return Factory._glyphs[glyphType];\n };\n\n static getGlyph(glyphType: string): IGlyphMeta {\n return Factory._glyphs[glyphType];\n }\n\n static registerAnimationType = (\n animationType: string,\n animation: TypeAnimation<IGlyphElement> | TypeAnimation<IElement>\n ): void => {\n Factory._animations[animationType] = animation;\n };\n\n static getAnimationType = (animationType: string) => {\n return Factory._animations[animationType];\n };\n\n static registerInteraction = (interactionType: string, interaction: IInteractionConstructor) => {\n Factory._interactions[interactionType] = interaction;\n };\n\n static createInteraction(interactionType: string, view: IView, options?: any) {\n const Ctor = Factory._interactions[interactionType];\n if (!Ctor) {\n return null;\n }\n\n return new Ctor(view, options);\n }\n\n static hasInteraction(interactionType: string) {\n return !!Factory._interactions[interactionType];\n }\n\n static registerGraphic = (graphicType: string, creator: (attributes: IGraphicAttribute) => IGraphic) => {\n Factory._graphics[graphicType] = creator;\n };\n\n static getGraphicType = (graphicType: string) => {\n return Factory._graphics[graphicType];\n };\n\n static createGraphic = (graphicType: string, attributes?: IGraphicAttribute) => {\n const creator = Factory._graphics[graphicType];\n if (!creator) {\n return null;\n }\n return creator(attributes);\n };\n\n static registerDefaultLayout = (layout: (marks: IMark[], options: ILayoutOptions, view: IView) => void) => {\n Factory.defaultLayout = layout;\n };\n\n static getDefaultLayout = () => {\n return Factory.defaultLayout;\n };\n\n static registerStageEventPlugin = (type: string, Plugin: IStageEventPlugin<any>) => {\n Factory._stageEventPlugins[type] = Plugin;\n };\n\n static getStageEventPlugin = (type: string) => {\n return Factory._stageEventPlugins[type];\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/core/factory.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,MAAM,OAAO,OAAO;IAYlB,MAAM,CAAC,iBAAiB,CAAC,GAAW,EAAE,IAA0B;QAC9D,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IACjC,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,IAAY,EAAE,EAAW;QAC7C,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;YAC7B,OAAO,IAAI,CAAC;SACb;QACD,MAAM,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACjD,OAAO,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,GAAW,EAAE,IAAsB;QACrD,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,IAAY,EAAE,IAAW,EAAE,KAAkB;QAC7D,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YACzB,OAAO,IAAI,CAAC;SACb;QACD,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7C,OAAO,IAAI,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,IAAY;QACzB,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,GAAW,EAAE,SAAgC;QACpE,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,aAAqB,EAAE,IAAW,EAAE,KAAkB,EAAE,IAAkB;QAC/F,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,IAAI,CAAC;SACb;QAED,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,aAAqB;QACvC,OAAO,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,wBAAwB,CAAC,GAAW,EAAE,OAA6D;QACxG,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;IAC5C,CAAC;IAED,MAAM,CAAC,sBAAsB,CAAC,aAAqB,EAAE,KAAU,EAAE,OAA0B;QACzF,MAAM,WAAW,GAAG,OAAO,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;QAE9D,IAAI,CAAC,WAAW,EAAE;YAChB,OAAO,IAAI,CAAC;SACb;QAED,OAAO,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,IAAY,EAAE,SAAmC,EAAE,SAAmB;QAC7F,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IACzF,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,IAAY;QAC9B,OAAO,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,2BAA2B;QAChC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC9C,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE;gBACrE,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;aAClC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,IAAY,EAAE,YAAqC,EAAE,OAAgB;QAC1F,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG;YACxB,YAAY,EAAE,YAAY;YAC1B,OAAO,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,IAAI;SACzB,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,IAAY,EAAE,IAAW,EAAE,WAAmB;;QACjE,MAAM,IAAI,GAAG,MAAA,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,0CAAE,YAAY,CAAC;QAEnD,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,IAAI,CAAC;SACb;QAED,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAkBD,MAAM,CAAC,QAAQ,CAAC,SAAiB;QAC/B,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAiBD,MAAM,CAAC,iBAAiB,CAAC,eAAuB,EAAE,IAAW,EAAE,OAAa;QAC1E,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,IAAI,CAAC;SACb;QAED,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,eAAuB;QAC3C,OAAO,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;IAClD,CAAC;;AAzJc,kBAAU,GAAyC,EAAE,CAAC;AACtD,cAAM,GAAqC,EAAE,CAAC;AAC9C,mBAAW,GAA0C,EAAE,CAAC;AACxD,0BAAkB,GAAyE,EAAE,CAAC;AAC9F,mBAAW,GAA+B,EAAE,CAAC;AAC7C,iBAAS,GAA+E,EAAE,CAAC;AAC3F,eAAO,GAAyC,EAAE,CAAC;AACnD,mBAAW,GAA2E,EAAE,CAAC;AACzF,qBAAa,GAA4C,EAAE,CAAC;AAC5D,iBAAS,GAAgE,EAAE,CAAC;AAkGpF,qBAAa,GAAG,CACrB,SAAiB,EACjB,KAAuC,EACvC,QAA8F,EAC9F,cAAoC,EACpC,mBAAuC,EACQ,EAAE;IACjD,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,SAAS,CACxC,KAAK,EACL,QAAQ,EACR,cAAc,EACd,mBAAmB,CACpB,CAAC;IACF,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACpC,CAAC,CAAC;AAMK,6BAAqB,GAAG,CAC7B,aAAqB,EACrB,SAAiE,EAC3D,EAAE;IACR,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC;AACjD,CAAC,CAAC;AAEK,wBAAgB,GAAG,CAAC,aAAqB,EAAE,EAAE;IAClD,OAAO,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AAC5C,CAAC,CAAC;AAEK,2BAAmB,GAAG,CAAC,eAAuB,EAAE,WAAoC,EAAE,EAAE;IAC7F,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC,GAAG,WAAW,CAAC;AACvD,CAAC,CAAC;AAeK,uBAAe,GAAG,CAAC,WAAmB,EAAE,OAAoD,EAAE,EAAE;IACrG,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC;AAC3C,CAAC,CAAC;AAEK,sBAAc,GAAG,CAAC,WAAmB,EAAE,EAAE;IAC9C,OAAO,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;AACxC,CAAC,CAAC;AAEK,qBAAa,GAAG,CAAC,WAAmB,EAAE,UAA8B,EAAE,EAAE;IAC7E,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC/C,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO,IAAI,CAAC;KACb;IACD,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC;AAC7B,CAAC,CAAC","file":"factory.js","sourcesContent":["import type { IGraphic, IGraphicAttribute } from '@visactor/vrender-core';\nimport type {\n GlyphChannelEncoder,\n GlyphDefaultEncoder,\n IComponentConstructor,\n IElement,\n IGlyphElement,\n IGlyphMeta,\n IGrammarBaseConstructor,\n IGroupMark,\n IInteractionConstructor,\n IMark,\n IMarkConstructor,\n IPlotMarkConstructor,\n ISemanticMark,\n ITransform,\n IView,\n MarkType,\n TypeAnimation\n} from '../types';\nimport { GlyphMeta } from '../view/glyph-meta';\nimport type { ComponentOptions } from '@visactor/vrender-components';\n\nexport class Factory {\n private static _plotMarks: Record<string, IPlotMarkConstructor> = {};\n private static _marks: Record<string, IMarkConstructor> = {};\n private static _components: Record<string, IComponentConstructor> = {};\n private static _graphicComponents: Record<string, (attrs: any, options?: ComponentOptions) => IGraphic> = {};\n private static _transforms: Record<string, ITransform> = {};\n private static _grammars: Record<string, { grammarClass: IGrammarBaseConstructor; specKey: string }> = {};\n private static _glyphs: Record<string, IGlyphMeta<any, any>> = {};\n private static _animations: Record<string, TypeAnimation<IGlyphElement> | TypeAnimation<IElement>> = {};\n private static _interactions: Record<string, IInteractionConstructor> = {};\n private static _graphics: Record<string, (attributes: IGraphicAttribute) => IGraphic> = {};\n\n static registerPlotMarks(key: string, mark: IPlotMarkConstructor) {\n Factory._plotMarks[key] = mark;\n }\n\n static createPlotMark(type: string, id?: string): ISemanticMark<any, any> | null {\n if (!Factory._plotMarks[type]) {\n return null;\n }\n const MarkConstructor = Factory._plotMarks[type];\n return new MarkConstructor(id);\n }\n\n static registerMark(key: string, mark: IMarkConstructor) {\n Factory._marks[key] = mark;\n }\n\n static createMark(type: string, view: IView, group?: IGroupMark): IMark | null {\n if (!Factory._marks[type]) {\n return null;\n }\n const MarkConstructor = Factory._marks[type];\n return new MarkConstructor(view, type, group);\n }\n\n static hasMark(type: string) {\n return !!Factory._marks[type];\n }\n\n static registerComponent(key: string, component: IComponentConstructor) {\n Factory._components[key] = component;\n }\n\n static createComponent(componentType: string, view: IView, group?: IGroupMark, mode?: '2d' | '3d') {\n const Ctor = Factory._components[componentType];\n if (!Ctor) {\n return null;\n }\n\n return new Ctor(view, group, mode);\n }\n\n static hasComponent(componentType: string) {\n return !!Factory._components[componentType];\n }\n\n static registerGraphicComponent(key: string, creator: (attrs: any, options?: ComponentOptions) => IGraphic) {\n Factory._graphicComponents[key] = creator;\n }\n\n static createGraphicComponent(componentType: string, attrs: any, options?: ComponentOptions) {\n const compCreator = Factory._graphicComponents[componentType];\n\n if (!compCreator) {\n return null;\n }\n\n return compCreator(attrs, options);\n }\n\n static registerTransform(type: string, transform: Omit<ITransform, 'type'>, isBuiltIn?: boolean) {\n Factory._transforms[type] = Object.assign(transform, { type, isBuiltIn: !!isBuiltIn });\n }\n\n static getTransform(type: string) {\n return Factory._transforms[type];\n }\n\n static unregisterRuntimeTransforms() {\n Object.keys(Factory._transforms).forEach(type => {\n if (Factory._transforms[type] && !Factory._transforms[type].isBuiltIn) {\n Factory._transforms[type] = null;\n }\n });\n }\n\n static registerGrammar(type: string, grammarClass: IGrammarBaseConstructor, specKey?: string) {\n Factory._grammars[type] = {\n grammarClass: grammarClass,\n specKey: specKey ?? type\n };\n }\n\n static createGrammar(type: string, view: IView, grammarType: string) {\n const Ctor = Factory._grammars[type]?.grammarClass;\n\n if (!Ctor) {\n return null;\n }\n\n return new Ctor(view, grammarType);\n }\n\n static getGrammars() {\n return this._grammars;\n }\n\n static registerGlyph = <EncodeValuesType = any, GlyphConfigType = any>(\n glyphType: string,\n marks: { [markName: string]: MarkType },\n encoders?: { [markName: string]: GlyphChannelEncoder<any, EncodeValuesType, GlyphConfigType> },\n defaultEncoder?: GlyphDefaultEncoder,\n progressiveChannels?: string | string[]\n ): IGlyphMeta<EncodeValuesType, GlyphConfigType> => {\n Factory._glyphs[glyphType] = new GlyphMeta<EncodeValuesType, GlyphConfigType>(\n marks,\n encoders,\n defaultEncoder,\n progressiveChannels\n );\n return Factory._glyphs[glyphType];\n };\n\n static getGlyph(glyphType: string): IGlyphMeta {\n return Factory._glyphs[glyphType];\n }\n\n static registerAnimationType = (\n animationType: string,\n animation: TypeAnimation<IGlyphElement> | TypeAnimation<IElement>\n ): void => {\n Factory._animations[animationType] = animation;\n };\n\n static getAnimationType = (animationType: string) => {\n return Factory._animations[animationType];\n };\n\n static registerInteraction = (interactionType: string, interaction: IInteractionConstructor) => {\n Factory._interactions[interactionType] = interaction;\n };\n\n static createInteraction(interactionType: string, view: IView, options?: any) {\n const Ctor = Factory._interactions[interactionType];\n if (!Ctor) {\n return null;\n }\n\n return new Ctor(view, options);\n }\n\n static hasInteraction(interactionType: string) {\n return !!Factory._interactions[interactionType];\n }\n\n static registerGraphic = (graphicType: string, creator: (attributes: IGraphicAttribute) => IGraphic) => {\n Factory._graphics[graphicType] = creator;\n };\n\n static getGraphicType = (graphicType: string) => {\n return Factory._graphics[graphicType];\n };\n\n static createGraphic = (graphicType: string, attributes?: IGraphicAttribute) => {\n const creator = Factory._graphics[graphicType];\n if (!creator) {\n return null;\n }\n return creator(attributes);\n };\n}\n"]}
|
package/es/glyph/boxplot.js
CHANGED
|
@@ -6,8 +6,6 @@ import { registerGlyphGraphic, registerRectGraphic, registerRuleGraphic } from "
|
|
|
6
6
|
|
|
7
7
|
import { isHorizontal } from "@visactor/vgrammar-util";
|
|
8
8
|
|
|
9
|
-
import { registerGlyphMark } from "../view/glyph";
|
|
10
|
-
|
|
11
9
|
const scaleIn = computeCenter => (element, options, animationParameters) => {
|
|
12
10
|
var _a, _b, _c;
|
|
13
11
|
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);
|
|
@@ -247,7 +245,7 @@ export function registerBoxplotGlyph() {
|
|
|
247
245
|
visible: !1
|
|
248
246
|
}
|
|
249
247
|
}))), Factory.registerAnimationType("boxplotScaleIn", boxplotScaleIn), Factory.registerAnimationType("boxplotScaleOut", boxplotScaleOut),
|
|
250
|
-
|
|
248
|
+
registerGlyphGraphic(), registerRectGraphic(), registerRuleGraphic();
|
|
251
249
|
}
|
|
252
250
|
|
|
253
251
|
const computeBarBoxplotCenter = (glyphElement, direction, options) => {
|
|
@@ -413,6 +411,6 @@ export function registerBarBoxplotGlyph() {
|
|
|
413
411
|
visible: !1
|
|
414
412
|
}
|
|
415
413
|
}))), Factory.registerAnimationType("barBoxplotScaleIn", barBoxplotScaleIn), Factory.registerAnimationType("barBoxplotScaleOut", barBoxplotScaleOut),
|
|
416
|
-
|
|
414
|
+
registerGlyphGraphic(), registerRectGraphic(), registerRuleGraphic();
|
|
417
415
|
}
|
|
418
416
|
//# 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';\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"]}
|
|
1
|
+
{"version":3,"sources":["../src/glyph/boxplot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAQjD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACvG,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAMvD,MAAM,OAAO,GAAG,CACd,aAIW,EACmB,EAAE;IAChC,OAAO,CACL,OAAsB,EACtB,OAAsC,EACtC,mBAAyC,EACzC,EAAE;;QACF,MAAM,SAAS,GACb,MAAA,MAAA,OAAO,CAAC,mBAAmB,CAAC,WAAW,EAAE,KAAK,CAAC,mCAAI,MAAA,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,0CAAE,SAAS,mCAAI,UAAU,CAAC;QAC5G,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC1D,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;YAC1B,OAAO,EAAE,CAAC;SACX;QACD,MAAM,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAClD,MAAM,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACtD,MAAM,EAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACpD,MAAM,EAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC5D,MAAM,iBAAiB,GAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAChE,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE;YACtB,iBAAiB,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC;YACpC,iBAAiB,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC;SAChC;QACD,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE;YACtB,iBAAiB,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC;YACpC,iBAAiB,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC;SAChC;QACD,IAAI,aAAa,CAAC,EAAE,CAAC,EAAE;YACrB,iBAAiB,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC;YACnC,iBAAiB,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;SAC9B;QACD,IAAI,aAAa,CAAC,EAAE,CAAC,EAAE;YACrB,iBAAiB,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC;YACnC,iBAAiB,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;SAC9B;QACD,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE;YACzB,iBAAiB,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACvC,iBAAiB,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC;SACtC;QACD,OAAO,iBAAiB,CAAC;IAC3B,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CACf,aAIW,EACmB,EAAE;IAChC,OAAO,CACL,OAAsB,EACtB,OAAsC,EACtC,mBAAyC,EACzC,EAAE;;QACF,MAAM,SAAS,GACb,MAAA,MAAA,OAAO,CAAC,mBAAmB,CAAC,WAAW,EAAE,KAAK,CAAC,mCAAI,MAAA,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,0CAAE,SAAS,mCAAI,UAAU,CAAC;QAC5G,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC1D,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;YAC1B,OAAO,EAAE,CAAC;SACX;QACD,MAAM,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACjD,MAAM,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACrD,MAAM,GAAG,GAAG,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACrD,MAAM,EAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,MAAM,EAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC3D,MAAM,iBAAiB,GAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAChE,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE;YACtB,iBAAiB,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC;YAClC,iBAAiB,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;SAClC;QACD,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE;YACtB,iBAAiB,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC;YAClC,iBAAiB,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;SAClC;QACD,IAAI,aAAa,CAAC,EAAE,CAAC,EAAE;YACrB,iBAAiB,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC;YACjC,iBAAiB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;SAChC;QACD,IAAI,aAAa,CAAC,EAAE,CAAC,EAAE;YACrB,iBAAiB,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC;YACjC,iBAAiB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;SAChC;QACD,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE;YACzB,iBAAiB,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC;YACrC,iBAAiB,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;SACxC;QACD,OAAO,iBAAiB,CAAC;IAC3B,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAC3B,YAA2B,EAC3B,SAAoC,EACpC,OAAsC,EACtC,EAAE;;IACF,IAAI,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QAC5C,OAAO,OAAO,CAAC,MAAM,CAAC;KACvB;IACD,IAAI,MAAc,CAAC;IACnB,IAAI,GAAW,CAAC;IAChB,IAAI,GAAW,CAAC;IAChB,IAAI,EAAU,CAAC;IACf,IAAI,EAAU,CAAC;IACf,IAAI,YAAY,CAAC,SAAS,CAAC,EAAE;QAC3B,MAAM,GAAG,MAAA,MAAA,YAAY,CAAC,mBAAmB,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,0CAAG,CAAC,CAAC,0CAAE,CAAC,CAAC;QAC7E,GAAG,GAAG,MAAA,MAAA,YAAY,CAAC,mBAAmB,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,0CAAG,CAAC,CAAC,0CAAE,CAAC,CAAC;QACvE,GAAG,GAAG,MAAA,MAAA,YAAY,CAAC,mBAAmB,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,0CAAG,CAAC,CAAC,0CAAE,CAAC,CAAC;QAEvE,MAAM,QAAQ,GAAG,YAAY,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACzE,MAAM,IAAI,GAAG,YAAY,CAAC,mBAAmB,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACjE,EAAE,GAAG,IAAI,CAAC;QACV,EAAE,GAAG,IAAI,GAAG,QAAQ,CAAC;KACtB;SAAM;QACL,MAAM,GAAG,MAAA,MAAA,YAAY,CAAC,mBAAmB,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,0CAAG,CAAC,CAAC,0CAAE,CAAC,CAAC;QAC7E,GAAG,GAAG,MAAA,MAAA,YAAY,CAAC,mBAAmB,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,0CAAG,CAAC,CAAC,0CAAE,CAAC,CAAC;QACvE,GAAG,GAAG,MAAA,MAAA,YAAY,CAAC,mBAAmB,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,0CAAG,CAAC,CAAC,0CAAE,CAAC,CAAC;QAEvE,MAAM,SAAS,GAAG,YAAY,CAAC,mBAAmB,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC3E,MAAM,IAAI,GAAG,YAAY,CAAC,mBAAmB,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACjE,EAAE,GAAG,IAAI,CAAC;QACV,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC;KACvB;IAED,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE;QACzB,OAAO,MAAM,CAAC;KACf;IACD,IAAI,aAAa,CAAC,EAAE,CAAC,IAAI,aAAa,CAAC,EAAE,CAAC,EAAE;QAC1C,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;KACtB;IACD,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE;QAC5C,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;KACxB;IACD,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE;QACtB,OAAO,GAAG,CAAC;KACZ;IACD,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE;QACtB,OAAO,GAAG,CAAC;KACZ;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,YAAiB,EAAE,KAAU,EAAE,OAAsB,EAAE,MAAW,EAAE,EAAE;;IAC/F,MAAM,UAAU,GAAG;QACjB,KAAK,EAAE,EAAE;QACT,GAAG,EAAE,EAAE;QACP,GAAG,EAAE,EAAE;QACP,GAAG,EAAE,EAAE;QACP,MAAM,EAAE,EAAE;KACX,CAAC;IAEF,MAAM,CAAC,GAAG,MAAA,YAAY,CAAC,CAAC,mCAAI,OAAO,CAAC,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACpE,MAAM,CAAC,GAAG,MAAA,YAAY,CAAC,CAAC,mCAAI,OAAO,CAAC,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACpE,MAAM,KAAK,GAAG,MAAA,YAAY,CAAC,KAAK,mCAAI,OAAO,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAChF,MAAM,MAAM,GAAG,MAAA,YAAY,CAAC,MAAM,mCAAI,OAAO,CAAC,mBAAmB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACnF,MAAM,QAAQ,GAAG,MAAA,YAAY,CAAC,QAAQ,mCAAI,OAAO,CAAC,mBAAmB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACzF,MAAM,SAAS,GAAG,MAAA,YAAY,CAAC,SAAS,mCAAI,OAAO,CAAC,mBAAmB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC5F,MAAM,SAAS,GAAG,MAAA,YAAY,CAAC,SAAS,mCAAI,OAAO,CAAC,mBAAmB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC5F,MAAM,UAAU,GAAG,MAAA,YAAY,CAAC,UAAU,mCAAI,OAAO,CAAC,mBAAmB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAE/F,IAAI,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;QAC5C,IAAI,aAAa,CAAC,SAAS,CAAC,EAAE;YAC5B,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/E,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC,CAAC;SACnF;aAAM;YAEL,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC;YACzE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC;SAC7E;QACD,IAAI,aAAa,CAAC,UAAU,CAAC,EAAE;YAC7B,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC;YACjF,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC;SAClF;aAAM;YACL,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC;YACzE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC;SAC1E;KACF;SAAM;QACL,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE;YAC3B,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,QAAQ,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC;YAC7E,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,QAAQ,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC;SACjF;aAAM;YACL,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;YACvE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;SAC3E;QACD,IAAI,aAAa,CAAC,SAAS,CAAC,EAAE;YAC5B,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/E,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC,CAAC;SAChF;aAAM;YACL,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;YACvE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;SACxE;KACF;IACD,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAC5D,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAC,oBAAoB,CAAC,CAAC;AAE9D,MAAM,UAAU,oBAAoB;IAClC,OAAO,CAAC,aAAa,CAAgE,SAAS,EAAE;QAC9F,KAAK,EAAE,MAAM;QACb,GAAG,EAAE,MAAM;QACX,GAAG,EAAE,MAAM;QACX,GAAG,EAAE,MAAM;QACX,MAAM,EAAE,MAAM;KACf,CAAC;SACC,2BAA2B,CAAC;QAC3B,GAAG;QACH,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,KAAK;QACL,KAAK;QACL,QAAQ;QACR,OAAO;QACP,OAAO;QACP,QAAQ;QACR,UAAU;QACV,WAAW;QACX,WAAW;QACX,YAAY;KACb,CAAC;SACD,uBAAuB,CAAC,iBAAiB,CAAC;SAC1C,sBAAsB,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1F,IAAI,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;YAC5C,OAAO,IAAI,CAAC;SACb;QACD,OAAO;YACL,KAAK,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE;SAC3C,CAAC;IACJ,CAAC,CAAC;SACD,sBAAsB,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1F,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;YAC9C,OAAO,IAAI,CAAC;SACb;QACD,OAAO;YACL,KAAK,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE;SAC3C,CAAC;IACJ,CAAC,CAAC;SACD,sBAAsB,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3F,OAAO,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC;IAC9G,CAAC,CAAC;SACD,sBAAsB,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3F,OAAO,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,CAAC;IAChH,CAAC,CAAC;SACD,sBAAsB,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;QAC5F,OAAO,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC;YAC7C,CAAC,CAAC;gBACE,KAAK,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE;gBACzB,GAAG,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE;aACxD;YACH,CAAC,CAAC;gBACE,KAAK,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE;gBACzB,GAAG,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE;aACxD,CAAC;IACR,CAAC,CAAC;SACD,sBAAsB,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;QAC5F,OAAO,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC;YAC7C,CAAC,CAAC;gBACE,KAAK,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE;gBAC1B,GAAG,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE;aACxD;YACH,CAAC,CAAC;gBACE,KAAK,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE;gBAC1B,GAAG,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE;aACxD,CAAC;IACR,CAAC,CAAC;SACD,sBAAsB,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;QAC/F,OAAO,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC;YAC7C,CAAC,CAAC;gBACE,MAAM,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE;aAC3D;YACH,CAAC,CAAC;gBACE,MAAM,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE;aAC3D,CAAC;IACR,CAAC,CAAC;SACD,sBAAsB,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;;QAC9F,MAAM,aAAa,GACjB,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC;YACtC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;YAC7D,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,MAAA,YAAY,CAAC,MAAM,mCAAI,aAAa,CAAC;QACpD,OAAO;YACL,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE;YACrC,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE;YACnC,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE;YACnC,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE;YACnC,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE;SACvC,CAAC;IACJ,CAAC,CAAC;SACD,sBAAsB,CAAC,GAAG,EAAE;QAC3B,OAAO;YACL,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;YACvB,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;YACvB,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;SAC3B,CAAC;IACJ,CAAC,CAAC,CAAC;IAEL,OAAO,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;IAChE,OAAO,CAAC,qBAAqB,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;IAClE,oBAAoB,EAAE,CAAC;IACvB,mBAAmB,EAAE,CAAC;IACtB,mBAAmB,EAAE,CAAC;AACxB,CAAC;AAED,MAAM,uBAAuB,GAAG,CAC9B,YAA2B,EAC3B,SAAoC,EACpC,OAAsC,EACtC,EAAE;;IACF,IAAI,aAAa,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAC,EAAE;QAClC,OAAO,OAAO,CAAC,MAAM,CAAC;KACvB;IACD,IAAI,MAAc,CAAC;IACnB,IAAI,GAAW,CAAC;IAChB,IAAI,GAAW,CAAC;IAChB,IAAI,EAAU,CAAC;IACf,IAAI,EAAU,CAAC;IACf,IAAI,YAAY,CAAC,SAAS,CAAC,EAAE;QAC3B,MAAM,GAAG,MAAA,MAAA,YAAY,CAAC,mBAAmB,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,0CAAG,CAAC,CAAC,0CAAE,CAAC,CAAC;QAE7E,MAAM,cAAc,GAAG,YAAY,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;QACrF,MAAM,aAAa,GAAG,YAAY,CAAC,mBAAmB,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;QAChF,GAAG,GAAG,aAAa,CAAC;QACpB,GAAG,GAAG,aAAa,GAAG,cAAc,CAAC;QAErC,MAAM,YAAY,GAAG,YAAY,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QACjF,MAAM,QAAQ,GAAG,YAAY,CAAC,mBAAmB,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QACzE,EAAE,GAAG,QAAQ,CAAC;QACd,EAAE,GAAG,QAAQ,GAAG,YAAY,CAAC;KAC9B;SAAM;QACL,MAAM,GAAG,MAAA,MAAA,YAAY,CAAC,mBAAmB,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,0CAAG,CAAC,CAAC,0CAAE,CAAC,CAAC;QAE7E,MAAM,eAAe,GAAG,YAAY,CAAC,mBAAmB,CAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;QACvF,MAAM,aAAa,GAAG,YAAY,CAAC,mBAAmB,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;QAChF,GAAG,GAAG,aAAa,CAAC;QACpB,GAAG,GAAG,aAAa,GAAG,eAAe,CAAC;QAEtC,MAAM,aAAa,GAAG,YAAY,CAAC,mBAAmB,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QACnF,MAAM,QAAQ,GAAG,YAAY,CAAC,mBAAmB,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QACzE,EAAE,GAAG,QAAQ,CAAC;QACd,EAAE,GAAG,QAAQ,GAAG,aAAa,CAAC;KAC/B;IAED,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE;QACzB,OAAO,MAAM,CAAC;KACf;IACD,IAAI,aAAa,CAAC,EAAE,CAAC,IAAI,aAAa,CAAC,EAAE,CAAC,EAAE;QAC1C,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;KACtB;IACD,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE;QAC5C,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;KACxB;IACD,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE;QACtB,OAAO,GAAG,CAAC;KACZ;IACD,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE;QACtB,OAAO,GAAG,CAAC;KACZ;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,YAAiB,EAAE,KAAU,EAAE,OAAsB,EAAE,MAAW,EAAE,EAAE;;IAClG,MAAM,UAAU,GAAG;QACjB,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,EAAE;QACX,MAAM,EAAE,EAAE;KACX,CAAC;IAEF,MAAM,CAAC,GAAG,MAAA,YAAY,CAAC,CAAC,mCAAI,OAAO,CAAC,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACpE,MAAM,CAAC,GAAG,MAAA,YAAY,CAAC,CAAC,mCAAI,OAAO,CAAC,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACpE,MAAM,KAAK,GAAG,MAAA,YAAY,CAAC,KAAK,mCAAI,OAAO,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAChF,MAAM,WAAW,GAAG,MAAA,YAAY,CAAC,WAAW,mCAAI,OAAO,CAAC,mBAAmB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAClG,MAAM,SAAS,GAAG,MAAA,YAAY,CAAC,SAAS,mCAAI,OAAO,CAAC,mBAAmB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC5F,MAAM,MAAM,GAAG,MAAA,YAAY,CAAC,MAAM,mCAAI,OAAO,CAAC,mBAAmB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACnF,MAAM,YAAY,GAAG,MAAA,YAAY,CAAC,YAAY,mCAAI,OAAO,CAAC,mBAAmB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrG,MAAM,UAAU,GAAG,MAAA,YAAY,CAAC,UAAU,mCAAI,OAAO,CAAC,mBAAmB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAE/F,IAAI,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;QAC5C,IAAI,aAAa,CAAC,YAAY,CAAC,EAAE;YAC/B,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,YAAY,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,YAAY,GAAG,CAAC,EAAE,CAAC,CAAC;SAC5F;aAAM;YACL,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC;SAChF;QACD,IAAI,aAAa,CAAC,UAAU,CAAC,EAAE;YAC7B,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC;YACrF,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC;SACrF;aAAM;YAEL,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC;YAC7E,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC;SAC7E;KACF;SAAM;QACL,IAAI,aAAa,CAAC,WAAW,CAAC,EAAE;YAC9B,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,WAAW,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,WAAW,GAAG,CAAC,EAAE,CAAC,CAAC;SAC1F;aAAM;YACL,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;SAC9E;QACD,IAAI,aAAa,CAAC,SAAS,CAAC,EAAE;YAC5B,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC,CAAC;YACnF,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC,CAAC;SACnF;aAAM;YAEL,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;YAC3E,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;SAC3E;KACF;IACD,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;AAClE,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,uBAAuB,CAAC,CAAC;AAEpE,MAAM,UAAU,uBAAuB;IACrC,OAAO,CAAC,aAAa,CAAmE,YAAY,EAAE;QACpG,SAAS,EAAE,MAAM;QACjB,OAAO,EAAE,MAAM;QACf,MAAM,EAAE,MAAM;KACf,CAAC;SACC,2BAA2B,CAAC;QAC3B,GAAG;QACH,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,KAAK;QACL,KAAK;QACL,QAAQ;QACR,OAAO;QACP,OAAO;QACP,QAAQ;QACR,aAAa;QACb,WAAW;QACX,cAAc;QACd,YAAY;KACb,CAAC;SACD,uBAAuB,CAAC,oBAAoB,CAAC;SAC7C,sBAAsB,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3F,OAAO,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC;YAC7C,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE;YACjC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC;IACtC,CAAC,CAAC;SACD,sBAAsB,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3F,OAAO,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC;YAC7C,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE;YAClC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,CAAC;IACvC,CAAC,CAAC;SACD,sBAAsB,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;QAC5F,OAAO,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC;YAC7C,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE;YACnC,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC;IACxC,CAAC,CAAC;SACD,sBAAsB,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;QAC5F,OAAO,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC;YAC7C,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE;YACpC,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,CAAC;IACzC,CAAC,CAAC;SACD,sBAAsB,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;QAC/F,OAAO,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC;YAC7C,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;YAChE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;IACrE,CAAC,CAAC;SACD,sBAAsB,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;;QAC9F,MAAM,MAAM,GAAG,MAAA,YAAY,CAAC,MAAM,mCAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAClG,OAAO;YACL,SAAS,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE;YACzC,OAAO,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE;YACvC,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE;SACvC,CAAC;IACJ,CAAC,CAAC;SACD,sBAAsB,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;QAClG,OAAO;YACL,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE;YAC3B,OAAO,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE;SAC1B,CAAC;IACJ,CAAC,CAAC;SACD,sBAAsB,CAAC,mBAAmB,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1G,OAAO;YACL,SAAS,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE;SACxC,CAAC;IACJ,CAAC,CAAC;SACD,sBAAsB,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;QAC/F,OAAO;YACL,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;YAC5B,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;SAC3B,CAAC;IACJ,CAAC,CAAC;SACD,sBAAsB,CAAC,GAAG,EAAE;QAC3B,OAAO;YACL,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE;YAC3B,OAAO,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE;YACzB,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;SAC3B,CAAC;IACJ,CAAC,CAAC,CAAC;IAEL,OAAO,CAAC,qBAAqB,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;IACtE,OAAO,CAAC,qBAAqB,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,CAAC;IACxE,oBAAoB,EAAE,CAAC;IACvB,mBAAmB,EAAE,CAAC;IACtB,mBAAmB,EAAE,CAAC;AACxB,CAAC","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"]}
|
package/es/glyph/link-path.js
CHANGED
|
@@ -4,8 +4,6 @@ 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
|
-
|
|
9
7
|
export const getHorizontalPath = (options, ratio) => {
|
|
10
8
|
var _a;
|
|
11
9
|
const curvature = null !== (_a = options.curvature) && void 0 !== _a ? _a : .5, thickness = "number" == typeof ratio ? options.thickness * ratio : options.thickness;
|
|
@@ -131,6 +129,6 @@ export const registerLinkPathGlyph = () => {
|
|
|
131
129
|
zIndex: 1
|
|
132
130
|
}
|
|
133
131
|
}))), Factory.registerAnimationType("linkPathGrowIn", linkPathGrowIn), Factory.registerAnimationType("linkPathGrowOut", linkPathGrowOut),
|
|
134
|
-
Factory.registerAnimationType("linkPathUpdate", linkPathUpdate),
|
|
135
|
-
|
|
132
|
+
Factory.registerAnimationType("linkPathUpdate", linkPathUpdate), registerGlyphGraphic(),
|
|
133
|
+
registerPathGraphic();
|
|
136
134
|
};
|
|
@@ -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';\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"]}
|
|
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"]}
|
package/es/glyph/ripple.js
CHANGED
|
@@ -2,8 +2,6 @@ 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
|
-
|
|
7
5
|
export const registerRippleGlyph = () => {
|
|
8
6
|
Factory.registerGlyph("ripplePoint", {
|
|
9
7
|
symbol: "symbol",
|
|
@@ -37,6 +35,6 @@ export const registerRippleGlyph = () => {
|
|
|
37
35
|
ripple2: {
|
|
38
36
|
fillOpacity: .25
|
|
39
37
|
}
|
|
40
|
-
}))),
|
|
38
|
+
}))), registerGlyphGraphic(), registerSymbolGraphic();
|
|
41
39
|
};
|
|
42
40
|
//# 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;AAEpF,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,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';\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 registerGlyphGraphic();\n registerSymbolGraphic();\n};\n"]}
|
package/es/glyph/tree-path.js
CHANGED
|
@@ -4,8 +4,6 @@ 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
|
-
|
|
9
7
|
export const getHorizontalPath = options => {
|
|
10
8
|
var _a, _b;
|
|
11
9
|
const curvature = null !== (_a = options.curvature) && void 0 !== _a ? _a : .5;
|
|
@@ -145,7 +143,7 @@ export const registerTreePathGlyph = () => {
|
|
|
145
143
|
zIndex: 2
|
|
146
144
|
}
|
|
147
145
|
}))), Factory.registerAnimationType("treePathGrowIn", treePathGrowIn), Factory.registerAnimationType("treePathGrowOut", treePathGrowOut),
|
|
148
|
-
Factory.registerAnimationType("treePathUpdate", treePathUpdate),
|
|
149
|
-
|
|
146
|
+
Factory.registerAnimationType("treePathUpdate", treePathUpdate), registerGlyphGraphic(),
|
|
147
|
+
registerPathGraphic();
|
|
150
148
|
};
|
|
151
149
|
//# sourceMappingURL=tree-path.js.map
|